IBM Mainframe Forum Index
 
Log In
 
IBM Mainframe Forum Index Mainframe: Search IBM Mainframe Forum: FAQ Register
 

Splice statement in ICETOOL


IBM Mainframe Forums -> DFSORT/ICETOOL
Post new topic   Reply to topic
View previous topic :: View next topic  
Author Message
ojdiaz

New User


Joined: 19 Nov 2008
Posts: 98
Location: Spain

PostPosted: Thu Jun 30, 2011 2:19 pm
Reply with quote

Hello there

We are working in a new shop and since the data sent to us usually has errors in it, we tried to create some basic validators using the Splice function to validate if a record in file B(POBJ) exists in a catalog File A(CAMPA) by comparing their Keys. We have done this other times and it works, fine, but in this shop, I'm not sure what might be happening. This is the JCL we are Executing:

Code:

//SPLICE01 EXEC PGM=ICETOOL                                             
//SYMNAMES DD DSN=BPSDCHG.FB.P.ASYSIPG(PMES3010),DISP=SHR               
//         DD DSN=BPSDCHG.FB.P.ASYSIPG(PMES3020),DISP=SHR               
//         DD DSN=BPSDLIB.EECC.KEOA.JCL.CORP.INTEREFE(HARCODES),       
//            DISP=SHR                                                 
//         DD *                                                         
CODIGO-CLIENTE,1,9,FS                                                   
ERRORES,89,20,CH                                                       
CAMPO1,89,2,CH                                                         
CAMPO2,91,2,CH                                                         
CAMPO3,93,2,CH                                                         
CAMPO4,95,2,CH                                                         
CAMPO5,97,2,CH                                                         
CAMPO6,99,2,CH                                                         
CAMPO7,101,2,CH                                                         
CAMPO8,103,2,CH                                                         
CAMPO9,105,2,CH                                                         
CAMPO10,107,2,CH                                                       
//SYMNOUT  DD SYSOUT=*                                                 
//TOOLMSG  DD SYSOUT=*                                                 
//DFSMSG   DD SYSOUT=*                                                 
//SORTDIAG DD SYSOUT=*                                                 
//SYSPRINT DD SYSOUT=*                                                 
//POBJ     DD DSN=VBDKEOA.APLXM06X.PUBLICO.OBJETIVO.MARCOS,DISP=SHR     
//CAMPA    DD DSN=VBDKEOA.APLXM06X.AGENDA.CAMPANA.D110622,DISP=SHR     
//T2       DD DSN=VBDKEOA.APLXM06X.XXXXXX.XXXXXXX,                     
//            DISP=(MOD,CATLG,DELETE),UNIT=SYSDA,                 
//            SPACE=(CYL,(10,5),RLSE)                             
//SALIDA1  DD DSN=VBDKEOA.INPXD05X.POBJ.CAMPA,                   
//           DISP=(NEW,CATLG,DELETE),UNIT=3390,BLKSIZE=0,         
//           SPACE=(CYL,(10,5),RLSE)                             
//TOOLIN DD *                                                     
  COPY FROM(CAMPA) TO(T2) USING(CTL1)                             
  COPY FROM(POBJ) TO(T2) USING(CTL2)                             
  SPLICE FROM(T2) TO(SALIDA1) ON(1,12,ZD) WITH(44,1) WITH(13,10) -
    KEEPNODUPS KEEPBASE                                           
//CTL1CNTL DD *                                                   
   OUTREC FIELDS=(PMEC3020-COD-CAMPA,10X,20X,C'11')               
//CTL2CNTL DD *                                                   
   OUTREC FIELDS=(PMEC3010-COD-CAMPA,SEQNUM,10,ZD,20X,C'22')     


The Map's translation is as follow:

Code:

------------------ SYMBOL TABLE -----------------
PMEC3010-REGISTRO,1,78,CH                       
PMEC3010-COD-CLIENTE,1,9,CH                     
PMEC3010-IND-NO-CLIENTE,10,1,CH                 
PMEC3010-COD-CAMPA,11,12,ZD                     
PMEC3010-COD-PAIS,23,2,CH                       
PMEC3010-COD-BCO,25,4,CH                         
PMEC3010-COD-OFI,29,4,ZD                         
PMEC3010-GESTOR,33,20,CH                         
PMEC3010-LIMITE,53,18,ZD                         
PMEC3010-PRIO-CONTA,71,2,ZD                     
PMEC3010-COD-MOTIVO,73,4,ZD                     
PMEC3010-COD-SEC,77,2,ZD                         
PMEC3020-REGISTRO,1,266,CH                       
PMEC3020-COD-CAMPA,1,12,ZD                       
PMEC3020-COD-MOD-CAMPA,13,4,ZD                   
PMEC3020-COD-SEG-CAMPA,17,5,CH                   
PMEC3020-COD-OBJ-CAMPA,22,4,ZD                   
PMEC3020-COD-CANAL-CAMPA,26,4,ZD                 
PMEC3020-COD-MED-CANAL,30,4,ZD                   
PMEC3020-COD-IDENT-CANAL,34,4,ZD                 
PMEC3020-DESC-CAMPA,38,60,CH                     
PMEC3020-OBSERVA-CAMPA,98,120,CH                 
PMEC3020-FECHA-INI,218,10,CH                     
PMEC3020-FECHA-FIN,228,10,CH                     
PMEC3020-INDI-AGRU-PRODU,238,9,ZD               
PMEC3020-COD-PRODU-ASOC,247,9,ZD                 
PMEC3020-COD-BCO,256,4,CH                       
PMEC3020-AREA-NEGO,260,4,ZD                     
PMEC3020-INDI-ACCION,264,2,CH                   
PMEC3020-INDI-MULTI,266,1,CH                     
HARD-PAIS,C'VE'                                 
HARD-BANCO,C'0108'                               
HARD-NOCL,C'0'                                   
HARD-CANAL,+1                                   
HARD-MED-CANAL,+1                               
HARD-IDENT-CANAL,+1                             
HARD-AREA,+0                                     
HARD-DATE,C'0001-01-01'                         
HARD-MULTI,C'N'     
CODIGO-CLIENTE,1,9,FS
ERRORES,89,20,CH     
CAMPO1,89,2,CH       
CAMPO2,91,2,CH       
CAMPO3,93,2,CH       
CAMPO4,95,2,CH       
CAMPO5,97,2,CH       
CAMPO6,99,2,CH       
CAMPO7,101,2,CH     
CAMPO8,103,2,CH     
CAMPO9,105,2,CH     
CAMPO10,107,2,CH     


