自由形式構文 | TEST{(EDTZ)} {dtz 形式} フィールド名 |
コード | 演算項目 1
(dtz 形式) |
演算項目 2 | 結果フィールド
(フィールド名) |
標識 | ||
---|---|---|---|---|---|---|
TEST (E) | 日付/時刻または タイム・スタンプ・フィールド | _ | ER | _ | ||
TEST (D E) | 日付形式 | 文字または 数値フィールド | _ | ER | _ | |
TEST (E T) | 時刻の形式 | 文字または 数値フィールド | _ | ER | _ | |
TEST (E Z) | タイム・スタンプ形式 | 文字または 数値フィールド | _ | ER | _ |
TEST 命令コードでは、日付、時刻、またはタイム・スタンプ・フィールドを 使用する前にそれらの妥当性を検査することができます。
使用可能な形式に ついては、日付データ・タイプ、時刻データ・タイプ、および タイム・スタンプ・データ・タイプを参照してください。
区切り記号のない数値フィールドおよび文字フィールドは、日付、時刻、またはタイム・スタンプの値の数字部分の妥当性についてテストされます。 文字フィールドは、数字および区切り記号の両方の 妥当性についてテストされます。
フィールド名・オペランドとして指定された文字または数字フィールドが、 テスト対象の形式で必要とされるよりも長い場合は、余分なデータは無視されます。 文字データの場合、左端のデータのみが使用され、 数値データの場合、右端のデータのみが使用されます。 例えば、dtz 形式 オペランドが数値の日付のテストのための *MDY である 場合、フィールド名 オペランドの右端の 6 桁が検査されます。
テスト命令では、命令コード拡張 'E' またはエラー標識 ER を指定する必要がありますが、 両方を指定することはできません。 フィールド名 オペランドが正しくない場合、プログラム状況コード 112 が通知されます。 次に、指定されたエラー処理方法に基づいて、エラー標識がオンに設定されるか、 または %ERROR 組み込み関数が '1' を戻すように設定されます。 エラー処理の詳細について は、プログラム例外/エラーを参照してください。
詳細については、日付命令または テスト命令を参照してください。
*...1....+....2....+....3....+....4....+....5....+....6....+....7...+.... DName+++++++++++ETDsFrom+++To/L+++IDc.Keywords+++++++++++++++++++++++++++++ D D Datefield S D DATFMT(*JIS) D Num_Date S 6P 0 INZ(910921) D Char_Time S 8 INZ('13:05 PM') D Char_Date S 6 INZ('041596') D Char_Tstmp S 20 INZ('19960723140856834000') D Char_Date2 S 9A INZ('402/10/66') D Char_Date3 S 8A INZ('2120/115') D CL0N01Factor1+++++++Opcode(E)+Factor2+++++++Result++++++++Len++D+HiLoEq.... * * Indicator 18 will not be set on, since the character field is a * valid *ISO timestamp field, without separators. C *ISO0 TEST (Z) Char_Tstmp 18 * Indicator 19 will not be set on, since the character field is a * valid *MDY date, without separators. C *MDY0 TEST (D) Char_Date 19 * * %ERROR will return '1', since Num_Date is not *DMY. * C *DMY TEST (DE) Num_Date * * No Factor 1 since result is a D data type field * %ERROR will return '0', since the field * contains a valid date C C TEST (E) Datefield C * In the following test, %ERROR will return '1' since the * Timefield does not contain a valid USA time. C C *USA TEST (ET) Char_Time C * In the following test, indicator 20 will be set on since the * character field is a valid *CMDY, but there are separators. C C *CMDY0 TEST (D) char_date2 20 C * In the following test, %ERROR will return '0' since * the character field is a valid *LONGJUL date. C C *LONGJUL TEST (DE) char_date3
(C) Copyright IBM Corporation 1992, 2006. All Rights Reserved.