プロが教える店舗&オフィスのセキュリティ対策術

以下のような構文があります。
ループ中にAに1234の値、Bに1234の値がセットされていますが、
ループを抜けません。どうしてでしょうか?
なお、データ項目A,BのサイズをX(4)にすると、抜けます。

01 A PIC X(5)
01 B PIC X(5)
   :
PERFORM UNTIL A = B
   :
END-PERFORM

A 回答 (2件)

>Aに1234の値、Bに1234の値がセット


>なお、データ項目A,BのサイズをX(4)にすると、抜けます。
>
>01 A PIC X(5)
>01 B PIC X(5)

どのような方法で、値をセットしているのでしょうかね?

たぶん、#1さんの回答のように、'1234 '、' 1234'といったように、空白が入ってしまって、その位置が違うのではないかと思います。

X(n)は、文字のデータ型ですから、数値なら9(n)で宣言すればいいのでは?

COBOLの場合、Xタイプや集団項目にMOVEすると、通常は左詰で転記され、桁数に満たない部分には空白が入ります。JUST RIGTHといった宣言があると、右詰になります。

9タイプは数値で、外部10進であれば、右詰で前方には0が入ります。数値以外を入れ、演算等を行うとデータ例外が発生します。

具体的な値のセット方法などが提示されれば、より具体的なアドバイスができるかも知れません。
    • good
    • 0

多分A,Bの内容が食い違っているからだと思います。

食い違うパターンとして
A                   B
1234△               △1234
△1234               1234△
というようなデータがはいってませんか? 
x(05)なので設定の仕方で、必ずスペースが左右どちらかに入るとおもいますが!
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています