前ページへ拡張言語機能 保護違反エラーへの対処次ページへ

第 4 章 システムと開発環境による制限

この章では、Server Express で各種パラメータに適用されるサイズ上の制限と、開発時に留意すべき COBOL の構文およびプログラミング関連の制限について説明します。これらの制限は、いずれも X/Open CAE (共通アプリケーション環境 ) の COBOL 言語移植性ガイド (XPG4) で定義されている制限と同等、または多少緩やかに設定されています。

4.1 COBOL システムによる制限

Server Express では、使用する環境に応じて留意すべき 3 種類の制限があります。つまり、COBOL コンパイラによる制限、COBOL ランタイムシステムによる制限、および外部要因による制限です。

COBOL コンパイラとそれが生成する中間コードは、オペレーティングシステムやハードウェア環境に依存しません。そのため、これらに関する制限もすべての環境で共通であり、どの環境においてもその限界を超えることはできません。しかし、COBOL ランタイムシステムによる制限は、コンパイラよりやや厳しくなることがあります。これは、ランタイムシステムの構造や動作が、オペレーティングシステムやハードウェアによって間接的に影響を受ける場合があるためです。さらに、オペレーティングシステムやハードウェアの構成により、コンパイラおよびランタイムシステムより厳しい制限が課せられる場合もあります。

ファイル、レコード、およびそのサイズに関する制限については、『ファイル操作』の『ファイル処理制限』の章を参照してください。

次では、コンパイラ、ランタイムシステム、および外部要因による制限を具体的に示します。いずれの説明でも、Server Express システムで使用する各種パラメータとその上限サイズまたは上限値をカテゴリごとの一覧を示します。左側の列にパラメータ、右側の列に許容される上限値とその単位を示しています。

4.1.1 コンパイラによる制限

COBOL コンパイラとそれが生成する中間コードは、オペレーティングシステムやハードウェア環境に依存しません。そのため、コンパイラによる制限はすべての環境で共通であり、どの環境でもその限界を超えることはできません。

ランタイムシステムやオペレーティングシステムによる制限は、コンパイラによる制限より厳しい場合がありますから、次のコンパイラ関連の制限に加え、以降で紹介するランタイムシステムとオペレーティングシステムによる制限も考慮する必要があります。


データ項目 (サイズの制限)

英数字/集団項目 256 MB
英数字編集/数字編集項目 最大 32 個の構成部分のそれぞれに文字型の編集項目を 16 個まで格納可能。合計サイズは最大 512 バイト。
数字項目 18 桁
COMP/COMP-5 型 8 バイト
EXTERNAL データ項目 特に制限なし
ファイルレコード 62 KB
ACCEPT FROM CONSOLE 上限サイズはオペレーティングシステムに依存。『Server Express ユーザガイド』の『Terminfo データベースおよび端末装置』を参照。
全画面の DISPLAY/ACCEPT 画面の文字数 - 1 (画面の最終文字は使用不可)
ANSI DISPLAY 制限なし

言語 (サイズの制限)

英数字定数 160 バイト
PICTURE 文字列 30 文字
PICTURE 文字列繰返し表記 (PIC X(n) の n など) 256,000,000
PROGRAM-ID 名 30 文字
入口点名 30 文字
開発者定義語 30 文字
外部ファイル名 (プログラムのソースファイル、オブジェクトファイル、コピーファイル、データファイルなど) 100 文字。後述の『ファイル名』を参照。
動的にロード可能なプログラム名 100 文字またはシステムの上限値 (いずれか小さい方)。最初の 30 文字が一意であること。

USING 指定のパラメータ数

CALL 文 255
手続き部のヘッダー 255
ENTRY 文 255

プログラムオブジェクト (サイズの制限)

合計サイズ 制限なし
データ部 256 MB
手続き部 816 MB
COBOL 区分化 16 MB
1 つのファイル内のレコード 制限なし (ファイルの種類にかかわらず共通)

プログラムのソースファイル (数の制限)

ソースの行数 999,999
データおよびプロシージャ名 64,000
ホスト変数 8,000 またはデータベースシステムの上限値 (いずれか小さい方)
定数 制限なし
COPY 仮原文内の語 65,000
COPY REPLACING 文内の BY 句 65,000

プログラムのソースファイル (サイズの制限)

固定形式行全体 80 バイト
有効な固定形式行 72 バイト
フリー形式行 160 バイト

USE GLOBAL AFTER 文

プログラム内の USE GLOBAL AFTER 文の数 20

合計サイズ 制限なし
OCCURS 句のネスト 制限なし
画面節の内部 特に制限なし
次元数 16
画面節の OCCURS 句 項目数と項目の階層の両方、または一方によって左右されるため、特定の上限値は明示できない。ただし、上限を超えるとプログラムのコンパイルでエラーが発生する。

4.1.2 ランタイムシステムによる制限

COBOL アプリケーションを実行するオペレーティングシステムやハードウェアによっては、COBOL ランタイムシステムが構造や動作面で影響を受け、コンパイラの場合より制限が厳しくなることがあります。次にランタイムシステムによる制限を示します。これらの制限に加え、オペレーティングシステムによる制限を考慮する必要があります。


ネスト

IF (コンパイル済みコードのみ) 255
PERFORM 22 以上
PERFORM のネスト』を参照。
CALL ランタイムシステムによる制限は特になし。オペレーティングシステムが割り当てるスタックの容量に左右される。

並行してロード可能な副プログラム数

プログラムの実行およびアニメート時 COBCONFIG 変数で調整可能。

