EXTRCT (日付/時刻/タイム・スタンプの抽出)
| 自由形式構文 | (許可されていない - %SUBDT 組み込み関数を使用) |
| コード | 演算項目 1 | 演算項目 2 | 結果フィールド | 標識 | ||
|---|---|---|---|---|---|---|
| EXTRCT (E) | 日付/時刻: 期間コード | ターゲット | _ | ER | _ | |
EXTRCT 命令は次の 1 つを結果フィールドに指定されたフィールドに戻します。
- 日付またはタイム・スタンプ・フィールドの年、月、または日の部分
- 時刻またはタイム・スタンプ・フィールドの時、分、または秒の部分
- タイム・スタンプ・フィールドのマイクロ秒部分
EXTRCT 命令は、タイム・スタンプ・フィールド
からマイクロ秒 (秒の小数部 6 桁) を抽出する操作のみをサポートします。
異なる桁数の秒の小数部を抽出するには、%SUBDT 組み込み関数を使用します。
情報を要求する日付、時刻、またはタイム・スタンプは、演算項目 2 に指定して、 その後に期間コードを続けます。 演算項目 2 に指定する記入項目 は、フィールド、サブフィールド、テーブル要素、または配列要素と することができます。 期間コードは、演算項目 2 のデータ・タイプと一貫性のある ものでなければなりません。有効な期間コードについては、日付命令を参照してください。
演算項目 1 はブランクでなければなりません。
結果フィールドは、数値または文字フィールド、サブフィールド、配列/テー
ブル要素とすることができます。 結果フィールドには、その内容が消去されてから、取り出されたデータが割り
当てられます。文字の結果フィールドの場合には、データは左寄せされて結果フィールドに入
れられます。
注: 年間通算日 (形式 *JUL) を指定した EXTRCT 命令を使用している場合には、
期間コード *D を指定するとその月の日が戻されて、*M を指定するとその年の
月が戻されます。 日と月を 3 桁の形式にしたい場合には、基底ポインターを使用して取り出すこ
とができます。 年間通算日形式で表示する場合の例については、図 3 を参照してください。
EXTRCT 例外 (プログラム状況コード 112) を 処理するために、命令コード拡張 'E' またはエラー標識 ER を指定できますが、 両方を指定することはできません。 エラー処理の詳細については、プログラム例外/エラーを 参照してください。
詳細については、日付命令を参照してください。
図 1. EXTRCT 命令
D LOGONDATE S D
D DATE_STR S 15
D MONTHS S 8 DIM(12) CTDATA
C*0N01Factor1+++++++Opcode(E)+Factor2+++++++Result++++++++Len++D+HiLoEq....
* Move the job date to LOGONDATE. By default, LOGONDATE has an *ISO
* date format, which contains a 4-digit year. *DATE also contains a
* 4-digit year, but in a different format, *USA.
C *USA MOVE *DATE LOGONDATE
*
* Extract the month from a date field to a 2-digit field
* that is used as an index into a character array containing
* the names of the months. Then extract the day from the
* timestamp to a 2-byte character field which can be used in
* an EVAL concatenation expression to form a string.
* For example, if LOGONDATE is March 17, 1996, LOGMONTH will
* contain 03, LOGDAY will contain 17, and DATE_STR will contain
* 'March 17'.
C EXTRCT LOGONDATE:*M LOGMONTH 2 0
C EXTRCT LOGONDATE:*D LOGDAY 2
C EVAL DATE_STR = %TRIMR(MONTHS(LOGMONTH))
C + ' ' + LOGDAY
C SETON LR
** CTDATA MONTHS
January
February
March
April
May
June
July
August
September
October
November
December