環境部

本章では、環境部について説明します。

1. 構成セクション

構成セクションでは、プログラムの実行環境を記述することができます。構成セクションは必ず環境部に記述される必要があります。

figure ed configuration section
構成セクション

構成セクションは、以下の段落で構成されます。

  • SOURCE-COMPUTER段落

  • OBJECT-COMPUTER段落

  • SPECIAL-NAMES段落

1.1. SOURCE-COMPUTER段落

SOURCE-COMPUTER段落では、ソース・プログラムがコンパイルされたコンピュータの名前を記述します。

figure ed source computer
SOURCE-COMPUTER段落
  • computer-name

    • ソース・プログラムをコンパイルするシステムの名前を指定します。

    • プログラムの作成者が情報を残す目的でのみ使用されます。

SOURCE-COMPUTER段落は構文チェックは行われますが、プログラムの実行には影響を与えません。

1.2. OBJECT-COMPUTER段落

OBJECT-COMPUTER段落では、コンパイラーによって生成されたランタイム・モジュールが実行される環境について記述します。

figure ed object computer
OBJECT-COMPUTER段落
  • computer-name

    • コンパイルされたモジュールが実行されるシステムの名前を指定します。

    • プログラムの作成者が情報を残す目的でのみ使用されます。

  • PROGRAMMING COLLATING SEQUENCE IS

    • プログラムで使用される照合シーケンスを指定します。指定された照合シーケンスは、そのプログラムと、そのプログラムが含んでいるすべてのプログラムで使用されます。

    • PROGRAM COLLATING SEQUENCE節は、次のような英数字を比較するときに使用されます。

      • 比較条件において明示的に指定されたもの

      • 条件名条件のうち明示的に指定されたもの

    • PROGRAM COLLATING SEQUENCE節を省略した場合、ASCII照合シーケンスが適用されます。

OBJECT-COMPUTER段落は全体を構文チェックしますが、PROGRAM COLLATING SEQUENCE節だけがプログラムの実行に影響を与えます。

1.3. SPECIAL-NAMES段落

SPECIAL-NAMES段落の機能は、以下のとおりです。

  • alphabet-nameを文字セットおよび照合シーケンスと関連付けます。

SPECIAL-NAMES段落の節は、任意の順序で指定することができます。

figure ed special names
SPECIAL-NAMES段落
figure ed special names entry1
SPECIAL-NAMESの項目
figure ed special names phrase1
SPECIAL-NAMESの句

節を指定しない場合、区切り文字のピリオド(.)は省略が可能です。しかし、節を指定する場合は、最後の節の後にピリオドが必要です。

  • environment-name-1

    • システム・デバイスを表す名前です。次の名前を指定できます。

      environment-name-1 意味 指定できるステートメント

      SYSIN, SYSIPT

      システム入力装置

      ACCEPT

      SYSOUT, SYSLIST, SYSLST

      システム出力装置

      DISPLAY

      SYSPUNCH, SYSPCH

      せん孔装置

      DISPLAY

      CONSOLE

      コンソール

      ACCEPT, DISPLAY

      SYSPUNCH、SYSPCHは、構文チェックは行われますが、実行には影響を与えません。

  • environment-name-2

    • 1バイトのUser programmable status indicator(UPSI)スイッチを指定します。(範囲:USPI-0〜USPI-7)

    • environment-name-2に指定された環境名は、構文はチェックされますが、実行には影響を与えません。

  • mnemonic-name-1, mnemonic-name-2

    • ユーザー定義語の規則に従って簡略名を定義します。

    • mnemonic-name-1は、ACCEPT、DISPLAY、およびWRITEステートメントで使用できます。

    • mnemonic-name-2は、SETステートメントでのみ参照できます。

  • ON STATUS IS, OFF STATUS IS

    • User programmable status indicator(UPSI)スイッチのON/OFF状態を定義します。

  • condition-1, condition-2

    • 条件名条件のみ使用できます。

    • ユーザー定義語の規則に従って定義します。少なくとも1文字の英字が含まれる必要があります。

    • SPECIAL-NAMES段落で指定された条件名は、そのプログラムが含んでいるすべてのプログラムで参照できます。

