• ベストアンサー

COBOLの条件式について

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

質問者が選んだベストアンサー

  • ベストアンサー
回答No.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が入ります。数値以外を入れ、演算等を行うとデータ例外が発生します。 具体的な値のセット方法などが提示されれば、より具体的なアドバイスができるかも知れません。

その他の回答 (1)

回答No.1

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

関連するQ&A