/*JOBCARD -- CREATE A JOBCARD AND PLACE CURSOR AT JOB CLASS= (REXX).. DESCRIPTION: CREATE A JOBCARD AND PLACE CURSOR AT JOB CLASS= **** EXAMPLE: ==> JOBCARD (DEFAULTS TO CLASS=S) ==> JOBCARD X ==> JOBCARD REFRESH (REDO--ACCT SHORTNAME LONGNAME ROOM DEST) PURPOSE: TO CREATE A JOBCARD WITH YOUR A CREATED JOBNAME, ACCOUNTING INFORMATION, ALONG WITH YOUR NAME AND JOBCLASS. THE CREATED JOBNAME IS BASED ON YOUR USERID AND MEMBERNAME. THE JOBNAME WILL BE COMPOSED OF AS MANY CHARACTERS OF YOUR USERID THAT YOU WISH TO USE, PLUS THE FIRST CHARACTER OF THE MEMBERNAME, PLUS THE LAST CHARACTERS OF THE MEMBERNAME THAT WILL FIT IN AN 8 CHARACTER JOBNAME. IF YOUR USERID IS 4 OR LESS CHARACTERS YOUR COMPLETE USERID WILL BE USED. ****************************************************************** MAINTENANCE HISTORY: MEMBER-- VV.MM CREATED- ---MODIFIED--- CURR INIT MOD LASTUSE JOBCARD 01.08 1985/09/23 1993/10/12 18:11 242 199 0 IS03 CONVERTED TO REXX 1993/10/12 DAVID MCRITCHIE IS03 AND ADDED SUPPORT FOR MORE/LESS THAN 3-CHAR USERID PREFIX *********************************************************************/ ADDRESS "ISREDIT";"MACRO (JCLASS REFRESH)" /***** OBTAIN STORED PARAMETERS ****************************** */ ADDRESS "ISPEXEC", "VGET (JBXACCT,JBXROOM,JBXNAME,JBXNAMX,JBXDEST,JBXPREF)" SYSUID = SYSVAR('SYSUID') JCLASS=TRANSLATE(JCLASS); REFRESH = UPPER REFRESH; /*TYPE = "TEST" */ IF LENGTH(JBXACCT) = 4 THEN , "LINE_BEFORE .ZF = NOTELINE" , "'TO CHANGE STORED %JOBCARD VARIABLES USE ==> %JOBCARD REFRESH'" /*********************************************************************/ /* **** OVERRIDE PARAMETERS FOR PERSONALIZED JOBCARD CLIST *** */ /* JBXDEST = -- CREATES OUTPUT STMT., IF GIVEN A VALUE */ /* JBXACCT = '0289' -- YOUR FOUR DIGIT ACCOUNT CODE */ /* JBXROOM = 'O179' -- YOUR ROOM NUMBER */ /* JBXNAME = 'D.MCR' -- YOUR NAME -- TRY TO LIMIT TO 7 CHAR.*/ /* JBXNAMX = 'DAVID MCRITCHIE' -- FULL NAME */ /* JBXPREF = 4 -- FOR 4-CHAR SYSUID, NOT EVEN ASKED */ /* * TO TEST AS IF A REGULAR 1ST TIME USER ==> JOBCARD REFRESH */ /*********************************************************************/ INITIALS = ''; JBXCRD1B=''; IF JCLASS = "REFRESH" THEN DO REFRESH = "REFRESH" JCLASS = "S" END JBXPICN = SYSUID IF REFRESH = "REFRESH" THEN DO JBXACCT = ''; JBXPREF = ''; JBXROOM = ''; JBXNAME = ''; JBXNAMX = ''; END IF JBXACCT = '' THEN DO SAY "PLEASE SUPPLY YOUR 4-DIGIT" , "COST CENTER ACCOUNT NUMBER -- FOR JOBCARD GENERATION" PULL TACCT JBXACCT = TACCT IF TYPE \= "TEST" THEN ADDRESS "ISPEXEC" "VPUT (JBXACCT,TACCT) PROFILE" REFRESH = "REFRESH" END IF JBXROOM \= '' THEN IF JBXPREF='' THEN DO JBXPREF = 4; /* FIX UP FOR PREEXISTING USAGE*/ ADDRESS "ISPEXEC" "VPUT (JBXPREF) PROFILE" END IF JBXPREF = '' THEN DO IF LENGTH(SYSUID) < 5 THEN JBXPREF = LENGTH(SYSUID) ELSE DO SAY "IF YOU WISH TO USE MORE THAN THE FIRST FOUR", "CHARACTERS OF YOUR USERID IN JOBNAME, SUPPLY NUMBER,", " E.G. " LENGTH(SYSUID) PULL JBXPREF IF JBXPREF='' | JBXPREF < 5 THEN JBXPREF = 4 IF JBXPREF > LENGTH(SYSUID) THEN DO SAY 'DENIED REQUEST TO EXCEED LENGTH OF "'SYSUID'"' JBXPREF=LENGTH(SYSUID) END IF TYPE \= "TEST" THEN ADDRESS "ISPEXEC" "VPUT (JBXPREF) PROFILE" REFRESH = "REFRESH" END END IF JBXROOM = '' THEN DO SAY "PLEASE YOUR SUPPLY ROOM NUMBER FOR JOBCARD,", " E.G. OPA2 O179 BB22 CANA" PULL JBXROOM IF TYPE \= "TEST" THEN ADDRESS "ISPEXEC" "VPUT (JBXROOM) PROFILE" REFRESH = "REFRESH" END IF JBXNAME = '' THEN REDO1N: DO SAY "PLEASE SUPPLY YOUR NAME 1-11" , "CHARACTERS, PREFERABLY 1-7 E.G. J.DOAKS G.WASH" PULL JBXNAME JBXNAME2 IF JBXNAME2 \= '' THEN SIGNAL REDO1N IF LENGTH(JBXNAME) > 11 THEN SIGNAL REDO1N IF TYPE \= "TEST" THEN ADDRESS "ISPEXEC" "VPUT (JBXNAME) PROFILE" REFRESH = "REFRESH" END IF JBXNAMX = '' THEN REDO2N: DO SAY "PLEASE SUPPLY YOUR FULL NAME" , "FOR JCL COMMENT NEAR E.G. GEORGE WASHINGTON" PULL JBXNAMX XNAM2 XNAM3 JBXNAMX = JBXNAMX XNAM2 XNAM3 JBXNAMX = STRIP(JBXNAMX) IF XNAM2 = '' THEN SIGNAL REDO2N IF TYPE \= "TEST" THEN ADDRESS "ISPEXEC" "VPUT (JBXNAMX) PROFILE" REFRESH = "REFRESH" END IF REFRESH = "REFRESH" THEN DO REDO1D: , SAY "SUPPLY DEST FOR OUTPUT STATEMENT, HIT ENTER FOR DEFAULT" PULL JBXDEST IF TYPE \= "TEST" THEN ADDRESS "ISPEXEC" "VPUT (JBXDEST) PROFILE" SAY "REFRESHED FOR" SYSVAR('SYSUID') JBXNAMX , ||', ('JBXACCT','JBXROOM'),'JBXNAME', DEST='JBXDEST , ||', CHARS IN JOBNAME PREFIX='JBXPREF END /*********************************************************************/ /* ********* END OF MAKING GENERALIZED CLIST WORK */ /* ************************************************************ */ /* //&JBXNAME.XXXX JOB (&JBXACCT, ... */ /* ========= ======== ... */ /* &JBXROOM),'&JBXNAME &MEMBER',CLASS=&JBXCLSS */ /* ========= ======== ========= */ /* JBXPICN - YOUR PIC# ASSIGNED BY RACF ADMINISTRATOR AS YOUR TSO ID */ /* JBXNAME - PROGRAMMER NAME ON THE JOB CARD */ /* SINCE PROGRAMMER NAME IS 20 POSITIONS IN JCL AND SINCE */ /* THIS CLIST WILL BE PUTTING IN THE MEMBERNAME (LOSE 9 CHARS), */ /* THE NAME YOU USE SHOULD BE <= 11 CHARACTERS */ /* TRY LIMITING TO 7 CHAR OR LESS FOR BEST RESULTS */ /* JBXACCT AND JBXROOM */ /* YOUR FOUR DIGIT COST CENTER (ACCOUNT CODE) E.G. 0282 */ /* YOUR ROOM NUMBER E.G. OPA2 */ /* */ /* USER CONTACT: CREATED BY DAVID MCRITCHIE "THE REXX MACROS TOOLBOX" */ /* MANUALS: THE FOLLOWING MANUALS ARE LISTED ON-SITE 1993/10/13 23.040 -- SC34-4253 ISPF/PDF EDIT AND EDIT MACROS V3 R5 23.100 -- SC34-4258 ISPF/PDF GUIDE V3 R5 25.350 -- GC28-1869 TSO EXTENSIONS V2 GENERAL INFORMATION 25.350 -- SC28-1876 TSO EXTENSIONS V2 CLISTS 25.350 -- SC28-1880 TSO EXTENSIONS V2 USER'S GUIDE 23.370 -- GC28-1829 JCL REFERENCE 23.380 -- GC28 1830 JCL GUIDE 43.740 -- SC28-1882 TSO EXTENSIONS V2: REXX USER'S GUIDE 43.740 -- SC28-1883 TSO EXTENSIONS V2: REXX REFERENCE DOCUMENTATION: IS03.SHARE.TEXT(JOBCARD) ***************************************************************/ /*********************************************************************/ BYPASS: , IF JCLASS = " " THEN JCLASS = "S" /* DEFAULT JOB CLASS */ JCLASS = TRANSLATE(JCLASS) JBXPICN = SUBSTR(SYSUID,1,JBXPREF) JBXPICN = STRIP(JBXPICN) JBXNAMX = SUBSTR(JBXNAMX,1,20) "(MEMNAME) = MEMBER" " (DSNAME) = DATASET" WHOLEDSN=DSNAME'('STRIP(MEMNAME)')'; IF MEMNAME = "JOBCARD" THEN DO ZEDSMSG = 'JOBCARD NOT PERMITTED' ZEDLMSG = , 'DO NOT USE JOBCARD CLIST ON A MEMBER NAMED JOBCARD' ADDRESS "ISPEXEC" " SETMSG MSG(ISRZ000)" RETURN 24 /* NOT ACCEPTABLE WILL MESS UP CLIST */ END "(VAR037) = LINENUM .ZLAST" IF VAR037 = 000000 THEN DO ZEDSMSG = 'EMPTY FILE' ZEDLMSG = , 'ZEDSMSG. TRY AGAIN LATER WHEN YOU HAVE' , 'SOMETHING TO PLACE JOBCARD IN FRONT OF' ADDRESS "ISPEXEC" " SETMSG MSG(ISRZ000)" RETURN 4 END JCLDATE = DATE('O') JCLTIME = TIME('N') JCLUSER = SYSUID /* SYSVAR('SYSUID') */ IF MEMNAME = '' THEN DO; /* PROVIDE FOR NON-PDS DATASET*/ I = LASTPOS('.',DSNAME) IF I = 0 THEN MEMNAME = '########'; ELSE MEMNAME = SUBSTR(DSNAME,I+1,8) WHOLEDSN=DSNAME END; MEMNAME8 = SUBSTR(MEMNAME,1,8) L=LENGTH(STRIP(MEMNAME)); L2=L+JBXPREF; USE = 8 - JBXPREF - 1 IF L2 <= 8 THEN JOBNAME=SUBSTR(SYSUID,1,JBXPREF)||MEMNAME; ELSE JOBNAME = SUBSTR(SYSUID,1,JBXPREF)||SUBSTR(MEMNAME,1,1), || RIGHT(STRIP(MEMNAME),USE); JOBNAME = SUBSTR(JOBNAME,1,8) "FIND .ZFIRST .ZFIRST 11 ' JOB '" IF RC \= 0 THEN DO "(DSNAME) = DATASET" JBXCARD1 , = '//'JOBNAME' JOB ('JBXACCT','JBXROOM'),''', ||JBXNAME MEMNAME||''',CLASS='JCLASS',NOTIFY='SYSUID JBXCARD2 , = '//'||'****' MEMNAME8, SUBSTR(SYSUID,1,7)' 'SUBSTR(JBXNAMX,1,20)||, SUBSTR(DATE('S'),1,2)||DATE('O') SUBSTR(TIME('N'),1,5) IF LENGTH(WHOLEDSN) <= 34 THEN JBXCARD3 = '//'||'**** JCL' SUBSTR(WHOLEDSN,1,34), SUBSTR(DATE('S'),1,2)DATE('O') SUBSTR(TIME('N'),1,5) ELSE JBXCARD3 = '//'||'**** JCL' WHOLEDSN, SUBSTR(DATE('S'),1,2)DATE('O') IF LENGTH(JBXCARD1) > 70 THEN DO JBXCARD1 = '// NOTIFY='SYSUID JBXCRD1B , = '//'SUBSTR(JOBNAME,1,8)' JOB ('JBXACCT','JBXROOM'),', ''''JBXNAME MEMNAME''',CLASS='JCLASS')' END /*********** PUT OUT THE JOBCARD(S) CREATED *********/ "LINE_AFTER 0 = (JBXCARD1)" "LINE_AFTER 1 = (JBXCARD2)" "LINE_AFTER 2 = (JBXCARD3)" IF JBXDEST \= '' THEN "LINE_AFTER 3 =", "'//DEFAULT OUTPUT DEST="JBXDEST",DEFAULT=YES,JESDS=ALL'" IF JBXCRD1B \= '' THEN DO JBXCARD1 = '// NOTIFY='SYSUID "LINE_AFTER 0 = (JBXCRD1B)" END /**************** END OF JOBCARD(S) CREATION ********/ END ELSE DO SAY "YOU TRICKY DEVIL YOU ALREADY HAVE A JOBCARD" SAY "NO FIXUP OF SYSUID, SYSTIME OR SYSDATE WILL BE PERFORMED" RETURN 12 END /* --- &SYSTIME. AND/OR &SYSDATE. SUBSTITUTIONS WILL BE MADE*/ "SEEK ALL '&&&&SYSUID.'" "(SEEK1) = SEEK_COUNTS"; SEEK1 = SEEK1 + 0 "LINE_BEFORE 4 = MSGLINE ""JOBCARD ALSO WILL CHANGE", "&SEEK1. OCCURRENCES BELOW OF &&&&SYSUID. TO &SYSUID.""" "CHANGE FIRST '&&&&SYSUID.' """SYSUID"""" DO I = 1 TO SEEK1 "LINE_AFTER .ZCSR = NOTELINE ""JOBCARD CHANGED ABOVE (&I.", "OF &SEEK1.) OCCURENCE OF &&&&SYSUID. TO &SYSUID.""" "CHANGE NEXT '&&&&SYSUID.' """SYSUID"""" END; X5 = SUBSTR(TIME('N'),1,5) "CHANGE ALL '&&&&SYSTIME.' '"X5"'" "(CHGT1,CHGT2) = CHANGE_COUNTS"; CHGT1=CHGT1+0 IF CHGT1 \= 0 THEN "LINE_BEFORE 4 = MSGLINE ""JOBCARD ALSO CHANGED", "&CHGT1. OCCURRENCES BELOW OF &&&&SYSTIME. TO &X5.""" X5 = DATE('O') "CHANGE ALL '&&&&SYSDATE.' '"X5"'" "(CHGD1,CHGD2) = CHANGE_COUNTS"; CHGD1=CHGD1+0 IF CHGD1 \= 0 THEN "LINE_BEFORE 4 = MSGLINE ""JOBCARD ALSO", "CHANGED &CHGD1. OCCURRENCES BELOW OF &&&&SYSDATE. TO &X5.""" MODIFIED = CHGD1+CHGD2+CHGT1+CHGT2 IF MODIFIED \= 0 THEN IF SUBSTR(MEMNAME,1,1) \= 'Z' /* PREVENT SAVING UNLESS MEMBER BEGINS WITH Z OR NOT IS03. */ THEN IF SUBSTR(DSNAME,1,5) = 'IS03.' THEN DO I = POS('.SHARE.',DSNAME) /* PREVENT ACCIDENTALLY SAVING*/ IF I \= 0 THEN DO "LINE_BEFORE 4 = MSGLINE", """AUTOSAVE OFF -- TO PREVENT ACCIDENTAL SAVING""" "AUTOSAVE OFF" END END /* RELOCATE TO CURSOR TO*/ /* POINT TO THE JOB CLASS (MIGHT FIND MSGCLASS INSTEAD) */ "LOC 0" "FIND FIRST ""CLASS=""" "(CUR1L,CUR1P) = CURSOR" CUR1P = CUR1P + 6 "CURSOR =" CUR1L CUR1P ZEDSMSG = 'JOBCARD CREATED' ZEDLMSG = 'YOUR DEFAULTS CAN BE CHANGED USING ===> JOBCARD REFRESH' ADDRESS "ISPEXEC" "SETMSG MSG(ISRZ000)" /* "!EDCHEK" */