第4章 環境部

4.1 概要

環境部には、使用する計算機の特性によって決まる環境を書く。環境部に書く情報には、以下のものがあります。

環境部は、見出し部より後に書く。環境部は、省略することができる。

4.2 環境部の構成(ENRIRONMENT DIVISION)

環境部は、構成節と入出力節との2つの節からなる。

環境部の構成を以下に示す。環境部を構成する節および段落は、以下に示す順に書かなければならない。

書き方

ENVIRONMENT DIVISION.

[ CONFIGURATION SECTION.

[ SOURCE-COMPUTER. [ 翻訳用計算機記述項 ]]

[ OBJECT-COMPUTER. [ 実行用計算機記述項 ]]

[ SPECIAL-NAMES. [ 特殊名記述項 ]]]

[ INPUT-OUTPUT SECTION.

FILE-CONTROL. [ ファイル管理記述項 ] …

[ I-O-CONTROL. [ 入出力管理記述項 ]]]

4.3 構成節 (CONFIGURATION SECTION)

構成節には、翻訳用計算機と実行用計算機の特性を書く。構成節は、一番外側のプログラムにだけ書くことができる。内部プログラムに構成節を書くことはできない。

(※) SIT COBOLは入れ子プログラムは未サポートであり内部プログラムを書くことはできない。

4.3.1 翻訳用計算機段落(SOURCE-COMPUTER)

翻訳用計算機段落では、プログラムを翻訳するための計算機を指定します。

書き方

SOURCE-COMPUTER.

[ 計算機名 [ WITH DEBUGGING MODE ]]

一般規則
  1. 翻訳用計算機段落のすべての句は、それを明にまたは暗に指定したプログラムおよびその内部プログラムに適用される。
  2. 一番外側のプログラムおよび内部プログラムのどのプログラムにも、翻訳用計算機段落を書かなかった場合、その原始プログラムを翻訳する計算機が翻訳用計算機であるとみなされる。
  3. 翻訳用計算機段落の段落名を書き、翻訳用計算機記述項を省略した場合、その原始プログラムを翻訳する計算機が翻訳用計算機であるとみなされる。
  4. WITH DEBUGGING MODE句はデバッグ行の扱いを指定する。

(※) SIT COBOLは、計算機名およびWITH DEBUGGING MODE指定はメモとして扱う

4.3.2 実行用計算機段落(OBJECT-COMPUTER)

実行用計算機段落では、プログラムを実行するための計算機を指定する。

書き方

OBJECT-COMPUTER.

[ 計算機名 [ MEMORY SIZE句 ] [ PROGRAM COLLATING SEQUENCE句 ]. ]

一般規則

実行用計算機段落のすべての句は、それを明にまたは暗に指定したプログラムおよびその内部プログラムに適用される。

(※) SIT COBOLは入れ子プログラムをサポートしていないので内部プログラムを書くことはできない。

(a) MEMORY SIZE句

記憶容量に関する情報を指定する。MEMORY SIZE句は廃要素である。

書き方

MEMORY SIZE 整数-1 { WORDS | CHARACTERS | MODULES }

(※) SIT COBOLでは、MEMORY指定はメモとして扱う

(b) PROGRAM COLLATING SEQUENCE句

文字の大小順序を指定する。

書き方

PROGRAM COLLATING SEQUENCE IS 符号系名-1

構文規則

符号系名-1は、特殊名段落のALPHABET句で文字の大小順序に対応付けなければならない。符号系名-1は、ALPHABET句で機能名に対応付けた符号系名であってはならない。

(※) SIT COBOLは、PROGRAM COLLATING SEQUENCE指定は無視し、常にUTF-8が指定されたものとして動作する。

