/* REXX DCBTREE Here is the TCBTREE EXEC that should fulfill your wishes. It climbs the TCB tree and runs the DEB queues, producing output that looks like this under ISPF: TCB=AFD140 RB=AFF120 PGM=IKJEFT01 DEB=AC630C DCB=ACF2B8 DDN=SYS00001 TCB=A8CE88 RB=A8CE00 PGM=IKJEFT02 TCB=A8CB70 RB=AB0038 PGM=IKJEFTAI TCB=AD3A60 RB=AFDA80 PGM=IKJEFT02 TCB=AD36B0 RB=AD3928 PGM=IKJEFT09 TCB=AD3518 RB=AFD968 PGM=ISPMAIN DEB=AB715C DCB=0103D8 DDN=ISPMLIB DEB=AB7524 DCB=0108E8 DDN=ISPTLIB DEB=AB8324 DCB=010D50 DDN=ISPSLIB DEB=AB7A7C DCB=010190 DDN=ISPPLIB DEB=AB80DC DCB=011288 DDN=ISPPROF DEB=AB7EBC DCB=00CF14 DDN=ISPLLIB TCB=AB0C10 RB=A8C950 PGM=........ DEB=A88B04 DCB=00A928 DDN=SYSEXEC TCB=AD3208 RB=A8CD78 PGM=ISREDIT DEB=A96D54 DCB=074408 DDN=ISP18261 Gilbert Saint-flour */ address TSO; "CLEAR" tcb = PTR(540) /* TCB (EXEC command) PSATOLD */ tiot= PTR(tcb+12) /* TIOT TCBTIO */ tcb = PTR(tcb+124) /* TCB (IKJEFT01) TCBJSTCB*/ r3=0 DO UNTIL tcb=0 rb=PTR(tcb+0) /* Top RB TCBRBP */ pgm=STORAGE(D2X(rb+96),8) say COPIES(' ',r3+r3) || 'TCB='D2X(tcb) 'RB='D2X(rb) 'PGM='pgm deb=PTR(tcb+8) /* DEB queue TCBDEB */ DO WHILE deb>0 dcb=PTR(deb+24) /* DCB DEBDCBAD*/ dcbtiot=C2D(STORAGE(D2X(dcb+40),2)) /* TIOT offset DCBTIOT */ ddname=STORAGE(D2X(tiot+dcbtiot+4),8) /* ddname TIOEDDNM*/ say COPIES(' ',r3+r3+4) || 'DEB='D2X(deb), 'DCB='RIGHT(D2X(dcb),6,'0') 'DDN='ddname deb=PTR(deb+4) END r1=tcb tcb=PTR(tcb+136) /* Daughter task TCBLTC */ r3=r3+1 DO WHILE tcb=0 & r3>0 tcb=PTR(r1+128) /* Sister task TCBNTC */ r1=PTR(r1+132) /* Mother task TCBOTC */ r3=r3-1 END END EXIT PTR: RETURN C2D(BITAND(STORAGE(D2X(ARG(1)),4),'00FFFFFF'X))