Receiving ICE218A message for shorter length record



IBM's flagship sort product DFSORT for sorting, merging, copying, data manipulation and reporting. Includes ICETOOL and ICEGENER

Receiving ICE218A message for shorter length record

Postby umeshm1985 » Tue Jun 28, 2011 5:21 pm

Hi,

I'm a beginner in DFSORT and appreciate your assistance for the problem I'm facing with shorter records.

Below is the error message, I'm receiving:

ICE218A 6 70 BYTE VARIABLE RECORD IS SHORTER THAN 72 BYTE MINIMUM FOR FIELDS

The JCL I'm trying to use is:


//STEP1 EXEC PGM=ICETOOL                                     
//TOOLMSG DD SYSOUT=*                                           
//PRINT   DD DISP=OLD,DSN=XXXXXXX.XXXXXX.XXXXX             
//DFSMSG  DD SYSOUT=*                                           
//TOOLIN  DD *                                                 
 COPY    FROM(DBUDATA) TO(TEMP0001) USING(RACF)                 
 DISPLAY FROM(TEMP0001) LIST(PRINT) NOHEADER ON(5,5,CH) -       
                                             ON(10,63,CH)       
/*                                                             
//DBUDATA  DD DISP=SHR,DSN=XXXXX.XXXXX.XXXXX           
//TEMP0001 DD DISP=(NEW,DELETE,DELETE),SPACE=(CYL,(100,10,0)), 
//            UNIT=3390                                         
//RACFCNTL DD *                                                 
 OPTION VLSCMP                                                 
 INCLUDE COND=(5,1,CH,EQ,C' ',AND,
              5,2,CH,NE,C'  ',AND,
              5,5,CH,NE,C' EXIT')                             
/*


As you can see, I DO have the VLSCMP option specified (have also tried with VLSHRT and both at a time using OPTION VLSCMP,VLSHRT) but still get same error message.


DBUDATA DD statement contains the input dataset whose Record Format is VARIABLE and Record length is 263 and it consists of following records:

CONTROL ASIS
/****************************************************************/
/* */
/* The RACF Remove ID Utility (IRRRID00) was executed on */
/* 2011-06-27 at 18:03:10. */
/* */
/* This file contains RACF commands that can be used to */
/* identify references to user IDs and group IDs. Residual */
/* references on an access list are deleted with the PERMIT */
/* command. For all other references, commands are created to */
/* change the reference to another value. The default value */
/* is ?id. This allows all references to a particular ID to */
/* be easily changed to another value using a text editor. */
/* */
/* Commands to alter ROLE definitions will be created within */
/* comments for informational purposes, though the actual */
/* updates should be made from TME. The ROLE will not be */
/* updated with a replacement value for a group name. */
/* */
/****************************************************************/

PERMIT 'AAEDI1.EDIV30*' GENERIC ID(WTRKSUB ) DELETE
PERMIT 'AAEDI1.EDIV32*' GENERIC ID(WTRKSUB ) DELETE
PERMIT 'AAEDI1.EDIXXX*' GENERIC ID(WTRKSUB ) DELETE
PERMIT IKJTSO1 CLASS(TSOPROC ) ID(WTRKBTT ) DELETE

/****************************************************************/
/* The following commands delete profiles. You must review */
/* these commands, editing them if necessary, and then remove */
/* the EXIT statement to allow the execution of the commands. */
/****************************************************************/

EXIT

RDELETE SURROGAT WTRKSUB.SUBMIT
DELDSD 'WTRKBTT.YMSEDI.*' GENERIC
DELDSD 'WTRKBTT.*' GENERIC
DELUSER WTRKBTT
DELUSER WTRKCD



PRINT DD statement contains the output dataset whose Record Format is FIXED and Record length is 4096 and the expected output is:

PERMIT 'AAEDI1.EDIV30*' GENERIC ID(WTRKSUB ) DELETE
PERMIT 'AAEDI1.EDIV32*' GENERIC ID(WTRKSUB ) DELETE
PERMIT 'AAEDI1.EDIXXX*' GENERIC ID(WTRKSUB ) DELETE
PERMIT IKJTSO1 CLASS(TSOPROC ) ID(WTRKBTT ) DELETE
RDELETE SURROGAT WTRKSUB.SUBMIT
DELDSD 'WTRKBTT.YMSEDI.*' GENERIC
DELDSD 'WTRKBTT.*' GENERIC
DELUSER WTRKBTT
DELUSER WTRKCD
Best Regards !
umeshm1985
 
Posts: 4
Joined: Mon Jun 27, 2011 9:04 pm
Has thanked: 0 time
Been thanked: 0 time