環境名および簡略名は、一意である必要はありません。環境名と簡略名を同じく設定した場合は、簡略名に指定した名前が、環境名に指定した名前より優先順位が高いです。

1.3.1. ALPHABET節

ALPHABET節は、指定した文字セットまたは照合シーケンスに英字名を関連付けます。

指定された英字名は、以下で使用される場合、照合シーケンスの指定を意味します。

  • OBJECT-COMPUTER段落のPROGRAM COLLATING SEQUENCE節

  • SORTステートメントまたはMERGEステートメントのCOLLATING SEQUENCE句

指定可能な英字は、以下のとおりです。

  • STANDARD-1

    ASCII文字セットを指定します。

  • NATIVE, EBCDIC

    EBCDIC文字セットを指定します。

  • literal-1, literal-2, literal-3

    プログラムが、以下の規則に従って、英数字データの照合シーケンスを決定するときに指定します。

    • リテラルの定義順序が、照合シーケンスの順序になります。

    • 明示的に指定されていない文字は、指定の照合シーケンスにおいて、明示的に指定されたどの文字よりも大きい値としてみなされます。明示的に指定されていない文字の順序は、その文字が属する文字セットの順序に従います。

    • 英数字リテラルまたは数値リテラルである必要があり、すべて同じタイプのリテラルでなければなりません。英数字リテラル内のそれぞれの文字は、文字セット内の実際の文字を表します。

      指定する数値リテラルは、符号なし整数である必要があります。各数値リテラルの値は、照合シーケンス内で有効な値でなければなりません。

    • ALPHABET節で同じ文字を2回以上指定することはできません。

    • THROUGHまたはALSOに指定する英数字リテラルは、1バイト以上である必要があります。

      THROUGHを指定する場合、literal-1に指定された文字で始まり、literal-2に指定された文字で終了する、文字セット内の連続する文字が照合シーケンスになります。

      たとえば、"Z" THROUGH "A"と指定した場合、大文字の英字の順序は次のようになります。

      ZYXWVUTSRQPONMLKJIHGFEDCBA
    • ALSO句を指定する場合、literal-1、literal-3などに指定された文字は、照合シーケンスにおいて同じ位置になります。

      たとえば、"D" ALSO "N" ALSO "%"と指定した場合、文字D、N、%は、照合シーケンスにおいて同じ位置にあるとみなされます。

    • 表意定数は指定できません。

ALPHABET節で指定された照合シーケンスの最も高い値の文字は、表意定数のHIGH-VALUEの値に影響を与えます。ALSO句の指定により、複数の文字が最も高い値を持つ場合は、ALSO句で指定された最後の文字がHIGH-VALUEになります。

同様に、指定された照合シーケンスの最も低い値の文字がLOW-VALUE文字になります。ALSO句の指定により、複数の文字が同じ位置にある場合、最初に指定された文字がLOW-VALUEになります。

1.3.2. CLASS節

CLASS節は、クラス名を指定された文字セットと関連付けます。

  • CLASS class-name-1 IS

    class-name-1を、CLASS節で指定された文字セットと関連付けます。class-name-1はクラス条件でのみ参照することができます。

  • literal-4, literal-5

    • 数字または英数字のみ使用できます。

    • 浮動小数点リテラルは使用できません。

    • THROUGH節が使用される場合、literal-4、literal-5は、1文字の長さである必要があります。

1.3.3. DECIMAL-POINT IS COMMA節

PICTURE文字列と数値リテラルでピリオドとコンマを置き換えます。

  • DECIMAL-POINT IS COMMA

2. 入出力セクション

