Previous 見出し部 データ部 Next

第 6 章 : 環境部

6.1 一般説明

環境部では、計算機機種の物理的な特性によるデータ処理上の問題を取り扱う、標準的な方法を指定する。たとえば、翻訳用計算機と実行用計算機の構成を指定できる。それに加えて、入出力管理、ハードウエアの特殊な仕様、管理技法などに関する情報も指定できる。

COBOL原始要素において、環境部は書いても書かなくてもよい。

一般形式

ENVIRONMENT DIVISION. [構成節] [入出力節]

構文規則

  1. プログラムに環境部が含まれる場合、環境部がプログラムの中の最初の部である場合にのみ、環境部の見出しを書かなくてもよい。

6.2 構成節

構成節(configuration section)は、環境部を構成する節の1つである。構成節で指定する事柄には、特定のシステムに依存するデータ処理システムの様相、特殊な管理技法、局所名を外部名に関連づける方法などがある。この節は翻訳用計算機段落、実行用計算機段落、特殊名段落、リポジトリ段落に分けられる。翻訳用計算機段落では、ソース要素を翻訳する計算機の構成を記述する。実行用計算機段落では、コンパイラによって生成されたランタイム・モジュールを実行する計算機の構成を記述する。特殊名段落では、通貨記号および通貨文字列の指定、小数点の選択、記号文字の指定、作成者語と利用者が指定する呼び名との関連づけ、符号系名と文字集合または文字の照合順序への対応づけ、クラス名と文字集合の関連づけを行う。リポジトリ段落では、局所名を外部資源と関連づけ、どの組み込み関数がこの原始単位用の予約語となるかを指定する。

構成節は書いても書かなくてもよい。 .

一般形式

構文規則

  1. 構成節がプログラムの中の最初の文である場合にだけ、構成節の見出しを書かなくてもよい。

  2. 他のプログラムに含まれるプログラムの中には、構成節を記述できない。

  3. メソッド定義中に構成節を記述してはならない。

  4. ファクトリ定義またはオブジェクト定義の中に翻訳用計算機、実行用計算機、リポジトリの各段落を記述してはならない。

一般規則

  1. 他の原始単位を含むソース単位の構成節の中に明示的または暗黙的に記述されている事項は、直接的または間接的に含まれる各原始単位にも適用される。

6.2.1 翻訳用計算機段落

機能

翻訳用計算機(source-computer)段落は、翻訳単位を翻訳する計算機を識別する。

一般形式

一般規則

  1. 翻訳用計算機段落は注記としてだけ使用する。

  2. WITH DEBUGGING MODEは、標準ANSI COBOLに従ったデバッグ用コードを組み入れるために使用する(言語リファレンス - 追加トピック中のデバッグの章のCOBOL Debugの環境部を参照。)

  3. 翻訳用計算機段落のすべての句は、それらが明示的または暗黙的に指定されたソース単位およびその原始単位に含まれる任意のソース単位に適用される。

6.2.2 実行用計算機段落

機能

実行用計算機(object-computer)段落には、コンパイラによって作成されたランタイムモジュールを実行するのに使う計算機を記述する。

この段落は書いても書かなくてもよい。

MEMORY SIZE(記憶容量)句とSEGMENT-LIMIT(区分制限)句は、ANSI'85においては廃要素に分類されており、ANSI標準を次回に全面改訂する際には削除される予定である。

このCOBOL処理系に組み込まれているすべての方言では、MEMORY SIZE句 とSEGMENT-LIMIT句は注記としてだけ使用する。FLAG STD指令を使用すると、この構文が使われているすべての箇所を見つけ出すことができる。

標準COBOL定義の一部を構成するにもかかわらず、X/OpenのCOBOL言語定義では、MEMORY SIZE句と SEGMENT-LIMIT句は明示的に除外されている。したがって、X/Openに準拠するCOBOL原始プログラムにおいては、MEMORY SIZE句と SEGMENT-LIMIT句を使用するべきではない。

一般形式

構文規則

  1. 実行用計算機名は、利用者が定義した1語のCOBOLの語である。

  2. 実行用計算機段落は、OBJECT-COMPUTER 見出しだけから成る。

一般規則

  1. 翻訳用計算機名は、機器構成を識別する手段となる。この場合、計算機名およびそれが意味する機器構成は、利用者が指定する。構成の定義には記憶容量に関する情報を含む。計算機名とMEMORY SIZE句は注記としてだけ使用する。

  2. PROGRAM COLLATING SEQUENCEプログラムの文字の照合順序)句を指定しないと、計算機に固有の文字の照合順序が適用される。 付録の文字集合と文字の照合順序 に、ASCIIおよびEBCDICのすべての文字の照合順序の一覧を掲げてある。NATIVEコンパイラ指令を使用して、計算機に固有の文字の照合順序を選択することもできる。

  3. PROGRAM COLLATING SEQUENCE句を指定すると、プログラムの文字の照合順序は指定した符号系名のものとなる。

  4. 実行用計算機段落に指定したプログラムの文字の照合順序は、下記の文字比較における真理値の決定に用いられる。

    1. 比較条件の中で明示(手続き部の章の比較条件節を参照)。

    2. 条件名条件の中で明示(手続き部条件名条件(条件変数)節を参照)。

  5. SORT(整列)文またはMERGE(併合)文にCOLLATING SEQUENCE句を指定しないと、整列または併合用の文字のキーにもPROGRAM COLLATING SEQUENCE句が使用される。

  6. 索引ファイルの順序づけには、PROGRAM COLLATING SEQUENCE句は何の効力も発揮しない。

  7. PROGRAM COLLATING SEQUENCE句は、それが指定された原始要素の中、

    およびその中に含まれる原始要素の中

    で使用される。

  8. SEGMENT-LIMIT(常駐区分の範囲)句は、注記としてだけ使用する(言語リファレンス - 追加トピックの区分化区分化節を参照)。

6.2.3 特殊名段落

機能

特殊名(special-names)段落は、通貨記号および通貨文字列、小数点,

記号文字、

利用者が指定する呼び名に対する作成者語、文字集合や文字の照合順序に対する符号系名、文字の組に対するクラス名などの、指定または選択を行う手段を示す。

パラメータの引渡し方について予め定義してあるいくつかの方式の中から、1つを選択できる。CALL(呼ぶ)文およびPROCEDURE DIVISIONの見出しの拡張機能によって、これらのパラメータ引渡し方式をプログラム間連絡に使用できるようになった。

例:

  1. CRT状態キーの使用方法については、言語リファレンス - 追加トピック中のの章特殊名段落のCRT STATUS句節を参照。

一般形式

指令

  1. 予約語リストにフラグを付けたり修正したりするコンパイラ指令に加えて、下記の指令によって、この項に記述した構文または意味が影響を受ける可能性がある。

