RPGのデータ構造定義で
D*( WORK 日付 YYMMDD データ 構造 ) D DATEDS DS D SRY 1 2 0 D SRYMD 1 8 0 D YYMMDD 3 8 0 D YYMM 3 6 0 D MMDD 5 8 0 D YY 3 4 0 D MM 5 6 0 D DD 7 8 0
のようなデータ・ストラクチャーは良く知られている。
これは
Z-ADD UDATE YYMMDD
のようにすると YY には年が入り、MMには月が入り
DD にも同時に日付が入るという定業の方法である。
これと同じような定義をCLPでも定義することができる。
0001.00 PGM 0002.00 DCL VAR(&DATEDS) TYPE(*CHAR) LEN(8) 0003.00 DCL VAR(&YY) TYPE(*CHAR) STG(*DEFINED) LEN(2) + 0004.00 DEFVAR(&DATEDS 3) 0005.00 DCL VAR(&MM) TYPE(*CHAR) STG(*DEFINED) LEN(2) + 0006.00 DEFVAR(&DATEDS 5) 0007.00 DCL VAR(&DD) TYPE(*CHAR) STG(*DEFINED) LEN(2) + 0008.00 DEFVAR(&DATEDS 7) 0009.00 ENDPGM
[解説]
8桁の日付の変数 &DATEDS に対して
年 &YYと月 &MM と日 &DD をデータメストラクチャーと同じように
多重で定義することができる。
CHGVAR &YY %SST(%DATEDS 3 2)
のような演算は不要である。
覚えておくと便利な方法である。
_