Job

JOBコマンドは、名前が付いたルーチンを別のGT.Mプロセスで実行を開始します。

$ZJOBは、JOBコマンドで作成されたプロセスのPIDをセットします。詳細な情報と使用例については、 “$ZJob”を参照してください。

JOBコマンドのフォーマットは:

J[OB][:tvexpr] entryref[(expr[,...])]
[:[(keyword[=value][:...])][:numexpr]][,...]

そのGT.Mプロセスの実行が完了する時には、オペレーティングシステムは結果として生じるプロセスを削除します。結果として生じるプロセスは、現在のプロセスで非同期で実行します。いったんGT.Mが結果として生じるプロセスを開始すると、現在のプロセスは続行されます。

もしJOBコマンドがタイムアウトを指定し、GT.Mは、タイムアウト時間が経過する前に、結果として生じるプロセスを作成する場合、JOBは$TESTに true (1)をセットします。 もしGT.Mが、指定されたタイムアウト時間内にプロセスを作成できない場合は、JOBは$TESTを false(0)にセットします。もしJOBコマンドがタイムアウトを指定しない場合、コマンドの実行は $TEST には影響しません。

もしGT.Mが、無効なデフォルトのディレクトリの指定、または、パラメータリストが長すぎるような、タイムアウトインターバルの間にほとんど変化のない何かの理由でプロセスを作成できない場合は、JOBコマンドは実行時エラーを生成します。もしコマンドがタイムアウトを指定しない場合と、環境が十分なリソースを提供しない場合は、結果を生じさせるプロセスを作成するためにリソースを使用できるようになるまで、プロセスは待機します。

JOBの環境変数

JOBがフォークされる時、UNIX は、JOBコマンドが発行するプロセスの環境をコピーすることといくつかのマイナーな変更を加えることによって、新しいプロセスの環境を作成します。デフォルトでは、標準入力は nullデバイスに割り当てられていて、標準出力は routinename.mjo に割り当てられ、標準エラーは routinename.mje に割り当てられます。

JOBのディレクトリへの影響

デフォルトでは、GT.Mは、開始されるプロセスの作業ディレクトリの親プロセスの現在の作業ディレクトリを使用しています。

もしプロセスパラメータで指定されたファイルが、存在しない、そして、GT.Mがそれらを作成する権限を持っていない場合は、JOBプロセスが終了します。対応するファイルが現在の作業ディレクトリにあるときは、OUTPUT、INPUT、およびERRORのプロセスパラメータ(processparameter) は、フルパス名を必要としません。

JOBのプロセス パラメータ

以下のセクションでは、GT.Mの中でJOBコマンドのプロセスパラメータ(processparameter)が利用可能な説明をします。

CMD[LINE]="strlit"

文字列リテラルは、JOBのプロセスの$ZCMDLINEを指定します。

DEF[AULT]=strlit

文字列リテラルは、デフォルトのディレクトリを指定します。

ディレクトリの最大長は255文字です。

もしJOBコマンドがデフォルトのディレクトリを指定しない場合、GT.Mは、親プロセスの現在のデフォルトディレクトリを使用します。

ERR[OR]=strlit

strlitは、 JOBプロセスの標準エラーを指定します。strlitは、ファイルまたはDETACHされたソケット(つまり、ソケットプールからのソケット)のいずれかです。DETACHされたソケットをJOBプロセスの標準エラーとして渡すには、 "SOCKET:<handle>" の形式で strlit を指定します。ここで<handle>はソケットハンドルです。JOBプロセスが正常に完了すると、渡されたソケットは閉じられ、親プロセスは使用できなくなります。

文字列の最大長は255文字です。

デフォルトでは、JOBは .mje のファイル拡張子を使用してルーチンネーム(routinename) からエラーファイルを作成します。 .mje:JOBコマンドで作成されたプロセスのデフォルトディレクトリ

GBL[DIR]=strlit

リテラル文字列は環境変数 gtmgbldir の値を指定します。

文字列の最大長は255文字です。

デフォルトでは、ジョブは、JOBコマンドを使用しているプロセスのために$ZGBLDIRで定義されているgtmgbldir と同じ仕様を使用しています。

IN[PUT]=strlit

strlitは、 JOBプロセスの標準入力を指定します。strlitは、ファイルまたはDETACHされたソケット(つまり、ソケットプールからのソケット)のいずれかです。DETACHされたソケットをJOBプロセスの標準入力として渡すには、 "SOCKET:<handle>" の形式で strlit を指定します。ここで<handle>はソケットハンドルです。JOBプロセスが正常に完了すると、渡されたソケットは閉じられ、親プロセスは使用できなくなります。

