/* rexx ---- $USERS clist converted to rexx for fun */ /* EDIT G(0) FAX NET NET04 B ALL NET02A OLD$USERS WHOGOT PROFS*/ /* BW PHONE */ arg token token = " "TOKEN" " EDIT='';fax='';net='';net04='';b='';all='';net02a=''; old$users='';whogot='';profs='';g='';cmdvar=''; parse var token left " G(" G ") " right token = left || ' ' || right if g = '' then g = "0" EDIT = process('EDIT') FAX = process('FAX') NET = process('NET') NET04 = process('NET04') B = process('B') ALL = process('ALL') NET02A = process('NET02A') OLD$USERS = process('OLD$USERS') WHOGOT = process('WHOGOT') PROFS = process('PROFS') PHONE = process('PHONE') SSNO = process('SSNO') BW = process('BW') if token /= "" then do; CMDVAR = "FIND "token if net = "NET" then if ^datatype(word(token,1),'N') then CMDVAR = "FIND 12 "token; end address "TSO" /* provided by David McRitchie 1985/04/08, "The REXX Macros Toolbox" */ /* (default) -- PHO.GENERAL.GENERAL.ZZ2B0702(0) */ /* PURPOSE: quick access to list of TSO users */ /* other files with related data also available by option usage*/ /* -------------- companion clist USERSDCF */ /* ------------- which dataset name, mutually exclusive options --*/ /* old$users -- PHO.GENERAL.GENERAL.ZZ2B1001(0) */ /* net04 -- pho.general.general.zz1p6701(0) -- all alphabetical */ /* net -- pho.general.general.zz1p6701(0) -- all alphabetical */ /* net02a -- is03.net02a.ioflist */ /* profs -- pho.general.general.zz5e0601(0) -- location / name */ /* B -- is03.net04B.sortin */ /* ALL -- is03.net04all.sortin all by location */ /* FAX -- PHO.GENERAL.GENERAL.ZZ5E1001 -- non GDG,manual updated*/ /* -------------- other opitions ---------------------------------*/ /* EDIT -- to use edit instead of browse */ /* WHOGOT -- invoke WHOGOT before edit/browse, N/A with G(*), FAX */ /* -------------- specific generations -------------------------- */ /* G(0) -- current generation, DEFAULT, if applicable */ /* G(-2) -- back two generations, if applicable */ /* G(*) -- DSLIST invoked dsn ending .G* to pick up .GxxxxV00 */ /* descriptive headings not available when using DSLIST. */ /* -------------------------------------------------------------- */ /* formerly used tech.info.text(users) */ IF FAX = "FAX" THEN DO ADDRESS "ISPEXEC" "BROWSE DATASET('PHO.GENERAL.GENERAL.ZZ5E1001')" /* Marcia Hoffman -- Sandy Boupane */ EXIT 0 END IF PHONE = "PHONE" THEN DO ADDRESS "ISPEXEC" "BROWSE DATASET('IS03.JCLPCALL.LIST')" EXIT 0 END IF BW = "BW" THEN DO ADDRESS "ISPEXEC" "BROWSE DATASET('IS03.JCLPCBW.LIST')" EXIT 0 END IF FAX = "FAX" THEN DO ADDRESS "ISPEXEC" "BROWSE DATASET('PHO.GENERAL.GENERAL.ZZ5E1001')" /* Marcia Hoffman -- Sandy Boupane */ EXIT 0 END IF PROFS = "PROFS" THEN DO ADDRESS "TSO" , "$BROWSE PHO.GENERAL.GENERAL.ZZ5E0601.*" /* Marcia Hoffman -- Dean Williams */ EXIT 0 END GDSN = "PHO.GENERAL.GENERAL.ZZ2B0702" IF NET04 = "NET04" THEN NET = "NET" IF NET = "NET" THEN GDSN = "PHO.GENERAL.GENERAL.ZZ1P6701" IF NET02A = "NET02A" THEN GDSN = "IS03.NET02A.IOFLIST" IF NET02A = "NET02A" THEN G = "" IF B = "B" THEN GDSN = "IS03.NET04B.SORTIN" IF B = "B" THEN G = "" IF B = "B" THEN NET = "NET" IF ALL = "ALL" THEN GDSN = "IS03.NET04ALL.SORTIN" IF ALL = "ALL" THEN G = "" IF ALL = "ALL" THEN NET = "NET" if ALL = "ALL" | B = "B" | NET02A = "NET02A" then do; x = SYSDSN(GDSN) if x /= "OK" then do ZEDSMSG = x ZEDLMSG = x "--" GDSN ADDRESS "ISPEXEC" "SETMSG MSG(ISRZ000)" RETURN 1 end end IF NET /= "NET" THEN DO IF OLD$USERS = "OLD$USERS" THEN DO GDSN = "PHO.GENERAL.GENERAL.ZZ2B1001" DSNDESC = "STR(01-08 Userid 43-IMS 48-VSPC 49 ICCF ", "54-58 Emp#" DSNDESC3 = "STR(09-38 Name 44-45 TSO/SPART 50-53 ", "59-62 cccc" DSNDESC4 = "STR(39-42 Out/Dest 46-47 CICS/SPART 63-72 ", "Phone,73-82 Room" END ELSE DO GDSN = "PHO.GENERAL.GENERAL.ZZ2B0702" DSNDESC = " 01-08 Userid 09-09 Emp/Non ", "11-26 Lst Nme 27-42 Fst Nme" DSNDESC3 = " 43-45 Phn Xch 47-50 Phn Ext 51-60 Bld/Rm ", " 61-63 BU Cd 65-67 Loc Cd" DSNDESC4 = " 69-72 Dpt Cd 73-92 Pos Tle 93-96 Out Dst", " 97-116 reserved" if SSNO = "SSNO" then do DSNDESC4 = " 69-72 Dpt Cd 73-92 Pos Tle 93-96 Out Dst", " 97-116 SSNO/EMP#" GDSN = "PHO.GENERAL.GENERAL.ZZ2B0701" /*authorization needed*/ end DSNDESC5 = " 117-118 EmpSta 119-128 Exp Dt 129-131 CICS Opr" END END ELSE DO DSNDESC = "01-01 Header(H), Function(F), Phone(P) 02-11 ", "phone#" DSNDESC3 = "12-40 Name ", "41-56 Title (reserved 41-70)" DSNDESC4 = "71-74, 75-84 internal mail, ", " # in col 85 secretary format" END IF G /= "" THEN DO IF G = "*" THEN DO Address "TSO" "$EDIT "GDSN".G*" return lastcc END ELSE GDSN = GDSN"("G")" END VSTSRVTI = GDSN IF WHOGOT = "WHOGOT" THEN "WHOGOT" "GDSN" IF EDIT = "EDIT" THEN DO address "ISPEXEC" "CONTROL ERRORS RETURN" IF DSNDESC5 /= "" THEN DO Address "ISPEXEC" , "VPUT (DSNDESC,DSNDESC3,DSNDESC4,DSNDESC5) SHARED" Address "ISPEXEC" "EDIT DATASET('"GDSN"') PANEL(SYSEDDE5)" END ELSE DO Address "ISPEXEC" "VPUT (DSNDESC,DSNDESC3,DSNDESC4) SHARED" Address "ISPEXEC" "EDIT DATASET('"GDSN"') PANEL(SYSEDDE4)" END ZEDSMSG = ZERRSM ZEDLMSG = ZERRMSG ZERRLM ADDRESS "ISPEXEC" "SETMSG MSG(ISRZ000)" EXIT 0 END Address "ISPEXEC" , "VPUT (VSTSRVTI,DSNDESC,DSNDESC3,DSNDESC4,DSNDESC5) SHARED" IF DSNDESC5 /= "" THEN do Address "ISPEXEC" "CONTROL NONDISPL ENTER" Address "ISPEXEC" , "BROWSE DATASET('"GDSN"') PANEL(SYSBROB5)" end ELSE do Address "ISPEXEC" "CONTROL NONDISPL ENTER" Address "ISPEXEC" , "BROWSE DATASET('"GDSN"') PANEL(SYSBROB4)" end /* ---------- */ return /* ---------- */ Process: procedure expose token arg subtoken i = index(token,' '||subtoken||' ') if i=0 then return '' tokenx = substr(token,1,I) || substr(token,I+2+length(subtoken)) token = tokenx return subtoken ProcessB: procedure expose token arg subtoken x = process(subtoken) if x /='' then x = ' '||x return x /*********************************************************************/ /* =========== Wish List ====(additional fields)========= */ /* char(4) notify=userid for mailing and notifications (dms */ /* backups, library tapes, letters) when a terminated user */ /* is involved, also to be used for preferred userid of */ /* multiple id user Some persons have multiple userids, */ /* would be nice if their primary USERID could be */ /* identified */ /* e.g. managers seem to accrue lots of userids of */ /* terminated/transferred employees. */ /* 9-digit ssec# is used instead of 5-digit emp# for all old celanese*/ /* locations; therfore, should be accomodated */ /* char(1) INFO CENTER NewsLetter checkoff-- would probably simplify */ /* distribution, because labels could be generated from new */ /* list */ /* char(30) job title -- hopefully it will be put back to 30 and not */ /* be limited to 16 byte shorter form used by Celanese) this */ /* would facilitate making up distribution lists with job */ /* titles. */ /* ??? Does cost center match employee master. */ /* usage notes: */ /* employee# and phone# and room# usually indicates a current */ /* employee, even though termination indicator is on. */ /*********************************************************************/