HP 3000 Manuals

Procedure Division (cont.) [ COBOL/HP-UX Language Reference for the Series 700 and 800 ] MPE/iX 5.0 Documentation


COBOL/HP-UX Language Reference for the Series 700 and 800

Procedure Division (cont.) 

Class Condition.   

Function 

The class condition determines whether the operand is numeric, or
alphabetic
________________________________________________________________________
|(ANS85)                                                               |
|or alphabetic-lower, or alphabetic-upper, or contains only the        |
|characters in the set of characters specified by the CLASS clause     |
|as defined in the SPECIAL-NAMES paragraph of the Environment          |
|Division.                                                             |
________________________________________________________________________

            

General Format 

	       Click here to view figure.
            

Syntax Rules 

   1.  The class of an operand is determined as follows:

          a.  An operand is numeric if it consists entirely of the
              characters 0, 1, 2, 3, ...  , 9, with or without an
              operational sign.

          b.  An operand is alphabetic if it consists entirely of the
              uppercase letters A, B, C, ...  , Z, space,  or the 
              lowercase letters a, b, c, ... , z, space, (ANS85) or any
              combination of the uppercase  and lowercase (ANS85) letters
              and spaces.
________________________________________________________________________
|(ANS85)                                                               |
|                                                                      |
|                                                                      |
|                                                                      |
|c.  An operand is alphabetic-lower if it consists entirely of the     |
|    lowercase letters a, b, c, ...  , z, and space.                   |
|                                                                      |
|d.  An operand is alphabetic-upper if it consists entirely of the     |
|    uppercase letters A, B, C, ...  , Z, and space.                   |
|                                                                      |
|e.  An operand is in conformance to class-name-1, if it consists      |
|    entirely of the characters listed in the definition of            |
|    class-name-1 in the SPECIAL-NAMES paragraph.                      |
|                                                                      |
________________________________________________________________________

            

   2.  Identifier-1 must reference a data item whose usage is explicitly
       or implicitly DISPLAY, or in the case of the NUMERIC test, as
       DISPLAY,

         COMPUTATIONAL, COMPUTATIONAL-X, (MF)

         COMPUTATIONAL-3 (OSVS) (VSC2) (MF) (XOPEN)

         COMPUTATIONAL-5 (MF)

         or PACKED-DECIMAL. (VSC2) (MF)
________________________________________________________________________
|(ANS85)                                                               |
|                                                                      |
|                                                                      |
|                                                                      |
|3.  If identifier-1 is a function-identifier, it must reference an    |
|    alphanumeric function.                                            |
|                                                                      |
________________________________________________________________________

            

General Rules 

   1.  If identifier-1 is a zero-length item, then the result of the
       class test is always false.  It is also always false when "NOT" is
       used with a class test as a zero-length item.

   2.  When used, "NOT" and the next key word specify one class condition
       that defines the class test to be executed for truth value; for
       example, "NOT NUMERIC" is a truth test for determining that an
       operand is nonnumeric.

   3.  When the class-condition includes the word NOT, and identifier-1
       is a zero-length group-item, the result of the class test is
       always true.

   4.  The NUMERIC test cannot be used with an item whose data
       description describes the item as alphabetic or as a group item
       composed of elementary items whose data description indicates the
       presence of operational sign(s).  If the data description of the
       item being tested does not indicate the presence of an operational
       sign, the item being tested is determined to be numeric only if
       the contents are numeric and an operational sign is not present.
       If the data description of an elementary item being tested does
       indicate the presence of an operational sign, the item being
       tested is determined to be numeric only if the contents are
       numeric and a valid operational sign is present.  Valid
       operational signs for data items described with the SIGN IS
       SEPARATE clause are the standard data format characters, "+" and
       "-"; valid operational signs for data items not described with the
       SIGN IS SEPARATE clause are described in the section "Selection of
       Character Representation and Radix"  in the chapter COBOL 
       Concepts.

   5.  The ALPHABETIC test cannot be used with an item whose data
       description describes the item as numeric.  The item being tested
       is determined to be alphabetic only if the contents consist of any
       combination of the uppercase alphabetic characters "A" through "Z"
       and the space  and any combination of the lowercase alphabetic 
       characters "a" through "z" (ANS85) and the space.