一般規則
  1. PROGRAM COLLATING SEQUENCE句を書いた場合、プログラムの文字の大小順序は、符号系名-1に関係付けた文字の大小順序になる。
  2. PROGRAM COLLATING SEQUENCE句を省略した場合、プログラムの文字の大小順序は、固有の文字の大小順序であるとみなされる。
  3. PROGRAM COLLATING SEQUENCE句で指定した文字の大小順序は、以下のところで文字比較(日本語文字比較は除く)が行われるとき、条件の真理値を決定するために用いられる。
  1. 明に指定した比較条件
  2. 明に指定した条件名条件
  3. 暗に指定した報告書記述項中のCONTROL句
  1. SORT文またはMERGE文でCOLLATING SEQUENCE指定を省略した場合、PROGRAM COLLATING SEQUENCE句で指定したプログラムの文字の大小順序が、SORT文およびMERGE文にも適用される。

(※) SIT COBOLは、日本語の大小順序もUTF-8が指定されたものとして動作する。

4.3.3 特殊名段落(SPECIAL-NAMES)

特殊名段落では、記号定数、記号文字、符号系名、文字集合、文字の大小順序などを定義したり、機能名と呼び名を対応付けたりする。

書き方

SPECIAL-NAMES.

[ [ { 機能名-1句 } … ]

[ { SWITCH句 } … ]

[ { ALPHABET句 } … ]

[ { CLASS句 } … ]

[ CURRENCY SIGN句]

[ DECIMAL-POINT IS COMMA句]

[ { SYMBOLIC CHARACTERS句} ] ]

(※) SIT COBOLはSPECIAL-NAMES段落は未サポートである。(サポート予定あり)

4.4 入出力節(INPUT-OUTPUT SECTION)

4.4.1 ファイル管理段落(FILE-CONTROL)

ファイル管理段落では、ファイルを外部媒体に関係付ける。

書き方

FILE-CONTROL.

{ ファイル管理記述項 } …

ファイル管理段落には、いくつかのファイル管理記述項を書くことができる。ファイル管理記述項に指定する句および句の規則は、ファイルの種類によって異なる。

書き方1(順ファイル)

SELECT句

ASSIGN句

[ ORGANIZATION句 ]

[ ACCESS MODE句 ]

[ FILE STATUS句 ]

書き方2(相対ファイル)

SELECT句

ASSIGN句

ORGANIZATION句

[ ACCESS MODE句 ]

[ FILE STATUS句 ]

(※) SIT COBOLは、相対ファイルはは未サポートである。

書き方3(索引ファイル)

SELECT句

ASSIGN句

ORGANIZATION句

[ ACCESS MODE句 ]

RECORD KEY句

[ { ALTERNATE RECORD KEY句 } … ]

[ FILE STATUS句 ]

(※) SIT COBOLは、ALTERNATE RECORD KEYは未サポートである。(サポート予定あり)

構文規則
  1. SELECT句は、ファイル管理記述項の最初に書かなければならない。SELECT句の直後はASSIGN句でなければならないが、その他の句の順序は任意である。
  2. データ部のファイル記述項で指定するファイル名は、同じプログラムのファイル管理段落で1回だけ定義しなければならない。
一般規則
  1. SELECT句に指定するファイルのファイル結合子が外部ファイル結合子の場合、そのファイル結合子を参照する実行単位中のすべてのファイル管理記述項は、以下の規則に従わなければならない。
  1. SELECT句のOPTIONAL指定の有無は同じでなければならない。
  2. ASSIGN句にデータ名以外を指定する場合、指定する内容は同じでなければならない。
  3. RESERVE句に指定する整数の値は同じでなければならない。
  4. ORGANIZATION句で、同じ編成を指定しなければならない。
  5. ACCESS MODE句で、同じ呼出し法を指定しなければならない。
  6. LOCK MODE句で、同じロックの方法を指定しなければならない。
  7. 相対ファイルの場合、ACCESS MODE句のRELATIVE KEY指定に指定するデータ名は、同じ外部データ項目でなければならない。
  8. 索引ファイルの場合、さらに以下の規則に従わなければならない。
  1. 索引ファイルの参照キーの値は、固有文字集合の文字の大小順序に従って比較される。
書き方4(整列併合用ファイル)

SELECT句

ASSIGN句

構文規則
  1. ファイル管理記述項の最初にSELECT句を書き、その後にASSIGN句を書かなければならない。
  2. データ部のファイル記述項で指定するファイル名は、同じプログラムのファイル管理段落で1回だけ定義しなければならない。

