- ベストアンサー
初歩的な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)をしてほしいのです。 どのように書けば教えてください
- kaoface
- お礼率63% (14/22)
- その他(プログラミング・開発)
- 回答数4
- ありがとう数4
- みんなの回答 (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をしてくれませんでした
関連する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)の方は、どういう条件の時が当てはまるのでしょうか?
- ベストアンサー
- C・C++・C#
- 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; }
- ベストアンサー
- C・C++・C#
- シェルスクリプト(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 というエラーが出てしまいます。(結果も正しくありません) 基本的な部分が理解できていないかと思うのですが、宜しくお願いいたします。
- ベストアンサー
- Solaris系OS
お礼
回答ありがとうございます いろいろ試してみたのですがうまくいかず 最終的にはその手でいこうと思います。 できれば避けたいのですが、、、。 やはりその手しかないのでしょうか、、。