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

WER244A OUTREC - SHORT RECORD


IBM Mainframe Forums -> JCL & VSAM
Post new topic   Reply to topic
View previous topic :: View next topic  
Author Message
Karthik Chandrasekaran

New User


Joined: 21 Aug 2006
Posts: 8

PostPosted: Wed Feb 21, 2007 5:53 pm
Reply with quote

I have a KSDS with file length 1500.I need to populate 3rd,4th and 5th byte with BLanks and the last 3 bytes in the input file can be ommited.Please let me know how can i achieve this using synsort.

File description of the KSDS:

Device type: 3390
Organization: KSDS
KSDS key length: 20
KSDS key location: 0
Average record size: 200
Maximum record size: 1500

First i copied the data from KSDS to a PS variable length file with max record length 1500 using synsort. ---I have a question here icon_rolleyes.gif
Is the output file length(1500) which i used is correct or not ? or should i declare the output file length as 1504 ? since the VSAM will not have the RDW details.Pls confirm.

When i was trying to achieve i got the abend as given in the subject(WER244A OUTREC - SHORT RECORD).
Can anyone explain why this abend has occured ?

I gave the following as SYSIN:
SORT FIELDS=COPY
OUTREC FIELDS=(1:1,6,3X,10:7,1491)
Back to top
View user's profile Send private message
guptae

Moderator


Joined: 14 Oct 2005
Posts: 1208
Location: Bangalore,India

PostPosted: Wed Feb 21, 2007 6:14 pm
Reply with quote

Hi there,

Please try with this follwing sort card

Code:
//SYSIN DD *
  OPTION COPY,VLSCMP
  OUTREC FIELDS=(1:1,6,3X,10:7,1491)