入出力セクションの正確な内容は、ファイル編成とアクセス方式によって異なります。詳細については、 ORGANIZATION節およびACCESS MODE節の説明を参照してください。

入出力セクションは必ず環境部に記述される必要があり、2つの段落を含みます。

figure ed input output section
入出力セクションの形式
  • FILE-CONTROL

    • FILE-CONTROLキーワードは、FILE-CONTROL段落を指定します。このキーワードは、FILE-CONTROL段落の先頭に一度だけ指定できます。

    • FILE-CONTROL段落は、FILE-CONTROLキーワードが記述されたとしても、プログラム内で定義されたファイルがない場合は、省略することができます。

    • FILE-CONTROL段落は、物理ファイルを指定します。

  • IO-CONTROL

    • IO-CONTROLキーワードは、IO-CONTROL段落を指定します。

    • IO-CONTROL段落は、COBOLプログラムと外部のデータセット間の効率的なデータ転送に必要な情報を記述します。

2.1. FILE-CONTROL段落

FILE-CONTROL段落は、COBOLプログラムの各ファイルを外部データセットに関連付け、ファイル編成、アクセス方式、およびその他の情報を指定します。

以下は、使用可能なファイル編成およびアクセス方式についての説明です。

ファイル編成 アクセス方式

順次編成

非VSAM、VSAM

相対編成

VSAM

索引編成

VSAM

行順次編成

テキスト・ストリームI/O

FILE-CONTROL段落は、FILE CONTROLキーワードで始まり、その後にピリオド(.)が付きます。

この段落は、データ部のFD項目とSD項目に記述されたファイルに対して、それぞれ1つの項目を含んでいる必要があります。各項目では、SELECT節が最初に記述される必要があります。その他の節は、任意の順序で記述することができます。

以下は、FILE-CONTROL段落の形式です。

  • 順次ファイル制御項目

    figure ed file control format1
    FILE-CONTROL段落の形式1
  • 索引付きファイル制御項目

    figure ed file control format2
    FILE-CONTROL段落の形式2
    figure ed file control format2 entry1
    FILE-CONTROL段落の形式2 - 項目
  • 相対ファイル制御項目

    figure ed file control format3
    FILE-CONTROL段落の形式3
  • 行順次ファイル制御項目

    figure ed file control format4
    FILE-CONTROL段落の形式4

2.1.1. SELECT節

SELECT節は、COBOLプログラムのファイル識別子を定義します。

項目 説明

SELECT OPTIONAL

構文チェックのみを行います。SELECTのみを設定した場合と同様に実行します。

file-name-1

データ部のFD項目またはSD項目で識別できる必要があります。

COBOLのユーザー定義名の命名規則に適合している必要があります。

少なくとも1文字の英字を含み、現在のプログラム内で一意である必要があります。

2.1.2. ASSIGN節

ASSIGN節は、プログラム内のファイル名を実際の外部データセットに関連付けます。

項目 説明

assignment-name-1

外部データセットの名前を指定します。

JCL DD文に記述された名前、またはファイル・パスを指定します。

ソート・ファイルまたはマージ・ファイルである場合、名前はコメントとして処理されます。

2.1.3. ORGANIZATION節

ORGANIZATION節は、ファイルの論理構造を指定します。論理構造は、ファイルの作成時点で確定され、それ以降は変更することができません。

  • ORGANIZATION IS SEQUENTIAL(形式1)

  • ORGANIZATION IS INDEXED(形式2)

  • ORGANIZATION IS RELATIVE(形式3)

  • ORGANIZATION IS LINE SEQUENTIAL(形式4)

ORGANIZATION節を省略する場合、コンパイラーはORGANIZATION IS SEQUENTIALに設定します。