________________________________________________________________________
|(OSVS) (VSC2) (MF)                                                    |
|The class condition cannot be used for external floating- point (USAGE|
|DISPLAY) or internal floating-point (USAGE COMP-1 and USAGE COMP-2)   |
|items.                                                                |
________________________________________________________________________

            
________________________________________________________________________
|(ANS85)                                                               |
|                                                                      |
|                                                                      |
|                                                                      |
|6.  The ALPHABETIC-LOWER test cannot be used with an item whose data  |
|    description describes the item as numeric.  The result of the test|
|    is true if the content of the data item referenced by identifier-1|
|    consists entirely of the lowercase alphabetic characters "a"      |
|    through "z" and space.                                            |
|                                                                      |
|7.  The ALPHABETIC-UPPER test cannot be used with an item whose data  |
|    description describes the item as numeric.  The result of the test|
|    is true if the content of the data item referenced by identifier-1|
|    consists entirely of the uppercase alphabetic characters "A"      |
|    through "Z" and space.                                            |
|                                                                      |
|8.  The class-name-1 test must not be used with an item whose data    |
|    description describes the item as numeric.                        |
|                                                                      |
________________________________________________________________________

            

Condition-Name Condition (Conditional Variable).   

Function 

In a condition-name condition, a conditional variable is tested to
determine whether or not its value is equal to one of the values
associated with a condition-name.

General Format 

     condition-name

Syntax Rules 
________________________________________________________________________
|(OSVS) (VSC2) (MF)                                                    |
|                                                                      |
|                                                                      |
|                                                                      |
|1.  Condition-names with DBCS and internal floating-point items are   |
|    allowed.                                                          |
|                                                                      |
________________________________________________________________________

            
________________________________________________________________________
|(MF)                                                                  |
|                                                                      |
|                                                                      |
|                                                                      |
|2.  Condition-names with external floating-point items are allowed.   |
|                                                                      |
________________________________________________________________________

            

General Rules 

   1.  If the condition-name is associated with a range or ranges of
       values, then the conditional variable is tested to determine
       whether or not its value falls in this range, including the end
       values.

   2.  The rules for comparing a conditional variable with a
       condition-name value are the same as those specified for relation
       conditions.

   3.  The result of the test is true if one of the values corresponding
       to the condition-name equals the value of its associated
       conditional variable.

Switch-Status Condition.   

A switch-status condition determines the "on" or "off" status of one of
the nine (MF) COBOL switches named respectively SWITCH 0 through SWITCH 
8.  (MF) The value of each of these switches ("on" or "off" ) is set by
the operator at the commencement of execution of the COBOL object
program.  (See the discussion of run-time switches in your COBOL System 
Reference for details.)  The switch and the "on" or "off" value
associated with the condition must be named in the SPECIAL-NAMES
paragraph of the Environment Division in this chapter.

General Format 

     condition-name

The result of the test is true if the switch is set to the specified
position corresponding to the condition-name.

It is not possible to use the Switch-Status Condition to test if a switch
is set from within the program that sets the COBOL switches themselves.

Sign Condition.   

The sign condition determines whether or not the algebraic value of an
arithmetic expression is less than, greater than, or equal to zero.  The
general format for a sign condition is as follows:

	       Click here to view figure.
            

When used, "NOT" and the next keyword specify one sign condition that
defines that algebraic test to be executed for truth value; for example,
"NOT ZERO" is a truth test for a nonzero (positive or negative) value.
An operand is positive if its value is greater than zero, negative if its
value is less than zero, and zero if its value is equal to zero.  The
arithmetic expression must contain at least one reference to a variable.
________________________________________________________________________
|(OSVS)                                                                |
|ZEROS or ZEROES can be used instead of ZERO in a sign test.           |
________________________________________________________________________

            