構文規則

  1. 特殊名段落中の句は、どのような順序で書いても構わない。

  2. クラスを定義する原始単位の外側のレベルでは、CURSORおよびCRT STATUS句を指定してはならない。

  3. クラス定義のファクトリまたはオブジェクトにおいては、指定できる句はCURSORおよびCRT STATUSだけである。

  4. ンターフェイス定義中に特殊名段落を指定した場合、使用できる句はALPHABET, CURRENCY, DECIMAL-POINTだけである。

  5. 呼び名には、任意のCOBOLの利用者語を当てることができる。最低限1文字は英字とする。

  6. 関数名は、COBOLコンパイラによって使用されるシステム装置または機能を参照する。

    関数名がUPSI-0からUPSI-7のどれかである場合、関数名は外部スイッチを参照する。

  7. 関数名が外部スイッチを参照するか、

    またはSWITCH-nオプションが使用されている

    場合は、その呼び名は指定できない。

    ただし、SET文の中でだけは指定できる。

    その呼び名には、条件名を最低限1つ付ける。

    条件名を付ける必要はない。

  8. 外部スイッチを参照しない関数名に対応する呼び名を指定できるのは、ACCEPT(受け取り)、DISPLAY(表示)、SEND(送信)、WRITE(書き出し)の各文だけである。このような作成者語に条件名を関係付けることはできない。

  9. 符号系名-1句の定数句の中に指定する定数は、下記のようにする。

    1. 数字である場合は、符号の付かない整数とし、その値は1以上で、計算機に固有の文字集合の文字の個数以下とする。

      ALPHABET(符号系名)句の中の数字定数の有効な最小値は、ALPHASTART指令の影響を受ける。

    2. 文字であり、THROUGH(から)指定またはALSO(もまた)指定を指定した場合、すべて長さは1文字とする。

    3. 浮動小数点数または2バイト文字は指定できない。

  10. 符号系名-1句の定数句を指定する場合、1つの符号系名の中に同じ文字を2回以上書いてはならない。

  11. THRUとTHROUGHは同義語であり、どちらを書いてもよい。

  12. STANDARD-D1とASCIIは同義語であり、どちらを書いてもよい。

  13. 特殊名段落の中では、予約語のISはまったく必要ない。

  14. 定数-4句の中に指定する定数は、下記のようにする。

    1. 数字である場合は、符号の付かない整数とし、その値は1以上で、計算機に固有の文字集合の文字の個数以下とする。

    2. 文字でありTHROUGH(から)指定を指定した場合、すべて長さは1文字とする。

    3. 浮動小数点数または2バイト文字は指定できない。

  15. 定数-1から定数-5には、記号文字の表意定数を指定してはならない。

  16. 1つのSYMBOLIC CHARACTERS (記号文字)句の中には、同じ記号文字-1は1回だけ使用できる。

  17. 各記号文字-1とそれに対応する各整数-1とは、SYMBOLIC CHARACTERS句の中の位置によって関係付けられる。最初の記号文字-1が最初の整数-1と対にされ、2番目の記号文字-1が2番目の整数-1と対にされるという具合いに、SYMBOLIC CHARACTERS句全体を通じて対応付けが行われる。ISまたはAREを間に置くのは読みやすくするためだけである。

    整数-1の有効な最小値は、SYMBSTARTコンパイラ指令の影響を受ける。

  18. 記号文字-1に指定する一連の文字と整数-1に指定する一連の数字とは、1対1で対応させる。このことは、各IS指定またはARE指定の内部でも、SYMBOLIC CHARACTERS句全体でも、当てはまる。

  19. 整数-1で指定する文字位置は、計算機固有の文字集合の中に存在させる。 IN指定を書く場合は、符号系名-2で指定する文字集合の中に、整数-1で指定する文字位置を存在させる。符号系名-2は、ALPHABET(符号系)句に指定してあるものとする。

  20. 定数-6は、英数字の定数でなければならない。

    または、各国語の定数でなければならない。

  21. 定数-6は表意定数であってはならない。

  22. PICTURE SYMBOL指定が使用されていない場合は、定数-6は、1文字から成るものとする。ただし、以下の文字を除く。

    1. 0 から 9までの数字

    2. 英字のA、B、C、D、L、P、R、S、V、X、Z、およびその小文字、および空白

      C または R は使用可能

      L は使用可能

      E は使用不可

      N は使用不可

      G は使用不可

      小文字の英字は使用不可

      小文字の英字は、ここで使用不可と明記されているものを除き、使用可能

    3. 記号、 '+' '-' ',' '.' '*' '/' ';' '(' ')' '"' '='

  23. PICTURE SYMBOLが使用されている場合は、定数-6の長さに制限はなく、以下に従うものとする。

    1. 空白以外の文字を1個含む。

    2. 計算機の符号化文字セットの文字のすべてが使用可能。ただし、0 から 9 の数字と記号の '+' '-' ',' '.' '*'を除く。

  24. 定数-7は、1字の英数字定数から成るものとし、表意定数であってはならない。同じ定数-7が複数存在してはならない。

  25. 定数-7には、計算機の符号化文字セットの文字のすべてが使用可能。ただし、以下を除く。

    1. 0 から 9 の数字

    2. 英字のA、B、C、D、E、N、P、R、S、V、X、Z、およびその小文字、および空白

      C および Rは使用可能

      G は使用不可

    3. 記号、 '+' '-' ',' '.' '*' '/' ';' '(' ')' '"' '='

  26. 定数-6の字類が英数字の場合は、関連づけられた通貨記号は、用途がDISPLAYである数字編集項目の定義にのみ使用可能とする。

    定数-6 の字類が各国語型の場合は、関連づけられた通貨記号は、用途がNATIONALである数字編集項目の定義にのみ使用可能とする。

  27. 整数-2は、0から65535までの符号のつかない整数とする。

  28. CURSOR IS 句のデータ名-1は、作業場所節 で宣言されなければならない。

  29. CRT STATUS 句は、各形式 4以降の状態値の転記先となるデータ項目を指定する。

    または、各形式 5 以降の状態値の転記先となるデータ項目を指定する。

    または、各ACCEPT 文以降の状態値の転記先となるデータ項目を指定する。環境によっては、これは作業場所の最初の64Kでのみ定義可能。

  30. データ名-2 は作業場所節で記述され、3バイトの長さでなければならない。

  31. CURSOR IS句は、ACCEPT文によって使用されるカーソルの番地を保持するデータ項目を指定する。

