Page 2 of 2

Re: Matching with three output record

PostPosted: Wed Feb 02, 2011 3:59 am
by Frank Yaeger
Answer question3 --> It must not be possible but in any case I think that is an incongruence and must be verified more quickly. If you can write all records (that this question3) at OUT3 with message ERROR DUPLICATE (for example) is the best solution for me. (If it's not possible I write only the first case at OUT1)


I chose to write only the first case in OUT1. Here's the DFSORT/ICETOOL job:

//S2    EXEC  PGM=ICETOOL
//TOOLMSG DD SYSOUT=*
//DFSMSG  DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//IN1 DD DSN=...  input file1 (FB/130)
//IN2 DD DSN=...  input file2 (FB/332)
//T1 DD DSN=&&T1,UNIT=SYSDA,SPACE=(CYL,(5,5)),DISP=(,PASS)
//OUT1 DD DSN=...  output file1 (FB/136)
//OUT2 DD DSN=...  output file2 (FB/139)
//OUT3 DD DSN=...  output file3 (FB/144)
//TOOLIN DD *
 SORT FROM(IN2) TO(T1) USING(CTL1)
 COPY JKFROM USING(CTL2)
/*
//CTL1CNTL DD *
  INREC IFTHEN=(WHEN=(327,4,CH,EQ,C'0049'),OVERLAY=(333:C'0')),
        IFTHEN=(WHEN=NONE,OVERLAY=(333:C'1'))
  OPTION EQUALS
  SORT FIELDS=(8,9,CH,A,333,1,CH,A)
  OUTREC IFTHEN=(WHEN=GROUP,KEYBEGIN=(8,9),PUSH=(333:327,4,337:SEQ=8))
  OUTFIL OMIT=(333,4,CH,EQ,C'0049',AND,337,8,ZD,GT,1),
    BUILD=(1,332)
/*
//CTL2CNTL DD *
  JOINKEYS F1=IN1,FIELDS=(1,9,A),SORTED
  JOINKEYS F2=T1,FIELDS=(8,9,A),SORTED
  JOIN UNPAIRED,F1
  REFORMAT FIELDS=(F1:1,130,?,F2:1,6,327,4)
  OPTION COPY
  OUTFIL FNAMES=OUT1,
    INCLUDE=(131,1,CH,EQ,C'B',AND,138,4,CH,EQ,C'0049'),
    BUILD=(1,130,132,6)
  OUTFIL FNAMES=OUT2,
    INCLUDE=(131,1,CH,EQ,C'B',AND,138,4,CH,NE,C'0049'),
    BUILD=(1,130,C'ERROR',138,4)
  OUTFIL FNAMES=OUT3,
    INCLUDE=(131,1,CH,EQ,C'1'),
    BUILD=(1,130,C'ERROR',C'NOT FOUND')
/*

Re: Matching with three output record

PostPosted: Wed Feb 02, 2011 8:48 pm
by pulcinella
Excuse me Frank...

When I executed then have the next request:

1ICE200I 0 IDENTIFIER FROM CALLING PROGRAM IS 0001                             
 ICE805I 0 JOBNAME: xxxxxxxx , STEPNAME: S2                                   
 ICE802I 0 BLOCKSET     TECHNIQUE IN CONTROL                                   
 ICE006A 0 OPERAND DEFINER ERROR                                               
 ICE751I 0 C5-K59561 C6-K51707 C7-K54603 C8-K51707 E7-K51707                   
 ICE143I 0 BLOCKSET     SORT  TECHNIQUE SELECTED                               
 ICE250I 0 VISIT http://www.ibm.com/storage/dfsort FOR DFSORT PAPERS, EXAMPLES A
 ICE000I 0 - CONTROL STATEMENTS FOR 5694-A01, Z/OS DFSORT V1R10 - 15:27 ON WED F
0            INREC IFTHEN=(WHEN=(327,4,CH,EQ,C'0049'),OVERLAY=(333:C'0')),     
                   IFTHEN=(WHEN=NONE,OVERLAY=(333:C'1'))                       
             OPTION EQUALS                                                     
             SORT FIELDS=(8,9,CH,A,333,1,CH,A)                                 
             OUTREC IFTHEN=(WHEN=GROUP,KEYBEGIN=(8,9),PUSH=(333:327,4,337:SEQ=8)
                                       $                                       
 ICE006A 0 OPERAND DEFINER ERROR                                               
             OUTFIL OMIT=(333,4,CH,EQ,C'0049',AND,337,8,ZD,GT,1),             
               BUILD=(1,332)                                                   
 ICE146I 0 END OF STATEMENTS FROM CTL1CNTL - PARAMETER LIST STATEMENTS FOLLOW 
           DEBUG NOABEND,ESTAE                                                 
          OPTION MSGDDN=DFSMSG,LIST,MSGPRT=ALL,RESINV=0,SORTDD=CTL1,SORTIN=IN2,
                         RTOUT=T1,DYNALLOC                                   
ICE751I 0 C5-K59561 C6-K51707 C7-K54603 C8-K51707 E7-K51707                   
ICE052I 3 END OF DFSORT                                                     


It seems that i have ICE201I G RECORD TYPE IS F - DATA STARTS IN POSITION 1. And the command KEYBEGIN is not implemented (I think that at my firt post said that my level sort is G or F) until Oct 2010...

Thank you

Re: Matching with three output record

PostPosted: Wed Feb 02, 2011 11:51 pm
by Frank Yaeger
Ask your System Programmer to install z/OS DFSORT V1R10 PTF UK90025 so you can use KEYBEGIN.

Alternatively, you can replace the OUTREC statement with:

  OUTREC IFTHEN=(WHEN=INIT,OVERLAY=(337:SEQNUM,8,ZD,RESTART=(8,9))), 
   IFTHEN=(WHEN=GROUP,BEGIN=(337,8,ZD,EQ,1),PUSH=(333:327,4))         

Re: Matching with three output record

PostPosted: Tue Feb 08, 2011 9:49 pm
by pulcinella
Thank you for you help. It's ok

Unfortunally I can not use z/OS DFSORT V1R10 PTF UK90025. They are not install now. I must be use ICE201I G