© unknownartist@newsgroup

This program shows another way to get the following information for all opened screens:


/* REXX - EXEC TO LIST ALL ACTIVE ISPF SCREENS
*/
ADDRESS ISPEXEC "VGET ZSCREEN"
TCBP=PTR(132+PTR(540)) /* CURRENT ISPTASK TCB       */
TCBP=PTR(TCBP+132)     /* ISPMAIN TCB VIA TCBOTC    */
TCBP=PTR(TCBP+136)     /* ISPTASK TCB VIA TCBLTC    */
DO WHILE TCBP <> 0
   X=TLDID(TCBP)
   INFO = '> TCB='D2X(TCBP)';  SCREEN NUMBER='SCRNR';  SCRNAME='SCRNAME
   IF SCRNR = ZSCREEN THEN INFO = INFO "*** ACTIVE SCREEN ***"
   SAY INFO
   TCBP=PTR(128+TCBP)  /* FOLLOW NTC                */
END
RETURN

PTR: RETURN C2D(STORAGE(D2X(ARG(1)),4))
STG: RETURN STORAGE(D2X(ARG(1)),ARG(2))

TLDID:
   R9=PTR(112+ARG(1))
   IF STG(R9+40,4)='ISPF' & STG(R9+24,1)='00'X THEN DO
      R9= PTR(R9+24)
      IF R9 <>0 & STG(R9+24,1)='00'X THEN DO
         SCRNR  =STG(PTR(R9)+003,1)
         SCRNAME=STG(PTR(R9)+852,8)
         RETURN 0
      END
   END
RETURN 'NONE'
back to The Power of REXX