I'll demonstrate the technique with a few fields. Say we had this as input:
To handle this in two parts, we would PARSE the first group with %nn variables individually and the remaining bytes with one %nn variable.
Then we would PARSE the next group starting with the remaining bytes. For example:
//S1 EXEC PGM=ICETOOL
//TOOLMSG DD SYSOUT=*
//DFSMSG DD SYSOUT=*
//IN DD *
//T1 DD DSN=&&T1,UNIT=SYSDA,SPACE=(CYL,(5,5)),DISP=(,PASS)
//OUT DD SYSOUT=*
//TOOLIN DD *
COPY FROM(IN) TO(T1) USING(CTL1)
COPY FROM(T1) TO(OUT) USING(CTL2)
//CTL1CNTL DD *
//CTL2CNTL DD *
Notice that I've used %01-%03 twice.
The first COPY operator would write the following in T1:
ABC DEFGHI JKL MNOPQ RSTU|VW|XYZAB|CDE|
AB CDEFGH IJKLMN OPQRSTUV W|XYZ|AB|CDEFG|
Now we can PARSE the remaining fields with the second COPY operator. Just use ABSPOS=n to start at the correct place in the T1 records.
So after the second COPY operator, OUT would have the following:
ABC DEFGHI JKL MNOPQ RSTU VW XYZAB CDE
AB CDEFGH IJKLMN OPQRSTUV W XYZ AB CDEFG
Hopefully, you can extrapolate this to the number of fields you need. Just use one COPY step with %00-%98 for the first 99 fields and %99 for the remaining fields. Then use another COPY operator with %00-%nn to handle the remaining bytes starting at the appropriate position (= the total length of the %00-%98 fields).