日付フィールドは、事前に決定されたサイズおよび形式を持っています。 これらは定義仕様書で定義することができます。 すべての日付データに先行ゼロおよび後書きゼロが必要です。
比較または割り当てで使用される日付定数または変数は、同じ形式であるか、 または同じ区切り記号が使用されている必要はありません。 また、入力フィールド、出力フィールド、またはキー・フィールドのように入出 力命令に使用される日付は (必要な場合に) 命令に必要な形式に変換されます。
日付変数のデフォルトの内部形式は *ISO です。 このデフォルトの内部形式は制御仕様書のキーワード DATFMT によってグローバルに、 また、定義仕様書のキーワード DATFMT によって個別に一時変更することができます。
日付フィールドの内部日付形式および区切り記号を判別する時に使用される順位は次のとおりです。
日付データ形式には、表現できる年の範囲により 3 つの種類があります。 これによって、操作の結果がターゲット・フィールドの有効範囲外の日付になった場合、 日付のオーバーフローまたはアンダーフロー条件が発生する可能性があります。 各形式および範囲は次のとおりです。
年の桁数 | 年の範囲 |
---|---|
2 (*YMD、*DMY、*MDY、*JUL) | 1940 から 2039 |
3 (*CYMD、*CDMY、*CMDY) | 1900 から 2899 |
4 (*ISO、*USA、*EUR、*JIS、*LONGJUL) | 0001 から 9999 |
表 33 は、日付データおよびその区切り記号の 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 |
表 34 は、すべての RPG 定義日付形式の *LOVAL、*HIVAL、およ びデフォルトの値をリストしています。
形式名 | 説明 | *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 桁の数値結果は、ジョブ日付形式になります。
表 35 は、MOVE、MOVEL または TEST 命令の演算項目 1 に 使用することができる、有効な外部定義日付形式をリストしています。