IBM Mainframe Forum Index
 
Log In
 
IBM Mainframe Forum Index Mainframe: Search IBM Mainframe Forum: FAQ Register
 

COND condition code check


IBM Mainframe Forums -> JCL & VSAM
Post new topic   Reply to topic
View previous topic :: View next topic  
Author Message
Linda C

New User


Joined: 27 Aug 2010
Posts: 7
Location: USA

PostPosted: Thu May 19, 2011 9:44 pm
Reply with quote

Hello, here's a mystery for you. We recently put a new job (PROC and JCL) into production. The PROC and the JCL do contain several symbolic parameters, so that the SAME PROC can be used in production AND in all our test regions. But the symbolics aren't involved in the problem, it appears

The proc contains several steps coded like this
//ABND07 EXEC PGM=ABEND,COND=(0,EQ,STEP07)

"STEP07" is a DB2 program that might not abend if it has problems and puts out a "bad" condition code. So, we have these abend-checker steps. MANY jobs here have them, coded just like this, and they have never caused trouble.

Our job ran fine many times in test regions. That is, the ABND steps did NOT execute. However the 1st time we ran in production, the 1st abend step DID execute -- even though the condition code from the previous step was 0 -- and when job was restarted the other abnd steps also executed when prior step had condition code = 0

SO it seems something caused production to ignore the existence of the cond code check

I did notice this: We use a command JEM here to do JCL checking
When I check the test JCL in the test system I get messages like this one

STEP WAS NOT RUN DUE TO CONDITION CODE 0
"EQ" "SSSS.STEP07"

for all abend steps
In production I do not get such messages

So it seems in production the existence of a condition code check is ignored.

Any ideas?
Back to top
View user's profile Send private message
enrico-sorichetti

Superior Member


Joined: 14 Mar 2007
Posts: 10873
Location: italy

PostPosted: Thu May 19, 2011 9:55 pm
Reply with quote

is the jem message an error message ?
if not, a message from jem in the test environment where everything works smells fishy
just forget about JEM then, it is known for issuing false positives !
Quote:
so it seems something caused production to ignore the existence of the cond code check
most probably a badly written jcl icon_cool.gif
Quote:
So it seems in production the existence of a condition code check is ignored.
why blame the system ? icon_evil.gif

wild guess
if JEM assumes a 0 RC for all steps then based on that assumption it will tell that the <abend> step will not execute

if this does not happen on the production system ( the JEM messages I mean )
something makes JEM assume a non 0 Rc causing the <abend> step to execute
Back to top
View user's profile Send private message
Linda C

New User


Joined: 27 Aug 2010
Posts: 7
Location: USA

PostPosted: Thu May 19, 2011 10:32 pm
Reply with quote

I think I've figured it out; actually the JEM messages in test gave me a clue. (those are WARNING msgs by the way, not error)

APPARENTLY in our test system SOMETHING allows both JEM and run time software to figure out that
//ABND07 EXEC PGM=ABEND,COND=(0,EQ,STEP07)

really means COND=(0,EQ,SSSS.STEP07) - that is stepname.procstepname

When I made a play proc and play JCl with stepname.procstepname in PRODUCTION and JEMmed it I got the warning messages! And so I am 99.9% certain it'll work when it is run with the PROC change

I DON'T THINK this stepname.procstepname is needed if you have just one straight proc in a job. This PROC has another PROC inside it. I think that messes things up; and I never do this, unless there is some really good reason -- as there is in this case
Back to top
View user's profile Send private message
Linda C

New User


Joined: 27 Aug 2010
Posts: 7
Location: USA

PostPosted: Wed May 25, 2011 8:08 pm
Reply with quote

I would like to see if anybody has any more ideas about this. I've tried to set up similar jobs to get them to abend (or not) and so has one of our architects, and we CANNOT get jobs to fail (FAIL MEANS:
//ABND07 EXEC PGM=ABEND,COND=(0,EQ,STEP07)
the abend executes and abends the job EVEN THOUGH STEP07 ran fine with contion code = 0)

Our "play" jobs have included procs-within-procs and also DB2 programs since the original bad proc had all those. We've tried coding COND as above and ALSO COND=(0,EQ,SSSS.STEP07) and these all seem to work. And also, they all give the bypass messages
CAY6141I STEP WAS NOT RUN DUE TO CONDITION 0 "EQ" "SSSS.STEP07"
NOTE
1) JEM Seems to be able to "fill in" the SSSS stepname whether it is int he proc or not
2) Yes it looks like JEM assumes condition code from STEP07 IS 0 - so it says the ABND step will NOT run. That's what we want

We don't really know whether the JEM is significant or not -- as to why the job failed in production. (When these abend steps executed, and abended the job, it caused LARGE production problems so everyone is interested in this)
Somebody came up with the theory that JES is looking at some "other" condition code when it makes the abend steps run, and not the 0 that is shown in register 15 and also for the job statistics. I think thisi s kind of far-fetched
If you need me to copy in the whole proc and JCL, I can --- but it is a bit long and so I didn't do it here, since this message is ALREADY pretty long
Back to top
View user's profile Send private message
enrico-sorichetti

Superior Member


Joined: 14 Mar 2007
Posts: 10873
Location: italy

PostPosted: Wed May 25, 2011 8:14 pm
Reply with quote

why not look at the jcl checker manual to understand the real meaning of the jcl checker CAY6141I message

Quote:
Somebody came up with the theory that JES is looking at some "other" condition code
that somebody should be ready also to go down with his/her theory icon_biggrin.gif
Back to top
View user's profile Send private message
Akatsukami

Global Moderator


Joined: 03 Oct 2009
Posts: 1788
Location: Bloomington, IL

PostPosted: Wed May 25, 2011 8:40 pm
Reply with quote

Linda C wrote:
If you need me to copy in the whole proc and JCL, I can --- but it is a bit long and so I didn't do it here, since this message is ALREADY pretty long

Please do so; as you know, it's damned difficult to debug anything "blind", and many people will not bother to try (I did far too much of that at Itty-Bitty Machines icon_wink.gif in the 1990s).
Back to top
View user's profile Send private message
Linda C

New User


Joined: 27 Aug 2010
Posts: 7
Location: USA

PostPosted: Wed May 25, 2011 10:53 pm
Reply with quote

