[3178]
T_STAMP.DEF
でがらし
2009/04/11(Sat) 08:57
[
3176]へのコメント
大石さんのT_STAMP.DEFは下記です。軟体にも載っているので、全体を掲載させてもらいます。ご指摘の通り、CX%100はあるんですが、%02dというのもあるんですよね。
できれば、メニューで
"C 93/10/10(Sun) 19:34:13"
を先頭に持ってきたいんです。でもメニューで選択すると打鍵数が1つ増えるので、本当はこの形式のタイムスタンプだけを出力する単独マクロがほしいんですが。年数は4桁全部を出力できるでしょうか?
========T_STAMP.DEF ------------------( 93/10/15(Fri) 11:12:49 )
*M
80 ^^ "T_STAMP.DEF"
?.
!01 (r==-1)?>G (r)>?{>A >B >C >D >E}
:A
ax$2c00,&i($21)
&?("%02d:%02d:%02d",cx>>8,$ff&cx,dx>>8).
:B
ax=$2A00,&i($21)&s&?("%d/%02d/%02d (%3s)",cx%100,dx>>8,dx&$FF,"SunMonTueWedThuFriSat"+(ax&$FF)*3)#?.
:C
ax=$2A00,&i($21)&s&?("%d/%02d/%02d(%3s)",
cx%100,dx>>8,dx&$FF,"SunMonTueWedThuFriSat"+(ax&$FF)*3)
&d#?" "ax=$2C00,&i($21)h=cx>>8,i=cx&$FF,j=dx>>8,&?
("%02d:%02d:%02d",h,i,j).
:D
"( date:"
ax=$2A00, &i($21) i=cx, j=dx&$FF, k=dx>>8,
ax=$2C00, &i($21)
&?("%4d-%02d-%02d time:%02d:%02d )",i,k,j,cx>>8,cx&$FF).
:E
a[,b[,
b="0123456789",
ax=$2a00, &i($21)
a=cx/1000,
&01
a=(cx%1000)/100,
&01
a=(cx%100)/10,
&01
a=cx%10,
&01 &o('年')
a=(dx>>8)/10,
&01
a=(dx>>8)%10,
&01 &o('月')
a=(dx&$ff)/10,
&01
a=(dx&$ff)%10,
&01 &o('日')
a="日月火水木金土日"+(ax&7)*2,
&o('(') &?("%2s",a) &o(')')
b],a],
1: &o((b..a)!!).
*P
1 "【メニュー】",33,5
"A 15:30:00"
"B 93/10/10 (Sun)"
"C 93/10/10(Sun) 19:34:13"
"D ( date:1993-10-10 time:15:30 )"
"E 1993年10月10日(日)"
*
---------------$ T_STAMP.DEF ( zenkaku:37 hankaku:455 )------------------
キャロルさん,タイムスタンプ・マクロはそれぞれの人にそれぞれのマクロがあるものだと思います。ですから,ご自分が必要な出力様式を決めて作ってみませんか?
マクロって使うだけではまるでつまらないですよ。日常で使うものは自分で作ってみて初めて手に馴染ませることができ,愛着も湧くと思います。
タイムスタンプに必要な手順は,たったふたつです。
1 ファンクションコールで現在日時を取得(年月日と時刻は別)
2 設定した書式で出力
■日付出力の基本
1 ファンクションコールで日付曜日を取得
ax=$2A00, &i($21) ;ファンクションコール(意味を考える必要はありません)
2 設定した書式で出力
&?("%d",cx) ;年を出力 cxをそのまま出力すると2009のように出力
&?("%d",dx>>8) ;月を出力 dxから取り出します
&?("%d",dx&$ff) ;日を出力 dxから取り出します
&?("%d",ax&$ff) ;曜日番号を出力 axから取り出します
dx>>8 とか dx&$ff などの難解な式がありますが,これはそのまま使うだけです。意味が解らないと使えないなどと言わないで,そのまま使えばよいのです。例えば,漢字で「時」がどうして「日」と「寺」なのか語源が分からないと使ってはいけないでしょうか? そんなことありませんよね。語源を知るのは興味が湧いてからでかまわないのです。
曜日は数字ではないので問題ですが,考えようです。例えば,
(ax&$ff==1)?"月" ;こんなのを7通り書いても間違いではありません。
通常は,以下のように書きます。
w="日月火水木金土", &?("%2s",w+(ax&$ff)*2)
あるいは,
w="SunMonTueWedThuFriSat"+(ax&$ff)*3, &?("%3s",w)
とか,
&?("%2s","日月火水木金土"+ax&$ff*2)
とか,山のように色々な書き方ができるので,決定的なものはありません。
■時刻出力の基本
ax=$2C00, &i($21) ;ファンクションコール(意味を考える必要はありません)
&?("%d",cx>>8) ;時を出力します
&?("%d",cx&$ff) ;分を出力します
&?("%d",dx>>8) ;秒を出力します
基本はこれだけで,必要に応じて途中に単位や区切り記号の文字などを書き出すだけです。作り方によっては,としきさんが挙げている三浦さんのマクロのように,通常起動で日付だけ,シフト実行すると時刻も出力など,色々出力の調整を楽しむこともできます。
とりあえず、私が使っているマクロです。
原作者は三浦茂さんです。自分用に、多少の改造は加えてあります。
33 [ESC]T "Time"
(s>2)?.
ax=$2A00, &i($21),
&s
; w="日月火水木金土"+(ax&$FF)*2,
w="SunMonTueWedThuFriSat"+(ax&$FF)*3,
&?("%3s, %02d ",w,dx&$FF)
w="JanFebMarAprMayJunJulAugSepOctNovDec"+((dx>>8)-1)*3,
&?("%3s 20%02d",w,cx%100)
(ks&1)?{&d .}
ax=$2C00, &i($21),
&?(" %02d:%02d:%02d +0900 (JST)",cx>>8,cx&$FF,dx>>8)
&d
.
表示形式は、ご自分でいじって下さい。
現状は、電子メールでよく使われる形式になっています。