IBM 拡張とは、業界仕様にリストされた COBOL 標準ではなく、IBM によって定義されたフィーチャー、構文規則、または振る舞いを指します。
表 1 には、IBM 拡張が要旨と共に記載されています。標準の振る舞いが分かりにくい場合は、それを大括弧 [ ] で囲んで示しています。拡張については、この文書の全編にわたって詳しく説明していますが、拡張として詳細に示されてはいません。
IBM 拡張の多くは、その構文によって標準言語と区別されています。 それ以外については、コンパイラー・オプションを使用して 標準または拡張の振る舞いのいずれかを選択します。通常、関連するコンパイラー・オプションが詳細規則に記載されています。コンパイラー・オプションについては、「Enterprise COBOL プログラミング・ガイド」を参照してください。
項目が拡張としてリストされている場合は、すべての関連規則もまた拡張になります。 例えば、DBCS 文字用の USAGE DISPLAY-1 は拡張としてリストされています。 したがって、これをステートメントおよび節で多数使用する場合もまた拡張になります。 ただし、個別にはリストされていません。
| 言語領域 | 拡張エレメント |
|---|---|
| COBOL ワード | DBCS 文字で書かれたユーザー定義語 DBCS 文字で書かれたコンピューター名 クラス名 (オブジェクト指向用) メソッド名 |
| 国別文字サポート (Unicode サポート) | USAGE NATIONAL を使用した UTF-16 に対するサポート USAGE DISPLAY を使用した UTF-8 に対する許可 データ・カテゴリーが国別、国別編集、数字、数字編集、外部 10 進数、および外部浮動小数点の場合の USAGE NATIONAL NATIONAL 句を使用した GROUP-USAGE 節 国別リテラル (基本および 16 進数) 形象定数 SPACE、ZERO、QUOTE、HIGH-VALUES、LOW-VALUES、ALL リテラルの国別文字値 データ変換のための組み込み関数
UPPER-CASE 関数と LOWER-CASE 関数による大文字小文字の拡張マッピング |
| 暗黙の項目 | 特殊オブジェクト・リファレンス
特殊レジスター
|
| 形象定数 | 形象定数 QUOTE の値としてアポストロフィ (') を選択 ポインター用およびオブジェクト・リファレンス用の NULL および NULLS |
| リテラル | 区切り文字を開始および終了するときの引用符 (") の代わりとしてアポストロフィ (') を使用。 英数字リテラルにおける 1 バイト文字と 2 バイト文字の混在 (混合リテラル)。 開始区切り文字 X" および X' によって定義された、英数字リテラルに対する 16 進数表記。 開始区切り文字 Z" および Z' によって定義されたヌル終了英数字リテラル。 開始区切り文字 N"、N'、G"、および G' によって定義された DBCS リテラル。NSYMBOL(DBCS) コンパイラー・オプションが有効な場合、N" と N' は DBCS として定義されます。 連続した英数字リテラル (最初のリテラルを継続される行の列 72 で終了し、次のリテラルを継続行内で単一引用符を使用して開始することにより、2 つの連続した英数字リテラルをコーディングします。 リテラルの内容を国別文字として保管するための国別リテラル N"、N'、NX"、NX'。 NSYMBOL(NATIONAL) コンパイラー・オプションが有効な場合、N" と N' は国別として定義されます。 19 (から 31) 桁の固定小数点数字リテラル。[標準 COBOL 85 (Standard COBOL 85) では、最大 18 桁を指定します。] 浮動小数点数字リテラル。 |
| コメント | 見出し部ヘッダーの前のコメント行。 DBCS 文字を含むコメント行およびコメント項目。 |
| 終了マーカー | 以下の終了マーカーがあります。
|
| 索引付けと添え字付け | テーブルと別のテーブルに定義された索引名との照会。 相対添え字付けにおける演算子 + または - の後の正符号付き整数リテラルの指定。 |
| 2000 年言語拡張および日付フィールド | DATE FORMAT 節 ウィンドウ表示日付フィールド、拡張日付フィールド、年末尾型日付フィールド、互換日付フィールド、日付形式、および世紀ウィンドウ。 以下の組み込み関数。
|
| プログラムの見出し部 | IDENTIFICATION の省略 ID RECURSIVE 節 PROGRAM-ID、AUTHOR、INSTALLATION、DATE-WRITTEN、および SECURITY 段落ヘッダーの後のオプショナル分離文字ピリオド。[標準 COBOL 85 (Standard COBOL 85) では、それぞれの段落ヘッダーの後にピリオドが必要です。] PROGRAM-ID 段落内のプログラム名の後のオプショナル分離文字ピリオド。[標準 COBOL 85 (Standard COBOL 85) では、プログラム名の後にピリオドが必要です。] PROGRAM-ID 段落内のプログラム名を示す英数字リテラル。最外部プログラムの名前の中の 文字 $、#、および @。長さ 160 文字までのプログラム名。[標準 COBOL 85 (Standard COBOL 85) では、プログラム名をユーザー定義語として指定する必要があります。] |
| 終了マーカー | リテラルのプログラム名。[標準 COBOL 85 (Standard COBOL 85) では、プログラム名をユーザー定義語として指定する必要があります。] |
| オブジェクト指向の構造 | クラス定義内:
メソッド定義内:
|
| 構成セクション | REPOSITORY 段落 |
| SPECIAL-NAMES 段落 | 節のオプションの順序。[標準 COBOL 85 (Standard COBOL 85) では、節を構文図に示されている順にコーディングする必要があります。] 節がコーディングされていない場合に、最後の節の後にピリオドを加えるかどうかのオプション。[標準 COBOL 85 (Standard COBOL 85) では、節がコーディングされていない場合にもピリオドが必要です。] 複数の CURRENCY SIGN 節。[標準 COBOL 85 (Standard COBOL 85) では、単一の CURRENCY SIGN 節を許可します。] CURRENCY SIGN 節の WITH PICTURE SYMBOL 句 CURRENCY SIGN 節での複数文字および大/小文字混合の通貨符号 (WITH PICTURE SYMBOL 句が指定されている場合)。[標準 COBOL 85 (Standard COBOL 85) では 1 つの文字のみが許可され、これが通貨符号および通貨ピクチャー・シンボルになります。標準通貨符号は、以下のものであってはなりません。
通貨符号としての小文字の英字の使用。[標準 COBOL 85 (Standard COBOL 85) では、大文字のみを許可します。] |
| INPUT-OUTPUT SECTION、FILE-CONTROL 段落 | 「FILE-CONTROL.」のオプション (INPUT-OUTPUT SECTION が指定されていて、ファイル制御段落が指定されていない場合、およびコンパイル単位にファイルが定義されていない場合)。[「INPUT-OUTPUT SECTION.」をコーディングした場合、標準 COBOL 85 (Standard COBOL 85) では「FILE-CONTROL.」をコーディングする必要があります。] 「FILE CONTROL.」構文が指定されていて、コンパイル単位にファイルが定義されていない場合の、ファイル制御段落のオプション。[「INPUT-OUTPUT SECTION.」をコーディングした場合、標準 COBOL 85 (Standard COBOL 85) では FILE-CONTROL 段落をコーディングする必要があります。] PASSWORD 節 FILE STATUS 節の 2 番目のデータ名 ALTERNATE RECORD KEY 節の RECORD のオプション。[標準 COBOL 85 (Standard COBOL 85) では、ワード RECORD が必要です。] 数字、数字編集、英数字編集、英字、内部浮動小数点、外部浮動小数点、国別、国別編集、または DBCS の基本項目あるいは代替レコード・キー・データ項目。 [標準 COBOL 85 (Standard COBOL 85) では、キーが英数字でなければなりません。] 可変長レコードを含む索引ファイル用の最小レコード・サイズの範囲外で定義された基本または代替レコード・キー。[標準 COBOL 85 (Standard COBOL 85) では、基本および代替レコード・キーを最小レコード・サイズ内に収めることが必要です。] FILE STATUS 節における、USAGE DISPLAY または NATIONAL の数値データ項目。[標準 COBOL 85 (Standard COBOL 85) では、英数字ファイル状況データ項目が必要です。] ORGANIZATION IS LINE SEQUENTIAL 節およびおよび行順次ファイル制御形式 PADDING CHARACTER 節の国別リテラル |
| INPUT-OUTPUT SECTION、I-O-CONTROL 段落 | APPLY WRITE-ONLY 節 順次、索引付き、およびソート・マージ形式の I-O-control 項目の SAME 節に 1 つのファイル名のみを指定。[標準 COBOL 85 (Standard COBOL 85) では、最低でも 2 つのファイル名が必要です。] RERUN 節のキーワード ON のオプション。[標準 COBOL 85 (Standard COBOL 85) は、ON をコーディングする必要があります。] 行順次形式の I-O-control 項目 ソート・マージ I-O-control 項目の RERUN 節 |
| データ部 | LOCAL-STORAGE SECTION
リンケージ・セクションの GLOBAL 節 データ記述項目の同じ階層レベルにある他のレベル番号よりも低いレベル番号の指定。[標準 COBOL 85 (Standard COBOL 85) では、階層の同じレベルにあるすべての基本項目またはグループ項目には同一のレベル番号を割り当てる必要があります。] 内部浮動小数点、外部浮動小数点、DBCS、国別、および国別編集のデータ・カテゴリー USAGE NATIONAL の数字データ・カテゴリー USAGE NATIONAL の数字編集データ・カテゴリー |
| ファイル・セクション | LABEL RECORDS 節のデータ名 (ユーザー・ラベルの指定用) RECORDING MODE 節 行順次形式ファイル記述項目 |
| ソート/マージ・ファイル記述項目 | 以下の節:
|
| BLOCK CONTAINS 節 | QSAM ファイルに対する BLOCK CONTAINS 0。[標準 COBOL 85 (Standard COBOL 85) では、最低でも 1 CHARACTER または RECORD を BLOCK CONTAINS 節に指定する必要があります。] |
| VALUE OF 節 | VALUE 節がないと、SD の元で指定された場合の実行に影響します。 |
| DATA RECORDS 節 | 指定したデータ名 に対する 01 レコード記述項目のオプション。[標準 COBOL 85 (Standard COBOL 85) では、同じデータ名 を持つ 01 レコードを指定する必要があります。] |
| LINAGE 節 | EXTEND モードでオープンされたファイルに対する LINAGE の指定 |
| データ記述項目 | DATE-FORMAT 節 |
| BLANK WHEN ZERO 節 | ZERO に対する代替スペル ZEROS および ZEROES |
| GLOBAL 節 | リンケージ・セクションでの GLOBAL の指定 |
| INDEXED BY 句 | 固有でない非参照索引名 |
| OCCURS 節 | 可変長テーブルに対する "integer-1 TO" の省略 複合 OCCURS DEPENDING ON。[標準 COBOL 85 (Standard COBOL 85) では、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 文字ストリング。[標準 COBOL 85 (Standard COBOL 85) では、文字の長さは 30 文字までです。]
ピクチャー・シンボル G および N ピクチャー・シンボル E および外部浮動小数点ピクチャー・フォーマット PICTURE 節がデータ記述項目の最後の節ではない場合の、 直後に分離文字コンマまたは分離文字セミコロンが付く末尾コンマ挿入文字または末尾ピリオド挿入文字のコーディング [標準 COBOL 85 (Standard COBOL 85) では、コンマまたはピリオドで終了するピクチャーを含む PICTURE 節は項目内の最後の節でなければならず、その直後に分離文字ピリオドを付ける必要があります。] CURRENCY コンパイラー・オプションを使用した通貨符号および通貨記号の選択 大文字小文字が区別される通貨記号 USAGE DISPLAY および PACKED-DECIMAL の数値項目および USAGE DISPLAY の数字編集項目に対する最大 31 桁の指定 USAGE を BINARY、COMPUTATIONAL、または COMPUTATIONAL-4 で記述されたデータ項目の値に対する TRUNC コンパイラー・オプションの影響 |
| REDEFINES 節 | 再定義データ項目の REDEFINES の指定
従属レベルでの、再定義データ項目よりサイズが大きいデータ項目の再定義の指定 |
| SYNCHRONIZED 節 | レベル 01 項目に対する SYNCHRONIZED の指定 |
| USAGE 節 | 以下の句:
USAGE INDEX の項目に対する SYNCHRONIZED 節の使用 |
| 条件名項目の VALUE 節 | ファイル・セクションおよびリンケージ・セクションにおける条件名項目以外の VALUE 節 DISPLAY 以外の USAGE を持つグループでの条件名項目に対する VALUE 節 VALUE IS NULL および VALUE IS NULLS |
| 手続き部 | セクション名の省略 セクション名が省略されている場合の段落名の省略 メソッド、ファクトリー、またはオブジェクトの手続き部 手続き部のヘッダーで USING 句を使用しないリンケージ・セクションのデータ項目の参照 (それらのデータ名 が ADDRESS OF 句または ADDRESS OF 特殊レジスターのオペランドである場合) 以下のステートメント:
|
| 手続き部のヘッダー | BY VALUE 句 RETURNING 句 データ項目の記述に REDEFINES 節がある場合の USING 句でのデータ項目の指定 USING 句内での所定のデータ項目の 複数インスタンスの指定 メソッド定義、ファクトリー定義、およびオブジェクト定義のフォーマット |
| 宣言型プロシージャー | LABEL 宣言 宣言型プロシージャーからの非宣言型プロシージャーの実行 宣言型プロシージャーの GO TO ステートメントにおける宣言型プロシージャーまたは非宣言型プロシージャーの参照。[標準 COBOL 85 (Standard COBOL 85) では、宣言型プロシージャーは非宣言型プロシージャーを参照してはなりません。別の宣言型プロシージャーまたは非宣言型プロシージャーからの宣言型プロシージャーの参照は、PERFORM ステートメントを 使用した場合のみ許可されます。] アクティブ宣言の実行 |
| プロシージャー | 優先順位番号 を正の符号付き数字リテラルとして指定。[標準 COBOL 85 (Standard COBOL 85) では、符号なし整数でなければなりません。] 宣言の後、または宣言がない場合のセクション・ヘッダーの省略。[標準 COBOL 85 (Standard COBOL 85) では、「DECLARATIVES.」構文および「END DECLARATIVES.」構文の後にセクション・ヘッダーが必要です。] 宣言がない場合の初期段落名 の省略。[標準 COBOL 85 (Standard COBOL 85) では、以下の場合に段落名が必要です。
また、標準 COBOL 85 (Standard COBOL 85) ではプロシージャー・ステートメントを段落内に含めることが必要です。] セクション内に含まれていない段落の指定 (セクション内に含まれている段落がある場合でも指定できる)。[標準 COBOL 85 (Standard COBOL 85) では、宣言がない場合を除いて、段落はセクション内にある必要があります。標準 COBOL 85 (Standard COBOL 85) では、すべての段落をセクション内に含めるか、またはまったく含めない必要があります。] |
| 条件式 | DBCS および KANJI クラス条件 NUMERIC クラス・テストにおける USAGE COMPUTATIONAL-3 または USAGE PACKED-DECIMAL データ項目の指定 |
| 比較条件 | 英数字、DBCS、または国別リテラルを括弧で囲む データ・ポインター・フォーマット、プロシージャー・ポインターおよび関数ポインター・フォーマット、 およびオブジェクト・リファレンス・フォーマット 索引名の演算式との比較 簡略複合比較条件内の括弧の使用 |
| CORRESPONDING 句 | 充てん項目に従属する ID の指定 |
| INVALID KEY 句 | INVALID KEY 句および適当な EXCEPTION/ERROR プロシージャーの省略。[標準 COBOL 85 (Standard COBOL 85) では、最低でも上記の 1 つが必要です。] |
| ACCEPT ステートメント | FROM 句の environment-name オペランド DATE YYYYMMDD 句 DAY YYYYDDD 句 |
| ADD ステートメント | 18 桁より大きいオペランドの合成 |
| CALL ステートメント | 呼び出されるプログラムを識別するためのプロシージャー・ポインターおよび関数ポインターのオペランド 以下の句:
引数としての ファイル名 の指定 英字またはゾーン 10 進数データ項目での呼び出されるプログラム名の指定 従属グループ項目として定義された引数の指定。[標準 COBOL 85 (Standard COBOL 85) では、引数はレベル 01 で定義された基本データ項目またはグループ項目である必要があります。] |
| CANCEL ステートメント | 英字またはゾーン 10 進数データ項目での取り消すプログラム名の指定 取り消すプログラムの名前に対する PGMNAME コンパイラー・オプションの影響 |
| CLOSE ステートメント | WITH NO REWIND 句 行順次形式 |
| COMPUTE ステートメント | 等号 (=) に代わるワード EQUAL の使用 |
| DISPLAY ステートメント | UPON 句の environment-name オペランド 符号付き数字リテラルおよび非整数数字リテラルの表示 |
| DIVIDE ステートメント | 18 桁より大きいオペランドの合成 |
| EXIT ステートメント | EXIT ステートメントの前または後にステートメントを持つ文の中、または別の文を持つ段落の中での EXIT ステートメントの指定。[標準 COBOL 85 (Standard COBOL 85) では、EXIT ステートメントは、段落内の唯一の文である文の中に自身によって指定する必要があります。] |
| EXIT PROGRAM ステートメント | 命令ステートメントのシーケンス内の最後のステートメントに先立つ EXIT PROGRAM の指定。[標準 COBOL 85 (Standard COBOL 85) では、EXIT PROGRAM ステートメントを命令ステートメントのシーケンス内の最後のステートメントとして指定する必要があります。] |
| GO TO ステートメント | 命令ステートメントのシーケンス内の最後のステートメントに先立つ無条件フォーマットのコーディング。[標準 COBOL 85 (Standard COBOL 85) では、以下のように無条件 GO TO をコーディングする必要があります。
MORE-LABELS フォーマット |
| IF ステートメント | END-IF と NEXT SENTENCE 句との併用。[標準 COBOL 85 (Standard COBOL 85) では、END-IF を NEXT SENTENCE と併用することはできません。] |
| 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 句と適当な例外プロシージャーの省略 |
| 組み込み関数 | DATE-OF-INTEGER および DAY-OF-INTEGER 関数に対する DATEPROC および INTDATE コンパイラー・オプションの影響 以下の関数:
|
| FACTORIAL 関数 | 引数で許可される値の範囲に対する ARITH(EXTEND) コンパイラー・オプションの影響 |
| INTEGER-OF-DATE 関数 | 関数の開始日付に対する INTDATE コンパイラー・オプションの影響 |
| INTEGER-OF-DAY 関数 | 関数の開始日付に対する INTDATE コンパイラー・オプションの影響 |
| LENGTH 関数 | 関数への引数としてのポインター、ADDRESS OF 特殊レジスター、または LENGTH OF 特殊レジスターの指定 |
| NUMVAL 関数 | 引数で許可される最大桁数に対する ARITH(EXTEND) コンパイラー・オプションの影響 |
| NUMVAL-C 関数 | 引数で許可される最大桁数に対する ARITH(EXTEND) コンパイラー・オプションの影響 |
| コンパイラー指示ステートメント | 以下のステートメント:
|
| COPY ステートメント | テキスト名修飾子を指定する "OF library-name" 構文のオプション テキスト名およびライブラリー名 を指定するためのリテラル SUPPRESS 句 ネストされた COPY ステートメント REPLACING オペランドのワード ・フォーム内の最初または最後の文字としてのハイフンの使用 REPLACING オペランドのワード ・フォーム内での任意の文字の使用 (COBOL 区切り文字を除く)。[標準 COBOL 85 (Standard COBOL 85) では、ユーザー定義語の構成で使用される文字のみを受け入れます。] |
| USE ステートメント | LABEL 宣言フォーマット |