第 15 章 ランタイムスイッチの詳細

この章では、利用できるプログラム可能スイッチおよびランタイムスイッチについて説明します。各スイッチの説明では、最初に、そのスイッチを設定した場合の影響を説明します。とくに説明されている場合を除き、そのスイッチを無効にした場合は、この説明と逆の影響があると考えてください。次に、これらのスイッチのデフォルトの設定を示します。デフォルトとは、スイッチを明示的に設定しなかった場合に適用される設定です。とくに説明されていない場合は、スイッチを、コマンド行と、COBSW 環境変数の両方で設定することができます。スイッチの設定、およびテストに関する詳細は、『実行』の章を参照してください。

15.1 キー

各スイッチの機能を、次の形式で説明します。

プロパティ
デフォルト値 スイッチのデフォルトの設定を示します。
コメント そのスイッチに関する追加情報を示します。
参照

詳細情報の参照先を示します。

15.2 スイッチ一覧

0, 1, 2, ... 8 プログラム可能なスイッチ
A Animator を強制起動する。
A1 後続の空白文字を表示する。
B, B1 ロックされたレコードをスキップする。
D ANSI COBOL デバッグモジュールを起動する。
d 動的ページングバッファ用のメモリサイズを設定する。
E S レベルのエラーを含むコードを実行する。
F 中間コード内の数字データを検証する。
i キーボード割り込みを可能にする。
l アプリケーションで利用可能なメモリを指定する。
L2 行順ファイルのレコード終了文字を指定する。
N 行順ファイルにヌルを挿入する。
O ゼロによる割り算のエラーを有効にする。
T 行順ファイルにタブを挿入する。
Z DBCS の空白文字の変換を制御する。

Server Express の OO プログラミングの機能を使用したプログラムに固有のランタイムスイッチもあります。詳細は、『OO Programming with Object COBOL』マニュアルの付録『Descriptions of OO Run-time Switches』を参照してください。

15.3 スイッチの説明


プログラム可能なスイッチ

プログラムが入力されると、対応する COBOL のスイッチが設定されます。

プロパティ
デフォルト値 すべて無効
コメント

これらのスイッチを設定すると、作成したプログラムの Special-Names 段落に定義した、COBOL スイッチ 0 〜 8 が使用できます (詳細は、『言語リファレンス』 を参照してください)。 これらのスイッチは、任意の順序で指定することができますが、各スイッチの前に記号をつける必要があります。


A - Animator

アプリケーションをアニメートするために、Animator を起動します。アニメートするアプリケーションは、cobrun コマンドを使用して呼び出されるものか、リンクされたモジュールから動的にロードされるものです。

プロパティ
デフォルト値 無効
コメント

cob コマンドで直接作成したアプリケーションをアニメートする場合は、anim コマンドを使用できます。anim を使用する場合、このスイッチを設定する必要はありません。

このスイッチが有効な場合は、Animator が DISPLAY 環境変数を確認します。DISPLAY が設定されていると、Animator は、DISPLAY 環境変数で指定されている場所に Animator 用の X ウィンドウを新しく開きます。DISPLAY が設定されていない場合は、Animator 現在の端末を使用します。


注 : +A スイッチを設定すると、実行されるすべての COBOL アプリケーションに対して Animator が起動されます。そのため、SDE を使用している場合は、このスイッチを設定しないことをお奨めします。


Animator の起動に関する詳細は、『デバッギングハンドブック』を参照してください。


A1 - 後続空白の表示

DISPLAY ... UPON CONSOLE 文でデータ項目内に表示されている後続空白を、データが画面に表示される前に削除して非表示にします。

プロパティ
デフォルト値 無効
コメント

このスイッチを使用すると、Micro Focus の旧システムと互換性を持たせることができます。このスイッチを無効にすると、ANSI COBOL 標準の規格通り、後続空白は画面に表示されます。


B, B1 - ロックされたレコードのスキップ

READ NEXT 文を使用中にロック済みのレコードが検知された場合、更新するレコードポインタを読み飛ばします。

プロパティ
デフォルト値 無効
コメント

