%SUBDT (日付、時刻、またはタイム・スタンプの一部の取り出し)
%SUBDT(value : unit { : digits { : decpos } })
単位に指定できるのは、
*MSECONDS、*SECONDS、*MINUTES、*HOURS、*DAYS、*MONTHS、または *YEARS です。
単位の省略形を使用して、*MS、*S、*MN、*H、*D、*M、または *Y と指定することもできます。
%SUBDT は、日付、時刻、またはタイム・スタンプの情報の一部を取り出します。これは符号なしの数値を戻します。
最初のパラメーターは、日付、時刻、またはタイム・スタンプ値です。
2 番目のパラメーターは、ユーザーが取り出したい部分です。
次の値が有効です。
- 日付の場合: *DAYS、*MONTHS、および *YEARS
- 時刻の場合: *SECONDS、*MINUTES、および *HOURS
- タイム・スタンプの場合: *MSECONDS、*SECONDS、*MINUTES、*HOURS、 *DAYS、*MONTHS、および *YEARS
- 3 番目のパラメーターは任意指定です。これは戻り値の桁数を表します。
- 4 番目のパラメーターは任意指定です。 これは、戻り値の小数点以下 (つまり、秒の小数部) の桁数を表します。 これを指定できるのは、最初のパラメーターがタイム・スタンプであり、2 番目 のパラメーターが *SECONDS または *S の場合です。 例えば、戻り値の小数点以下の桁数を 7 桁にしたい場合、 digits パラメーターに 9 を、 decpos パラメーターに 7 を指定します。
この関数では、*DAYS は必ず年間通算日ではなく月の中での日を参照します (ユーザーが年間通算日を使用していても)。たとえば、2 月 10 日の日の部分とは、10 であって 41 ではありません。
この関数は必ず 4 桁の年を戻します (日付の形式が 2 桁の年の場合も)。
詳細については、日付命令または 組み込み関数を参照してください。

図 1. %SUBDT の例
*..1....+....2....+....3....+....4....+....5....+....6....+....7...+....
date = d'1999-02-17';
time = t'01.23.45';
timestamp = z'1999-02-17-01.23.45.98765';
num = %subdt(date:*YEARS);
// num = 1999
num = %subdt(time:*MN);
// num = 23
seconds = %subdt(timestamp:*S:5:3);
// seconds = 45.987