日付、時刻、またはタイム・スタンプ式
最初のパラメーターが日付、時刻、またはタイム・スタンプ式である場合、
オプションの形式パラメーターで、戻り値の形式を指定します。
変換後の 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