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