ファイルの作成時にデータの編成を決定します。ファイルは一度作成されると、拡張することはできますが、その編成を変更することはできません。

  • 順次編成

    • レコードの物理的な順序が、レコードの順序を決定します。ファイルを拡張しても、ファイルの中のレコード間の前後関係は変更されません。

    • レコードは、固定長または可変長のどちらも可能です。

    • キーはありません。

  • 索引編成

    • ファイルの各レコードは、1つ以上の内部キー(キー・データ項目)を持ちます。それぞれのキーは索引を持ち、各索引は対応する内部キー・データ項目の内容に従って、レコードの検索方法を提供します。

    • レコードは、固定長または可変長のどちらも可能です。

    • 各レコードは、基本キー・データ項目を含んでいる必要があります。

      レコードの挿入、更新、削除を実行するとき、そのレコードは基本キー値で識別することができます。したがって、基本キー・データ項目の値は一意である必要があり、レコードが更新されるときに変更されてはなりません。この基本キー値は、FILE-CONTROL段落のRECORD KEY節に記述することにより、プログラムで使用することができます。

    • 索引編成ファイルの各レコードは、複数の代替キー・データ項目を持つことができます。

      各代替キーは読み出すレコードを識別する別の方法を提供します。この代替キー値は、FILE-CONTROL段落のALTERNATE RECORD KEY節に記述することにより、プログラムで使用することができます。

  • 相対編成

    • それぞれのレコードは、相対レコード番号によって識別されます。相対レコード番号は、レコードには含まれません。

    • アクセス方式は、相対レコード番号に基づいてレコードを格納および取得する方式です。

    • ファイル内のレコードの物理的な順序は、各レコードの相対レコード番号とは関係がありません。

    • レコードは、固定長または可変長のどちらも可能です。

  • 行順次編成

    • 各レコードは、レコードの末尾にレコード区切り子が付きます。区切り子は、レコード長には含まれません。

    • レコードがファイルに書き込まれるとき、レコードの末尾に空白文字がある場合は、それを削除した後レコード区切り子が追加されます。

    • レコードを読み取るときは、レコード区切り子は削除され、レコードの残りの部分は空白文字で埋められます。EOFを検出した場合は、レコード領域の残りは空白文字で埋められます。

    • ファイルに改行文字がある場合、その改行文字はレコード区切り子として機能します。

コンパイラーは、索引編成や相対編成を直接提供しませんが、OpenFrameファイル・システムと連携して利用される場合は、サポートすることができます。

2.1.4. ACCESS MODE節

ACCESS MODE節は、ファイルのレコードを処理するためにアクセスする方式を定義します。省略する場合、順次アクセスが設定されます。

  • ACCESS MODE IS SEQUENTIAL

    すべての形式で記述することができます。

    形式 説明

    形式1:順次アクセス

    ファイルのレコードは、ファイルの作成または拡張時に生成されたシーケンスによってアクセスされます。

    形式1は、順次アクセスのみをサポートします。

    形式2:索引アクセス

    ファイルのレコードは、レコード・キー値の昇順にアクセスされます。

    形式3:相対アクセス

    ファイルのレコードは、相対レコード番号の昇順にアクセスされます。

    形式4:行順次アクセス

    ファイルのレコードは、ファイルの作成または拡張時に生成されたシーケンスによってアクセスされます。

    形式4は、順次アクセスのみをサポートします。

  • ACCESS MODE IS RANDOM

    形式2と形式3で記述することができます。

    形式 説明

    形式2:索引アクセス

    レコード・キー・データ項目の値に基づいて、レコードにアクセスします。

    形式3:相対アクセス

    相対キー・データ項目の値に基づいて、レコードにアクセスします。

  • ACCESS MODE IS DYNAMIC

    形式2と形式3で記述することができます。

    形式 説明

    形式2:索引アクセス

    ファイルのレコードは、使用された入出力ステートメントの形式に応じて、順次にまたはランダムにアクセスされます。

    形式3:相対アクセス

    ファイルのレコードは、使用された入出力ステートメントの形式に応じて、順次にまたはランダムにアクセスされます。

2.1.5. RECORD KEY節

