Reading — step 1 of 5
Learn
~2 min readModular COBOL
Modern COBOL (since COBOL-85, expanded in COBOL-2002 and 2014) has intrinsic functions — built-in functions you call with FUNCTION.
Math
COMPUTE X = FUNCTION SQRT(16). *> 4
COMPUTE X = FUNCTION ABS(-7). *> 7
COMPUTE X = FUNCTION MIN(A, B, C). *> minimum
COMPUTE X = FUNCTION MAX(A, B, C). *> maximum
COMPUTE X = FUNCTION MEAN(A, B, C). *> arithmetic mean
COMPUTE X = FUNCTION SUM(A, B, C).
COMPUTE X = FUNCTION RANDOM. *> 0..1 float
COMPUTE X = FUNCTION REM(A, B). *> remainder of A/B
COMPUTE X = FUNCTION MOD(A, B). *> mathematical modulo
Trig
FUNCTION SIN, COS, TAN, ASIN, ACOS, ATAN, ATAN2(Y, X)
FUNCTION LOG(X), LOG10(X), EXP(X)
Strings
FUNCTION LENGTH(S) *> char count
FUNCTION UPPER-CASE(S)
FUNCTION LOWER-CASE(S)
FUNCTION REVERSE(S)
FUNCTION TRIM(S) *> trim leading and trailing spaces
FUNCTION TRIM(S LEADING)
FUNCTION TRIM(S TRAILING)
FUNCTION CONCAT(A, B, C) *> COBOL-2002+
FUNCTION SUBSTITUTE(S, OLD, NEW)
Conversion
FUNCTION NUMVAL("42") *> 42 (alphanumeric to number)
FUNCTION NUMVAL-C("$1,234.56") *> 1234.56 (with edit chars)
FUNCTION INTEGER(3.7) *> 3 (integer part)
FUNCTION ORD("A") *> 66 — collation position
FUNCTION CHAR(65) *> "A"
Date / time
FUNCTION CURRENT-DATE *> 21-char timestamp
FUNCTION INTEGER-OF-DATE(20260508) *> days since 1601-01-01
FUNCTION DATE-OF-INTEGER(150000) *> reverse
FUNCTION INTEGER-OF-DAY(2026121) *> Julian day to integer
FUNCTION DAY-OF-INTEGER(N)
Example
01 NAMES.
05 N PIC 9(3) OCCURS 5 TIMES.
PROCEDURE DIVISION.
MOVE 50 TO N(1).
MOVE 30 TO N(2).
MOVE 90 TO N(3).
MOVE 10 TO N(4).
MOVE 70 TO N(5).
DISPLAY "max: " FUNCTION MAX(N(1) N(2) N(3) N(4) N(5)).
DISPLAY "min: " FUNCTION MIN(N(1) N(2) N(3) N(4) N(5)).
DISPLAY "avg: " FUNCTION MEAN(N(1) N(2) N(3) N(4) N(5)).
Repeating ALL
FUNCTION SUM(N(ALL)) *> sum entire OCCURS array
FUNCTION MEAN(N(ALL))
FUNCTION MAX(N(ALL))
The ALL subscript saves listing every element.
Practical advice
- Older COBOL (pre-85) doesn't have these — sometimes you'll have to write your own
- Modern compilers (GnuCOBOL, IBM Enterprise COBOL) all support the standard set
- For complex math, check the manual — your specific compiler may have extras
- Avoid
FUNCTION RANDOMfor security; it's not cryptographically random
Discussion
Ask a question, share an insight, or help someone who’s stuck.
Sign in to post a comment or reply.
Loading…