COBOLで使用される数字文字を比較するための方法を教えてください。

COBOLでは数値文字列の大小は以下の2つの方法で比較できます

  1. 例えば「LESS THAN(より小さい)」、「GREATER THAN(より大きい)」、「EQUAL TO(等しい)」といった比較演算子を使って数値文字の大小を直接比較できます。比較演算子は数値文字のASCIIコード値を基に大小関係を判定します。

たとえば下のサンプルコードでは、二つの数字文字変数AとBの大きさを比較しています。

IF A IS LESS THAN B
DISPLAY "A is less than B"
ELSE IF A IS GREATER THAN B
DISPLAY "A is greater than B"
ELSE
DISPLAY "A is equal to B"
END-IF
  1. 特定のコンペア関数の利用: COBOLは数値文字の大きさを比較するために、いくつかの特定のコンペア関数も提供しています。最も一般的な関数はNUMVAL関数とNUMVAL-C関数です。

NUMVAL関数で数字文字列を数値に変換して、数値結果を返します。この結果は比較に使用できます。

NUMVAL-C 関数も数値文字を対応する数値に変換しますが、結果を、関数の戻り値ではなく、特定のデータアイテムに格納します。NUMVAL-C 関数で数値文字を数値に変換した後、その数値を他の数値と比較することができます。

NUMVAL関数の使用例を以下に示します。

01 A PIC X VALUE '5'.
01 B PIC X VALUE '7'.
IF NUMVAL(A) < NUMVAL(B)
DISPLAY "A is less than B"
ELSE IF NUMVAL(A) > NUMVAL(B)
DISPLAY "A is greater than B"
ELSE
DISPLAY "A is equal to B"
END-IF

NUMVAL-C関数の使用例コードを次に示します:

01 A PIC X VALUE '5'.
01 B PIC X VALUE '7'.
01 C PIC 9(2).
MOVE NUMVAL-C(A) TO C
IF C < NUMVAL-C(B)
DISPLAY "A is less than B"
ELSE IF C > NUMVAL-C(B)
DISPLAY "A is greater than B"
ELSE
DISPLAY "A is equal to B"
END-IF

数値文字をCOBOLで比較する代表的な方法を2通りに紹介したので、目的に応じて使い分けることができる。

bannerAds