Using sign conditions
Some applications use special values such as zeros in date fields to act as a trigger, that is, to signify that some special processing is required.
About this task
For example, in an Orders
file, a value of zero in Order-Date
might
signify that the record is a customer totals record rather than an
order record. The program compares the date to zero, as follows:
01 Order-Record.
05 Order-Date Pic S9(5) Comp-3 Date Format yyxxx.
. . .
If Order-Date Equal Zero Then . . .
However, this comparison is not valid because the literal value Zero
is
a nondate, and is therefore windowed against the assumed century window
to give a value of 1900000.
Alternatively,
you can use a sign condition instead of a literal comparison as follows.
With a sign condition, Order-Date
is treated as a
nondate, and the century window is not considered.
If Order-Date Is Zero Then . . .
This approach applies only if the operand in the sign condition is a simple identifier rather than an arithmetic expression. If an expression is specified, the expression is evaluated first, with the century window being applied where appropriate. The sign condition is then compared with the results of the expression.
You could use the UNDATE
intrinsic
function instead to achieve the
same result.