«

10.3定義されているDD文の取得(TIOTの探索)

By 神居 - Posted: 2010/12/07 Last updated: 2010/12/07 - 2 Comments

JCLにどのようなDD文が定義されているかを知りたい場合は、TIOTをスキャンします。TIOT(Task Input/Output Table)は、JCLに定義されたDD文に基づいて作成される制御表で、ステップ開始時のデバイス・アロケーション処理の過程で作成されます。TIOTはジョブ名やステップ名が格納されているヘッダー部分の後に、定義されたDD文に対応したDDエントリーが続きます。DDエントリーにはDD名、JFCBへのポインタートークン、関連デバイスのUCBアドレス、制御用のフラグ・フィールドなどが格納されています。


JCLに定義されているDD文のリストを作る(TIOTを直接たどる)

TIOTのアドレスを得たら、先頭のDDエントリーに位置付けます。DDエントリーの先頭にはそのエントリーの長さが入っているので、それを元に順次たどって行くことができます。DD名だけでなく、DD文に定義されたパラメーター情報を得るためにJFCBを求めることもできますが、JES2のJOBCLASS定義によってJFCBが拡張SWA領域に置かれていると、TIOTにはJFCBアドレスではなくSWAREQマクロで使用するトークン値が入り、JFCBを求めるにはSWAREQマクロを使用しなければなりません。JFCBを得るなら代わりにRDJFCBマクロを発行してもかまいません。


EXTRACTマクロの代わりに、TCBから直接TIOTをたどっても同じことができます。


MSPはMVSと同じ方法でTIOTを求められますが、VOS3の場合はTCBあるいはEXTRACTで求めたTIOT(ヘッダ)アドレスからDDエントリーを求める場合、GETTIOTマクロを使います。このマクロを使えばTIOTのDDエントリー部が16MB以上の領域に展開されている場合でも正しい探索が可能になります。


JCLに定義されているDD文のリストを作る(DSABからTIOTを求める)

MVSにおいて、TIOTが16MBより上のSWA領域に作られているXTIOTの場合は、従来のTIOT探索では求めることができません。JCLに定義されたDD文に関しては16MB未満の領域に作られますが、動的割り振りによって割り振られたデータセットやデバイスにおいてXTIOT要求の指定があると、その割り当てに関するDDエントリーは16MBより上の領域に作成され、16MBより下の領域にあるTIOTとは切り離されて管理されます。プログラム内でXTIOTを使用するダイナミック・アロケーションを行っていない限り、XTIOTを意識する必要はありませんが、もしXTIOTも含めてDDエントリーをたどる場合は、DSAB(Data Set Association Block)のチェインをたどり、DSABから対応するTIOTを求める方法があります。
XTIOTはDB2など、一部のシステムプロダクトで使用されています。

Posted in 中級編 • • Top Of Page

2 Responses to “10.3定義されているDD文の取得(TIOTの探索)”

Comment from 角野 修
Time 2011年6月15日 at 17:41

いつもこの文献を利用させていただいており非常に助かっております。

質問:ダイナミックにDD名を変更する手法としてTIOTのDDエントリーよりサーチしたDD名を変更しています。Z/OS V1.6までは何の問題も無く正常に稼動していたのですがZ/OS V1.10から変更したDD名が認識されないようになりました。
ちなみに、認識されないものはVSAMのDD名のみです。PSのデータセットは問題なくDD名の変更ができています。
(変更時はMODESETでMODE=SUPにしています)
今まではVSAMのDD名もTIOTのDDエントリーのDD名を変更し稼動できていたのですがZ/OS V1.10から稼動できなくなった理由が分かりません。

 稼動させているプログラムはIFASMFDP でSMFのDUMPを行なわせる為にこのPGMをLINKしてDUMPINのDD名をTIOTにセットして呼び出しています。

この関連の情報でご存知のことがありましたら教えていただきたく、よろしくお願いします。

Comment from アルテシード
Time 2011年6月16日 at 11:50

OSのバージョン変更で、VSAMに関してはTIOTがXTIOTに変わったのかも知れませんが、正確なことはわかりません。
ただTIOTでもXTIOTでもフィールド内容を書き換えれば更新はされると思います。書き込み自体が無効になっているのか、何らかの誤りで全然違うところを更新しているのか、何かのタイミングで書き戻されてしまうのか、正しく更新しているのに反映されないってことでしょうか。XTIOTにはシャドウがあるとも思えませんし。
いずれにしても当方は解決に有用な情報を持っておりません。お役に立ちませんで...