同期実行単位または非同期実行単位を作成する。
構文:
call "CBL_EXEC_RUN_UNIT" using command-line
by value command-line-len
by reference run-unit-id
by value stack-size
by value flags
returning status-code
パラメーター:
|
呼び出しプロトタイプを使用 (「説明の読み方」を参照) |
PIC |
command-line |
pic x(n) |
pic x(n) |
command-line-len |
cblt-os-size |
pic x(4) comp-5 または
pic x(8) comp-5 (64 ビットのネイティブ プログラムのみ)
|
run-unit-id |
cblt-x4-comp5 |
pic x(8) comp-5 |
stack-size |
cblt-os-size |
pic x(4) comp-5 または
pic x(8) comp-5 (64 ビットのネイティブ プログラムのみ)
|
flags |
cblt-os-flags |
pic x(4) comp-5 または
pic x(8) comp-5 (64 ビットのネイティブ プログラムのみ)
|
status-code |
「ライブラリ ルーチン - キー」を参照 |
入力パラメーター:
- command-line
- 生成する実行単位に渡すコマンド。プログラム名およびそれに続くパラメーター。
- line-length
- コマンド ラインの長さ。
- stack-size
- 本パラメーターは無視される。
- flags
- 新しい実行単位の作成方法を示す、以下のいずれかのワード。
- ビット 0
-
0 |
CBL_EXEC_RUN_UNIT は、子プロセスを作成すると直ちに呼び出しプロセスに戻る。 |
1 |
CBL_EXEC_RUN_UNIT は、呼び出しプロセスに戻るまで新しい実行単位が完了するのを待つ。 |
- ビット 1
-
0 |
新しく作成された実行単位は、作成時点で呼び出しプロセス内に COBOL スイッチ、ランタイム スイッチ、環境変数、およびオープン ライブラリが存在する場合は、すべて継承する。 |
1 |
新しく作成された実行単位は、作成時点で呼び出しプロセス内に環境変数が存在する場合に、環境変数のみすべて継承する。 |
- ビット 2
-
0 |
新しく作成された実行単位は、呼び出し側の画面入出力用のコンソールを継承する。本コンソールに一度にアクセスできるのは、実行単位セットの 1 メンバーのみ。そうでない場合は予期せぬ結果が生じる可能性がある。注:最初の実行単位と、そこから生成された下位の全実行単位は「実行単位セット」と総称されます。
|
1 |
新しく作成された実行単位は、割り当てられたターミナル入出力用の新しいコンソールを持つ。
本コンソールは親プロセスからは独立していて、画面入出力用に使用できる。
|
- 上記以外のビット
- 予約済み。ゼロに設定する必要がある。
出力パラメーター:
- run-unit-id
- flags にビット 0 を設定していない場合は、生成された実行単位の OS プロセス ID が格納される。ビット 0 を設定すると、この値は変更されない。
- status-code
- 処理状態を示すコード。
0 |
成功 |
157 |
メモリ不足 |
181 |
無効なパラメーター |
200 |
内部ロジック エラー |
255 |
呼び出し先のプログラムが見つからない |
その他の 0 以外のコード |
実行されたプログラムからの戻りエラー コード |
説明:
このルーチンを呼び出す実行単位は「親」と呼ばれ、この呼び出しで作成される実行単位は「子」と呼ばれます。子は作成されると、親から特定の属性を継承する。これらの属性は、呼び出しが行われた時点で親から子にコピーされる。それ以降に親の該当属性に変更が加えられても、子の属性には変更は反映されない。同様に、子の属性に加えられた変更は、親の属性には影響を与えない。
flags のビット 1 は、親のどの属性を子が継承するかを制御する。
.NET 環境では、このコマンドで作成された実行単位は、いずれの COBOL スイッチ、ランタイム スイッチ、および環境変数も継承されない。CBL_EXEC_RUN_UNIT は、作成する実行単位用のライブラリを開かない。
最初の実行単位と、そこから作成された下位の全実行単位は 実行単位セット と総称される。
実行単位を操作する際には、次の点に留意のこと。
32 ビットまたは 64 ビットのアドレス空間を使用するプログラムの両方を開発できる UNIX プラットフォームでは、実行単位セット内で使用されるアドレス空間を統一する必要がある。
32 ビットの実行単位から 64 ビットの実行単位を生成すると、属性はまったく継承されない。64 ビットの実行単位から 32 ビットの実行単位を生成する場合も同様。どちらの場合も、生成された子の実行単位は、新しい実行単位セットの最上位の実行単位として扱われる。