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

Abend ICE185A with Joinkeys


IBM Mainframe Forums -> DFSORT/ICETOOL
Post new topic   Reply to topic
View previous topic :: View next topic  
Author Message
Ian I

New User


Joined: 24 Oct 2011
Posts: 3
Location: USA

PostPosted: Tue Oct 25, 2011 3:36 pm
Reply with quote

Hi,

I have requirement to compare key information from two input files and write the matched records in third file and unmatched records in fourth file.
The key from 1st input file s in packed decimal format whereas in second input file it is present as numeric.

File 1:
Acnt num (1: 6) packed decimal.
acnt info (7: 100) char

Total logical rec length 100.

File 2:
Acnt num 1: 10 num
Acnt mon info 11:200
Total logical rec length 200.

Output report 1: only matched acount numbers
output report 2: unmatched acount numbers

I have written following jcl to cater to this requirement. In my shop we are using DFSORT.
Code:

//PS020    EXEC PGM=SORT                                 
//IN1      DD DSN=infile1,DISP=SHR                                       
//IN2      DD DSN=infile2,DISP=SHR                                       
//OUT12    DD DSN=outfile12,DISP=(NEW,CATLG,DELETE),                       
//         UNIT=SYSDA,                                   
//         VOL=SER=PROD01,                               
//         SPACE=(CYL,(50,105),RLSE),                     
//         DCB=(RECFM=FB,LRECL=10,BLKSIZE=0)             
//OUT2     DD DSN=outfile2,DISP=(NEW,CATLG,DELETE),                       
//         UNIT=SYSDA,                                   
//         VOL=SER=PROD01,                               
//         SPACE=(CYL,(50,105),RLSE),                     
//         DCB=(RECFM=FB,LRECL=10,BLKSIZE=0)             
//SYSOUT   DD SYSOUT=*                                   
//JNF1CNTL DD *
  INREC OVERLAY=(1:1,6,PD,TO=ZDF,LENGTH=10)           
