/* REXX ***************************************************************/ /* -------------------------------------------------------------------*/ /* Name: CHALL *//*HELP*/ /* Short CHange ALL, Change All strings in some/all Members OF *//*HELP*/ /* a PDS. */ /* Type: REXX-Exec *//*HELP*/ /* Author: Norbert Haas *//*HELP*/ /* Syntax: TSO %CHALL *//*HELP*/ /* Parameter: none *//*HELP*/ /* */ /* Version Autor Datum Anlass */ /* --------- ------------- --------- -------------------------------- */ /* V01.01 N.Haas 20.06.03 englich version */ /* V01.00 N.Haas 03.05.02 Erstellung */ /**********************************************************************/ /* Init */ zedsmsg = '' /* Short MSG */ xFF = 'FF'x /* Hex FF ( 255 ) */ Blank = '40'x /* Hex 40 ( 064 ) */ fstring = "" /* Find-String */ cstring = "" /* Change-String */ context = "" position = 1 from = 1 to = 999999 cursor = 'dsn' /* Cursor */ csrpos = 1 /* Cursorpos. */ dsn = "'"USERID()"....'" pat = '*' /* Alle Member */ c_mem = 0 /* Counter fr Member */ c_change = 0 /* Counter fr nderungen */ /* Display panel before loop */ "ISPEXEC ADDPOP" "ISPEXEC DISPLAY PANEL(challp)" DO WHILE rc = 0 /* Re-Init */ c_mem = 0 /* Counter for member */ c_change = 0 /* Counter for changes */ /* Read panel (Options) */ IF context = '/' THEN DO grkl = 'YES' END ELSE DO grkl = 'NO' END SELECT WHEN position = 1 THEN pos = 'CHARS' WHEN position = 2 THEN pos = 'PREFIX' WHEN position = 3 THEN pos = 'SUFFIX' WHEN position = 4 THEN pos = 'WORD' OTHERWISE NOP END /* Does DSN exist ? */ sysdsn = SYSDSN(dsn) IF sysdsn /= 'OK' THEN DO zedlmsg = 'Dataset' dsn 'not found. ('sysdsn')' msg = 'ISRZ001' cursor = 'dsn' csrpos = 1 END ELSE DO /* LM-Job and plausi PO Dataset */ "ISPEXEC LMINIT DATAID(id) DATASET("dsn") ENQ(SHR) ORG(dsorg)" IF dsorg /= 'PO' THEN DO zedlmsg = 'Dataset' dsn 'is not PO.' cursor = 'dsn' csrpos = 1 msg = 'ISRZ001' END ELSE DO /* LM-Job, create list aof all relevant members */ "ISPEXEC LMOPEN DATAID("id") OPTION(INPUT)" mem = "" "ISPEXEC LMMLIST DATAID("id") OPTION(LIST)", "MEMBER(mem) PATTERN("pat")" /* Loop against all members of the list */ DO WHILE rc = 0 c_mem = c_mem + 1 dsn_mem = STRIP(dsn,"T","'")"("STRIP(mem)")'" /* >'< aorund find- and changestring */ fstring = TRANSLATE("'"STRIP(fstring,"B","'")"'",xFF,Blank) cstring = TRANSLATE("'"STRIP(cstring,"B","'")"'",xFF,Blank) PUSH fstring cstring grkl pos from to /* Display */ "ISPEXEC CONTROL DISPLAY LOCK" zedlmsg = dsn_mem "ISPEXEC DISPLAY MSG(ISRZ000)" /* Call Editor with Initialmacro */ "ISPEXEC EDIT DATASET("dsn_mem") MACRO(CHALLM)" IF rc = 0 THEN c_change = c_change + 1 mem = "" /* Get next member from the list */ "ISPEXEC LMMLIST DATAID("id") OPTION(LIST)", "MEMBER(mem) PATTERN("pat")" END /* LM-Job */ "ISPEXEC LMCLOSE DATAID("id")" /* Info-Msg */ zedlmsg = 'In DSN ' dsn c_mem 'members have been processed.', 'In' c_change 'Members changes have been made.' cursor = 'fstring' csrpos = 1 msg = 'ISRZ000' END /* LM-Job */ "ISPEXEC LMFREE DATAID("id")" END /* Display Panel once again with MSG */ "ISPEXEC SETMSG MSG("msg")" "ISPEXEC DISPLAY PANEL(challp)" END "ISPEXEC REMPOP" EXIT