z/OS DFSORT Messages, Codes and Diagnosis Guide
Previous topic | Next topic | Contents | Contact z/OS | Library | PDF


ICE151A

z/OS DFSORT Messages, Codes and Diagnosis Guide
SC23-6879-00

ICE151A
TOO MANY {*INCLUDE|*OMIT| *INREC|*OUTREC|ddname} IFTHEN n CONDITIONS

Explanation

Critical. The complexity of the conditions in a COND, INCLUDE, OMIT, TRLID, or IFTHEN WHEN, BEGIN or END operand caused dynamic areas to exceed the storage allowed for them. The specific cause of the error is identified as follows:
  • *INCLUDE indicates that the COND operand of the INCLUDE statement, or the INCLUDE operand of a JOINKEYS statement, caused the error. n is 0.
  • *OMIT indicates that the COND operand of the OMIT statement, or the OMIT operand of a JOINKEYS statement, caused the error. n is 0.
  • ddname and n=0 indicates that the INCLUDE, OMIT or TRLID operand of an OUTFIL statement caused the error. ddname identifies the first data set in the associated OUTFIL group.
  • *INREC indicates that an IFTHEN WHEN, BEGIN or END operand of the INREC statement caused the error. n identifies the number of the associated IFTHEN clause (starting at 1 for the first IFTHEN clause in the INREC statement).
  • *OUTREC indicates that an IFTHEN WHEN, BEGIN or END operand of the OUTREC statement caused the error. n identifies the number of the associated IFTHEN clause (starting at 1 for the first IFTHEN clause in the OUTREC statement).
  • ddname and n>0 indicates that an IFTHEN WHEN, BEGIN or END operand of an OUTFIL statement caused the error. ddname identifies the first data set in the associated OUTFIL group. n identifies the number of the associated IFTHEN clause (starting at 1 for the first IFTHEN clause in the OUTFIL statement).

System action

The program terminates.

Programmer response

Reduce the number of conditions, or the size of the constants, in the COND, INCLUDE, OMIT, TRLID, or IFTHEN WHEN, BEGIN or END operand that caused the problem. Alternatively, you may be able to avoid reducing the number of conditions, or the size of the constants, by using one of the following techniques:
  • If NOSZERO is in effect and you can treat numeric –0 and +0 values as signed (that is, different) for this application, use the SZERO option.
  • If possible, rewrite the conditions to use substring comparison tests (see z/OS DFSORT Application Programming Guide for details)
  • Use an INREC or OUTREC statement with multiple IFTHEN clauses to "OR" sets of conditions together, and set a "flag" after the end of each record that satisfies a condition. Use an OUTFIL statement to keep (INCLUDE) or delete (OMIT) the records which have the flag on, and then remove the flag.

    In the following example, the input data set has RECFM=FB and LRECL=80. a1 to an and b1 to bn represent relational conditions. We use an INREC statement to set a 'Y' flag in position 81 after the end of each record for which any specified condition is true. We use an OUTFIL statement to INCLUDE the records with a 'Y' in position 81, and then we remove the flag so the output records have the same length as the input records.

    //MULT  EXEC  PGM=ICEMAN   
    //SYSOUT    DD  SYSOUT=*   
    //SORTIN DD DSN=...   
    //SORTOUT DD DSN=...   
    //SYSIN    DD    *   
      OPTION COPY   
    * If a1,OR,a2,OR,...,an is true,   
    * set flag in 81 to 'Y'.
      INREC IFTHEN=(WHEN=(a1,OR,a2,OR,...,an),
                 OVERLAY=(81:C'Y')),   
    * If b1,OR,b2,OR,...,bn is true,   
    * set flag in 81 to 'Y'.
         IFTHEN=(WHEN=(b1,OR,b2,OR,...,bn),
           OVERLAY=(81:C'Y')),   
    * If none of the conditions is true,   
    * set flag in 81 to 'N'.
         IFTHEN=(WHEN=NONE,OVERLAY=(81:C'N'))
    * If the flag in 81 is 'Y', include the   
    * records.
      OUTFIL INCLUDE=(81,1,CH,EQ,C'Y'),   
    * Remove the flag byte.    
        OUTREC=(1,80)   
    /*

Go to the previous page Go to the next page




Copyright IBM Corporation 1990, 2014