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

Fileaid compare layout concatenation problem


IBM Mainframe Forums -> Compuware & Other Tools
Post new topic   Reply to topic
View previous topic :: View next topic  
Author Message
niks_jude
Warnings : 1

Active User


Joined: 01 Dec 2006
Posts: 144
Location: Mumbai

PostPosted: Sat Oct 27, 2012 2:49 am
Reply with quote

Following is how my fileaid step looks like which is part of a PROC. In some cases I do not pass the member name and pass the library name in XXPY symbolic in DD01RL. Now I have a requirement to pass the exact copybook member here which it is able to take but without the second library in concatenation. So i tried dummy but it abends (even passed DCB of LRECL=80, RECFM=FB with the dummy but did not work).

Code:
//COMPARE   EXEC PGM=FILEAID,REGION=6M
//SYSPRINT DD  SYSOUT=*
//SYSLIST  DD  DSN=CKT.ALTxxxx.&DSN..CMP,
//             DISP=(NEW,CATLG,DELETE),
//             UNIT=&UNIT,
//             SPACE=&SPACE,
//             DCB=(SYS2.DSCB,RECFM=FB,LRECL=133,BLKSIZE=133)
//DD01     DD  DISP=SHR,DSN=CKT.&OLDDD..&DSN
//DD01C    DD  DISP=SHR,DSN=CKT.&NEWDD..&DSN
//DD01CP   DD  DISP=SHR,DSN=CKT.xxxx.FILEAID.COMPARE.&FADSN
//DD01RL   DD  DISP=SHR,DSN=&XXCPY
//*        DD  DISP=SHR,DSN=XX.BASE00.CPY
Back to top
View user's profile Send private message
dbzTHEdinosauer

Global Moderator


Joined: 20 Oct 2006
Posts: 6966
Location: porcelain throne

PostPosted: Sat Oct 27, 2012 3:47 am
Reply with quote

//*
Back to top
View user's profile Send private message
niks_jude
Warnings : 1

Active User


Joined: 01 Dec 2006
Posts: 144
Location: Mumbai

PostPosted: Sat Oct 27, 2012 4:22 am
Reply with quote

Sorry again, it can be seen as // without comment (in my test i ran commenting it, so that I can get rid of the problem.)
Back to top
View user's profile Send private message
dbzTHEdinosauer

Global Moderator


Joined: 20 Oct 2006
Posts: 6966
Location: porcelain throne

PostPosted: Sat Oct 27, 2012 5:23 am
Reply with quote

well, remove the comment
and provide us with the jes expansion of the PROC
with your override problem
so we can help you.
Back to top
View user's profile Send private message
niks_jude
Warnings : 1

Active User


Joined: 01 Dec 2006
Posts: 144
Location: Mumbai

PostPosted: Sat Oct 27, 2012 8:16 am
Reply with quote

This is the error I am getting -
Code:
ER048-OPEN ERROR 013-64 WAS ENCOUNTERED ON DD01RL   SQ.BASE00.CPY
COMPARE FUNCTION PROCESSING FOR DD01 HAS ENDED                           RC=8


And this is the expansion from JES

