I'm trying to generate load cards alone using FASTUNLOAD from different tablespaces and tables. So that I could use it for the load job later. The problem I'm facing seems to be in the JCL proc generating the load card file in a PDS as a member. Below is my code.
This is the JCL driver program which will be calling the PTI$ULCD proc
This is a PDS 'HXSULL.TEST.LOAD.CARDS', where I want all the load cards to be generated.
Error message after substituting all the values is this
Code:
XXSYSCTL01 DD DSN=&PLIB.(&TS.),
SUBST JCL - DSN=HXSULL.TEST.LOAD.CARDS(INESADDR),
XX DISP=(NEW,CATLG,DELETE),
CAY6020E EXPECTED CONTINUATION NOT RECEIVED
CAY6083E SPACE PARAMETER NOT PROVIDED FOR NEW DIRECT ACCESS DATASET
CAY6081E DISP OF CATLG INVALID FOR "HXSULL.TEST.LOAD.CARDS" - DATA SET
ALREADY CATALOGED
CAY6089E DATA SET "HXSULL.TEST.LOAD.CARDS" IS NOT A PDS
Joined: 22 Apr 2006 Posts: 6250 Location: Mumbai, India
Hi,
This
Code:
CAY6020E EXPECTED CONTINUATION NOT RECEIVED
from the error messages shown in your post says- A statement terminated with a comma-blank sequence or had a non-blank character in column 72. The next statement however, was not a valid continuation statement.
Probably..above is causing this
Code:
SPACE PARAMETER NOT PROVIDED FOR NEW DIRECT ACCESS DATASET
And for this
Code:
CAY6089E DATA SET "HXSULL.TEST.LOAD.CARDS" IS NOT A PDS
Messages is self explanatory. Probably, Data set DSname was specified in a JOBLIB or STEPLIB DD statement or was specified with a member name in parentheses. It is not a partitioned data set (possibly because it was allocated without directory blocks). So the program and member existence checking feature did not attempt to open it.
After this mistake, i check'd the JCL, it seems to be GOOD with no jcl syntax error.
What i am expecting out of the program is
I have created a PDS for the load cards alone. By using the FAST UNLOAD, i want the unload cards to be created in that particular PDS.
The name of the PDS is "HXSULL.TEST.LOAD.CARDS". Which i have mentioned in the DRIVER JCL program, which iam passing to the proc as a symbolic parameter.
The name of the PS file which contains the load cards, will be the TABLESPACENAME. TABLESPACE name also iam passing from the driver program. Which will be specified as "TS=INESADDR"
So, the my idea is, in this PDS "HXSULL.TEST.LOAD.CARDS". PS files will be created having filename as the TABLESPACENAME. Here we are having one table in a tablespace.
I have solved the program, i have made the program to work. Before itself i have mentioned that problem seem to be in this area...
By using this code, i thought the program will automatically create a PS in the specified PDS. But, this particular piece of code seems to be the problem.
How i solved is,
i manually created a EMPTY PS file with the TABLESPACE name in that pds
And replaced the above code with,
Code:
//SYSCTL01 DD DSN=&PLIB.(&TS.), DISP=SHR
By using this code i was able to get the LOAD CARD STATMENTS in the PS file. But, now what iam not able to understand is the defination of
SHR mode - Specifies that the dataset will be used in read mode and other jobs can also access this dataset in the read only mode.
By this defination. my EMPTY PS file in the PDS should have opened in the READ MODE. How is the UNLOAD able to write in it.
Joined: 22 Apr 2006 Posts: 6250 Location: Mumbai, India
Hi,
This is
Quote:
the program will automatically create a PS in the specified PDS
little cofusing for me, probably you wanted to say "member" instead of "PS'.
Quote:
my EMPTY PS file in the PDS should have opened in the READ MODE. How is the UNLOAD able to write in it.
Well, again get your terminologies ritght; it's "Member" insdie a PDS not a "PS", even if you READ this member by some means terminogies doesn't change.
"SHR" behaves differently with PDSs/PDSes, When you specify DISP=SHR for a partitioned data set extended (PDSE) and also specify a member name, then:
- If the member name exists, the member can have one writer or be shared by multiple readers, or
- If the member name does not exist, the member can be added to the data set. Thus, multiple jobs can access different members of the data set and add new members to the data set concurrently -- but concurrent update access to a specific member (or update and read by other jobs) is not valid.
Joined: 23 Nov 2006 Posts: 19244 Location: Inside the Matrix
Hello,
Quote:
When i was given training. I was told "MEMBER" as a PS file
Hopefully, what was said in training was that a member could be accessed as though it was a PS file. This is very different than saying it actually is a PS file.
Quote:
Everybody around here calls it as a PS file.
If they intend to work on the mainframe, they need to learn proper teminology and use it. Possibly the biggest challange in responding to questions here is that the poster has said something "impossible" and different people try to guess at what was really meant.
Quote:
Till now i was thinking, SHR can be used only to share i.e., read-only mode.
Thank You for telling it can also create members
I'd suggest that your organization review many of the basics. SHR cannot create members. . . SHR allows multiple opens of the file. What creates a member (in the case you have in this topic) is the non-existing member named in the JCL along with the OPEN OUTPUT in the program. If the member already existed, it would be overwritten.
When creating members in a pds, it is most common for the pds to have been created previously. When creating members in an existing pds, disp=shr is the normal way to code the jcl (not DISP=(NEW,CATLG,DELETE), ).
Joined: 22 Apr 2006 Posts: 6250 Location: Mumbai, India
Hi,
sushanth bobby wrote:
Sorry about that, PS & PDS confusion.
Not to worry, they say leraning never ends..
Quote:
Here on i will refer PS as MEMBER.
Nah..it's not correct. Physical Sequential Files must not be called as "Member". They can be called as QSAM (Queued Sequential Access Method) on mainframes however.
Further, per me, calling a "Member" as a "PS" is a big NO. "Members" of a PDS/PDSE are just "Members", why to "invent" a new term while the existing one conveys what is needed.
Quote:
Till now i was thinking, SHR can be used only to share i.e., read-only mode.
You were not wrong upto a certain extent, but when it comes to PDSs & you are creating a "New Member" in existing PDS, DISP is applicable for the PDS & not for the member so "SHR" in DISP tells the OS - "this PDS already exists". And obviously if you want to create a new member it can be written to.