ICE151A TOO MANY {*INCLUDE|*OMIT| *INREC|*OUTREC|ddname}
IFTHEN n CONDITIONS ExplanationCritical. 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
Programmer responseReduce 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)
/*
|