• ベストアンサー

初歩的な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

  • if文の使い方について

    if文でaの値とbの値とcの値が一緒なら次の処理を行うものを作成したいのですが。 if($a==$b==$c){ 行いたい処理 }else{ その他の処理 } と書いたのですが、ダメで if($a=$b=$c){ 行いたい処理 }else{ その他の処理 } と書いたのですが、これもダメでした。 if($a==$b) {  if($b==$c)  {    処理   }else{     その他の処理   } }else{ その他の処理 } と書かいたら実行されたのですが、このように分けて書かないとダメなのですか? いいやり方がありましたら教えてください

    • ベストアンサー
    • PHP
  • IF文

    (A)IF 条件 THEN 単純実行文1 ELSE 単純実行文2 (B)IF 条件 THEN 実行処理1 ELSE 実行処理2 Aの文では単純実行分なのになぜ改行すると(B)の文みたいに実行処理になるのでしょうか? 実行処理と単純実行文の違いを教えてください

  • 条件分岐(if)について

    条件分岐(if)についてお聞きしたことがあります。 例えば if($a == 'A' || $a == 'B'){ 処理 }else if($a == 'C' || $a == 'D' || $a == 'E'){ 処理 }............... といった条件分岐があったとて、お聞きしたいことが2点あります。 ・条件分岐この後も数十個続いたとします。その場合もelse ifで一つ一つ 条件を書かなければならないのでしょうか? ・条件式if($a == 'A' || $a == 'B'....)が長くなる場合プログラムが見にくくなるので 別途に条件式を書いておいてif文の所では($a == ◯)といったように簡潔に書くことは できないのでしょうか? 宜しくお願いします。

    • ベストアンサー
    • PHP
  • if文の演算子について

    if文の演算子について int a=0,b=1,c=1,d=1; if(a==1 && b==1 && c==1 ||d==1){ Printf("yes"); }else{ Printf("no"); } if((a==1 && b==1 && c==1 )||d==1){ Printf("yes2"); }else{ Printf("no2"); } } 上記のif文で出力結果が異なります。 if((a==1 && b==1 && c==1 )||d==1)の方はa=1、b=1、c=1の時もしくはd=1の時と 理解できるのですが、 if(a==1 && b==1 && c==1 ||d==1)の方は、どういう条件の時が当てはまるのでしょうか?

  • if文の初歩的な質問

    if文の初歩的な質問なのですが、 if (a==1) c=10; else if (a==2) c=20; else if (a==3) c=30; System.out.println(c); この文のelseはなぜいるのでしょうか?どちらでも良いのでしょうか? 基本のルールとしては、elseが付くのでしょうか?

    • ベストアンサー
    • Java
  • if文について教えてください

     C++でプログラムを作っています。  b0~b3どれかが1の時という条件指定と、さらにその上でb0~b3どれも1でなく、かつどれも同じ値でないという条件指定はどのように記述すればよいのですか?  ちなみに私は次の様にしたのですが、ビルドすると「error C2181: else 文が if と一致しません。」となってしまいました。 if((b[0]=1)||(b[1]=1)||(b[2]=1)||(b[3]=1));{ c[1]=c[1]+1; } else(b[0]!=b[1]!=b[2]!=b[3]!=1){   c[2]=c[2]+1;          }  もう一つこちらでもダメでした。 if((b[0]=1)||(b[1]=1)||(b[2]=1)||(b[3]=1));{ c[1]=c[1]+1; } else(b[0]!=b[1]!=b[2]!=b[3]){   c[2]=c[2]+1;          }

  • if文の書き方

    if文の書き方 if(!$a){$b=1;}の内容で、条件を右に持ってくる書き方だと$b=1 if(!$a);だと思いますが、 if(!$a){$b=1;}else{$b=2;}の内容で、条件を右に持ってくる書き方はできないでしょうか?

    • ベストアンサー
    • Perl
  • シェルスクリプト(if文)

    bashにてシェルスクリプトを作成しています。 XXXX_111122222333_YYYYMMDD 111122222333 といった2パターンのファイル名から、「111122222333」の部分を取得したいのですが、if文の条件式で悩んでいます。 if [ expr length ${p9} -gt 13 ] then a=`echo $p9|cut -c 6-9` b=`echo $p9|cut -c 10-14` c=`echo $p9|cut -c 15-18` else a=`echo $p9|cut -c 1-4` b=`echo $p9|cut -c 5-9` c=`echo $p9|cut -c 10-13` fi これで実行すると too many arguments というエラーが出てしまいます。(結果も正しくありません) 基本的な部分が理解できていないかと思うのですが、宜しくお願いいたします。

  • エクセルのIF式

    エクセルのIF式について教えてください。 =IF(A1=B1=C1,"OK","ERROR") という式で、A1、B1、C1に同じ値が入っていても「ERROR」が表示されます。 IF式の条件の部分には「=」を3つ以上入れていけないという法則か何かあるのでしょうか。 できれば参考URLと共に教えていただけると助かります。

  • if文の中に

    例えば if(a<0){ if(a<b) c=a+b } ように if文の中にif文を入れる事はできるのですか? また、if-else文はif() →else if() →elseと続きますが、 これ以降(4つ以上の選択肢) に繋げたい時はどうすればいいですか? 教えて下さい!

専門家に質問してみよう