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

ICE046A 0 SORT CAPACITY EXCEEDED


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

New User


Joined: 07 Jan 2008
Posts: 98
Location: Hyderabad

PostPosted: Fri Jun 03, 2011 3:50 pm
Reply with quote

Hi,

I have a IMS unload file(RECFM=VB, LRECL=32756,BLKSIZE=32760) as below

INPUT:-
Code:

----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----
********************************* Top of Data *********************************
  SEG01  ABCDE ....
  SEG02  12345 ...
  SEG04  46 ...
  SEG04  50 ...
  SEG01  FGHIJ ....
  SEG02  67890 ...
  SEG04  50 ...
  SEG01  AAAAA ....
  SEG02  11111 ...
  SEG04  46 ...
             


In the above file, the IMS records (i.e., group of segments from SEG01 to SEG04) has to be written to output file When and ever there is a code '46' in segment SEG04 at position 10. So my output would look like below

Output:-
Code:

----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----
********************************* Top of Data *********************************
  SEG01  ABCDE ....
  SEG02  12345 ...
  SEG04  46 ...
  SEG04  50 ...
  SEG01  AAAAA ....
  SEG02  11111 ...
  SEG04  46 ...
             


The order of IMS records (i.e., from SEG01 to SEG04) shouldn't be changed while writing to output file.

I have written the below code inICETOOL to implement the above requirement
Code:

STEP001
------------
//SORTWK01     DD      SPACE=(CYL,(350,1250),RLSE),AVGREC=K,VOL=(,,,95)
//SORTWK02     DD      SPACE=(CYL,(350,1250),RLSE),AVGREC=K,VOL=(,,,95)
//SORTWK03     DD      SPACE=(CYL,(350,1250),RLSE),AVGREC=K,VOL=(,,,95)
//SORTWK04     DD      SPACE=(CYL,(350,1250),RLSE),AVGREC=K,VOL=(,,,95)
//SORTWK05     DD      SPACE=(CYL,(350,1250),RLSE),AVGREC=K,VOL=(,,,95)
//SORTWK06     DD      SPACE=(CYL,(350,1250),RLSE),AVGREC=K,VOL=(,,,95)
//SORTWK07     DD      SPACE=(CYL,(350,1250),RLSE),AVGREC=K,VOL=(,,,95)
//SORTWK08     DD      SPACE=(CYL,(350,1250),RLSE),AVGREC=K,VOL=(,,,95)
//SORTWK09     DD      SPACE=(CYL,(350,1250),RLSE),AVGREC=K,VOL=(,,,95)
//SORTWK10     DD      SPACE=(CYL,(350,1250),RLSE),AVGREC=K,VOL=(,,,95)
//IN01         DD DSN=TEST.IN01,                             
//             DISP=SHR                                               
//OUT01        DD DSN=TEST.OUT01,                             
//             DISP=(NEW,CATLG,DELETE),                               
//             SPACE=(CYL,(500,200),RLSE),VOL=(,,,95)                 
//TOOLIN  DD *                                                         
  SPLICE FROM(IN01) ON(2000,16,ZD) TO(OUT01) WITHALL WITH(1,2023) -   
  KEEPBASE USING(CTL1)                                                 