Complex Conditions.   

A complex condition is formed by combining simple conditions, combined
conditions and/or complex conditions with logical connectors (logical
operators "AND" and "OR") or negating these conditions with logical
negation (the logical operator "NOT").  The truth value of a complex
condition, whether parenthesized or not, is that truth value which
results from the interaction of all the stated logical operators on the
individual truth values of simple conditions, or the intermediate truth
values of conditions logically connected or logically negated.

The logical operators and their meanings are:

Operator              Meaning                                                                                                        

AND                   Logical conjunction; the truth value is "true" if
                      both of the conjoined conditions are true; "false"
                      if one or both of the conjoined conditions is
                      false.

OR                    Logical inclusive OR; the truth value is "true" if
                      one or both of the included conditions is true;
                      "false" if both included conditions are false.

NOT                   Logical negation or reversal of truth value; the
                      truth value is "true" if the condition is false;
                      "false" if the condition is true.

The logical operators must be preceded by a space and followed by a
space.

Negated Simple Condition.   

A simple condition is negated through the use of the logical operator
"NOT".  The negated simple condition effects the opposite truth value for
a simple condition.  Thus the truth value of a negated simple condition
is "true" if and only if the truth value of the simple condition is
"false" ; the truth value of a negated simple condition is "false" if and
only if the truth value of the simple condition is "true".  The inclusion
in parentheses of a negated simple condition does not change the truth
value.

General Format 

     NOT simple-condition

Combined and Negated Combined Condition.   

A combined condition results from connecting conditions with one of the
logical operators "AND" or "OR".

General Format 

	       Click here to view figure.
            

Syntax Rules 

   1.  Condition may be:

          *   A simple condition

          *   A negated simple condition

          *   A combined condition

          *   A negated combined condition; that is, the "NOT" logical
              operator followed by a combined condition enclosed within
              parentheses

          *   Combinations of the above, specified according to the rules
              summarized in Table 3-9 .

   2.  Although parentheses need never be used when either "AND" or "OR"
       (but not both) is used exclusively in a combined condition,
       parentheses can be used to effect a final truth value when a
       mixture of "AND", "OR" and "NOT" is used.

General Rules 

   1.  In the absence of the relevant parenthesis in a complex condition,
       the precedence (that is, binding power) of the logical operators
       determines the conditions to which the specified logical operators
       apply and implies the equivalent parenthesis.  The order of
       precedence is "NOT", "AND" , "OR".  Thus, specifying "condition-1
       OR NOT condition-2 AND condition-3" implies and is equivalent to
       specifying "condition-1 OR ((NOT condition-2) AND condition-3)".

   2.  Where parentheses are used in a complex condition, precedence is
       used to determine the binding of conditions to logical operator.
       Parentheses can, therefore, be used to depart from the normal
       precedence of logical operators as specified above.  Thus, the
       example complex condition above can be given a different meaning
       by specifying it as a "(condition-1 OR (NOT condition-2)) AND
       condition-3".  (See the section "Condition Evaluation Rules"  
       later in this chapter.)

Table 3-9  indicates the ways in which conditions and logical
operators can be combined and parenthesized.  There must be a one-to-one
correspondence between left and right parentheses such that each left
parenthesis is to the left of its corresponding right parenthesis.

          Table 3-9.  Combinations of Conditions, Logical Operators, and Parentheses 
