MVSFORUMS.com Forum Index MVSFORUMS.com
A Community of and for MVS Professionals
 
 FAQFAQ   SearchSearch   Quick Manuals   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Having issue with VLLONG

 
Post new topic   Reply to topic   printer-friendly view    MVSFORUMS.com Forum Index -> Utilities
View previous topic :: View next topic  
Author Message
amit4u79
Beginner


Joined: 24 Oct 2005
Posts: 109
Topics: 36
Location: India

PostPosted: Fri Feb 03, 2006 5:13 am    Post subject: Having issue with VLLONG Reply with quote

Hi,
I just read in the DFSORT manual that if my input record is larger than output data set LRECL i need to use OPTION VLLONG so that DFSORT will truncate and write the record to output data set.
Now, I have a cobol pgm which is reading the SMF VSAM data set, which has a max LRECL of 32767, and writing it to a dsn associated with SORTOUT DD name. So I added a SORTCNTL DD * card with OPTION VLLONG. But even then Sort gives me a rc of 16 and pgm abends with U0333. Below is my step in JCL:
Code:

//KOGSTCOB EXEC PGM=KOGSTCOB                 
//STEPLIB  DD DISP=SHR,DSN=AOAJI.TEST.LOAD   
//         DD DISP=SHR,DSN=SYS1.C104.SCEERUN
//BYHOUR   DD SYSOUT=*                       
//SYSOUT   DD SYSOUT=*                       
//SYSUDUMP DD SYSOUT=*                       
//SMFINP   DD DISP=SHR,DSN=SYS1.ST06.SMFDS2 
//SORTOUT  DD DISP=(NEW,CATLG,DELETE),       
//  DSN=AOAJI.TEST.SMFSTATS,                 
//  DCB=(LRECL=1024,BLKSIZE=0,RECFM=VB),     
//  SPACE=(TRK,(15,15),RLSE),               
//  UNIT=SYSDA                               
//SORTWK01 DD UNIT=SYSDA,SPACE=(CYL,(1))     
//SORTCNTL  DD *                             
  OPTION VLLONG                             
