senjay
Active User
Joined: 10 May 2007 Posts: 147 Location: India
|
|
|
|
Hi,
I have the VB input file of LRECL 23036 with records like this.
ab;cerf;d;e and so on.
Each field was seperated by delimiters (;) and last field will not have delimiter at the end. There are 23 fields in a record. Hence 22 delimiters would be there.
I want to create the output file (of VB) which will have same 23036 bytes from input file and from 23037 - 23050, i want to have 23rd field (This field will always be having length of 14 and do not have delimiter at end).
I used the below JCl.
Code: |
/SORTIN DD DSN=EORGA.A4XUD11.SECTRA.TRAN.COPY,
/ DISP=SHR
/SORTOUT DD DSN=EORGA.SORTOUT1,
/ DISP=(NEW,CATLG,DELETE),
/ UNIT=SYSDA,
/ SPACE=(CYL,(01,02),RLSE),
/ DCB=(LRECL=23050,RECFM=VB,BLKSIZE=0)
/SYSIN DD *
OPTION COPY,VLLONG
OUTFIL PARSE=(%=(ENDBEFR=C';'),
%=(ENDBEFR=C';'),
%=(ENDBEFR=C';'),
%=(ENDBEFR=C';'),
%=(ENDBEFR=C';'),
%=(ENDBEFR=C';'),
%=(ENDBEFR=C';'),
%=(ENDBEFR=C';'),
%=(ENDBEFR=C';'),
%=(ENDBEFR=C';'),
%=(ENDBEFR=C';'),
%=(ENDBEFR=C';'),
%=(ENDBEFR=C';'),
%=(ENDBEFR=C';'),
%=(ENDBEFR=C';'),
%=(ENDBEFR=C';'),
%=(ENDBEFR=C';'),
%=(ENDBEFR=C';'),
%=(ENDBEFR=C';'),
%=(ENDBEFR=C';'),
%=(ENDBEFR=C';'),
%=(ENDBEFR=C';'),
%23=(FIXLEN=14)),
BUILD=(1,23036,23037:%23)
|
But I am getting below error.
Code: |
ICE218A 3 134 BYTE VARIABLE RECORD IS SHORTER THAN 23036 BYTE MINIMUM FOR FIELDS
|
Could someone help me here? |
|
Frank Yaeger
DFSORT Developer
Joined: 15 Feb 2005 Posts: 7129 Location: San Jose, CA
|
|
|
|
Just use VLFILL=C' ' on the OUTFIL statement, e.g.
Code: |
...
BUILD=(1,23036,23037:%23),VLFILL=C' '
|
That will fill in missing bytes from "short" records with blanks.
Alternatively, you can use OVERLAY instead of BUILD and you won't need VLFILL:
Code: |
...
OVERLAY=(23037:%23)
|
|
|