The T2 temporary file after merging both files looks like this:

Code:

Command ===>                                       
=COLS> ----+----1----+----2----+----3----+----4----
****** ***************************** Top of Data **
000001 000000000001                              11
000002 000000000002                              11
000003 000000000003                              11
000004 000000000004                              11
000005 000000000005                              11
000006 000000000006                              11
000007 000000000007                              11
000008 000000000008                              11
000009 000000000009                              11
000010 000000000045                              11
000011 0000000000010000000001                    22
000012 0000000000020000000002                    22
000013 0000000000030000000003                    22
000014 0000000000040000000004                    22
000015 9999999999990000000005                    22
000016 0000000000010000000006                    22
000017 0000000000020000000007                    22
000018 0000000000030000000008                    22
000019 0000000000040000000009                    22
000020 9999999999990000000010                    22
000021 000000000DDD0000000011                    22
000022 0000333333330000000012                    22
000023 00000 0000030000000013                    22
000024 0000000000040000000014                    22
000025 9999999999990000000015                    22


In this file we detected the wrong execution on records number 15, 20 and 25.

The desired result afte the splice should be a file with records wich key is not found and File A and it's secuential order in the original file. , however, after the splice, the result we are getting is this:

Code:

000000000001                              11
000000000002                              11
000000000003                              11
000000000004                              11
000000000005                              11
000000000006                              11
000000000007                              11
000000000008                              11
000000000009                              11
000000000045                              11
0000000000010000000047                    12
0000000000020000000048                    12
0000000000030000000049                    12
0000000000040000000050                    12
0000000000050000000051                    12
0000000000060000000057                    12
0000000000070000000053                    12
0000000000080000000056                    12
0000000000090000000055                    12
0000000000450000000081                    12
000000000DDD0000000011                    22
0000333333330000000012                    22
9999999999990000000005                    22
9999999999990000000015                    22


Since we want the "22" records, that is, records from file B that did not match any record in file A, we used the Keepbase in order not to lose any record, so we should have, from the temporary file, 3 records with key 99999999999, with secuences 5, 10 and 15. It seems as if the base record is getting lost, though we are coding the KEEPBASE operator.

The shop in which are executing has an outdated sort version, it throws this message on execution:

ICE201I E RECORD TYPE IS F - DATA STARTS IN POSITION 1

The complete toolmsg for this execution is this:

Code:

********************************* TOP OF DATA **********************************
ICE600I 0 DFSORT ICETOOL UTILITY RUN STARTED                                   
                                                                               
ICE650I 0 VISIT http://www.ibm.com/storage/dfsort FOR ICETOOL PAPERS, EXAMPLES A
                                                                               
ICE632I 0 SOURCE FOR ICETOOL STATEMENTS:  TOOLIN                               
                                                                               
ICE270I 1 PROCESSING SYMNAMES STATEMENTS                                       
                                                                               
ICE281I 0 ORIGINAL OPERATOR STATEMENTS FOLLOW                                   
            COPY FROM(CAMPA) TO(T2) USING(CTL1)                                 
            COPY FROM(POBJ) TO(T2) USING(CTL2)                                 
            SPLICE FROM(T2) TO(SALIDA1) ON(1,12,ZD) WITH(44,1) WITH(13,10) -   
              KEEPNODUPS KEEPBASE                                               
                                                                               
ICE282I 1 PERFORMING SYMBOL SUBSTITUTION AS NEEDED                             
                                                                               
ICE630I 0 MODE IN EFFECT:  STOP                                                 
                                                                               
            COPY FROM(CAMPA) TO(T2) USING(CTL1)                                 
ICE606I 0 DFSORT CALL 0001 FOR COPY FROM CAMPA    TO T2       USING CTL1CNTL COM
ICE602I 0 OPERATION RETURN CODE:  00                                           
                                                                               
            COPY FROM(POBJ) TO(T2) USING(CTL2)                                 
ICE606I 0 DFSORT CALL 0002 FOR COPY FROM POBJ     TO T2       USING CTL2CNTL COM
ICE602I 0 OPERATION RETURN CODE:  00                                           
                                                                               
          SPLICE FROM(T2) TO(SALIDA1) ON(1,12,ZD) WITH(44,1) WITH(13,10)-       
          KEEPNODUPS KEEPBASE                                                   
ICE627I 0 DFSORT CALL 0003 FOR SORT FROM T2       TO SALIDA1  COMPLETED         
ICE628I 0 RECORD COUNT:  000000000000091                                       
ICE638I 0 NUMBER OF RECORDS RESULTING FROM CRITERIA:  000000000000024           
ICE602I 0 OPERATION RETURN CODE:  00                                           
                                                                               
                                                                               
ICE601I 0 DFSORT ICETOOL UTILITY RUN ENDED - RETURN CODE:  00                   
******************************** BOTTOM OF DATA ********************************


And the complete DFSMSG output for this step is as follows:

Code:

1ICE200I 0 IDENTIFIER FROM CALLING PROGRAM IS 0001
 ICE805I 0 JOBNAME: INREPOBJ , STEPNAME: SPLICE01
 ICE802I 0 BLOCKSET     TECHNIQUE IN CONTROL
 ICE280I 1 ORIGINAL STATEMENTS FROM CTL1CNTL FOLLOW
              OUTREC FIELDS=(PMEC3020-COD-CAMPA,10X,20X,C'11')
 ICE280I 2 ORIGINAL STATEMENTS FROM PARMLIST FOLLOW
           DEBUG NOABEND,ESTAE
           OPTION MSGDDN=DFSMSG,LIST,MSGPRT=ALL,RESINV=0,SORTDD=CTL1,SORTIN=CAMPA,*
                          SORTOUT=T2,DYNALLOC
           SORT FIELDS=COPY
 ICE282I 0 PERFORMING SYMBOL SUBSTITUTION AS NEEDED
 ICE201I E RECORD TYPE IS F - DATA STARTS IN POSITION 1
 ICE751I 0 C5-K26318 C6-K90007 C7-K90000 C8-K23476 E9-K90007 C9-BASE   E5-K24705 E7-K24705
 ICE143I 0 BLOCKSET     COPY  TECHNIQUE SELECTED
 ICE250I 0 VISIT http://www.ibm.com/storage/dfsort FOR DFSORT PAPERS, EXAMPLES AND MORE
 ICE000I 0 - CONTROL STATEMENTS FOR 5694-A01, Z/OS DFSORT V1R5 - 03:59 ON THU JUN 30, 2011 -
0           OUTREC FIELDS=(1,12,10X,20X,C'11')
 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=CAMPA,*
                          SORTOUT=T2,DYNALLOC
            SORT FIELDS=COPY
 ICE201I E RECORD TYPE IS F - DATA STARTS IN POSITION 1
 ICE751I 0 C5-K26318 C6-K90007 C7-K90000 C8-K23476 E9-K90007 C9-BASE   E5-K24705 E7-K24705
 ICE193I 0 ICEAM2 ENVIRONMENT IN EFFECT - ICEAM2 INSTALLATION MODULE SELECTED
 ICE088I 0 INREPOBJ.SPLICE01.        , INPUT LRECL = 266, BLKSIZE = 27930, TYPE = FB
 ICE093I 0 MAIN STORAGE = (MAX,6291456,6286430)
 ICE156I 0 MAIN STORAGE ABOVE 16MB = (6209094,6209094)
 ICE127I 0 OPTIONS: OVFLO=RC0 ,PAD=RC0 ,TRUNC=RC0 ,SPANINC=RC16,VLSCMP=N,SZERO=Y,RESET=Y,VSAMEMT=Y,DYNSPC=256
 ICE128I 0 OPTIONS: SIZE=6291456,MAXLIM=1048576,MINLIM=450560,EQUALS=N,LIST=Y,ERET=RC16 ,MSGDDN=DFSMSG
 ICE129I 0 OPTIONS: VIO=N,RESDNT=ALL ,SMF=NO   ,WRKSEC=Y,OUTSEC=Y,VERIFY=N,CHALT=N,DYNALOC=N             ,ABCODE=MSG
 ICE130I 0 OPTIONS: RESALL=4096,RESINV=0,SVC=109 ,CHECK=Y,WRKREL=Y,OUTREL=Y,CKPT=N,STIMER=Y,COBEXIT=COB2
 ICE131I 0 OPTIONS: TMAXLIM=6291456,ARESALL=0,ARESINV=0,OVERRGN=16384,CINV=Y,CFW=Y,DSA=0
 ICE132I 0 OPTIONS: VLSHRT=N,ZDPRINT=Y,IEXIT=N,TEXIT=N,LISTX=N,EFS=NONE    ,EXITCK=S,PARMDDN=DFSPARM ,FSZEST=N
 ICE133I 0 OPTIONS: HIPRMAX=OPTIMAL,DSPSIZE=20  ,ODMAXBF=0,SOLRF=Y,VLLONG=N,VSAMIO=N,MOSIZE=MAX
 ICE235I 0 OPTIONS: NULLOUT=RC0
 ICE084I 0 BSAM ACCESS METHOD USED FOR T2
 ICE084I 0 BSAM ACCESS METHOD USED FOR CAMPA
 ICE889I 0 CT=MAX     , SB=241, L=0, D=0000
 ICE902I 0 O PS10  I PS10
 ICE751I 1 EF-K10929 F0-K30362 E8-K24705
 ICE900I 0 CON=1,MUV=0,VOL=59,ENU=0,SBK=0,SRC=0,VEM=0
 ICE090I 0 OUTPUT LRECL = 44, BLKSIZE = 32736, TYPE = FB   (SDB)
 ICE171I 0 SORTOUT LRECL OF 44 IS DIFFERENT FROM SORTIN(NN) LRECL OF 266 - RC=0
 ICE055I 0 INSERT 0, DELETE 0
 ICE054I 0 RECORDS - IN: 10, OUT: 10
 ICE891I 1 6278488 WMAIN, 7936 CMAIN, MAX CALLOC, N SCN, B BA, 0 AZ, 0 BZ, NN QC
 ICE892I 1 266 RIN  27930 BLI  32736 BLO  10 RUN  0 BUN  2817 CPU  00 CVC
 ICE893I 1 0 XIN 0 WIN 0 GIN NDEN PFP   BJJ CM0B0 CIX UPTH LMD VS   RUX
 ICE052I 0 END OF DFSORT
