付録E.1 コンパイラの制限値,限界値

コンパイラの制限値,限界値を次に示します。

表E-1 コンパイラの制限値,限界値

区分項目制限値,限界値
全般規定語の長さ31文字
英数字定数,日本語文字定数の長さ1~160文字※16
固定小数点数字定数のけた数1~18けた※11
浮動小数点数字定数のけた数仮数部1~16けた
指数部2けた
単精度浮動小数点数字定数の値の範囲(絶対値)約10-37.9以上約1038.5以下,または0
倍精度浮動小数点数字定数の値の範囲(絶対値)約10-308以上約10308以下,または0
連結式で連結できる定数の長さ2~1,024文字
基本機能作業場所節のデータ項目の長さ16,777,215バイト(クラス定義)
1,073,741,823バイト(上記以外)
局所場所節のデータ項目の長さ1,073,741,823バイト
ファイル節のデータ項目の長さ16,777,191バイト※1(クラス定義のファイル節FD記述項)
1,073,741,799バイト※1(上記以外のファイル節FD記述項)
65,535バイト(ファイル節SD記述項)
連絡節のデータ項目の長さ16,777,215バイト(BY VALUE,RETURNING項目)
1,073,741,823バイト(上記以外)
上記以外の節のデータ項目の長さ16,777,215バイト
1レコードに含まれる可変長項目の制御変数100個
PICTURE文字列の長さ30文字※15
作業場所節の英字項目のけた数16,777,215けた(クラス定義)
1,073,741,823けた(上記以外)
局所場所節の英字項目のけた数1,073,741,823けた
ファイル節の英字項目のけた数16,777,191バイト※1(クラス定義のファイル節FD記述項)
1,073,741,799バイト※1(上記以外のファイル節FD記述項)
65,535バイト(ファイル節SD記述項)
連絡節の英字項目のけた数16,777,215けた(BY VALUE,RETURNING項目)
1,073,741,823けた(上記以外)
上記以外の英字項目のけた数16,777,215けた
外部10進,内部10進のけた数18けた※12
2進項目のけた数18けた
外部浮動小数点数字項目のけた数仮数部1~16けた
指数部2けた
作業場所節の英数字,英数字編集項目のけた数16,777,215けた(クラス定義)
1,073,741,823けた(上記以外)
局所場所節の英数字,英数字編集項目のけた数1,073,741,823けた
ファイル節の英数字,英数字編集項目のけた数16,777,191バイト※1(クラス定義のファイル節FD記述項)
1,073,741,799バイト※1(上記以外のファイル節FD記述項)
65,535バイト(ファイル節SD記述項)
連絡節の英数字,英数字編集項目のけた数16,777,215けた(BY VALUE,RETURNING項目)
1,073,741,823けた(上記以外)
上記以外の英数字,英数字編集項目のけた数16,777,215けた
数字編集項目のけた数249けた
(数字は18けた以内※14
ブール項目のけた数2,034けた
日本語項目のけた数16,383けた
動的長基本項目のLIMITに指定できる値英数字項目の場合
  • 16,777,214けた
日本語項目の場合
  • 16,382けた
外部浮動小数点数字項目の値の範囲(絶対値)約10-37.9以上約1038.5以下,または0
条件文の入れ子1,000重
うちPERFORM文の入れ子100重
PERFORM文のVARYING指定で変化させられる一意名の数7個(AFTER指定の数は6個以内)
EVALUATE文の入れ子50重
GO TO DEPENDING文の一意名のけた数9けた
STOP文の定数の長さ160文字※16
ACCEPT文で一度に転送できるデータのサイズ114バイト(FROM CONSOLE指定時)
COPY文の入れ子20重
原文名の長さ31文字※2
仮原文の原文語1~322文字
演算結果を保証する算術式の中間結果のけた数30けた※13
算術式に含まれる算術演算子100個
作業場所節※3の節の合計サイズ16,777,215バイト(クラス定義)
1,073,741,823バイト(上記以外)
局所場所節の節の合計サイズ1,073,741,823バイト
ファイル節※3※4の節の合計サイズ16,777,215バイト(クラス定義)
1,073,741,823バイト(上記以外)
その他の節(連絡節を除く)の合計サイズ16,777,215バイト
算術式中に含まれる算術演算子100個
表操作機能作業場所節のOCCURS句の整数2の値,添字の値,部分参照の値16,777,215(クラス定義)
1,073,741,823(上記以外)
局所場所節のOCCURS句の整数2の値,添字の値,部分参照の値1,073,741,823
ファイル節のOCCURS句の整数2の値,添字の値,部分参照の値16,777,191(クラス定義のファイル節FD記述項)
1,073,741,799(上記以外のファイル節FD記述項)
65,535(ファイル節SD記述項)
連絡節のOCCURS句の整数2の値,添字の値,部分参照の値16,777,215(BY VALUE,RETURNING項目)※5
1,073,741,823(上記以外)
上記外の節のOCCURS句の整数2の値,添字の値,部分参照の値16,777,215
OCCURS句に指定できる指標名の数12個
OCCURS句に定義した指標名に設定できる最大値10けた(クラス定義以外の作業場所節,クラス定義以外のファイル節FD記述項,局所場所節,BY VALUE/RETURNING項目以外の連絡節)
9けた(BY VALUE/RETURNING項目の連絡節および上記以外の節)
OCCURS句の次元数7次元
OCCURS KEYの個数12個
SEARCH文の入れ子15重
入出力機能RECORD CONTAINS CHARACTERS句で指定できる値16,777,191※1
(クラス定義のファイル節FD記述項)
1,073,741,799※1
(上記以外のファイル節FD記述項)
65,535
(ファイル節SD記述項)
BLOCK CONTAINS句で指定できる値16,777,191※1
(クラス定義のファイル節FD記述項)
1,073,741,799※1
(上記以外のファイル節FD記述項)
WRITE ADVANCINGで指定できる整数0~99
RECORD KEY句で指定できるキーの最大長255バイト
ALTERNATE RECORD KEY句で指定できるキーの最大長255バイト
ALTERNATE RECORD KEY句で指定できるキーの個数98個
LINAGE句で指定できる整数1~32,767
LINAGE FOOTINGで指定できる整数0~32,767
LINAGE TOPで指定できる整数0~32,767
LINAGE BOTTOMで指定できる整数0~32,767
RECORD IS VARYING句のFROMに指定できる整数1~16,777,191※1
(クラス定義のファイル節FD記述項)
1~1,073,741,799※1
(上記以外のファイル節FD記述項)
1~65,535
(ファイル節SD記述項)
RECORD IS VARYING句のTOに指定できる整数1~16,777,191※1
(クラス定義のファイル節FD記述項)
1~1,073,741,799※1
(上記以外のファイル節FD記述項)
1~65,535
(ファイル節SD記述項)
ファイルのブロック長に指定できる値1~16,777,191※1
(クラス定義)
1~1,073,741,799
(上記以外)
CSV編成ファイルのREAD/WRITE文で扱える基本項目の最大数32bit版PC(x86) COBOL2002の場合
  • 2,729個(-NumCsvオプション指定ありの場合)
  • 5,459個(-NumCsvオプション指定なしの場合)
64bit版PC(x64) COBOL2002の場合
  • 2,047個(-NumCsvオプション指定ありの場合)
  • 4,094個(-NumCsvオプション指定なしの場合)
ASSIGN句のデータ名1に指定できるデータ項目の最大長32,767バイト
プログラム間連絡機能プログラム名,利用者定義関数名,クラス名,インタフェース名,メソッド名の長さ31文字(定数指定でない場合)
プログラム名,メソッド名を定数指定する場合の長さ160バイト※17
-Main,V3オプションで引数を受け取るときに指定できる最大長100バイト
FD EXTERNAL句の数(プログラム単位,実行時単位)255個
01 EXTERNAL句の数(外部属性)実行単位内で32,767個
プログラム単位で32,767個※6
入れ子のプログラムの個数65,535個
入れ子のプログラムのネストの深さ255レベル
ENTRY文の個数32,767個
stdcall呼び出し規約にするプログラムの個数(CALL 一意名がある場合)1,700個※7
CALL文,INVOKE文のBY VALUE,BY CONTENT,RETURNINGに指定されたデータ項目のサイズ16,777,215バイト
利用者定義関数の引数として指定されたデータ項目のサイズ(ただし,対応する仮引数にBY VALUEが指定または仮定される場合,および返却値だけ)16,777,215バイト
整列併合機能SORT文,MERGE文の入力ファイル数12個
整列併合用キーの指定個数64個
整列併合用キーのサイズの合計4,080バイト
整列併合用レコードのサイズ65,535バイト
データベースアクセス機能SQL文の長さ65,528バイト※9
SQL文で参照する埋め込み変数の長さCOBOL2002のデータ項目と同じ
SQL文で記述する語,定数の長さCOBOL2002の語,定数と同じ
オブジェクト指向機能クラス定義中に記述可能なメソッドの数65,530※8
その他コンパイル可能なソース行数999,999行
手続き名の個数1,048,575個
ファイルの数255個
自由形式正書法での1行のバイト数255バイト
COPY文PREFIXING指定およびSUFFIXING指定に指定できる語の長さ30文字
一つの実行単位が使用できるスタックサイズの上限システムのスタックサイズの設定値に依存
COBOL2002で扱えるファイル名の長さの上限パス名を含めて255バイト※10
ソース行数以外の制限値は独立していないため,すべての制限値が同時に適用されるとは限りません。
注※1
索引ファイルは,割り当てるファイルによって次のようになります。
  • ISAMを使用する場合:65,503バイト
  • Btrieve(Pervasive.SQL)による索引編成ファイルを使用する場合:ページサイズに依存する。
    詳細は,マニュアル「COBOL2002 ユーザーズガイド」の「使用できる機能と制限事項」を参照してください。
  • HiRDBによる索引編成ファイルを使用する場合:1,073,741,799バイト
    ただし,CREATE TABLE定義の指定に依存する。
    詳細は,マニュアル「COBOL2002 ユーザーズガイド」の「HiRDBによる索引編成ファイル」を参照してください。
注※2
-V3Recまたは-CompatiV3オプション(VOS3 COBOL85互換のオプション)を指定した場合,先頭の8文字だけが有効となります。
注※3
-MultiThreadオプション指定時,ファイル節,作業場所節の合計の上限は,16,777,215バイトとなります。
注※4
ファイル節の合計サイズは,次のように計算します。
Σ(各記述項のレコード長+24+α)
α:レコード間の境界調整で生じる遊びバイト
レコード間は8バイト境界調整される。
[図データ]
注※5
添字の値,および部分参照の値の場合,上限は1,073,741,823となります。
注※6
ただし,プログラム単位では,アドレスデータ項目の個数や連絡節の01レベルデータ項目の個数によって,上記の最大数まで指定できないことがあります。
注※7
次のプログラム数の合計値です。
  • 外部プログラム節で,STDCALLまたはPASCALに関連づけたプログラム
  • stdcall呼び出し指示ファイル(.cbw)に指定したプログラム
  • stdcall呼び出し規約のDLL中の内側のプログラム
注※8
クラス定義に含まれるファクトリ定義,オブジェクト定義のデータ記述項にPROPERTY句が指定されている場合は次のようになります。
クラス定義中に記述可能なメソッドの数
= 65,530 - (SET,GET指定がないPROPERTY句の数)×2 - (SET,GET指定があるPROPERTY句の数)
注※9
SQL文の長さは,次の項目の合計値になります。
  • SQL文を構成する語,定数の長さ(「EXEC SQL」と「END-EXEC」は含めない)
  • 語と定数の間は,分離符の空白文字1バイトを加算する。
    (語と定数の間に,注記行や複数の空白文字があっても,常に空白文字1バイトとして扱う)
ただし,動的SQLの長さは,コンパイラではチェックしません。
注※10
パス名を含めないファイル名の長さの上限も255バイトです。
使用できるファイル名の長さが機能によって個別に規定されている場合は,その長さが上限となります。
また,指定されたファイル名は内部的に絶対パス名に変換することがありますが,このとき内部的に処理できる絶対パス名の長さの上限は,260バイトです。
注※11
-MaxDigits38オプションを指定した場合,けた数は1~38けたとなります。
注※12
-MaxDigits38オプションを指定した場合,けた数の上限は38けたとなります。
注※13
-IntResult,DecFloat40オプションを指定した場合,けた数は40けたとなります。
注※14
-MaxDigits38オプションを指定したとき,数字編集項目の数字は38けた以内となります。
注※15
-MaxDigits38オプションを指定したとき,PICTURE文字列の長さは60文字となります。
注※16
-LiteralExtend,Alnumオプションを指定したとき,英数字定数の長さは1~8,191文字(バイト)となります。
注※17
-LiteralExtend,Alnumオプションを指定した場合,プログラム名およびメソッド名を定数指定するときの長さは,1~1,024文字(バイト)となります。