TESTN (数字のテスト)
自由形式構文 | (許可されていない - 使用する前に変数をテストするのではなく、 変数の使用法を MONITOR グループ内でコーディングし、エラーが発生した場合は ON-ERROR で処理する。 『エラー処理命令』を参照。) |
コード | 演算項目 1 | 演算項目 2 | 結果フィールド | 標識 | ||
---|---|---|---|---|---|---|
TESTN | 文字フィールド | NU | BN | BL |
TESTN 命令では、文字の結果フィールドにゾーン 10 数字およびブランク
があるかどうかがテストされます。 結果フィールドは文字フィールドでなければなりません。
数値と見なされるためには、フィールドの最下位の文字以外のそれぞれの文字
に、16 進数の F ゾーンおよび数字 (0 から 9) が入っていなければなりません。
最下位の文字は、16 進数の C、D、または F ゾーンおよび数字 (0 から 9) が入っ
ていれば数値となります。 英字の J から R は、フィールドの最下位にある時に TESTN で負数として扱われる
ことに注意してください。 テストの結果として、結果の標識は次の場合にオンに設定されます。
- 71 桁目と 72 桁目: 結果フィールドに数字が入っている場合。 低位の文字は A から R の文字である可能性があります。これらの文字は C、D、または F のゾーンを持ち、0 から 9 の 数字を持つためです。
- 73 桁目と 74 桁目: 結果フィールドに数字と少なくと
も 1 個のブランクが入っている場合。 例えば、値 ␢123 または ␢␢123
でこの標識がオンに設定されます。 しかし、値 ␢1␢23 は、組み込みブランクがあるために有効な数値フ
ィールドとはならず、この値ではこの標識はオンに設定されません。
注: 文字フィールドには最低 1 桁の数字と 1 個の先行ブランクが入っていな ければならないので、長さが 1 桁のフィールドをテストする場合には、73 桁 目と 74 桁目に標識を指定することはできません。
- 75 桁目と 76 桁目: 結果フィールドにすべてブランク が入っている場合。
同じ標識を複数の条件に使用することができます。 いずれかの条件が存在す れば、標識がオンに設定されます。
TESTN 命令は、使用すると好ましくない結果や例外が生ずる命令 (例えば、 算術演算) を使用する前に、フィールドの妥当性検査を行うために使用 することができます。
詳細については、テスト命令を参照してください。
図 1. TESTN 命令
*...1....+....2....+....3....+....4....+....5....+....6....+....7...+....
CL0N01Factor1+++++++Opcode(E)+Factor2+++++++Result++++++++Len++D+HiLoEq....
*
* The field values are FieldA = 123, FieldB = 1X4, FieldC = 004,
* FieldD = ␢␢␢, FieldE = ␢1␢3, and FieldF = ␢12.
*
* Indicator 21 is set on because FieldA contains all numeric
* characters.
C TESTN FieldA 21
* Indicator 22 is set on because FieldA contains all numeric
* characters. Indicators 23 and 24 remain off.
C TESTN FieldA 222324
* All indicators are off because FieldB does not contain valid
* numeric data.
C TESTN FieldB 252627
* Indicator 28 is set on because FieldC contains valid numeric data.
* Indicators 29 and 30 remain off.
C TESTN FieldC 282930
* Indicator 33 is set on because FieldD contains all blanks.
* Indicators 31 and 32 remain off.
C TESTN FieldD 313233
* Indicators 34, 35, and 36 remain off. Indicator 35 remains off
* off because FieldE contains a blank after a digit.
C TESTN FieldE 343536
* Indicator 38 is set on because FieldF contains leading blanks and
* valid numeric characters. Indicators 37 and 39 remain off.
C TESTN FieldF 373839