一般規則

  1. 外部スイッチは、実行時に操作員によって設定される。その設定は、 関連する条件名を検査することで判定される。

  2. 呼び名が外部スイッチと関係付けられている場合、形式 1 のSET(設定)文を実行することによって、その外部スイッチの状態を変更できる。(手続き部 - SEARCH - XML PARSEの章のSET(設定)文節を参照。)

  3. 符号系名-1句は、文字符号系(character code set)または文字の照合順序に名前を付ける働きをする。PROGRAM COLLATING SEQUENCE句(前述の実行用計算機段落節を参照)、またはSORT 文かMERGE文(手続き部 - SEARCH - XML PARSEの章のSORT(整列)文節および手続き部 - MERGE - OPENの章のMERGE(併合)文節を参照)の中のCOLLATING SEQUENCE句の中で符号系名-1が参照される場合、符号系名-1は文字の照合順序を示すことになる。ファイル記述項(データ部 - ファイルおよびデータ記述の章のファイル記述項の全体的な骨組み節を参照) のCODE-SET(符号系)句の中で符号系名-1が参照される場合、符号系名-1は文字符号系を示すことになる。

    1. STANDARD-1または

      ASCII

      指定が含まれる場合は、文字符号系または文字の照合順序は、米国標準規格X3.4-1968に規定されている情報交換用米国標準コードとなる。

      STANDARD-2指定が含まれる場合は、文字符号系は、国際標準646の情報処理交換用7ビット・コード化文字集合に規定されている、ISO7ビット・コードの国際参照版となる。

      EBCDIC指定が含まれる場合は、文字符号系および文字の照合順序はEBCDICとなる。

      NATIVE(計算機固有)句を指定すると、計算機に固有の文字符号系または文字の照合順序が使用される。計算機に固有の文字の照合順序は、NATIVE指令を使用して、ASCIIまたはEBCDICのどちらかに設定できる。

      ASCII符号系およびASCIIとEBCDICの文字の照合順序と両者の対応関係については、付録の文字符号系と文字の照合順序の章を参照。

    2. 定数句を指定すると、符号系名-1はCODE-SET句の中では参照できない(データ部 - ファイルおよびデータ記述の章のCODE-SET(符号系)句節を参照)。 文字符号系または文字の照合順序は、下記の規則に従って定義される。

      1. 各定数の値は、下記のことを表わす。

        1. 定数が数字であるならば、固有文字集合内の文字の順序番号。この値は、固有文字集合内の文字の数を超えてはならない。

        2. 定数が文字であるならば、固有文字集合内の実際の文字。文字定数の値が複数の文字から構成される場合、その文字定数内の各文字に、左端の文字から開始して連続した昇順に、文字の照合順序が設定される。

      2. ALPHABET句内に定数が現れる順番によって、文字の照合順序の文字の順序番号を昇順に定める。

      3. 固有の文字の照合順序のうち、この定数句で書かれなかった文字は、書かれたどの文字よりも大きい順序位置に置かれる。書かれていない文字相互間の照合順序は、固有の文字の照合順序に従う。

      4. 文字符号系を指定する際に、固有の文字集合の中の定数-1句に指定されなかった各文字に関しては、作成者が指定する文字集合内の順序番号を定義する。

      5. THROUGH指定を書くと、固有文字集合の定数-1の値によって指定される文字から定数-2の値によって指定される文字までの一連の文字が、指定される文字の照合順序で昇順に連続した位置を割り当てられる。THROUGH指定を書く際には、一連の文字を昇順に指定しても降順に指定してもよい。

      6. ALSO指定を書くと、定数-1と定数-3の値によって指定される固有文字集合の文字は、文字の照合順序

        またはデータを表わすために使用される文字符号系の中で、

        同じ順序を割り当てられる。

  4. プログラムの文字の照合順序で順序位置が最大のものが、表意定数のHIGH-VALUEとなる。

    ただし、表意定数HIGH-VALUEを特殊名段落の中で定数として指定した場合を除く。

    プログラムの文字の照合順序で順序位置が最大のものが2つ以上ある場合は、最後に指定した方が表意定数のHIGH-VALUEとなる。

  5. プログラムの文字の照合順序で順序位置が最小のものが、表意定数のLOW-VALUEとなる。

    ただし、表意定数LOW-VALUEを特殊名段落の中で定数として指定した場合は例外である。

    プログラムの文字の照合順序で順序位置が最小のものが2つ以上ある場合は、最後に指定した方が表意定数のLOW-VALUEとなる。

  6. 浮動小数点数定数は、利用者が定義した文字の照合順序の中では使用できない。

  7. 特殊名段落の中で定数として指定した場合、表意定数のHIGH-VALUEとLOW-VALUEはそれぞれ、固有の文字の照合順序の中の順序位置が最大のものと最小のものとなる。

  8. SYMBOLIC CHARACTERS句は、表意定数のように使用できる利用者語を定義するために使用する。IN指定を指定しないと、記号文字-1は固有の文字集合の中で順序位置が整数-1によって指定される文字を表わす。IN指定を書くと、整数-1は符号系名-2によって指定される文字集合の中の文字の順序位置を表わす。

  9. 記号文字-1の内部表現は、固有の文字集合の中の該当する文字の内部表現となる。

  10. CURRENCY SIGN 句は、受取り側項目として使用されている数字編集項目中に置かれる通貨文字列の指定に使用され、この編集項目が数字または数字編集項目を受取り側とする送出し項目として使用されるときに、そこから逆編集される。さらに、基本形式のPICTURE句の文字列に、この通貨文字列の使用を指定するための記号を決定するためにも使用される。この記号は、通貨記号と呼ばれる。

    定数-6は、この通貨文字列の値を表す。

    CURRENCY SIGN 句が PICTURE SYMBOL指定とともに使用されている場合は、定数-7が通貨記号として使用される。

    CURRENCY SIGN 句がPICTURE SYMBOL指定を伴わずに使用されている場合は、 定数-6が通貨記号として使用される。

    通貨記号が小文字である場合は、その大文字として処理される。

    この句を指定しないと、COBOLの文字集合に定義されている通貨記号だけが、PICTURE句の中で使用できる。 詳細については、COBOL言語の概念の章の文字集合節を参照。

  11. DECIMAL POINT IS COMMA句は、PICTURE句の文字列と数字定数においてはコンマ(,)と終止符(.)の機能を逆転させることを意味する。

  12. NUMERIC SIGN句を指定すると、符号付き数字項目の符号の位置を個々に指定しなかった場合、末尾に独立の符号が付けられる。

  13. 呼び名を使用できるところでは、代わりに機能名を使用できる。

  14. 機能名に外部スイッチを指定しない場合、下記のものの中から選ぶことができる。

    TAB 縦のタブ位置へ飛ぶ(必要に応じて出力レコード中にASCII X"0B"を挿入) WRITE ADVANCING文
    PRINTER プリンタ DISPLAY文
    FORMFEED 改ページする(必要に応じて出力レコード中にASCII X"0C" を挿入) WRITE ADVANCING文
    COMMAND-LINE コマンド転送 ACCEPTおよびDISPLAY文
    ARGUMENT-NUMBER コマンド行の引数番号 ACCEPTおよびDISPLAY文
    ARGUMENT-VALUE コマンド行の引数値 ACCEPT文
    ENVIRONMENT-NAME 環境変数名 DISPLAY文
    ENVIRONMENT-VALUE 環境変数値 ACCEPTおよびDISPLAY文
    SYSERR 標準エラー装置 DISPLAY文

    このCOBOLシステムに組み込まれている OS/VS COBOL,VS COBOLIIおよびSAAにおいて使用できる機能名を下の表6-1に示す。

    表6-1: 使用できる機能名
      OSVS VSC2 Rel (2) COBOL/370
    またはVSC2 Rel (3)/(4)
    SAA L1
    SYSIN y y y y
    SYSIPT U U y  
    SYSOUT y y y y
    SYSLIST     y  
    SYSLST U U y  
    SYSPCH U U y  
    SYSPUNCH U y y  
    CONSOLE y y y y
    C01 y y y y
    C02 y y y  
    C03 y y y  
    C04 y y y  
    C05 y y y  
    C06 y y y  
    C07 y y y  
    C08 y y y  
    C09 y y y  
    C10 y y y  
    C11 y y y  
    C12 y y y  
    S01 y y y  
    S02 y y y  
    S03   U y  
    S04   U y  
    S05   U y  
    CSP y y y y
    1 char rw literal y      
    AFP-5A     y  

    y メインフレームのコンパイラおよびCOBOLシステムに明記されており、受け付けられる。
    U 明記されていないが、メインフレームのコンパイラに受け付けられる。

  15. CLASS句は、指定した文字の組に名前を付ける働きをする。クラス名-1はクラス条件の中でだけ参照できる。クラス名-1には、この句に指定する定数の値によって表わされる文字の組だけが含まれる。各定数の値は下記の内容を表わす。

    1. 定数が数字の場合、固有の文字集合の中の文字の順序番号。 この値は、固有の文字集合の文字の数を表わす値を超えてはならない。

    2. 定数が文字の場合、固有の文字集合の中の実際の文字。 文字定数が複数の文字から構成される場合、その文字定数の各文字がクラス名-1によって表わされる文字の組に含まれる。

    THROUGH指定を書くと、固有文字集合における定数-4から定数-5までのすべての文字がクラス名-1によって表わされる文字の組に含まれる。THROUGH指定に書く一連の文字は、固有文字集合の中で昇順であっても降順であってもよい。

  16. 原始要素の特殊名段落の中に指定したすべての句は、その原始要素 に含まれる原始要素にも適用される。親の原始要素の特殊名段落の中に指定した条件名、英数字名、クラス名、通貨記号、英字名、および記号文字は、子となる原始要素いずれからも参照できる。

  17. CALL-CONVERSION句を使用すると、パラメータ受渡しに関して予め定義されているいくつかの方式の中から1つを選択できる。これによって、COBOL以外の言語で書かれ、パラメータ受渡し方式の異なる副プログラムを呼び出せる。

  18. CONSOLE IS CRT句を指定すると、ACCEPT文またはDISPLAY文のうち、作用対象が画面でなく特定の形式に固有の句を含まないものが、形式 5 として扱われるようになる。CONSOLE IS CRT句を指定しないと、それらの文は標準のANSI ACCEPT文またはDISPLAY文として扱われる。

  19. CURSOR IS句は、ACCEPT文によって使用され、カーソルの番地を保持するデータ項目を指定する。

    1. ACCEPT文の開始時に、データ名-1に画面上の文字位置として有効な値が入っていると、その文字位置がカーソルの初期位置として使用される。データ名-1に有効な値が入っていない場合は、データ名-1は無視されて、画面上の最初の入力項目の先頭がカーソルの初期位置となる。データ名-1に入っている文字位置をACCEPT文の中で使用すると、ACCEPT文の終了時にデータ名-1の値が更新される。その結果、ACCEPT文が終了した時点でのカーソルの位置がデータ名-1に入れられる。

    2. CURSOR IS句は、画面上の項目への位置付けには効力をもたない。

    3. データ名-1の長さは4文字または6文字とする。データ名-1の長さが4文字である場合、上2文字が行番号として解釈され、下2文字がカラム番号として解釈される。データ名-1の長さが6文字である場合、上3文字が行番号として解釈され、下3文字がカラム番号として解釈される。

    4. データ名-1に入っている値が有効でない(たとえば、ゼロや文字や画面の下辺から外れる値)場合は、この句は効力をもたない。

    5. データ名-1に含まれている値が有効な文字位置ではあるが、実行されようとしているACCEPT文の入力項目に対応しない場合、カーソルは次の入力項目に位置付けられる。このとき、次の入力項目が存在しないと、最初の入力項目に位置付けられる。入力項目の順番はデータ部にデータ記述を書いた順番である。

  20. CRT STATUS句は、形式 4 または形式 5 のACCEPT文が実行されるたびに、状態値が転記されるデータ項目を指定する。

    特殊名段落にCRT STATUS句を指定すると、形式 4 または形式 5 のACCEPT文が実行されるたびに(詳細については後述する)、その結果を示す値がデータ名-2に入れられる。データ名-2は状態キーから構成される。そのそれぞれに、ACCEPT文を実行した結果の状態が記録される。各状態キーの意味を以下に説明する。

