tinit() - MTF サブタスクの付加と初期化

標準

標準/拡張機能 C/C++ 依存項目
Language Environment C のみ  

形式

#include <mtf.h>

int tinit(const char *parallel_loadmod_name, int num_subtasks);

機能説明

制約事項: この関数は、AMODE 64 ではサポートされません。

MVS で、マルチタスキング機能 (MTF) 環境を初期設定します。

ユーザーのネーム・スペースが侵害されるのを回避するため、この非標準関数には 2 つの名前があります。1 つの名前の接頭部には 2 つの下線文字が付き、もう 1 つの名前の接頭部には付きません。接頭部下線文字が付いていない名前は、LANGLVL(EXTENDED) を使用する場合にのみ表示されます。

この関数を使用するには、その外部エントリー・ポイント名 (2 つの下線文字で始まる名前) を使用して呼び出すか、LANGLVL(EXTENDED) を使用してコンパイルする必要があります。LANGLVL(EXTENDED) を使用すると、ヘッダー内の関連情報も表示されます。

num_subtasks によって指定されたサブタスク数を動的に付加および初期設定するために、メインタスクから tinit() が呼び出されます。ここで、num_subtasks は 1 ~ MAXTASK の範囲 (ヘッダー・ファイル mtf.h に定義されている) に入っています。サブタスクが tinit() によって付加および初期設定された後で、各サブタスクは task_id が提供され、tsched() および tsyncro() ライブラリー関数の制御のもとで、メインタスクと並行して独立プログラムを計算できます。

並列ロード・モジュール (parallel_loadmod_name) には すべての並列関数が含まれていて、プログラムを実行する JCL の STEPLIB DD ステートメントに指定された 区分データ・セットに常駐している必要があります。

tinit() 関数は、tterm() を呼び出す前に一度だけメインタスクによって呼び出せます。最初の tinit() 呼び出し以後の tinit() の起動は、MTF が既にアクティブになっていることを示す戻り値で終了します。

tterm() を呼び出して MTF 環境を終了して除去した後、または異常終了の後で、tinit() を再度呼び出して、新規の MTF 環境を作成できます。新規の初期設定は旧の初期設定 とは無関係で、異なる数のタスクまたは異なる並列ロード・モジュール あるいはその両方を提供できます。

tinit() が並列関数から呼び出されると、tinit() は、並列関数 から MTF 呼び出しを発行できないこと を示す戻り値で終了します。

tinit() が IMS、CICS、または DB2 のもとで実行している プログラムによって呼び出された場合には、要求は処理されず、戻り値は MTF 呼び出しがこれらのシステムではサポートされない ことを指示します。

戻り値

サブタスクが正常に付加され、MTF 環境が作成されると、tinit() は、MTF_OK を戻します。

正常に実行されなかった場合、tinit() は errno を次のいずれかの値に設定します。

エラー・コード
説明
EACTIVE
MTF は既に初期設定されていて、アクティブに なっています。
EAUTOALC
標準ストリーム DD の自動割り振りは失敗しました。
EMODFIND
並列ロード・モジュールは見つかりませんでした。
EMODFMT
並列ロード・モジュールには、無効な形式があります。
EMODREAD
並列ロード・モジュールは正常に読み取られませんでした。
ENAME2LNG
並列ロード・モジュール名は、8 文字より長くなっています。
ENOMEM
ストレージは MTF 内部エリアには不十分でした。
ESUBCALL
MTF 呼び出しが、サブタスクから発行されました。
ETASKABND
1 つ以上のサブタスクが異常終了しました。
ETASKFAIL
タスク (複数もある) を付加しようとしましたが、失敗しました。
ETASKNUM
指定されたタスク数は無効です (<1 または >MAXTASK)。
EWRONGOS
MTF は、IMS、CICS、または DB2* ではサポートされません。
注: これらの値はマクロで、mtf.h ヘッダー・ファイルで 見つかります。

関連情報