Syncsort Community

Smarter Solutions to Today's Data Integration Challenges

Using Data Dictionary Symbols in the STARTPOS and ENDPOS parameters in FINDREP

I use Data Dictionary Symbols a lot and discovered that I can not use a symbol in the STARTPOS or ENDPOS parameter of the FINDREP option.

FINDREP=(IN=(C' '),OUT=C'0',STARTPOS=00234,ENDPOS=00234),

Is this a restriction in the use of Data Dictionary Symbols?  If so, can I request an enhancement to allow for this ability?

Views: 373

Replies to This Discussion

Dan:

I am not aware of any restriction against using symbols with FINDREP's STARTPOS and ENDPOS. Are you receiving a syntax error? Would it be possible to email me a copy of the complete job listing to review (including your SYMNAMES definitions)? Please send to bwood@syncsort.com.

Brian Wood

Customer Service Representative
Syncsort Incorporated
P: 201-930-8260    
E:bwood@syncsort.com
  zos_tech@syncsort.com

Hi Brian,

I am not sure if Dan has already sent you a sample of the job, but here is a sample that works without symbols but fails with symbols.

Example that works when symbols are nto used -

//COPYFILE EXEC PGM=SYNCTOOL,COND=(0,NE)
//INPUTFIL DD   *
1|FNM1F|LNAME
2|FNM2F|LNAM2
/*
//OUTPUTFI DD   SYSOUT=*
//SYMNAMES DD   *
FPOS,3
EPOS,6
//TOOLIN   DD   *
  COPY FROM(INPUTFIL) USING(REFM)
/*
//REFMCNTL DD   *
  INREC IFTHEN=(WHEN=INIT,
                   FINDREP=(STARTPOS=3,ENDPOS=6,
                            IN=(C'F'),OUT=(C'*')))
  OUTFIL FNAMES=OUTPUTFI
/*
//SYMNOUT  DD   SYSOUT=*
//TOOLMSG  DD   SYSOUT=*
//DFSMSG   DD   SYSOUT=*

Output in the spool -

---+----1----+----2----+----3----+----4----+----5----
********************************* TOP OF DATA *******
1|*NM1F|LNAME
2|*NM2F|LNAM2
******************************** BOTTOM OF DATA *****

DFSMSG Listing -

 REFMCNTL :
   INREC IFTHEN=(WHEN=INIT,
                    FINDREP=(STARTPOS=3,ENDPOS=6,
                             IN=(C'F'),OUT=(C'*')))
   OUTFIL FNAMES=OUTPUTFI
 DATA DICTIONARY SYMBOLS SUBSTITUTED :
 INREC IFTHEN=(WHEN=INIT,FINDREP=(STARTPOS=3,ENDPOS=6,IN=(C'F'),OUT=(C'*')))
 OUTFIL FNAMES=OUTPUTFI
 PARMLIST :
 OPTION RESINV=0,ARESINV=0,MSGDDN=DFSMSG,SORTIN=INPUTFIL,SORTDD=REFM,COPY
 DATA DICTIONARY SYMBOLS SUBSTITUTED :
 OPTION RESINV=0,ARESINV=0,MSGDDN=DFSMSG,SORTIN=INPUTFIL,SORTDD=REFM,COPY
 WER428I  CALLER-PROVIDED IDENTIFIER IS "0001"
 WER276B  SYSDIAG= 2260296, 17081035, 17081035, 16923300
 WER164B  6,884K BYTES OF VIRTUAL STORAGE AVAILABLE, MAX REQUESTED,
 WER164B     0 BYTES RESERVE REQUESTED, 323,836 BYTES USED
 WER146B  32K BYTES OF EMERGENCY SPACE ALLOCATED
 WER108I  INPUTFIL : RECFM=FB   ; LRECL=    80; BLKSIZE=    80
 WER073I  INPUTFIL : DSNAME=ABCDEF.ABCDEFS2.J0017476.D0000101.?
 WER257I  INREC RECORD LENGTH =    80
 WER110I  OUTPUTFI : RECFM=FB   ; LRECL=    80; BLKSIZE=    80
 WER074I  OUTPUTFI : DSNAME=ABCDEF.ABCDEFS2.J0017476.D0000105.?
 WER410B  5,856K BYTES OF VIRTUAL STORAGE AVAILABLE ABOVE THE 16MEG LINE,
 WER410B     0 BYTES RESERVE REQUESTED, 209,148 BYTES USED
 WER405I  OUTPUTFI :  DATA RECORDS OUT          2; TOTAL RECORDS OUT          2
 WER211B  SYNCSMF  CALLED BY SYNCSORT; RC=0000
 WER416B  BSAM WAS USED FOR INPUTFIL
 WER416B  OUTFIL WAS USED FOR REFMOUT
 WER054I  RCD IN          2, OUT          2
 WER169I  RELEASE 1.4 BATCH 0520 TPF LEVEL 0.1
 WER052I  END SYNCSORT - ABCDEFS2,COPYFILE,,DIAG=C000,42C6,E886,00E4,886A,6DCA,AA88,0462
******************************** BOTTOM OF DATA ********************************
****************************************************************************************************************************************

Example that doesn't work when symbols are used -

//COPYFILE EXEC PGM=SYNCTOOL,COND=(0,NE)
//INPUTFIL DD   *
1|FNM1F|LNAME
2|FNM2F|LNAM2
/*
//OUTPUTFI DD   SYSOUT=*
//SYMNAMES DD   *
FPOS,3
EPOS,6
//TOOLIN   DD   *
  COPY FROM(INPUTFIL) USING(REFM)
/*
//REFMCNTL DD   *
  INREC IFTHEN=(WHEN=INIT,
                   FINDREP=(STARTPOS=FPOS,ENDPOS=EPOS,
                            IN=(C'F'),OUT=(C'*')))
  OUTFIL FNAMES=OUTPUTFI
/*
//SYMNOUT  DD   SYSOUT=*
//TOOLMSG  DD   SYSOUT=*
//DFSMSG   DD   SYSOUT=*

DFSMSG Listing -

 REFMCNTL :
   INREC IFTHEN=(WHEN=INIT,
                    FINDREP=(STARTPOS=FPOS,ENDPOS=EPOS,
                             IN=(C'F'),OUT=(C'*')))
   OUTFIL FNAMES=OUTPUTFI
 DATA DICTIONARY SYMBOLS SUBSTITUTED :
 INREC IFTHEN=(WHEN=INIT,FINDREP=(STARTPOS=FPOS,ENDPOS=EPOS,IN=(C'F'),OUT=(C'*')
                        *
 )
 OUTFIL FNAMES=OUTPUTFI
 PARMLIST :
 OPTION RESINV=0,ARESINV=0,MSGDDN=DFSMSG,SORTIN=INPUTFIL,SORTDD=REFM,COPY
 DATA DICTIONARY SYMBOLS SUBSTITUTED :
 WER428I  CALLER-PROVIDED IDENTIFIER IS "0001"
 WER268A  INREC STATEMENT   : SYNTAX ERROR
 WER211B  SYNCSMF  CALLED BY SYNCSORT; RC=0000
******************************** BOTTOM OF DATA ********************************

Dan & MFRookie:

My testing with Syncsort MFX confirms the same limitation, as does my testing with DFSORT. This appears to be, at an initial level, a compatibility issue. I will pass on the suggestion that this be considered for a possible future enhancement.

Brian Wood
Customer Service Representative
Syncsort Incorporated
P: 201-930-8260
E: zos_tech@syncsort.com

Thanks Brain, for confirming it.

We are hoping that it gets resolved in the next version.

RSS

Members

Badge

Loading…

The place for Syncsort customers to connect with your peers, ask questions, exchange ideas, find resources, and share best practices.

© 2014   Created by Lauren Rabin.

Badges  |  Report an Issue  |  Terms of Service