自由形式構文 | (許可されていない - %SUBDT 組み込み関数を使用) |
コード | 演算項目 1 | 演算項目 2 | 結果フィールド | 標識 | ||
---|---|---|---|---|---|---|
EXTRCT (E) | 日付/時刻: 期間コード | 転送先 | _ | ER | _ |
EXTRCT 命令は次の 1 つを結果フィールドに指定されたフィールドに戻します。
情報を要求する日付、時刻、またはタイム・スタンプは、演算項目 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