ダンプリスト解析入門⑧

By 神居 - Posted: 2013/01/29 Last updated: 2018/07/27 - Leave a Comment

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

TIOT

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

TIOT: 009C1FE8
         JOB...... TKWORKE   STEP..... GO                  MYASMPGM

                LN-STA    DDNAME    TTR-STC   STB-UCB
         +0018  14010100  STEPLIB   9E0A5800  80F3AF60
         +002C  14010102  SYSPRINT  9D431800  80000000
         +0040  14010102  SYSUDUMP  9D449800  80000000
         +0054  14010100  DATA1     9D461800  80F35B70 --+    デバイスの
         +0068  14010100  DATA2     9D479800  80F3B648   +--> UCBアドレス
         +007C  14010100  DATA3     9D491800  80F35B70 --+
                                    ~~~~~~この3バイトがJFCBアドレス
         +0090  ***FREE TIOT SPACE***

JES2起動パラメーターにJOBCLASS SWA=ABOVEが指定されたジョブクラスの場合
TIOT: 009C4FE8
         JOB...... TKWORKE   STEP..... GO                  MYASMPGM

                LN-STA    DDNAME    TTR-STC   STB-UCB
         +0018  14010100  STEPLIB   0002FF00  80F3AF60
         +002C  14010102  SYSPRINT  00034F00  80000000
         +0040  14010102  SYSABEND  00037F00  80000000
         +0054  14010100  DATA1     0003AF00  80F35B70
         +0068  14010100  DATA2     0003DF00  80F3B648
         +007C  14010100  DATA3     00040F00  80F35B70
                                    ~~~~~~この3バイトはJFCBのアドレストークン
         +0090  ***FREE TIOT SPACE***

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マクロによってマッピングできます。

                                                                  +? TIOTのポインターが示すのはここ。
                                                                  I   RDJFCBマクロで読み込まれるデータやIEFJFCBNマクロで
                                                                  I   マッピングされるデータは、ここから16バイト離れた
                                                                  ★   ところから始まる。