CRT状態キー

状態キー1: データ名-1の最初のバイトは、CRT状態キー1である。このデータ記述には、PICTURE 9 USAGE DISPLAYと指定しておく。この状態キーはACCEPT操作の終了を引き起こした条件を表わす。このキーがとる具体的な値は下記のとおり。

"0" 終了キーまたは最後の項目の外に出る自動スキップを表わす
"1" 利用者が定義したファンクション・キーを表わす
"2" COBOLシステムで定義されているファンクション・キーを表わす
"9" エラーが発生したことを表わす

終了キーとは、ACCEPT操作を終わらせるためのキーである(たとえば、実行キー)。ACCEPTの最後の項目でフィールド・タブ・キーを押すと、終了キーとして働くように設定する構成オプションもある。ファンクション・キーを定義することも構成オプションである。

この状態値に"0" が返されて終了することを、正常終了という。

ACCEPT文の中にON EXCEPTION指定を書くと、CRT状態キーの値が" 0" 以外であった場合、指定した無条件命令が実行される。

CRT 状態キー2: データ名-1の2番目のバイトは、状態キー2である。ここには、ACCEPT操作を終了させた条件のさらに詳細を示すコードが記録される。状態キー2の形式と値はCRT状態キー1の値によって変わる。その具体的な値を下の表6-2に示す。

表 6-2: CRT状態キー1と2の有効な組合せ
キー 1 キー 2 意味
形式
0 PIC 9 DISPLAY 0 操作員が終了キーを押した
0 PIC 9 DISPLAY 1 最後の項目の外に出る自動スキップ
1 PIC 99 COMP 0-127 ファンクション・キー番号
2 PIC 99 COMP 0-26 ファンクション・キー番号
9 PIC 99 COMP 0 画面内に項目が何もない

ファンクション・キー番号については、COBOLシステムのマニュアル中の画面処理およびユーザインターフェイスに関する記述を参照。

CRT 状態キー3: データ名-1の3番目のバイトは、状態キー3である。これはPICTURE 99 COMP-X または PICTURE 99 COMPとして定義する。 (NOIBMCOMP指令を指定して)。 CRT状態キー1とCRT状態キー2がともにゼロであるならば、ACCEPT操作を終わらせたキーそのままのキーボード・コードがCRT状態キー3に記録される。これ以外では、CRT状態キー3の内容はどうなるかわからない。

単一のキーではなく、いくつかのキーを連続して打つことによって1つの機能が実行されるように設定されている場合、最初に打たれたキーに対するコードだけが返される。

6.2.4 リポジトリ段落

リポジトリ段落では、環境部の範囲内で使用できるクラス名、インターフェイス名、属性名、およびプログラムプロトタイプ名を指定できる。さらに、FUNCTIONという語を指定せずに使用できる組み込み関数名を宣言することもできる。

一般形式

指令

  1. 予約語リストにフラグを付けたり修正したりするコンパイラ指令に加えて、下記の指令によって、この項に記述した構文または意味が影響を受ける可能性がある。

構文規則

  1. リポジトリ段落中にクラス名-1、インターフェイス名-2、属性名-1、またはプログラムプロトタイプ名のいずれかを2回以上指定する場合、その名前での指定はすべて同じでなければならない。

  2. 定数-1、定数-2、定数-3、定数-4、および定数-5は文字定数でなければならず、表意定数であってはならない。

  3. CLASS指定を書く場合、クラス名-2、クラス名-3、インターフェイス名-1は下記のどちらかでなければならない。

    1. それを含むクラス定義またはインターフェイス定義のパラメータ

    2. クラス名-1が定義されているのと同じリポジトリ段落中に定義されている

  4. このリポジトリ段落を含むクラス定義のクラス名段落のUSING指定またはこのリポジトリ段落を含むインターフェイス定義のインターフェイス名段落のUSING指定の中にクラス名-1を指定した場合、EXPANDS指定を書いてはならない。

  5. インターフェイス指定を書く場合、クラス名-4、インターフェイス名-3、インターフェイス名-4は下記のどちらかでなければならない。

    1. それを含むクラス定義またはインターフェイス定義のパラメータ

    2. インターフェイス名-2が定義されているのと同じリポジトリ段落中に定義されている

  6. このリポジトリ段落を含むクラス定義のクラス名段落のUSING指定またはこのリポジトリ段落を含むインターフェイス定義のインターフェイス名段落のUSING指定の中にインターフェイス名-2指定した場合、EXPANDS指定を書いてはならない。

  7. プログラムプロトタイプ名-1はいずれも、プログラムプロトタイプの名、この翻訳集団中ですでに指定されたプログラム定義、または以下のいずれかとする。

    1. 定数-3が指定されていない場合は、プログラム-プロトタイプ名-1のプログラムの外部リポジトリにその情報があるものとする。

    2. 定数-3指定されている場合は、定数-3のプログラムの外部リポジトリにその情報があるものとする。

  8. 関数プロトタイプ名-1はいずれも、関数プロトタイプの名、この翻訳集団中ですでに指定された関数定義、または以下のいずれかとする。

    1. 定数-5が指定されていない場合は、関数プロトタイプ名-1の関数の外部リポジトリにその情報があるものとする。

    2. 定数-5指定されている場合は、定数-5の関数の外部リポジトリにその情報があるものとする。

  9. 組み込み関数名-1は、このリポジトリ段落の範囲内にある利用者定義語として指定してはならない。

  10. ALLが関数指定の組み込み形式に指定されている場合は、組込関数の名はいずれも、このリポジトリ段落の範囲内にある利用者定義語として指定してはならない。

  11. 指定したクラス名-1がこのリポジトリ段落を含むクラス定義の名前である場合、クラス名-1を参照するとそのクラス定義を参照することになり、このクラス指定子は無視される。

  12. 指定したインターフェイス名-2がこのリポジトリ段落を含むインターフェイス定義の名前である場合、インターフェイス名-2を参照するとそのインターフェイス定義を参照することになり、このインターフェイス指定子は無視される。

  13. 指定したプログラムプロトタイプ名-1が、このリポジトリ段落の指定を含むプログラム定義の名、またはそれを含むプログラムの名である場合は、プログラムプロトタイプ名-1は、名づけられたプログラム定義を参照し、このプログラム指定は無視される。

  14. 指定した関数-プロトタイプ名-1が、このリポジトリ段落の指定を含む関数定義の名である場合は、関数-プロトタイプ名-1は、その関数定義を参照し、この関数指定は無視される。

  15. クラス指定を書いた場合、

    1. 定数-1を指定したならば、クラスである定数-1に関する情報が外部リポジトリ中に存在しなければならない。

    2. 定数-1を指定しなかったならば、クラスであるクラス名-1に関する情報が外部リポジトリ中に存在しなければならない。

  16. インターフェイス指定を書いた場合、

    1. 定数-2を指定したならば、インターフェイスである定数-2に関する情報が外部リポジトリ中に存在しなければならない。

    2. 定数-2を指定しなかったならば、インターフェイスであるインターフェイス名-2に関する情報が外部リポジトリ中に存在しなければならない。

  17. PROPERTY指定を書いた場合、

    1. 定数-3を指定したならば、属性である定数-3に関する情報が外部リポジトリ中に存在しなければならない。定数-3はこの段洛中に宣言されたクラスまたはインターフェイスのどれかの一部である。

    2. 定数-3を指定しなかったならば、属性である属性名-1に関する情報が外部リポジトリ中に存在しなければならない。属性名-1はこの段洛中に宣言されたクラスまたはインターフェイスのどれかの一部である。

