UWSC - ログ出力 (logger) 関数を定義

ときどき、自宅で UWSC を使うのだけれど、たまに使いまわしたい関数があるので備忘的に記録。

 次の関数は、print 文で出力するもの。

function logger(String)

// ログ出力

GETTIME()
    date = "" + G_TIME_YY4 + "/" + G_TIME_MM2 + "/" + G_TIME_DD2
    time = "" + G_TIME_HH2 + ":" + G_TIME_NN2 + ":" + G_TIME_SS2
    Print date + " " + time + " " + String
    Result = 0
fend

使い方は、こんな感じ

    logger ("ログ出力したい文字列")

> 自分への課題
・秒の単位は、1桁~2桁で揃わないので、あとで桁あわせをする処理を追加しておく。
→ 変数名を G_TIME_SS から G_TIME_SS2 に変更するだけで良かった。
・print 文で出力したものは、一度停止したあと、また起動したときに消えてしまうのでログファイルに追加するように処理を変更する。

今回は時間がないなかったので、これで。

追記。
実際にファイルへ追記しているタイプの logger を作成。
出力パスは、dim で定義してもダメみたい。
Const で定義してから function を使うか、logger 関数内部で定義するかしないと、出力されなかった。

Const sLogDir = "c:"
Const sLogFile = "uwsc.log"
Const sLogPath = sLogDir + "\" + sLogFile

logger ("サンプル")

function logger(String) 
	// 実行時刻の取得
	GETTIME()
	date = "" + G_TIME_YY4 + "/" + G_TIME_MM2 + "/" + G_TIME_DD2
	time = "" + G_TIME_HH2 + ":" + G_TIME_NN2 + ":" + G_TIME_SS2

	// ファイルを開く
	fid = FOPEN(sLogPath, F_READ or F_WRITE)

	// ログ出力実行
	FPUT (fid, date + " " + time + " " + String)

	// ファイルを閉じる
	FCLOSE(fid)

	Result = 0

fend

注意点としては、ディレクトリが存在しないとエラーで終わるよっていうこと。ディレクトリの有無を確認するエラー処理を入れると汎用性が増す気はする。
個人が使うスクリプトが、そんな前提情報を満たさない*1とかありえない気もするのでエラー処理はいれていない。

*1:必要なディレクトリなら、実行前に自分で作っておくよね?