Go to LeighWeb Home Page            

Back To LeighWeb Mainframe Utilities Page

View the documentation associated with this module

/* REXX ***************************************************************/
/* UTILITY: SYNCVARS                                                  */
/* AUTHOR: DAVID LEIGH                                                */
/* FUNCTION: THIS UTILITY TAKES INPUT OF A QUEUE OF VARIABLES AND     */
/*           SETS THAT VARIABLE'S VALUE IN ALL OTHER ISPF PROF. POOLS.*/
/**********************************************************************/
/**********************************************************************/
/* INITIALIZATION                                                     */
/**********************************************************************/
ARG EXCLUDE
ADDRESS ISPEXEC
NUMVARS = QUEUED()

IF NUMVARS = 0 THEN
    DO
        ZEDLMSG = 'ENTER NAME OF VARIABLE TO',
                  '"SYNC" WITHIN ALL YOUR PROFILES',
                  'OR DATASET NAME CONTAINING 1 VARIABLE NAME',
                  'PER RECORD'
        "SETMSG MSG(UTLZ000W)"
        "ADDPOP COLUMN(4) ROW(3)"
        DO FOREVER
            "DISPLAY PANEL(SYNCVARS)"
            SELECT
                WHEN RC = 0 & PANELVAR > '' &PANELDSN > '' THEN DO
                    ZEDLMSG = 'A VARIABLE AND A DATASET CANNOT BOTH',
                              'BE SPECIFIED'
                    "SETMSG MSG(UTLZ001W)"
                    ITERATE
                END
                WHEN RC = 0 & PANELVAR > '' THEN DO
                    NUMVARS = 1
                    QUEUE PANELVAR
                    LEAVE
                END
                WHEN RC = 0 & PANELDSN > '' THEN DO
                    IF SYSDSN("'"PANELDSN"'") ¬= OK THEN
                        DO
                            Y = SYSDSN("'"PANELDSN"'")
                            ZEDLMSG = '"'PANELDSN'" PROBLEM: 'Y
                            "SETMSG MSG(UTLZ001W)"
                            ITERATE
                        END
                    ADDRESS TSO
                    DUMMY = OUTTRAP(NULL)
                    "FREE DD(TEMPDD)"
                    "ALLOCATE DD(TEMPDD) DSN('"PANELDSN"') SHR"
                    DROP NULL.
                    "EXECIO * DISKR TEMPDD (FINIS"
                    NUMVARS = QUEUED()
                    ADDRESS ISPEXEC
                    LEAVE
                END
                WHEN RC = 8 THEN DO
                    ZEDLMSG = '"END" SELECTED - NO SYNCVARS',
                              'PROCESSING PERFORMED'
                    "SETMSG MSG(UTLZ001W)"
                    "REMPOP"
                    EXIT
                END
                WHEN RC = 0 THEN NOP
                OTHERWISE DO
                    ZEDLMSG = 'RC FROM ISPF DISPLAY OF PANEL',
                              '"SYNCVARS" WAS' RC
                    "SETMSG MSG(UTLZ001W)"
                    "REMPOP"
                    EXIT 12
                END
            END
        END
        "REMPOP"
    END

"TBCREATE TEMPPASS NOWRITE REPLACE KEYS() NAMES(VAR VARVAL)"
NUMADDED = 0

DO I = 1 TO NUMVARS
    PULL VAR
    VAR = STRIP(VAR,B,' ')
    "VGET" VAR "PROFILE"
    IF RC = 0 THEN
        DO
            INTERPRET "VARVAL = VALUE(VAR)"
            "TBADD TEMPPASS"
            NUMADDED = NUMADDED + 1
        END
END


IF NUMADDED = 0 THEN
    DO
        ZEDLMSG = 'NONE OF THE VARIABLES SPECIFIED EXIST IN THIS',
                  'PROFILE....NO PROCESSING PERFORMED'
        "SETMSG MSG(UTLZ001W)"
        EXIT
    END

/**********************************************************************/
/* POINT TO THE DATASET TO BE PROCESSED AND DO A PRIMING MEMBER READ  */
/**********************************************************************/
"ADDPOP COLUMN(20) ROW(10)"
"LMINIT DATASET('"SYSVAR(SYSUID)".ISPF.ISPPROF') DATAID(DID) ENQ(SHRW)"
"VGET ZAPPLID"

"LMOPEN DATAID("DID")"
"LMMLIST DATAID("DID") MEMBER(MBR) OPTION(LIST)"

/**********************************************************************/
/* LOOP THROUGH THE PROFILE MEMBERS AND CALL SYNCVAR2 TO DO THE UPDATE*/
/**********************************************************************/
DO WHILE RC = 0
    MBR = STRIP(MBR)
    IF POS('PROF',MBR) = LENGTH(MBR) - 3 THEN
        DO
            APPL = SUBSTR(MBR,1,POS('PROF',MBR)-1)
            IF APPL ¬= 'ISPS' &,
               POS(APPL,EXCLUDE) = 0 &,
               APPL ¬= ZAPPLID THEN
                DO
                    APPL = "NEWAPPL("APPL")"
                    "CONTROL DISPLAY LOCK"
                    "DISPLAY PANEL(SYNCVAR2)"
                    "SELECT CMD(%SYNCVAR2)" APPL
                END
        END
    "LMMLIST DATAID("DID") MEMBER(MBR) OPTION(LIST)"
END

/**********************************************************************/
/* CLEAN UP AND LET THE USER KNOW WHERE THE OUTPUT IS.                */
/**********************************************************************/
"LMMLIST DATAID("DID") MEMBER(MBR) OPTION(FREE)"
"LMCLOSE DATAID("DID")"
"LMFREE DATAID("DID")"
"REMPOP"