No one seems to have a JCLcheck/JEM manual and can't find one online - I thought of what Enrico says because messages don't always mean what they appear to mean

OK here is production PROC. Sorry to take up lots of room but no way of knowing WHAT in the proc or JCL caused our problems (Note we have a standard here about filling in symbolics in any proc with production values as defaults)
Code:
//CPBD081R PROC NODE1='PBS',                                   
//        OQMEMB='OQDFDLPB',                                   
//        BOX='PROD.DB2P',                                     
//        YDB2='YDB2PDSN',                                     
//        LOINSTLB='ENDEVOR.PROD.STAGE2.DATA',                 
//        CONDX='(0,GT)',                                     
//        STLIB='ENDEVOR.PROD.STAGE2.LOADLIB',                 
//        UNITX=PROD                                           
//*------------------------------------------------------------------- 
//*          DELETE OLD FILES                                           
//*------------------------------------------------------------------- 
//DEL01    EXEC PGM=IEFBR14                                             
//*                                                                     
//DD1    DD   DSN=&NODE1..CPB.SR008100.SORTFILE,                       
//            DISP=(MOD,DELETE,DELETE),                                 
//            UNIT=SYSDA,SPACE=(TRK,(1,0),RLSE)                         
//*                                                                     
//DD2       DD DSN=&NODE1..CPB.AR002505.MULSRGRD,                       
//            DISP=(MOD,DELETE,DELETE),                                 
//            UNIT=SYSDA,SPACE=(TRK,(1,0),RLSE)                         
----bla bla bla for about 15 flatfiles used in the job
//****************************************************************** 
//*** STEP 01 - CREATE BACKUP OF THE INPUT FILE                 **** 
//****************************************************************** 
//*                                                                   
//STEP01X EXEC PGM=BSPSTOPS                                           
//*                                                                   
//STEPLIB DD DSN=CPUB.SCHD.TEMPLIB,DISP=SHR                           
//        DD DSN=ENDEVOR.PROD.STAGE2.LOADLIB,DISP=SHR                 
//        DD DSN=ENDEVOR.PROD.STAGE2.LOADLIBA,DISP=SHR               
//        DD DSN=CPUB.SCHD.LOADLIB,DISP=SHR                           
//        DD DSN=CPUB.SCHD.VENDLOAD,DISP=SHR                         
//*                                                                   
//SYSOUT   DD  SYSOUT=*                                               
//SYSPRINT DD  SYSOUT=*                                               
//SYSABEND DD  SYSOUT=Z,DEST=LOCAL                                   
//***********                                                         
//*        I - PROCEDURE REVIEW ADD MULTIPLE SURGICAL REDUCTION CODES
//***********                                                         
//SYSUT1   DD  DSN=&NODE1..CPBD.AR008100(0),                         
//             DISP=(SHR,KEEP,KEEP)                                   
//*                                                                   
//***********                                                         
//*        O - BACKUP OF MULTIPLE SURGICAL REDUCTION CODES           
//***********                                                         
//SYSUT2   DD  DSN=&NODE1..CPBD.BKUPCPBX.CPBD081R(+1),               
//             DISP=(NEW,CATLG,DELETE),                               
//             UNIT=&UNITX,                                           
//             SPACE=(TRK,(150,50),RLSE),                             
//             DCB=(PBS.MODEL,RECFM=FB,LRECL=80,BLKSIZE=0)           
//*                                                                   
//****************************************************************** 
//*** STEP 02 - SORT TO ELIMINATE DUPLICATE RECORDS             **** 
//****************************************************************** 
//*                                                                   
//STEP02   EXEC PGM=SORT                                             
//*                                                                   
//***********                                                         
 //*        I - PROCEDURE REVIEW ADD MULTIPLE SURGICAL REDUCTION CODES 
 //***********                                                         
 //SORTIN   DD DSN=&NODE1..CPBD.AR008100(0),                           
 //             DISP=(SHR,KEEP,KEEP)                                   
 //*                                                                   
 //***********                                                         
 //*        O - SORTED BENEFIT MUL SURG REC CODE FILE  TO STEP07       
 //***********                                                         
 //SORTOUT  DD DSN=&NODE1..CPB.SR008100.SORTFILE,                       
 //             UNIT=&UNITX,                                           
 //             SPACE=(TRK,(350,250),RLSE),                             
 //             DISP=(NEW,CATLG,DELETE),                               
 //             DCB=(RECFM=FB,LRECL=80,BLKSIZE=0)                       
 //*                                                                   
 //SORTWK01 DD UNIT=SYSDA,SPACE=(TRK,250)                               
 //SORTWK02 DD UNIT=SYSDA,SPACE=(TRK,250)                               
 //SORTWK03 DD UNIT=SYSDA,SPACE=(TRK,250)                               
 //*                                                                   
 //SYSOUT   DD  SYSOUT=X                                               
 //SYSPRINT DD  SYSOUT=X                                               
 //SYSUDUMP DD  SYSOUT=X                                               
 //*                                                                   
 //SYSIN    DD  DSN=&LOINSTLB(CPBC581R),DISP=SHR                       
 //*                                                                   
 //*-------------------------------------------------------------------
 //***    STEP 03 - EXTRACT ALL MUL SURG RED CODES               ****   
 //***              DAILY PROC/MOD UNLOAD MULTIPLE TABLE FILE    ****   
 //*-------------------------------------------------------------------
 //*                                                                   
 //STEP03 EXEC  PGM=SORT                                               
 //*                                                                   
 //SYSOUT   DD  SYSOUT=*                                               
 //***********                                                         
 //*     I -    PROC/MOD DAILY UNLOAD MULTIPLE FILE  FROM/CPBD025D     
 //***********                                                         
 //SORTIN   DD  DSN=&NODE1..CPBD.AD002505(0),                           
 //             DISP=(SHR,KEEP,KEEP)                                   
