# TPX Session Management for z/OS

View Only

## Tuesday Tip: TPX: Basic arithmetic in ACL

• #### 1.  Tuesday Tip: TPX: Basic arithmetic in ACL

Posted 09-03-2014 03:41 AM

With ACL-Verbs you can add and subtract using ADD and SUB but not perform other calculations like Multiplication and Division. Arithmetic is not the core function of ACL. But with two small subroutines called MULTIPLY and DIVIDE (both located in the ACLLIB which si created during installation of TPX) you can multiply and divide two numbers if necessary.

Multiplication works as follows:

The two numbers which should be multiplicated have to be defined as Variables with names MULTPLCN (multiplicand) and MULTPLER (multiplier), for the result of the multiplication the Variable called SUM needs also to be defined. All Variables need to be of Type VDEFINE or GDEFINE. If other names are desired, their names have to be changed in the ACL MULTIPLY as well.

The subroutine is called by statement

ACLPGM    MULTIPLY

Example of the necessary ACL-code:

----------------------------------------------------------

VDEFINE   MULTPLER,8      * DEFINE 1ST FACTOR

VDEFINE   MULTPLCN,8      * DEFINE 2ND FACTOR

VDEFINE   SUM,8           * RESULT

*

SET       MULTPLER,value  * SET 1ST FACTOR

SET       MULTPLCN,value  * SET 2ND FACTOR

*

CALL     ACLPGM    MULTIPLY        * INVOKE MULTIPLICATION

----------------------------------------------------------

The result of the multiplication is available in variable SUM.

Division works as follows:

The two numbers which should be divided have to be defined as Variables with names DIVIDEND and DIVISOR, the result of the division appears in variables QUOTIENT and REMAINDR. All Variables need to be of Type VDEFINE or GDEFINE.

The subroutine is called by statement

ACLPGM    DIVIDE

Example of the necessary ACL-code:

----------------------------------------------------------

VDEFINE   DIVIDEND,8      * DEFINE DIVIDEND

VDEFINE   DIVISOR,8       * DEFINE DIVISOR

VDEFINE   QUOTIENT,8      * DEFINE QUOTIENT

VDEFINE   REMAINDR,8      * DEFINE REMAINDR

*

SET       DIVIDEND,value  * SET DIVIDEND

SET       DIVISOR,value   * SET DIVISOR

*

CALL     ACLPGM    DIVIDE          * INVOKE DIVISION

----------------------------------------------------------

The result of the division is available in variables QUOTIENT and REMAINDR.