一般規則

  1. クラス名-1はそれが指定されている環境部の範囲内で使用できるクラスの名前である。

  2. AS指定を書いた場合、定数-1、定数-2、定数-3、または定数-5はそれぞれ、クラス、インターフェイス、プログラム、または関数が操作環境によって認識される名前である。定数-4は、指名された属性を実現するメソッドとして、操作環境によって認識される名前である。AS指定を書く必要があるのは、クラスやインターフェイスや属性の名前が利用者語を形成するための規則に従っていないか、または名前の大文字と小文字を区別する場合である。

  3. クラス名-3とインターフェイス名-1は、クラス名-2によって参照されるパラメータ化されたクラスのための、実パラメータである。

  4. クラス名-4とインターフェイス名-4は、インターフェイス名-3によって参照されるパラメータ化されたインターフェイスのための、実パラメータである。

  5. クラス指定子にEXPANDS指定を書いた場合、パラメータ化されているクラスであるクラス名-2から、クラス名-1がクラスとして作成される。クラス指定子のEXPANDS指定のUSING指定の中のパラメータの数は、クラス名-2のクラス名段落のUSING指定の中のパラメータの数と同じであるものとする。クラス名-1用のインターフェイスは、クラス名-2用に指定されたインターフェイスのパラメータをクラス指定子に指定されたパラメータで置き換えたものである。

    クラスであるクラス名-1はパラメータ化されたクラスであるクラス名-2から作成される。そのさい、仮パラメータの各仕様が対応する実パラメータで置き換えられる。その置換はCOPY文とREPLACE文の処理が終わった後で行われる。

  6. コンパイラはクラス名-1に指定されている情報を外部リポジトリと一緒に使用して、使用するクラスの詳細を決定する。そのクラスに関するリポジトリ情報は、ファイルに格納されていなければならない。そのファイル名はそのクラスを外部化した名前に拡張子rdfを付けたものでなければならない。RDFPATH指令を指定した場合には、そのファイルは指定されたディレクトリのもとに置かれていなければならない。そうでない場合には、.intファイルおよび.idyファイルが作成されるローカル・ディレクトリのもとにそのファイルが置かれていなければならない。

  7. インターフェイス名-2はそれが指定されている環境部の範囲内で使用できるインターフェイスの名前である。

  8. インターフェイス指定子にEXPANDS指定を書いた場合、パラメータ化されているインターフェイスであるインターフェイス名-3から、インターフェイス名-2がインターフェイスとして作成される。インターフェイス指定子のEXPANDS指定のUSING指定の中のパラメータの数は、インターフェイス名-3のインターフェイス名段落のUSING指定の中のパラメータの数と同じであるものとする。インターフェイス名-2用のインターフェイスは、インターフェイス名-3用に指定されたインターフェイスのパラメータをインターフェイス指定子に指定されたパラメータで置き換えたものである。

    インターフェイスinterface-名-2は、指定された各仮パラメータを対応する実パラメータに置き換えることにより、パラメータ化されたインターフェイスinterface-3から作成される。この置き換えは、COPYおよびREPLACE文の処理後に実行される。

  9. コンパイラはインターフェイス名-2に指定されている情報を外部リポジトリと一緒に使用して、使用するインターフェイスの詳細を決定する。そのクラスに関するリポジトリ情報は、ファイルに格納されていなければならない。そのファイル名はそのインターフェイスを外部化した名前に拡張子rdfを付けたものでなければならない。RDFPATH指令を指定した場合には、そのファイルは指定されたディレクトリのもとに置かれていなければならない。そうでない場合には、.intファイルおよび.idyファイルが作成されるローカル・ディレクトリのもとにそのファイルが置かれていなければならない。

  10. 属性名-1はそれが指定されている環境部の範囲内で使用できるオブジェクト属性の名前である。

  11. プログラムプロトタイプ名-1は、これを含む環境部の範囲全体で使用されるプログラムプロトタイプの名とする。

  12. プログラムプロトタイプ名-1のプロトタイプ定義またはプログラム定義が、この翻訳集団中ですでに指定されている場合は、その定義を使用して、プログラムプロトタイプ名-1が示すプログラムの起動に関する詳細が決定される。そうでない場合は、外部リポジトリを使用して、外部化された名、プログラムプロトタイプ名-1のプログラムの起動に関する詳細が決定される。この場合、プログラムプロトタイプ名-1が参照されると、このプログラムが起動する。

  13. 関数プロトタイプ名-1は、これを含む環境部の範囲全体で使用される関数プロトタイプの名とする。

  14. 関数-プロトタイプ名-1のプロトタイプ定義または関数定義が、この翻訳集団中ですでに指定されている場合は、その定義を使用して、関数プロトタイプ名-1が示す関数の起動に関する詳細が決定される。そうでない場合は、外部リポジトリを使用して、外部化された名、関数プロトタイプ名-1の関数の起動に関する詳細が決定される。この場合、関数プロトタイプ名-1が参照されると、この関数が起動する。

  15. 関数指定で、組み込み関数名-1の前に語、FUNCTIONをつける必要はない。

  16. 関数指定の組み込み形式でALLを指定した場合は、 手続き部 - 組み込み関数の章の定義による、各組み込み関数名を指定したものと同様の結果となる。

6.3 入出力節

機能

入出力節では、外部媒体とランタイム要素との間での、データの転送と処理を制御するために必要な情報を取り扱う。

一般形式

INPUT-OUTPUT SECTION.
[ ファイル管理段落 ]
[ 入出力管理段落 ]

構文規則

  1. 入出力節はプログラム定義中に指定できる。クラス定義においては、入出力節を指定できる箇所は、ファクトリ定義、オブジェクト定義、メソッド定義の中だけである。インターフェイス定義中に入出力節を指定してはならない。

6.3.1 ファイル管理段落

機能

ファイル管理段落では、各ファイルに名前を付けるとともに、ファイルに関するその他の情報を指定する。

一般形式

6.3.2 ファイル管理記述項

機能

ファイル管理記述項では、ファイルに名前を付けるとともに、ファイルに関するその他の情報を指定する。

標準COBOL定義の一部を構成するにもかかわらず、X/OpenのCOBOL言語定義では、ASSIGN句中のRECORD DELIMITER指定とRESERVE指定と反復記号は明示的に除外されている。したがって、X/OpenのCOBOLに準拠する原始プログラム内では、これらの指定および記号を使用するべきではない。.

一般形式

形式 1 (レコード順ファイル)

形式 2 (行順ファイル)

形式 3 (相対ファイル)

形式 4 (索引ファイル)

形式 5 (整列併合ファイル)

指令

  1. 予約語リストにフラグを付けたり修正したりするコンパイラ指令に加えて、下記の指令によって、この項に記述した構文または意味が影響を受ける可能性がある。

構文規則

