時間を計算するテラタームマクロを作成しました。
HH:MM:SS形式で表される時間の足し算と引き算を行います。
gettimeマクロを用いることでn時間経過したら終了するマクロなどに役立つかと思います。
自分のマクロファイルの最下にコピペしてご使用ください。
end ;■□■□■□ TIME CALCULATOR ■□■□■□ ;[HH:MM:SS]形式文字列の計算を行うサブブロセス ;直接マクロにコピーして使用する ;計算対象の使用変数に格納してcall命令で呼出す ;★サブルーチン名 ; ○24時間計算 結果:0:00:00~23:59:59 ; ・TIME_CALC_24H_ADD :24時間 足し真 (TIME_CALC_A + TIME_CALC_B) ; ・TINE_CALC_24H_SUB :24時間 引き算 (TIME_CALC_A - TIME_CALC_B) ; 〇時間計算 結果はhour部分のみ整数値 ; ・TIME_CALC_ADD : 足し真 (TIME_CALC_A + TIME_CALC_B) ; ・TINE_CALC_SUB : 引き算 (TIME_CALC_A - TIME_CALC_B) ;★使用変数 ; ・(文字列型) TIME_CALC_A : 第一引数([HH:MM:SS]形式) ; ・(文字列型) TIME_CALC_B : 第二引数([HH:MM:SS]形式) ;★演算結果 ; ・(文字列型) TIME_CALC_RESULT : 計算結果([HH:MM:SS]形式) ; ・(整数型) TIME_CALC_R_INT_DD : 計算結果:日 (引き算の場合)結果が負になった場合に1を格納する。 ; ・(整数型) TIME_CALC_R_INT_HH : 計算結果:時間 ; ・(整数型) TIME_CALC_R_INT_MM : 計算結果:分 ; ・(整数型) TIME_CALC_R_INT_SS : 計算結果:秒 :TIME_CALC_24H_ADD call TIME_CALC_SYSTEM_VAR_BACKUP strsplit TIME_CALC_A ':' 3 str2int TIME_CALC_A_INT_HH groupmatchstr1 str2int TIME_CALC_A_INT_MM groupmatchstr2 str2int TIME_CALC_A_INT_SS groupmatchstr3 strsplit TIME_CALC_B ':' 3 str2int TIME_CALC_B_INT_HH groupmatchstr1 str2int TIME_CALC_B_INT_MM groupmatchstr2 str2int TIME_CALC_B_INT_SS groupmatchstr3 TIME_CALC_R_INT_SS = TIME_CALC_A_INT_SS + TIME_CALC_B_INT_SS TIME_CALC_R_INT_MM = TIME_CALC_A_INT_MM + TIME_CALC_B_INT_MM TIME_CALC_R_INT_HH = TIME_CALC_A_INT_HH + TIME_CALC_B_INT_HH if TIME_CALC_R_INT_SS >= 60 then TIME_CALC_R_INT_SS = TIME_CALC_R_INT_SS - 60 TIME_CALC_R_INT_MM = TIME_CALC_R_INT_MM + 1 endif if TIME_CALC_R_INT_MM >= 60 then TIME_CALC_R_INT_MM = TIME_CALC_R_INT_MM - 60 TIME_CALC_R_INT_HH = TIME_CALC_R_INT_HH + 1 endif sprintf2 groupmatchstr1 '%d' TIME_CALC_R_INT_HH sprintf2 groupmatchstr2 '%02d' TIME_CALC_R_INT_MM sprintf2 groupmatchstr3 '%02d' TIME_CALC_R_INT_SS strjoin TIME_CALC_RESULT ':' 3 call TIME_CALC_SYSTEM_VAR_RECALL return :TIME_CALC_24H_SUB call TIME_CALC_SYSTEM_VAR_BACKUP TIME_CALC_R_INT_DD = 0 strsplit TIME_CALC_A ':' 3 str2int TIME_CALC_A_INT_HH groupmatchstr1 str2int TIME_CALC_A_INT_MM groupmatchstr2 str2int TIME_CALC_A_INT_SS groupmatchstr3 strsplit TIME_CALC_B ':' 3 str2int TIME_CALC_B_INT_HH groupmatchstr1 str2int TIME_CALC_B_INT_MM groupmatchstr2 str2int TIME_CALC_B_INT_SS groupmatchstr3 TIME_CALC_R_INT_SS = TIME_CALC_A_INT_SS - TIME_CALC_B_INT_SS TIME_CALC_R_INT_MM = TIME_CALC_A_INT_MM - TIME_CALC_B_INT_MM TIME_CALC_R_INT_HH = TIME_CALC_A_INT_HH - TIME_CALC_B_INT_HH if TIME_CALC_R_INT_SS < 0 then TIME_CALC_R_INT_SS = TIME_CALC_R_INT_SS + 60 TIME_CALC_R_INT_MM = TIME_CALC_R_INT_MM - 1 endif if TIME_CALC_R_INT_MM < 0 then TIME_CALC_R_INT_MM = TIME_CALC_R_INT_MM + 60 TIME_CALC_R_INT_HH = TIME_CALC_R_INT_HH - 1 endif if TIME_CALC_R_INT_HH < 0 then TIME_CALC_R_LINT_HH = TIME_CALC_R_INT_HH + 24 TIME_CALC_R_INT_DD = 1 endif sprintf2 groupmatchstr1 '%d' TIME_CALC_R_INT_HH sprintf2 groupmatchstr2 '%02d' TIME_CALC_R_INT_MM sprintf2 groupmatchstr3 '%02d' TIME_CALC_R_INT_SS strjoin TIME_CALC_RESULT ':' 3 call TIME_CALC_SYSTEM_VAR_RECALL return :TIME_CALC_SYSTEM_VAR_BACKUP result_b = result groupmatchstr1_b = groupmatchstr1 groupmatchstr2_b = groupmatchstr2 groupmatchstr3_b = groupmatchstr3 groupmatchstr4_b = groupmatchstr4 groupmatchstr5_b = groupmatchstr5 groupmatchstr6_b = groupmatchstr6 groupmatchstr7_b = groupmatchstr7 groupmatchstr8_b = groupmatchstr8 groupmatchstr9_b = groupmatchstr9 return :TIME_CALC_SYSTEM_VAR_RECALL result = result_b groupmatchstr1 = groupmatchstr1_b groupmatchstr2 = groupmatchstr2_b groupmatchstr3 = groupmatchstr3_b groupmatchstr4 = groupmatchstr4_b groupmatchstr5 = groupmatchstr5_b groupmatchstr6 = groupmatchstr6_b groupmatchstr7 = groupmatchstr7_b groupmatchstr8 = groupmatchstr8_b groupmatchstr9 = groupmatchstr9_b return
使用方法はコメントアウトの通り、
指定変数「TIME_CALC_A」と「TIME_CALC_B」に時間を格納して
足し算は「TIME_CALC_24H_ADD」、引き算は「TIME_CALC_24H_ADD 」を呼び出します
そうすると
「TIME_CALC_RESULT」「TIME_CALC_R_INT_DD」「TIME_CALC_R_INT_HH」「 TIME_CALC_R_INT_MM」「TIME_CALC_R_INT_SS」という変数に結果がそれぞれ格納されます。
例 12:30と現在時刻を足した時間を表示し、更に12:30からの経過時間を表示する。
gettime TIME_CALC_A TIME_CALC_B = '12:30:00' call TIME_CALC_24H_ADD sprintf 'add result = %s' TIME_CALC_RESULT messagebox TIME_CALC_RESULT 'ADD' call TIME_CALC_24H_SUB sprintf 'sub result = %s' TIME_CALC_RESULT messagebox TIME_CALC_RESULT 'SUB' ;この下にTIME CALCULATORマクロをコピペ
誰かのお役に立てますと幸いです。
コメント