| 自由形式構文 | (許可されていない - %SUBDT 組み込み関数を使用) |
| コード | 演算項目 1 | 演算項目 2 | 結果フィールド | 標識 | ||
|---|---|---|---|---|---|---|
| EXTRCT (E) | 日付/時刻: 期間コード | ターゲット | _ | ER | _ | |
EXTRCT 命令は、タイム・スタンプ・フィールド
からマイクロ秒 (秒の小数部 6 桁) を抽出する操作のみをサポートします。
異なる桁数の秒の小数部を抽出するには、%SUBDT 組み込み関数を使用します。 
情報を要求する日付、時刻、またはタイム・スタンプは、演算項目 2 に指定して、 その後に期間コードを続けます。 演算項目 2 に指定する記入項目 は、フィールド、サブフィールド、テーブル要素、または配列要素と することができます。 期間コードは、演算項目 2 のデータ・タイプと一貫性のある ものでなければなりません。有効な期間コードについては、日付命令を参照してください。
演算項目 1 はブランクでなければなりません。
EXTRCT 例外 (プログラム状況コード 112) を 処理するために、命令コード拡張 'E' またはエラー標識 ER を指定できますが、 両方を指定することはできません。 エラー処理の詳細については、プログラム例外/エラーを 参照してください。
詳細については、日付命令を参照してください。
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