//***********                                                           
//*     O -    PROC/MOD SELECTED RECORDS          TO/STEP04             
//***********                                                           
//SORTOUT   DD DSN=&NODE1..CPB.AR002505.MULSRGRD,                       
//             DISP=(NEW,CATLG,CATLG),                                 
//             UNIT=&UNITX,                                             
//             SPACE=(TRK,(550,450),RLSE),                             
//             DCB=(RECFM=FB,LRECL=442,BLKSIZE=0)                       
//*                                                                     
//SORTWK01  DD UNIT=SYSDA,SPACE=(CYL,(15,3),RLSE)                       
//SORTWK02  DD UNIT=SYSDA,SPACE=(CYL,(15,3),RLSE)                       
//SORTWK03  DD UNIT=SYSDA,SPACE=(CYL,(15,3),RLSE)                       
//SORTWK04  DD UNIT=SYSDA,SPACE=(CYL,(15,3),RLSE)                       
//SORTWK05  DD UNIT=SYSDA,SPACE=(CYL,(15,3),RLSE)                       
//SORTWK06  DD UNIT=SYSDA,SPACE=(CYL,(15,3),RLSE)                       
//*****                                                                 
//SYSIN     DD DSN=&LOINSTLB(CPBC681R),DISP=SHR                         
//*                                                                     
//*------------------------------------------------------------------- 
//*   STEP04 - SORT EXTRACTED PROC/MOD BENEFIT CATEGORY DATA         * 
//*            PROC/MOD/MULTIPLE SURGICAL REDUCTION CODES            * 
//*------------------------------------------------------------------- 
//STEP04  EXEC PGM=SORT                                                 
//SYSOUT    DD SYSOUT=*                                                 
//***********                                                           
//*     I -    PROC/MOD SELECTED RECORDS        FROM/STEP03             
//***********                                                           
//SORTIN    DD DSN=&NODE1..CPB.AR002505.MULSRGRD,                       
//             DISP=SHR                                                 
//***********                                                           
//*   O -     PROC/MOD MULTIPLE EXTRACT FILE   T/STEP07                 
//***********                                                           
//SORTOUT   DD DSN=&NODE1..CPB.SR002505.MULSRGRD,                       
//             DISP=(NEW,KEEP,DELETE),                                 
//             UNIT=&UNITX,                                             
//             SPACE=(TRK,(10,5),RLSE),                                 
//             DCB=(RECFM=FB,LRECL=442,BLKSIZE=0)                       
 //*                                                                     
 //SORTWK01  DD UNIT=SYSDA,SPACE=(CYL,(15,3),RLSE)                       
 //SORTWK02  DD UNIT=SYSDA,SPACE=(CYL,(15,3),RLSE)                       
 //SORTWK03  DD UNIT=SYSDA,SPACE=(CYL,(15,3),RLSE)                       
 //SORTWK04  DD UNIT=SYSDA,SPACE=(CYL,(15,3),RLSE)                       
 //SORTWK05  DD UNIT=SYSDA,SPACE=(CYL,(15,3),RLSE)                       
 //SORTWK06  DD UNIT=SYSDA,SPACE=(CYL,(15,3),RLSE)                       
 //*                                                                     
 //SYSIN     DD DSN=&LOINSTLB(CPBC781R),                                 
 //             DISP=SHR                                                 
 //*                                                                     
 //******************************************************************   
 //*** STEP 05 WILL UNLOAD PSCO TABLE TO GET PSCO_ID              ***   
 //******************************************************************   
 //*                                                                     
 //STEP05   EXEC PGM=IKJEFT01,DYNAMNBR=20                               
 //STEPLIB   DD  DSN=DB2.&BOX..LOADLIB.MOD,DISP=SHR                     
 //          DD  DSN=DB2.&BOX..LOADLIB,DISP=SHR                         
 //SYSTSPRT  DD  SYSOUT=*                                               
 //SYSPRINT  DD  SYSOUT=*                                               
 //SYSUDUMP  DD  SYSOUT=*                                               
 //SYSPUNCH  DD  DUMMY                                                   
 //SYSTSIN   DD  DSN=CPUB.SCHD.CARDLIB(&YDB2),DISP=SHR                   
 //          DD  DSN=CPUB.SCHD.CARDLIB(DSNTIAUS),DISP=SHR               
 //*                                                                     
 //*           OUTPUT - SELECTED RECORDS    TO/STEP06                   
 //SYSREC00  DD  DSN=&NODE1..CPB.PROCMOD.CPBD081R,                       
 //          DISP=(NEW,CATLG,DELETE),                                   
 //          UNIT=&UNITX,SPACE=(TRK,(100,50),RLSE)                       
 //*                                                                     
 //*           INPUT SQL SCRIPT                                         
 //SYSIN DD DISP=SHR,DSN=&LOINSTLB(CPBC881R)                             
 //*                                                                     
 //******************************************************************   
 //*** STEP 06 WILL SORT THE PSCO UNLOAD FILE                     ***   
 //******************************************************************   
 //*                                                                     