009D4600 009D46E8 009D47A8 009D53A8 00000000    00000000 00000000 00000050 889D4618   *...Y...y...y...............&h...*
009D4620 1C0000B0 D1C6C3C2 E3C5E2E3 4BC9D5D7    E4E3F240 40404040 40404040 40404040   *....JFCBTEST.INPUT2             *
009D4640 40404040 40404040 40404040 40404040    40404040 40404040 40404040 8000060F   *                            ....*
009D4660 00000000 00000000 00000200 00000000    00000000 00000000 70011100 00000048   *................................*
009D4680 00020000 00000000 00004000 90000200    00400000 00000000 00000000 0001E6D6   *.......... ...... ............WO*
009D46A0 D9D2E9F4 40404040 40404040 40404040    40404040 40404040 40404040 009D52D8   *RKZ4                        ...Q*
009D46C0 000000C0 00000100 00000000 00000000    00000000 00000100 00000052 889D46D8   *...{........................h..Q*
009D46E0 030000B0 E2C9D6E3 9D46D803 C4C1E3C1    F3404040 40404040 40404040 00000000   *....SIOT..Q.DATA3           ....*
009D4700 00000000 00000000 9D491800 00000001    00000002 00064400 00010000 08010108   *................................*
009D4720 08000100 3010200F 00F35B70 40404040    40404040 40404040 40000000 009CFA50   *.........3$.             ......&*
009D4740 009E0398 00000000 01800000 015F0000    40404040 00000019 7FFAD220 00000000   *...q.........^..    ....".K.....*
009D4760 00004040 40404040 40400000 00000000    00000000 00000000 00000000 009BFC68   *..        ......................*

DEB

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

-DEB--------------------------------------AT LOCATION  009D030C
-----

-24     DEBAVT   00FD3BA4 80E55460 DEBPCIA  00FD3BA4 DEBCEA   80E52000 DEBXCEA  00E52018
-10     PREFIX   00000000 0000060F EXTNSION 009D0290 LENGTH   11       AMTYPE   20       TBLOF    0004
+0      TCBADR   039D1E88 NEXTDEB  10000000 IRBADR   68000000 PATB     00001100
+10     USRPG    01000000 RRQ      FF000000 DCBADR   8F007EB0 APPADR   049D02E8   AMTYPE=20は順次または区分アクセスを示す
+20     50F35B70 00000326 00000326 000E000F              ~~~~
          ~~~~~~                                         プログラムが用意したDCBのアドレス
          UCBアドレス(最初のエクステント)

+30     00010001 00000000 00000000 00000040
+40     F3C2C1D8 C1C30000 00000000 00000000
+50     00000000 00000000 00000000 00000000
+60     009D06B0

ここから以降は、ダンプ出力のSDATAオプションでDMやIOが追加指定されていないと書き出されない。


-DCB-     (QSAM)                           AT LOCATION 00007EB0
-----

+10     002FE5A2 050085F8 00004000 00006D68 02007E9E 90000000 00545000 009D030C
+30     12D73030 00D6B918 0A000001 02090200 30013030 00006E28 00008A00 00008800
+50     00000040 00000000 00000000 00E576F8

-IOB-     (SAM,BPAM-NORMAL SCHEDULING)    AT LOCATION  00006E30
-----

-8      20006E78 7F000000
+0      FLAG     0200     SENS     0000     ECBPT    00006E2C CSW      00006E60 0C000000
+10     START    00000000 DCBPT    00007EB0 RESTR    00000000 VARIABLE 00000000

          :
          :

FOR DEB AT LOCATION 009D030C
-------------------

-UCB-     (DIRECT ACCESS TYPE)            AT LOCATION  00F35B70
-----

 UCBPRFIX: 00F35B68
          -0008  LOCK..... 00000000  IOQ...... 00F44580

 UCBOB: 00F35B70
          +0000  JBNR..... 01        FL5...... 88        ID....... FF        STAT..... 8C        CHAN..... 0205
          +0006  FL1...... 00        FLB...... 00        NXUCB.... 00F35BF8  WGT...... 00        NAME..... 205
          +0010  TBYT1.... 30        TBYT2.... 10        DVCLS.... 20        UNTYP.... 0F        FLC...... 00
          +0015  EXTP..... F35B48    VTOC..... 00010100  VOLI..... WORKZ4    STAB..... 04        DMCT..... 02
          +0024  SQC...... 00        FL4...... 00        USER..... 0007

 UCBCMXT: 00F35B48
          +0000  ETI...... 00        STI...... 00        FL6...... 09        ATI...... 40        SNSCT.... 20
          +0005  FLP1..... AA        STLI..... 00        FL7...... 08        IEXT..... 020721D0  CHPRM.... 00
          +000D  SATI..... 00        ASID..... 0016      RSV...... 00        WTOID.... 000000    DDT...... 00FC3B1C
          +0018  CLEXT.... 00F35B10  DCTOF.... 0000      CSFLG.... 00        RSV...... 00

 UCBXPX: 020721D0
          +0000  RSTEM.... 00        MIHKY.... 0C        MIHTI.... 80        HOTIO.... 40        IOQF..... 00000000
          +0008  IOQL..... 00000000  SIDA..... 0001      SCHNO.... 000F      PMCW1.... 289C      MBI...... 0006
          +0014  LPM...... 80        RSV...... 00        LPUM..... 80        PIM...... 80        CHPID.... 02000000
          +001C            00000000  LEVEL.... 01        IOSF1.... 08        IOTKY.... 00        MIHFG.... 00
          +0024  LVMSK.... 00000001

  ACTUAL UCB COMMON SEGMENT ADDRESS 00F35B70

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

Posted in ダンプ解析入門 • • Top Of Page