[注意] 注意

INPUTとOUTPUTパラメータの両方にDETACHされたソケットを指定して、JOBプロセスの$PRINCIPALとして渡します。

文字列の最大長は255文字です。

GT.Mは、デフォルトのファイル拡張子を提供しません。

デフォルトでは、ジョブは nullデバイスからの入力を取り込みます。

OUT[PUT]=strlit

strlitは、 JOBプロセスの標準出力を指定します。strlitは、ファイルまたはDETACHされたソケット(つまり、ソケットプールからのソケット)のいずれかです。DETACHされたソケットをJOBプロセスの標準出力として渡すには、 "SOCKET:<handle>" の形式で strlit を指定します。ここで<handle>はソケットハンドルです。JOBプロセスが正常に完了すると、渡されたソケットは閉じられ、親プロセスは使用できなくなります。

[注意] 注意

INPUTとOUTPUTパラメータの両方にDETACHされたソケットを指定して、JOBプロセスの$PRINCIPALとして渡します。

文字列の最大長は255文字です。

デフォルトでは、JOBは .mje のファイル拡張子を使用してルーチンネーム(routinename) から出力ファイルのパス名とJOBコマンドで作成されたプロセスのデフォルトディレクトリを作成します。

PASS[CURLVN]

JOBコマンドがPASSCURLVNジョブパラメータを指定すると、新しいプロセスは現在の照合、すべてのローカル、エイリアス、およびエイリアスコンテナをJOBしているプロセスの現在のスタックレベルから継承します。この結果、JOBのプロセスで発行されたZWRITEは、範囲外のエイリアスを除いて、JOBコマンドのコンテキスト内のZWRITEとして同じ出力を持ちます。JOBコマンドが完全名、その添字、対応する値、引用符、等号(=)が1MiBを超えるlvnのZWRITE表現を検出すると、JOBしているプロセスでJOBLVN2LONGエラーが生成され、 JOBのプロセスのエラー出力ストリームにJOBLVNDETAILエラーがあります。JOBコマンドでPASSCURLVNが指定されていない場合、JOBのプロセスは親からローカル変数を継承しませんが、アクチュアリストのentryrefにパラメータとして渡された値を受け取ることができます。安価なコマンドではありませんが、 "exclusive" NEWコマンドを使用してJOBのプロセスに渡されるコンテキストを制御できます; 例えば、JOBコマンドがLOCALAとLOCALBだけを渡す前に "NEW (LOCALA, LOCALB)" を追加します。

STA[RTUP]="/path/to/shell/script"

指定したルーチンを実行する前に、実行するシェルスクリプトの場所を指定します。

JOBプロセスは、シェル・スクリプトを実行するシェル・セッションを生成します。シェル・スクリプトが失敗すると、指定されたルーチンを実行せずにJOBのプロセスが終了します。STARTUPは別のシェルで実行されるため、親から継承されたJOBのプロセスの環境には影響しません。STARTUPは、ディレクトリの作成などの操作に便利です。JOBコマンドの代わりにPIPEデバイスを使用して、生成されたプロセスの環境を制御します。

JOB プロセスパラメータの概要表

プロセスパラメータを次の表にまとめます。

JOBのプロセス パラメータ

パラメータ

デフォルト

最小値

最大値

DEF[AULT]=strlit

JOBコマンドを発行したプロセスと同じディレクトリ

none

255文字

ERR[OR]=strlit

./routinename.mje

none

255文字

GBL[DIR]

JOBコマンドを発行するプロセスの gtmgbldir と同じ

none

255文字

IN[PUT]=strlit

Nullデバイス

none

255文字

OUT[PUT]=strlit

./routinename.mjo

none

255文字

PASS[CURLVN]

formallist の値だけを渡す

N/A

任意の lvn のZWRITE key/value 表現は1MiBを超えてはいけません

STA[RTUP]=strlit

none

none

ファイルパス名がオペレーティングシステム上に持つことができる最大長で決定されます。GT.Mが現在サポートしているすべてのシステムで少なくとも255バイトです。

JOBの例

例:

GTM>JOB ^TEST("V54001","")

これは、現在の作業ディレクトリで ルーチン ^TEST(2つのパラメータ付き)の実行することを開始するジョブを作成します。

例:

JOB PRINTLABELS(TYPE,PRNTR,WAITIM)

これは、現在のルーチンのラベル PRINTLABELS から始まる新しいジョブとして3つの値(TYPE、PRNTR、WAITIM)を渡します。

例:

JOBコマンドの参考例については、「ソケットデバイスの使用」の sockexamplemulti31.m プログラムを参照してください。

inserted by FC2 system