2016年2月18日木曜日

8桁の数値型の日付から前月末日の出し方 [RPG]

RPG4で8桁の数値型の日付から前月末日の出し方。

D W_TODAY S 8S 0 INZ(20160212)
D W_DAY S 8S 0
D W_DATE S 10D
D W_ZMYMD S 8S 0

C* 今月の1日を算出(2行に分けないと下2桁が消えない)
C EVAL W_DAY = W_TODAY / 100
C EVAL W_DAY = W_DAY * 100 + 1
C* 1日から1日を引いて前月末日を算出
C EVAL W_DATE = %DATE(W_DAY) - %DAYS(1)
C* 日付型から8桁の数値に変換
C EVAL W_ZMYMD = %SUBDT(W_DATE:*YEARS) * 10000
+ %SUBDT(W_DATE:*MONTHS) * 100
+ %SUBDT(W_DATE:*DAYS)