//STEP06 EXEC PGM=SORT                                                 
//SYSOUT   DD SYSOUT=*                                                 
//***********                                                           
//*        I - PSCO PROCMOD UNLOAD FILE    FROM/STEP05                 
//***********                                                           
//SORTIN   DD DISP=SHR,DSN=&NODE1..CPB.PROCMOD.CPBD081R                 
//***********                                                           
//*        O - SORTED PSCO PROCMOD UNLOAD FILE     TO STEP07 & STEP08   
//***********                                                           
//SORTOUT  DD DSN=&NODE1..CPB.PROCMOD.CPBD081R.SORTED,                 
//            DISP=(NEW,CATLG,DELETE),                                 
//            UNIT=&UNITX,                                             
//            SPACE=(CYL,(10,5),RLSE),                                 
//            DCB=(RECFM=FB,LRECL=64,BLKSIZE=0)                         
//*                                                                     
//SORTWK01 DD UNIT=SYSDA,SPACE=(CYL,(10,5),RLSE)                       
//SORTWK02 DD UNIT=SYSDA,SPACE=(CYL,(10,5),RLSE)                       
//SORTWK03 DD UNIT=SYSDA,SPACE=(CYL,(10,5),RLSE)                       
//SORTWK04 DD UNIT=SYSDA,SPACE=(CYL,(10,5),RLSE)                       
//SORTWK05 DD UNIT=SYSDA,SPACE=(CYL,(10,5),RLSE)                       
//SORTWK06 DD UNIT=SYSDA,SPACE=(CYL,(10,5),RLSE)                       
//*                                                                     
//SYSIN DD DISP=SHR,DSN=&LOINSTLB(CPBC981R)                             
//*                                                                     
//*------------------------------------------------------------------- 
//*        STEP 07 - CPBP8105 - EXTRACT MATCHED PROC/MOD          **** 
//*                  MULTIPLE SURGERY REDUCTION CODES             **** 
//*------------------------------------------------------------------- 
//*                                                                     
//STEP07  EXEC PGM=IKJEFT01,DYNAMNBR=20                                 
//*                                                                     
//STEPLIB  DD  DSN=&STLIB,DISP=SHR                                     
//         DD  DSN=DB2.&BOX..LOADLIB.MOD,DISP=SHR                       
//         DD  DSN=DB2.&BOX..LOADLIB,DISP=SHR                           
//         DD  DSN=ENDEVOR.PROD.STAGE2.LOADLIB,DISP=SHR                 
//         DD  DSN=ENDEVOR.PROD.STAGE2.LOADLIBA,DISP=SHR               
//*                                                                     
//SYSTSPRT DD SYSOUT=*                                             
//SYSPRINT DD SYSOUT=*                                             
//SYSUDUMP DD SYSOUT=*                                             
//SYSOUT   DD SYSOUT=*                                             
//SYSPUNCH DD DUMMY                                                 
//*                                                                 
//SYSTSIN  DD DSN=ENDEVOR.PROD.STAGE2.DATA(&YDB2),DISP=SHR         
//         DD DSN=ENDEVOR.PROD.STAGE2.DATA(CPBP8105),DISP=SHR       
//***********                                                       
//*   INPUT    DB2 SET COLLECTION                                   
//***********                                                       
//OQDFDL00  DD DSN=ENDEVOR.PROD.STAGE2.DATA(&OQMEMB),DISP=SHR       
//*                                                                 
//***********                                                       
//*     I -    PROC/MOD SORTED INPUT FILE       FROM/STEP02         
//***********                                                       
//PMODFILE DD DSN=&NODE1..CPB.SR008100.SORTFILE,                   
//             DISP=(SHR,KEEP,KEEP)                                 
//*                                                                 
//***********                                                       
//*     I -    SORTED PSCO PROCMOD FILE         FROM/STEP06         
//***********                                                       
//DDPSCOIN DD DSN=&NODE1..CPB.PROCMOD.CPBD081R.SORTED,             
//             DISP=(SHR,KEEP,KEEP)                                 
//*                                                                 
//***********                                                       
//*     I -    PROC/MOD SORTED MUL SURG RED CODES  FROM/STEP04     
//***********                                                       
//PSCOFILE  DD DSN=&NODE1..CPB.SR002505.MULSRGRD,                   
//             DISP=(SHR,KEEP,KEEP)                                 
//*                                                                 
//***********                                                       
//*     O -    PROC/MOD MULSURG RED     CODES     TO/STEP09         
//***********                                                       
//EXTRPMOD DD  DSN=&NODE1..CPB.CPBP8100.EXTRFILE,                   
//             DISP=(NEW,CATLG,DELETE),                             
//             UNIT=&UNITX,                                         
//             SPACE=(TRK,450,RLSE),                                   
//             DCB=(RECFM=FB,LRECL=442,BLKSIZE=0)                       
//*                                                                     
//***********                                                           
//*     O -    PSCO HIST FILE                     TO/STEP11             
//***********                                                           
//PSCOHIST DD  DSN=&NODE1..CPBD.AR008106(+1),                           
//             DISP=(NEW,CATLG,DELETE),                                 
//             UNIT=&UNITX,                                             
//             SPACE=(TRK,450,RLSE),                                   
//             DCB=(PBS.MODEL,RECFM=FB,LRECL=116,BLKSIZE=0)             
//*                                                                     
//************************************************                     
//* FROM AND TO DATES AND TIMESTAMP TO BE USED BY ALL PROGRAMS         
//* IN THIS JOB                                                         
//************************************************                     
//DATEOUTP  DD DSN=&NODE1..CPB.CPBD081R.SYSDATES,  TO STEP08 & STEP10   
//             DISP=(NEW,CATLG,DELETE),                                 
//             UNIT=&UNITX,                                             
//             SPACE=(TRK,(5,5),RLSE),                                 
//             DCB=(RECFM=FB,LRECL=80,BLKSIZE=0)                       
//*                                                                     
//*------------------------------------------------------------------   
//*  ABEND IF THE PREVIOUS DB2 PROGRAM HAD CONDITION CODE > 4 BUT       
//*  FAILED TO BLOW ITSELF UP.                                         
//*                                                                     
//*------------------------------------------------------------------   
//ABND07  EXEC  PGM=ABEND,COND=(0,EQ,STEP07)                           
//STEPLIB   DD   DSN=ENDEVOR.PROD.STAGE2.LOADLIBA,DISP=SHR             
//*                                                                     
//SYSOUT   DD  SYSOUT=*                                                 
//SYSUDUMP DD  SYSOUT=*                         ---------------------- 
//*                                                                     
//*------------------------------------------------------------------   
//***  STEP 08 - EXTRACT NEW PROC/MOD MULTIPLE SURGICAL REDUCTION CODES
//*------------------------------------------------------------------- 
//STEP08  EXEC PGM=CPBP8115                                             
//*                                                                     
//STEPLIB  DD DSN=&STLIB,DISP=SHR                                       
//         DD DSN=CPUB.SCHD.TEMPLIB,DISP=SHR                           
//         DD DSN=CPUB.SCHD.LOADLIB,DISP=SHR                           
//         DD DSN=CPUB.SCHD.VENDLOAD,DISP=SHR                           
//         DD DSN=ENDEVOR.PROD.STAGE2.LOADLIB,DISP=SHR                 
//         DD DSN=ENDEVOR.PROD.STAGE2.LOADLIBA,DISP=SHR                 
//*                                                                     
//SYSOUT   DD  SYSOUT=*                                                 
//SYSPRINT  DD SYSOUT=*                                                 
//CPXMRPTS  DD SYSOUT=*                                                 
//SYSABEND  DD SYSOUT=Y,DEST=LOCAL                                     
//*                                                                     
//***********                                                           
//*     I -    PROC/MOD SORTED INPUT FILE   FROM/STEP02                 
//***********                                                           
//PSCOFILE DD DSN=&NODE1..CPB.SR008100.SORTFILE,                       
//             DISP=(SHR,KEEP,KEEP)                                     
//*                                                                     
//***********                                                           
//*     I -    SORTED PSCO PROCMOD FILE         FROM/STEP06             
//***********                                                           
//DDPSCOIN DD DSN=&NODE1..CPB.PROCMOD.CPBD081R.SORTED,                 
//             DISP=(SHR,KEEP,KEEP)                                     
//*                                                                     
//***********                                                           
//*     O -    PROC/MOD NEW MUL SURG REC CODES   TO/STEP09             
//***********                                                           
//EXTRPMOD  DD DSN=&NODE1..CPB.CPBP8110.EXTRFILE,                       
//             DISP=(NEW,CATLG,DELETE),                                 
//             UNIT=&UNITX,                                             
//             SPACE=(TRK,(750,200),RLSE),                             
//             DCB=(RECFM=FB,LRECL=442,BLKSIZE=0)                       
//*                                                                     
//************************************************                     
//* FROM AND TO DATES AND TIMESTAMP TO BE USED BY ALL PROGRAMS         
//* IN THIS JOB                                                         
//************************************************                     
//DATEINPT DD  DSN=&NODE1..CPB.CPBD081R.SYSDATES,   FROM STEP07         
//             DISP=(OLD,KEEP,KEEP)                                     
//*------------------------------------------------------------------- 
//***    STEP 09 - SORT MULTIPLE SURGERY CODES FILES FROM       ****   
//***    PROGRAM  8105  AND  8110                                       
//*------------------------------------------------------------------- 
//*                                                                     
//STEP09   EXEC PGM=SORT                                               
//*                                                                     
//***********                                                           
//*     I -    PROC/MOD MULT SURG RED CODES   FROM/STEP07               
//*     I -    PROC/MOD MULT SURG RED CODES   FROM/STEP08               
//***********                                                           
//SORTIN    DD DSN=&NODE1..CPB.CPBP8100.EXTRFILE,                       
//             DISP=(SHR,KEEP,KEEP)                                     
//          DD DSN=&NODE1..CPB.CPBP8110.EXTRFILE,                       
//             DISP=(SHR,KEEP,KEEP)                                     
//*                                                                     
//***********                                                           
//*     O -    SORTED PROC/MOD MUL SURG RED CODES FILE TO STEP10       
//***********                                                           
//SORTOUT  DD DSN=&NODE1..CPB.MULSRGRD.COMBFILE,                       
//            DISP=(NEW,CATLG,DELETE),                                 
//            UNIT=&UNITX,                                             
//            SPACE=(TRK,(550,450),RLSE),                               
//            DCB=(RECFM=FB,LRECL=442,BLKSIZE=0)                       
//*                                                                     
//SORTWK01 DD UNIT=SYSDA,SPACE=(TRK,250)                               
//SORTWK02 DD UNIT=SYSDA,SPACE=(TRK,250)                               
//SORTWK03 DD UNIT=SYSDA,SPACE=(TRK,250)                               
//SYSOUT   DD  SYSOUT=*                                                 
//SYSPRINT DD  SYSOUT=*                                                 
//SYSUDUMP DD  SYSOUT=*                                                 
//*                                                                     
//SYSIN     DD DSN=&LOINSTLB(CPBC781R),DISP=SHR                         
//*                                                                     
//*------------------------------------------------------------------- 
//***    STEP 10 - CPBP8125 - RENUMBER THE SRT-ODR-NO                * 
//***              IN SEQUENTIAL ORDER                               * 
//*------------------------------------------------------------------- 
//*                                                                     
//STEP10  EXEC PGM=IKJEFT01,DYNAMNBR=20                                 
//*                                                                     
//STEPLIB DD   DSN=&STLIB,DISP=SHR                                     
//         DD  DSN=DB2.&BOX..LOADLIB.MOD,DISP=SHR                       
//         DD  DSN=DB2.&BOX..LOADLIB,DISP=SHR                           
//         DD  DSN=ENDEVOR.PROD.STAGE2.LOADLIB,DISP=SHR                 
//         DD  DSN=ENDEVOR.PROD.STAGE2.LOADLIBA,DISP=SHR               
//*                                                                     
//SYSTSPRT DD SYSOUT=*                                                 
//SYSPRINT DD SYSOUT=*                                                 
//SYSUDUMP DD SYSOUT=*                                                 
//SYSOUT   DD SYSOUT=*                                                 
//SYSPUNCH DD DUMMY                                                     
//*                                                                     
//SYSTSIN  DD DSN=ENDEVOR.PROD.STAGE2.DATA(&YDB2),DISP=SHR             
//         DD DSN=ENDEVOR.PROD.STAGE2.DATA(CPBP8125),DISP=SHR           
//***********                                                           
//*   INPUT    DB2 SET COLLECTION                                       
//***********                                                           
//OQDFDL00  DD DSN=ENDEVOR.PROD.STAGE2.DATA(&OQMEMB),DISP=SHR           
//*                                                                     
//***********                                                           
//*     I -    SORTED PROC/MOD MUL SURG REDUCTION CODES FROM/STEP09     
//***********                                                           
//PMODFILE DD DSN=&NODE1..CPB.MULSRGRD.COMBFILE,                       
//             DISP=(SHR,KEEP,KEEP)                                     
//*                                                                     
//***********                                                           
//*     O -    PROC/MOD MUL SURG RED FILE  TO/STEP12                   
//***********                                                           
//EXTRPMOD DD  DSN=&NODE1..CPBD.AR008105(+1),                           
//             DISP=(NEW,CATLG,DELETE),                                 
 //            UNIT=SYSDA,SPACE=(TRK,(1,0),RLSE)                         