/*                                                                     
//CTL1CNTL DD *                                                       
  INREC IFTHEN=(WHEN=GROUP,BEGIN=(7,5,CH,EQ,C'ZPO01'),                 
        PUSH=(2000:ID=15)),                                           
       IFTHEN=(WHEN=INIT,OVERLAY=(2016:SEQNUM,8,ZD,RESTART=(2000,16))),
        IFTHEN=(WHEN=(7,5,CH,EQ,C'SEG04',AND,                         
                      14,2,ZD,EQ,46),                                 
                      OVERLAY=(2024:C'Y')),                           
        IFTHEN=(WHEN=NONE,OVERLAY=(2024:C'N'))                         
   SORT FIELDS=(2000,16,ZD,A,2024,1,CH,D)                             
   OUTFIL FNAMES=OUT01 BUILD=(1,2024)                                 
/*                   
                                                 
STEP002
-----------
//IN01         DD DSN=TEST.OUT01,           
//             DISP=SHR                             
//OUT02        DD DSN=TEST.OUT02,           
//             DISP=(NEW,CATLG,DELETE),             
//             SPACE=(CYL,(200,100),RLSE),VOL=(,,,95)
//TOOLIN  DD *                                       
  SORT FROM(IN01) TO(OUT02) USING(CTL2)             
/*                                                   
//CTL2CNTL DD *                                     
     INCLUDE COND=(2024,1,CH,NE,C'N')               
     SORT FIELDS=(2000,16,ZD,A,2016,8,ZD,A)         
     OUTREC BUILD=(1,1999)                           
/*                                                   



Now,
1) My input file has 17791669 rows
2) I am receiving the "ICE046A 0 SORT CAPACITY EXCEEDED" error in STEP001

Below is the error message:
Code:

ICE084I 0 EXCP ACCESS METHOD USED FOR IN01                                     
ICE750I 0 DC 1685230688 TC 0 CS DSVNN KSZ 21 VSZ 21                             
ICE752I 0 FSZ=1685230688 BC  IGN=0 E  AVG=32774 0  WSP=4380055 C  DYN=2742 53216
ICE046A 0 SORT CAPACITY EXCEEDED - RECORD COUNT 16624121                       
ICE253I 0 RECORDS SORTED - PROCESSED: 16624121, EXPECTED: 102896               



Some of the DFSORT options used by default are
Code:

DYNALOC=(SYSDA   ,004)
DYNSPC=256
HIPRMAX=OPTIMAL,DSPSIZE=MAX ,ODMAXBF=2097152


Can you please help me about this error...

Let me know if you need any further details
Back to top
View user's profile Send private message
rajesh1183

New User


Joined: 07 Jan 2008
Posts: 98
Location: Hyderabad

PostPosted: Fri Jun 03, 2011 4:22 pm
Reply with quote

tried increasing the SORT WRK files and output dataset SPACE.. but still getting the same "SORT CAPACITY EXCEEDED" error...
Back to top
View user's profile Send private message
Robert Sample

Global Moderator


Joined: 06 Jun 2008
Posts: 8696
Location: Dubuque, Iowa, USA

PostPosted: Fri Jun 03, 2011 5:09 pm
Reply with quote

1. 17,791,669 records of 1,999 bytes each is over 35 billion bytes, or about 12 3390 mode 3 volumes. Have you discussed this with your site support group? There may not be 10 volumes worth of space available for you to put this file on.

2. VOL=(,,,95) is pretty much useless -- SMS managed data sets are limited to 59 volumes, not 95, and if the data set is not SMS managed the volume count is taken from the UNIT parameter for non-specific disk requests, not the VOL parameter.

3. If you have not talked to your site support group, DO SO NOW! They should have been your FIRST contact and this forum should be your last choice.
Back to top
View user's profile Send private message
Escapa

Senior Member


Joined: 16 Feb 2007
Posts: 1399
Location: IL, USA

PostPosted: Fri Jun 03, 2011 7:00 pm
Reply with quote

first of all I dont understand why you have
SEG04 50 ...
in output file?

Secondly, looks you have opted way complicated way than it should be...
Tell us your ptf level using below thread from Frank
ibmmainframes.com/viewtopic.php?t=33389
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: Fri Jun 03, 2011 10:49 pm
Reply with quote

Quote:
2. VOL=(,,,95) is pretty much useless -- SMS managed data sets are limited to 59 volumes, not 95, and if the data set is not SMS managed the volume count is taken from the UNIT parameter for non-specific disk requests, not the VOL parameter.


Actually, it's more useless than that. DFSORT does NOT support multivolume work data sets. It will only use the first volume. But you can have up to 255 single volume work data sets.
Back to top
View user's profile Send private message
rajesh1183

New User


Joined: 07 Jan 2008
Posts: 98
Location: Hyderabad

PostPosted: Mon Jun 06, 2011 9:53 am
Reply with quote

Quote:

first of all I dont understand why you have
SEG04 50 ...
in output file?


As one of the SEG04 contains code '46' at position 10, the IMS records (i.e., group of segments from SEG01 to SEG04) are written to the output file (including SEG04 50 as this is also in the group)..

And here is the PTF details, which u have asked
Code:

ICE201I H RECORD TYPE


I will try by splitting the file into two in the meanwhile... I can perform above task using SAS also, but want to learn DFSORT.. Hence trying to solve thru DFSORT
Back to top
View user's profile Send private message
rajesh1183

New User


Joined: 07 Jan 2008
Posts: 98
Location: Hyderabad

PostPosted: Mon Jun 06, 2011 10:59 am
Reply with quote

When tried creating the output dataset of STEP001 in TAPE
Code:

UNIT=(TAPE,,DEFER)


I got the "capacity exceeded" message with below record count
Code:

ICE046A 0 SORT CAPACITY EXCEEDED - RECORD COUNT 12640919




When tried creating the output dataset of STEP001 in TAPE and with VOL parameter,
Code:

UNIT=(TAPE,,DEFER),VOL=(,,,95)


I got the same message with different record count
Code:

ICE046A 0 SORT CAPACITY EXCEEDED - RECORD COUNT 16724349



Any specific reason for change in the record count that are processed...??
Back to top
View user's profile Send private message
gcicchet

Senior Member


Joined: 28 Jul 2006
Posts: 1702
Location: Australia

PostPosted: Mon Jun 06, 2011 11:05 am
Reply with quote

Hi,

Code:
ICE046A                                                                       
                                                                             
ICE046A SORT CAPACITY EXCEEDED - RECORD COUNT: n                             
                                                                             
Explanation:  Critical. DFSORT was not able to complete processing with       
the intermediate storage available (Hiperspace or disk work data sets).       
For work data sets with secondary allocation allowed, DFSORT overrides       
system B37 abends and continues processing; this message is issued only       
when no more space is available in Hiperspace or on any allocated work       
data set.                                                                     
                                                                             
Note:  DFSORT uses only the first volume of multi-volume work data sets.     
                                                                             
The count n is either an approximation of the number of records or is the     
total number of records that DFSORT was able to read in before it used all   
of the available intermediate storage.                                       

It has nothing to do with the VOL count.

Gerry
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 Jun 06, 2011 11:09 am
Reply with quote

Hello,

Changing the media and volume count of the output file will have nothing to do with the problem. . . .

The difference in the record counts at the time of the abend is because the runs did not abend at the same place/time.
Back to top
View user's profile Send private message
sqlcode1

Active Member


Joined: 08 Apr 2010
Posts: 577
Location: USA

PostPosted: Mon Jun 06, 2011 8:20 pm
Reply with quote

rajesh1183,
You are changing your VB input file to FB. Is there a reason you do that or you haven't noticed this?

Your job sort cards needs to be rewritten for efficiency but as far as your sort capacity error message is concerned....
My 2 cents, try to remove all of the SORTWK** and add below lines in your sort job. If this doesn't work try to increase to 16/32 and see if this works.
Code:
//DFSPARM  DD  *             
  OPTION DYNALLOC=(SYSDA,08) 
/*                           

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

New User


Joined: 07 Jan 2008
Posts: 98
Location: Hyderabad

PostPosted: Thu Jun 09, 2011 11:47 am
Reply with quote

Hi sqlcode1,

tried with
Code:

//DFSPARM      DD  *       
  OPTION DYNALLOC=(SYSDA,32)
/*                         


Abended at the following record
Code:

ICE253I 0 RECORDS SORTED - PROCESSED: 16828477,
Back to top
View user's profile Send private message
rajesh1183

New User


Joined: 07 Jan 2008
Posts: 98
Location: Hyderabad

PostPosted: Thu Jun 09, 2011 11:58 am
Reply with quote

By the way,
Quote:

Your job sort cards needs to be rewritten for efficiency


can you tell me which statement/technique in my sort card was not efficient..??
Back to top
View user's profile Send private message
sqlcode1

Active Member


Joined: 08 Apr 2010
Posts: 577
Location: USA

PostPosted: Thu Jun 09, 2011 10:12 pm
Reply with quote

rajesh1183,
Quote:
You are changing your VB input file to FB. Is there a reason you do that or you haven't noticed this?
You still did not answer this question but I am going to assume that you want to retain LRECL and RECFM of the input file but just want to omit set of records satisfying your conditions.

Your sample input data and sort card you have shown doesn't match. I don't see any "ZPO01" records in your sample input. If your input file is RECFM=VB, LRECL=32756,BLKSIZE=32760, by using PUSH at 2000 position you are loosing/overwritting some of the data. Also, by using push at the end/middle of the record, you are ruining the very purpose of VB file.

Do you really care for only first 1999 bytes from this input file? If that is the case you may be able to use GROUP function and won't have to use JOINKEYS.

Last try below job to see if this works... Since your input LRECL is VB and 32756, you are playing very close to DFSort's boundary conditions but you may benefit from JOINKEY.
Code:
//STEP0100 EXEC PGM=SORT,REGION=0M                                     
//SYSOUT   DD SYSOUT=*
//SORTDIAG DD DUMMY                                                 
//SORTJNF1 DD DISP=SHR,DSN=YOUR INPUT  VB32756                         
//SORTJNF2 DD DISP=SHR,DSN=YOUR INPUT  VB32756                         
//SORTOUT  DD DSN=YOUR OUTPUT VB32756...                               
//SYSIN    DD *                                                         
  OPTION EQUALS 
  JOINKEYS FILE=F1,FIELDS=(05,8,A),SORTED,NOSEQCK                                     
  JOINKEYS FILE=F2,FIELDS=(22,8,A),SORTED,NOSEQCK                                     
  REFORMAT FIELDS=(F1:1,4,F1:13)                                       
  SORT FIELDS=COPY                                                     
//JNF1CNTL DD *                                                         
  INREC IFTHEN=(WHEN=INIT,BUILD=(1,4,8X,5)),                           
        IFTHEN=(WHEN=GROUP,BEGIN=(15,5,CH,EQ,C'ZPO01'),PUSH=(5:ID=8))   
/*                                                                     
//JNF2CNTL DD *                                                         
  INREC IFTHEN=(WHEN=INIT,BUILD=(1,4,7,9,30:X)),                       
        IFTHEN=(WHEN=GROUP,BEGIN=(5,5,CH,EQ,C'ZPO01'),PUSH=(14:ID=8)), 
        IFTHEN=(WHEN=(5,9,CH,EQ,C'SEG04  46'),OVERLAY=(22:14,8))       
/*                                                                     
//DFSPARM  DD  *                                                       
  OPTION DYNALLOC=(SYSDA,04)                                           
/*                                                                     

OUTPUT
Code:
  ZPO01  ABCDE ....   
  SEG02  12345 ...     
  SEG04  46 ...       
  SEG04  50 ...       
  ZPO01  AAAAA ....   
  SEG02  11111 ...     
  SEG04  46 ...       

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 Need to set RC4 through JCL SORT DFSORT/ICETOOL 5
No new posts How to split large record length file... DFSORT/ICETOOL 10
No new posts JCL sort card - get first day and las... JCL & VSAM 9
No new posts Sort First/last record of a subset th... DFSORT/ICETOOL 7
No new posts how to calculate SUM value for VB fil... DFSORT/ICETOOL 1
Search our Forums:

Back to Top