Can DFSORT "chop" variable-length records into multiple fixed-length records ? I have written a generic Assembler program to do it but I
wonder if there is a trick to do it with DFSORT.
Sample output (output lrecl=4, pad last record with blanks):
--------------------------------------------------------------------
ABCD
EFGH
IJKL
MNOP
QRST
UVWX
YZ
1234
5678
90
...
...
Joined: 15 Feb 2005 Posts: 7129 Location: San Jose, CA
Here's a DFSORT/ICETOOL job that will do what you asked for. I assumed your input file had LRECL=32, but the OUTREC parameter can be changed appropriately for other LRECLs.
@GEN1 CHOP
OPEN (SYSUT1,(INPUT),SYSUT2,(OUTPUT))
LH 4,SYSUT2+82
LA 6,DUMMY
DO01 GET SYSUT1
LR 5,1
LH 9,0(,5)
LR 0,5
LR 2,6
LA 1,2(,9)
LR 3,1
CLCL 0,2
BE DO01
LR 6,5
MVC RC,=A(1)
LA 11,2(,5)
DO02 PUT SYSUT2
LR 10,1
IF01 CR 9,4
BNL ELSE01
LR 3,9
B EIF01
ELSE01 LR 3,4
EIF01 DS 0H
LR 0,10
LR 2,11
LR 1,3
MVCL 0,2
AR 11,4
SR 9,4
BP DO02
BZ DO01
LA 0,0(4,9)
AR 0,10
LPR 1,9
ICM 3,B'1000',=C' '
MVCL 0,2
B DO01
@EXODUS
DUMMY DC H'5',CL5'DUMMY'
SYSUT1 DCB DDNAME=SYSUT1,DSORG=PS,MACRF=GL,EODAD=EXIT
SYSUT2 DCB DDNAME=SYSUT2,DSORG=PS,MACRF=PL,RECFM=FB