//*                                                                     
//*                                                                     
//*---------------------------------------------------------------------
//*    STEP13 LOAD THE PSCO MASTER DATA                               *
//*           LOAD TABLE:  DB2PROD.PMT_PSCO_HIST                      *
//*  NOW USES OMSPDB2L TO DO THE LOAD                                 *
//*---------------------------------------------------------------------
//STEP13   EXEC OMSPDB2L,                                               
//             DB2LIB=&BOX                                             
//*                                                                     
//*                                                                     
//STEPLIB   DD   DSN=ENDEVOR.PROD.STAGE2.LOADLIBA,DISP=SHR             
//*                                                                     
//SYSOUT    DD   SYSOUT=*                                               
//SYSUDUMP  DD   SYSOUT=*                                               
//ABNLIGNR  DD   DUMMY                 SUPPRESS ABENDAID DUMPS         
//*                                                                     
//*                                                                     
//SYSREC00  DD DSN=&NODE1..CPBD.AR008106(+1),   FROM STEP07             
//             DISP=(SHR,KEEP,KEEP)                                     
//*                                                                     
//DUPSFILE  DD DSN=&NODE1..CPBD081R.LOADDUPE,                           
//             DISP=(,CATLG,DELETE),                                   
//             SPACE=(TRK,(25,10),RLSE),                               
//             DCB=(RECFM=FB,LRECL=116,BLKSIZE=0,BUFNO=20)             
//*                                                                     
//SYSIN     DD DSN=&LOINSTLB(LODHIST1),DISP=SHR                         
//*                                                                     
//SYSPRINT DD SYSOUT=*                                                 
//*                                                                     
//*                                                                     
//*------------------------------------------------------------------   
//*  ABEND IF THE PREVIOUS DB2 PROGRAM HAD CONDITION CODE > 4 BUT       
//*  FAILED TO BLOW ITSELF UP.  (4 IS THE COND CODE IF ANY DUPES ARE   
//*  FOUND - THEY REALLY SHOULD NOT BE, BUT WE ALLOW FOR IT             
//*------------------------------------------------------------------   
//AB13 EXEC PGM=ABEND,COND=((0,EQ,STEP13.STEP01),(4,EQ,STEP13.STEP01)) 
//STEPLIB   DD   DSN=ENDEVOR.PROD.STAGE2.LOADLIBA,DISP=SHR             
//*                                                                     
//SYSOUT   DD  SYSOUT=*                                                 
//SYSUDUMP DD  SYSOUT=*                         ---------------------- 
//*                                                                     
//*------------------------------------------------------------------- 
//*     STEP 14 -  LOAD DATA TO THE TABLE                               
//*                LOAD TABLE:  DB2PROD.PMT_PSCO_PROC_MOD_RD_M         
//*------------------------------------------------------------------- 
//STEP14  EXEC OMSPDB2L,                                               
//         DB2LIB=&BOX              <== RUN AGAINST DB2P               
//*                                                                     
//STEPLIB  DD  DSN=ENDEVOR.PROD.STAGE2.LOADLIBA,DISP=SHR               
//SYSOUT   DD  SYSOUT=*                                                 
//*                                                                     
//*        I - STANDARD IBM LOAD STATEMENT                             
//SYSIN     DD DSN=&LOINSTLB(PMTLPMRM),DISP=SHR                         
//*                                                                     
//*        I - UNLOAD FILE CREATED IN STEP 10                           
//SYSREC00  DD DSN=&NODE1..CPBD.AR008105(+1),                           
//          DISP=(SHR,KEEP,KEEP)                                       
//*                                                                     
//*        O - OUTPUT FILE FOR DUPLICATE RECORDS                       
//DUPSFILE  DD  DSN=&NODE1..CPB.UPDTPMRM.DB2PROD.DUPS,                 
//            DISP=(NEW,CATLG,DELETE),                                 
//            SPACE=(TRK,(25,10),RLSE),                                 
//            DCB= RECFM=FB,LRECL=442,BLKSIZE=0,BUFNO=20) 
//AB14 EXEC PGM=ABEND,COND=((0,EQ,STEP14.STEP01),(4,EQ,STEP14.STEP0
//STEPLIB   DD   DSN=ENDEVOR.PROD.STAGE2.LOADLIBA,DISP=SHR         
//*                                                               
//SYSOUT   DD  SYSOUT=*                                           
//SYSUDUMP DD  SYSOUT=*                         -------------------
//*                                                               
//*----------------------------------------------------------------
//*  STEP 15 NEW PROGRAM FOR THIS JOB, CPBPPSCO TO UPDATE         
//*  PMT_PSCO ("MOTHER" TABLE) IN ACCORDANCE WITH AUDIT TRAIL     
//*  REQUIREMENTS                                                 
//*----------------------------------------------------------------
//STEP15  EXEC PGM=IKJEFT01,DYNAMNBR=20                           
//*                                                               
//STEPLIB  DD  DSN=&STLIB,DISP=SHR                                 
//         DD  DSN=DB2.&BOX..LOADLIB.MOD,DISP=SHR                 
//         DD  DSN=DB2.&BOX..LOADLIB,DISP=SHR                     
//         DD  DSN=ENDEVOR.PROD.STAGE2.LOADLIB,DISP=SHR           
//         DD  DSN=ENDEVOR.PROD.STAGE2.LOADLIBA,DISP=SHR           
//*                                                               
//OQDFDL00  DD DSN=ENDEVOR.PROD.STAGE2.DATA(&OQMEMB),DISP=SHR     
//*                                                               
//SYSTSPRT DD SYSOUT=*                                             
//SYSPRINT DD SYSOUT=*                                             
//SYSUDUMP DD SYSOUT=*                                             
//SYSOUT   DD SYSOUT=*                                             
//SYSPUNCH DD DUMMY                                               
//*                                                               
//SYSTSIN  DD DSN=ENDEVOR.PROD.STAGE2.DATA(&YDB2),DISP=SHR         
//         DD DSN=ENDEVOR.PROD.STAGE2.DATA(CPBPPSCO),DISP=SHR     
//****************************************************             //*  I - RECORDS TO BE INSERTED TO HISTORY FROM STEP 07               
//****************************************************               
//HISTEXTR DD DSN=&NODE1..CPBD.AR008106(+1),                         
//            DISP=SHR                                               
//*------------------------------------------------------------------
//*  ABEND IF THE PREVIOUS DB2 PROGRAM HAD CONDITION CODE > 0 BUT     
//*  FAILED TO BLOW ITSELF UP.                                       
//*                                                                   
//*------------------------------------------------------------------
//ABND15  EXEC  PGM=ABEND,COND=(0,EQ,STEP15)                         
//STEPLIB   DD   DSN=ENDEVOR.PROD.STAGE2.LOADLIBA,DISP=SHR           
//*                                                                   
//SYSOUT   DD  SYSOUT=*                                               
//SYSUDUMP DD  SYSOUT=*                         ----------------------
//*                                                                   
//*-------------------------------------------------------------------
//*   STEP 16 - CPBP8150 - WILL INITIALIZE PROC REVIEW            ****
//*             MULTIPLE SURGERY REDUCTION CODES INPUT FILE       ****
//*-------------------------------------------------------------------
//*                                                                   
//STEP16  EXEC PGM=CPBP8150                                           
//*                                                                   
//STEPLIB  DD DSN=&STLIB,DISP=SHR                                     
//         DD DSN=CPUB.SCHD.TEMPLIB,DISP=SHR                         
//         DD DSN=CPUB.SCHD.LOADLIB,DISP=SHR                         
//         DD DSN=CPUB.SCHD.VENDLOAD,DISP=SHR                         
//         DD DSN=ENDEVOR.PROD.STAGE2.LOADLIB,DISP=SHR               
//         DD DSN=ENDEVOR.PROD.STAGE2.LOADLIBA,DISP=SHR               
//*                                                                   
//SYSOUT   DD  SYSOUT=*                                               
//SYSPRINT  DD SYSOUT=*                                               
//CPXMRPTS  DD SYSOUT=*                                               
//SYSABEND  DD SYSOUT=Y,DEST=LOCAL                                   
//*                                                                   
//***********                                                         
//*     O -    MULTIPLE SURGERY REDUCTION CODES FOR NEXT UPDATE RUN   
//***********                                                         
//NEWFILE  DD  DSN=&NODE1..CPBD.AR008100(+1),                         
//             DISP=(NEW,CATLG,DELETE),                               
//             UNIT=&UNITX,                                           
//             SPACE=(TRK,450,RLSE),                                   
//             DCB=(PBS.MODEL,RECFM=FB,LRECL=80,BLKSIZE=0)             
//*                                                                   
//******************************************************************   
//***      STEP 17 WILL INSERT JOB CPBD025D INTO ESP SCHEDULER  ****   
//******************************************************************   
//*                                                                   
//STEP17  EXEC PGM=IKJEFT01,COND=&CONDX                               
//*                                                                   
//SYSEXEC  DD  DISP=SHR,DSN='CPUB.ESP.REXX'                           
//RCOUT    DD  DSN=&&TEMPRC,                                           
//             DISP=(NEW,DELETE,DELETE),                               
//             DCB=(RECFM=FB,LRECL=80,BLKSIZE=8000),                   
//             SPACE=(CYL,(1,1),RLSE)                                 
//SYSTSPRT DD SYSOUT=*                                                 
//SYSTSIN  DD DSN=ENDEVOR.PROD.STAGE2.DATA(CPBDE76R),DISP=SHR         
//*                                                                   
//*==================================================================*
//*          END OF PROCEDURE CPBD081R         