/*
Back to top
View user's profile Send private message
William Thompson

Global Moderator


Joined: 18 Nov 2006
Posts: 3156
Location: Tucson AZ

PostPosted: Wed Feb 21, 2007 6:16 pm
Reply with quote

The error:
Quote:
EXPLANATION: The ddname will be SORTOUT, SORTOFxx, SORTOFx or the ddname provided by an OUTFIL FNAMES parameter. A variable-length record was too short to contain all the fields specified on the control statement. Program HISTOGRM may be used to determine the length of the shortest record in the input file.
In the section for OUTREC:
Quote:
To include any portion of the variable part of the input records, specify a position value without a length value as the last entry.
That should solve your problem.
And, yes, vsam lrecl does not include the llbb but the ps must.
Back to top
View user's profile Send private message
William Thompson

Global Moderator


Joined: 18 Nov 2006
Posts: 3156
Location: Tucson AZ

PostPosted: Wed Feb 21, 2007 6:18 pm
Reply with quote

guptae wrote:
OPTION COPY,VLSCMP
What is VLSCMP?
Back to top
View user's profile Send private message
Karthik Chandrasekaran

New User


Joined: 21 Aug 2006
Posts: 8

PostPosted: Wed Feb 21, 2007 6:46 pm
Reply with quote

Hi Ekta,
VLSCMP is not working.I gave the sysin card as you told but without comma, since it abended with comma.But getting the same abend(Short)

Hi William,
When i ommited the length field it assumed the length as 1507.I pasted the spool listing below. The sysin card which i gave is SORT FIELDS=COPY
OUTREC FIELDS=(1:1,6,3X,10:7)

SPOOL:

SORTIN : RECFM=V ; LRECL= 1500; CISIZE = 4096
OUTREC RECORD LENGTH = 1507
SORTOUT : RECFM=VB ; LRECL= 1500; BLKSIZE= 27998
SORTOUT HAS INCOMPATIBLE LRECL
Back to top
View user's profile Send private message
William Thompson

Global Moderator


Joined: 18 Nov 2006
Posts: 3156
Location: Tucson AZ

PostPosted: Wed Feb 21, 2007 7:14 pm
Reply with quote

Maybe using the VLTEST=0 parm would help, maybe not....I wonder how Frank would do it? icon_confused.gif
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 Feb 21, 2007 10:53 pm
Reply with quote

Quote:
I wonder how Frank would do it?


This is a Syncsort question (WER messages). I'm a DFSORT developer. DFSORT and Syncsort are competitive products. I'm happy to answer questions on DFSORT and DFSORT's ICETOOL, but I don't answer questions on Syncsort.
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: Wed Feb 21, 2007 10:54 pm
Reply with quote

Hello,

Sortout most likely needs to be 1504 rather than 1500.

VLSCMP deals with "short" records in a variable length file (DFSORT).
Back to top
View user's profile Send private message
William Thompson

Global Moderator


Joined: 18 Nov 2006
Posts: 3156
Location: Tucson AZ

PostPosted: Thu Feb 22, 2007 12:29 am
Reply with quote

Frank Yaeger wrote:
This is a Syncsort question (WER messages). I'm a DFSORT developer. DFSORT and Syncsort are competitive products. I'm happy to answer questions on DFSORT and DFSORT's ICETOOL, but I don't answer questions on Syncsort.
I know that Frank, I was just wondering what DFSORT facility would allow the end three bytes to be chopped off.....VLSCMP?
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: Thu Feb 22, 2007 1:42 am
Reply with quote

VLSCMP is only applicable to short INCLUDE/OMIT records. Chopping three bytes off at the end would be done with INREC, OUTREC or OUTFIL - VLSCMP has nothing to do with it.
Back to top
View user's profile Send private message
William Thompson

Global Moderator


Joined: 18 Nov 2006
Posts: 3156
Location: Tucson AZ

PostPosted: Thu Feb 22, 2007 1:55 am
Reply with quote

OK, I can take a hint... icon_smile.gif ...I'll just treat it as a test and see if I can find if it's possible and if so how.....Did I ever mention just how big your DFSORT manual is??? icon_lol.gif
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: Thu Feb 22, 2007 2:33 am
Reply with quote

And if memory serves, Syncsort has no stinkin' vlscmp. icon_smile.gif

To select some but not all of the record, INREC works w/ Syncsort.
Back to top
View user's profile Send private message
William Thompson

Global Moderator


Joined: 18 Nov 2006
Posts: 3156
Location: Tucson AZ

PostPosted: Thu Feb 22, 2007 2:52 am
Reply with quote

That's a point, Syncsort, by default, will err if inrec or sort (IIRC) fields (operations?) get hit by short recs, but outrec is not mentioned.
Syncsort has a parm that will (again IIRC) mitigate the error and allow some tolerance.
So if the poster set the parm, chopped off the end three with inrec and upon outrec did the fields without specifying the final length, he/she would have a Syncsort solution... icon_eek.gif

Dang, sometimes it just takes a while.... icon_lol.gif

Well, Karthik, willing to give it a try?
Back to top
View user's profile Send private message
guptae

Moderator


Joined: 14 Oct 2005
Posts: 1208
Location: Bangalore,India

PostPosted: Thu Feb 22, 2007 9:50 am
Reply with quote

Hi Karthik,

Please try with VLTEST1

Code:
//STEP001  EXEC PGM=SORT,PARM='VLTESTI=1'

//SYSIN DD *
  OPTION COPY
  OUTREC FIELDS=(1:1,6,3X,10:7,1491)
/*

It's working in my shop
Back to top
View user's profile Send private message
Karthik Chandrasekaran

New User


Joined: 21 Aug 2006
Posts: 8

PostPosted: Thu Feb 22, 2007 1:02 pm
Reply with quote

Hi Ekta,
I tried with VLTESTI but it did'nt work, i got the same abend(short record).


Hi William,
I tried VLTEST=0 too and i am getting the same abend.
I gave PARM='IIRC', it shouted at me saying PARM FIELD ERROR - IIRC and gave the same abend. am i using the correct syntax ?

By the way what does the parm VLTESTI=1 or VLTESTI=0 does ?
Back to top
View user's profile Send private message
Karthik Chandrasekaran

New User


Joined: 21 Aug 2006
Posts: 8

PostPosted: Thu Feb 22, 2007 1:07 pm
Reply with quote

Hi Ekta,
I tried with VLTESTI but it did'nt work, i got the same abend(short record).


Hi William,
I tried VLTEST=0 too and i am getting the same abend.
I gave PARM='IIRC', it shouted at me saying PARM FIELD ERROR - IIRC and gave the same abend. am i using the correct syntax ?

By the way what does the parm VLTESTI=1 or VLTESTI=0 does ?

Thanks all for your time!
Back to top
View user's profile Send private message
William Thompson

Global Moderator


Joined: 18 Nov 2006
Posts: 3156
Location: Tucson AZ

PostPosted: Thu Feb 22, 2007 3:42 pm
Reply with quote

Did you try to trim the 3 bytes on the inrec, VLTEST does not seem to work against outrec problems.
IIRC is short for If I Recall Correctly....
Back to top
View user's profile Send private message
superk

Global Moderator


Joined: 26 Apr 2004
Posts: 4652
Location: Raleigh, NC, USA

PostPosted: Thu Feb 22, 2007 7:11 pm
Reply with quote

Just a thought, but maybe it's time to post this question to the guys from SYNCSORT. They do participate in SYNCSORT discussions elsewhere.
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: Thu Feb 22, 2007 10:37 pm
Reply with quote

Hello,

There was misunderstanding in the previous post(s).

Here is the descripton of the Syncsort VLTEST* parms:
Quote:
VLTESTI
VLTESTI specifies to SyncSort how to process variable-length records that do not contain
all specified INCLUDE or OMIT fields. VLTESTI applies to the INCLUDE and OMIT
control statements as well as OUTFIL and JOINKEYS INCLUDE/OMIT processing.
The delivered default of 0 instructs SyncSort to terminate if a record does not completely
contain all INCLUDE or OMIT fields. A WER250A critical error message is generated to
indicate this condition.
When VLTESTI=1 is specified, a record that does not completely contain all INCLUDE/
OMIT fields is treated as having failed the comparison. SyncSort will omit the record if
INCLUDE is being used or include the record if OMIT has been specified.
When VLTESTI=2 is specified, SyncSort will treat comparisons to fields not completely
contained within the record as false and decide a record?s status for inclusion or omission
from fields that are available. If all fields are not present, the record will be processed as
having failed the comparison. SyncSort will omit the record if INCLUDE is being used or
include the record if OMIT has been specified.
Cannot be used with Tape Sort.

Quote:
VLTEST
VLTEST allows you to do the following when variable-length records are processed:
? Choose the type of record length validity testing to be performed.
? Choose whether or not to verify the correct sequence of segments in variable-length spanned records.
Record length validity testing may be performed in all types of applications: sort, merge,
copy, and BetterGener. Segment sequence checking may only be done during sort and
merge applications.
The first subparameter of the VLTEST PARM is a number n that instructs SyncSort in the
type of validity testing to be performed on variable-length records. Choosing a validity test
instructs SyncSort to terminate with a critical error (outlined in WER027A, WER160A or
WER167A) in the event of an illegal condition.
In particular, VLTEST instructs the sort/merge in the handling of ?short? variable-length
records, i.e., records not long enough to contain all of the control fields specified in the
SORT/MERGE control statement. The delivered default for VLTEST is 1.
When VLTEST is set to an even number, SyncSort will accept short variable-length records,
padding them with binary zeros to the length of the sort key for the sort compare process.
In order to prevent system 0C7 abends due to the binary zero padding, the CMP PARM is
automatically set to CMP=CLC in these cases. The binary zeros are removed from the
record, restoring it to its original state, as the output record is being written.
0** No validity testing of variable-length records.
1 If input record is shorter than control fields, terminate. This is the delivered
default.
2** If input record is longer than maximum LRECL or l2 value, terminate.
3 If either or both of tests 1 and 2, terminate.
4** If input record is longer than output LRECL or l3 value, terminate.
5 If input record is shorter than control fields, or longer than output LRECL or l3
value, or both, terminate.
6** If input record is longer than the maximum input LRECL or l2 value, or longer
than the output LRECL, or both, terminate.
7 If input record is shorter than control fields, or longer than input LRECL or l2
value, or longer than output LRECL or l3 value, or any or all of these, terminate.
The second subparameter allows you to specify whether or not SyncSort should verify that
the sequence of segments is correct in each variable-length spanned record during sort and
merge applications. ON is the delivered default and signals that the segment sequence
should be verified. If OFF is selected, all illogical record segments encountered in the input
file will be eliminated and message WER464I will be produced. If OFF4 is selected, the processing
described for OFF will occur, but in addition if an illogical segment is found, a
return code of 4 will be returned if not overridden by a higher return code set for another
reason.
SyncSort 5.32 for z/OS 1.2 Programmer?s Guide
The second subparameter does not apply during copy applications.
Note: If an illegal condition is detected during a validity test and segment sequence checking
is on, message WER182A will be issued.
Cannot be used with Tape Sort.
** These values force the use of CMP=CLC for variable-length input.


If you don't have a Syncsort manual, you should obtain one. The documentation is free to registered users.
Back to top
View user's profile Send private message
superk

Global Moderator


Joined: 26 Apr 2004
Posts: 4652
Location: Raleigh, NC, USA

PostPosted: Wed Feb 28, 2007 8:13 pm
Reply with quote

Karthik Chandrasekaran, were you able to get a resolution from the SYNCSORT folks?
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 -> JCL & VSAM

 


Similar Topics
Topic Forum Replies
No new posts How to split large record length file... DFSORT/ICETOOL 10
No new posts SFTP Issue - destination file record ... All Other Mainframe Topics 2
No new posts FINDREP - Only first record from give... DFSORT/ICETOOL 3
No new posts To find whether record count are true... DFSORT/ICETOOL 6
No new posts Validating record count of a file is ... DFSORT/ICETOOL 13
Search our Forums:

Back to Top