COBOL言語で出力ファイルに書き出すには「WRITE文」で! | 用語辞典
COBOL(コボル)言語の予約語WRITEを使った命令文の書き方とは
COBOL(コボル)言語のWRITE文とは?
COBOL(コボル)におけるWRITE文は、出力ファイルにレコードを書き込む場合に使用する命令文です。出力ファイルへ書き込むときは、他のプログラミング言語同様に、事前に書き込むファイルを指定したり、ファイルをオープンしておく必要があります。
本記事では、WRITE文の基本的な使い方やルール、注意点などをご紹介します。
書き方1-1:(入出力に関するセクションを指定する)
ファイルにレコードを書きこむ前に、ファイルの情報を設定しておく必要があります。
「ENVIRONMENT DIVISION」に以下を記述します。
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT [ファイル変数] ASSIGN TO ['ファイル名']
ORGANIZATION IS LINE SEQUENTIAL.
まず、「INPUT-OUTPUT SECTION」でファイル入出力のセクションを指定し、ファイルの情報を設定するために「FILE-CONTROL」を記述します。
次にSELECT文でファイル書き込み時に指定する、ファイルの変数を定義して、ASSIGIN TOの後にファイル名を指定します。
書き方1-2:(ファイルに関するセクションを指定する)
実際に書き込むファイルと、書き込み時に使用するレコードを設定します。
「DATA DIVISION」に以下を記述します。
FILE SECTION.
FD [ファイル変数].
[ファイルレコード変数].
書き込むファイルを指定するために「FILE SECTION」を記述し、FD(ファイルディスクリプション)にSELECT文で指定したファイル変数を指定します。
次に書き込むファイルレコード用の変数を定義しておきます。
書き方1-3:(書き込み処理)
「MAIN SECTION」で実際にレコードを書き込む処理を記述します。
OPEN OUTPUT [ファイル変数].
WRITE [出力レコード].
CLOSE [ファイル変数].
まず「OPEN OUTPUT」でファイル変数を指定して、ファイルをオープンします。
次にWRITE文で、ファイルレコードとして定義した変数を指定し、実際にファイルにレコードを書き込みます。
レコードの書き込みが完了したら、必ずCLOSE文でファイル変数を指定して、ファイルを閉じます。
書き方1-1~1-3を踏まえて、実際にファイルに書き込む処理の簡単なサンプルを、以下に紹介します。
使用例:
実行結果:
紹介したサンプルでは、書き込み用ファイルにtest.txtを指定して、ファイル用の変数に10を転記し、WRITE文で書き込んでいます。
このプログラムを実行すると、実行プログラムと同じディレクトリにtest.txtが作成され、書き込んだレコード内容が、ファイルに記載されていることがわかります。
WRITE文のCOBOL(コボル)言語における基本事項やルールについて
- WRITEの後の出力レコード名は、データ部で定義したレコード名でなければいけません。
- WRITEの後の出力レコード名は、各要素間や空白、改行などは自由に設定できます 。
- WRITE文実行後は、必ずCLOSE文でファイルを閉じます。
COBOL(コボル)言語のWRITE文を扱う上での注意点
COBOLにおけるファイル入出力は、前述したようにWRITE文で書き込む前に、さまざまな準備が必要です。
CやJavaなどのプログラミング言語と異なる点として、ファイルにレコードを書き込むときは、必ずファイルディスクリプションで定義したファイル変数を、指定しなければいけません。
例えば、WRITE文で指定したファイル変数が、ファイルディスクリプションで指定したファイル変数ではなく、データ項目を指定してしまった場合、どうなってしまうのでしょうか?
以下にWRITE文で、ファイルレコード書き込み時に、通常のデータ項目を指定した場合のサンプルを紹介します。
実行結果:
WRITE文は、ファイルディスクリプションで定義した、ファイル変数のみ書き込み可能なため、コンパイルエラーが出力されます。
特に初心者の方は、COBOLの規約を遵守しないと、思わぬところでエラーとなり、戸惑ってしまうこともありますので注意しましょう。
WRITE文を使ったCOBOL(コボル)プログラムの活用法
ファイルにレコードを書き込むときに必須のWRITE文ですが、連続してデータを書き込む場合は、繰り返し処理を行うPERFORM文の中で、WRITE文を実行すると便利です。
以下にPERFORM文を使用したループの中で、WRITE文で連続してデータを書き込むサンプルを紹介します。
- *> WRITE_SAMPLE03
- IDENTIFICATION DIVISION.
- PROGRAM-ID. WRITE_SAMPLE03.
- ENVIRONMENT DIVISION.
- *>入出力に関するセクション
- INPUT-OUTPUT SECTION.
- FILE-CONTROL.
- *>SELECT文でファイル定数とASSIGN TOでファイル名を設定する
- SELECT TEST-FILE ASSIGN TO 'test.txt'
- *>データの区切りを改行にしたい場合は以下を設定する
- ORGANIZATION IS LINE SEQUENTIAL.
- *>文字列と数字を扱うデータ項目を定義する
- DATA DIVISION.
- FILE SECTION.
- *>FDはファイルディスクリプション
- FD TEST-FILE.
- 01 OUT-FILE-REC PIC 99.
- WORKING-STORAGE SECTION.
- *>変数を定義し、0で初期化する
- 01 LINE-COUNT PIC 99 VALUE 0.
- PROCEDURE DIVISION.
- MAIN SECTION.
- *>ファイルをアウトプット用にオープンする
- OPEN OUTPUT TEST-FILE.
- *>5回ループする
- PERFORM 5 TIMES
- *>LINE-COUNTの値を1ずつ増やす
- ADD 1 TO LINE-COUNT
- *>ファイル出力用変数に転記する
- MOVE LINE-COUNT TO OUT-FILE-REC
- *>ファイルに書き込む
- WRITE OUT-FILE-REC
- DISPLAY OUT-FILE-REC
- END-PERFORM.
- *>ファイルをクローズする
- CLOSE TEST-FILE.
- STOP RUN.
実行結果:
紹介したサンプルではPERFORM 5 TIMES~END-PERFORMの中で5回繰り返し処理を行い、値を1ずつ増やしてWRITE文でレコードを書き込んでいます。
PERFORM文が終了したら、必ずCLOSE文でファイルを閉じます。
作成されたファイルを確認すると、意図したとおり値が1~5まで書き込まれていることがわかります。
実際に複雑なデータをファイルに書き込む場合は、STRING文の文字列結合処理なども駆使して行う必要があり、応用力が求められます。
この記事を読んだ人は、こちらの記事も読んでいます
あなたのCOBOL技術を活かしませんか?
COBOL入門のカテゴリー
1. 優良社員が多数在籍しています
2. 即日派遣、又は請負います
3. 安心価格で請負います
4. 同時、協力会社募集中です
1. 正社員
2. 契約社員
3. 個人事業主
などの 求人情報 が閲覧できます。
目指せ!COBOLダントツ一番企業。
創業当初の話や理念が閲覧できます。
応募条件
※2020年5月31日を以って、締切りました。
18歳~28歳の方。
正社員採用において、北川社長の著書『祈り方が9割』を読んで感想文を事前に提出すると、無条件で最終面接まで進むことができます。
COBOLとは、どのようなプログラミング言語なのか、初心者にもわかりやすく、文法の例をあげて解説してます。
COBOL入門の人気記事
- COBOL言語とは?プログラムの書き方やルールを解説!|基礎ガイド
- 【COBOL言語】条件分岐処理の代名詞「IF文」について知ろう|用語辞典
- COBOL言語の「MOVE文」とは?転記のルールをご紹介します|用語辞典
- COBOL言語の「STRING文」とは?文字連結の基礎知識と注意点|用語辞典
- 多枝分岐ってなに?COBOL言語の「EVALUATE文」を知ろう!|用語辞典
- COBOL言語の「PICTURE句」とは?基本事項を解説します!|用語辞典
- COBOL言語で計算処理をするなら「COMPUTE文」|用語辞典
- COBOL言語の「REDEFINES句」とは?使い方を確認しよう!|用語辞典
- 覚えておけば楽ができる?COBOL言語の「COPY文」の使い方|用語辞典
- COBOL言語の文字列操作のパターンを理解しよう!|基礎ガイド
- COBOL言語の初期化処理に重宝する「INITIALIZE文」とは?|用語辞典
- COBOL言語の「LOW-VALUE」の使い方について理解しよう!|基礎ガイド
- COBOL言語の「OCCURS句」について知ろう!学ぶべき基本とは|用語辞典
- COBOL言語初心者も安心! 難解「CALL文」をスッキリ解決|用語辞典
- COBOL言語の「PERFORM文」とは。実行制御について解説!|用語辞典
- COBOL言語の繰り返し処理のパターンを理解しよう!|基礎ガイド
- COBOL言語の「定数」の種類と使い方について理解しよう!|用語辞典
- COBOLのDBアクセスパターンを学ぼう!「FETCH」|応用ガイド
- COBOL言語の「DISPLAY文」は、ディスプレイ出力の為にある|用語辞典
- COBOL言語の「VARYING句」は便利?使用方法を学びましょう|用語辞典