(※) SIT COBOLは、整列併合用ファイルは未サポートである。(サポート予定あり)

(a) ACCESS MODE句

ファイルの呼出し法を指定する。

書き方1(順ファイル)

ACCESS MODE IS SEQUENTIAL

書き方2(相対ファイル)

ACCESS MODE IS

{ SEQUENTIAL [ RELATIVE KEY IS データ名-1 ] | { RANDOM | DYNAMIC } RELATIVE KEY IS データ名-1 }

(※) SIT COBOLは相対ファイルは未サポートである。

書き方3(索引ファイル)

ACCESS MODE IS { SEQUENTIAL | RANDOM | DYNAMIC }

構文規則
書き方3の規則

ファイルをSORT文またはMERGE文のUSING指定またはGIVING指定に書く場合、そのファイルに対するACCESS MODE句にRANDOMおよびDYNAMICを書くことはできない。

一般規則
書き方1~書き方3に共通する規則
  1. ACCESS MODE IS SEQUENTIALは、順呼出し法でレコードを呼び出すことを指定する。ACCESS MODE IS SEQUENTIALを指定したファイルおよびACCESS MODE句を省略したファイルを、「順呼出し法のファイル」という。
    ACCESS MODE IS RANDOMは、乱呼出し法でレコードを呼び出すことを指定する。ACCESS MODE IS RANDOMを指定したファイルを、「乱呼出し法のファイル」という。
    ACCESS MODE IS DYNAMICは、動的呼出し法でレコードを呼び出すことを指定する。ACCESS MODE IS DYNAMICを指定したファイルを、「動的呼出し法のファイル」という。
  2. ACCESS MODE句を省略した場合、ACCESS MODE IS SEQUENTIALを指定したものとみなされる。
  3. 関連するファイル結合子が外部ファイル結合子の場合、そのファイル結合子に関連する実行単位中のすべてのファイル管理記述項では、同じ呼出し法を指定しなければならない。
    書き方2の場合、さらに、データ名-1は同じ外部データ項目でなければならない。
書き方1の規則

ファイルのレコードは、ファイル編成に従った順序で呼び出される。ファイル編成に従った順序とは、ファイルを生成または拡張するときにレコードを書き出した順のことである。

書き方2の規則

(※) SIT COBOLは、相対ファイルは未サポートである。 ###### 書き方3の規則

  1. 順呼出し法のファイルのレコードは、ファイル編成に従った順序で呼び出される。ファイル編成に従った順序とは、そのファイルの文字の大小順序に従った参照キーの値の昇順である。
  2. 乱呼出し法の場合、呼び出すレコードを、主レコードキー項目または副レコードキー項目で指定する。
  3. 動的呼出し法のファイルのレコードは、順呼出し法によっても乱呼出し法によっても呼び出すことができる。

(b) ALTERNATE RECORD KEY句

副レコードキーを指定する。

書き方

{ ALTERNATE RECORD KEY IS {データ名-1} … [ WITH DUPLICATES ]} …

(※) SIT COBOLでは、ALTERNATE句は未サポートである。(サポート予定あり)

(c) ASSGIN句(順ファイル・相対ファイル・索引ファイル)

ファイルを外部媒体に関連づける

書き方

ASSIGN TO {データ名-1 | 定数-1 }

構文規則
  1. 定数-1は英数字定数でなければならない。

一般規則

  1. ASSIGN句は、SELECT句に書いたファイル名を、記憶媒体に関連付ける。
  2. データ名-1を書いたASSIGN句は、SELECT句に書いたファイル名をデータ名-1の値が示す物理ファイルに関連付ける。データ名-1を指定した場合、OPEN文を実行するときに、記憶媒体上の物理ファイル名を直接示す値を、データ名-1に設定しておかなければならない。OPEN文を実行すると、ファイル名がデータ名-1の値が示す記憶媒体上の物理ファイルに関連付けられる。
  3. 定数-1を書いたASSIGN句は、実行時に定数-1と同じ名前の環境変数がある場合、SELECT句に書いたファイル名をその環境変数の値が示す物理ファイルに関連づける。
    実行時に、定数-1と同じ名前の環境変数がなかった場合、SELECT句に書いたファイル名を定数-1の値が示す物理ファイルに関連づける。例えば、定数-1が “./F1.txt”、“tmp/SEQFILE.seq”となっていた場合などである。

