How to use math functions and constants in COBOL

2 Answers

0 votes
IDENTIFICATION DIVISION.
PROGRAM-ID. MATH-DEMO.

DATA DIVISION.
WORKING-STORAGE SECTION.
01 X        PIC 9(3)V9(4) VALUE 9.0.
01 RESULT   PIC 9(3)V9(6).

01 PI       PIC 9(2)V9(14) VALUE 3.14159265358979.
01 E        PIC 9(1)V9(14) VALUE 2.71828182845905.

PROCEDURE DIVISION.
    COMPUTE RESULT = FUNCTION SQRT(X)
    DISPLAY "SQRT = " RESULT

    COMPUTE RESULT = FUNCTION LOG(X)
    DISPLAY "LOG = " RESULT

    COMPUTE RESULT = FUNCTION EXP(1)
    DISPLAY "EXP(1) = " RESULT

    COMPUTE RESULT = FUNCTION ABS(-5)
    DISPLAY "ABS = " RESULT

    COMPUTE RESULT = 2 ** 8
    DISPLAY "2^8 = " RESULT

    DISPLAY "PI = " PI
    DISPLAY "E  = " E

    STOP RUN.



*> run:
*>
*> SQRT = 003.000000
*> LOG = 002.197224
*> EXP(1) = 002.718281
*> ABS = 005.000000
*> 2^8 = 256.000000
*> PI = 03.14159265358979
*> E  = 2.71828182845905
*>

 



answered 1 day ago by avibootz
0 votes
IDENTIFICATION DIVISION.
PROGRAM-ID. MATH-DEMO.

DATA DIVISION.
WORKING-STORAGE SECTION.
01  X            USAGE COMP-2 VALUE 10.75.
01  Y            USAGE COMP-2.
01  NAT-LOG      USAGE COMP-2.
01  LOG-10       USAGE COMP-2.
01  FLOOR-X      USAGE COMP-2.
01  CEIL-X       USAGE COMP-2.
01  INT-PART     USAGE COMP-2.

PROCEDURE DIVISION.
    DISPLAY "COBOL MATH EXAMPLE".

    *> Exponentiation: 2 ** 10
    COMPUTE Y = 2 ** 10
    DISPLAY "2 ** 10 = " Y.

    *> Natural log (ln)
    COMPUTE NAT-LOG = FUNCTION LOG(X)
    DISPLAY "ln(" X ") = " NAT-LOG.

    *> Base-10 log
    COMPUTE LOG-10 = FUNCTION LOG10(X)
    DISPLAY "log10(" X ") = " LOG-10.

    *> FLOOR(x) simulation
    COMPUTE INT-PART = FUNCTION INTEGER(X)
    COMPUTE FLOOR-X = INT-PART
    DISPLAY "FLOOR(" X ") = " FLOOR-X.

    *> CEIL(x) simulation
    IF X = INT-PART
        COMPUTE CEIL-X = X
    ELSE
        COMPUTE CEIL-X = INT-PART + 1
    END-IF
    DISPLAY "CEIL(" X ") = " CEIL-X.

    STOP RUN.




*> run:
*>
*> COBOL MATH EXAMPLE
*> 2 ** 10 = 1024
*> ln(10.75) = 2.374905754573672
*> log10(10.75) = 1.031408464251624
*> FLOOR(10.75) = 10
*> CEIL(10.75) = 11
*>

 



answered 1 day ago by avibootz
...