Code:
++COMPARE   EXEC PGM=FILEAID,REGION=6M
++SYSPRINT DD  SYSOUT=*
++SYSLIST  DD  DSN=CKT.ALXXXXX.&DSN..CMP,
++             DISP=(NEW,CATLG,DELETE),
++             UNIT=&UNIT,
++             SPACE=&SPACE,
++             DCB=(SYS2.DSCB,RECFM=FB,LRECL=133,BLKSIZE=133)
IEFC653I SUBSTITUTION JCL - DSN=CKT.ALT4312.PXRLCFAD.HOLD.CMP,DISP=(NEW,CATLG,DE
(200,100),RLSE),DCB=(SYS2.DSCB,RECFM=FB,LRECL=133,BLKSIZE=133)
++DD01     DD  DISP=SHR,DSN=CKT.&OLDDD..&DSN
IEFC653I SUBSTITUTION JCL - DISP=SHR,DSN=CKT.XXXXXX0B.PXRLCFAD.HOLD
++DD01C    DD  DISP=SHR,DSN=CKT.&NEWDD..&DSN
IEFC653I SUBSTITUTION JCL - DISP=SHR,DSN=CKT.XXXXXXXX0A.PXRLCFAD.HOLD
++DD01CP   DD  DISP=SHR,DSN=CKT.XXXXX.FILEAID.COMPARE.&FADSN
IEFC653I SUBSTITUTION JCL - DISP=SHR,DSN=CKT.XXXXXXX.FILEAID.COMPARE.SDCFAD.SQCFFA
//COMPARE.DD01RL   DD  DISP=SHR,DSN=&SQCPY(SQCFFACT)
IEFC653I SUBSTITUTION JCL - DISP=SHR,DSN=XX.BASE00.CPY(SQCFFACT)
+/DD01RL   DD  DISP=SHR,DSN=&SQCPY
IEFC653I SUBSTITUTION JCL - DISP=SHR,DSN=XX.BASE00.CPY
++         DD  DUMMY,DISP=SHR,DSN=XX.BASE00.CPY
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: Sat Oct 27, 2012 8:31 am
Reply with quote

Hello,

Why have you not referred to the Sysgtem messages for the 013 and then to the manual for the IRC141I (that the 013 abend mentions)? Both the z/OS System Codes and the z/OS System Messages (you want VOL VII, i believe) are available via the IBM Manuals link at the top of the page.

Read the explanaton of the -64 in the documentation and post back here if something is not clear.

You really need to spend some time learning how to do the basic research for abends. All of the new people in the organizations i support learn this in less than a year. Actually, by the time they are working for 2 years, they are helping the new people learn.
Back to top
View user's profile Send private message
niks_jude
Warnings : 1

Active User


Joined: 01 Dec 2006
Posts: 144
Location: Mumbai

PostPosted: Sat Oct 27, 2012 10:30 am
Reply with quote

This is what I had got but did not make sense to me why it is going to open a dummy dataset. I thought dummy would be treated as an empty file in concatenation.
Code:
64        An OPEN macro instruction was issued for a dummy data set using
          an access method other than QSAM or BSAM. Correct the DD
          statement to specify a real data set, or access the data set
          using BSAM or QSAM.

So what I did was do this assuming the DCB properties it was not able to match with the member it is concatenation with. I gave everything exactly same as the PDS it is in just DSORG=PS.

Code:
DD  DUMMY,DCB=(LRECL=80,DSORG=PS,RECFM=FB,BLKSIZE=16000)

I am not sure what is the turnaround for this because I want to use the same PROC for when no member is input and when there is override of member.
Back to top
View user's profile Send private message
PeterHolland

Global Moderator


Joined: 27 Oct 2009
Posts: 2481
Location: Netherlands, Amstelveen

PostPosted: Sat Oct 27, 2012 1:20 pm
Reply with quote

From the JCL manual :

Use the DUMMY parameter to specify that:
 No device or external storage space is to be allocated to the data set.
 No disposition processing is to be performed on the data set.
 For BSAM and QSAM, no input or output operations are to be performed on the data set.
 Code the DCB parameter, if needed. If the program does not supply all the data control block information, make sure that the DCB parameter supplies the missing information.

You are using a sequential dataset, concatenated with a PDS. So there a not matching DCB values, and a PDS will be processed by BPAM (not BSAM or QSAM).
Back to top
View user's profile Send private message
niks_jude
Warnings : 1

Active User


Joined: 01 Dec 2006
Posts: 144
Location: Mumbai

PostPosted: Sat Oct 27, 2012 1:42 pm
Reply with quote

