• ベストアンサー

初歩的なIF文がわかりません

COBOLでプログラミングをしているのですが 参考書を見ても理解できない部分があります。 IF 条件式-1    処理A    IF 条件式-2       処理B    ELSE       処理C(1)    END-IF ELSE    処理C(2) END-IF. という処理をしたいのですが、 処理C(1)と処理C(2)は全く同じ処理なのですが 同じことを2度書くのではなく 処理C(1)に当てはまる場合は処理C(2)をしてほしいのです。 どのように書けば教えてください

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

  • ベストアンサー
  • nda23
  • ベストアンサー率54% (777/1415)
回答No.2

PERFORM を使って処理Cを別パラグラフにするのはイヤですか? ずっと昔はEND-IF文がなかったので、こういう書き方が普通でした。 IF 条件1   処理A   IF 条件2     処理B   ELSE     PERFORM 処理C   END-IF ELSE   PERFORM 処理C END-IF.

kaoface
質問者

お礼

回答ありがとうございます いろいろ試してみたのですがうまくいかず 最終的にはその手でいこうと思います。 できれば避けたいのですが、、、。 やはりその手しかないのでしょうか、、。

その他の回答 (3)

  • AKARI0418
  • ベストアンサー率67% (112/166)
回答No.4

最近COBOLもめっきりやっていませんから自身がありませんが・・・。 EVALUATE TRUE WHEN 条件式-1 AND 条件式-2 処理A 処理B WHEN 条件式-1 AND NOT 条件式-2 処理A 処理C WHEN OTHER 処理C END-EVALUATE

kaoface
質問者

お礼

回答ありがとうございます。 具体的に申し上げますと、 処理Cは100行近くある処理で、 その処理を2度書くことをせずにプログラムを作りたかったのです。 EVALUATE式で条件をANDで2つ書けることを知りませんでした。 今後プログラムを作っていく上で勉強になりました。 ありがとうございます。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.3

状況からして PERFORM で飛ばすか条件式を複数回書くかしかないんじゃないかな. PERFORM が現実的だと思う.

kaoface
質問者

お礼

回答ありがとうございます。 PERFORMが一番いいとのことで、 PERFORMで飛ばすことにしました。 思い通りにプログラム動いてくれました!

  • AKARI0418
  • ベストアンサー率67% (112/166)
回答No.1

COBOLは IF文に多言語で言うところのELSEIFがないためにそういう書き方になってしまいます。 つまりIF文での分岐は真か偽の二つにしか分岐できないということです。 複数の分岐を作成したい場合は IF文の中にIF文を入れ子にするか。 EVALUATE構文を使用します。 EVALUATE TRUE WHEN 条件式-1 処理A WHEN 条件式-2 処理B WHEN OTHER 処理C END-EVALUATE といった感じになります。

kaoface
質問者

お礼

回答ありがとうございます。 EVALUATEの存在を忘れてました^^; 実際にそのようにプログラムを組んでみたのですが 条件式-1に当てはまり処理Aをして 条件式-2に当てはまらない場合は 処理Cをしてほしいのですが 処理Cをしてくれませんでした

関連するQ&A