次の 5 つの単純条件があります。
クラス条件は、データ項目の内容が英字、英小文字、英大文字、数字であるか、 あるいは環境部の SPECIAL NAMES 段落で定義されているように CLASS 文節によって指定された一連の文字の中の文字だけを含んでいるのかを識別します。
クラス条件 - 形式 >>-ID--+----+--+-----+--+-NUMERIC----------+------------------->< '-IS-' '-NOT-' +-ALPHABETIC-------+ +-ALPHABETIC-LOWER-+ +-ALPHABETIC-UPPER-+ | (1) | +-DBCS-------------+ | (1) | +-KANJI------------+ '-クラス名---------'
注:
テストされる項目の PICTURE に演算符号が含まれていないなら、内容 が数字で演算符号が存在しない場合にだけ、その項目は数字であると判別されます。
テストされる項目の PICTURE に演算符号が含まれているときは、その項目が基本項目であり、 内容が数字で、しかも有効な演算符号が存在する場合にだけ、その項目は数字であると判別されます。
EBCDIC 文字セットにおいて有効な正の組み込み演算符号は、16 進数の F、C、E、A です。 また、負の符号は 16 進数の D と B です。 なお、推奨する正の符号は 16 進数の F、負の符号は 16 進数の D となっています。 SIGN IS SEPARATE 文節に記述される項目の場合、有効な演算符号は + (16 進 4E) と - (16 進 60) です。
+----------------------------------IBM 拡張----------------------------------+
数字および日時のデータ項目の場合、テストされている ID は、USAGE DISPLAY、USAGE PACKED-DECIMAL、USAGE COMP、または USAGE COMP-3 として明示的あるいは暗黙に記述できます。
+------------------------------End of IBM 拡張-------------------------------+
クラス名テストは、数字として記述された ID に使用してはなりません。
+----------------------------------IBM 拡張----------------------------------+
+------------------------------End of IBM 拡張-------------------------------+
クラス・テストは、使用法が INDEX、POINTER、PROCEDURE-POINTER のいずれかである項目では有効ではありません。 これらの項目はどのクラスやカテゴリーにも属さないからです。
+----------------------------------IBM 拡張----------------------------------+
クラス条件は、外部の浮動小数点項目 (USAGE DISPLAY) または内部浮動小数点項目 (USAGE COMP-1 および USAGE COMP-2) には使用できません。
+------------------------------End of IBM 拡張-------------------------------+
表 20 に、クラス・テストの有効な形式を示します。
ID のタイプ | クラス・テストの有効な形式 | |
---|---|---|
英字 |
ALPHABETIC ALPHABETIC-LOWER ALPHABETIC-UPPER クラス名 |
NOT ALPHABETIC NOT ALPHABETIC-LOWER NOT ALPHABETIC-UPPER NOT クラス名 |
英数字、 英数字編集、 または数字編集 |
ALPHABETIC ALPHABETIC-LOWER ALPHABETIC-UPPER NUMERIC クラス名 |
NOT ALPHABETIC NOT ALPHABETIC-LOWER NOT ALPHABETIC-UPPER NOT NUMERIC NOT クラス名 |
外部 10 進数 内部 10 進数 |
NUMERIC |
NOT NUMERIC |
+----------------------------------IBM 拡張----------------------------------+
+------------------------------End of IBM 拡張-------------------------------+
|
DBCS KANJI |
NOT DBCS NOT KANJI |
+----------------------------------IBM 拡張----------------------------------+
+------------------------------End of IBM 拡張-------------------------------+
|
NUMERIC クラス名 |
NOT NUMERIC NOT クラス名 |
条件名条件は、条件変数をテストして、条件変数の値が条件名に関連した任意の値に等しいかを判別します。
条件名条件 - 形式 >>-条件名------------------------------------------------------><
条件名は、比較条件のための略語として条件の中に使用されます。 条件変数と条件名の値を比較する際の規則は、比較条件に関して示されている規則と同じです。
条件名が値の範囲 (またはいくつかの範囲) に結び付けられている場合、条件変数は、その値が範囲内 (両端の値も含めて) に入っているかどうかがテストされます。 このテストの結果が真となるのは、条件名に対応する値の 1 つが、関連する条件変数の値に等しい場合です。
+----------------------------------IBM 拡張----------------------------------+
条件名には、浮動小数点値および DBCS 値が使用できます。
+------------------------------End of IBM 拡張-------------------------------+
次の例は、条件変数および条件名の使用を図示しています。
01 NUMBER PIC 99. 88 FIVE VALUE 5. 88 ONE-DIGIT-EVEN VALUE 0, 2, 4, 6, 8 88 TWO-DIGIT-NUMBER VALUE 10 THRU 99
NUMBER は条件変数であり、FIVE、ONE-DIGIT-EVEN、TWO-DIGIT-NUMBER は条件名です。
次の IF ステートメントは、上記の例に追加して、特定のレコードの年齢グループを判別できます。
IF FIVE... (値 5 のテスト) IF ONE-DIGIT-EVEN (値 0, 2, 4, 6, 8 のテスト) IF TWO-DIGIT-NUMBER (値 10 〜 99 のテスト)
この条件名条件のテスト結果によって、オブジェクト・プログラムがいずれかの実行代替パスに進みます。
比較条件は 2 つのオペランドを比較し、どちらが ID、リテラル、算術式、指標名、または関数 ID にできるかを調べます。 比較条件は少なくとも 1 つの ID を参照しなければなりません。
比較条件 - 形式 >>-オペランド-1--+----+--+----------+---------------------------> '-IS-' | (1) | '-NOT------' >--+-+-GREATER--+------+-+---------------+--オペランド-2------->< | | '-THAN-' | | | +->-----------------+ | | +-LESS--+------+----+ | | | '-THAN-' | | | +-<-----------------+ | | +-EQUAL--+----+-----+ | | | '-TO-' | | | '-=-----------------' | +-GREATER--+------+--OR EQUAL--+----+-+ | '-THAN-' '-TO-' | +->=----------------------------------+ +-LESS--+------+--OR EQUAL--+----+----+ | '-THAN-' '-TO-' | '-<=----------------------------------'
注:
関係演算子は、比較の種類を指定します。 各関係演算子の前後には、スペースが 1 つずつなければなりません。
+----------------------------------IBM 拡張----------------------------------+
+------------------------------End of IBM 拡張-------------------------------+
関連情報
+----------------------------------IBM 拡張----------------------------------+
DBCS データ項目およびリテラルは、すべての関係演算子で使用できます。 比較 (2 つの DBCS 項目間のみ) は、DBCS 文字の 16 進数値の 2 進数照合順序に基づいています。 比較する 2 つの項目の長さが異なる場合、小さいほうの項目の右側に DBCS スペースが埋め込まれます。
+------------------------------End of IBM 拡張-------------------------------+
+----------------------------------IBM 拡張----------------------------------+
ポインター・データ項目は、USAGE IS POINTER として明示的に定義された項目です。 そのように定義されなければ、ADDRESS OF データ項目または ADDRESS OF 特殊レジスターであり、それらは暗黙に USAGE IS POINTER として定義されています。
ポインター・データ項目を指定すると、EQUAL および NOT EQUAL だけが関係演算子として使用できます。 比較において使用される 2 つのアドレスがどちらも同じ保管場所にある場合、オペランドは等しくなります。
この比較条件は、IF、PERFORM、EVALUATE、および SEARCH 形式 1 のステートメントの中で認められています。 SEARCH 形式 2 (SEARCH ALL) ステートメントでは認められていません。 それは、ポインター・データ項目に適用できる、意味のある配列がないからです。
ADDRESS 比較 - 形式 >>-+-ADDRESS OF--ID-1-+--+----+--+-----+--+-EQUAL--+----+-+-----> +-ID-2-------------+ '-IS-' '-NOT-' | '-TO-' | +-NULL-------------+ '-=-------------' '-NULLS------------' >--+-ADDRESS OF--ID-3-+---------------------------------------->< +-ID-4-------------+ +-NULL-------------+ '-NULLS------------'
つまり、NULL=NULL は使用できません。
+------------------------------End of IBM 拡張-------------------------------+
+----------------------------------IBM 拡張----------------------------------+
プロシージャー・ポインター・データ項目は、USAGE IS PROCEDURE-POINTER として明示的に定義されます。
プロシージャー・ポインター・データ項目を指定すると、EQUAL および NOT EQUAL だけが関係演算子として使用できます。 比較において使用される 2 つのアドレスがどちらも同じ保管場所にある場合、オペランドは等しくなります。
この比較条件は、IF、PERFORM、EVALUATE、および SEARCH 形式 1 のステートメントの中で認められています。 しかし、SEARCH 形式 2 (SEARCH ALL) ステートメントでは認められていません。 それは、プロシージャー・ポインター・データ項目に適用できる、意味のある配列がないからです。
プロシージャー・ポインター比較 - 形式 >>-+-ID-1--+--+----+--+-----+--+-EQUAL--+----+-+--+-ID-2--+---->< +-NULL--+ '-IS-' '-NOT-' | '-TO-' | +-NULL--+ '-NULLS-' '-=-------------' '-NULLS-'
+------------------------------End of IBM 拡張-------------------------------+