- ベストアンサー
COBOL
全商情報処理検定の2級プログラミングのCOBOLを勉強しています。模擬問題を多く解いているのですが全く理解することができません・・・。最初に何かを初期化するのは分かるんですが、何を初期化すればよいのでしょうか?また、PERFORM文がありますが何を繰り返さなければならないのか分からないんです。初期化・PERFORMにしてもどこを見れば良いのでしょうか?やっぱり入力形式・出力形式・処理条件を見て判断するのでしょうか? 質問を押し付けるみたいになって申し訳ないんですが、分かる方いらっしゃいましたら教えてくれないでしょうか。お願いします。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
このままでは話が進まないので、下のホームページを参考にしてみて! PERFORMの説明や、情報処理の過去問題が参考になるはずです。過去問で分からないところがあれば聞いてください。
その他の回答 (6)
- s104kazu
- ベストアンサー率22% (11/50)
SW???
- s104kazu
- ベストアンサー率22% (11/50)
この問題からいくと、 PERFORMは データが終了するまで処理を続ける繰り返しのPERFORMです。 データの最後に入っているデータ(ZEROかな?)が終了条件です。 もしかしてPERFORMが2つ3つありますか?
補足
はい。何個かSWがあります。 あと関係があればなんですがSWがプログラムの中にあります(スイッチだと思いますけど・・・)
- s104kazu
- ベストアンサー率22% (11/50)
申請件数を集計するのなら レコードの中に権利名などが入っているのなら、その権利名が変わるまでPERFORMで繰り返し集計するのかな? 処理条件はどんなものでしたか?
補足
処理条件 1.入力データを読み、工業所有権に関するデータのみ印字する。 2.権利コード、工業所有権の権利名はそれぞれ第3図のようなテーブルCOD-T、KEN-Tに記憶されている。 この間にCOD-TとKEN-Tのテーブルの図があります。 3.格権利別の申請件数、申請件数合計は第4図のテーブルSU-Tに集計する。工業所有権には4種類あり、工業所有権以外の権利は「その他の権利」に集計する。なお、すべてのテーブルは添字で対応している。 この間にSU-Tのテーブルの図があります。 4.入力データが終了したら、権利名と申請件数をを印字する。最後に、申請件数合計を印字し、処理を終わる。 5.データにエラーはないものとする。 という処理条件です。
- Yeti21
- ベストアンサー率47% (396/830)
COBOLも実際に稼動するコンピュータメーカーやバージョンによって 細かいところは変わってきます。 ただ、初期化に関してはやっておく方が無難です。 WORKING-STORAGE SECTIONで定義した項目(変数)やファイルへの出力に 使用するレコードの項目は実際に使用する前に初期化しておくべきです。 これは、プログラムの実行時にコンピュータ上ではその項目用に領域を 確保するだけで、その領域にどのような値が入っているか保証されない 場合があるためです。 そのため、プログラム中で明示的にスペースやゼロで初期化おくということです。 PERFORMに関しては、変数の値を変化させながら繰り返し同じ手続きを行う場合や、 ロジックの何箇所かで同じ手続きを行う場合に長々と同じ命令を繰り返し 記述するより、1回記述するだけでそれをPERFORMで呼び出す方が効率的で 見やすいし、メンテナンスもしやすいというメリットがあります。
お礼
くわしい説明ありがとうございました!参考になりました^^
- s104kazu
- ベストアンサー率22% (11/50)
変数や配列は最初に初期化したほうがいいです。 PERFORMは色々な使いかがあります。 もう少し具体的に、どんな問題をしましたか?
補足
一連のプログラムが書かれていて、たいていの問題はPROCEDUREからSTOP RUN.まで書かれています。そしてそのプログラムの流れの中で5つ空白があってそこに入れるプログラムを記入するんです。 例:実際の問題) ある企業の製品開発課では、社員の研究による工業所有権等の申請に関して、権利別に申請件数を集計している。第1図の申請データを読み、処理条件にしたがって第2図のような工業所有権等申請一覧表を印字するプログラムの空欄をうめなさい。 という問題文があって第1図(入力形式)、第2図(出力形式)、処理条件(処理条件と第3図や第4図としてテーブルがある)の3つが問題文といっしょにあります。 ※参考(↑の問題:実教出版情報処理検定試験模擬問題第2回) どうでしょうか??
- legacy_bp5_20r
- ベストアンサー率23% (400/1688)
COBOLを書けないけど修正程度はやってます。^^; DataDivisionでフィールド定義掛けます。わざわざ初期化なんてしないよ。フィールドタイプがXならブランク9ならゼロが再しょっから充当されています。 あえてPerfomで初期化するとしたらワークフィルドですね。たとえば集計値をため込むフィールドなら小計を出力したらクリアします。それを見やすくするためにその場に書かないでサブルーチンに飛ばして記述するとか。。。 目的・条件・結果、を良く把握してプログラムを見れば、知らないプログラム言語でも読解は出来るハズはので頑張って下さい。
お礼
説明ありがとうございました!書いてくださったこと無駄にはしません。参考にさせていただきます^^
補足
お答えありがとうございます。しかし、フィールドタイプやサブルーチン?という言葉もそうなんですが、そういうところまではいってない範囲なんです。全商の2級なんで高校生ぐらいのレベルです・・・。 学校でもまず初期化をするよう言われているんです。ひとつの参考として受け取っておきます。本当にありがとうございます。COBOLを実際に書いている人いませんか?
お礼
何から何まで本当にありがとうございます!助かりました。参考にさせていただきます^^