索引順ファイルを開いて INPUT または I-O を行う場合は、B スイッチを設定してください。索引順ファイルを開いて INPUT を行う場合は、B1 スイッチを設定してください。これらのいずれかのスイッチを設定すると、同じファイル内に、他のプロセスにロックされているレコードがある場合でも、ファイルは順番に読み取られます。

B スイッチが設定されている場合にロックされているレコードが読み取られると、「ロック済みレコード」というファイル状態が返されます。B1 スイッチが設定されている場合に、ロックされているレコードが読み取られると、ファイル状態、00 が返されます。


注 : このスイッチは、CALLFH 指令を設定してプログラムをコンパイルすると、相対編成ファイル、およびレコード順ファイルにも影響を及ぼします。


参照

CALLFH コンパイラ指令


D - 標準の ANSI COBOL のデバッグ

標準の ANSI COBOL デバッグモジュールを呼び出します。

プロパティ
デフォルト値 無効
コメント

デバック機能の詳細は、『言語リファレンス - 追加トピック』を参照してください。このスイッチはコマンド行で設定する必要があります。

コマンド行で次のように入力します。

cobrun[_t] +D myprog

このようにすると、myprog が読み込まれ、標準の ANSI COBOL デバッグモジュールが呼び出されます。


d - 動的ページングバッファ

ランタイムシステムの動的ページングバッファに使用するメモリ容量を、バイト単位で指定します。

プロパティ
デフォルト値 -d245760 (240 K)
コメント

動的ページングは、コンパイラなどのプログラムで使用されます。メモリ容量を増やすと、このようなプログラムのパフォーマンスを改善することができます。動的ページング用に割り当てたメモリ容量を越えると、ランタイムシステムは、不足分をディスク上にページングします。

たとえば、大きな COBOL プログラムをコンパイルすると、コンパイラでは、作成したシンボルテーブルを格納する大きな辞書が必要になるため、動的ページングバッファ用のメモリ容量を超えることがあります。動的ページングバッファ用のスペースを使いきると、ランタイムシステムはディスクに動的にアクセスし、ページングを開始しますが、これはパフォーマンスのオーバヘッドになります。動的バッファリング用のメモリ容量を増やすと、ディスクへのページングを避ける (または、少なくとも減らす) ことができるため、 コンパイラのパフォーマンスは比較的良くなります。

ランタイムシステムがディスクにページングする前に使用できるメモリ容量を倍にする (500k にする) 場合は、COBSW 環境変数を次のように指定します。

COBSW=-d500000
参照

dynamic_dictionary_limit 実行時調整可能変数


E - エラー

S レベルの構文チェックエラーを含む中間コードを実行します。

プロパティ
デフォルト値 無効
コメント

このスイッチの設定を無効にして S レベルのコンパイラエラーがある中間コードプログラムを実行しようとすると、ランタイムシステムエラーが発生します。これらのエラーに関する全詳細は、『エラーメッセージ』マニュアルを参照してください。


F - 数字フィールドのチェック

すべての数字項目の数字データの有効性をチェックします。

プロパティ
デフォルト値 有効
コメント

データが有効でない場合は、ランタイムシステムエラー 163 (「数字項目に違法な文字がある」) が生成されます。このスイッチを無効にすると、このチェックは実行されません。

このチェックは、CHECKNUM コンパイラ指令を指定して作成された生成コード、および中間コードに対してのみ実行されます。ランタイムシステム、および生成コードで、様々なタイプの数字の操作が最適化されます。数字のオペランドに無効な数値データが含まれている場合、これらの操作で結果が無効になることがあります。デフォルトでは、無効な数値データの演算が実行されようとすると、ランタイムシステムでランタイムシステムエラー 163 が生成されます。

無効なデータの処理は、中間コード、およびネイティブコードでは異なり、他の環境のこの COBOL システムと、この COBOL システムの別バージョンとでも異なります。プログラムの開発中は、数字フィールドのチェックを有効にすることをお奨めします。

ランタイムエラー 163 を受け取った場合は、コードを調整し、無効なデータが使用されないようにすることをお奨めします。+F スイッチを有効にし、ランタイムシステムエラー 163 が検知されるまで、作成したプログラムをアニメートしていくと、コード中の無効な数値データを検索することができます。

