• ベストアンサー

COBOLのIFの入れ子について

COBOLを最近学び出してわからないのですが、IF文の中のIF文はピリオドが要るのですか?それとも最初のIF文の終わりに(フローチャ-トの交わるところ)までピリオドは打たないのですか?初歩的な質問ですいませんがお願いします。

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

  • ベストアンサー
  • arai163
  • ベストアンサー率22% (214/970)
回答No.1

COBOLでのIF分は最後にピリオドにつけます。 IF ○=□ (THENは省略) IF △=△ ☆☆ ELSE ★★ ELSE IF ×=□ ●● ELSE ■■. という具合です。 ピリオドが途中にはいると、センテンスがピリオドで完結していまいますので、ピリオド以降が違うセンテンスになってしまいます。

eden500
質問者

お礼

早速の回答感謝いたします。

その他の回答 (2)

  • rvr3958
  • ベストアンサー率33% (145/428)
回答No.3

IFの入れ子に限らず、第一階層目の命令の最後にピリオドを打てば良いのです。ただ、どの階層でも命令の範囲を明確にする為に、 END-PERFORM END-IF END-READ END-WRITE END-START など、終了宣言をしましょうね。 ex) IF SW-A = "1"   IF SW-B = "1"     ADD 1 TO CT-A   ELSE     ADD 2 TO CT-A   END-IF ELSE   ADD 3 TO CT-A END-IF.

eden500
質問者

お礼

わかりやすい回答感謝いたします

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.2

COBOL85以降、ENDIFってありますよね。 これを使用してIFの範囲を明示するとわかりやすいでしょう。 ずいぶんご無沙汰なんで文法忘れてます。(多少の間違いはお許しください) IF A=B THEN IF C=D THEN MOVE E TO F ENDIF ELSE MOVE G TO H ENDIF.

eden500
質問者

お礼

的確なアドバイスありがとうございます。

関連するQ&A

  • COBOLの論理演算子について

    コボルのIF文で IF 区分1 NOT = """ とした記述はコンパイルでエラーとなりました・・・  " は句読文字?なのでこのままでは使えないようなのですが。 どのようにしたら " を判断してくれるのでしょうか?

  • COBOL

    全商情報処理検定の2級プログラミングのCOBOLを勉強しています。模擬問題を多く解いているのですが全く理解することができません・・・。最初に何かを初期化するのは分かるんですが、何を初期化すればよいのでしょうか?また、PERFORM文がありますが何を繰り返さなければならないのか分からないんです。初期化・PERFORMにしてもどこを見れば良いのでしょうか?やっぱり入力形式・出力形式・処理条件を見て判断するのでしょうか? 質問を押し付けるみたいになって申し訳ないんですが、分かる方いらっしゃいましたら教えてくれないでしょうか。お願いします。

  • if文の処理について

    お世話になります。 switch文の中に、 「もし3桁目があれば、計算(カウント)し、 なかったら計算しない」 というif文を作りたいと思っています。 しかし、処理の仕方が全くわかりません。 初歩的な質問なのですが、お力添え頂けないでしょうか? よろしくお願い致します。

    • ベストアンサー
    • PHP
  • COBOLでのBIT操作

    質問です。 COBOL(COBOL85)でBITを扱うことはできるのでしょうか? 例えば、PL/IではBIT属性があり DCL xxx BIT(n) のような定義ができますが、 COBOLでは、BIT属性の定義ができるのでしょうか? また、合わせてCOBOL2002(?)では、 上記のようなことができるのでしょうか? COBOL2002のマニュアル本で、 xxx PIC 1(m) BIT(n) の定義文をみたことがありますが。。。

  • COBOLのEVALUATE文

    COBOLのEVALUATE文について質問です。 EVALUATE文で 10 > A > 20 という条件を書く場合どういう書き方をすればよろしいのでしょうか?? すみませんが、宜しくお願いします。

  • CシェルとCOBOLについて

    初めて質問させて頂きます。 初心者の為、あまりうまく質問が出来るかどうかわかりませんが宜しくお願い致します。 今、 CシェルからCOBOLを呼び 呼ばれたCOBOLの内部で処理をしています。 そこで、 COBOLの内部で処理した値を呼び元のシェルに返すことは 出来るのでしょうか? 返す項目は、複数あり数値項目、文字項目両方あります。 プログラムのほうもあまり詳しくはありませんので、 初歩的な質問かも知れませが、 何方かご教授願いませんでしょうか。

  • COBOL エンドフラグについて

    非常に漠然とした質問で申し訳ないのですが、 COBOLのエンドフラグとは何ですか?? エンドフラグ=‘1'と使われているのですが、意味が分かりません。 初歩的、漠然としてますが、よろしくお願いいたします。

  • COBOL

    こんにちわ。COBOLプログラムの解析をしています。 現状不可解な問題に直面しています。 IF A=189 AND B=200 or 201 or 202 プログラム内に上記のような判定文があります。 プログラムを実行するとこの判定分が真になる場合があります。 真になった際の変数A及び変数Bの中身を見てると以下の2通りでした。 (1)A=189 B = 200 (2)A= 299 B= 202 (1)は正しいと思いますが、(2)の場合に真になるということがありえるのでしょうか? いや実際に、なったのですがどういう原因が考えられるしょうか? 注:会社で使用しているプログラムの為本文は出せません。

  • COBOLから呼ばれる時

    COBOLプログラムから呼び出され、ファイルのレコードを一行読んでレコードの内容を返すというcサブルーチンを作っているのですが、COBOL←→c間でのインタフェースの扱いかたがよくわからなくて困っています。(ちなみにこのモジュールはcからも呼ばれる事がある) COBOLはコピー句(test001.cbl, test002.cbl)に値を入れて、cサブルーチンにそれを渡しています。 テストはCOBOL85を使用してるので、cサブルーチンの中のデータを見ることができません。なので、返ってくるコピー句の中身を見るのですが、とにかく値が設定されてかえってこないのです。ただ単にロジックのバグと言う可能性もあるけど(^^; 私はインタフェース環境の事がまだ良く解っていないので、今回こちらに質問した次第です。経験者の方がいましたら、どうかおしえてください。 あ、それからCOBOLから渡される値は、c側では全てchar型で受け取らなければいけないような話しを聞いたのですが、本当でしょうか? もう一つ。 コピー句の中で「F-CODE PIC X(2)」のようにハイフンがあるのですが、cではハイフンが使えないからダメなんでしょうか? たくさん質問してしまいましたが、どうかよろしく。 /COBOL側/ -------------------------------------------------- CALL 'TEST1' USING BY VALUE TEST001 TEST002. -------------------------------------------------- /cサブルーチン側/ -------------------------------------------------- int TEST1(test001, test002) char *test001; char *test002; {     ・     ・     ・ return (0); } --------------------------------------------------

  • ExcelでIF文などを使いこなしたいのですが・・

    Excelのセルの中にIF文などを埋め込んだりする処理を 何というのでしょうか? Excelをよく使うのですが、SUM関数などしか知らない為、 セルにIF文を埋め込む処理をもっと覚えたいと思うのですが どういう本を買えばいいのか分かりません・・。 Excelの関数の本でしょうか? Excelの関数の本については初歩的な本をもってるのですが、 関数ウィザード?を使ったものしか載ってなくて、 IF文などについては全く載っていません・・。 マクロ?とかいうものについて書かれた本を 買えばいいのでしょうか? それから、IF文等は、Excelだけではなく、Wordも使えるのでしょうか? 使えるとしたら、文法は全く一緒でいいのでしょうか?