1ICE200I 0 IDENTIFIER FROM CALLING PROGRAM IS 0002
 ICE805I 0 JOBNAME: INREPOBJ , STEPNAME: SPLICE01
 ICE802I 0 BLOCKSET     TECHNIQUE IN CONTROL
 ICE280I 1 ORIGINAL STATEMENTS FROM CTL2CNTL FOLLOW
              OUTREC FIELDS=(PMEC3010-COD-CAMPA,SEQNUM,10,ZD,20X,C'22')
 ICE280I 2 ORIGINAL STATEMENTS FROM PARMLIST FOLLOW
           DEBUG NOABEND,ESTAE
           OPTION MSGDDN=DFSMSG,LIST,MSGPRT=ALL,RESINV=0,SORTDD=CTL2,SORTIN=POBJ,S*
                          ORTOUT=T2,DYNALLOC
           SORT FIELDS=COPY
 ICE282I 0 PERFORMING SYMBOL SUBSTITUTION AS NEEDED
 ICE201I E RECORD TYPE IS F - DATA STARTS IN POSITION 1
 ICE751I 0 C5-K26318 C6-K90007 C7-K90000 C8-K23476 E9-K90007 C9-BASE   E5-K24705 E7-K24705
 ICE143I 0 BLOCKSET     COPY  TECHNIQUE SELECTED
 ICE250I 0 VISIT http://www.ibm.com/storage/dfsort FOR DFSORT PAPERS, EXAMPLES AND MORE
 ICE000I 0 - CONTROL STATEMENTS FOR 5694-A01, Z/OS DFSORT V1R5 - 03:59 ON THU JUN 30, 2011 -
0           OUTREC FIELDS=(11,12,SEQNUM,10,ZD,20X,C'22')
 ICE146I 0 END OF STATEMENTS FROM CTL2CNTL - PARAMETER LIST STATEMENTS FOLLOW
           DEBUG NOABEND,ESTAE
           OPTION MSGDDN=DFSMSG,LIST,MSGPRT=ALL,RESINV=0,SORTDD=CTL2,SORTIN=POBJ,S*
                          ORTOUT=T2,DYNALLOC
            SORT FIELDS=COPY
 ICE201I E RECORD TYPE IS F - DATA STARTS IN POSITION 1
 ICE751I 0 C5-K26318 C6-K90007 C7-K90000 C8-K23476 E9-K90007 C9-BASE   E5-K24705 E7-K24705
 ICE193I 0 ICEAM2 ENVIRONMENT IN EFFECT - ICEAM2 INSTALLATION MODULE SELECTED
 ICE088I 0 INREPOBJ.SPLICE01.        , INPUT LRECL = 78, BLKSIZE = 27924, TYPE = FB
 ICE093I 0 MAIN STORAGE = (MAX,6291456,6286430)
 ICE156I 0 MAIN STORAGE ABOVE 16MB = (6209026,6209026)
 ICE127I 0 OPTIONS: OVFLO=RC0 ,PAD=RC0 ,TRUNC=RC0 ,SPANINC=RC16,VLSCMP=N,SZERO=Y,RESET=Y,VSAMEMT=Y,DYNSPC=256
 ICE128I 0 OPTIONS: SIZE=6291456,MAXLIM=1048576,MINLIM=450560,EQUALS=N,LIST=Y,ERET=RC16 ,MSGDDN=DFSMSG
 ICE129I 0 OPTIONS: VIO=N,RESDNT=ALL ,SMF=NO   ,WRKSEC=Y,OUTSEC=Y,VERIFY=N,CHALT=N,DYNALOC=N             ,ABCODE=MSG
 ICE130I 0 OPTIONS: RESALL=4096,RESINV=0,SVC=109 ,CHECK=Y,WRKREL=Y,OUTREL=Y,CKPT=N,STIMER=Y,COBEXIT=COB2
 ICE131I 0 OPTIONS: TMAXLIM=6291456,ARESALL=0,ARESINV=0,OVERRGN=16384,CINV=Y,CFW=Y,DSA=0
 ICE132I 0 OPTIONS: VLSHRT=N,ZDPRINT=Y,IEXIT=N,TEXIT=N,LISTX=N,EFS=NONE    ,EXITCK=S,PARMDDN=DFSPARM ,FSZEST=N
 ICE133I 0 OPTIONS: HIPRMAX=OPTIMAL,DSPSIZE=20  ,ODMAXBF=0,SOLRF=Y,VLLONG=N,VSAMIO=N,MOSIZE=MAX
 ICE235I 0 OPTIONS: NULLOUT=RC0
 ICE084I 0 BSAM ACCESS METHOD USED FOR T2
 ICE084I 0 BSAM ACCESS METHOD USED FOR POBJ
 ICE889I 0 CT=MAX     , SB=8, L=0, D=0000
 ICE902I 0 O PS10  I PS10
 ICE751I 1 EF-K10929 F0-K30362 E8-K24705
 ICE900I 0 CON=1,MUV=0,VOL=59,ENU=0,SBK=0,SRC=0,VEM=0
 ICE090I 0 OUTPUT LRECL = 44, BLKSIZE = 32736, TYPE = FB
 ICE171I 0 SORTOUT LRECL OF 44 IS DIFFERENT FROM SORTIN(NN) LRECL OF 78 - RC=0
 ICE055I 0 INSERT 0, DELETE 0
 ICE054I 0 RECORDS - IN: 81, OUT: 81
 ICE891I 1 6278504 WMAIN, 7920 CMAIN, MAX CALLOC, N SCN, B BA, 0 AZ, 0 BZ, NN QC
 ICE892I 1 78 RIN  27924 BLI  32736 BLO  78 RUN  0 BUN  2817 CPU  00 CVC
 ICE893I 1 0 XIN 0 WIN 0 GIN NDEN PFP   BJJ CM0B0 CIX UPTH LMD VS   RUX
 ICE052I 0 END OF DFSORT