すべての形式 (すべてのファイル)
  1. ファイル管理記述項の冒頭には、SELECT句を指定する。SELECT句の後ろに続く他の句は、どんな順序で書いてもよい。

  2. データ部に記述する各ファイルには、ファイル管理段落において一度だけファイル名を付ける。ファイル管理記述項に指定した各ファイルに対応して、同じファクトリ、メソッド、オブジェクト、またはプログラムのデータ部のファイル記述項を書かなければならない。

  3. ACCESS MODE句を指定しないと、暗黙的にACCESS MODE IS SEQUENTIALを指定したものとみなされる。

  4. データ名-1は、データ部の中で英数字データ項目または集団項目として宣言できる。この場合、そのファイルの外部名を保持できるだけの十分な長さをとる必要がある。 データ名-1を原始要素の中で明示的に宣言しないと、COBOLシステムが暗黙的に英数字データ項目として宣言する。その長さは、ファイル名の長さとして許される最大の長さがとられる。FROM指定の中にデータ名-1を書く場合は、データ部の中で明示的に宣言しておかなければならない。

  5. NOT OPTIONAL指定は、入出力両用モードでファイルを開く場合にだけ効力をもつ。

  6. 外部ファイル参照、データ名-1、定数-1はファイルの外部名を指定する。 EXTERNAL指定またはDYNAMIC指定を書く場合、定数-1を指定してはならないDYNAMIC指定を書く場合、外部ファイル名に指定した語は外部ファイル参照として解釈される。

  7. データ名-2は、データ部の中で、2文字の英数字データ項目

    または用途が表示用の2文字の数字データ項目

    として定義しておく。データ部のファイル節または

    局所記憶節

    内では定義できない。

  8. データ名-3は、作業場所節または連絡節の中で6バイトの集団項目として定義しておく。

  9. データ名-4は、作業場所節の中で英数字データ項目として定義しておく。

  10. すべてのデータ名は、修飾できる。
形式 1 (レコード順ファイルのみ)
  1. 定数-2は、1文字の文字定数とする。

  2. データ名-5は修飾してもよい。これはデータ部の中で、1文字の英数字データ項目として定義しておく。通信節またはファイル節または報告書節の中では定義できない。

  3. 文字列は、予約語または利用者名または定数であってはならない。
形式 1 および 2 (レコード順ファイルおよび行順ファイル)
  1. ORGANIZATION句を指定しないと、順編成であるものと想定される。

  2. KEYBOARDは、操作卓入力を意味する。

  3. DISPLAYは、操作卓出力を意味する。

  4. PRINTERはシステムの主たる印刷装置を指す。

  5. PRINTER-1はシステムの2番目の印刷装置を指す。
形式 3 (相対ファイル)
  1. START文の作用対象に相対ファイルを指定する場合は、そのファイルに関するRELATIVE KEYを指定しておく。

  2. データ名-5は、該当するファイル名のレコード記述項の中では指定できない。

  3. データ名-5は、符号なしの整数データ項目として定義する。
形式 4 (索引ファイル)
  1. 分割キー名は、該当するファイル名のレコード内のいくつかのデータ項目をつなげたものである。これはSTART文またはREAD文の中でだけ使用できる。

  2. データ名-5とデータ名-8のデータ項目

    および分割キー名-1と分割キー名-2によって参照されるデータ名

    は、該当するファイルのレコード記述項の中で定義しておく。

    これらのデータ項目は、どの項類のデータとして定義してもよい。しかし、SELECT句内で指定したファイル > に対する入出力文に関しては、キーは必ず英数字項目として扱われる。

  3. データ名-5とデータ名-8のデータ項目

    および分割キー名-1と分割キー名-2によって参照されるデータ名

    に可変長項目を指定することはできない。詳細はデータ部 - ファイルおよびデータ記述章のOCCURS(反復)句節を参照。

  4. データ名-8は、 左端の文字位置がデータ名-5により参照される項目、または同じファイルについて指定された他のデータ名-8により参照される項目の、左端の文字位置に対応する項目を参照してはならない。

  5. 索引ファイルが変数長レコードを含む場合は、データ名-5 およびデータ名-8、

    および分離キー名-1 および分離キー名-2が参照するデータ名すべて

    は、そのレコードの最初のxバイトに含まれる。このxは、ファイルに指定された最小レコードサイズの値である。データ部 - ファイルおよびデータ記述 の章のRECORD(レコードの大きさ)句節を参照。

  6. PASSWORD句を指定する場合、対応するRECORDKEY句またはALTERNATE RECORD KEY句の直後に書く。
形式 5 (整列併合ファイル)
  1. データ部に記述する各整列ファイルまたは併合ファイルには、ファイル管理段落で一度だけファイル名を付ける。ファイル管理記述項に記述した各整列ファイルまたは併合ファイルに関して、整列併合ファイル記述項を記述する。

  2. ファイル名は整列ファイルまたは併合ファイルを表わすため、ファイル管理段落中のファイル名の後ろにはASSIGN句だけを記述することができる。

一般規則

すべての形式 (すべてのファイル)
  1. ASSIGN句は、ファイル名-1が表わすファイルを記憶媒体に対応付ける。最初に記述したファイル割当てだけが効力をもつ。

    1つのASSIGN句内にファイル割当てをいくつか記述した場合、最初のもの以外は注記になる。

  2. RESERVE句を使用すると、利用者は必要な入出力領域の数を指定できる。

    使用しているオペレーティングシステムに付随するマニュアルに別途指定されていないかぎり、RESERVE句は注記になる。

  3. ORGANIZATION句は、ファイルの論理構造を指定する。ファイル編成はファイルが作成されるときに確立され、後から変更することはできない。

  4. FILE STATUS句を指定すると、明示的または暗黙的に該当ファイルを対象とする文が実行されるたびに、ランタイムシステムからデータ名-2のデータ項目に値が返される。この値はその文を実行した結果の状態を示している。(手続き部の章の入出力状態節を参照。)

    データ名-3は、指定しても注記になる。

  5. PASSWORD句は注記になる。

  6. ASSIGN句内の予約語DYNAMICは、定数-1またはデータ名-1の値が外部ファイル記憶環境におけるファイル名であることを示す。

  7. ASSIGN句内の予約語EXTERNALは、指定したファイルが外部環境においては外部ファイル参照によって識別されることを示す。それを通じて、指定したファイルがさらに外部ファイル記憶環境名に対応付けられることもある。(ある操作環境での外部ファイル名の設定については、ファイル処理に関するCOBOLのマニュアルを参照。)

    外部ファイル参照中に文字"-" が含まれていると、最後の"-" の後ろに続く部分の名前だけが、外部環境においてファイルを識別するために使用される。

  8. 外部ファイル参照かデータ名-1か定数-1を指定せずにDISKを指定するか、FROMを指定せずにDISKを指定するかすると、そのファイルはディスク・ファイルでその名前はファイル記述中のVALUE OF FILE-ID に指定されることを表わす。このファイル記述中にVALUE OF FILE-ID句が含まれていない場合は、そのディスク・ファイルの名前は、ファイル名-1 (「内部ファイル名」) と同じであると想定される。

  9. 必要語DISK, KEYBOARD, DISPLAY, PRINTER, PRINTER-1のどれかの後ろに外部ファイル参照かデータ名-1か定数-1が続く場合、その必要語は無視される。

  10. DISK FROMを指定すると、そのファイルはディスク・ファイルでありディスク上のファイル名はデータ名-1の値であることを表わす。しかし、そのファイルに対してOPEN文を実行すると、データ名-1はすべて空白とされて、そのディスク・ファイルの名前はファイル名-1(「内部ファイル名」)と同じであると想定される。

  11. OPTIONAL指定は、入力モードか入出力両用モードか拡張モードで開くファイルに対してだけ適用できる。ランタイム要素を実際に実行するときに存在するとは限らないファイルに対して、これを指定する必要がある。

  12. SHARING句では、ファイルに適用する共有モードを指定する。ただし、この句はOPEN文のSHARING句によって上書きされることがある。この句ではまた、レコード・ロックが有効であるか否かを指定する。詳しくは、翻訳集団の概念の章の共有モード 節で指定する。
