Here is the RE#xx exec to swap between logical screens based on application
name rather then its number. Enjoy.
| Itschak Mugzach | Director | SecuriTeam Software |
| Email: [EMAIL PROTECTED] | Mob: +972 522 986404 | Skype: Itschak
Mugzach | Web: www.Securiteam.co.il |
/* REXX */
/*--------------------------------------------------------------------*/
/* */
/* SWAP TO SDSF */
/* THIS (SMALL) PROGRAM INVOKES AS AN ISPF COMMAND. IT WILL LOOK AT */
/* THE ISPF SWAP LIST TABLE AND LOOK TO SEE IF SDSF IS ALREADY STARTED*/
/* IF SDSF IS STARTED, IT WILL SWAP TO SDSF. OTHERWISE, IT WILL START */
/* SDSF IN A NEW LOGICAL SCREEN. */
/* THE PROGRAM WAS DEVELOPED BY ITSCHAK MUGZACH FROM SECURITEAM SOFTWA*/
/* AS A SAMPLE TO AZRIEL SNIR. */
/* (C) SECURITEAM SOFTWARE 2006. */
/*--------------------------------------------------------------------*/
/* TRACE "R" */
SWAPTOSDSF:
SIGNAL SWAPTOSDSF.CONFIG
TRACE ALL
SWAPTOSDSF.DOC:
SWAPTOSDSF.CONFIG:
PSEUDOPAN = "ISRTSO" /* PSEUDO PANEL TO DISPLAY */
SDSFAPPL = "ISF" /* SDSF APPLID */
MAXAPPLS = 8 /* MAX LOGICAL SCREENS TO CHK*/
SWAPTOSDSF.CONST:
STS0001E = 'STS0001E SCREEN IMAGE NOT FOUND'
STS0002I = 'STS0002I MYSWAPTOSDSF OPTIONS SELECTED: '
STS0003I = 'STS0003I STATUS FOR DEVICE ADDRESS '
DISPLY4 = 'COMMAND NOT FOUND'
DISPLY8 = 'END OR RETURN COMMAND ENTERED'
DISPLY12 = 'PANEL, MESSAGE, OR CURSOR FIELD COULD NOT BE FOUND'
DISPLY16 = 'DATA TRUNCATION OR TRANSLATION ERROR'
DISPLY20 = 'SEVERE ERROR.'
SELECT4 = 'RETURN COMMAND ENTERED FROM SELECTED MENU OR FROM',
'OR FROM LOWER LEVEL PANEL.'
SELECT8 = 'INVALID FOR SELECT PANEL COMMAND.'
SELECT12 = 'THE PANEL COULD NOT BE FOUND.'
SELECT16 = 'TRUNCATION ERROR IN STORING ZCMD OR ZSEL VARIABLE.'
SELECT20 = 'SEVERE ERROR.'
SWAPCMD = "SWAP LIST;END" /* SDSF APPLID */
NSWAPSDF = "START S"
SWAPTOSDSF.VAR:
INDEX = 0
SWAPTOSDSF.MAIN:
ADDRESS ISPEXEC "CONTROL ERRORS RETURN"
ADDRESS ISPEXEC "CONTROL NONDISPL END NOCMD"
ADDRESS ISPEXEC "DISPLAY PANEL("PSEUDOPAN") COMMAND(SWAPCMD)"
IF (RC ×= 0) THEN DO
CALL ERRORHANDLER RC DISPLY STSPPRCX
END
ADDRESS ISPEXEC "VGET (ZAPPID1 ZAPPID2 ZAPPID3 ZAPPID4) ASIS"
ADDRESS ISPEXEC "VGET (ZAPPID5 ZAPPID6 ZAPPID7 ZAPPID8) ASIS"
ADDRESS ISPEXEC "VGET (ZTLDID1 ZTLDID2 ZTLDID3 ZTLDID4) ASIS"
ADDRESS ISPEXEC "VGET (ZTLDID5 ZTLDID6 ZTLDID7 ZTLDID8) ASIS"
DO WHILE (INDEX < MAXAPPLS)
INDEX = INDEX + 1
APPLIDENT = VALUE(ZAPPID||INDEX)
IF (APPLIDENT = SDSFAPPL) THEN DO
SWAPIDENT = SUBSTR(VALUE(ZTLDID||INDEX),1,1)
SWAPSDSF = "SWAP "||SWAPIDENT
/* SAY 'SWAPIDENT =' SWAPIDENT */
/* SAY 'SWAPSDSF =' SWAP2SDSF */
INDEX = 99
ADDRESS ISPEXEC "CONTROL NONDISPL END NOCMD"
ADDRESS ISPEXEC "DISPLAY PANEL("PSEUDOPAN") COMMAND(SWAPSDSF)"
ADDRESS ISPEXEC "CONTROL NOCMD"
END
END
IF (INDEX ×= 99) THEN DO
ADDRESS ISPEXEC "CONTROL NONDISPL END"
ADDRESS ISPEXEC "DISPLAY PANEL("PSEUDOPAN") COMMAND(NSWAPSDF)"
END
EXIT
/* -------------------------------------END OF BBBB-------------*/
ERRORHANDLER:
SIGNAL HANDLEDAILS.CONS
TRACE ALL
ERRORHANDLER.DOC:
/*-------------------------------------------------------------------*/
/* */
/* APPLICATION ERROR HANDLER */
/* GENERATE ERROR MESSAGES & CALL CLEANUP */
/* (C) COPYWRITE SECURITEAM SOFTWARE LTD 2006 */
/*-------------------------------------------------------------------*/
ERRORHANDLER.CONS:
NOP
ERRORHANDLER.VAR:
NOP
ERRORHANDLER.MAIN:
ARG RCX FUNC PARM1
SAY 'STS9999D' VALUE(FUNC||RC)
EXIT RC
END
/*-------------------------------------------------------------------*/
/* TRACE "R" */
/* */
/* "ISPEXEC SELECT PGM(ISPSTRT) PARM(SWAP SDSF)" */
/* "ISPEXEC SELECT PGM(ISPSTRT) PARM(START S)" */
/* IF RC <> 0 THEN "ISPEXEC SELECT PGM(ISPSTRT) PARM(START S)" */
EXIT
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html