diff --git a/MVP.rexx b/MVP.rexx index 740ce93..b78acc7 100644 --- a/MVP.rexx +++ b/MVP.rexx @@ -538,17 +538,44 @@ CHECK_JOB: PROCEDURE JOBSTART = J DO I=JOBSTART TO JOBEND - PARSE VAR _LINE.I . . JOBM JOBNUM TYPE DET - /* SKIP ENTRIES THAT AREN'T JOBS OR HAVE THE WRONG JOBNUMBER */ + _LINE = _LINE.I /* READ THE CURRENT LINE */ + /* EXTRACT JOB FIELDS USING ABSOLUTE POSITIONING */ + JOBM = STRIP(SUBSTR(_LINE, 15, 3)) /* 'JOB' */ + JOBNUM = STRIP(SUBSTR(_LINE, 19, 5)) /* JOB NUMBER */ + JOBNAME = STRIP(SUBSTR(_LINE, 25, 8)) /* JOB NAME */ + /* ENSURE IT'S A VALID JOB ENTRY */ IF JOBM \= 'JOB' | JOBNUM \= CUR_JOBNUM THEN ITERATE - IF TYPE = "IEFACTRT" THEN DO - PARSE VAR DET NAME '/' PROG '/' . '/' . '/' CC '/' JOBNAME - IF CC \= 0000 THEN DO + /* ONLY PARSE LINES THAT START WITH JOBNAME AFTER IEFACTRT*/ + IF STRIP(SUBSTR(_LINE, 25, 8)) = JOBNAME THEN DO + /* EXTRACT JOB STEP FIELDS */ + STEP = STRIP(SUBSTR(_LINE, 36, 8)) /* STEP NAME */ + PROC = STRIP(SUBSTR(_LINE, 46, 8)) /* PROCEDURE NAME (IF PRESENT) */ + PROG = STRIP(SUBSTR(_LINE, 56, 8)) /* PROGRAM NAME */ + STATUS = STRIP(SUBSTR(_LINE, 66, 2)) /* 'AB' OR '*F' OR 'RC' */ + CC = STRIP(SUBSTR(_LINE, 69, 5)) /* RETURN/ABEND CODE */ + /* HANDLE ABEND ERRORS */ + IF STATUS = "AB" THEN DO CALL ERROR "JOB JOB"||RIGHT(JOBNUM,5,'0') "FAILED" - CALL ERROR "JOBNAME:" JOBNAME "STEP:" NAME "PROGRAM:" PROG - CALL ERROR "MAXCC:" CC + CALL ERROR "JOBNAME:" JOBNAME "STEP:" STEP "PROC:" PROC + CALL ERROR "PROGRAM:" PROG "ABEND CODE:" CC EXIT -1 END + /* HANDLE *FLUSH* ERRORS */ + IF STATUS = "*F" THEN DO + CALL ERROR "JOB JOB"||RIGHT(JOBNUM,5,'0') "FAILED" + CALL ERROR "JOBNAME:" JOBNAME "STEP:" STEP "PROC:" PROC + CALL ERROR "PROGRAM:" PROG "ABEND CODE: *FLUSH*" + EXIT -1 + END + /* HANDLE NON-ZERO RETURN CODES */ + IF STATUS = "RC" THEN DO + IF STRIP(CC) \= "0000" THEN DO + CALL ERROR "JOB JOB"||RIGHT(JOBNUM,5,'0') "FAILED" + CALL ERROR "JOBNAME:" JOBNAME "STEP:" STEP "PROC:" PROC + CALL ERROR "PROGRAM:" PROG "MAXCC:" CC + EXIT -1 + END + END END END