Assigning arithmetic results (MOVE or COMPUTE)
When assigning a number to a data item, consider using
the COMPUTE
statement instead of the MOVE
statement.
About this task
Move w to z
Compute z = w
In the example above,
the two statements in most cases have the same effect. The MOVE
statement
however carries out the assignment with truncation. You can use the DIAGTRUNC
compiler
option to request that the compiler issue a warning for MOVE
statements
that might truncate numeric receivers.
When significant left-order
digits would be lost in execution, the COMPUTE
statement
can detect the condition and allow you to handle it. If you use the ON
SIZE ERROR
phrase of the COMPUTE
statement,
the compiler generates code to detect a size-overflow condition. If
the condition occurs, the code in the ON SIZE ERROR
phrase
is performed, and the content of z
remains unchanged.
If you do not specify the ON SIZE ERROR
phrase, the
assignment is carried out with truncation. There is no ON
SIZE ERROR
support for the MOVE
statement.
You
can also use the COMPUTE
statement to assign the
result of an arithmetic expression or intrinsic function to a data
item. For example:
Compute z = y + (x ** 3)
Compute x = Function Max(x y z)
You can assign the results of date,
time, mathematical, and other calculations to data items by using Language Environment® callable services. Language Environment services are available through
a standard COBOL CALL
statement, and the values they
return are passed in the parameters of the CALL
statement.
For example, you can call the Language Environment service
CEESIABS to find the absolute value of a data item by coding the following
statement:
Call 'CEESIABS' Using Arg, Feedback-code, Result.
As a result of this call, data item Result
is
assigned the absolute value of the value in data item Arg
;
data item Feedback-code
contains the return code
that indicates whether the service completed successfully. You have
to define all the data items in the DATA DIVISION
using
the correct descriptions according to the requirements of the particular
callable service. For the example above, the data items could be defined
as follows:
77 Arg Pic s9(9) Binary.
77 Feedback-code Pic x(12) Display.
77 Result Pic s9(9) Binary.
DIAGTRUNC
Intrinsic functions (Enterprise COBOL for z/OS® Language Reference)
Language Environment Programming Reference (Callable services)