DSPF の右上端などに今日の日付( UDATE ) を表示するケースはよくある。
A 4 22DATE EDTCDE(Y)
のように DDS で DATE キー・ワードを使うと今日の日付( UDATE ) が画面に表示されることは
良く知られている。
しかし 「14/12/25」のように西暦の 20 を省略する表示は 2000 年問題以降は
( 2000年問題が知らない人は先輩に訪ねてください。)
西暦表示も「2014/12/25」のように省略しないで表示することが一般的である。
そこで 8 桁の今日の日付を表示する方法をここで紹介する。
A 6 22DATE(*YY) EDTCDE(W)
のように DATE キー・ワードの拡張パラメータとして *YY を指定すると 8 桁の日付として
表示される。
ただし 8 桁日付の編集コードは Y ではなく、 W を使用すること。
【 サンプル・ソース:TESTDATEFM 】
0001.00 A*%%TS SD 19940302 221529 QTR REL-V2R2M0 5738-PW1
0002.00 A* 11:59:33 QSECOFR REL-R06M00 5714-UT1
0003.00 A*%%EC
0004.00 A DSPSIZ(24 80 *DS3)
0005.00 A MSGLOC(24)
0006.00 A PRINT
0007.00 A R DSPDTA01
0008.00 A*%%TS SD 19940302 221529 QTR REL-V2R2M0 5738-PW1
0009.00 A TEXT(' 明細画面 01')
0010.00 A CF03(03 ' 終了 ')
0011.00 A SETOF(99)
0012.00 A KEEP
0013.00 A BLINK
0014.00 A 1 27' 日付フィールドのテスト '
0015.00 A DSPATR(RI)
0016.00 A 4 2' 6桁の日付 (DATE)'
0017.00 A 4 22DATE EDTCDE(Y)
0018.00 A 4 34'( EDTCDE(Y) )'
0019.00 A 6 2' 8桁の日付 (DATE)'
0020.00 A 6 22DATE(*YY) EDTCDE(W)
0021.00 A 6 34'( EDTCDE(W) )'
0022.00 A 23 2'F3= 終了 '

【サンプル実行CLP: TESTDATECL】
001.00 PGM 002.00 /*---------------------------------------------------------*/ 003.00 /* TESTDATECL : 日付フィールドのテスト */ 004.00 /*---------------------------------------------------------*/ 005.00 DCLF FILE(TEST.COM/TESTDATEFM) 006.00 DCL VAR(&UDATE) TYPE(*CHAR) LEN(10) 007.00 008.00 DSPLY: SNDRCVF RCDFMT(DSPDTA01) 009.00 IF COND(&IN03 *EQ '1') THEN(RETURN) 010.00 GOTO DSPLY 011.00 012.00 ENDPGM
【実行結果】