(d) FILE STATUS句(順ファイル・相対ファイル・索引ファイル)

入出力状態を参照するためのデータ項目を指定する。

書き方

FILE STATUS IS データ名-1

構文規則
  1. データ名-1は、修飾することができる。
  2. データ名-1は、2文字の英数字項目または集団項目でなければならない。データ名-1は、作業場所節または連絡節で定義しなければならない。
  3. データ名-1およびデータ名-2は、レコード中の可変位置にあってはならない。
一般規則
  1. データ名-1には、入出力状態を参照するためのデータ項目を指定する。
  2. FILE STATUS句を指定したファイルに対する入出力文を実行すると、データ名-1に、それぞれ入出力状態の値が設定される。入出力状態の値は次のとおりである。
条件 入出力状態の値 値の意味 発生する入出力文
成功 00 入出力文の実行が成功した。その入出力動作に関しては、これ以上情報がない。 OPEN, READ, WRITE, CLOSE, DELETE, REWRITE, START
04 READ文の実行は成功した。しかし、取得したデータはレコード長より短い。(読み込み途中でEOFが発生した場合など) READ
ファイル終了 10 順アクセスのREAD文を実行しようとしたがファイルの終わりに達した。 READ
無効キー 21 順アクセスで、順序誤りがあった。成功したREAD文と次のREWRITE文の間で主レコードキーの値が変更されたか、またはWRITE文の実行時に主レコードキーの値が昇順になっていない。 REWRITE, WRITE
22 重複キーがあった。WRITE文、またはREWRITE文で索引編成ファイルに書き出そうとしたレコードの主レコードキーの値が、すでにファイル中にある。 REWRITE, WRITE
23 物理ファイル中に存在しないレコードをランダムに呼び出そうとした READ, START, DELETE
永続誤り 35 ファイルが存在しない。 OPEN
37 ファイルを開く権利がない。(別プロセスで開かれているなど) OPEN
論理誤り 41 開かれているファイルにOPEN文を実行しようとした。 OPEN
42 開かれていないファイルにCLOSE文を実行しようとした。 CLOSE
43 順アクセスで、DELETE文、またはREWRITE文を実行する前に、関連するファイルに対して実行された最後の入出力文が、成功したREAD文でない。 DELETE, REWRITE
46 入力モードまたは入出力両用レコードで開かれたファイルに順アクセスのREAD文を実行しようとしたが、有効な次のレコードがない。次の場合のどれかである。
(1) 先行するSTART文が不成功であった。
(2) 先行するREAD文が、ファイル終了条件によって不成功であった。
(3) 先行するREAD文が、ファイル終了条件を引き起こした。
READ
47 入力モード、または入出力両用モードで開かれていないファイルに、READ文、またはSTART文を実行しようとした。 READ, START
48 入出力両用モード、出力モード、または拡張モードで開かれていないファイルに、WRITE文を実行しようとした。 WRITE
49 入出力両用モードで開かれていないファイルに、DELETE文、またはREWRITE文を実行しようとした。 DELETE, REWRITE
作成者規定 90 入出力文の実行時、実行できない状態になった。 OPEN, READ, WRITE, CLOSE, DELETE, REWRITE, START
91 フォルダを開こうとしている。 OPEN

(e) ORGANIZATION句(順ファイル)

ファイルの論理的構成が順編成か、または行順編成かを指定する。

書き方

[ ORGANIZATION IS ] [ LINE ] [ SEQUENTIAL ]

構文規則
  1. ORGANIZATION IS SEQUENTIAL句は、ファイルの論理的構成が順編成であることを指定する。ファイル編成は、ファイルを生成するときに決まり、後で変更することはできない。
  2. ORGANIZATION IS LINE SEQUENTIAL句は、ファイルの論理的構成が行順編成であることを指定する。ファイル編成は、ファイルを生成する時に決まり、後で変更することはできない。行順編成のファイルの各レコードは、区切り文字で区切られる。1つのレコードは、印刷可能な文字とレコードの区切り文字だけを含むことができる。1つのレコードは1行と数える。
  3. ORGANIZATION句を省略した場合、ORGANIZATION IS SEQUENTIAL句を指定したものとみなされる。

