I am getting a problem while using these sort cards. The sysout error message is like this.
Code:
ICE143I 0 BLOCKSET SORT TECHNIQUE SELECTED
ICE250I 0 VISIT http://www.ibm.com/storage/dfsort FOR DFSORT PAPERS, EXAMPLES AN
ICE000I 1 - CONTROL STATEMENTS FOR 5694-A01, Z/OS DFSORT V1R5 - 07:16 ON WED MAR
SORT FIELDS=(1,55,CH,A)
INCLUDE COND=(1,1,CH,EQ,C'2',OR,
1,1,CH,EQ,C'3')
INREC IFTHEN=(WHEN=(1,1,CH,EQ,C'2'),
BUILD=(1:95,30,31:77,15,46:93,1,47:C'01',49:32,9,56:1,1000)),
IFTHEN=(WHEN=(1,1,CH,EQ,C'3'),
BUILD=(1:95,30,31:77,15,46:93,1,47:C'02',49:43,9,56:1,1000))
ICE201I 0 RECORD TYPE IS F - DATA STARTS IN POSITION 1
ICE126A 2 INCONSISTENT *INREC IFTHEN 1 REFORMATTING FIELD FOUND
ICE751I 0 C5-K05352 C6-Q95214 C7-K90000 C8-K05352 E7-K90000
ICE052I 3 END OF DFSORT
But if I change the sort card to
Code:
SORT FIELDS=(1,55,CH,A)
INCLUDE COND=(1,1,CH,EQ,C'2',OR,
1,1,CH,EQ,C'3')
INREC IFTHEN=(WHEN=(1,1,CH,EQ,C'2'),
BUILD=(1:95,30,31:77,15,46:93,1,47:32,9,56:1,1000)),
IFTHEN=(WHEN=(1,1,CH,EQ,C'3'),
BUILD=(1:95,30,31:77,15,46:93,1,47:43,9,56:1,1000))
it is running fine.
Another problem:
Code:
ICE200I 0 IDENTIFIER FROM CALLING PROGRAM IS 0001
ICE200I J IDENTIFIER FROM CALLING PROGRAM IS 0001
ICE000I I - CONTROL STATEMENTS FOR 5694-A01, Z/OS DFSORT V1R5 - 07:16 ON WED MAR
INCLUDE COND=(1,12,CH,EQ,C'583731 ')
INREC FIELDS=(1:89,30,31:64,15,46:192,1,47:41,2,49:55,9,56:1,200)
SORT FIELDS=(1,55,CH,A)
ICE146I J END OF STATEMENTS FROM CTL1CNTL - PARAMETER LIST STATEMENTS FOLLOW
DEBUG NOABEND,ESTAE
OPTION MSGDDN=DFSMSG,LIST,MSGPRT=ALL,RESINV=0,SORTDD=CTL1,SORTIN=IN,SO
TOUT=OUT1,DYNALLOC
SORT FIELDS=COPY
ICE201I J RECORD TYPE IS F - DATA STARTS IN POSITION 1
ICE126A J INCONSISTENT *INREC IFTHEN 0 REFORMATTING FIELD FOUND
ICE052I J END OF DFSORT
When I change the sort card to
Code:
INCLUDE COND=(1,12,CH,EQ,C'583731 ')
INREC FIELDS=(1:89,30,31:64,15,46:192,1,47:55,9,56:1,200)
SORT FIELDS=(1,55,CH,A)
You have 49:32,9 - that would put the next field at 58 (49+9). But you have 56: which means you're trying to put the next field at 56, which would overlap the previous field. You need 58: instead of 56: in this case. But why are you specifying columns (c:) if you are just building the fields contiguously? You don't need columns in that case - just let DFSORT figure them out automatically. If you want to use columns, then each column must not overlap the previous field.