形式 1、3 および 4 (レコード順ファイル、相対ファイル、および索引ファイル)
  1. LOCK MODE句は該当するファイルに適用するロック方式を指定するものであり、書いても書かなくてもよい。

    この句を省略した場合、ファイルを開くと、そのファイルは排他モードにおかれる。ただし、入力モードで開いた場合を除く。

    LOCK MODE IS EXCLUSIVEを指定すると、ファイルを開いた実行単位はそのファイル全体の鍵を取得する。

    LOCK MODE IS AUTOMATICまたはLOCK MODE IS MANUALを指定すると、開いたファイルは実行単位の間で共有される。ただし、出力モードで開いたファイルおよび拡張モードで開いた索引ファイルと相対ファイルは、常に排他モードにおかれる。

  2. ROLLBACK句を指定すると、更新取消し機能を備えたCOBOLシステムではトランザクションのロギングが行われる。システムでの実現方法については、ファイル処理に関するCOBOLのマニュアルを参照。

    ROLLBACK句を指定すると、WITH LOCK ON MULTIPLE RECORDSが自動的に発効される。

  3. WITH LOCK ON RECORD句は、ファイル中の1レコードだけをロックすることを指定する。

    WITH LOCK ON MULTIPLE RECORDS句は、ファイル中の複数のレコードをロックすることを指定する。複数のレコードをロックする必要があるときは、この句を指定しなければならない。

  4. LOCK MODE IS AUTOMATIC WITH LOCK ON RECORDを指定すると、該当するファイルを対象にしたREAD文を実行したときに、該当する1レコードがロックされる。その後でそのファイルに入出力操作を行うと、そのレコードはロックを解除される。ただし、START文は例外である。

    LOCK MODE IS AUTOMATIC WITH LOCK ON MULTIPLE RECORDを指定すると、該当するファイルを対象にしたREAD文を実行したときに、該当する1レコードがロックされる。いったんロックされたレコードは、CLOSE, COMMIT, ROLLBACK, UNLOCKのどれかの文を実行するまで、または個々のロックがDELETE文で削除されるまで解除されない。

  5. LOCK MODE IS MANUAL WITH LOCK ON RECORDを指定すると、該当するファイルを対象にしたWITH LOCK指定を伴うREAD文を実行したときにだけ、該当する1レコードがロックされる。その後で、そのファイルに入出力操作を行うと、そのレコードはロックを解除される。ただし、START文は例外である。

    LOCK MODE IS MANUAL WITH LOCK ON MULTIPLE RECORDSを指定すると、該当するファイルを対象にしたREAD WITH KEPT LOCK文を実行したときに、該当する1レコードがロックされる。いったんロックされたレコードは、CLOSE, COMMIT, ROLLBACK, UNLOCKのいずれかの文を実行するまで解除されない。

  6. ロックモードにMANUALまたはAUTOMATICを指定しWITH LOCK ON MULTIPLE RECORDSを指定しないと、単一レコードをロックするものと想定される。

  7. EXTERNALと定義したファイルに対して、ASSIGN指令または必要語を用いてSELECT/ASSIGN文中でデータ名-1をファイル名に割り当てるか、あるいはファイル記述項のVALUE OF句の形式 2 を用いてファイル名を割り当てる場合、下記の規則に従う。

    1. そのファイルを参照するすべての原始要素プログラム中に物理ファイル名を含めるには、同じ名前の一意名を使用する。

    2. 物理ファイル名を保持する一意名の定義にも、EXTERNAL属性を含める。

    この規則に反していても、コンパイル時にはそのことは検出されない。しかし、実行単位中のランタイム要素 が実行時にこの規則から外れると、結果は保証されない。

    レコード・ロックについての詳細は、ファイル処理に関するCOBOLのマニュアルを参照。

形式 1 (レコード順ファイル)
  1. CLOSE REEL文またはCLOSE UNIT文を用いてファイルを閉じることができるかまたはそうする意図がある場合、MULTIPLE REEL指定またはMULTIPLE UNIT指定を書く。

  2. ファイル中のレコードは、先行・後行レコード関係によって規定される順序で呼び出される。この関係はファイルを作成または拡張したときに、WRITE文の実行によって確立されたものである。

  3. LINE ADVANCING FILEを指定すると、印刷装置に適したファイルが作成される。このファイルの冒頭には、復帰文字が置かれる。各レコードを書き出す際の改行指定には、省略時解釈としてAFTER ADVANCING 1 LINEが設定される。形式についての詳細は、ファイル処理に関するCOBOLのマニュアルを参照。

  4. PADDING CHARACTER句は注記になる。

    関連するファイル結合子(file connector)が外部ファイル結合子である場合、そのファイル結合子に関連する実行単位中のPADDING CHARACTER句の指定内容は、すべて同じにする。データ名-5が外部のものである場合、外部データ項目を参照する。

    RECORD DELIMITER句は注記になる。

形式 2 (行順ファイル)
  1. 明示的にまたは暗黙的にLINE SEQUENTIAL ORGANIZATION を指定すると、ファイルは固定長のレコードから構成され、その各レコードに1行分のデータが記録されるものとされる。このレコードが格納される際には、後行の空白は削除される。1行の定義はオペレーティングシステムによって異なる。復帰および改行のどちらか一方または両方によって1行の末尾を区切るものもあれば、固定長のレコードとして余白に充てん文字を詰めるものもある。どちらにしても、使用しているCOBOLシステムは、そのオペレーティングシステムのエディタ・ソフトウェアと互換性のあるファイルを必ず作成する。

  2. LOCK MODE IS句は注記になる。

形式 3 (相対ファイル)
  1. 呼出し法が順呼出しのとき、ファイル中のレコードは現存するレコードの相対レコード番号の昇順に呼び出される。

  2. 呼出し法が乱呼出しのとき、RELATIVE KEYデータ項目の値が呼び出されるレコードを示す。

  3. 相対ファイル中に格納されているすべてのレコードは、相対レコード番号によって一意に識別される。この相対レコード番号は、ファイル中のレコードの論理的な順序も示す。つまり、最初の論理レコードの相対レコード番号は1であり、以降2、3、4、...というように続く。

  4. データ名-5のデータ項目は、利用者とオペレーティングシステムとの間で相対レコード番号を情報を取り交わすために使用される。

形式 4 (索引ファイル)
  1. 呼出し法が順呼出しのとき、ファイル中のレコードは、指定されたレコードキーの値の昇順に呼び出される。

  2. 呼出し法が乱呼出しのとき、レコードキー・データ項目の値が呼び出されるレコードを示す。

  3. RECORD KEY句は、該当するファイルの主レコードキーを指定する。ファイル中のレコードの間で、主レコードキーの値は一意にする。主レコードキーは、索引ファイルからレコードを呼び出す経路を形成する。

  4. ファイルが1つ以上のレコード記述項をもつ場合、データ名-5

    および分割キー名-1 に参照されるどのデータ名

    、これらのレコード記述項の1つにだけ記述されている必要がある。どれかのレコード記述項にあるデータ名-5

    および分割キー名-1 に参照されるデータ名のどれか

    によって参照される同一の文字位置は、そのファイルにある他のすべてのレコード記述項のキーとして、暗黙的に参照される。

  5. 関連するファイル結合子が拡張ファイル結合子である場合、そのファイル結合子に対応する実行単位中のすべてのファイル記述項は、対応するレコード中で、同じ相対的な位置にあるデータ名-1に対して、同じデータ記述項を記述する。

  6. ALTERNATE RECORD KEY句は、該当するファイルの副レコードキーを指定する。副レコードキーは、索引ファイルからレコードを呼び出す代替経路を形成する。

  7. データ名-5

    または分割キー名-1

    およびデータ名-8

    または分割キー名-2

    のデータ記述ならびにレコード内でのそれらの相対位置は、ファイルが作成されたときと同じにする。また、副レコードキーの数も、ファイルが作成されたときと同じにする。このチェックは環境によっては構成可能である。("ファイル処理のためのプログラマガイド"の"呼出し可能ファイルハンドラ"に記述されている、呼出し可能ファイルハンドラ構成ファイル中のKEYCHECK属性を参照。)

  8. DUPLICATESを指定すると、ファイル中の該当するレコードキーの値がレコード間で重複してもよいことを意味する。DUPLICATESを指定しない場合、該当するレコードキーの値は、ファイル中のすべてのレコードにわたって一意にする。

  9. 重複する値をもつレコードを探し出すには、同じ値をもつ最初のレコードから順呼出しで読み込んでいく。

  10. SUPPRESS句では、副指標(alternate index)にスパースキー(sparse key)を使用することを要求する。スパースキーは呼出し可能ファイル・ハンドラ(Callable File Handler)を通じてのみ利用可能であり、すべてのシステムで利用できるとはかぎらない(ファイル・ハンドラの詳細については、COBOLシステムのマニュアルを参照)。

  11. 分割キー名-1は、データ名-6および、発生するデータ名-7すべての、指定された順での連結から成るレコードキーを定義する。分割キー名-2は、データ名-9および、発生するデータ名-10すべての、指定された順での連結から成るレコードキーを定義する。