数字フィールドの無効なデータを解決するための次のコンパイラ指令を 1 つ以上使用すると、コードを修正できない場合があります。

このスイッチを使って有効、または無効にできるチェックは、数字フィールドのチェックです。スイッチを有効にすると、項目がランタイムシステムで数字レジスタの 1 つにロードされる際、ロードされる値に数字以外の文字が含まれているかどうかが最初にチェックされます。数字以外の文字が含まれている場合、ランタイムシステムエラー 163 が出力されます。次に例を示します。

working-storage section. 
    01 item-a       pic 9.
procedure division.
    If item-a =  0.
        Display "zero"
    else
        display "nonzero"
    end-if.

変数項目、a は value 句で初期化されません。そのため、空白文字、 x"20" が含まれます。 F スイッチを有効にしてこのプログラムを実行すると、数字フィールドに、数値以外の値が含まれているかどうかがランタイムシステムでチェックされ、含まれている場合はランタイムエラー 163 になります。

参照

CHECKNUM コンパイラ指令
HOST-NUMCOMPARE コンパイラ指令
HOST-NUMMOVE コンパイラ指令
HOSTSIGNS コンパイラ指令
SPZERO コンパイラ指令
ZWB コンパイラ指令


i - キーボードによる割り込み

キーボードによる割り込みを可能にします。ご使用のシステムでジョブコントロールがサポートされている場合は、このスイッチにより一時停止割り込みキー (通常は Ctrl+Z) も有効になります。

プロパティ
デフォルト値 有効
コメント

一時停止キーを含むキーボードによる割り込みを、作成するアプリケーションで使用されないようにするには、-i スイッチを使用してください。


l - メモリ

ランタイムシステムが最大で使用できるメモリ容量を設定することができます。または、ランタイムシステムで、論理キャンセルではなく、物理キャンセルが実行されるようにします。

プロパティ
デフォルト値 ランタイムシステムで使用できるメモリの最大値 (バイト) です。
コメント

このスイッチは小文字の L です。大文字の I ではありません。

このスイッチの指定形式は lnnnnnn です。 nnnnnn には、ランタイムシステムで使用できるメモリ容量を、バイト単位で指定します。

このスイッチを使用して、ランタイムシステムで使用されるメモリ容量を制限することができます。これは、ご使用のシステムを調整するのに役立ちます。

デフォルトでは、使用可能なメモリをすべて使用してしまうまで、ランタイムシステムでは論理キャンセルが実行されます。ユーザプログラムに関しては、論理キャンセルと物理キャンセルの動作は同じですが、論理キャンセルの方が速度が速くなります。論理キャンセルでは、すべてのファイルバッファがフラッシュされますが、メモリは解放されません。すべてのキャンセルを物理的にキャンセルするには、パラメータにゼロを指定して、このスイッチを指定する必要があります。次に例を示します。

+l0

ランタイムシステムは、メモリスペースが必要になると、新しく要求する容量が、メモリの使用可能容量の範囲内であることをデフォルトで確認します。範囲を超える場合は、取り消しによって解放されたメモリが解放され、その後、ランタイムシステムのメモリ要求が繰り返されます。ランタイムシステムでは、論理的に取り消されたプログラムが、ディスク上のプログラムよりも優先してロードされます。

静的にリンクされた COBOL プログラムはメモリから削除できないため、物理的に取り消すことができません。

静的にリンクされたプログラムで、重複した入口点名を使用することはできません。これらのプログラムの入口点名はすべて一意になるようにしてください。

静的にリンクされたプログラムでは、論理キャンセルも物理キャンセルも同じ動作になります。そのため、論理キャンセルを使用した .int ファイルおよび .gnt ファイルを使用して開発したアプリケーションの動作は、オブジェクトコードファイルを静的にリンクして作成した場合と同じ動作になります。ただし、このようなアプリケーションを開発する際に、物理キャンセルを使用したり、重複した入口点名を使用した場合は、アプリケーションは静的リンクに失敗します。

参照

default_cancel_mode 実行時調整可能変数


L2 - レコード終了文字

行順ファイルの読み取り時に、レコード終了文字として使用する文字を指定します。

プロパティ
デフォルト値 無効
コメント