Code:
//COMPARE.DD01RL   DD  DISP=SHR,DSN=&SQCPY(SQCFFACT)
//         DD  DUMMY,DCB= 
              (LRECL=80,RECFM=FB,DSORG=PS,BLKSIZE=16000)


This is exactly what I am doing its a member rather than PDS in first concatenation when I am facing the problem. The DCB information matches exactly with PDS except DSORG but since I am using a member I believe I have to use DSORG=PS on DUMMY. Will it still be BPAM if its a PDS member?

I ran a SORT with the same copybook member and a DUMMY concatenation (without even passing the DCB) and it went fine. So it looks like some limitation of file-aid?
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: Sun Oct 28, 2012 9:14 am
Reply with quote

Hello,

Sort may be more forgiving than fileaid. . . What you have coded is documented is not valid per the manuals.

You might copy the member to a temporary qsam dataset and then concatenate the 2 . . .
Back to top
View user's profile Send private message
niks_jude
Warnings : 1

Active User


Joined: 01 Dec 2006
Posts: 144
Location: Mumbai

PostPosted: Sun Oct 28, 2012 1:00 pm
Reply with quote

Fine i was assuming that PDS member would be treated as a PS file and i can just add a dummy PS to it, so only the copybook would be left. A little strange to know this limitation though.

I cant copy to QSAM as I want to use this PROC for dual purposes. I will think of something else.
Back to top
View user's profile Send private message
PeterHolland

Global Moderator


Joined: 27 Oct 2009
Posts: 2481
Location: Netherlands, Amstelveen

PostPosted: Sun Oct 28, 2012 2:13 pm
Reply with quote

Are you using the member name in your DD01RL (lay out library) also
in your control statements? Like LAYOUT=mbr or MAP=mbr?
Back to top
View user's profile Send private message
niks_jude
Warnings : 1

Active User


Joined: 01 Dec 2006
Posts: 144
Location: Mumbai

PostPosted: Mon Oct 29, 2012 12:14 am
Reply with quote

Yes it is there. I do not understand this much but in some cases they are passing the exact copybooks and in some cases they are just passing library as override. Looking at the layouts, the layout has the copybook name defined. I cannot understand what they are achieving by passing a copybook name, looks like you mean to say it will pick it up from the library concatenation. But since I did not want to take any chances as this is a very important job but still wanted to change it have symbolics and concatenations as part of my project, was trying to keep it the same way as current job.

Code:
*   SYNC/KEY OPTIONS
0000 OLD_SYNC/KEY_MEMBER=XXCFFACT,
                  LAYOUT_NAME=FINANCIAL-ACTIVITY
0000 SYNC/KEY001:OLD_NAME=REFERENCE-CODE,OLD_POSITION=00001,
                 SORTED=YES,SEQUENCE=ASCENDING
*
*   COMPARE FIELDS SET 0001
0001 OLD_LAYOUT_MEMBER=xxCFFACT,
         LAYOUT_NAME=xxxx-FINANCIAL-ACTIVITY


Now i have following concatenation

&XXCPY
XX.BASE00.CPY

earlier they just had one library and they used to override with library or library(member) in some cases.
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: Mon Oct 29, 2012 4:09 am
Reply with quote

Hello,

Quote:
Fine i was assuming that PDS member would be treated as a PS file and i can just add a dummy PS to it, so only the copybook would be left. A little strange to know this limitation though.
In most situations it Can be read as a "PS file". Your problem is Not the pds, but rather the dd that follows it?

Quote:
I cant copy to QSAM as I want to use this PROC for dual purposes.
I believe you can . . . Why would copying the member Not work for "dual puropses".

Suggest you invest some time in learning/re-learning how these basic concepts can help you.
Back to top
View user's profile Send private message
niks_jude
Warnings : 1

Active User


Joined: 01 Dec 2006
Posts: 144
Location: Mumbai

PostPosted: Mon Oct 29, 2012 10:04 am
Reply with quote

I cannot copy because in one case I do not have any member at all.

One case

