ポク太郎です。
繰り返し処理を行う場合、ログファイルを残したい場合がよくあります。どのOSでもファイル名に重複があってはいけないので、その瞬間の時刻をファイル名として使ったり。
またデータを記録していくプログラムでは識別のためにタイムスタンプが便利。
以下の関数を使うとタイムスタンプが得られ、簡単にファイル名を生成することができます。
現在のタイムスタンプを文字列で返す関数
FUNCTION t_stamp(mode)
GETTIME()
date=G_TIME_YY4+G_TIME_MM2+G_TIME_DD2
time=G_TIME_HH2+G_TIME_NN2+G_TIME_SS2
SELECT mode
CASE 0
RESULT=date
CASE 1
RESULT=time
CASE 2
RESULT=date+"_"+time
DEFAULT
RESULT="ポクエラー(time_stamp関数):定義されていないmodeが指定されました。"
SELEND
FEND
1,15行目 | 1 15 |
FUNCTION t_stamp(mode) FEND |
t_stamp(mode)関数宣言 2016年5月4日20時36分44秒に呼び出された場合、 mode=0: 日付”20160504″を返す mode=1: 時刻”203644″を返す mode=2: 日付+時刻”20160504_203644″を返す mode=other: エラーを返す |
||
2行目 | 2 | GETTIME() |
GETTIME() UWSC標準関数。正式には、 戻値=GETTIME([±n日, 基準日]) この関数を呼び出すと、以下の特殊変数に値が入る。 G_TIME_YY …年、G_TIME_MM …月、 G_TIME_DD …日、G_TIME_HH …時、 G_TIME_NN …分、G_TIME_SS …秒、 G_TIME_ZZ …ミリ秒、 G_TIME_WW …曜日(0:日、~、6:土)、 G_TIME_YY2 …年をxxの文字型、 G_TIME_MM2 …月をxxの文字型、 G_TIME_DD2 …日をxxの文字型、 G_TIME_HH2 …時をxxの文字型、 G_TIME_NN2 …分をxxの文字型、 G_TIME_SS2 …秒をxxの文字型、 G_TIME_ZZ2 …ミリ秒をxxxの文字型、 G_TIME_YY4 …年(西暦)をxxxxの文字型 |
||
3,4行目 | 3 4 |
date=G_TIME_YY4+G_TIME_MM2+G_TIME_DD2 time=G_TIME_HH2+G_TIME_NN2+G_TIME_SS2 |
変数dateに、現在の 年(4桁)+月(2桁)+日(2桁) を代入。 変数timeに、現在の 時(2桁)+分(2桁)+秒(2桁) を代入。 |
||
5,14行目 | 5 14 |
SELECT mode SELEND |
モードによる分岐命令。 | ||
6,7行目 | 6 7 |
CASE 0 RESULT=date |
mode=0を指定された場合 戻り値として、変数dateを返す。 |
||
8,9行目 | 8 9 |
CASE 1 RESULT=time |
mode=1を指定された場合 戻り値として、変数timeを返す。 |
||
10,11行目 | 10 11 |
CASE 2 RESULT=date+“_“+time |
mode=2を指定された場合 戻り値として、変数dateと変数timeを“_”(アンダーバー)でつなげたものを返す。 |
||
12,13行目 | 12 13 |
DEFAULT RESULT=“ポクエラー(time_stamp関数):定義されていないmodeが指定されました。“ |
mode=それ以外を指定された場合 戻り値としてエラーを返す。 |
呼び出し側は、
//2017年2月20日の18時15分22秒に呼び出した場合、 R=t_stamp(0)//Rには"20170220"が代入される。 R=t_stamp(1)//Rには"181522"が代入される。 R=t_stamp(2)//Rには"20170220_181522"が代入される。 R=t_stamp(3)//Rにはエラーメッセージが代入される
文字列タイムスタンプ関数の動作確認
動作確認プログラムがこちら。
FOR i=0 TO 3
PRINT i+" "+t_stamp(i)
NEXT
1,3行目 | 1 3 |
FOR i=0 TO 3 NEXT |
変数iを0~3までループ。 | ||
2行目 | 2 | PRINT i+“ “+t_stamp(i) |
変数iをt_stamp()関数の引数として渡し、変数iと関数の戻り値を並べて表示する。 |
確認結果は、
//結果(2017年5月26日23時17分50秒に実行) 0 20170526 1 231750 2 20170526_231750 3 ポクエラー(time_stamp関数):定義されていないmodeが指定されました。
文字列操作あれこれMID、LEFT、RIGHT、LEN | 文字列中に指定ワードあるなし判定関数 | 現在のタイムスタンプ文字列を返す関数 | カンマ等で区切られたフィールドデータを扱う関数 |
本記事の内容は以下でした。
○日付時刻を文字列で返す関数
○日付時刻を文字列で返す関数
戻値(str)=t_stamp(mode)
コメント