無効 (-L2) にすると、x"0A" または "0D0A" がレコード終了文字になります。これは、COBOL for DOS、COBOL for Windows、および COBOL for OS/2 と互換性があります。

有効 (+L2) にすると、x"0A" がレコード終了文字になります。これは、このシステムの旧バージョンと互換性があり、WRITE...AFTER ADVANCING 文を使用して書き込まれたファイルを正しく読み取れます。

このスイッチは、書き込み操作にではなく、読み込み操作にのみ有効です。


N - ヌル

作成したプログラムのすべての行順ファイルにヌルを挿入できます。

プロパティ
デフォルト値 有効
コメント

このスイッチは、ユーザのファイル形式がこのバージョンの COBOL と互換性がない場合に特に役立ちます。

このスイッチを有効にすると、プログラムが、制御文字 (つまり、ASCII コードが x"1F" 以下のすべての文字) を含むレコードを行順ファイルに書き込む際、各制御文字の前に、システムでヌル文字 (x"00") が追加されます。同じように、行順ファイルからレコードを読み取る場合は、これらのヌル文字が制御文字から削除されます。

このスイッチを設定すると、行順ファイルのデータの物理記憶域にのみ作用します。レコードが書き込まれた際の設定と、読み込まれた際の設定が同じである場合は、レコードが同じ形で返されます。しかし、書き込まれた際の設定と反対の設定でファイルを読み込もうとすると、予期しない結果になります。

このスイッチを無効にすると、制御文字の書き込み、および読み込みは、他の文字と同様に実行されます。

N スイッチを有効にすると、次のようになります。


注 : 制御文字はオペレーティングシステムによって異なります。制御文字の 16 進の値は常に x"1F" よりも小さくなります。


N スイッチを無効にすると、次のようになります。

コマンド行で次のように入力します。

cobrun[_t] -N myprog

このようにすると、プログラム myprog をロードし、行順ファイル内のタブを除いた x"1F" 以下のすべての文字と、ファイル制御文字がデータとして扱われるように指定できます。出力時に、x"1F" よりも小さいデータ文字の前にヌルは挿入されません。


O - ゼロによる割り算

ランタイムシステムエラー 48 (「ゼロで割ろうとしている」) を有効にします。

プロパティ
デフォルト値 有効
コメント

CHECKDIV"OSVS"、CHECKDIV"VSC2"、または CHECKDIV"COBOL370" を設定してプログラムをコンパイルした場合に、ゼロによる割り算を実行しようとすると、ランタイムシステムエラー 48 が生成されます。このスイッチを無効 (-O) に設定すると、このエラーは生成されず、プログラムは未定義の結果で続行されます。このスイッチは、上記の指令の設定のうち、いずれも使用しないでコンパイルしたプログラムには無効です。

参照

CHECKDIV コンパイラ指令


T - タブ

すべての行順ファイルに、タブ文字を挿入できるようにします。

プロパティ
デフォルト値 無効
コメント

このスイッチは、ユーザのファイル形式がこのバージョンの COBOL システムと互換性がない場合に特に役立ちます。

ディスクに出力する場合は、タブ停止位置の前の複数の空白文字は 1 つのタブ文字として書き込まれます。T スイッチは後続空白には作用しません。後続の空白は行順編成のレコードの一部ではなく、出力時には削除されます。タブ位置は 8 字めごと (たとえば 9、17、25) で、変更はできません。

入力時には、 T スイッチの設定に関係なく、タブ文字は常に、次のタブ位置まで空白文字に展開されます。

このスイッチを無効にすると、行順ファイルのすべての空白が、空白文字としてディスクに書き込まれます。


Z - DBCS 空白文字変換

行順ファイルの読み取り時またはコンソールからの入力時に、2 バイトの文字集合 (DBCS) の空白文字を ASCII の空白文字に変換できるようにします。

プロパティ
デフォルト値 無効
コメント

日本語環境の DBCS の空白文字、 x"8140" (シフト JIS の場合)、および x"A1A1" (EUC の場合) が ASCII の空白文字、 x"2020" に変換されます。

参照

DBSPACE コンパイラ指令



Copyright © 2005 Micro Focus International Limited. All rights reserved.