COBOL言語の「ORGANIZATION句」とファイル編成の関係とは | 用語辞典
COBOL(コボル)言語の予約語ORGANIZATIONによるファイル編成の指定とは
COBOL(コボル)言語のORGANIZATION句とは?
ORGANIZATION(英語)は、日本語に訳すると「組織体、団体、組合、協会」、「組織、構成、機構」、「労働組合化」という意味です。
COBOL(コボル)言語のORGANIZATION句には、プログラムで取り扱うファイル編成(ファイルの構成)を指定する機能があります。
ORGANIZATION句の形式
環境部でファイルの属性を定義する際に、SELECT句のあとにORGANIZATION句を記述することで、プログラムで取り扱うファイルの編成形式を明示的に指定することができます。
■書式
SELECT ファイル名 ASSIGN TO データ名 [ORGANIZATION IS ファイル編成]
■構文規則
<ファイル名>
プログラム中でオープン、クローズ、リード、ライトなどを行うときに指定するファイル名を記述します。
<データ名>
使用するファイルを指定します。環境変数などを使用したファイル識別子と、物理的なファイル名を指定することができます。
<ファイル編成>
使用するファイルの編成形式を、「SEQUENTIAL(順編成)」、「LINE SEQUENTIAL(行順編成)」、「RELATIVE(相対編成)」、「INDEXED(索引編成)」のいずれかで指定します。
■使用例
ORGANIZATION句を使用し、行順編成ファイルを読み込むプログラム例をご紹介します。
このプログラムは、「HINMEI.txt」という行順編成ファイル(テキストファイル)を読み込み、読み込んだ内容を画面に表示するプログラムです。
■実行結果
「HINMEI.txt」の内容が表示され、プログラムが終了しました。
ORGANIZATION句のCOBOL(コボル)言語における基本事項やルールについて
ORGANIZATION句は、プログラムで取り扱うファイルの編成形式を指定する句で、環境部の入出力節に記述します。
ORGANIZATION句は省略することができ、省略するとファイルの編成形式が順編成とみなされます。
COBOL言語で取り扱うことができるファイルは、順編成ファイル(行順編成ファイルを含む)、相対編成ファイル、索引編成ファイルの3種類です。
■順編成ファイル
順編成ファイルは、レコードを順番に読み書きする形式のファイルです。ファイルを読み込む場合、通常は先頭から順番にレコードを読み込み、書き込む場合はファイルの末尾にレコードを追加します。
ORGANIZATION句で順編成ファイルを指定する場合は、ファイル編成に「SEQUENTIAL」を記述し、行順編成ファイルを指定する場合は、ファイル編成に「LINE SEQUENTIAL」を記述します。
■相対編成ファイル
相対編成ファイルは、ファイル内のレコードに、レコード1、レコード2 のように、ファイル内の順序をつけたファイルです。相対編成ファイルは、シーケンシャルにアクセスすることも、ランダムにアクセスすることもできます。
ORGANIZATION句で相対編成ファイルを指定する場合は、ファイル編成に「RELATIVE」を記述します。
■索引編成ファイル
索引編成ファイルは、ファイル内の各レコードに主キー(索引)を付加した形式のファイルです。主キーは各レコードを識別するため、ユニークキーになっています。主キーを指定することによりランダムにアクセスすることも、シーケンシャルにアクセスすることもできます。
ORGANIZATION句で索引編成ファイルを指定する場合は、ファイル編成に「INDEXED」を記述します。
COBOL(コボル)言語のORGANIZATION句を使うときの注意点
ORGANIZATION句で指定したファイル編成と、実際のファイル編成形式が異なっている場合、プログラムの実行時に予期しない動作をすることがあります。プログラムでファイルを読み書きする場合は、ファイル編成形式に十分な注意をしてORGANIZATION句を指定してください。
ORGANIZATION句を使ったCOBOL(コボル)プログラムの活用方法
COBOL言語では、順編成ファイルと行順編成ファイルを取り扱う場合が多くあります。
「COBOL(コボル)言語のORGANIZATION句とは?」でご紹介したサンプルプログラムで使用したHINMEI.txtというファイルは、レコードの終端に改行コードが入る行順編成ファイルでした。
では、行順編成ファイルの内容を順編成ファイルにコピーすると、どのように内容が変わってくるのかをプログラム例でご紹介します。
ご紹介するプログラム例は、「COBOL(コボル)言語のORGANIZATION句とは?」でご紹介したサンプルプログラムで使用したHINMEI.txt(行順編成ファイル)を読み込み、HINMEI2.txtという順編成ファイルに出力するプログラムです。
- ******************************************************************
- * Author:
- * Date:
- * Purpose:
- * Tectonics: cobc
- ******************************************************************
- IDENTIFICATION DIVISION.
- PROGRAM-ID. ORGANIZATION_SAMPLE2.
- ENVIRONMENT DIVISION.
- INPUT-OUTPUT SECTION.
- FILE-CONTROL.
- SELECT IN-FILE ASSIGN TO "HINMEI.txt"
- ORGANIZATION IS LINE SEQUENTIAL.
- SELECT OUT-FILE ASSIGN TO "HINMEI2.txt"
- ORGANIZATION IS SEQUENTIAL.
- DATA DIVISION.
- FILE SECTION.
- FD IN-FILE.
- 01 IN-REC.
- 03 IN-HINMEI PIC X(10).
- FD OUT-FILE.
- 01 OUT-REC.
- 03 OT-HINMEI PIC X(10).
- WORKING-STORAGE SECTION.
- 01 WORKING-AREA.
- 03 END-FLG PIC X(3).
- *-------------------------------------------
- * 主手続
- *-------------------------------------------
- PROCEDURE DIVISION.
- MAIN-PROCEDURE.
- OPEN INPUT IN-FILE
- OUTPUT OUT-FILE.
- MOVE SPACE TO END-FLG.
- PERFORM UNTIL END-FLG = "END"
- READ IN-FILE
- AT END
- MOVE "END" TO END-FLG
- NOT AT END
- MOVE IN-HINMEI TO OT-HINMEI
- WRITE OUT-REC
- END-READ
- END-PERFORM.
- CLOSE IN-FILE OUT-FILE.
- STOP RUN.
- END PROGRAM ORGANIZATION_SAMPLE2.
■HINMEI.txt(行順編成ファイル)の内容
■実行結果:HINMEI2.txt(順編成ファイル)の内容
ORGANIZATION句で順編成ファイルを指定したことにより、レコードの終端に改行コードがないファイルが作成されました。
近年ではパソコンが普及したことにより、表ソフトやエディタで作成したテキストファイル(行順編成ファイル)をプログラムで加工する機会が増えました。COBOL言語で行順編成ファイルを取り扱うためには、ORGANIZATION句でファイル形式を指定する必要があります。
こういったファイルのアクセスは、COBOL言語のプログラムにとって、なくてはならない機能の1つですので、ファイル編成とORGANIZATION句の関係を理解しておいてください。
この記事を読んだ人は、こちらの記事も読んでいます
あなたのCOBOL技術を活かしませんか?
COBOL入門のカテゴリー
1. 優良社員が多数在籍しています
2. 即日派遣、又は請負います
3. 安心価格で請負います
4. 同時、協力会社募集中です
1. 正社員
2. 契約社員
3. 個人事業主
などの 求人情報 が閲覧できます。
目指せ!COBOLダントツ一番企業。
創業当初の話や理念が閲覧できます。
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句」は便利?使用方法を学びましょう|用語辞典