日付命令を次の表に示します。
演算 | 従来型の構文 | 自由形式構文 |
---|---|---|
日付の加算 | ADDDUR (期間の加算) | + 演算子 |
日付/時刻の抽出 | EXTRCT (日付/時刻/タイム・スタンプの抽出) | %SUBDT (日付、時刻、またはタイム・スタンプの一部の取り出し) |
日付/時刻の期間の減算 | SUBDUR (期間減算) | - 演算子または %DIFF (2 つの日付、時刻、またはタイム・スタンプ値の差) |
日付/時刻/タイム・スタンプから文字への変換 | MOVE (転送)または MOVEL (左につめて転送) | %CHAR (文字データへの変換) |
日付/時刻/タイム・スタンプから数値への変換 | MOVE (転送)または MOVEL (左につめて転送) | %DEC (パック 10 進数への変換) |
文字/数値から日付への変換 | MOVE (転送)または MOVEL (左につめて転送) | %DATE (日付への変換) |
文字/数値から時刻への変換 | MOVE (転送)または MOVEL (左につめて転送) | %TIME (時刻への変換) |
文字/数値/日付からタイム・スタンプへの変換 | MOVE (転送)または MOVEL (左につめて転送) | %TIMESTAMP (タイム・スタンプへの変換) |
日付/時刻のタイム・スタンプへの移動 | MOVE (転送)または MOVEL (左につめて転送) | 日付 + 時刻 |
日付/時刻/タイム・スタンプのテスト | TEST (日付/時刻/タイム・スタンプのテスト) | |
年数 | %YEARS (年数) | |
月数 | %MONTHS (月数) | |
日数 | %DAYS (日数) | |
時間数 | %HOURS (時間数) | |
分数 | %MINUTES (分数) | |
秒数 | %SECONDS (秒数) | |
マイクロ秒数 | %MSECONDS (マイクロ秒数) |
日付命令により、日付フィールド、時刻フィールド、およびタイム・スタンプ・フィールド、さらには日付、時刻、タイム・スタンプを表す文字フィールドあるいは数字フィールドを処理することができます。 以下を行うことができます。
期間を加算または減算するには、自由形式構文では + 演算子または - 演算子を使用でき、従来型の構文では ADDDUR 命令コードまたは SUBDUR 命令コードを使用できます。 下記の表では、自由形式構文で使用する組み込み関数と、従来型の構文で使用する期間コードを示します。
単位 | 組み込み関数 | 期間コード |
---|---|---|
年 | %YEARS | *YEARS または *Y |
月 | %MONTHS | *MONTHS または *M |
日 | %DAYS | *DAYS または *D |
時間 | %HOURS | *HOURS または *H |
分 | %MINUTES | *MINUTES または *MN |
秒 | %SECONDS | *SECONDS または *S |
マイクロ秒 | %MSECONDS | *MSECONDS または *MS |
例えば、次のどちらの方法でも、既存の日付に 23 日を加算することができます。
C ADDDUR 23:*D DUEDATE /FREE newdate = duedate + %DAYS(23) /END-FREE
2 つの日付、時刻、またはタイム・スタンプの間の期間を計算するには、自由形式構文では %DIFF 組み込み関数を使用でき、従来型の構文では SUBDUR 命令コードを使用できます。どちらの場合にも、表 65 に示す期間コードのいずれかを指定する必要があります。
期間は完全な単位として渡され、剰余は廃棄されます。 59 分という期間は、時間単位で表せば 0 になります。61 分という期間は、時間単位で表せば 1 になります。
次の表では、SUBDUR 命令コードを使用した追加の例を示します。%DIFF 組み込み関数でも同じ結果を得られます。
期間の単位 | 演算項目 1 | 演算項目 2 | 結果 |
---|---|---|---|
月 | 1999-03-28 | 1999-02-28 | 1 か月 |
1999-03-14 | 1998-03-15 | 11 か月 | |
1999-03-15 | 1998-03-15 | 12 か月 | |
年 | 1999-03-14 | 1998-03-15 | 0 年 |
1999-03-15 | 1998-03-15 | 1 年 | |
1999-03-14-12.34.45.123456 | 1998-03-14-12.34.45.123457 | 0 年 | |
時間 | 1990-03-14-23.00.00.000000 | 1990-03-14-22.00.00.000001 | 0 時間 |