---------------------------------------------------------------------------------
|                   |                   |                   |                   |
| Element           | Permitted         | Element can be    | Element can be    |
|                   | location in       | preceded by only: | followed by only: |
|                   | conditional       |                   |                   |
|                   | expression        |                   |                   |
|                   |                   |                   |                   |
---------------------------------------------------------------------------------
|                   |                   |                   |                   |
| simple-condition  | Any               | OR, NOT, AND, (   | OR, AND,)         |
|                   |                   |                   |                   |
---------------------------------------------------------------------------------
|                   |                   |                   |                   |
| OR or AND         | Not first or last | simple-           | simple-condition, |
|                   |                   | condition,)       | NOT, (            |
|                   |                   |                   |                   |
---------------------------------------------------------------------------------
|                   |                   |                   |                   |
| NOT               | Not last          | OR, AND, (        | simple-condition, |
|                   |                   |                   | (                 |
|                   |                   |                   |                   |
---------------------------------------------------------------------------------
|                   |                   |                   |                   |
| (                 | Not last          | OR, NOT, AND, (   | simple-condition, |
|                   |                   |                   | NOT, (            |
|                   |                   |                   |                   |
---------------------------------------------------------------------------------
|                   |                   |                   |                   |
| )                 | Not first         | simple-           | OR, AND,)         |
|                   |                   | condition,)       |                   |
|                   |                   |                   |                   |
---------------------------------------------------------------------------------

Thus, the element pair "OR NOT" is permissible while the pair "NOT OR" is
not permissible; "NOT (" is permissible while "NOT NOT" is not
permissible.

Abbreviated Combined Relation Conditions.   

When simple or negated simple relation conditions are combined with
logical connectives in a consecutive sequence such that a succeeding
relation condition contains a subject or subject and relational operator
that is common with the preceding relation condition, and no parentheses
are used within such a consecutive sequence, any relation condition
except the first can be abbreviated by:

   *   The omission of the subject of the relation condition, or:

   *   The omission of the subject and relational operator of the
       relation condition.

General Format 

	       Click here to view figure.
            

Within a sequence of relation conditions both of the above forms of
abbreviation can be used.  The effect of using such abbreviations is as
if the last preceding stated subject were inserted in place of the
omitted subject, and the last stated relational operator were inserted in
place of the omitted relational operator.  The result of such implied
insertion must comply with the rules of Table 3-9 .  This insertion of
an omitted subject and/or relational operator terminates once a complete
simple condition is encountered within a complex condition.
________________________________________________________________________
|(OSVS)                                                                |
|The order of evaluation of the conditions can be prioritized by the   |
|use of parentheses (see example below).                               |
________________________________________________________________________

            

The interpretation applied to the use of the word "NOT" in an abbreviated
combined relation condition is as follows:
________________________________________________________________________
|(ANS85)                                                               |
|                                                                      |
|                                                                      |
|                                                                      |
|1.  If NOT is immediately followed by the word GREATER, >, LESS, <,   |
|    EQUAL, or =, excluding the relational operators GREATER THAN      |
|    OR EQUAL TO, >=, LESS THAN OR EQUAL TO, and <=, then the          |
|    word NOT is interpreted as part of the relational operator,       |
|    otherwise:                                                        |
|                                                                      |
________________________________________________________________________

            

2.  The "NOT" is interpreted as a logical operator and, therefore, the
    implied insertion of subject or relational operator results in a
    negated relation condition.

Some examples of abbreviated combined and negated combined relation
conditions and expanded equivalents follow.

Abbreviated Combined         Expanded Equivalent                                                                                     
Relation Condition 

a > b AND NOT < c OR d       ((a > b) AND (a NOT < c)) OR (a NOT < d)

a NOT EQUAL b OR c           (a NOT EQUAL b) OR (a NOT EQUAL c)

NOT a = b OR c               (NOT (a = b)) OR (a = c)

NOT (a GREATER b             OR < c) NOT ((a GREATER b) OR (a < c))

NOT (a NOT > b AND c AND     NOT ((((a NOT > b) AND (a NOT > c)) AND (NOT
NOT d                        (a NOT > d))))

x > a OR y AND z             x > a OR (x > y AND x > z)
________________________________________________________________________
|(OSVS)                                                                |
|                                                                      |
|                                                                      |
|                                                                      |
|x > a OR (y AND z)           x > a OR (x > y AND x > z)               |
|                                                                      |
|x > (a OR y) AND z           (x > a OR x > y) AND x > z               |
|                                                                      |
|x ( = a OR > b)              x = a OR x > b                           |
|                                                                      |
|x = a AND ( > b OR < z )     x = a AND ( x > b OR x < z )             |
|                                                                      |
________________________________________________________________________

            

a EQUAL b OR NOT GREATER OR  (a EQUAL b) OR (NOT (a GREATER OR EQUAL c))
EQUAL c OR d                 OR (a GREATER OR EQUAL d)

a EQUAL b OR NOT >=c OR d    (a EQUAL b) OR (NOT (a >= c)) OR (a >= d)

Condition Evaluation Rules.   

Parentheses can be used to specify the order in which individual
conditions of complex conditions are to be evaluated when it is necessary
to depart from the implied evaluation precedence.

Conditions within parentheses are evaluated first, and, within nested
parentheses, evaluation proceeds from the least inclusive condition to
the most inclusive condition.  When parentheses are not used, or
parenthesized conditions are at the same level of inclusiveness, the
following hierarchical order of logical evaluation is implied until the
final truth value is determined:
________________________________________________________________________
|(ANS85)                                                               |
|                                                                      |
|                                                                      |
|                                                                      |
|1.  Values are established for arithmetic expressions and functions if|
|    and when the conditions containing them are evaluated.  Similarly,|
|    negated conditions are evaluated if and when it is necessary to   |
|    evaluate the complex condition that they represent.  (See         |
|    "Formation and Evaluation Rules"  in the section Arithmetic    |
|    Expressions in this chapter.)                                     |
|                                                                      |
________________________________________________________________________

            

2.  Truth values for simple conditions are established in the following
    order:

    relation            (following the expansion of any abbreviated
                        relation condition)
    class
    condition-name
    switch-status
    sign

3.  Truth values for negated conditions are established.

4.  Truth values for combined conditions are established:  "AND" logical
    operators, followed by "OR" logical operators.

5.  Truth values for negated combined conditions are established.

6.  When the sequence of evaluation is not completely specified by
    parentheses, the order of evaluation of consecutive operations of the
    same hierarchical level is from left to right.

Common Phrases and General Rules for Statement Formats 

In the statement descriptions that follow, several phrases appear
frequently:  the ROUNDED phrase, the ON SIZE ERROR phrase the NOT ON SIZE 
ERROR phrase (ANS85) and the CORRESPONDING phrase.  Each of these phrases
is discussed below.

In the following paragraphs, the term "resultant- identifier" refers to
that identifier associated with the result of an arithmetic operation.

The ROUNDED Phrase.   

If, after decimal point alignment, the number of places in the fraction
of the result of an arithmetic operation is greater than the number of
places provided for the fraction of the resultant-identifier, truncation
is relative to the size provided for the resultant- identifier.  When
rounding is requested, the absolute value of the resultant-identifier is
increased by one whenever the most significant digit of the excess is
greater than or equal to five.

When the low-order integer positions in a resultant- identifier are
represented by the character "P" in the PICTURE for the resultant-
identifier, rounding or truncation occurs relative to the rightmost
integer position for which storage is allocated.
________________________________________________________________________
|(OSVS) (VSC2) (MF)                                                    |
|In a floating-point arithmetic operation, the ROUNDED phrase is       |
|treated as documentary; the result of a floating-point operation is   |
|always rounded.                                                       |
________________________________________________________________________

            

The ON SIZE ERROR Phraseand NOT ON SIZE ERROR Phrase (ANS85).   

If, after decimal point alignment, the absolute value of a result of an
arithmetic operation exceeds the largest value that can be contained in
the associated resultant-identifier, a size error condition exists.
Division by zero always causes a size error condition.[REV BEG] Note that
the results of division by zero when no ON SIZE ERROR phrase is
specified, are unpredictable.  [REV END] The size error condition applies
only to the final results, except in MULTIPLY and DIVIDE statements, in
which case the size error condition applies to the intermediate results
as well.
________________________________________________________________________
|(ANS85)                                                               |
|Violation of the rules for the evaluation of exponentiation always    |
|terminates the arithmetic operation and always causes a size error    |
|condition.                                                            |
________________________________________________________________________

            

If the ROUNDED phrase is specified, rounding takes place before checking
for size error.  When such a size error condition occurs, the subsequent
action depends on whether or not the SIZE ERROR phrase is specified, as
follows:

ON SIZE ERROR Phrase Not Specified 

When a size error condition occurs, the value of those resultant-
identifier(s) affected is undefined.  Values of resultant-identifier(s)
for which no size error condition occurs are unaffected by size errors
that occur for other resultant-identifier(s) during execution of this
operation.
________________________________________________________________________
|(ANS85)                                                               |
|After completion of the arithmetic operation, control is transferred  |
|to the end of the arithmetic statement and the NOT ON SIZE phrase, if |
|specified, is ignored.                                                |
________________________________________________________________________

            

Results of division by zero, when no ON SIZE ERROR is specified, are
unpredictable.  You can avoid this by using the CHECKDIV compiler
directive.  See your COBOL System Reference for details.

ON SIZE ERROR Phrase Specified 

When a size error condition occurs, then the values of resultant-
identifier(s) affected by the size errors are not altered.  Values of
resultant-identifier(s) for which no size error condition occurs are
unaffected by size errors that occur for other resultant-identifier(s)
during execution of this operation.  After completion of the execution of
this operation, the imperative statement in the SIZE ERROR phrase is
executed.

For the ADD statement with the CORRESPONDING phrase and the SUBTRACT
statement with the CORRESPONDING phrase, if any of the individual
operations produces a size error condition, the imperative statement in
the ON SIZE ERROR phrase is not executed until all of the individual
additions or subtractions are completed.
________________________________________________________________________
|(ANS85)                                                               |
|The NOT ON SIZE ERROR phrase, if specified, is ignored.               |
________________________________________________________________________

            
________________________________________________________________________
|The NOT ON SIZE ERROR Phrase                                          |
|                                                                      |
|(ANS85)                                                               |
|                                                                      |
|If the NOT ON SIZE ERROR phrase is specified for an arithmetic        |
|operation statement, and after execution of that statement a size     |
|error condition (as defined above) does not exist, then the NOT ON    |
|SIZE ERROR phrase, if specified is executed.  The ON SIZE ERROR       |
|phrase, if specified, is ignored, and the imperative statement        |
|associated with it is not executed.                                   |
|                                                                      |
|If an ON SIZE ERROR condition occurs, any NOT ON SIZE ERROR           |
|phrase is ignored whether or not an ON SIZE ERROR phrase is           |
|specified.                                                            |
|                                                                      |
|When both ON SIZE ERROR and NOT ON SIZE ERROR phrases are specified,  |
|and the statement in the phrase that is executed does not contain any |
|explicit transfer of control, then, if necessary, an implicit transfer|
|of control is made after execution of the phrase to the end of the    |
|arithmetic statement.                                                 |
________________________________________________________________________

            

The CORRESPONDING Phrase.   

In the text that follows d1 and d2 must each be identifiers that refer to
group items.  A pair of data items, one from d1 and one from d2
correspond if the following conditions exist:

   1.  A data item in d1 and a data item in d2 are not designated by the
       key word FILLER and have the same data-name and the same
       qualifiers up to, but not including, d1 and d2.

   2.  At least one of the data items is an elementary data item and the
       resulting move is legal according to the move rules in the case of
       a MOVE statement with the CORRESPONDING phrase, and both of the
       data items are elementary numeric data items in the case of the
       ADD statement with the CORRESPONDING phrase or the SUBTRACT
       statement with the CORRESPONDING phrase.

   3.  The description of d1 and d2 must not contain level-number 66, 77,
        78 (MF) or 88 or the USAGE IS INDEX clause.

   4.  A data item that is subordinate to d1 or d2 and contains a
       REDEFINES, RENAMES, OCCURS, USAGE IS INDEX or USAGE IS
       PROCEDURE-POINTER  or USAGE IS POINTER (MF) (VSC2) clause is
       ignored, as well as those data items subordinate to the data item
       that contains the REDEFINES, RENAMES, OCCURS, USAGE IS INDEX or  
       USAGE IS POINTER (MF) (VSC2) clause.  However, d1 and d2 can have
       REDEFINES or OCCURS clauses or be subordinate to data items with
       REDEFINES or OCCURS clauses.
________________________________________________________________________
|Neither d1 or d2 can be reference modified.  (ANS85)                  |
________________________________________________________________________

            

   5.  The name of each data item which satisfies the above conditions
       must be unique after application of the implied qualifiers.

Arithmetic Statements.   

The arithmetic statements are the ADD, COMPUTE, DIVIDE, MULTIPLY and
SUBTRACT statements.  Common features are as follows:

   1.  The data descriptions of the operands need not be the same; any
       necessary conversion and decimal point alignment are supplied
       throughout the calculation.

   2.  The maximum size of each operand is 18 decimal digits.  The
       composite of operands, which is a hypothetical data item resulting
       from the superimposition of specified operands in a statement
       aligned on their decimal points (see the sections "The ADD
       Statement" , "The DIVIDE Statement" , "The MULTIPLY
       Statement"  and "The SUBTRACT Statement"  later in this
       chapter) must not contain more than 18 decimal digits.

Overlapping Operands.   

When a sending and a receiving item in any statement share a part of
their storage areas, the result of the execution of such a statement is
undefined.

Multiple Results in Arithmetic Statements.   

The ADD, COMPUTE, DIVIDE, MULTIPLY and SUBTRACT statements can have
multiple results.  Such statements behave as though they had been written
in the following way:

   1.  A statement which accesses all data items that are part of the
       initial evaluation of the statement, performs all arithmetic
       necessary to arrive at the result to be stored in the receiving
       items, and stores that result in a temporary storage location.

   2.  A sequence of statements transferring or combining the value of
       this temporary location with each single resultant data item.
       These statements are considered to be written in the same
       left-to-right sequence in which the multiple results are listed.

The result of the statement:

     ADD a, b, c TO c, d (c), e

is equivalent to:

     ADD a, b, c GIVING temp
     ADD temp TO c
     ADD temp TO d (c)
     ADD temp TO e

and the result of the statement:

     MULTIPLY a(i) BY i, a(i)

is equivalent to:

     MOVE a(i) to temp
     MULTIPLY temp by i
     MULTIPLY temp BY a(i)

where temp is an intermediate result item provided by your COBOL system.

Incompatible Data.   

Except for the class condition (see the section Class Condition in this
chapter), when the contents of a data item are referenced in the
Procedure Division and the contents of that data item are not compatible
with the class specified for that data item by its PICTURE clause or 
function definition (ANS85) then the result of such a reference is
undefined.
________________________________________________________________________
|[REV BEG](MF)                                                         |
|The results of referencing a numeric field that contains nonnumeric,  |
|or otherwise invalid data, are undefined.  Such conditions may be     |
|detected, and give an error at run-time.  See your COBOL System       |
|Reference for details of the +F run-time switch.                      |
|                                                                      |
|When an alphabetic field which contains non-alphabetic data is        |
|referenced, your program will continue execution, but results may be  |
|undefined.[REV END]                                                   |
________________________________________________________________________

            

Signed Receiving Items.   

When the receiving item in an arithmetic statement or a MOVE statement is
a signed numeric or a signed numeric edited item, the sign is moved into
the receiving item independently of any truncation of the absolute
numeric data.  It is possible, therefore, for the numeric value to be
zero but for the sign to be negative.



MPE/iX 5.0 Documentation