z/OS DFSORT Application Programming Guide
Previous topic | Next topic | Contents | Contact z/OS | Library | PDF


Notes for symbols

z/OS DFSORT Application Programming Guide
SC23-6878-00

  • EFS programs cannot be used with symbol processing.
  • DFSORT or ICETOOL scans each SYMNAMES statement for errors, and prints an error message for the first error detected. A marker ($) is printed directly below the SYMNAMES statement near the error, if appropriate.

    Scanning stops at the first error, and then continues with the next SYMNAMES statement. However, once an error is detected, positions generated by using an asterisk (*) for p or POSITION,symbol in subsequent statements will not be checked for errors. DFSORT and ICETOOL terminate after all SYMNAMES statements are scanned if an error is detected in any statement.

  • If DFSORT or ICETOOL detects an error in a control statement or operator statement during the substitution phase (that is, while attempting to substitute values for symbols), it may either:
    • print the original statement in error followed by a $ marker (if appropriate) and an error message, continue the substitution phase with the next statement and terminate when the substitution phase is complete, or
    • stop performing substitution for the statement in error, continue with the next statement and let processing after the substitution phase handle the error. It is possible in this case for a symbol, rather than a substituted value, to appear in a transformed statement.
  • If the substitution phase is successful, DFSORT and ICETOOL will substitute values for symbols wherever symbols are allowed. Substituted values which are invalid for a particular statement or operand will be detected after the substitution phase. This makes it easier to determine the cause of the error. For example, if SYMNAMES contains:
    Sym1,5,4,ZD
    Con1,'1234'
    Con2,1234
    the statement:
     INCLUDE COND=(Sym1,EQ,Con1)
    will be transformed to the following during the substitution phase:
     INCLUDE COND=(5,4,ZD,EQ,C'1234')
    An ICE114A message with a $ marker under C'1234' will then be issued for the statement because a ZD field cannot be compared to a character constant. In this example, the error could be fixed by using Con2 (a decimal constant) in the statement instead of Con1 or by redefining Con1 as a decimal constant.
  • If you use a temporary or permanent message data set, it is best to specify a disposition of MOD to ensure you see all messages and control statements in the message data set. In particular, if you use symbols processing and do not use MOD, you will not see the original control statements unless Blockset is selected.
  • If you rearrange your records in any way (for example, using E15, E35, INREC, OUTREC or OUTFIL) and want to use symbols for the rearranged records, be sure to use symbols that map to the new positions of your fields. For example, if you use a SYMNAMES data set with the following statements:
    Field1,1,5,ZD
    Field2,*,6,ZD
    Field3,*,3,ZD
    Field4,*,4,ZD
    for this INREC statement:
     INREC FIELDS=(Field2,Field4)
    the resulting records will only contain Field2 and Field4. If you want to use symbols for the rearranged records (for example, in a SORT statement), you will need to use a SYMNAMES data set with symbols that map to the rearranged records, such as:
    New_Field2,1,6,ZD
    New_Field4,*,4,ZD
    If you use unique symbols for the rearranged fields, as in the previous example, you can concatenate the old and new symbol data sets together and use the old and new symbols where appropriate, as in this example:
     INREC FIELDS=(Field2,Field4)
     SORT FIELDS=(New_Field2,A,New_Field4,A)

Go to the previous page Go to the next page




Copyright IBM Corporation 1990, 2014