1ICE200I 0 IDENTIFIER FROM CALLING PROGRAM IS 0003
 ICE805I 0 JOBNAME: INREPOBJ , STEPNAME: SPLICE01
 ICE802I 0 BLOCKSET     TECHNIQUE IN CONTROL
 ICE280I 2 ORIGINAL STATEMENTS FROM PARMLIST FOLLOW
           DEBUG NOABEND,ESTAE
           OPTION MSGDDN=DFSMSG,LIST,MSGPRT=ALL,RESINV=0,SORTIN=T2,SORTOUT=SALIDA1*
                          ,DYNALLOC,SZERO,EQUALS,NOVLSHRT,LOCALE=NONE,NOCHECK
           SORT FIELDS=(1,12,ZD,A)
           MODS E35=(ICE35DU,12288)
 ICE282I 0 PERFORMING SYMBOL SUBSTITUTION AS NEEDED
 ICE201I E RECORD TYPE IS F - DATA STARTS IN POSITION 1
 ICE751I 0 C5-K26318 C6-K90007 C7-K90000 C8-K23476 E4-K90007 C9-BASE   E5-K24705 E6-K18181 E7-K24705
 ICE143I 0 BLOCKSET     SORT  TECHNIQUE SELECTED
 ICE250I 0 VISIT http://www.ibm.com/storage/dfsort FOR DFSORT PAPERS, EXAMPLES AND MORE
 ICE000I 0 - CONTROL STATEMENTS FOR 5694-A01, Z/OS DFSORT V1R5 - 03:59 ON THU JUN 30, 2011 -
0          DEBUG NOABEND,ESTAE
           OPTION MSGDDN=DFSMSG,LIST,MSGPRT=ALL,RESINV=0,SORTIN=T2,SORTOUT=SALIDA1*
                          ,DYNALLOC,SZERO,EQUALS,NOVLSHRT,LOCALE=NONE,NOCHECK
            SORT FIELDS=(1,12,ZD,A)
           MODS E35=(ICE35DU,12288)
 ICE201I E RECORD TYPE IS F - DATA STARTS IN POSITION 1
 ICE751I 0 C5-K26318 C6-K90007 C7-K90000 C8-K23476 E4-K90007 C9-BASE   E5-K24705 E6-K18181 E7-K24705
 ICE193I 0 ICEAM2 ENVIRONMENT IN EFFECT - ICEAM2 INSTALLATION MODULE SELECTED
 ICE088I 5 INREPOBJ.SPLICE01.        , INPUT LRECL = 44, BLKSIZE = 32736, TYPE = FB
 ICE093I 0 MAIN STORAGE = (MAX,6291456,6266880)
 ICE156I 0 MAIN STORAGE ABOVE 16MB = (5259264,5242880)
 ICE127I 0 OPTIONS: OVFLO=RC0 ,PAD=RC0 ,TRUNC=RC0 ,SPANINC=RC16,VLSCMP=N,SZERO=Y,RESET=Y,VSAMEMT=Y,DYNSPC=256
 ICE128I 0 OPTIONS: SIZE=6291456,MAXLIM=1048576,MINLIM=450560,EQUALS=Y,LIST=Y,ERET=RC16 ,MSGDDN=DFSMSG
 ICE129I 0 OPTIONS: VIO=N,RESDNT=ALL ,SMF=NO   ,WRKSEC=Y,OUTSEC=Y,VERIFY=N,CHALT=N,DYNALOC=(SYSDA   ,004),ABCODE=MSG
 ICE130I 0 OPTIONS: RESALL=4096,RESINV=0,SVC=109 ,CHECK=N,WRKREL=Y,OUTREL=Y,CKPT=N,STIMER=Y,COBEXIT=COB2
 ICE131I 0 OPTIONS: TMAXLIM=6291456,ARESALL=0,ARESINV=0,OVERRGN=16384,CINV=Y,CFW=Y,DSA=0
 ICE132I 0 OPTIONS: VLSHRT=N,ZDPRINT=Y,IEXIT=N,TEXIT=N,LISTX=N,EFS=NONE    ,EXITCK=S,PARMDDN=DFSPARM ,FSZEST=N
 ICE133I 0 OPTIONS: HIPRMAX=OPTIMAL,DSPSIZE=20  ,ODMAXBF=0,SOLRF=Y,VLLONG=N,VSAMIO=N,MOSIZE=MAX
 ICE235I 0 OPTIONS: NULLOUT=RC0
 ICE084I 0 BSAM ACCESS METHOD USED FOR SALIDA1
 ICE084I 0 BSAM ACCESS METHOD USED FOR T2
 ICE750I 0 DC 4004 TC 0 CS DSVVV KSZ 11 VSZ 11
 ICE752I 0 FSZ=91 RC  IGN=0 E  AVG=56 0  WSP=6 C  DYN=0 0
 ICE915I 0 MOFSZ=1,MOSZ=1,MOSYS=2676(3),MOSTG=2676,MEML=17592186040320(3)
 ICE917I 0 MOQP=1,MOQA=1,MOHI=168,MOLI=168,MOMI=168,MOTZ=4
 ICE916I 0 MOFR=0000,MOVR=VV
 ICE996I 0 ESM=1536768,ESO=1536768,ESR=0,ESP=4096,ESS=16384,CES=1536768,HSZ=524288
 ICE997I 0 HWSP=1,HMAX=685079,HES=0,ASV=685079,EQ=I1,HN=0
 ICE898I 0 OMAX=16063,NMAX=685079,TMAX=685079,CMAX=0,HU=0,BUN=0,MD=NM,DU=0,DR=0,HN=0
 ICE889I 0 CT=MAX     , SB=241, L=0, D=0000
 ICE901I 0 W 01NS13 02NS13 03NS13 04NS13
 ICE902I 0 O PS10  I PS10
 ICE751I 1 BA-K22788 BB-K24705 BC-K24705 E8-K24705
 ICE900I 0 CON=1,MUV=0,VOL=59,ENU=0,SBK=0,SRC=0,VEM=0
 ICE999I 0 PWK=0 PSP=0 SWK=0 SSP=0 TWK=0 TSP=0 RWK=0 RSP=0 AWK=0 AWP=0
 ICE090I 0 OUTPUT LRECL = 44, BLKSIZE = 32736, TYPE = FB   (SDB)
 ICE080I 0 IN MAIN STORAGE SORT
 ICE055I 0 INSERT 24, DELETE 91
 ICE054I 0 RECORDS - IN: 91, OUT: 24
 ICE134I 0 NUMBER OF BYTES SORTED: 4004
 ICE165I 0 TOTAL WORK DATA SET TRACKS ALLOCATED: 0 , TRACKS USED: 0
 ICE199I 0 MEMORY OBJECT STORAGE USED = 1M BYTES
 ICE180I 0 HIPERSPACE STORAGE USED = 0K BYTES