(f) ORGANIZATION句(相対ファイル)

ファイルの論理的構成として索引編成を指定する。

書き方

[ ORGANIZATION IS ] INDEXED

構文規則

ORGANIZATION IS INDEXED句は、ファイルの論理的構成が索引編成であることを指定する。ファイル編成は、ファイルを生成するときに決まり、後で変更することはできない。

(g) RECORD KEY句(索引ファイル)

主レコードキーを指定する。

書き方

RECORD KEY IS { データ名-1 } … [ WITH DUPLICATES ]

(※) SIT COBOLは、WITH DUMPLICATES句は未サポートである。(サポート予定あり)

構文規則
  1. データ名-1は、修飾することができる。
  2. データ名-1は、RECORD KEY句を指定したファイル名に関連するレコード記述項で定義しなければならない。
  3. 索引ファイルが可変長レコードを含むとき、主レコードキーはそのレコードの最初のn文字の中に含まれなければならない。ここでnは、そのファイルの最小のレコードの大きさとする。
  4. データ名-1は、レコード中の可変位置にあってはならない。
一般規則
  1. RECORD KEY句は、この句に関連するファイルの主レコードキーを指定する。
  2. DUPLICATES指定を書いた場合、主レコードキーの値は、ファイル中のすべてのレコードで一意である必要はない。DUPLICATES指定を省略した場合、主レコードキーの値は、ファイル中のすべてのレコードで一意でなければならない。
  3. 以下の内容は、ファイルを生成したときのものと同じでなければならない。
  1. データ名-1のデータ記述項
  2. データ名-1のレコード中での相対位置
  3. データ名-1の個数
  4. DUPLICATES指定の有無
  1. 1つのファイルに2つ以上のレコード記述項を関係付ける場合、データ名-1はそれらのレコード記述項の1つだけに書かなければならない。そのレコード記述項以外のどのレコード記述項でも、データ名-1と同じ文字位置が、暗にキーとして参照される。
  2. 関連するファイル結合子が外部ファイル結合子の場合、その実行単位でそのファィル結合子に関連するすべてのファイル記述項では、以下の規則に従わなければならない。
  1. データ名-1は、レコード中の同じ相対位置になければならない。
  2. データ名-1のデータ記述項は同じ内容でなければならない。

(h) SELECT句(順ファイル・索引ファイル)

ファイル名を宣言する。

書き方

SELECT [ OPTIONAL ] ファイル名-1

構文規則
  1. SELECT句は、ファイル管理記述項の最初に書かなければならない。
  2. ファイル名-1のファイル記述項は、SELECT句を書いたプログラムの中に書かなければならない。
一般規則
  1. OPTIONAL指定は、ファイル名-1が必ずしも存在するファイルではないことを指定する。OPTIONAL指定を書いたファイルを、「不定ファイル」という。
  2. OPTIONAL指定は、以下のファイルに対してだけ指定することができる。
  1. 順ファイル、索引ファイルの場合、入力モード、入出力モード、または拡張モードで開くファイル。
  2. 報告書ファイルの場合、拡張モードで開くファイル。

(※) SIT COBOLは、OPTIONAL指定は未サポートである。

(i) SELECT句(整列併合ファイル)

ファイル名を宣言する。

書き方

SELECT ファイル名-1

構文規則
  1. SELECT句は、ファイル管理記述項の最初に書かなければならない。
  2. ファイル名-1のファイル記述項は、SELECT句を書いたプログラムの中に書かなければならない。

(※) SIT COBOLは、整列併合ファイルは未サポートである。(サポート予定あり)

4.4.2 入出力段落(I-O-CONTROL)

入出力管理段落では、実行用プログラムで使う特殊な制御技法を指定する。

(※) SIT COBOLは入出力段落は未サポートである。

終了