- ベストアンサー
初歩的な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)をしてほしいのです。 どのように書けば教えてください
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
PERFORM を使って処理Cを別パラグラフにするのはイヤですか? ずっと昔はEND-IF文がなかったので、こういう書き方が普通でした。 IF 条件1 処理A IF 条件2 処理B ELSE PERFORM 処理C END-IF ELSE PERFORM 処理C END-IF.
その他の回答 (3)
- AKARI0418
- ベストアンサー率67% (112/166)
最近COBOLもめっきりやっていませんから自身がありませんが・・・。 EVALUATE TRUE WHEN 条件式-1 AND 条件式-2 処理A 処理B WHEN 条件式-1 AND NOT 条件式-2 処理A 処理C WHEN OTHER 処理C END-EVALUATE
お礼
回答ありがとうございます。 具体的に申し上げますと、 処理Cは100行近くある処理で、 その処理を2度書くことをせずにプログラムを作りたかったのです。 EVALUATE式で条件をANDで2つ書けることを知りませんでした。 今後プログラムを作っていく上で勉強になりました。 ありがとうございます。
- Tacosan
- ベストアンサー率23% (3656/15482)
状況からして PERFORM で飛ばすか条件式を複数回書くかしかないんじゃないかな. PERFORM が現実的だと思う.
お礼
回答ありがとうございます。 PERFORMが一番いいとのことで、 PERFORMで飛ばすことにしました。 思い通りにプログラム動いてくれました!
- AKARI0418
- ベストアンサー率67% (112/166)
COBOLは IF文に多言語で言うところのELSEIFがないためにそういう書き方になってしまいます。 つまりIF文での分岐は真か偽の二つにしか分岐できないということです。 複数の分岐を作成したい場合は IF文の中にIF文を入れ子にするか。 EVALUATE構文を使用します。 EVALUATE TRUE WHEN 条件式-1 処理A WHEN 条件式-2 処理B WHEN OTHER 処理C END-EVALUATE といった感じになります。
お礼
回答ありがとうございます。 EVALUATEの存在を忘れてました^^; 実際にそのようにプログラムを組んでみたのですが 条件式-1に当てはまり処理Aをして 条件式-2に当てはまらない場合は 処理Cをしてほしいのですが 処理Cをしてくれませんでした
お礼
回答ありがとうございます いろいろ試してみたのですがうまくいかず 最終的にはその手でいこうと思います。 できれば避けたいのですが、、、。 やはりその手しかないのでしょうか、、。