日付命令

日付命令を次の表に示します。

表 64. 日付命令
演算 従来型の構文 自由形式構文
日付の加算 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 命令コードを使用できます。 下記の表では、自由形式構文で使用する組み込み関数と、従来型の構文で使用する期間コードを示します。

表 65. 組み込み関数と期間コード
単位 組み込み関数 期間コード
%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 組み込み関数でも同じ結果を得られます。

表 66. SUBDUR を使用した結果の期間
期間の単位 演算項目 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 時間


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]