COBOL言語の「ORGANIZATION句」とファイル編成の関係とは | 用語辞典

COBOL(コボル)言語の予約語ORGANIZATIONによるファイル編成の指定とは

辞典・辞書-ORGANIZATION-イメージ

COBOL(コボル)言語のORGANIZATION句とは?

ORGANIZATION(英語)は、日本語に訳すると「組織体、団体、組合、協会」、「組織、構成、機構」、「労働組合化」という意味です。

COBOL(コボル)言語のORGANIZATION句には、プログラムで取り扱うファイル編成(ファイルの構成)を指定する機能があります。

ORGANIZATION句の形式

環境部でファイルの属性を定義する際に、SELECT句のあとにORGANIZATION句を記述することで、プログラムで取り扱うファイルの編成形式を明示的に指定することができます。

■書式

 SELECT ファイル名 ASSIGN TO データ名 [ORGANIZATION IS ファイル編成]

■構文規則

 <ファイル名>

  プログラム中でオープン、クローズ、リード、ライトなどを行うときに指定するファイル名を記述します。

 <データ名>

  使用するファイルを指定します。環境変数などを使用したファイル識別子と、物理的なファイル名を指定することができます。

 <ファイル編成>

  使用するファイルの編成形式を、「SEQUENTIAL(順編成)」、「LINE SEQUENTIAL(行順編成)」、「RELATIVE(相対編成)」、「INDEXED(索引編成)」のいずれかで指定します。

■使用例

 ORGANIZATION句を使用し、行順編成ファイルを読み込むプログラム例をご紹介します。

 このプログラムは、「HINMEI.txt」という行順編成ファイル(テキストファイル)を読み込み、読み込んだ内容を画面に表示するプログラムです。

辞典・辞書-ORGANIZATION-使用例

■実行結果

辞典・辞書-ORGANIZATION-実行結果

「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という順編成ファイルに出力するプログラムです。

   
  1. ******************************************************************
  2. * Author:
  3. * Date:
  4. * Purpose:
  5. * Tectonics: cobc
  6. ******************************************************************
  7. IDENTIFICATION DIVISION.
  8. PROGRAM-ID. ORGANIZATION_SAMPLE2.
  9.  
  10. ENVIRONMENT DIVISION.
  11. INPUT-OUTPUT SECTION.
  12. FILE-CONTROL.
  13. SELECT IN-FILE ASSIGN TO "HINMEI.txt"
  14. ORGANIZATION IS LINE SEQUENTIAL.
  15. SELECT OUT-FILE ASSIGN TO "HINMEI2.txt"
  16. ORGANIZATION IS SEQUENTIAL.
  17.  
  18. DATA DIVISION.
  19. FILE SECTION.
  20. FD IN-FILE.
  21. 01 IN-REC.
  22. 03 IN-HINMEI PIC X(10).
  23. FD OUT-FILE.
  24. 01 OUT-REC.
  25. 03 OT-HINMEI PIC X(10).
  26.  
  27.  
  28. WORKING-STORAGE SECTION.
  29. 01 WORKING-AREA.
  30. 03 END-FLG PIC X(3).
  31.  
  32. *-------------------------------------------
  33. * 主手続
  34. *-------------------------------------------
  35. PROCEDURE DIVISION.
  36.  
  37. MAIN-PROCEDURE.
  38. OPEN INPUT IN-FILE
  39. OUTPUT OUT-FILE.
  40.  
  41. MOVE SPACE TO END-FLG.
  42.  
  43. PERFORM UNTIL END-FLG = "END"
  44. READ IN-FILE
  45. AT END
  46. MOVE "END" TO END-FLG
  47. NOT AT END
  48. MOVE IN-HINMEI TO OT-HINMEI
  49. WRITE OUT-REC
  50. END-READ
  51. END-PERFORM.
  52.  
  53. CLOSE IN-FILE OUT-FILE.
  54. STOP RUN.
  55. END PROGRAM ORGANIZATION_SAMPLE2.

■HINMEI.txt(行順編成ファイル)の内容

辞典・辞書-ORGANIZATION-行順編成ファイル

■実行結果:HINMEI2.txt(順編成ファイル)の内容

辞典・辞書-ORGANIZATION-順編成ファイル

ORGANIZATION句で順編成ファイルを指定したことにより、レコードの終端に改行コードがないファイルが作成されました。

近年ではパソコンが普及したことにより、表ソフトやエディタで作成したテキストファイル(行順編成ファイル)をプログラムで加工する機会が増えました。COBOL言語で行順編成ファイルを取り扱うためには、ORGANIZATION句でファイル形式を指定する必要があります。

こういったファイルのアクセスは、COBOL言語のプログラムにとって、なくてはならない機能の1つですので、ファイル編成とORGANIZATION句の関係を理解しておいてください。

この記事を読んだ人は、こちらの記事も読んでいます

【未経験者歓迎】COBOLプログラマー・システムエンジニアの募集

株式会社COBOLの求人・転職・募集情報を見る

COBOL入門のカテゴリー

取引企業様 募集中
COBOL技術者 募集
COBOL魂
読者採用
COBOL入門