日付、時刻、またはタイム・スタンプ式

変更の始まり最初のパラメーターが日付、時刻、またはタイム・スタンプ式である場合、 オプションの形式パラメーターで、戻り値の形式を指定します。 変換後の 10 進数値の桁数は、その形式の値が取り得る桁数になり、 小数点以下の桁数はゼロになります。 例えば、最初のパラメーターが日付で、形式が *YMD である場合、10 進数値は 6 桁になります。最初のパラメーターがタイム・スタンプで、 秒の小数部が 3 桁ある場合、10 進値は 17 桁になります。変更の終わり

形式パラメーターを省略すると、最初のパラメーターの形式が使用されます。 DATFMT(形式 {区切り記号 })および TIMFMT(形式 {区切り記号 })を参照してください。

形式 *USA は、時刻式では使用することができません。 最初のパラメーターが *USA という時刻形式の時刻値である場合には、%DEC の 2 番目の形式パラメーター を必ず指定する必要があります。

図 1 は %DEC 組み込み関数の例を 示しています。

詳細については、変換命令または 組み込み関数を参照してください。

図 1. %DEC を使用して日付、時刻、およびタイム・スタンプを数値に変換する
D   yyddd         S              5S 0
D   yyyymmdd      S              8P 0
D   hhmmss        S              6P 0
D   numeric       S             20S 0
D   date          S               D   inz(D'2003-06-27') DATFMT(*USA)
D   time          S               T   inz(T'09.25.59')
D   timestamp     S               Z   inz(Z'2003-06-27-09.25.59.123456')
D   timestamp3    S               Z 3 inz(Z'2003-06-27-09.25.59.123')
 /free 

     // Using the format of the first parameter

     numeric = %dec(date);              //   numeric = 06272003
     numeric = %dec(time);             //   numeric = 092559
     numeric = %dec(timestamp);        //   numeric = 20030627092559123456
     numeric = %dec(timestamp3);       //   numeric = 20030627092559123

     // Using the second parameter to specify the result format

     yyddd = %dec(date : *jul);         //   yyddd = 03178
     yyyymmdd = %dec(date : *iso);     //   yyyymmdd = 20030627