• ベストアンサー

COBOL

COBOLでファイルが終わるまで繰り返す命令はどう書くのですか。 PERFORMを使うと思うのですが分かりません。 AT ENDが何処の来るのかも分かりません教えてください。

  • raul7
  • お礼率22% (52/228)

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

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

一つの例です。 MOVE SPACE  TO FLG-END. PERFORM UNTIL FLG-END = "END"   READ A-FILE    AT END     MOVE "END"  TO FLG-END   END-READ END-PERFORM. FLG-ENDが"END"になるまでA-FILEの読込を行います。 FLG-ENDはファイル終了を検知した時に"END"がセットされます。 前回もあなたのCOBOLの質問に対して回答させていただいた者ですが、質問しっぱなしは宜しくないと思いますよ。前回の質問疑問が片付いたのなら締め切りましょうね。

raul7
質問者

お礼

回答ありがとう御座いました。 解決しました。

その他の回答 (1)

  • tyururun
  • ベストアンサー率20% (12/58)
回答No.1

大昔の記憶なのですが (-_-;) PERFORM AT END-FILE(DATA?) みたいなかき方したような・・・

raul7
質問者

お礼

ありがとう御座いました。

関連するQ&A

  • COBOL初心者です。

    COBOL初心者です。 プログラミング自体初めて1か月です。 いかんせん本当に初心者なので どう質問したらイイのか分からないんですがヨロシクです。 実行したらなんか固まってしまう?んです。 記述がおかしいんでしょうけど、何がおかしいのか分からなくて… どう書けばイイのか分からないのでソースをそのまま貼り付けます。 IDENTIFICATION DIVISION. PROGRAM-ID. 000. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT IN-FILE ASSIGN TO "x.txt". DATA DIVISION. FILE SECTION. FD IN-FILE. 01 IN-REC. 03 X PIC X(10). WORKING STORAGE SECTION. 01 WORK. 03 WK-X PIC X(10). 01 END-FLAG PIC 9 VALUE 0. PROCEDURE DIVISION. MAIN-SEC SECTION. MAIN-010. OPEN INPUT IN-FILE. PERFORM UNTIL END-FLAG = 1 READ IN-FILE AT END MOVE 1 TO END-FLAG NOT AT END MOVE X TO WK-X DISPLAY WK-X END-PERFORM. CLOSE IN-FILE. STOP RUN. MAIN-SEC-END. EXIT. なんしか、"x.txt"を読み込みたいんです。 勉強中なのでとりあえず読み込みたいデータはちっちゃくしました。 うーんどう伝えたらイイんでしょう~ よろしくお願いします。

  • COBOL

    こんにちわ、IT企業の新卒ではありませんが研修生です。 COBOLの勉強をしています。以下の内容についてご質問させていただきます。 (1)データフォーマットがOCCURS(300 TIMES)のデータ項目に40 TIMESデータを格納し、 41個目には改行コード(ODOA)が入っているプログラムがあるのですが、 実際に41個目をdisplayで見てみると空白が入っていました。ファイルの方には確かに改行コードがちゃんと入っています。 これはどうしてこうなるのでしょうか? (2)SEARCHに関して SEARCH TBL AT END 処理1 というようなプログラムがあります。 TBLは 01 TBL 02 DATA OCCURES 100 INDEXED BY NO     03・・・ 03・・・ というようなフォーマットになってます。 このときAT ENDというのは例えば(1)のときのようなデータとしては 100TIMES入れれるが、40TIMESしか格納しない場合は41個目にAT ENDになるのでしょうか? それとも100回全部入れ終わった時のみAT ENDになるのでしょうか? お手数ですが以上よろしくお願い致します。

  • cobolのコントロールブレイク

    趣味の一環としてcobolのファイル入出力プログラムを勉強しているのですが、 リング構造を利用したコントロールブレイク機能の実装で躓いてしまいました。 知恵をお貸しいただければ幸いです。 ソースコードここから IDENTIFICATION DIVISION. PROGRAM-ID. BREAKDV1. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT INF ASSIGN TO "C:\cobol\sample.cbl" STATUS FST. SELECT OUF ASSIGN TO "C:\cobol\data.txt". DATA DIVISION. FILE SECTION. FD INF. 01 F1R PIC X(72). WORKING-STORAGE SECTION. 01 INKEY PIC 9(01). 01 SAVKEY PIC 9(01). 01 FST PIC X(02). PROCEDURE DIVISION. ACCEPT INF OPEN INPUT INF OUTPUT OUF PERFORM 読込処理 THRU 読込出口 PERFORM UNTIL INKEY = HIGH-VALUE MOVE SAVKEY TO INKEY PERFORM UNTIL INKEY NOT = SAVKEY PERFORM 同一処理 THRU 同一出口 PERFORM 読込処理 THRU 読込出口 END-PERFORM PERFORM 合計処理 THRU 合計出口 END-PERFORM PERFORM 総計処理 THRU 総計出口 CLOSE INF OUF STOP RUN. 同一処理. DISPLAY "SAME" WRITE F1R DISPLAY F1R 同一出口. EXIT. 合計処理. DISPLAY "TOTAL" 合計出口. EXIT. 総計処理. DISPLAY "END" 総計出口. EXIT. 読込処理. PERFORM UNTIL FST NOT "00" READ INF END MOVE HIGH-VALUE TO INKEY NOT END CONTINUE END-READ END-PERFORM 読込出口. EXIT. ソースコードここまで(処理内容は仮のものです) 参考文献ではこのような組み方でよいはずなのですが、コンパイルした際に BREAKDV1.cbl:19: Error: syntax error, unexpected "end of file" とエラーが発生してしまいました。 このエラーを解消する方法をお教え下さい。 開発環境: Windows7SP1+MinGW32、サクラエディタ

  • COBOL

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

  • COBOLで文字変数Aと絶対に一致しない特殊値は?

    COBOLでプログラミングをしています。ある変数AとBがあり、どちらも領域はPIC X(1)です。 この変数Aを、いかなるときでも変数Bと一致させたくないとき、Bに入れる「END OF FILE」のような特殊な値って無いのでしょうか? そのような値が存在するならば、AかBにその特殊な値を入れておけばいいと思うのですが、 もし無いとすれば、以下のような処理をスマートにCOBOLで作るには、どのように作るのが一般的ですか? PERFORM文を用いて終了条件がA=Bのとき、 最初の処理では必ずPERFORMの中の処理を行い、 2回目からは終了条件で実行するかどうかを判定するような処理 よろしくお願いします。

  • COBOL

    COBOLで INIT-SEC. OPEN INPUT IN-FILE. OUTPUT OUT-FILE. DISPLAY " 学番 名前     国 数 英 合計". MOVE ZERO TO CTR-IN CTR-OUT. PERFORM READ-SEC. の部分に「開始メッセージを表示する」を追加したいのですがプログラムソースを教えてください。

  • コボルのプログラム教えてください!

    コボルのPERFORM構文がわかりません。教えてください。 どのサイトの解説を見ても、本を見てもさっぱり言ってる内容が理解できません。この構文だけは・・・。 手続き1とか何のことかわかりません。 ifとgotoを使った繰り返しのプログラムをPERFORMで書き直すことを目標としています。例題などをまじえてわかりやすく解説をしてくれませんか?パターンが5個くらいありましたが、すべてにおいての解説をよろしくお願いします!

  • COBOLのPERFORM文

    COBOL初心者です。 COBOL97使用で、 02 VAL OCCURS 15 TIMES PIC 9(4). と定義して、 PERFORM TEST BEFORE VARYING COUNTER FROM 1 BY 1 UNTIL COUNTER > 15 のPERFORM文を書きました。 エラーもなく起動したのですが、 15回過ぎても永遠処理が終わりません。 無限ループというのでしょうか? 15回目でバチッと終わるにはどういたらよいでしょうか? どなたかお助け下さい。

  • COBOLで言う外PERFORM

    JavaにCOBOLで言う、所謂「外PERFORM」と言うのはあるのでしょうか? classの事ですか? Javaは基礎しか触っておらず、調べてみても理解することが出来ませんでした。 出来れば、使い方も一緒に教えていただけると嬉しいです。

    • ベストアンサー
    • Java
  • コボル!!!!!

    今コボルを習い始めています! 分からないことがあったので教えてください! IF (フラグ-終了-A   =   "END") AND  (フラグ-終了-B   =   "END") MOVE "END" TO フラグ-終了 END IF. とはどう言う意味ですか? 後、 COMPUTE    A  =  B  -  C どの様な動きをしているのか教えてください、よろしくお願いします。

専門家に質問してみよう