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

Generating LOAD CARDS using FASTUNLOAD


IBM Mainframe Forums -> CA Products
Post new topic   Reply to topic
View previous topic :: View next topic  
Author Message
sushanth bobby

Senior Member


Joined: 29 Jul 2008
Posts: 1020
Location: India

PostPosted: Mon Sep 01, 2008 4:55 pm
Reply with quote

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.
Code:
                                         
//MYLIB   JCLLIB ORDER=HXSULL.INET.LJ.PROC                             
//*********************************************************************
//*......CREATE LOAD CARDS FOR NOMAD TABLES............................
//*********************************************************************
//SET$ENV  SET ENV=DEVL,SSID=DB2D,DB=INEDATAT                         
//SET$PLIB SET PLIB='HXSULL.TEST.LOAD.CARDS'                           
//*....................................................................
//INESADDR EXEC PTI$ULCD,TS=INESADDR,TB='ADDRESS'                     
//INESANUT EXEC PTI$ULCD,TS=INESANUT,TB='ANNUITANT'                   
//INESEPRL EXEC PTI$ULCD,TS=INESEPRL,TB='EMPLOYMENT_REL'               
//INESAGTC EXEC PTI$ULCD,TS=INESAGTC,TB='INET_AGT_COMM'               
//INESAGTS EXEC PTI$ULCD,TS=INESAGTS,TB='INET_AGT_COMM_SMRY'           


This is the PTI$ULCD proc. The proc uses the parameters from the DRIVER PROGRAM

Code:
//*======= PTI$ULCD (PLATINUM FAST UNLOAD LOADPARM CARDS ONLY) ========
//PTI$ULCD PROC ENV=DEVL                                               
//*....................................................................
//BLD$CARD EXEC PGM=BLD$CARD,COND=(4,LT),                 * SELECT CARD
//         PARM='SELECT * FROM &DB..&TB.; '                           
//CONTROL  DD  DSN=&&SELECT,DISP=(,PASS),                             
//             DCB=(RECFM=FB,LRECL=80,BLKSIZE=27920),                 
//             UNIT=VIO,SPACE=(TRK,(1,1))                             
//SYSOUT   DD  SYSOUT=*                                               
//*....................................................................
//DOIT     EXEC PGM=PTLDRIVM,COND=(4,LT),             * MODEL = MJPTIUT
//         PARM='EP=UTLGLCTL/&SSID,'                                   
//STEPLIB  DD  DISP=SHR,DSN=PLT.POPR.&ENV..LOADLIB                     
//         DD  DISP=SHR,DSN=DB2.POPR.&ENV..SDSNLOAD                   
//         DD  DISP=SHR,DSN=DB2.POPR.&ENV..SDSNEXIT                   
//PTILIB   DD  DISP=SHR,DSN=PLT.POPR.&ENV..LOADLIB                     
//         DD  DISP=SHR,DSN=DB2.POPR.&ENV..SDSNLOAD                   
//         DD  DISP=SHR,DSN=DB2.POPR.&ENV..SDSNEXIT                   
//PTIPARM  DD  DISP=SHR,DSN=PLT.POPR.&ENV..PARMLIB                     
//SYSCTL01 DD  DSN=&PLIB.(&TS.),                                       
//          DISP=(NEW,CATLG,DELETE),                   
//          UNIT=(TEST,10),                           
//          SPACE=(CYL,(100,100),RLSE),               
//          DCB=(RECFM=FB,LRECL=80,BLKSIZE=0,DSORG=PS)
//$ORTPARM DD  DSN=DB2.POPR.PARMLIB(SYNCSORT),DISP=SHR                 
//ABNLIGNR DD  DUMMY                          * SUPPRESS ABENDAID DUMPS
//PTIMSG   DD  SYSOUT=*                                               
//PTIIMSG  DD  SYSOUT=*                                               
//PTIMSG01 DD  SYSOUT=*                                               
//SYSOUT   DD  SYSOUT=*                                               
//SYSUDUMP DD  SYSOUT=*                                               
//*SYSIN    DD  DSN=DB2.POPR.PARMLIB(&TYP),DISP=SHR                   
//SYSIN    DD  DSN=HXSULL.INET.LJ.LOADPARM(PTI$ULCD),DISP=SHR         
//         DD  DSN=&&SELECT,DISP=(OLD,DELETE)                         
//*======= PTI$ULCD (PLATINUM FAST UNLOAD LOADPARM CARDS ONLY) ========
//*                                                                   

