ダンプ・リスト解析入門 ⑧:ダンプ解析に関連するOSコントロール・ブロック④

TIOT

TIOT(Task Input/Output Table)は、ジョブを実行するためのJCLに定義されたDDステートメントのテーブルです。ジョブ名やステップ名などが格納されるヘッダー部と個々のDDステートメントの名前、JFCBポインター、UCBアドレスなどが格納されるDDエントリーで構成されています。個々のDDステートメントに定義されたパラメーター情報はTIOTではなくJFCB(Job File Control Block)にあります。TIOTはIEFTIOT1マクロによってマッピングできます。

TIOTのDDエントリーのJFCBポインターは3バイトです。JES2起動パラメーターのJOBCLASSステートメントにSWA=ABOVEが指定されているジョブクラスでは、JFCBは拡張SWA領域に展開されるためTIOTはJFCBアドレスを直接ポイントしません。3バイトフィールドに入っているのはSWAプール内の位置を示すアドレス・トークン値となります。このトークン値から実際のアドレスを求めるにはSWAREQマクロを使用しますが、ダンプ・リスト上で探す場合は「SWA BLOCK POOL 1」の文字列でダンプ・リストをスキャンして見つけ、そのアドレスにトークン値に8を乗じた値を加えれば、大凡の位置を知ることができます。TIOTおよびJFCBはSWA領域にあるため、ダンプ出力のSDATAオプションでSWAが追加指定されていないと書き出されません。

JFCB

JFCB(Job File Control Block)は、DDステートメントに定義されたパラメーター情報を格納したコントロール・ブロックです。ここを参照すれば、元のJCLがなくてもジョブのJCLにどのようなDDステートメントが定義されていたかを知ることができます。ただし、サブミットしたJCLやジョブ・ログなどで元のJCLはわかるため、実際にJFCBからJCLのDDステートメントを復元するようなことは行われません。JFCBはIEFJFCBNマクロによってマッピングできます。

JFCBの主なフィールド(MVSの場合)
オフセット フィールド名 意味、内容
+x00 JFCBDSNM DSNパラメーターに指定されたあるいはシステムが割り当てたDSNAME
+x2C JFCBELNM DSNに続けて()で指定されたメンバー名あるいはGDGの世代番号
+x57 JFCBIND2 DISPパラメーターの内容を示すフラグバイト
+x64 JFCRECFM DCBパラメーターで指定されたRECFM値
+x76 JFCBVOLS VOLパラメーターで指定されたボリューム名
+x98 JFCBPQTY SPACEパラメーターで指定された1次スペース量
+x9B JFCBCTRI SPACEパラメーターで指定された割り当てタイプを示すフラグバイト

DEB

DEBは、MVSがデータセットのI/Oをコントロールするために作成されるコントロール・ブロックで、DCBがオープンされる時に作成されます。DCBはデータセットをオープンするプログラムが用意するアクセス方式(QSAMやBPAMなど)に対するパラメーター領域ですが、DEBはMVSがI/Oの制御やDASDデータセットがボリューム上のどの範囲にあるのかを示すエクステント・アドレスなどが記述されたもので、アプリケーション・プログラムが直接参照したり書き込んだりするものではありません。DEBはIEZDEBマクロによってマッピングできます。

ダンプにDEBがあるということは、ABENDした時点でオープンしていたデータセットがあることを示しています。ただし、ダンプ・リストではアプリケーション・プログラムがオープンしたデータセットだけでなく、ダンプ出力用のDEBもチェインされることになります。