1ICE188I 0 DATA SPACE STORAGE USED = 0K BYTES
 ICE891I 1 6258176 WMAIN, 8704 CMAIN, MAX CALLOC, N SCN, B BA, 0 AZ, 0 BZ, NN QC
 ICE892I 1 44 RIN  32736 BLI  32736 BLO  56 RUN  56624 BUN  2817 CPU  00 CVC
 ICE893I 1 90 XIN 25 WIN 16382 GIN NDEY PFP4  BJJ CMBB0 CIX UPTH LMK VS   RUX
 ICE894I 0 1 STR  0 MOR  0 IPB  30 OPB  0 CYL  I   MN
 ICE885I 1 DAT 00 DSR 0007 BINS 16382 BSZ 64 RCP 55 AJC 0 RLC 0 DUNIT 64
 ICE888I 1 INIO1 90 AXIO1 90 W1 50 INIO3 30 AXIO3 30 BRUNS 1 VDN
 ICE895I 0 0 MUNIT  0 SUNIT  0 OUNIT
 ICE896I 0 0 SET  0 DEXTOT  0 BLK   91 CSZ  4 WE
 ICE804I 1 SORTWK04 EXCP COUNT: 1
 ICE804I 1 SORTWK03 EXCP COUNT: 1
 ICE804I 1 SORTWK02 EXCP COUNT: 1
 ICE804I 1 SORTWK01 EXCP COUNT: 1
 ICE052I 0 END OF DFSORT


Could you help us out please?

Thanks a lot in advance

Best Regards

Oliver
Back to top
View user's profile Send private message
sqlcode1

Active Member


Joined: 08 Apr 2010
Posts: 577
Location: USA

PostPosted: Thu Jun 30, 2011 9:04 pm
Reply with quote

ojdiaz,
Quote:
using the Splice function to validate if a record in file B(POBJ) exists in a catalog File A(CAMPA) by comparing their Keys.

Why do you think below records from FILE2 should not be selected? They are orphan as well.
Code:

000000000DDD0000000011                    22
0000333333330000000012                    22

Assuming below is typo as well in your post and it should be all 0s before 3. If this is not typo, your ON definition is wrong, you need ON(1,12,CH). Also, if this is not typo, the record becomes orphan and needs to selected in output.
Code:
00000 0000030000000013

Try below cards..
Code:

//TOOLIN DD *                                   
  COPY FROM(CAMPA) TO(T2) USING(CTL1)           
  COPY FROM(POBJ)  TO(T2) USING(CTL2)           
  SPLICE FROM(T2) TO(SALIDA1) ON(1,12,ZD) -     
  WITH(13,10) -                                 
  WITH(44,01) -                                 
  WITHALL KEEPNODUPS KEEPBASE USING(CTL3)       
