アニメ『サムライフラメンコ』(2013)
何これ、面白い。ヒーローに憧れる青年が夜な夜な変な恰好で不良市民に注意するも返り討ちに遭います。変な恰好のヒーローの名前は、サムライフラメンコ。偽サムライフラメンコも出てきたりして、やたら面白いです。エンディング曲は、戸松遥、M・A・O、山崎エリイが歌う「デートTIME」です。
そろそろBASICも思い出してきたので、いろいろ作れそうな気もしますが、もう少しだけ一つずつ勉強していきます。
今回はBASICの時間計算です。 DATEとTIMEを使ってみましょう。
takk@deb9:~/tmp$ cat date.bas | nl -ba -i10 -v10
10 '$lang: "qb"
20
30 print date$
40 print time$
takk@deb9:~/tmp$
実行結果はこうです。
takk@deb9:~/tmp$ ./date 09-05-2017 23:15:39 takk@deb9:~/tmp$
時分秒を個別で取得したい場合は、TIMEで返る文字列の一部をMID$を使って抽出します。
takk@deb9:~/tmp$ cat time.bas | nl -ba -i10 -v10
10 '$lang: "qb"
20
30 time_str$ = time$
40
50 print time_str$
60
70 hour$ = mid$(time_str$,1,2)
80 min$ = mid$(time_str$,4,2)
90 sec$ = mid$(time_str$,7,2)
100
110 print hour$
120 print min$
130 print sec$
140
takk@deb9:~/tmp$
実行結果です。
takk@deb9:~/tmp$ ./time 23:32:39 23 32 39 takk@deb9:~/tmp$
ただこれでは文字列を取得してるだけですので計算ができません。
文字列を数字にするには、VAL()を使います。数字を文字列に戻すには、STR$()を使います。
takk@deb9:~/tmp$ cat val.bas | nl -ba -i10 -v10
10 '$lang: "qb"
20
30 sec$ = mid$(time$,7,2)
40
50 print sec$
60
70 sec_val = val(sec$)
80
90 sec_val = sec_val + 100
100
110 sec$ = str$(sec_val)
120
130 print sec$
実行結果です。
takk@deb9:~/tmp$ fbc val.bas takk@deb9:~/tmp$ ./val 29 129 takk@deb9:~/tmp$
29に100が加算されて129が表示されました。
129の前にスペースがありますが、負の数の時、-が入ります。
takk@deb9:~/tmp$ cat minus.bas | nl -ba -i10 -v10
10 '$lang: "qb"
20
30 print str$(-200)
40 print str$(200)
takk@deb9:~/tmp$ fbc minus.bas
takk@deb9:~/tmp$ ./minus
-200
200
takk@deb9:~/tmp$
では、時間を数値に直して、計算してみます。
こんなプログラムになりました。
takk@deb9:~/tmp$ cat time-calc.bas | nl -ba -i10 -v10
10 '$lang: "qb"
20
30 time_str$ = time$
40
50 print time_str$
60
70 hour$ = mid$(time_str$,1,2)
80 min$ = mid$(time_str$,4,2)
90 sec$ = mid$(time_str$,7,2)
100
110 timeval = val(hour$)*3600 + val(min$)*60 + val(sec$)
120
130 timeval = timeval + 60*5
140
150 hour$ = str$(int(timeval / 3600))
160 min$ = str$(int((timeval mod 3600) / 60))
170 sec$ = str$(timeval mod 3600 mod 60)
180
190 print hour$;":";min$;":";sec$
takk@deb9:~/tmp$
結果です。
takk@deb9:~/tmp$ ./time-calc 19:12:17 19: 17: 17 takk@deb9:~/tmp$


コメント