Code: Select all
//SORT EXEC PGM=ICETOOL,
// PARM='JP1"&PARA1",JP2"&PARA2",JP3"&PARA3"',
// REGION=0M
//TOOLMSG DD SYSOUT=*
//DFSMSG DD SYSOUT=*
//IN DD DSN=EDI.HDRSMPL,DISP=SHR
//OUT DD DSN=.EDI.HEADER.R&PARA1..&PARA2,
// DISP=(NEW,CATLG,DELETE),
// UNIT=(DISK),SPACE=(TRK,(1,1),RLSE)
//TOOLIN DD DSN=TEPDXXX.XXX.JCLLIB(TOOLIN),DISP=SHR
COPY FROM(IN) TO(OUT) USING(CTL1)
//CTL1CNTL DD DSN=TEPDXXXM.XXX.JCLLIB(CTL1CNTL),DISP=SHR
SORT FIELDS=COPY
OUTREC IFTHEN=(WHEN=(19,4,CH,EQ,C'FECH'),
OVERLAY=(19:&DATENS=(DM4),TRAN=HEX)),
IFTHEN=(WHEN=(23,6,CH,EQ,C'RRRRRR'),
OVERLAY=(23:C'ABCDEF')),
IFTHEN=(WHEN=(29,6,CH,EQ,C'SSSSSS'),
OVERLAY=(29:C'123456'))
My sample file is:
Code: Select all
TEXTTEXTTEXT..... FECHRRRRRRSSSSSS N..
ECEEECEEECEE220004CCCCDDDDDDEEEEEE444D23
3573357335730422006538999999222222000527
Code: Select all
PARA1='007302',PARA2='400'
b) I have to replace SSSSSS with PARA3. That´s no problem, I will just use JP3, "as is". PARA3 is 6 bytes long.
c) And I have to replace FECH with X'DDMMYYYY' , Using &DATENS=(DM4) is ok, but I.m not able to "pack" it. Can I use some value of TRAN= ?
I promise I have been looking for the answer in DFSORT manuals
Thanks a lot.
Perhaps it wuold be better two steps, using a temporal file?
COPY FROM(IN) TO(TMP) USING(CTL1)
COPY FROM(TMP) TO(OUT) USING(CTL1)
Edit: I could append PARA1+PARA2 in the first sort. In the second one , I would use BUILD to pick the correct bytes.
Packing the date, I can't see any path to do that, please, help me with this.