I tried finding IKJEFT01 in the loadlib mentioned in the STEPLIB, but did not find it. Instead i found the program PGM1 in it. STEPLIB is used to point which library needs to be searched for the program executing in EXEC statement. Also since, LIB parameter is not mentioned in the SYSTSIN Card, is it correct to say that STEPLIB is used for denoting the loadlib for RUN PROGRAM i.e PGM1 in such case?
I have few doubts in the Compile JCL, i 've searched for similar posts but could not find something which answers my questions and hence i am posting it here..
the question is
What exactly dose the steplib has in the precompiler, compile, link-edit steps I have no idea about what those libraries are...? Are those system libraries or user defined ones or what exxactly are they and their significance? Please explain it to me as if you aer doing to a layman in mainframes....that would be of a great help
The IKJEFT01 is a terminal monitor program, It function is to create an environment to run JOB PGM1 which is present in Load library present in STEPLIB.
Then about IKJEFT01 is normally present in default load library don't think it has to be STEPLIB Library.
When you RUN above JCL, IKJEFT01 will create an environment in MVS System and it will try to execute program PGM1 which you mentioned in JCL CARD
Code:
DSN SYSTEM(DB2subsystem)
RUN PROGRAM(PGM1)
PLAN(PGM1)
END
Well, i beleive you haven't seen the questions i posted in this thread....i have asked about the exact content of the STEPLIB in a compile jcl for Cobol DB2 program , i gave a sample JCL too...please look above in this thread...you would see questions posted by me.....waiting for your reply.
What exactly dose the steplib has in the precompiler, compile, link-edit steps I have no idea about what those libraries are...? Are those system libraries or user defined ones or what exxactly are they and their significance? Please explain it to me as if you aer doing to a layman in mainframes....that would be of a great help
As we know STEPLIB are used to locate programs which is defined in EXEC Card, In above scenario, The programs like
PRE-COMPILER
------------------
Code:
//PC EXEC PGM=DSNHPC,
DSNHPC (Pre compiler) - used to segregate sql code & Cobol code
Hi Raghu my doubt was about the STEPLIBs in teh JCL i had posted...what are the Libraries in the steplib and all about them....? hope you have understood the uqestion...please help me out with them
Well then may be i misqouted the question , i know what actually a normal steplib contains ...but in the JCL i have given above.......
the precompile step has this
//STEPLIB DD DISP=SHR,
// DSN=SYSX.DB2.XXX.XXXXX
and next in the compilation step it is
//STEPLIB DD DISP=SHR,
// DSN=XXXX.XXXXXX
i said i did not understand...and if i have seen your link right...we dont have this...so that was why i was repeating the question. I hope you dont mistake me..
Joined: 06 Jun 2008 Posts: 8696 Location: Dubuque, Iowa, USA
Prashanth: a STEPLIB is only valid from EXEC to EXEC statement in JCL. You can specify a different STEPLIB for each EXEC in your job, and in some cases you must specify the STEPLIB for each EXEC. They point to different libraries because different programs are stored in different libraries.
Joined: 23 Nov 2006 Posts: 19244 Location: Inside the Matrix
Hello,
And if you have questions about the compile jcl used on your system (everyone should use standard compile jcl, not create their own) your best source of info about the standard compile jcl is your system support people and/or dba's.
I would not muddy the water with examples from the web. . . fwiw
Thank you robert for your valuable input, added to above statement,
Even order of search(To locate program which is in EXEC Card in STEPLIB library) is also different.
1. First it will search in STEPLIB Library
2. Then in JOBLIB Library if it present
3. Default Library(normally SYSIBM.LINKLIB or SYS1.LINKLIB depends on company standard).
Thank you robert for your valuable input, added to above statement,
Even order of search(To locate program which is in EXEC Card in STEPLIB library) is also different.
1. First it will search in STEPLIB Library
2. Then in JOBLIB Library if it present
3. Default Library(normally SYSIBM.LINKLIB or SYS1.LINKLIB depends on company standard).
Hope you clear now ..
the jcl manual disagrees...
and I would rather trust the manual (quote reformatted )
Quote:
The system searches for a program in the private library you identify.
If a job contains a JOBLIB DD statement and a step contains a STEPLIB DD statement,
the system searches for the step's program first in the STEPLIB library and then in the system libraries.
The system ignores the JOBLIB library for that step.
The system searches for a program in the private library you identify.
If a job contains a JOBLIB DD statement and a step contains a STEPLIB DD statement,
the system searches for the step's program first in the STEPLIB library and then in the system libraries.
The system ignores the JOBLIB library for that step.
Enric,
I completly disagree with above statement, Try to execute programs which is in JOBLIB and SYSTEM Default Library by having diffrent version. Try to find whether JCL has pick up which version ie either from JOBLIB or SYSTEM Default Library(Have STEPLIB, JOBLIB in JCL)..(I have tested this).. :o)
To Prashanth,
I hope, This is not homework question..
You know STEPLIB is used for locate loadmodule of that particular step.. in above scenario its doing same job..for respective step..
I completly disagree with above statement, Try to execute programs which is in JOBLIB and SYSTEM Default Library by having diffrent version. Try to find whether JCL has pick up which version ie either from JOBLIB or SYSTEM Default Library(Have STEPLIB, JOBLIB in JCL)..(I have tested this).. :o)
it took me just a couple of minutes to run a test
- it took me longer to write the post
steps... done to test the joblib steplib issue
allocate a dataset to be used as joblib
allocate a dataset to be used as steplib
assemble and link into the joblib dataset
a simple program to issue a wto..
Code:
TEST CSECT
BAKR 14,0
BASR 12,0
USING *,12
WTO 'TEST - JUST A STUPID WTO'
PR
LTORG
END
as expected ended with an abend s806 load module not found
which means that... guess what:
... the manual is right
so You might disagree, but You are just
... plain wrong ....
so it would be wiser to get a better grasp of the manuals in order
to review your understanding of the joblib/steplib behavior
and also to review Your testing methodology
to convince you that I am not cheating and carried on the tests properly
here are the SDSF XDC of the two jobs
abended job
Code:
1 J E S 2 J O B L O G -- S Y S T E M S Y S 1 -- N O D E N 1
0
18.06.53 JOB00051 ---- THURSDAY, 20 NOV 2008 ----
18.06.53 JOB00051 IRR010I USERID zosuser IS ASSIGNED TO THIS JOB.
18.06.53 JOB00051 ICH70001I zosuser LAST ACCESS AT 18:06:40 ON THURSDAY, NOVEMBER 20, 2008
18.06.53 JOB00051 $HASP373 zosuserB STARTED - INIT 1 - CLASS A - SYS SYS1
18.06.53 JOB00051 IEF403I zosuserB - STARTED - TIME=18.06.53
18.06.53 JOB00051 CSV003I REQUESTED MODULE TEST NOT FOUND
18.06.53 JOB00051 CSV028I ABEND806-04 JOBNAME=zosuserB STEPNAME=TEST
18.06.53 JOB00051 IEA995I SYMPTOM DUMP OUTPUT 874
874 SYSTEM COMPLETION CODE=806 REASON CODE=00000004
874 TIME=18.06.53 SEQ=00022 CPU=0000 ASID=001A
874 PSW AT TIME OF ERROR 070C1000 811B5A78 ILC 2 INTC 0D
874 NO ACTIVE MODULE FOUND
874 NAME=UNKNOWN
874 DATA AT PSW 011B5A72 - 8400181E 0A0D18FB 180C181D
874 AR/GR 0: 9196DFDE/00001E00 1: 00000000/84806000
874 2: 00000000/00FDDD68 3: 00000000/00000000
874 4: 00000000/00000000 5: 00000000/008FF548
874 6: 00000000/000000FF 7: 00000000/00000000
874 8: 00000000/008C1250 9: 00000000/011B5F4C
874 A: 00000000/00000000 B: 00000000/00000004
874 C: 00000000/00000000 D: 00000000/008C1250
874 E: 00000000/84806000 F: 00000002/00000004
874 END OF SYMPTOM DUMP
18.06.53 JOB00051 IEF450I zosuserB TEST - ABEND=S806 U0000 REASON=00000004 875
875 TIME=18.06.53
18.06.53 JOB00051 IEF404I zosuserB - ENDED - TIME=18.06.53
18.06.53 JOB00051 $HASP395 zosuserB ENDED
0------ JES2 JOB STATISTICS ------
- 20 NOV 2008 JOB EXECUTION DATE
- 7 CARDS READ
- 75 SYSOUT PRINT RECORDS
- 0 SYSOUT PUNCH RECORDS
- 4 SYSOUT SPOOL KBYTES
- 0.00 MINUTES EXECUTION TIME
1 //zosuserB JOB (ACCT#),'TEST',NOTIFY=&SYSUID, JOB00051
// CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1)
//* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
//*
IEFC653I SUBSTITUTION JCL - (ACCT#),'TEST',NOTIFY=zosuser,CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1)
2 //JOBLIB DD DISP=SHR,DSN=zosuser.TEST.JOBLIBB
3 //TEST EXEC PGM=TEST
4 //STEPLIB DD DISP=SHR,DSN=zosuser.TEST.STEPLIB
ICH70001I zosuser LAST ACCESS AT 18:06:40 ON THURSDAY, NOVEMBER 20, 2008
IEF236I ALLOC. FOR zosuserB TEST
IEF237I 0A83 ALLOCATED TO JOBLIB
IEF237I 0A83 ALLOCATED TO STEPLIB
CSV003I REQUESTED MODULE TEST NOT FOUND
CSV028I ABEND806-04 JOBNAME=zosuserB STEPNAME=TEST
IEA995I SYMPTOM DUMP OUTPUT
SYSTEM COMPLETION CODE=806 REASON CODE=00000004
TIME=18.06.53 SEQ=00022 CPU=0000 ASID=001A
PSW AT TIME OF ERROR 070C1000 811B5A78 ILC 2 INTC 0D
NO ACTIVE MODULE FOUND
NAME=UNKNOWN
DATA AT PSW 011B5A72 - 8400181E 0A0D18FB 180C181D
AR/GR 0: 9196DFDE/00001E00 1: 00000000/84806000
2: 00000000/00FDDD68 3: 00000000/00000000
4: 00000000/00000000 5: 00000000/008FF548
6: 00000000/000000FF 7: 00000000/00000000
8: 00000000/008C1250 9: 00000000/011B5F4C
A: 00000000/00000000 B: 00000000/00000004
C: 00000000/00000000 D: 00000000/008C1250
E: 00000000/84806000 F: 00000002/00000004
END OF SYMPTOM DUMP
IEF472I zosuserB TEST - COMPLETION CODE - SYSTEM=806 USER=0000 REASON=00000004
IEF285I zosuser.TEST.STEPLIB KEPT
IEF285I VOL SER NOS= Z9SYS1.
IEF373I STEP/TEST /START 2008325.1806
IEF374I STEP/TEST /STOP 2008325.1806 CPU 0MIN 00.05SEC SRB 0MIN 00.00SEC VIRT 4K SYS 256K EXT 0K SYS 10600K
IEF285I zosuser.TEST.JOBLIBB KEPT
IEF285I VOL SER NOS= Z9SYS1.
IEF375I JOB/zosuserB/START 2008325.1806
IEF376I JOB/zosuserB/STOP 2008325.1806 CPU 0MIN 00.05SEC SRB 0MIN 00.00SEC
Code:
1 J E S 2 J O B L O G -- S Y S T E M S Y S 1 -- N O D E N 1
0
18.26.48 JOB00052 ---- THURSDAY, 20 NOV 2008 ----
18.26.48 JOB00052 IRR010I USERID zosuser IS ASSIGNED TO THIS JOB.
18.26.48 JOB00052 ICH70001I zosuser LAST ACCESS AT 18:06:53 ON THURSDAY, NOVEMBER 20, 2008
18.26.48 JOB00052 $HASP373 zosuserB STARTED - INIT 1 - CLASS A - SYS SYS1
18.26.48 JOB00052 IEF403I zosuserB - STARTED - TIME=18.26.48
18.26.48 JOB00052 +TEST - JUST A STUPID WTO
18.26.48 JOB00052 IEF404I zosuserB - ENDED - TIME=18.26.48
18.26.48 JOB00052 $HASP395 zosuserB ENDED
0------ JES2 JOB STATISTICS ------
- 20 NOV 2008 JOB EXECUTION DATE
- 7 CARDS READ
- 36 SYSOUT PRINT RECORDS
- 0 SYSOUT PUNCH RECORDS
- 2 SYSOUT SPOOL KBYTES
- 0.00 MINUTES EXECUTION TIME
1 //zosuserB JOB (ACCT#),'TEST',NOTIFY=&SYSUID, JOB00052
// CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1)
//* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
//*
IEFC653I SUBSTITUTION JCL - (ACCT#),'TEST',NOTIFY=zosuser,CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1)
2 //JOBLIB DD DISP=SHR,DSN=zosuser.TEST.JOBLIBB
3 //TEST EXEC PGM=TEST
//*TEPLIB DD DISP=SHR,DSN=zosuser.TEST.STEPLIB
ICH70001I zosuser LAST ACCESS AT 18:06:53 ON THURSDAY, NOVEMBER 20, 2008
IEF236I ALLOC. FOR zosuserB TEST
IEF237I 0A83 ALLOCATED TO JOBLIB
TEST - JUST A STUPID WTO
IEF142I zosuserB TEST - STEP WAS EXECUTED - COND CODE 0000
IEF373I STEP/TEST /START 2008325.1826
IEF374I STEP/TEST /STOP 2008325.1826 CPU 0MIN 00.02SEC SRB 0MIN 00.00SEC VIRT 8K SYS 248K EXT 0K SYS 10564K
IEF285I zosuser.TEST.JOBLIBB KEPT
IEF285I VOL SER NOS= Z9SYS1.
IEF375I JOB/zosuserB/START 2008325.1826
IEF376I JOB/zosuserB/STOP 2008325.1826 CPU 0MIN 00.02SEC SRB 0MIN 00.00SEC
Joined: 06 Jun 2008 Posts: 8696 Location: Dubuque, Iowa, USA
Enrico -- I have to agree with you; revel is wrong in thinking the JOBLIB is searched if there's a STEPLIB. I've seen too many cases where the JOBLIB is ignored when a STEPLIB is included to think the manual is wrong here.
Joined: 23 Nov 2006 Posts: 19244 Location: Inside the Matrix
Hello,
Devil's Advocate here. . . .
What are the odds that there is some exit/add-on (purchased or "own-code") that traps the 806 when there is a steplib and uses the joblib if there is one?
My experience from many, many systems is as Enrico, Robert, and the manual have said - when there is a steplib, joblib is ignored for that step.
Joined: 22 Apr 2006 Posts: 6250 Location: Mumbai, India
Hi,
Was reading just other Manual:
Quote:
The STEPLIB DD statement is used to identify a program library to search first when attempting to locate programs executed during the job step. The STEPLIB can be placed anywhere in the step's JCL. More than one program library can be concatenated after the first one on a STEPLIB.
If a STEPLIB DD is specified in a job that also has a JOBLIB, the STEPLIB takes precedence when searching for a program.
Revel,
You need to prove this
Quote:
I completly disagree with above statement, Try to execute programs which is in JOBLIB and SYSTEM Default Library by having diffrent version. Try to find whether JCL has pick up which version ie either from JOBLIB or SYSTEM Default Library(Have STEPLIB, JOBLIB in JCL)..(I have tested this).. :o)
post something like Enrico did, we are not against you - at times we were called as "tough public" though.
Joined: 22 Apr 2006 Posts: 6250 Location: Mumbai, India
Hello again,
The program search order for MVS uses the following program libraries in the order given:
1. JOB Pack Area (already loaded programs)
2. Private task library, if specified.
3. STEPLIB library, if specified.
4. JOBLIB library, if specified, AND no STEPLIB is specified
5. Link Pack Area (PLPA)
6. System Link List (i.e., SYS1.LINKLIB and the data sets concatenated to it).