Re: Receiving ICE218A message for shorter length record

Postby Frank Yaeger » Tue Jun 28, 2011 11:47 pm

ON(10,63,CH) is the cause of your problem. It expects records at least 72 bytes long in TEMP0001 but you have shorter records than that so you get the ICE218A message. VLSCMP and VLSHRT have no effect on this.

The easiest way to fix this is to change your RACFCNTL statements to:

//RACFCNTL DD *                             
   OPTION VLSCMP                               
   INCLUDE COND=(5,1,CH,EQ,C' ',AND,           
               5,2,CH,NE,C'  ',AND,           
               5,5,CH,NE,C' EXIT')           
  INREC IFTHEN=(WHEN=(1,2,BI,LT,72),OVERLAY=(72:X))   


This will ensure that all of your TEMP0001 records are at least 72 bytes long.

I'm not sure if your job is really set up to do what you want, but at least that will get you past the ICE218A message.
It would appear to me that ON(5,5,CH) ON(10,63,CH) will truncate some of the characters you want, so you may have to fix that.
Frank Yaeger - DFSORT Development Team (IBM) - yaeger@us.ibm.com
Specialties: JOINKEYS, FINDREP, WHEN=GROUP, ICETOOL, Symbols, Migration
=> DFSORT/MVS is on the Web at http://www.ibm.com/storage/dfsort
User avatar
Frank Yaeger
Global moderator
 
Posts: 1079
Joined: Sat Jun 09, 2007 8:44 pm
Has thanked: 0 time
Been thanked: 15 times

Re: Receiving ICE218A message for shorter length record

Postby umeshm1985 » Thu Jun 30, 2011 6:24 pm

Hi Frank,

Thanks for your assistance with this.

Your suggestion helped me get rid of the ICE218A message, but as you mentioned the job was not set up correctly to get the expected output.

I have now come up with a new job for this and below is the job:

//INREC   EXEC PGM=SORT                                                 
//SYSOUT   DD SYSOUT=*                                                 
//SORTIN   DD DSN=XXXXXX.XXXXXX.XXXXXX,DISP=SHR                   
//SORTOUT  DD DSN=XXXXXX.XXXXXX.XXXXXX,DISP=OLD                                                               
//SYSIN    DD *                                                         
  OPTION VLSHRT,COPY                                                   
  INCLUDE COND=(5,1,CH,EQ,C' ',AND,                                     
                5,2,CH,NE,C'  ',AND,                                   
                5,5,CH,NE,C' EXIT')                                     
  OUTFIL OUTREC=(1:5,259),VTOF,VLFILL=C' '                             
/*


This job gives me the following error message:

ICE222A 0 259 BYTE FIXED RECORD LENGTH IS NOT EQUAL TO 4096 BYTE LRECL FOR SORTOUT

The SORTIN dataset is of Variable format and it's Record Length is 263 and SORTOUT dataset is of Fixed format and it's record length is 4096.

Appreciate your help in troubleshooting this as well.

Thank You !
Best Regards !
umeshm1985
 
Posts: 4
Joined: Mon Jun 27, 2011 9:04 pm
Has thanked: 0 time
Been thanked: 0 time

Re: Receiving ICE218A message for shorter length record

Postby Frank Yaeger » Thu Jun 30, 2011 9:13 pm

   
   OUTFIL OUTREC=(1:5,259),VTOF,VLFILL=C' '   


This sets up a reformatted output LRECL of 259 which conflicts with your actual output LRECL of 4096. To fix that, use:

    OUTFIL BUILD=(1:5,259,4096:X),VTOF
Frank Yaeger - DFSORT Development Team (IBM) - yaeger@us.ibm.com
Specialties: JOINKEYS, FINDREP, WHEN=GROUP, ICETOOL, Symbols, Migration
=> DFSORT/MVS is on the Web at http://www.ibm.com/storage/dfsort
User avatar
Frank Yaeger
Global moderator
 
Posts: 1079
Joined: Sat Jun 09, 2007 8:44 pm
Has thanked: 0 time
Been thanked: 15 times

Re: Receiving ICE218A message for shorter length record

Postby umeshm1985 » Thu Jun 30, 2011 11:20 pm

Hi Frank,

It just works fine now.

Thank you so much for your assistance :)
Best Regards !
umeshm1985
 
Posts: 4
Joined: Mon Jun 27, 2011 9:04 pm
Has thanked: 0 time
Been thanked: 0 time


Return to DFSORT/ICETOOL/ICEGENER

 


  • Related topics
    Replies
    Views
    Last post