That's it ==== ABND07 executed the 1st time this got run, and as it was restarted on subseq steps all the other conditional abends also ran
OMSPDB2L is the PROC within a PROC. It MAY just be that if we took away the conditional abends after the OMSPDB2L steps that others would be OK. It has been said that you cannot check condition codes from a proc-within-a-proc just as you can't submit overrides for data sets in the nested proc. OMSPDB2L has ONLY one step, STEP01

JCL-----
Code:
********************************* Top of Data **********************************
//CPBD081R JOB (B528,4200),'BEN RECLASS CD',MSGCLASS=O,                         
//       REGION=0K,PERFORM=17,CLASS=V                                           
//*                                                                             
//PROC   EXEC  CPBD081R,                                                       
//       NODE1=PBS,                                                             
//       OQMEMB=OQDFDLPB,                                                       
//       BOX=PROD.DB2P,                                                         
//       YDB2=YDB2PDSN,                                                         
//       LOINSTLB=ENDEVOR.PROD.STAGE2.DATA,                                     
//       COND=(0,GT),                                                           
//       STLIB=ENDEVOR.PROD.STAGE2.LOADLIB,                                     
//       UNITX=PROD                                                 

Code'd

NOTE I tried changing JCL step name from PROC to SSSS thinking maybe the name PROC - which, for some reason, gets used here a lot --- caused trouble. But that didn't make any difference.