形式 5 (整列併合ファイル)
  1. ファイル管理記述項において、整列ファイルまたは併合ファイルに名前を付け、それと記憶媒体との関係を指定する。

  2. SORT STATUS句を指定すると、各整列処理の実行が終わった時点で、データ名-2によって指定される2文字のデータ項目に値が設定される。この値は整列処理の終了結果を示す。以下の状態キーの組み合わせが可能である。状態キー1=0で状態キー2=0であれば、正常終了を表わす。状態キー1=3で状態キー2=0であれば、パラメータ誤りを表わす。状態キー1=9であれば、状態キー2にオペレーティングシステムのエラーメッセージ番号が入れられている。状態キー 1 および 2、および状態の定義について詳しくは、手続き部の章の入出力状態節を参照。SORT STATUS句の代わりにFILE STATUS句を使用できる。しかし、整列ファイルまたは併合ファイルに指定したFILE STATUS句は、SORT STATUSの同義語として扱われる。

  3. ASSIGN句は注記となる。

6.3.3 入出力管理段落

機能

入出力管理段落では、再開点、ファイル間で共有する記憶領域、複数ファイル・リール中の順編成ファイルの位置を指定する。

入出力管理段落のRERUN句およびMULTIPLE FILE TAPE句は、ANSI '85標準では廃要素に分類されており、ANSI標準の次回の全面改訂の際に、削除される予定である。

この構文は、このCOBOLシステムに組み込まれているすべての方言で全面的に使用できる。FLAGSTD指令を使用すると、この構文が使われているすべての箇所を見つけ出すことができる。

標準COBOL定義の一部を構成するにもかかわらず、X/OpenのCOBOL言語定義では、RERUN句およびMULTIPLE FILE TAPE句は明示的に除外されている。したがって、X/OpenのCOBOLに準拠する原始プログラム内ではこれらの句を使用するべきではない。

一般形式

構文規則

  1. 入出力管理段落は、書いても書かなくてもよい。

  2. 整数-1 RECORDS句または整数-2 CLOCK-UNITS句を指定するときは、RERUN句に文字列を指定する。

  3. SAME AREA句においては、SORTとSORT-MERGEは同義語である。

  4. SAME SORT AREA句またはSAME SORT-MERGE AREA句を指定した場合、その中に最低1つは整列ファイルまたは併合ファイルであるファイル名を入れなければならない。整列ファイルでも併合ファイルでもないファイルを入れても構わない。

  5. SAME句には2つの形(SAME AREA, SAME RECORD AREA)がある。これらは下記のように使い分ける。

    1つの原始要素中に複数のSAME句を指定してもよい。しかし、下記の制約がある。

    1. 1つのファイル名を複数のSAME AREA(ファイル領域の共用)句内に指定することはできない。

    2. 1つのファイル名を複数のSAME RECORD AREA(レコード領域の共用)句内に指定することはできない。

    3. SAME AREA句に指定したファイル名をSAME RECORD AREA句内にも指定する場合、SAME AREA句内に指定したすべてのファイル名を、SAME RECORD AREA句内にも指定する。SAME AREA句内に指定しなかったファイル名を、SAME RECORD AREA句内に追加指定してもよい。SAME RECORD AREA句内に指定したすべてのファイルを、任意の時点で開いておくことができる。しかし、1つのSAME RECORD AREA句内に指定したファイルは、ある一時点では1つしか開くことはできない。

    4. 1つの整列ファイル名または併合ファイル名を、1つのSAME AREA句内に指定してはならない。

    5. 1つの整列ファイル名または併合ファイル名を、複数のSAME SORT AREA句またはSAME SORT-MERGE AREA句内に指定してはならない。

    6. SAME AREA句に指定した整列ファイル名でも併合ファイル名でもないファイル名を、SAME SORT AREA句またはSAME SORT-MERGE AREA句内にも指定する場合、SAME AREA句内に指定したすべてのファイル名をSAME SORT AREA句またはSAME SORT-MERGE AREA句内にも指定する。

  6. SAME AREA句, SAME SORT AREA句, SAME SORT-MERGE AREA句, SAME RECORD AREA句内に指定するファイルは、編成または呼出し法がすべて同じである必要はない。

  7. 文字列は、予約語または定数または利用者名であってはならない。

  8. END OF REEL/UNIT句は、ファイル名-2が順編成ファイルである場合にだけ指定できる。

  9. 1つのファイル名-2に、複数のRERUN句を指定してもよい。ただし、その場合は、下記の制約がある。

    1. 整数-1 RECORD句を複数指定する場合、それらに同じファイル名-2は指定できない。

    2. END OF REEL句またはEND OF UNIT句を複数指定する場合、それらに同じファイル名-2は指定できない。

  10. CLOCK-UNITSを指定したRERUN句は、1つだけ指定できる。

  11. 入出力管理段落中の各句は、後ろに終止符(.)を置いてもよい。

一般規則

  1. RERUN句は注記になる。

  2. SAME AREA句は、2つ以上のファイルの処理用に同じ記憶領域を使用することを指定する。ただし、整列ファイルおよび併合ファイルは対象外である。共有される領域には、対象となるファイルに割り当てられるすべての記憶領域が含まれる。したがって、SAME AREA句内に指定したファイルを同時に2つ以上開くことは有効ではない。(構文規則5cを参照)

  3. SAME RECORD AREA句は、現行の論理レコードを処理する間に2つ以上のファイルが同じ記憶領域を使用することを指定する。この場合、すべてのファイルを同時に開いておくことができる。SAME RECORD AREA中の論理レコードは、SAME RECORD AREA句の中に指定したファイルの内の、出力モードで開いたものの各論理レコード、および最も新しく読み込んだ入力ファイルの論理レコードを表わす。これは、共有領域を暗黙的に再定義していることに相当する。したがって、レコードは左詰めで配置される。

  4. APPLY句は注記になる。

  5. MULTIPLE FILE句は注記になる。

  6. SAME SORT AREA句またはSAME SORT-MERGE句を指定した場合、その中に少なくとも1つは整列ファイルまたは併合ファイルを入れなければならない。その中に整列ファイルでも併合ファイルでもないファイルを入れても構わない。具体的な記憶領域の共有のされ方は下記のとおり。

    1. SAME SORT AREA句またはSAME SORT-MERGE句によって、指定した整列ファイルまたは併合ファイルを整列または併合する際に使用される記憶領域が共有される。したがって、ある整列ファイルまたは併合ファイルを整列または併合するために割り当てた任意の記憶領域を、他の整列ファイルまたは併合ファイルを整列または併合するために再利用できる。

    2. 更に、整列ファイルでも併合ファイルでもないファイルに割り当てた記憶領域を、必要に応じて、SAME SORT AREA句またはSAME SORT-MERGE句の中に指定した整列ファイルまたは併合ファイルを整列または併合するために割り当てることもできる。

    3. 整列ファイルでも併合ファイルでもないファイル同士は、互いに同じ記憶領域を共有するようにはされない。それらのファイル間で記憶領域を共有させたければ、該当原始要素中でそれらのファイルを対象にしてSAME AREA句またはSAME RECORD AREA句を指定する。

    4. この句の中に指定した整列ファイルまたは併合ファイルを使用するSORT文またはMERGE文を実行する間は、この句の中に指定した整列ファイルでも併合ファイルでもないファイルを開くことはできない。

Copyright © 2002 Micro Focus International Limited. All rights reserved.
本書、ならびに使用されている商標および商品名は国際法によって保護されています。


Previous 見出し部 データ部 Next