先の「275. RPGで曜日を算出するには ?」における注意点をもう少し。
ご存知のように日本国内でタイプ D
として日付を指定している例は少ない。
そして日付形式は多くが *YMD
形式である。
これに対して米国では基本的に *MDY
であり英国や香港は *DMY
形式である。
さて IBM 解説書にある %DATE
の説明では
日付 = %DATE([変換元の文字列] : [日付フォーマット] )
とある。
日付フォーマット(様式)とは *YMD, *MDY, *DMY
のいずれかの様式であるはずである。
ところが このうち *YMD
を指定すると
「日付,時刻,またはタイム・スタンプの値が正しくない 」
とのエラーになってしまって %DATE
による日付変換は失敗する。
例えば
DATE = %DATE('170401': *YMD);
はエラーとなってしまう。
恐らく *DMY
もエラーとなるだろう。
しかし
DATE = %DATE('040117': *MDY);
であれば正常に変換される。
数字や文字から 10桁
の日付形式に %DATE
で変換するときは *YMD
を指定しても
エラーとなってしまう。
恐らく IBM は *YMD
に関してテストしていないのだろう。
面倒であるが *MDY
を指定して変換するようにして欲しい。