日付データ・タイプ

日付フィールドは、事前に決定されたサイズおよび形式を持っています。 これらは定義仕様書で定義することができます。 すべての日付データに先行ゼロおよび後書きゼロが必要です。

比較または割り当てで使用される日付定数または変数は、同じ形式であるか、 または同じ区切り記号が使用されている必要はありません。 また、入力フィールド、出力フィールド、またはキー・フィールドのように入出 力命令に使用される日付は (必要な場合に) 命令に必要な形式に変換されます。

日付変数のデフォルトの内部形式は *ISO です。 このデフォルト内部形式は、制御仕様書キーワード DATFMT によって グローバルにオーバーライドすることができ、/SET 指示および /RESTORE 指示によって一時的に変更することができ、 また、定義仕様書キーワード DATE または DATFMT によって個々に設定することができます。

日付フィールドの内部日付形式および区切り記号を判別する時に使用される順位は次のとおりです。
  1. 定義仕様書に指定された DATE または DATFMT キーワードから
  2. /RESTORE 指示で元に戻されていない、DATFMT キーワードを含んでいる最新の /SET 指示から
  3. 制御仕様書に指定された DATFMT キーワードから
  4. *ISO
日付データ形式には、表現できる年の範囲により 3 つの種類があります。 これによって、操作の結果がターゲット・フィールドの有効範囲外の日付になった場合、 日付のオーバーフローまたはアンダーフロー条件が発生する可能性があります。 各形式および範囲は次のとおりです。
年の桁数 年の範囲
2 (*YMD、*DMY、*MDY、*JUL) 1940 から 2039
3 (*CYMD、*CDMY、*CMDY) 1900 から 2899
4 (*ISO、*USA、*EUR、*JIS、*LONGJUL) 0001 から 9999

表 1 に、日付データの RPG 定義形式とその区切り記号をリストします。

注: 分離文字 '&' 区切り文字としてブランクが使用されることを示します。 例えば、DATE(*YMD&) で定義された日付フィールド の区切り記号はブランクになります。
表 1. 日付データ・タイプの RPG 定義日付形式および区切り記号
フォーマット名 説明 形式 (デフォルトの区切り記号) 有効な区切り記号 長さ
2 桁の年形式
*MDY 月/日/年 mm/dd/yy / - . , & 8 01/15/96
*DMY 日/月/年 DD/MM/YY / - . , & 8 15/01/96
*YMD 年/月/日 YY/MM/DD / - . , & 8 96/01/15
*JUL ユリウス yy/ddd / - . , & 6 96/015
4 桁の年形式
*ISO 国際標準化機構 yyyy-mm-dd - 10 1996-01-15
*USA IBM® USA 標準規格 mm/dd/yyyy / 10 01/15/1996
*EUR IBM 欧州標準規格 dd.mm.yyyy . 10 15.01.1996
*JIS 日本工業規格 (JIS) 西暦 yyyy-mm-dd - 10 1996-01-15

表 2 に、すべての RPG 定義日付形式の *LOVAL、*HIVAL、およびデフォルト値をリストします。

表 2. 日付値
フォーマット名 説明 *LOVAL *HIVAL デフォルトの値
2 桁の年形式
*MDY 月/日/年 01/01/40 12/31/39 01/01/40
*DMY 日/月/年 01/01/40 31/12/39 01/01/40
*YMD 年/月/日 40/01/01 39/12/31 40/01/01
*JUL ユリウス 40/001 39/365 40/001
4 桁の年形式
*ISO 国際標準化機構 0001-01-01 9999-12-31 0001-01-01
*USA IBM USA 標準規格 01/01/0001 12/31/9999 01/01/0001
*EUR IBM 欧州標準規格 01.01.0001 31.12.9999 01.01.0001
*JIS 日本工業規格 (JIS) 西暦 0001-01-01 9999-12-31 0001-01-01

MOVE、MOVEL、および TEST 命令でのみ使用されるフィールドの場合には、他の 形式もサポートされています。 このサポートは、すでに 3 桁の年形式および 4 桁の 年 *LONGJUL 形式である外部定義値との互換性のために用意されています。 このサポートは、*JOBRUN が指定された場合には、2 桁の年形式にも 適用されます。

*JOBRUN は、それが説明しているフィールドにジョブからの属性があることがわかって いる場合に使用してください。 たとえば、TIME 命令の 12 桁の数値結果は、ジョブ日付形式になります。

表 3 に、MOVE、MOVEL、および TEST 命令の演算項目 1 で使用できる有効な外部定義日付形式をリストします。

テーブル3。 外部定義の日付形式および区切り記号
フォーマット名 説明 形式 (デフォルトの区切り記号) 有効な区切り記号 長さ
2 桁の年形式
*JOBRUN1 実行時に DATFMT、または DATSEP ジョブ値から 判別されます。
3 桁の年形式2
*CYMD 世紀 年/月/日 cyy/mm/dd / - . , & 9 101/04/25
*CMDY 世紀 月/日/年 cmm/dd/yy / - . , & 9 104/25/01
*CDMY 世紀 日/月/年 cdd/mm/yy / - . , & 9 125/04/01
4 桁の年形式
*LONGJUL 長形式のユリウス暦 yyyy/ddd / - . , & 8 2001/115
注:
  1. *JOBRUN は、DATFMT の実行時ジョブ属性が *MDY、*YMD、*DMY または *JUL だけ であるために、年の桁が 2 桁の文字日付または数値日付の場合にのみ有効です。
  2. 世紀の文字 'c' の有効値は次のとおりです。
        'c'           Years
       -----------------------
         0          1900-1999
         1          2000-2099
         .              .
         .              .
         .              .
         9          2800-2899