Thanks in advance for even taking time to look at this monster
Back to top
View user's profile Send private message
dick scherrer

Moderator Emeritus


Joined: 23 Nov 2006
Posts: 19244
Location: Inside the Matrix

PostPosted: Wed May 25, 2011 11:08 pm
Reply with quote

Hello,

Please note your PROC and JCL have been "Code'd" to preserve alignment and improve readability.

Is the condition code from the step termination of the batch tso step (step07) zero or non zero in the JES output?

Condition code checking appears inconsistent (and often non-existent) throughout. . . icon_confused.gif
Back to top
View user's profile Send private message
enrico-sorichetti

Superior Member


Joined: 14 Mar 2007
Posts: 10873
Location: italy

PostPosted: Wed May 25, 2011 11:13 pm
Reply with quote

I see that You are using IKJEFT01

I personally prefer, and probably is more sound from a technical point of view
to use IKJEFT1A or IKJEFT1B as per

publib.boulder.ibm.com/infocenter/zos/v1r9/index.jsp?topic=/com.ibm.zos.r9.ikjb400/xtmpjcl.htm
Back to top
View user's profile Send private message
Akatsukami

Global Moderator


Joined: 03 Oct 2009
Posts: 1788
Location: Bloomington, IL

PostPosted: Thu May 26, 2011 12:14 am
Reply with quote

The operators did not of course attempt to restart from an ABNDnn step?
Back to top
View user's profile Send private message
Ronald Burr

Active User


Joined: 22 Oct 2009
Posts: 293
Location: U.S.A.

PostPosted: Thu May 26, 2011 2:53 am
Reply with quote

Linda C wrote:
No one seems to have a JCLcheck/JEM manual and can't find one online - I thought of what Enrico says because messages don't always mean what they appear to mean