This is the SYSIN UNLOAD PARMETERS

Code:
FASTUNLOAD                   
LOAD-CONTROL FASTLOAD,ONLY   
OUTPUT-FORMAT FIXED         

The error happens to be in this place in PROC
Code:
//SYSCTL01 DD  DSN=&PLIB.(&TS.),                                       
//          DISP=(NEW,CATLG,DELETE),                   
//          UNIT=(TEST,10),                           
//          SPACE=(CYL,(100,100),RLSE),               
//          DCB=(RECFM=FB,LRECL=80,BLKSIZE=0,DSORG=PS)

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               
Back to top
View user's profile Send private message
Anuj Dhawan

Superior Member


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

PostPosted: Mon Sep 01, 2008 5:34 pm
Reply with quote

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.
Back to top
View user's profile Send private message
sushanth bobby

Senior Member


Joined: 29 Jul 2008
Posts: 1020
Location: India

PostPosted: Mon Sep 01, 2008 6:09 pm
Reply with quote

HI,
For this mistake i made is i left a comma,
Code:
CAY6020E EXPECTED CONTINUATION NOT RECEIVED 


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...
Code:
//SYSCTL01 DD  DSN=&PLIB.(&TS.),                                       
//          DISP=(NEW,CATLG,DELETE),                   
//          UNIT=(TEST,10),                           
//          SPACE=(CYL,(100,100),RLSE),               
//          DCB=(RECFM=FB,LRECL=80,BLKSIZE=0,DSORG=PS)

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.
Back to top
View user's profile Send private message
Anuj Dhawan

Superior Member


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

PostPosted: Mon Sep 01, 2008 7:02 pm
Reply with quote

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.
Back to top
View user's profile Send private message
sushanth bobby

Senior Member


Joined: 29 Jul 2008
Posts: 1020
Location: India

PostPosted: Mon Sep 01, 2008 7:47 pm
Reply with quote

Sorry about that, PS & PDS confusion.

When i was given training. I was told "MEMBER" as a PS file. Everybody around here calls it as a PS file.

Here on i will refer PS as MEMBER.

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.
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: Tue Sep 02, 2008 1:15 am
Reply with quote

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), ).
Back to top
View user's profile Send private message
Anuj Dhawan

Superior Member


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

PostPosted: Tue Sep 02, 2008 12:19 pm
Reply with quote

Hi,
sushanth bobby wrote:
Sorry about that, PS & PDS confusion.
Not to worry, they say leraning never ends.. icon_wink.gif

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.
Back to top
View user's profile Send private message
sushanth bobby

Senior Member


Joined: 29 Jul 2008
Posts: 1020
Location: India

PostPosted: Tue Sep 02, 2008 12:24 pm
Reply with quote

Thank You Again.
Iam just beginner & Iam Learning.
Back to top
View user's profile Send private message
Anuj Dhawan

Superior Member


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

PostPosted: Tue Sep 02, 2008 12:30 pm
Reply with quote

You're welocme.. icon_smile.gif

Quote:
Iam just beginner & Iam Learning.
Good, you are on right track.. icon_smile.gif

- Ad
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 -> CA Products

 


Similar Topics
Topic Forum Replies
No new posts Load new table with Old unload - DB2 DB2 6
No new posts How to load to DB2 with column level ... DB2 6
No new posts REASON 00D70014 in load utility DB2 6
No new posts DB2 Load - Sort Or order BY DB2 1
No new posts DB2 Load - NUMRECS DB2 3
Search our Forums:

Back to Top