IKJEFT01(IKJEFT1A、IKJEFT1B)

IKJEFT01は、TSOのコマンドシェル・プログラムです。TMP(Terminal Monitoe Program:端末モニタープログラム)と呼ばれ、TSOセッションの開始を行います。ログオン・プロシージャーと呼ばれるJCLのEXECステートメントに定義して、ログオンが完了したユーザーのTSOユーザー空間を起動するために使われます。端末からのオンライン利用だけでなく、バッチ・ジョブとしても実行することができ、バックグラウンドでTSOコマンドを実行することができます。同じコマンドを何度も繰り返したり、作業内容と結果を記録したい場合などに利用できます。バッチ・ジョブとしてTSOセッションを実行するJCLのサンプルは、「TSOバッチ・セッション」に載せてあります。

TMPの実行

TMPのプログラム名は、IKJEFT01です。MSPではKEQEFT01、VOS3ではJETTFT01です。SYSTSINに実行したいコマンドを指定します。複数指定すれば、指定した順序で順番に実行されます。コマンドまたはプログラム(CALLコマンドで呼び出す等)がエラーで終了しても、ただちにTSOセッションは終了しません。後続のコマンドがあれば、処理が続けられます。バッチ・セッションの場合は、最後に実行したコマンドの戻りコードがステップの完了コードとなります。ただし、コマンドまたはプログラムがABENDした場合は、そこで処理は打ち切られ、ステップの完了コードには12が設定されます。(MSPやVOS3でも同様の動きと思いますが、実際に完了コードがどう設定されるかは、実機を使える方はご自分で確認してみて下さい)

z/OSの場合、TMPの代替の入口点名(IKJEFT1AまたはIKJEFT1B)が使用できます。IKJEFT1Aまたは1Bでは、実行したコマンドがエラーになった時の動き方が変わります。後続のコマンドがどうなるか、ステップの完了コードはどう設定されるかが、IKJEFT01とは異なります。基本的には、途中でコマンドがエラーになっても、指定したコマンドを最後まで実行させたいならIKJEFT01を、エラーになったところで処理をやめたいならIKJEFT1AまたはIKJEFT1Bを使用します。

TMP入口点名による動きの違い(MVS)

コマンドが0でない
戻りコードで終わった時
コマンドがABENDした時(Unnnn) コマンドがABENDした時(Sxxx)
IKJEFT01 次のコマンドがあれば処理を続ける。
ステップの完了コードは最後のコマンドの戻りコード。
次のコマンドは実行されない。
ステップの完了コードは12。
←(左に同じ)
IKJEFT1A 次のコマンドは実行されない。
ステップの完了コードは最後のコマンドの戻りコード。
次のコマンドは実行されない。
ステップの完了コードは、
ユーザーABENDコードと同じ。
次のコマンドは実行されない。
ステップの完了コードはS04C。
IKJEFT1B 次のコマンドは実行されない。
ステップの完了コードは最後のコマンドの戻りコード。
次のコマンドは実行されない。
ステップの完了コードはS04C。
←(左に同じ)
  • TSOセッションで実行したコマンドが正しく終了したかどうかで、後続のステップの実行をコントロールしたいなら、必要に応じて適切なプログラム名を選べます。

    CLISTの中でコマンドがエラーになった時

    IKJEFT01では、CLIST内で実行したコマンドがエラーになっても、CLIST自体がノーマルに終われば完了コードは0となります。これを防ぐにはEXITステートメントでCLISTの戻りコードを明示的に指定します。

    IKJEFT1Aおよび1Bでは、EXITステートメントがなくてもエラーになった時点で処理が打ち切られ、完了コードもエラーの戻りコードで設定されます。ただし、コマンドのエラーではなく、単にEXITステートメントのCODEパラメーターで0以外のコードを指定したような場合は、打ち切られずに後続の処理が行われます。