/*                                               
//CTL1CNTL DD *                                 
   INREC BUILD=(01,12,10X,20X,C'11')             
/*                                               
//CTL2CNTL DD *                                 
   INREC BUILD=(01,12,SEQNUM,10,ZD,20X,C'22')   
/*                                               
//CTL3CNTL DD *                                 
   OUTFIL FNAMES=SALIDA1,INCLUDE=(43,2,ZD,EQ,22)
/*                                               

OUTPUT ORPHAN RECORDS -BASED ON YOUR SHOWN T2 FILE
Code:

000000000DDD0000000011                    22
0000333333330000000012                    22
9999999999990000000005                    22
9999999999990000000010                    22
9999999999990000000015                    22


Quote:
We have done this other times and it works, fine, but in this shop, I'm not sure what might be happening.
Probably you didn't had dups in FILE2 on other shop. Guessing...

And because you are using temp. file anyways... this can also be done without using SPLICE and using GROUP.

Thanks,
Back to top
View user's profile Send private message
enrico-sorichetti

Superior Member


Joined: 14 Mar 2007
Posts: 10873
Location: italy

PostPosted: Thu Jun 30, 2011 10:04 pm
Reply with quote

and ...
Code:
ICE201I E ....


Your sort seems also pretty old !
Back to top
View user's profile Send private message
ojdiaz

New User


Joined: 19 Nov 2008
Posts: 98
Location: Spain

PostPosted: Thu Jun 30, 2011 11:53 pm
Reply with quote

Hello sqlcode1. Thanks for your reply

About the results, maybe i wasn't clear in my statement. I just used the 999999999999 key field as an example of the behavior I noted that was wrong, that one of the records, the BASE record was "missing" after the Splice.

The card you included in your example was omitted on purpose from the example. I didn't selected the records at this time, so I could review all the spliced recors and check if everything was in order. Once the splice was working ok we would included the aforementioned card

Code:

//CTL3CNTL DD *                                 
   OUTFIL FNAMES=SALIDA1,INCLUDE=(43,2,ZD,EQ,22)
/*                       


In regards with the blank before the 3, that was not a typo but the file itself. We edited those records for the test and I see now what you mention about the error in format. The rigth format is indeed ZD since it is a numeric field, though i don't know if it works wrong if it has an invalid numeric field

Group is not an option basically for what enrico-sorichetti said, this shop as a very outdated sort version, and NO, sadly, it is out of the question to ask for an upgrade.

Thanks anyway guys
Back to top
View user's profile Send private message
enrico-sorichetti

Superior Member


Joined: 14 Mar 2007
Posts: 10873
Location: italy

PostPosted: Thu Jun 30, 2011 11:58 pm
Reply with quote

Quote:
this shop as a very outdated sort version, and NO, sadly, it is out of the question to ask for an upgrade.


make Your support earn their money, find out the fmid of Your sort product
and what PTFS are available to bring it up to a higher level

see here for what ptfs to apply ( they are free )

ibmmainframes.com/about33389.html
Back to top
View user's profile Send private message
sqlcode1

Active Member


Joined: 08 Apr 2010
Posts: 577
Location: USA

PostPosted: Fri Jul 01, 2011 12:23 am
Reply with quote

ojdiaz,
Quote:
In regards with the blank before the 3, that was not a typo but the file itself. We edited those records for the test and I see now what you mention about the error in format. The rigth format is indeed ZD since it is a numeric field, though i don't know if it works wrong if it has an invalid numeric field

May be someone from DFSort team can correct me but... This happens because ZD is converted to packed for the splice/join which converts spaces to zeros.

If you are expecting spaces, then ZD is not the correct format, rather CH is the correct format. Run the same job with spaces in the field and ON as ZD. You will notice that space is converted to 0 in/after the splice and because you already have a record with 0 in file1, record with space in file2 is no longer considered orphan.

Regardless, I hope that the given card worked for what you asked.

Thanks,
Back to top
View user's profile Send private message
Skolusu

Senior Member


Joined: 07 Dec 2007
Posts: 2205
Location: San Jose

PostPosted: Fri Jul 01, 2011 2:37 am
Reply with quote

ojdiaz,

1. You are running DFSORT V1R5 which is out of service.

2. You are getting the wrong results as you are missing the WITHALL keyword on your splice statement. You need WITHALL as your File2 has duplicates on the key.

use the following control cards. I assumed that you only want the unmatched records '22'


Code:

//TOOLIN DD *                                                       
  COPY FROM(CAMPA) TO(T2) USING(CTL1)                               
  COPY FROM(POBJ) TO(T2) USING(CTL2)                                 
  SPLICE FROM(T2) TO(SALIDA1) ON(1,12,ZD) WITH(44,1) WITH(13,10) -   
  WITHALL KEEPNODUPS KEEPBASE USING(CTL3)                           
//CTL1CNTL DD *                                                     
   OUTREC FIELDS=(PMEC3020-COD-CAMPA,10X,20X,C'11')                 
//CTL2CNTL DD *                                                     
   OUTREC FIELDS=(PMEC3010-COD-CAMPA,SEQNUM,10,ZD,20X,C'22')         
//CTL3CNTL DD *                                                     
   OUTFIL INCLUDE=(43,2,ZD,EQ,22),BUILD=(1,42)                       
//*


sqlcode1 wrote:
May be someone from DFSort team can correct me but... This happens because ZD is converted to packed for the splice/join which converts spaces to zeros.


Sqlcode1,

You are wrong. Where did you did get such information ? DFSORT does not perform any such conversions. Please don't assume
Back to top
View user's profile Send private message
sqlcode1

Active Member


Joined: 08 Apr 2010
Posts: 577
Location: USA

PostPosted: Fri Jul 01, 2011 4:10 am
Reply with quote

Skolusu,
Thanks for the clarification on this.

Thanks,
Back to top
View user's profile Send private message
enrico-sorichetti

Superior Member


Joined: 14 Mar 2007
Posts: 10873
Location: italy

PostPosted: Fri Jul 01, 2011 4:23 am
Reply with quote

Quote:
1. You are running DFSORT V1R5 which is out of service.


since when did IBM change the <in service> <out of service> definition ? icon_biggrin.gif

being out of service simply implies ( IIRC ) that IBM will not accept any new apars against the product, nor carry on any problem determination on it,
not that it would stop providing existing PTFs for it

and from the link posted seems that it should be possible to bring DFSORT 1.5 up to the G level
Quote:
the G indicates you have the November, 2009 DFSORT functions (JOINKEYS, TOJUL, TOGREG, WEEKDAY, etc) and all of the earlier functions. This function level corresponds to z/OS DFSORT V1R5 PTF UK51706


better than nothing I guess !
Back to top
View user's profile Send private message
Skolusu

Senior Member


Joined: 07 Dec 2007
Posts: 2205
Location: San Jose

PostPosted: Fri Jul 01, 2011 5:10 am
Reply with quote

enrico-sorichetti,

DFSORT V1R5 can run on z/OS V1R5 - z/OS VR19. DFSORT service is tied to z/OS being in service. Here is a webpage which gives you the end of service dates for z/OS.

www.ibm.com/systems/z/os/zos/support/zos_eos_dates.html

The latest release DFSORT V1R5 can run is z/OS V1R9 and its end of service date is September 30 2010. However The IBM Lifecycle Extension for z/OS V1.9 provides fee-based corrective (fix, bypass, or restriction to a problem) service for up to two years beyond the withdrawal of service dates for z/OS V1.9.
Back to top
View user's profile Send private message
Bill Woodger

Moderator Emeritus


Joined: 09 Mar 2011
Posts: 7309
Location: Inside the Matrix

PostPosted: Sun Jul 03, 2011 5:18 am
Reply with quote

ojdiaz wrote:
[...]

In regards with the blank before the 3, that was not a typo but the file itself. We edited those records for the test and I see now what you mention about the error in format. The rigth format is indeed ZD since it is a numeric field, though i don't know if it works wrong if it has an invalid numeric field

[...]


If you want to set up invalid numeric data for your test, you have to do a little more. A space, x'40', in the left-most bytes of a zoned decimal will be treated as a zero in any language. The '4' is in the "zone" part of the byte, and will be ignored. The '0' is numeric in the number part of the byte, and that will be the value for that byte in a numeric operation.

If you want to see what happens with something really not numeric, find a keyboard character with a non-numeric in the right-hand half of the byte. Or, put the space, or anything else which has an invalid sign (0-9) in the first half of the byte, as the last byte (which should contain a valid sign in the first half-byte (A-F).

If you want to have DFSORT find invalid numeric data for you, look at VERIFY in the manual.

I see you have Cobol. It works the same.

PIC 999.

If this contains two spaces followed by a zero, x'4040F0', you can "successfully" use it in numeric operations.

If this contains two zeros and a space, x'F0F040', you will get a(n) S0C7.

If this contains x'4BF0FA0', S0C7. x'F0F0A2', it "works".

For numeric fields from external files, you'd use a NUMERIC test in Cobol. For DFSORT, see how VERIFY operates for you.
Back to top
View user's profile Send private message
ojdiaz

New User


Joined: 19 Nov 2008
Posts: 98
Location: Spain

PostPosted: Tue Jul 05, 2011 1:23 pm
Reply with quote

Skolusu

Thanks. That was the problem. Sorry for the silly question, but we were watching over and over and we didn't realized that the operator was missing. We've got the desired results.

Sadly, i don't know but shops around this parts won't upgrade the software, I don't know why ¬_¬
Back to top
View user's profile Send private message
dick scherrer

Moderator Emeritus


Joined: 23 Nov 2006
Posts: 19244
Location: Inside the Matrix

PostPosted: Tue Jul 05, 2011 8:26 pm
Reply with quote

Quote:
It's time to kick ass and chew bubble gum... And I'm all outta gum
Noticed this long, long ago and do not believe i mentioned it previously.

The phrase is "time to kick ass or chew bubble gum... And I'm all outta gum".

icon_smile.gif

d
Back to top
View user's profile Send private message
ojdiaz

New User


Joined: 19 Nov 2008
Posts: 98
Location: Spain

PostPosted: Wed Jul 06, 2011 5:40 pm
Reply with quote

Really? I heard the phrase for the first time a long time ago when i first played Duke Nukem 3D and he said AND. At that time that was what it sounded to me.

Hmm.. I couln't stop my self. I checked it, HERE , and around the 26th second he says it, and it says AND. Does the phrase has some origin other than the game? As I said, that was the first time i heard it, around 1995 or 96 icon_biggrin.gif

regards!

sorry for the off-topic though icon_wink.gif
Back to top
View user's profile Send private message
dick scherrer

Moderator Emeritus


Joined: 23 Nov 2006
Posts: 19244
Location: Inside the Matrix

PostPosted: Wed Jul 06, 2011 7:50 pm
Reply with quote

Hello,

The phrase was quite common more than 25 year before Duke Nukem (any version) was invented. . . icon_smile.gif They published a mis-quote and to some/many younger people, it stuck icon_cool.gif

In our original, i don't remember "bubble" - it was simply "time to kick ass or chew gum, and i'm all outta gum". . .

d
Back to top
View user's profile Send private message
Bill Woodger

Moderator Emeritus


Joined: 09 Mar 2011
Posts: 7309
Location: Inside the Matrix

PostPosted: Wed Jul 06, 2011 8:36 pm
Reply with quote

I was intrigued enough to google (doesn't take much, does it?).

There are claims that it was an Ad Lib. It looks more like a fluffed line (Like the Neil Armstrong thing.), unless the intention was to provoke thought(!)
Back to top
View user's profile Send private message
ojdiaz

New User


Joined: 19 Nov 2008
Posts: 98
Location: Spain

PostPosted: Thu Jul 07, 2011 2:21 pm
Reply with quote

dick scherrer wrote:
Hello,

The phrase was quite common more than 25 year before Duke Nukem (any version) was invented. . . icon_smile.gif They published a mis-quote and to some/many younger people, it stuck icon_cool.gif

In our original, i don't remember "bubble" - it was simply "time to kick ass or chew gum, and i'm all outta gum". . .

d


I see.. I did some research and it turns out that many of Duke's phrases are "borrowed", like some Dirty Harry quotes I think. It is fun though icon_cool.gif. Guess I'm one of those "younglins" (don't aske my real age icon_razz.gif ) in wich the mis-quote was stuck, heheh
Back to top
View user's profile Send private message
dick scherrer

Moderator Emeritus


Joined: 23 Nov 2006
Posts: 19244
Location: Inside the Matrix

PostPosted: Thu Jul 07, 2011 7:47 pm
Reply with quote

Quote:
Guess I'm one of those "younglins" (don't aske my real age ) in wich the mis-quote was stuck, heheh
When things attract my attention, i try to let people know . . .

In the 80's i was on a contract in Phoenix, AZ, USA and one of my daughters had a free airline ticket and flew "out west" for most of a week. Part of her trip was to visit the Embry Riddle University campus in Prescott, AZ. We stopped at a little roadside gas station and called my wife to tell her that in addition to a husband, she also had a daughter in AZ. Mom must have asked daughter just where we were and my daughter told her we were somewhere in East BuFU (slang for in the middle of nowhere). Unfortunately East BuFu is (was) a rather notoriously named place (East Bum F**k). After we hung up, i asked her where she came up with that locale and her answer was "that's what everyone calls the boonies". When i gave her the translation, she was more than a little surprised/concerned - "My Mom doesn't know i said that?". I told her not to worry - it went right by Mom - if Mom had caught it, we might still be on that phone. . .

icon_smile.gif
Back to top
View user's profile Send private message
View previous topic :: :: View next topic  
Post new topic   Reply to topic View Bookmarks
All times are GMT + 6 Hours
Forum Index -> DFSORT/ICETOOL

 


Similar Topics
Topic Forum Replies
No new posts Shift left VB record without x00 endi... DFSORT/ICETOOL 11
No new posts how to calculate SUM value for VB fil... DFSORT/ICETOOL 1
No new posts how to calculate SUM for VB file usin... JCL & VSAM 1
No new posts Null values are considered in Total c... DFSORT/ICETOOL 6
No new posts Join multiple records using splice DFSORT/ICETOOL 5
Search our Forums:

Back to Top