/*Rexx***************************************************************** *** PRODUCT: SMARTPRODUCTION RELEASE 5.3.0 - LEVEL 2014/01. * *** CORRECTION: RP306 * *** DESCRIPTION: PANELS M1 AND M2 MAY NOT ACCEPT A TAPE SMF * *** INPUT DATA SET. * *** AFFECTED: ALL USERS. * *** RESOLUTION: REPLACE MEMBER TMRRDISP IN THE SMARTP ISPFALL * *** LIBRARY WITH THE CONTENT OF THIS FILE. * *** RESTRICTIONS: NONE. * ***********************************************************************/ parse arg Panel_name dummy CHECK_DSNAME = "YES" /* CHECK FOR SMF INPUT DATA SET EXISTANCE */ /* IN PANELS M1 AND M2. */ /* "YES" - CHECK */ /* "NO" - SKIP CHECK */ address "ISPEXEC" "VGET (TMR0EDJB TMR0JOB1)" "VGET (TMR0LINK TMR0PRM1 TMR0PRM2 TMR0GLBL TMR0DFLT TMR0JHIS) SHARED" "VGET (TMR0CSUN TMR0CSVL TMR0CSSC TMR0PRM3 TMR0APPL) PROFILE" "VGET (TMR0STAT) SHARED" call Set_Init_Job1 /*----------------------------------------------------------------*/ /* Initialize if first activiation. */ /*----------------------------------------------------------------*/ if space(TMR0JOB1) = "" then do /*----------------------------------------------------------*/ /* Job card not customize - initialize it. */ /*----------------------------------------------------------*/ "SETMSG MSG(TMR394)" TMR0JOB1 = Init_Job1 TMR0JOB2 = "//*" TMR0JOB3 = "//*" TMR0JOB4 = "//*" TMR0EDJB = "NO " "VPUT (TMR0EDJB TMR0JOB1 TMR0JOB2 TMR0JOB3 TMR0JOB4) PROFILE" end else if pos(sysdsn("'"TMR0PRM3"'"), "OK, UNAVAILABLE DATASET") = 0 then do /*----------------------------------------------------------*/ /* Application Definition libary points to an older version.*/ /*----------------------------------------------------------*/ "SETMSG MSG(TMR383)" end else if sysdsn("'"TMR0PRM3"("TMR0APPL")'") \= "OK" then do /*----------------------------------------------------------*/ /* Application Definition member is missing from library. */ /*----------------------------------------------------------*/ "SETMSG MSG(TMR384)" end /*----------------------------------------------------------------*/ /* Plant Report id in jobname of JCL. */ /*----------------------------------------------------------------*/ Report_id = right(Panel_name, 2) Original_TMR0JOB1 = TMR0JOB1 parse value TMR0JOB1 with "//"Jobname " " Rest_of_line Sub_Pos = Index(Jobname, "%%") if Sub_Pos > 0 then do Jobname = substr(Jobname, 1, Sub_Pos - 1) ³³ Report_id ³³, substr(Jobname, Sub_Pos + 2) TMR0JOB1 = "//"³³Jobname³³" "Rest_of_line "VPUT (TMR0JOB1) PROFILE" end else nop $RESCHRS = "/,.'()+-=;" GAF_Reports = "D2 D5 DD DE J1 J2 J3 O1 O3 WA" CSV_Reports = "D2 D5 DE DD DA J1 J2 J3 O1 O3 L1 L9 LB M1 M3 WA" ZCMD = "" TMRECURS = "" "DISPLAY PANEL("Panel_name")" Panel_Rc = Rc TMRECURS = "" do while (Panel_Rc = 0) & (left(TMREZCMD, 3) \= "CAN") /*----------------------------------------------------------------*/ /* Panel validy check */ /*----------------------------------------------------------------*/ Check_Rc = 0 select when Report_id = "A1" then do /*-------------------------------------------------------*/ /* Handle A1 sub-panel (pop-up) */ /*-------------------------------------------------------*/ if TMREA1BT = "PRESSED" then do "ADDPOP POPLOC(TMREA1BT) COLUMN(10) ROW(6)" Sub_Panel_Rc = 0 do while Sub_Panel_Rc = 0 "DISPLAY PANEL(TMRPA1PO)" Sub_Panel_Rc = Rc end "REMPOP" end else nop end when Report_id = "O1" then do if verify(TMREO1WN, $RESCHRS, 'MATCH') \= 0 then do "SETMSG MSG(TMR482)" TMRECURS = "TMREO1WN" Check_Rc = 999 /* Do not allow job submit */ end else nop if verify(TMREO1SC, $RESCHRS, 'MATCH') \= 0 then do "SETMSG MSG(TMR480)" TMRECURS = "TMREO1SC" Check_Rc = 999 /* Do not allow job submit */ end else nop end when Report_id = "O2" then do if verify(TMREO2WN, $RESCHRS, 'MATCH') \= 0 then do "SETMSG MSG(TMR482)" TMRECURS = "TMREO2WN" Check_Rc = 999 /* Do not allow job submit */ end else nop if verify(TMREO2SC, $RESCHRS, 'MATCH') \= 0 then do "SETMSG MSG(TMR480)" TMRECURS = "TMREO2SC" Check_Rc = 999 /* Do not allow job submit */ end else nop end when Report_id = "O3" then do if verify(TMREO3WN, $RESCHRS, 'MATCH') \= 0 then do "SETMSG MSG(TMR482)" TMRECURS = "TMREO3WN" Check_Rc = 999 /* Do not allow job submit */ end else nop if verify(TMREO3SC, $RESCHRS, 'MATCH') \= 0 then do "SETMSG MSG(TMR480)" TMRECURS = "TMREO3SC" Check_Rc = 999 /* Do not allow job submit */ end else nop end when Report_id = "O4" then do if verify(TMREO4WN, $RESCHRS, 'MATCH') \= 0 then do "SETMSG MSG(TMR482)" TMRECURS = "TMREO4WN" Check_Rc = 999 /* Do not allow job submit */ end else nop if verify(TMREO4SC, $RESCHRS, 'MATCH') \= 0 then do "SETMSG MSG(TMR480)" TMRECURS = "TMREO4SC" Check_Rc = 999 /* Do not allow job submit */ end else nop end when Report_id = "L1" then do if verify(TMREL1WN, $RESCHRS, 'MATCH') \= 0 then do "SETMSG MSG(TMR482)" TMRECURS = "TMREL1WN" Check_Rc = 999 /* Do not allow job submit */ end else nop if verify(TMREL1SC, $RESCHRS, 'MATCH') \= 0 then do "SETMSG MSG(TMR480)" TMRECURS = "TMREL1SC" Check_Rc = 999 /* Do not allow job submit */ end else nop if (left(TMREZCMD, 6) = "SUBGAF") & (TMREL1DP = "NO") then do "SETMSG MSG(TMR551)" TMRECURS = "TMREL1DP" Check_Rc = 999 /* Do not allow job submit */ end else nop end when Report_id = "LB" then do if TMR0STAT = "NULLFILE" then do "SETMSG MSG(TMR498)" Check_Rc = 999 /* Do not allow job submit */ end else nop end when Report_id = "M1" then do /*-------------------------------------------------------*/ /* Handle M1 sub-panel (pop-up) */ /*-------------------------------------------------------*/ if TMREM1BT = "PRESSED" then do "ADDPOP POPLOC(TMREM1BT) COLUMN(10) ROW(6)" Sub_Panel_Rc = 0 do while Sub_Panel_Rc = 0 "DISPLAY PANEL(TMRPM1PO)" Sub_Panel_Rc = Rc if Check_SMF_Dsns() \= 0 then do "SETMSG MSG(TMR560)" /* TMRCURS is set by Check_SMF_Dsns() */ Check_Rc = 999 /* Do not allow job submit */ end else nop end "REMPOP" end else nop if Check_SMF_Dsns() \= 0 then do "SETMSG MSG(TMR560)" /* TMRCURS is set by Check_SMF_Dsns() */ Check_Rc = 999 /* Do not allow job submit */ end else nop end when Report_id = "M2" then do /*-------------------------------------------------------*/ /* Handle M2 sub-panel (pop-up) */ /*-------------------------------------------------------*/ if TMREM2BT = "PRESSED" then do "ADDPOP POPLOC(TMREM2BT) COLUMN(10) ROW(6)" Sub_Panel_Rc = 0 do while Sub_Panel_Rc = 0 "DISPLAY PANEL(TMRPM1PO)" Sub_Panel_Rc = Rc if Check_SMF_Dsns() \= 0 then do "SETMSG MSG(TMR560)" /* TMRCURS is set by Check_SMF_Dsns() */ Check_Rc = 999 /* Do not allow job submit */ end else nop end "REMPOP" end else nop if Check_SMF_Dsns() \= 0 then do "SETMSG MSG(TMR560)" /* TMRCURS is set by Check_SMF_Dsns() */ Check_Rc = 999 /* Do not allow job submit */ end else nop end otherwise nop end /*----------------------------------------------------------------*/ /* Handle submit request */ /*----------------------------------------------------------------*/ /*----------------------------------------------------------------*/ /* If SUBGAF, check if ready to submit GAF report */ /*----------------------------------------------------------------*/ if (left(TMREZCMD, 6) = "SUBGAF") ³, (left(TMREZCMD, 6)= "SUBCSV") then if (space(TMR0CSUN) = "" & space(TMR0CSSC) = "" &, space(TMR0CSVL) = "") then do Check_Rc = 8 "SETMSG MSG(TMR392)" end else do if left(TMREZCMD, 6) = "SUBGAF" then if wordpos(Report_id, GAF_Reports) = 0 then do Check_Rc = 8 "SETMSG MSG(TMR375)" end else nop else if wordpos(Report_id, CSV_Reports) = 0 then do Check_Rc = 8 "SETMSG MSG(TMR379)" end else nop end if (left(TMREZCMD, 4) = "SUB " ³ left(TMREZCMD, 4) = "SSS " ³, left(TMREZCMD, 6) = "SUBMIT" ³, /* RP278 */ left(TMREZCMD, 6) = "SUBGAF" ³ left(TMREZCMD, 6) = "SUBCSV") &, (Panel_Rc = 0) & (Check_Rc = 0) then do if TMR0JOB1 \= Init_Job1 then do if left(TMREZCMD, 6) = "SUBGAF" then TMRECSV = "ON" else if left(TMREZCMD, 6) = "SUBCSV" then TMRECSV = "CSV" else TMRECSV = "OFF" if Report_id = "M1" then TMRECSV = "RCSV" else nop "VPUT TMRECSV" "FTOPEN TEMP" "FTINCL TMRSSUM" "FTCLOSE" "VGET (ZTEMPF ZTEMPN)" Tempdsn = "'"ZTEMPF"'" if TMR0EDJB = "NO" then do /*-------------------------------------------*/ /* Submit job (no edit) */ /*-------------------------------------------*/ address "TSO" "SUBMIT "Tempdsn Submit_Rc = Rc if Submit_Rc = 0 then "SETMSG MSG(TMR399)" else "SETMSG MSG(TMR394)" end else do "LMINIT DATAID(TMREDITN) DDNAME("ZTEMPN") ", "ENQ(SHR)" /* RP133 */ if Rc > 0 then do say "TMR288E ISPF FUNCTION FAILED: RC="Rc, " FUNC=LMINIT" /* Get error code + short msg */ say ZERRMSG ZERRSM say ZERRMSG ZERRLM end else do "EDIT DATAID("TMREDITN") MACRO(TMRMINFO)" "LMFREE DATAID("TMREDITN")" end end Panel_Rc = 8 /* End the report panel */ end else "SETMSG MSG(TMR394)" end else nop /*----------------------------------------------------------------*/ /* Handle panel activities */ /*----------------------------------------------------------------*/ if Panel_Rc = 0 then do "DISPLAY PANEL("Panel_name")" Panel_Rc = Rc TMRECURS = "" end else nop end /*-------------------------------------------------------------------*/ /* Set original Jobname settings */ /*-------------------------------------------------------------------*/ TMR0JOB1 = Original_TMR0JOB1 "VPUT (TMR0JOB1) PROFILE" exit Check_Time: procedure expose Check_Rc /*-------------------------------------------------------------------*/ /* Check validity of time entered by user */ /*-------------------------------------------------------------------*/ parse arg In_time dummy Return_code = 0 if In_time \= "" then do parse value In_Time with Hours ":" Mins if (Hours > 23) ³ (Mins > 59) then do Return_code = 1 "SETMSG MSG(TMR810)" Check_Rc = 999 end else nop end else nop return Return_code Check_Date: procedure expose Check_Rc /*-------------------------------------------------------------------*/ /* Check validity of date entered by user */ /*-------------------------------------------------------------------*/ parse arg In_date dummy Return_code = 0 if In_date \= "" then do parse value In_date with Year "/" Month "/" Day if (Year > (right(date(), 4)) + 1) ³ (Month > 12) ³ (Day > 31) ³, (Year < 1950) ³ (Month < 1) ³ (Day < 1) then do Return_code = 1 "SETMSG MSG(TMR811)" Check_Rc = 999 end else nop end else nop return Return_code Set_Init_Job1: procedure expose Init_Job1 Return_code = 0 "VGET ZUSER" Job_Name = ZUser if length(Job_Name) > 7 then Job_Name = left(Job_Name, 7) ³³ "A" else Job_Name = Job_Name ³³ "A" Init_Job1 = "//" ³³ left(Job_Name, 8, ' ') ³³ " JOB (ACCOUNT),'NAME'"³³, ",REGION=7500K" return Return_code /*-------------------------------------------------------------------*/ /* Check existance/accessibility of specified SMF data set(s) for */ /* Panels M1/M2. */ /*-------------------------------------------------------------------*/ Check_SMF_Dsns: procedure expose TMRECURS CHECK_DSNAME Return_code = 0 /* Get no. of defined SMF data sets */ "VGET (TMREMSNO) PROFILE" do i = 1 to TMREMSNO ISPF_Var = TMREMS ³³ right(i, 2, 0) "VGET ("ISPF_Var") PROFILE" end Checkdsn = TMREMS01 if Check_Dsn_Exists(Checkdsn) > 0 then do Return_code = 8 TMRECURS = "TMREMS01" end else nop Checkdsn = TMREMS02 if Check_Dsn_Exists(Checkdsn) > 0 then do Return_code = 8 TMRECURS = "TMREMS02" end else nop Checkdsn = TMREMS03 if Check_Dsn_Exists(Checkdsn) > 0 then do Return_code = 8 TMRECURS = "TMREMS03" end else nop Checkdsn = TMREMS04 if Check_Dsn_Exists(Checkdsn) > 0 then do Return_code = 8 TMRECURS = "TMREMS04" end else nop Checkdsn = TMREMS05 if Check_Dsn_Exists(Checkdsn) > 0 then do Return_code = 8 TMRECURS = "TMREMS05" end else nop Checkdsn = TMREMS06 if Check_Dsn_Exists(Checkdsn) > 0 then do Return_code = 8 TMRECURS = "TMREMS06" end else nop Checkdsn = TMREMS07 if Check_Dsn_Exists(Checkdsn) > 0 then do Return_code = 8 TMRECURS = "TMREMS07" end else nop Checkdsn = TMREMS08 if Check_Dsn_Exists(Checkdsn) > 0 then do Return_code = 8 TMRECURS = "TMREMS08" end else nop Checkdsn = TMREMS09 if Check_Dsn_Exists(Checkdsn) > 0 then do Return_code = 8 TMRECURS = "TMREMS09" end else nop Checkdsn = TMREMS10 if Check_Dsn_Exists(Checkdsn) > 0 then do Return_code = 8 TMRECURS = "TMREMS10" end else nop return Return_code Check_Dsn_Exists: procedure expose CHECK_DSNAME parse arg Dsn Return_code = 0 if CHECK_DSNAME \= "YES" then return 0; if space(Dsn) = "" then Return 0 if pos("(", Dsn) > 0 then do /* Handle GDG - use Listcat as SYSDSN supports only absolute */ /* generation names and not relative (e.g. (-1)). */ /* Checking the GDG base exists - nothing more (otherwise, a */ /* long execution time is to be expected.) */ Gen = right(Dsn, length(Dsn) - pos("(", Dsn) + 1) Base = left(Dsn, pos("(", Dsn) - 1) x = outtrap('Dslist.') address "TSO" "LISTCAT ENT("Base") GDG" Listcat_Rc = Rc x = outtrap('OFF') if Listcat_Rc \= 0 then do Return_code = 8 Checkdsn = "Listcat: " ³³ Dsn /* Set for message TMR560 */ "VPUT (Checkdsn) PROFILE" end else nop end else /* Handle non-GDG - use SYSDSN */ if (pos("(", Dsn) = 0) then if pos(sysdsn("'"Dsn"'"),, "OK, UNAVAILABLE DATASET, VOLUME NOT ON SYSTEM") = 0 then do Return_code = 8 Checkdsn = "SYSDSN: " ³³ sysdsn("'"Dsn"'") ³³ " - " ³³, Dsn /* Set for message TMR560 */ "VPUT (Checkdsn) PROFILE" end else nop else nop return Return_code