IBM 拡張機能と COBOL 規格
IBM® 拡張機能とは、 COBOL 規格ではなく、 IBM によって定義される機能、構文規則、または動作を指します。 IBM 拡張機能は一般的に、ANSIおよびISOの COBOL 規格で規定されていない機能、構文、または規則を追加する。 85 COBOL Standard という用語は、それらの規格を指します。
IBM 拡張機能
COBOL 規格は業界仕様書に記載されています。
表 1 に、 IBM 拡張と簡単な説明をリストします。 標準の振る舞いが分かりにくい場合は、それを大括弧 [ ] で囲んで示しています。 拡張については、この文書の全編にわたって詳しく説明していますが、拡張として詳細に示されてはいません。
多くの IBM 拡張機能は、構文によって標準言語と区別されます。 それ以外については、コンパイラー・オプションを使用して 標準または拡張の振る舞いのいずれかを選択します。 通常、関連するコンパイラー・オプションが詳細規則に記載されています。 コンパイラオプションに関する情報は、 『 Enterprise COBOL プログラミングガイド 』 の「 85 COBOL オプション設定」および「標準準拠」 を参照してください
項目が拡張としてリストされている場合は、すべての関連規則もまた拡張になります。 例えば、DBCS 文字用の USAGE DISPLAY-1 は拡張としてリストされています。 したがって、これをステートメントおよび節で多数使用する場合もまた拡張になります。 ただし、個別にはリストされていません。
| 言語領域 | 拡張エレメント |
|---|---|
| COBOL ワード | DBCS 文字で書かれたユーザー定義語 DBCS 文字で書かれたコンピューター名 クラス名 (オブジェクト指向用) メソッド名 下線をユーザー定義語に含めることはできますが、先頭文字には使用できません。 |
| 国別文字サポート (Unicode サポート) | USAGE NATIONAL を使用した UTF-16 に対するサポート USAGE DISPLAY を使用した UTF-8 に対する許可 データ・カテゴリーが国別、国別編集、数字、数字編集、外部 10 進数、および外部浮動小数点の場合の USAGE NATIONAL NATIONAL句を伴うGROUP-USAGE句 ナショナルリテラル (10進数および16進数) 比喩的な定数 SPACE、ZERO、QUOTE、HIGH-VALUES、LOW-VALUES、ALL リテラルに対する国民性値 データ変換のための組み込み関数 UPPER- CASE および LOWER- CASE 関数を使用した拡張ケースマッピング |
| 暗黙の項目 | 特別なオブジェクト参照:
特殊レジスター
|
| 形象定数 | 形象定数 QUOTE の値としてアポストロフィ (') を選択ポインター用およびオブジェクト・リファレンス用の NULL および NULLS |
| リテラル | 区切り文字を開始および終了するときの引用符 (") の代わりとしてアポストロフィ (') を使用。英数字リテラル (混合リテラル) での 1 バイト文字と 2 バイト文字 の混合 英数字リテラルの16進表記は、開始デリミタ ヌル文字で終端する英数字リテラルは、開始デリミタ DBCS リテラルは、開始デリミタ 連続した英数字リテラル (最初のリテラルを継続される行の列 72 で終了し、次のリテラルを継続行内で引用符を使用して開始することにより、2 つの連続した英数字リテラルをコーディングします)。 国語リテラル 19 (から 31) 桁の固定小数点数字リテラル。 [ 85 COBOL 規格では、最大18桁を規定しています。] 浮動小数点数字リテラル。 |
| コメント | IDENTIFICATION DIVISION ヘッダーの前のコメント行。 |
| 終了マーカー | 以下のエンドマーカー :
|
| 索引付けと添え字付け | 別のテーブルに対して定義されたインデックス名を持つテーブルを参照する 相対添え字付けにおける演算子 + または - の後の正符号付き整数リテラルの指定。 |
| プログラムの IDENTIFICATION DIVISION | IDENTIFICATION の省略 ID
PROGRAM-ID、AUTHOR、INSTALLATION、DATE-WRITTEN、および SECURITY 段落ヘッダーの後のオプショナル分離文字ピリオド。 [ 85 COBOL 規格では、これらの段落見出しの後にそれぞれピリオドを付けることが要求されています。] PROGRAM-ID 段落内のプログラム名の後のオプショナル分離文字ピリオド。 [ 85 COBOL 規格では、プログラム名の後にピリオドを付けることが要求されます。] PROGRAM-ID 段落内のプログラム名を示す英数字リテラル。最外部プログラムの名前に 文字 $、#、および @ を使用可能。下線を先頭文字にすることが可能。プログラム名の長さは最大 160 文字。 [ 85 COBOL 標準は、プログラム名をユーザー定義語として指定することを要求する。] |
| 終了マーカー | リテラル内のプログラム名。 [ 85 COBOL 標準は、プログラム名をユーザー定義語として指定することを要求する。] |
| オブジェクト指向の構造 | クラス定義内:
メソッド定義内: |
| 「構成 (Configuration)」セクション | REPOSITORY 段落 |
| SPECIAL-NAMES 段落 | 節のオプションの順序。 [ 85 COBOL 規格では、節を構文図に示された順序でコーディングすることが要求される。] 節がコーディングされていない場合に、最後の節の後にピリオドを加えるかどうかのオプション。 [ 85 COBOL 規格では、句がコード化されていない場合でもピリオドが必要です。] 複数の通貨記号に関する条項。 [ 85 COBOL 標準では、単一の通貨記号句を許可します。] CURRENCY SIGN 節の WITH PICTURE SYMBOL 句 CURRENCY SIGN 節での複数文字および大/小文字混合の通貨符号 (WITH PICTURE SYMBOL 句が指定されている場合)。 [ 85 COBOL 規格では、通貨記号と通貨図形記号の両方を兼ねた単一文字のみが許可されています。 標準通貨符号は、以下のものであってはなりません。
通貨符号としての小文字の英字の使用。 [ 85 COBOL 標準は、大文字のみを許可します。] |
| 入出力セクション、ファイル制御段落 | 「FILE-CONTROL」のオプション。 INPUT-OUTPUT SECTION が指定されている場合、ファイル制御段落は指定されず、コンパイル単位に定義されたファイルはありません。 [ 85 COBOL 規格では、「FILE-CONTROL」が要求される 「INPUT-OUTPUT SECTION」の場合にコーディングします。 がコーディングされます。] 「FILE CONTROL」の場合の file-control-paragraph のオプション。 構文が指定されていますが、コンパイル単位にファイルが定義されていません。 [ 85 COBOL 規格では、「INPUT-OUTPUT SECTION」の場合、ファイル制御段落を符号化することが要求される。] がコーディングされます。] FILE STATUS節の 2番目のデータ名 ALTERNATE RECORD KEY節における RECORDのオプション性。 [ 85 COBOL 規格では「RECORD」という語の使用が要求される。] 数字、数字編集、英数字編集、英字、内部浮動小数点、外部浮動小数点、国別、国別編集、または DBCS の基本項目あるいは代替レコード・キー・データ項目。 [ 85 COBOL 規格では、キーが英数字であることが要求されます。] 可変長レコードを含む索引ファイル用の最小レコード・サイズの範囲外で定義された基本または代替レコード・キー。 [ 85 COBOL 規格では、主レコードキーと代替レコードキーは最小レコードサイズ内に収めることが要求される。] FILE STATUS節で DISPLAYまたはNATIONALとして使用される数値データ項目。 [ 85 COBOL 規格では、英数字のファイルステータスデータ項目が要求される。] 「ORGANIZATION IS LINE SEQUENTIAL」節と行順ファイル制御形式 |
| 入出力セクション、I-O-CONTROL パラグラフ | APPLY WRITE-ONLY 節 順次、索引付き、およびソート・マージ形式の I-O-control 項目の SAME 節に 1 つのファイル名のみを指定。 [ COBOL 85 標準は、少なくとも2つのファイル名を要求します。] RERUN 節のキーワード ON のオプション。 [ 85 COBOL 規格では、ON をコード化することが要求されます。] 行順次形式の I-O-control 項目 ソート・マージ I-O-control 項目の RERUN 節 |
| DATA DIVISION | LOCAL-STORAGE SECTION
データ記述項目の同じ階層レベルにある他のレベル番号よりも低いレベル番号の指定。 [ 85 COBOL 標準では、階層構造において同一レベルにあるすべての基本項目またはグループ項目には、同一のレベル番号を割り当てることを要求している。] 内部浮動小数点、外部浮動小数点、DBCS、国別、および国別編集のデータ・カテゴリー USAGE NATIONAL の数字データ・カテゴリー USAGE NATIONAL の数字編集データ・カテゴリー |
| FILE SECTION | LABEL RECORDS句のデータ名、ユーザーラベルを指定するために
行順次形式ファイル記述項目 |
| ソート/マージ・ファイル記述項目 | 以下の節: |
| BLOCK CONTAINS 節 | QSAM ファイルに対する BLOCK CONTAINS 0。 [ 85 COBOL 規格では、BLOCK CONTAINS 句において少なくとも 1 つの CHARACTER または RECORD を指定することが要求される。] |
| VALUE OF 節 | VALUE 節がないと、SD の元で指定された場合の実行に影響します。 |
| DATA RECORDS 節 | 指定したデータ名 に対する 01 レコード記述項目のオプション。 [ 85 COBOL 規格では、同じデータ名を持つ 01 レコードを指定することが要求される。] |
| LINAGE 節 | EXTEND モードでオープンされたファイルに対する LINAGE の指定 |
| BLANK WHEN ZERO 節 | ZERO に対する代替スペル ZEROS および ZEROES |
| GLOBAL 節 | LINKAGE SECTION での GLOBAL の指定 |
| INDEXED BY 句 | 固有でない非参照索引名 |
| OCCURS 文節 | 可変長テーブルに対する "integer-1 TO" の省略 複合 OCCURS DEPENDING ON。 [ 85 COBOL 標準では、OCCURS DEPENDING ON を含むエントリは従属エントリのみが続くこと、また OCCURS DEPENDING ON を含むエントリは OCCURS DEPENDING ON を含むエントリの従属エントリになってはならないと規定している。] キー名が固有でない場合の、修飾子なしで指定されたキーの暗黙の修飾 INDEXED BY 句の指定がないテーブルの索引付けによる参照 ASCENDING/DESCENDING KEY 句の、 USAGE COMPUTATIONAL-1、 COMPUTATIONAL-2、 COMPUTATIONAL-3、 COMPUTATIONAL-4、 および COMPUTATIONAL-5 のキー 参照されない固有でない索引名の受け入れ |
| PICTURE 節 | 31 から 50 までの文字を含む PICTURE 文字ストリング。 [ 85 COBOL 標準では、最大30文字まで許可されています。] ピクチャー・シンボル G および N ピクチャー・シンボル E および外部浮動小数点ピクチャー・フォーマット PICTURE 節がデータ記述項目の最後の節ではない場合の、 直後に分離文字コンマまたは分離文字セミコロンが付く末尾コンマ挿入文字または末尾ピリオド挿入文字のコーディング [ 85 COBOL 規格では、カンマまたはピリオドで終わる画像を含む PICTURE 節がエントリの最後の節であり、その直後に区切りピリオドが続くことが要求される。] CURRENCY コンパイラー・オプションを使用した通貨符号および通貨記号の選択 大文字小文字が区別される通貨記号 USAGE DISPLAY および PACKED-DECIMAL の数値項目および USAGE DISPLAY の数字編集項目に対する最大 31 桁の指定 BINARY、COMPUTATIONAL、または COMPUTATIONAL-4 の使用法で記述されたデータ項目の値に対する TRUNC コンパイラー・オプション の影響 |
| REDEFINES 節 | 再定義データ項目の REDEFINES の指定 従属レベルでの、再定義データ項目よりサイズが大きいデータ項目の再定義の指定 |
| SYNCHRONIZED 節 | レベル 01 項目に対する SYNCHRONIZED の指定 |
| USAGE 節 | 以下の句:
USAGE INDEX の項目に対する SYNCHRONIZED 節の使用 |
| 条件名エントリのVALUE句 | ファイルおよび LINKAGE SECTION における、条件名項目以外の VALUE 節 DISPLAY 以外の USAGE を持つグループでの条件名項目に対する VALUE 節 VALUE IS NULL および VALUE IS NULLS |
| VOLATILE 節 | 形式 1 データ記述項目内の VOLATILE 節 |
| PROCEDURE DIVISION | セクション名の省略 セクション名が省略されている場合の段落名の省略 メソッド、ファクトリー、またはオブジェクトの手続き部 PROCEDURE DIVISION のヘッダーで USING 句を使用しない LINKAGE SECTION のデータ項目の参照 (それらのデータ名 が ADDRESS OF 句または ADDRESS OF 特殊レジスターのオペランドである場合) 以下のステートメント: |
| PROCEDURE DIVISION ヘッダー | BY VALUE 句
データ項目が記述にREDEFINES節を持つ場合 、USING句でデータ項目を指定する USING句で指定する、あるデータ項目の複数のインスタンス |
| 宣言型プロシージャー | 宣言型プロシージャーからの非宣言型プロシージャーの実行 宣言型プロシージャーの GO TO ステートメントにおける宣言型プロシージャーまたは非宣言型プロシージャーの参照。 [ 85 COBOL 標準は、宣言的プロシージャが非宣言的プロシージャを参照してはならないと規定している。 別の宣言型プロシージャーまたは非宣言型プロシージャーからの宣言型プロシージャーの参照は、PERFORM ステートメントを使用した場合のみ許可されます。] アクティブ宣言の実行 |
| プロシージャー | 優先順位番号 を正の符号付き数字リテラルとして指定。 [ 85 COBOL 規格では符号なし整数が要求されます。] 宣言の後、または宣言がない場合のセクション・ヘッダーの省略。 [ 85 COBOL 規格では、「宣言部」の後にセクション見出しを配置することが要求される。] 構文および「END DECLARATIVES」の後に記述します。 構文.] 宣言がない場合の初期段落名 の省略。 [ 85 COBOL 規格では、以下の状況において段落名が必要です:
また、 85 COBOL 規格では、手続き文は段落内に記述することが求められています セクション内に含まれていない段落の指定 (セクション内に含まれている段落がある場合でも指定できる)。 [ 85 COBOL 規格では、宣言文が存在しない場合を除き、段落はセクション内に配置されなければならない。] COBOL 85標準は、すべての段落がセクションに含まれるか、あるいは一切含まれないかのいずれかを要求する |
| 条件式 | DBCS および KANJI クラス条件 NUMERIC クラス・テストにおける USAGE COMPUTATIONAL-3 または USAGE PACKED-DECIMAL データ項目の指定 |
| 比較条件 | 英数字、DBCS、または国別リテラルを括弧で囲む データ・ポインター・フォーマット、プロシージャー・ポインターおよび関数ポインター・フォーマット、 およびオブジェクト・リファレンス・フォーマット 索引名の演算式との比較 簡略複合比較条件内の括弧の使用 注記: Enterprise COBOL は、以下の例外を除き、 IBM 拡張機能としてほとんどの括弧の使用をサポートしています:
|
| CORRESPONDING 句 | 充てん項目に従属する ID の指定 |
| INVALID KEY 句 | INVALID KEY フレーズと 適用可能な EXCEPTION/ERROR 手順の両方の省略。 [ COBOL 85規格では、少なくともいずれか1つが必要です。] |
| ACCEPT ステートメント | FROM 句の environment-name オペランド DATE YYYYMMDD 句 DAY YYYYDDD 句 |
| ADD ステートメント | 18 桁より大きいオペランドの合成 |
| ALLOCATE ステートメント | LOC 句 |
| CALL ステートメント | 呼び出されるプログラムを識別するためのプロシージャー・ポインターおよび関数ポインターのオペランド 以下の句 およびパラメーター:
引数としての ファイル名 の指定 英字またはゾーン 10 進数データ項目での呼び出されるプログラム名の指定 従属グループ項目として定義された引数の指定。 [ 85 COBOL 標準では、引数は基本データ項目、またはレベル01で定義されたグループ項目であることが要求される。] |
| CANCEL ステートメント | 英字またはゾーン 10 進数データ項目での取り消すプログラム名の指定 取り消すプログラムの名前に対する PGMNAME コンパイラー・オプションの影響 |
| CLOSE ステートメント | WITH NO REWIND 句 行順次形式 |
| COMPUTE ステートメント | 等号 (=) に代わるワード EQUAL の使用 |
| DISPLAY ステートメント | UPON 句の environment-name オペランド 符号付き数字リテラルおよび非整数数字リテラルの表示 |
| DIVIDE ステートメント | 18 桁より大きいオペランドの合成 |
| EXIT ステートメント | EXIT ステートメントの前または後にステートメントを持つ文の中、または別の文を持つ段落の中での EXIT ステートメントの指定。 [ 85 COBOL 規格では、EXIT文は単独の文で記述され、かつその文が段落内で唯一の文であることが要求される。] |
| EXIT PROGRAM ステートメント | 命令ステートメントのシーケンス内の最後のステートメントに先立つ EXIT PROGRAM の指定。 [ COBOL 85標準は、命令文のシーケンスにおいて、EXIT PROGRAM文を最後の文として指定することを要求する。] |
| GO TO ステートメント | 命令ステートメントのシーケンス内の最後のステートメントに先立つ無条件フォーマットのコーディング。 [ 85 COBOL 規格では、無条件の GO TO をコーディングすることが要求される:
|
| IF ステートメント | END-IF と NEXT SENTENCE 句との併用。 [ COBOL 85 標準は、NEXT SENTENCE文とのEND-IFの使用を禁止している。] |
| INITIALIZE ステートメント | REPLACING 句の中の DBCS、EGCS、NATIONAL、および NATIONAL-EDITED
OCCURS 節の DEPENDING 句を含むデータ項目の初期化 |
| MERGE ステートメント | SAME 節でのファイル名の指定 |
| MULTIPLY ステートメント | 18 桁より大きいオペランドの合成 |
| OPEN ステートメント | 行順次形式 LINAGE 節を持つファイルに対する EXTEND 句の指定 |
| PERFORM ステートメント | 空の行内 PERFORM ステートメント 複数のアクティブな PERFORMS に対する共通出口 |
| READ ステートメント | AT END 句と該当する宣言型プロシージャーの両方の省略 INVALID KEY 句および適当な宣言型プロシージャーの省略 グループ項目ではなく基本英数字項目でもない項目の読み取り |
| RETURN ステートメント | 英数字グループ項目ではなく基本英数字項目でもない項目へのリターン |
| REWRITE ステートメント | INVALID KEY 句および適当な宣言型プロシージャーの省略 再書き込みされるレコードの中の文字位置の数以外の文字位置の数によるレコードの再書き込み |
| SEARCH ステートメント | END SEARCH を NEXT SENTENCE と共に指定 二分探索フォーマットにおける NEXT SENTENCE 句と命令ステートメントの省略 |
| SET ステートメント | データ・ポインター・フォーマット プロシージャー・ポインターおよび関数ポインター・フォーマット オブジェクト・リファレンス・フォーマット |
| SORT ステートメント | SAME 節での GIVING ファイル名の指定 |
| START ステートメント | INVALID KEY 句および適当な例外プロシージャーの省略 英数字以外のカテゴリーのキーの使用 |
| STOP ステートメント | 非整数固定小数点リテラルまたは符号付き数値整数または非整数固定小数点リテラルの指定 文の最後のステートメント以外のステートメントとしての STOP のコーディング |
| STRING ステートメント | INTO 句で指定されたデータ項目の参照変更 |
| SUBTRACT ステートメント | 18 桁より大きいオペランドの合成 |
| UNSTRING ステートメント | 送り出しフィールドの参照変更 |
| WRITE ステートメント | INVALID KEY 句と NOT ON INVALID KEY 句 行順次形式 相対ファイルに対する、置き換えられるレコード内の文字位置の数以外の文字位置の数の書き込み 単一の WRITE ステートメントでの ADVANCING PAGE 句と END-OF-PAGE 句の指定 ファイルに書き込まれるレコードの長さに対する ADV コンパイラー・オプションの影響 カード・パンチ・ファイルに対するスタッカー選択と共に WRITE ADVANCING を使用 相対ファイルまたは索引付きファイルに対する、INVALID KEY 句と適当な例外プロシージャーの省略 |
| 組み込み関数 | INTEGER-OF-DATE および INTEGER-OF-DAY 関数に対する INTDATE コンパイラオプションの影響 関数: |
| FACTORIAL 関数 | 引数で許可される値の範囲に対する ARITH(EXTEND) コンパイラー・オプションの影響 |
| LENGTH 関数 | 関数への引数としてのポインター、ADDRESS OF 特殊レジスター、または LENGTH OF 特殊レジスターの指定 |
| NUMVAL 関数 | 引数で許可される最大桁数に対する ARITH(EXTEND) コンパイラー・オプションの影響 |
| NUMVAL-C 関数 | 引数で許可される最大桁数に対する ARITH(EXTEND) コンパイラー・オプションの影響 |
| NUMVAL-F 関数 | 引数で許可される最大桁数に対する ARITH(EXTEND) コンパイラー・オプションの影響 |
| TEST-NUMVAL 関数 | 引数で許可される最大桁数に対する ARITH(EXTEND) コンパイラー・オプションの影響 |
| TEST-NUMVAL-C 関数 | 引数で許可される最大桁数に対する ARITH(EXTEND) コンパイラー・オプションの影響 |
| TEST-NUMVAL-F 関数 | 引数で許可される最大桁数に対する ARITH(EXTEND) コンパイラー・オプションの影響 |
| コンパイラー指示ステートメント | 以下のステートメント: |
| コンパイラー・ディレクティブ | CALLINTERFACE 指示 |
| COPY ステートメント | テキスト名修飾子を指定する "OF library-name" 構文のオプション テキスト名およびライブラリー名 を指定するためのリテラル SUPPRESS 句 ネストされた COPY ステートメント REPLACING オペランドのワード ・フォーム内の最初または最後の文字としてのハイフンの使用 REPLACING オペランドのワード ・フォーム内での任意の文字の使用 (COBOL 区切り文字を除く)。 [ 85 COBOL 標準は、ユーザー定義語の形成に使用される文字のみを受け入れます。] |
COBOL 標準
COBOL 規格、 または 85 COBOL 規格は、業界仕様書に記載されています。 拡張機能は、規則の軽微な緩和から、XMLサポート、Unicodeサポート、Java相互運用性のためのオブジェクト指向 COBOL、DBCS文字処理といった主要な機能まで多岐にわたる。