/*
//SYSIN    DD *
  JOINKEYS F1=IN1,FIELDS=(1,10,A)                             
  JOINKEYS F2=IN2,FIELDS=(1,10,A)                           
  JOIN UNPAIRED,F1,F2                                             
  REFORMAT FIELDS=(F1:1,10,F2:1,10,?)                 
  OPTION COPY                                                     
  OUTFIL FNAMES=out12,INCLUDE=(21,1,CH,EQ,C'B'),BUILD=(1,10) 
  OUTFIL FNAMES=out2,INCLUDE=(21,1,CH,EQ,C'2'),BUILD=(1,10) 
/*



but this JCL is abending with ICE185A U1094 abend. Following is the message found in spool in JNF1JMSG

Code:

ICE185A 0 AN U1094 ABEND WAS ISSUED BY DFSORT, ANOTHER PROGRAM OR AN EXIT (PHASE S 1)       


All my efforts to fix this are in vain. Can someone please help me out.

Thanks
Ian
Ps: this is my first post, if I have violeted any rules of the forum then please excuse me.
Back to top
View user's profile Send private message
enrico-sorichetti

Superior Member


Joined: 14 Mar 2007
Posts: 10873
Location: italy

PostPosted: Tue Oct 25, 2011 6:58 pm
Reply with quote

little can be done from here ...
did You read the DFSORT manuals for Your DFSORT version/release...

starting from
www-03.ibm.com/systems/z/os/zos/bkserv/index.html


here is a hint from
publibz.boulder.ibm.com/cgi-bin/bookmgr_OS390/BOOKS/ICE1CM30/CCONTENTS?SHELF=ICE1SH31&DN=SC26-7525-03&DT=20080602112935

Quote:
1.1.7.3 User Abends at Run Time


DFSORT issues two types of user abends at run time:

If ABEND or ABSTP is in effect and DFSORT terminates with an error message, you receive a user abend. With installation option ABCODE=MSG (the supplied default), the user abend code is equal to the error message (for example, U0046 for message ICE046A). With installation option ABCODE=n, the user abend code is equal to n (for example, U0010 with ABCODE=10 for any error message). For user abend codes that are error message numbers (ABCODE=MSG), you can refer to the explanation for the corresponding message (for example, the ICE046A Explanation for U0046).
For a tape work data set sort or conventional merge, user abend 0 can be issued if DFSORT terminates with an error message and ABEND or ABSTP is in effect.

If you receive a user abend with a code from 1000 through 1599, DFSORT detected an error in its internal logic. The abend is issued in this case to prevent infinite loops and to aid diagnosis of the problem. Please report such problems to your IBM representative.
In some cases, you may be able to bypass a DFSORT user 1nnn abend by making more storage available to DFSORT; try adding 32 KB by changing the REGION parameter or the MAINSIZE or SIZE value. See z/OS DFSORT Application Programming Guide for ways to specify MAINSIZE and SIZE.
Back to top
View user's profile Send private message
Frank Yaeger

DFSORT Developer


Joined: 15 Feb 2005
Posts: 7129
Location: San Jose, CA

PostPosted: Tue Oct 25, 2011 11:19 pm
Reply with quote

Ian,

Try using REGION=0M for the job, i.e.

Code:

//PS020    EXEC PGM=SORT,REGION=0M
...


If it still doesn't work, send me the complete JES log offline (yaeger@us.ibm.com) and I'll take a look.
Back to top
View user's profile Send private message
Ian I

New User


Joined: 24 Oct 2011
Posts: 3
Location: USA

PostPosted: Tue Nov 01, 2011 12:00 pm
Reply with quote

Frank,

Thanks , keeping unlimited region worked very well.

The issue I am facing now is with joinkeys logic. None of the records are coming in OUT12 file. There is no match found between both input files. I am sure that there are matches present. the key positions are also correctly referred in control cards.

Code:

ICE421I 0 JOINED RECORDS: COUNT=5575277                           
ICE055I 0 INSERT 5575277, DELETE 0                               
ICE054I 0 RECORDS - IN: 0, OUT: 5575277                           
ICE227I 0 OUT12    : DELETED = 5575277, REPORT = 0, DATA = 0     
ICE228I 0 OUT12    : TOTAL IN = 5575277, TOTAL OUT = 0           
ICE227I 0 OUT1     : DELETED = 0, REPORT = 0, DATA = 5575277     
ICE228I 0 OUT1     : TOTAL IN = 5575277, TOTAL OUT = 5575277     
ICE174I 0 NO DATA RECORDS FOR AN OUTFIL DATA SET - RC=0           
ICE052I 0 END OF DFSORT


Do you think of any other reason which might be holding the matching logic from working?[/quote]
Back to top
View user's profile Send private message
Bill Woodger

Moderator Emeritus


Joined: 09 Mar 2011
Posts: 7309
Location: Inside the Matrix

PostPosted: Tue Nov 01, 2011 1:47 pm
Reply with quote

You don't seem to have converted the packed field, yet the JOIN is coded like you have.

You also have INCLUDEs which are not covered in your description. Won't give you the results you describe, depending in values in those positions.
Back to top
View user's profile Send private message
sqlcode1

Active Member


Joined: 08 Apr 2010
Posts: 577
Location: USA

PostPosted: Tue Nov 01, 2011 8:22 pm
Reply with quote

Ian I,
Please show your infile2 account numbers with HEX ON.

Also,
output report 2: unmatched acount numbers --> Unmatched from File-1 or file-2 or both?

Bill,
OP is converting PD to ZDF and hence converting Packed field to ZDF.

//JNF1CNTL DD *
INREC OVERLAY=(1:1,6,PD,TO=ZDF,LENGTH=10)
/*

Thanks,
Back to top
View user's profile Send private message
Bill Woodger

Moderator Emeritus


Joined: 09 Mar 2011
Posts: 7309
Location: Inside the Matrix

PostPosted: Tue Nov 01, 2011 8:39 pm
Reply with quote

Thanks sqlcode, I missed that line completely.
Back to top
View user's profile Send private message
Bill Woodger

Moderator Emeritus


Joined: 09 Mar 2011
Posts: 7309
Location: Inside the Matrix

PostPosted: Tue Nov 01, 2011 9:29 pm
Reply with quote

You're thinking ZDF vs ZD sqlcode?


Presumably, Ian I, you ran it with some test data before hitting the five-and-three-quarter-million records. Check your test data against the real stuff as well.
Back to top
View user's profile Send private message
sqlcode1

Active Member


Joined: 08 Apr 2010
Posts: 577
Location: USA

PostPosted: Tue Nov 01, 2011 10:19 pm
Reply with quote

Bill Woodger wrote:
You're thinking ZDF vs ZD sqlcode?

Presumably, Ian I, you ran it with some test data before hitting the five-and-three-quarter-million records. Check your test data against the real stuff as well.


That is a possibility. However, I just wanted to look at a sample record.

Thanks,
Back to top
View user's profile Send private message
Frank Yaeger

DFSORT Developer


Joined: 15 Feb 2005
Posts: 7129
Location: San Jose, CA

PostPosted: Wed Nov 02, 2011 2:58 am
Reply with quote

Ian,

Here's a DFSORT JOINKEYS job that will do what I think you're asking for:

Code:

//PS020    EXEC PGM=SORT
//IN1      DD DSN=infile1,DISP=SHR
//IN2      DD DSN=infile2,DISP=SHR
//OUT12    DD DSN=outfile12,DISP=(NEW,CATLG,DELETE),
//         UNIT=SYSDA,
//         VOL=SER=PROD01,
//         SPACE=(CYL,(50,105),RLSE),
//         DCB=(RECFM=FB,LRECL=10,BLKSIZE=0)
//OUT2     DD DSN=outfile2,DISP=(NEW,CATLG,DELETE),
//         UNIT=SYSDA,
//         VOL=SER=PROD01,
//         SPACE=(CYL,(50,105),RLSE),
//         DCB=(RECFM=FB,LRECL=10,BLKSIZE=0)
//SYSOUT   DD SYSOUT=*
//JNF1CNTL DD *
  INREC OVERLAY=(21:1,6,PD,TO=ZDF,LENGTH=10)
//JNF2CNTL DD *
  INREC OVERLAY=(21:1,10,ZD,TO=ZDF,LENGTH=10)
/*
//SYSIN    DD *
  JOINKEYS F1=IN1,FIELDS=(21,10,A)
  JOINKEYS F2=IN2,FIELDS=(21,10,A)
  JOIN UNPAIRED,F2
  REFORMAT FIELDS=(F2:1,10,?)
  OPTION COPY
  OUTFIL FNAMES=OUT12,INCLUDE=(11,1,CH,EQ,C'B'),BUILD=(1,10)
  OUTFIL FNAMES=OUT2,INCLUDE=(11,1,CH,EQ,C'2'),BUILD=(1,10)
/*
Back to top
View user's profile Send private message
sqlcode1

Active Member


Joined: 08 Apr 2010
Posts: 577
Location: USA

PostPosted: Wed Nov 02, 2011 3:14 am
Reply with quote

Frank,
Shouldn't position be same, 31 or 21 in OVERLAY or JOINKEYS?

Thanks
Back to top
View user's profile Send private message
Frank Yaeger

DFSORT Developer


Joined: 15 Feb 2005
Posts: 7129
Location: San Jose, CA

PostPosted: Wed Nov 02, 2011 3:36 am
Reply with quote

Yes, it should be 21. I changed it in my job but forgot to repaste it here. icon_sad.gif

I've corrected it in my post above.

Thanks.
Back to top
View user's profile Send private message
Ian I

New User


Joined: 24 Oct 2011
Posts: 3
Location: USA

PostPosted: Wed Nov 02, 2011 10:57 am
Reply with quote

icon_pray.gif icon_pray.gif icon_pray.gif icon_pray.gif icon_pray.gif icon_pray.gif icon_pray.gif

Frank , really appreciated your help. The problem with my job was not converting account number from second input file from ZD to ZDF. Once I inserted this logic, the job worked like a charm.

Also I learned from sqlcode1's message that the position in overlays and joinkeys should be matching. I was not aware of this.

Thanks once again

icon_smile.gif you guys rock.. 36_8_11.gif
Back to top
View user's profile Send private message
sqlcode1

Active Member


Joined: 08 Apr 2010
Posts: 577
Location: USA

PostPosted: Wed Nov 02, 2011 8:30 pm
Reply with quote

Ian I,
It is not that position in overlay and joinkeys should be same but joinkeys expects that each pair of keys for the F1 and F2 files must match with respect to length and order. Keys must be "normalized". However, they can start in different positions.


Refer to JOINKEYS for better understanding of JOINKEYS. Pay close attention to FIELDS under JOINKEYS Statements.

Thanks,
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 -> DFSORT/ICETOOL

 


Similar Topics
Topic Forum Replies
No new posts ISAM and abend S03B JCL & VSAM 10
No new posts Joinkeys - 5 output files DFSORT/ICETOOL 7
No new posts PD not working for unsigned packed JO... DFSORT/ICETOOL 5
No new posts Def PD not working for unsigned packe... JCL & VSAM 3
No new posts Abend S0C4 11 (Page Translation Excep... PL/I & Assembler 16
Search our Forums:

Back to Top