※質問を訂正しました。
古いCOBOL資産の解析がありまして、わからない構文に直面しましたのでご教授いただきたいと思います。
条件式IF文について、以下のような記述の場合、どういう処理になるのでしょうか?
IF A=8500 AND 8600 AND 8700
NEXT SENTENCE
ELSE
~~~ 以下の処理 ~~~
この場合、変数Aは、8500,8600,8700以外の時に、ELSEに入るのでしょうか?
NECSTはNEXTのことですか。
すみません、誤字でした。。。。
NEXT SENTENCEです。
a1,b1,c1は変数名ですか。リテラルでなければ、A=a1=b2=c1変数の内容が全て同じという意味。
a1,b1,c1は便宜上変数にしていましたが、実際は数値です。
IF A=8500 AND 8600 AND 8700
NEXT SENTENCE
ELSE
~~~ 以下の処理 ~~~
この場合、変数Aは、8500,8600,8700以外の時に、ELSEに入るのでしょうか?
すみません、ややこしくしてしまいまして。。。
常に FALSE。従って常にIF false THEN NEXT SENTENCE と読めます。ELSE部分に、どこかからGOTOしてこないですか。ELSEに異常処理が書いてあって...。想像ですが。<-- これは間違い、つねにELSEです。
常にFALSE。なるほど、そういうことでしたら、Aの値に関係なくELSEになるということですね。まず、こういう書き方ができること自体驚きでしたが、社内では、”実はコードミスなんじゃないの?”という結論に落ち着きそうです。10年以上前のソースなので、作成者すでにはいませんが。。。
気になるようならミニCOBOLプログラムを書いて検証されることをおすすめします。
(ALGOLでIF FALSE ブロックというテクニックがあり、通常は実行しないのですが、エラーのときだけGO TOでブロック内のラベルに飛んできてコードを実行するというのを思い出して、つい、余計なことを言ってしまいました)
回答3件
あなたの回答
tips
プレビュー