RECORD KEY節(形式2)は、索引付きファイルの基本レコード・キーを定義するデータ項目を記述します。基本レコード・キー・データ項目の値は、一意である必要があります。

  • data-name-2

    • 基本レコード・キー・データ項目です。

    • これは、ファイルのレコード記述項目に記述されている必要があります。

      レコード・キーは、次のデータ・カテゴリのいずれかを持つことができます。

      • 英数字

      • 数字

      • 数字編集

      • 英数字編集

      • 英字

      • 外部浮動小数点

      • 内部浮動小数点

      • DBCS

    • data-name-2は、可変オカレンス・データ項目を含むグループ項目を参照することはできません。data-name-2は、修飾することができます。

    • data-name-2のデータ記述とレコード内での相対位置は、ファイルが定義されたときに使用されたものと同じである必要があります。

2.1.6. ALTERNATE RECORD KEY節

ALTERNATE RECORD KEY節(形式2)は、索引付きファイルの代替レコード・キーを定義するデータ項目を記述します。

  • data-name-3

    • 代替レコード・キー・データ項目です。

    • これは、ファイルのレコード記述項目に記述されている必要があります。

      レコード・キーは、次のデータ・カテゴリのいずれかを持つことができます。

      • 英数字

      • 数字

      • 数字編集

      • 英数字編集

      • 英字

      • 外部浮動小数点

      • 内部浮動小数点

      • DBCS

    • data-name-3は、可変オカレンス・データ項目を含むグループ項目を参照することはできません。data-name-3は、修飾することができます。

    • data-name-3のデータ記述とレコード内での相対位置は、ファイルが定義されたときに使用されたものと同じである必要があります。

DUPLICATES句を指定しない場合、ALTERNATE RECORD KEYデータ項目が参照する内容は、ファイル内で一意である必要があります。

2.1.7. RELATIVE KEY節

RELATIVE KEY節(形式3)には、相対ファイル内のレコードの相対レコード番号を定義するデータ項目を記述します。

項目 説明

data-name-4

符号なし整数データ項目を指定します。PICTURE記号のPは含むことができません。

data-name-4は、相対ファイルのレコード記述項目に定義してはなりません。つまり、相対キーはレコードの一部ではありません。

data-name-4は、修飾することができます。

ACCESS IS SEQUENTIALについては、STARTステートメントを使用する場合のみ、data-name-4が必要です。ACCESS IS RANDOMとACCESS IS DYNAMICについては、常にdata-name-4が必要です。

2.1.8. FILE STATUS節

FILE STATUS節は、入出力ステートメントの実行結果を示します。FILE STATUS節を指定すると、ファイルに対する入出力操作が実行された後、その結果値をファイル・ステータス・キー・データ項目に格納します。

項目 説明

data-name-1

ファイル・ステータス・キー・データ項目は、WORKING-STORAGE、LOCAL-STORAGE、またはLINKAGEセクションで、次のいずれかの形式で定義することができます。

  • 2文字の英数字データ項目

  • 2桁の数字データ項目(usage DISPLAY)

data-name-1は、PICTURE記号のPを含むことができません。

data-name-1は、修飾することができます。

ファイル・ステータス・キー・データ項目は、任意の位置に記述してはなりません。つまり、OCCURS DEPENDING ON節を含むデータ項目の次に使用することはできません。

data-name-8

構文チェックのみ行われ、使用されません。

2.2. IO-CONTROL段落

IO-CONTROL段落は、様々なファイルがストレージ領域を共有する場合に使用します。

figure ed io control
IO-CONTROL段落

2.2.1. SAME AREA節

SAME AREA節は、2つ以上のファイルのI/O処理時に、同じレコード・バッファー領域を使用するように指定します。指定されたファイルは、編成やアクセス方式が同じである必要はありません。

項目 説明

filename-3, file-name-4

同じプログラムのFILE-CONTROL段落に記述する必要があります。

EXTERNAL節で定義されたファイルを記述してはなりません。