OK here is production PROC. Sorry to take up lots of room but no way of knowing WHAT in the proc or JCL caused our problems (Note we have a standard here about filling in symbolics in any proc with production values as defaults)
Code:
//CPBD081R PROC NODE1='PBS',                                   
//        OQMEMB='OQDFDLPB',                                   
//        BOX='PROD.DB2P',                                     
//        YDB2='YDB2PDSN',                                     
//        LOINSTLB='ENDEVOR.PROD.STAGE2.DATA',                 
//        CONDX='(0,GT)',                                     
//        STLIB='ENDEVOR.PROD.STAGE2.LOADLIB',                 
//        UNITX=PROD                                           
//*------------------------------------------------------------------- 
. . .
blah blah blah
. . .
//STEP17  EXEC PGM=IKJEFT01,COND=&CONDX                               
//*                                                                   
//SYSEXEC  DD  DISP=SHR,DSN='CPUB.ESP.REXX'                           
//RCOUT    DD  DSN=&&TEMPRC,                                           
//             DISP=(NEW,DELETE,DELETE),                               
//             DCB=(RECFM=FB,LRECL=80,BLKSIZE=8000),                   
//             SPACE=(CYL,(1,1),RLSE)                                 
//SYSTSPRT DD SYSOUT=*                                                 
//SYSTSIN  DD DSN=ENDEVOR.PROD.STAGE2.DATA(CPBDE76R),DISP=SHR         
//*                                                                   
//*==================================================================*
//*          END OF PROCEDURE CPBD081R



That's it ==== ABND07 executed the 1st time this got run, and as it was restarted on subseq steps all the other conditional abends also ran
OMSPDB2L is the PROC within a PROC. It MAY just be that if we took away the conditional abends after the OMSPDB2L steps that others would be OK. It has been said that you cannot check condition codes from a proc-within-a-proc just as you can't submit overrides for data sets in the nested proc. OMSPDB2L has ONLY one step, STEP01

JCL-----
Code:
********************************* Top of Data **********************************
//CPBD081R JOB (B528,4200),'BEN RECLASS CD',MSGCLASS=O,                         
//       REGION=0K,PERFORM=17,CLASS=V                                           
//*                                                                             
//PROC   EXEC  CPBD081R,                                                       
//       NODE1=PBS,                                                             
//       OQMEMB=OQDFDLPB,                                                       
//       BOX=PROD.DB2P,                                                         
//       YDB2=YDB2PDSN,                                                         
//       LOINSTLB=ENDEVOR.PROD.STAGE2.DATA,                                     
//       COND=(0,GT),                                                           
//       STLIB=ENDEVOR.PROD.STAGE2.LOADLIB,                                     
//       UNITX=PROD

Code'd

NOTE I tried changing JCL step name from PROC to SSSS thinking maybe the name PROC - which, for some reason, gets used here a lot --- caused trouble. But that didn't make any difference.

Thanks in advance for even taking time to look at this monster


The 'problem' is obvious. On the PROC statement of CPBD081R there is a parameter override - CONDX='(0,GT)', and that matches up with the &COND parameter on STEP17 - which is the ONLY reference to &CONDX.

On the EXEC PROC statement that invokes the PROC CPBD081R, there is a parameter override - COND='(0,GT)'. Note that the override is NOT for CONDX (with a trailing 'X') but for COND (withOUT a trailing 'X'). Hence the override is NOT doing what you probably intend it to do. Instead, you are effectively overriding the COND parameter for EVERY SINGLE STEP IN THE PROC.

From the JCL REFERENCE MANUAL:

If you omit stepname, the code you specify is compared to the return codes from all previous steps. If the return code issued by any of those previous steps causes the test condition to be satisfied, the system evaluates the COND parameter as true and bypasses the job step.

Ergo, the COND test in step ABND07 is overriden to (0,GT), which negates the original, intended test of (0,EQ).

If you fix the COND override parm on the EXEC CPBD081R statement to specify CONDX instead, all should go as I believe you intend.

Ron
Back to top
View user's profile Send private message
Anuj Dhawan

Superior Member


Joined: 22 Apr 2006
Posts: 6250
Location: Mumbai, India

PostPosted: Thu May 26, 2011 2:15 pm
Reply with quote

Here is a nice summary of COND statements: publibz.boulder.ibm.com/cgi-bin/bookmgr_OS390/BOOKS/IEA2B680/16.5.7

Sometimes, I just stop the actuators in my mind to sit idle, and ask Him to read the docuiment, and just follow it.
Back to top
View user's profile Send private message
Linda C

New User


Joined: 27 Aug 2010
Posts: 7
Location: USA

PostPosted: Thu May 26, 2011 7:59 pm
Reply with quote

Thanks to Ronald Burr and I am glad the problem was quickly obvious to him - sometimes one can have 3 sets of eyes (at least) looking at something (which we did - including 2 VERY experience programmers and one architect) and not seeing it, and a 4th person will see it.

Very clear now, and everybody here will be happy to know

Just so you know - the CONDX parm is intended to STOP STEP17 from running in TEST - and should apply ONLY to STEP17, the idea is to make STEP17 always run in production Follwing is one of the test JCL decks and you can see how the CONDX works. (Here, we are supposed to use sym parms so same PROC can be used for both test and production, and you often have this issue of steps not supposed to run in test) THIS ALSO EXPLAINS WHY the thing worked in test, not in production

Enrico, almost everybody hear uses IKJEFT01 - the architect who looked at this problem did suggest we use IKJEFT1B saying IT would cause an abend where IKJEFT01 would not ---- so w/ 1B we dont need the conditional abends. But, thanks for reinforcing this

I am SURELY glad I took time to put this problem in here

//CPBD081R JOB (B528,4200),'BEN RECLASS CD',MSGCLASS=O,
// REGION=0K,PERFORM=17,CLASS=V,TYPRUN=SCAN
//*
//JL JCLLIB ORDER=(LIDJ5HP.LMC.PROCS)
//PROC1 EXEC CPBD081RODE1=TPRS0,
// OQMEMB=OQDFDLT1,
// BOX=TEST.DB2T,
// YDB2=YDB2TDSN,
// LOINSTLB=TENV1.PRODSUPT.CARDLIB,
// CONDX=(16,NE,STEP01X),
// STLIB=LIDJ5HP.LMC.OFFLOA,
// UNITX=SYSDA
Back to top
View user's profile Send private message
View previous topic :: :: View next topic  
Post new topic   Reply to topic View Bookmarks
All times are GMT + 6 Hours
Forum Index -> JCL & VSAM

 


Similar Topics
Topic Forum Replies
No new posts INCLUDE OMIT COND for Multiple values... DFSORT/ICETOOL 5
No new posts run rexx code with jcl CLIST & REXX 15
No new posts Compile rexx code with jcl CLIST & REXX 6
No new posts SCOPE PENDING option -check data DB2 2
No new posts Check data with Exception Table DB2 0
Search our Forums:

Back to Top