RPG プログラムの中でデータ・レコードに更新日付を書き込みたいときに
あなたはどのように記述しますか ?
ああ、それなら簡単 !!
C Z-ADD UDATE CHGDATE
なんかでいいんでしょ?
というのは実は厳密な意味では間違い。
UDATE
というのは Usual Date
ということで今日の日付と思いきや、
実は「このジョブが開始された日付」である。
「だから同じことではないか ?!」というのも厳密には間違い。
今の時代、IBM i の電源は 365日 ON で入れっぱなし、というのも珍しくない。
このジョブが常時、待機して実行しているとか、あるいは
5250 エミュレータを上げっぱなしの場合、翌日になっても
実は UDATE
は更新されない。
5250 環境では翌日になっても UDATE
は昨日の日付のままである。
従って UDATE
を更新しても正しい更新日付が書き込まれているとは限らない。
書き込まれているのはジョブが開始された日付である。
それでは常に正しい今日の日付を RPG でどのように取得すべきかというと、
D*( プログラム状況データ構造 ) D INFDS_THIS SDS : D JOB_DATE 270 275S 0 D RUN_DATE 276 281S 0
このうちの RUN_DATE
が正しく更新されている今日の日付である。
JOB_DATE
はやはり UDATE
と同じでジョブが開始された日付である。
従って
C MOVE RUN_DATE CHGDATE
とするのが正しい日付の更新の方法である。
...今まで今日の日付は UDATE
と思ってきたが厳密にはそうではなかった。