/*                                 

...and this is the option in SORT as it is using E15 register :
ICE133I 0 OPTIONS: HIPRMAX=OPTIMAL,DSPSIZE=MAX ,ODMAXBF=0,SOLRF=Y,VLLONG=Y,..

...which confirms option is set to VLLONG but this gives an error as below :

ICE217A 2 27050 BYTE VARIABLE RECORD IS LONGER THAN 294 BYTE MAXIMUM FOR E15

ERROR RETURN FROM SORT                - SORT RETURN =  0016

....and this is the error shown in JESMSGLG:

-ADCAFOPW          KOGSTCOB U0333 

Kindly help on how may I read the VSAM dataset and write it to my dsn which has an LRECL of 1024 as shown in JCL above.

I am lost kindly help.

Regards,
- Amit.
_________________
I did not fail; I have found 10,000 ways that would not work - Albert Einstein.
Back to top
View user's profile Send private message Send e-mail Yahoo Messenger
kolusu
Site Admin
Site Admin


Joined: 26 Nov 2002
Posts: 12377
Topics: 75
Location: San Jose

PostPosted: Fri Feb 03, 2006 6:53 am    Post subject: Reply with quote

Remove this line on the SORTOUT definition and re-run the job.

Quote:

// DCB=(LRECL=1024,BLKSIZE=0,RECFM=VB),


Btw here is the link for a detailed explanation of the error ICE217A

http://publibz.boulder.ibm.com/cgi-bin/bookmgr_OS390/BOOKS/ICE1CM10/2.2.205?SHELF=&DT=20050119125222&CASE=

Hope this helps...

Cheers

Kolusu
_________________
Kolusu
www.linkedin.com/in/kolusu
Back to top
View user's profile Send private message Send e-mail Visit poster's website
Frank Yaeger
Sort Forum Moderator
Sort Forum Moderator


Joined: 02 Dec 2002
Posts: 1618
Topics: 31
Location: San Jose

PostPosted: Fri Feb 03, 2006 2:00 pm    Post subject: Reply with quote

The problem here is described by this bullet in the doc for ICE217A:

o E15 indicates that an E15 exit passed a variable-length record with a length greater than the L2 value specified or defaulted

and the solution is described by this bullet:

- If variable-length records from an E15, E32, or E35 exit are longer than the corresponding Ln value, correct the RDW or Ln value, as appropriate.

The L2 value is in the RECORD statement passed from the program which is listed in the //SYSOUT messages. If there's no L2 value, then the default is used. You didn't show all of the //SYSOUT messages so we can't see the RECORD statement, but you can.

The ICE217A message you received indicates that the L2 value for E15 is 294 bytes, but the record passed from the E15 is 27050 bytes. The L2 value tells DFSORT the maximum length of the record being returned from the E15. If you want to pass 27050 byte records from the E15, you need to tell DFSORT that with the L2 value in the RECORD statement, e.g.

Code:

//SORTCNTL DD *
   RECORD LENGTH=(,27050)


However, since the RECORD statement in SORTCNTL completely overrides the RECORD statement from the program, you need to look at the RECORD statement the program passed and make sure you aren't losing any of that information. For example, if the RECORD statement passed from the program had TYPE=V, you want to use TYPE=V in the SORTCNTL RECORD statement.
_________________
Frank Yaeger - DFSORT Development Team (IBM)
Specialties: JOINKEYS, FINDREP, WHEN=GROUP, ICETOOL, Symbols, Migration
DFSORT is on the Web at:
www.ibm.com/storage/dfsort
Back to top
View user's profile Send private message Send e-mail Visit poster's website
issac1029
Intermediate


Joined: 10 Dec 2005
Posts: 159
Topics: 75

PostPosted: Thu Mar 23, 2006 2:12 am    Post subject: Reply with quote

I saw in ibmbook(DFSORT GUIDE) that vllong can be used to truncate those record whose length is greater than the lrecl of the sortout or ........

1) Why it doesn't work?and even need to specify a longer record?

2)'vllong can be use to truncate long outfil but has no effect on long header or trailer records.' How dfsort know whther a record is a header,trailer or detail?By their position? fisrt,middle,and last?
Back to top
View user's profile Send private message Send e-mail MSN Messenger
Frank Yaeger
Sort Forum Moderator
Sort Forum Moderator


Joined: 02 Dec 2002
Posts: 1618
Topics: 31
Location: San Jose

PostPosted: Thu Mar 23, 2006 11:19 am    Post subject: Reply with quote

Quote:
Why it doesn't work?and even need to specify a longer record?


I have no idea what you mean by this. VLLONG works fine if you want to truncate long variable input records to the SORTOUT or OUTFIL LRECL length. For example, if your input record length is 70 bytes and your SORTOUT LRECL is 50 bytes, the output record is truncated to 50 bytes. If that's what you want to do, then VLLONG will do it.

Quote:
vllong can be use to truncate long outfil but has no effect on long header or trailer records.' How dfsort know whther a record is a header,trailer or detail?By their position? fisrt,middle,and last?


The header and trailer records are those generated by the HEADERx and TRAILERx parameters of the OUTFIL statement. DFSORT creates these for output, so it knows which they are. You shouldn't generate header and trailer records with HEADERx and TRAILERx that are longer than the OUTFIL LRECL.

Generally, you don't need VLLONG because your SORTOUT LRECL or OUTFIL LRECL should be set to or greater than the maximum length of your VB output records. You would only need VLLONG if you're doing something odd that requires long records to be truncated to a smaller LRECL.
_________________
Frank Yaeger - DFSORT Development Team (IBM)
Specialties: JOINKEYS, FINDREP, WHEN=GROUP, ICETOOL, Symbols, Migration
DFSORT is on the Web at:
www.ibm.com/storage/dfsort
Back to top
View user's profile Send private message Send e-mail Visit poster's website
Display posts from previous:   
Post new topic   Reply to topic   printer-friendly view    MVSFORUMS.com Forum Index -> Utilities All times are GMT - 5 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


MVSFORUMS
Powered by phpBB © 2001, 2005 phpBB Group