Code:
DD01RL DD DSN=XX.TEST.CPY
             DD DSN=XX.PROD.CPY

Second case

Code:
DD01RL DD DSN=XX.TEST.CPY(MEM)
             DD DSN=XX.PROD.CPY(trying to dummy this)

Earlier the first test library concatenation was not there so it worked. But now the override in case of MEM does not work but I have to somehow dummy it.

Peterholland seems to have got my problem.
Back to top
View user's profile Send private message
PeterHolland

Global Moderator


Joined: 27 Oct 2009
Posts: 2481
Location: Netherlands, Amstelveen

PostPosted: Mon Oct 29, 2012 11:21 am
Reply with quote

My guess is, the moment FILEAID sees a control statement with a lay-out member, it is going to do BPAM access. And that is not possible on a sequential dataset (e.g. pds(mbr)). So your 013 abend is not created by your dummy dd statement.
Back to top
View user's profile Send private message
niks_jude
Warnings : 1

Active User


Joined: 01 Dec 2006
Posts: 144
Location: Mumbai

PostPosted: Mon Oct 29, 2012 12:07 pm
Reply with quote

I guess that is the case, i will not do this in production but will try removing the member names from control card and see what happens. I guess they originally decided to pass the member name because they did not want to mention it in the control card - not sure why they did this kind of different coding?
Back to top
View user's profile Send private message
PeterHolland

Global Moderator


Joined: 27 Oct 2009
Posts: 2481
Location: Netherlands, Amstelveen

PostPosted: Mon Oct 29, 2012 12:15 pm
Reply with quote

Im almost 100% sure FILEAID is not going to work without giving the layout names in its control statements.
Back to top
View user's profile Send private message
niks_jude
Warnings : 1

Active User


Joined: 01 Dec 2006
Posts: 144
Location: Mumbai

PostPosted: Mon Oct 29, 2012 12:42 pm
Reply with quote

Then i am curious what is the use of passing a member name instead of whole library if control card is going to have it? It is going to search the copybook in the library and use the same.
Back to top
View user's profile Send private message
PeterHolland

Global Moderator


Joined: 27 Oct 2009
Posts: 2481
Location: Netherlands, Amstelveen

PostPosted: Mon Oct 29, 2012 12:51 pm
Reply with quote

I don't see any use for it, and also FILEAID doesnt. Its not designed to work with member names. What if there are 10 control statements with different layout names?
So you have to find another solution, maybe your sysin using a symbolic dsname for different sets of control statements.
Back to top
View user's profile Send private message
niks_jude
Warnings : 1

Active User


Joined: 01 Dec 2006
Posts: 144
Location: Mumbai

PostPosted: Tue Oct 30, 2012 1:04 pm
Reply with quote

Fine I will try as it looks like but I tried once without the copybook member name and it did work. I was just worried if I am not messing up with anything as its a very important job.
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 Oct 30, 2012 9:10 pm
Reply with quote

Hello,

Then it needs to be tested for "everything" (actually everything needs thorough testing - not just that it runs once) to ensure no production problems later.

Have co-workers/team lead suggest ways to try to "break" it . . .
Back to top
View user's profile Send private message
niks_jude
Warnings : 1

Active User


Joined: 01 Dec 2006
Posts: 144
Location: Mumbai

PostPosted: Wed Oct 31, 2012 2:34 am
Reply with quote

Not many people are aware of it, so not sure how to break it, and this is the reason I was looking for the turn around to still have the concatenation and make it work as earlier.
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 -> Compuware & Other Tools

 


Similar Topics
Topic Forum Replies
No new posts Search two or more word with FILEAID Compuware & Other Tools 15
No new posts Compare only first records of the fil... SYNCSORT 7
No new posts Map Vols and Problem Dataset All Other Mainframe Topics 2
No new posts Compare two files with a key and writ... SYNCSORT 3
No new posts Compare latest 2 rows of a table usin... DB2 1
Search our Forums:

Back to Top