4.1.3 オペレーティングシステムと環境変数による制限

オペレーティングシステムやハードウェアの構成とパラメータ設定は、COBOL アプリケーションに直接的な影響を与えます。これらの要因による制限を正確に把握するためには、実際にオペレーティングシステムとハードウェアの構成を調べる必要があります。ここでは、影響を受ける可能性の高い項目を示します。

CALL のネスト オペレーティングシステムが割り当てるスタックの容量に左右される。
データとプロシージャの合計サイズ 利用可能なメモリの空き容量によって左右される。
並行してロードできる副プログラム数 利用可能なメモリの空き容量によって左右される。
環境変数 アプリケーションの実行中には最大 64 KB のメモリを環境変数に使用できる (ただし、物理メモリの空き容量によっては 64 KB 未満)。
コマンド行の長さ コマンド行の最大長はオペレーティングシステムによって異なる。
一部のツールはコマンド行を 128 文字までに制限しているが、ユーザ側で開発するアプリケーションではオペレーティングシステムによる上限値を優先すべきである。

4.2 開発環境による制限

ここでは、Server Express に実装されていない COBOL 構文と、その他の開発環境による制限について説明します。開発時には、実装されていない構文に十分に注意する必要があります。

4.2.1 実装されていない COBOL 構文

次の COBOL 構文は、『言語リファレンスでは言及されていますが、Server Express ではサポートされていません。

どちらの項目も ANSI 規格では定義されていません。

次の OS/VS COBOL 構文はサポートされていません。

4.2.2 ALTER 文

ALTER 文の使用はできる限り避け、使用する場合も十分に注意するようにしてください。正しく使用しないと予想外の問題が生じる可能性があります。区分化したプログラムでは、1 つの区分から他の区分を変更すべきではありません。ただし、そのように変更しても、コンパイル時にエラーは通知されません。コンパイラは該当する区分を検出すると、そのコードを変更します。

4.2.3 ENTRY 文

入口点は、プログラム内でいくつかの処理単位に分ける手段の 1 つです。ENTRY 文で定義された入口点は、PROGRAM-ID で指定したおもな入口点が呼び出されない限り、呼び出されることはありません (ただし、プログラムが静的にリンクされている場合を除く)。

ネストしたプログラムでは ENTRY 文は使用できません。

入口点の詳細については、『プログラムの呼び出し』と『複数の言語による開発』の章を参照してください。

4.2.4 ファイル名

COBOL プログラムは、各ファイルをファイル名を使用して識別します。この場合のファイル名とは、ユーザが定義した名前です。COBOL システムの外部でも同様にファイル名が使用されますが、この場合のファイル名とはオペレーティングシステムで定義されている形式の文字列です。DOS、Windows、および OS/2 で使用されるファイル名の形式は共通です。UNIX で使用される形式も類似していますが、同じではありません。DOS 形式のファイル名がドライブ、パス、基本名、および拡張子で構成されるのに対し、UNIX 形式はパスと名前で構成されます。

Server Express では、外部ファイル名は 100 字までに制限されます。その他に制限はありませんが、オペレーティングシステムにファイル名を正しく処理させるためにも、アプリケーションの実行時にはオペレーティングシステムによる制限に従う必要があります。一部のオペレーティングシステムでは 100 文字を超えるファイル名を付けることも可能ですが、そのようなファイル名を COBOL アプリケーションで直接使用することはできません。

UNIX 環境でも、基本名と拡張子を含む DOS 型のファイル名は便利です。COBOL アプリケーションでは、そのようなファイル名を使用するかを開発段階で選択できます。Server Express のユーティリティでは DOS 型のファイル名が使用されます。CBL_SPLIT_FILENAME と CBL_JOIN_FILENAME の 2 つのライブラリルーチンも、オペレーティングシステム間の移植性を高めるため、DOS 型のファイル名に対応しています (詳細については、『ライブラリルーチン』の章を参照してください)。UNIX 環境で DOS 型のファイル名を使用する場合、ファイル名はパス、基本名、および拡張子で構成されます。

パス、基本名、および拡張子の最大長は、いずれも 100 文字までです。

ただし、オペレーティングシステムによる制限が COBOL システムによる制限より厳しい場合には、前者が優先されます。詳細については、使用しているオペレーティングシステムのマニュアルを参照してください。

4.2.5 局所記憶節

局所記憶節 (LOCAL-STORAGE SECTION) の最大サイズはオペレーティングシステムによって異なります。パフォーマンスと処理効率を向上させるためにも、局所記憶節には不要な記述を避け、できる限り小さくまとめるべきです。

ネストを含むプログラムには、局所記憶節は記述できません。

4.2.6 PERFORM のネスト

PERFORM の標準的なネスト階層数は、.int ファイルで 100 レベルまで可能です。 .gnt ファイルでの上限レベルは、オペレーティングシステムが割り当てたメモリの容量に左右されます。

アニメート可能な PERFORM のネストは 254 レベルまでです。アニメート中に上限レベルに達すると、Animator は ズームモードの指定にかからわず、それを超えたレベルを無視します。

4.2.7 数値のサイズ

ANSI 規格では、数値の桁数は 10 進数で 18 桁までに制限されており、それを超える桁は無効です。

Server Express は、次のいずれかの状態を検出すると、けたあふれ条件 (ON SIZE ERROR) が成立します。

4.2.8 コアヒープの上限サイズ

コアヒープの上限サイズは、ディスクの空き容量によってのみ制限されます。


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

前ページへ拡張言語機能 保護違反エラーへの対処次ページへ