ILE COBOL - Intrinsic Functions
General Functions
NUMVAL Function
NUMVAL function, in ILE COBOL, converts an alphanumeric string to a numeric value. When this numeric value is assigned to a PIC clause with fewer decimal places than the result of NUMVAL, rounding can occur implicitly or explicitly using the ROUNDED clause.
(Similar to %DEC & %DECH built-in function in RPGLE programming
Program:
IDENTIFICATION DIVISION.
*-----------------------*
PROGRAM-ID. GENFUNC01.
AUTHOR. PROGRAMMERS.
ENVIRONMENT DIVISION.
*---------------------*
CONFIGURATION SECTION.
SOURCE-COMPUTER. IBMi-Series.
OBJECT-COMPUTER. IBMi-Series.
DATA DIVISION.
*---------------------*
WORKING-STORAGE SECTION.
01 WS-ALPHA-VAR PIC X(10) VALUE '34.558'.
01 WS-NUM-VAR1 PIC S9(4)V9(3) COMP-3.
01 WS-NUM-VAR2 PIC S9(4)V9(2) COMP-3.
01 WS-NUM-VAR3 PIC S9(4)V9(2) COMP-3.
PROCEDURE DIVISION.
MAINLINE.
* Converts alphanumeric to numeric value
COMPUTE WS-NUM-VAR1 = FUNCTION NUMVAL(WS-ALPHA-VAR).
* Applied implicit ROUNDED clause
COMPUTE WS-NUM-VAR2 = FUNCTION NUMVAL(WS-ALPHA-VAR).
* Applied explicit ROUNDED clause
COMPUTE WS-NUM-VAR3 ROUNDED = FUNCTION NUMVAL(WS-ALPHA-VAR).
DISPLAY "Alphanumeric Value:" WS-ALPHA-VAR.
DISPLAY "Numeric Value :" WS-NUM-VAR1.
DISPLAY "Implicit Round :" WS-NUM-VAR2.
DISPLAY "Explicit Round :" WS-NUM-VAR3.
STOP RUN.
Output:
Alphanumeric Value:34.558 Numeric Value :0034558 Implicit Round :003456 Explicit Round :003456
NUMVAL-C Function
NUMVAL-C function, in ILE COBOL, converts a character string, which may include a currency sign and commas, into a numeric value. It is used to process character-based numbers in arithmetic expressions by removing the currency symbol and grouping separators (commas or periods) to return a standard numeric result.
Program:
IDENTIFICATION DIVISION.
*-----------------------*
PROGRAM-ID. GENFUNC02.
AUTHOR. PROGRAMMERS.
ENVIRONMENT DIVISION.
*---------------------*
CONFIGURATION SECTION.
SOURCE-COMPUTER. IBMi-Series.
OBJECT-COMPUTER. IBMi-Series.
DATA DIVISION.
*---------------------*
WORKING-STORAGE SECTION.
01 WS-ALPHA-VAR PIC X(12) VALUE '$ 1,534.126'.
01 WS-NUM-VAR1 PIC S9(6)V9(3) COMP-3.
01 WS-NUM-VAR2 PIC S9(6)V9(2) COMP-3.
01 WS-NUM-VAR3 PIC S9(6)V9(2) COMP-3.
PROCEDURE DIVISION.
MAINLINE.
* Converts alphanumeric to numeric value
COMPUTE WS-NUM-VAR1 = FUNCTION NUMVAL-C(WS-ALPHA-VAR).
* Applied implicit ROUNDED clause
COMPUTE WS-NUM-VAR2 = FUNCTION NUMVAL-C(WS-ALPHA-VAR).
* Applied explicit ROUNDED clause
COMPUTE WS-NUM-VAR3 ROUNDED
= FUNCTION NUMVAL-C(WS-ALPHA-VAR).
DISPLAY "Alphanumeric Value:" WS-ALPHA-VAR.
DISPLAY "Numeric Value :" WS-NUM-VAR1.
DISPLAY "Implicit Round :" WS-NUM-VAR2.
DISPLAY "Explicit Round :" WS-NUM-VAR3.
STOP RUN.
Output:
Alphanumeric Value:$ 1,534.126 Numeric Value :001534126 Implicit Round :00153413 Explicit Round :00153413
RANDOM Function
The RANDOM function, in ILE COBOL, generates pseudo-random numbers.
Program:
IDENTIFICATION DIVISION.
*-----------------------*
PROGRAM-ID. GENFUNC06.
AUTHOR. PROGRAMMERS.
ENVIRONMENT DIVISION.
*---------------------*
CONFIGURATION SECTION.
SOURCE-COMPUTER. IBMi-Series.
OBJECT-COMPUTER. IBMi-Series.
DATA DIVISION.
*---------------------*
WORKING-STORAGE SECTION.
01 WS-RANDOM-NUM PIC S9(18)V9(17).
PROCEDURE DIVISION.
MAINLINE-PROG.
* Generates random number
COMPUTE WS-RANDOM-NUM = FUNCTION RANDOM.
COMPUTE WS-RANDOM-NUM = FUNCTION RANDOM.
DISPLAY "RANDOM-NUMBER:" WS-RANDOM-NUM.
STOP RUN.
Output:
RANDOM-NUMBER:00000000000000000044270715510598718
WHEN-COMPILED Function
The WHEN-COMPILED function, in ILE COBOL, returns the latest compilation date and time a program. This function is rarely used in the program.
Program:
IDENTIFICATION DIVISION.
*-----------------------*
PROGRAM-ID. GENFUNC07.
AUTHOR. PROGRAMMERS.
ENVIRONMENT DIVISION.
*---------------------*
CONFIGURATION SECTION.
SOURCE-COMPUTER. IBMi-Series.
OBJECT-COMPUTER. IBMi-Series.
DATA DIVISION.
*---------------------*
WORKING-STORAGE SECTION.
01 COMPILED-ON PIC X(25).
PROCEDURE DIVISION.
MAINLINE-PROG.
* Get Compilation Date and Time information.
MOVE FUNCTION WHEN-COMPILED TO COMPILED-ON.
MOVE FUNCTION WHEN-COMPILED TO COMPILED-ON.
DISPLAY "COMPILATION-INFO:" COMPILED-ON.
STOP RUN.
Output:
COMPILATION-INFO:2025111007294640-0600
Numerical Functions
FACTORIAL Function
In ILE COBOL, the FACTORIAL function returns an integer that is the factorial of the argument.
Program:
IDENTIFICATION DIVISION.
*-----------------------*
PROGRAM-ID. NUMFUNC01.
AUTHOR. PROGRAMMERS.
ENVIRONMENT DIVISION.
*---------------------*
CONFIGURATION SECTION.
SOURCE-COMPUTER. IBMi-Series.
OBJECT-COMPUTER. IBMi-Series.
DATA DIVISION.
*---------------------*
WORKING-STORAGE SECTION.
01 WS-INP-NUM PIC S9(5) VALUE 6.
01 WS-FACTORIAL PIC S9(5).
PROCEDURE DIVISION.
MAIN-LOGIC.
* Factorial of the argument.
COMPUTE WS-FACTORIAL = FUNCTION FACTORIAL(WS-INP-NUM).
DISPLAY "WS-FACTORIAL:" WS-FACTORIAL.
STOP RUN.
Output:
WS-FACTORIAL:00720
INTEGER Function
In ILE COBOL, the INTEGER function is used to return the greatest integer value that is less than or equal to the argument specified. This function essentially rounds a numeric value down to the nearest integer. The function type is integer, meaning it returns an integer value.
Program:
IDENTIFICATION DIVISION.
*-----------------------*
PROGRAM-ID. NUMFUNC02.
AUTHOR. PROGRAMMERS.
ENVIRONMENT DIVISION.
*---------------------*
CONFIGURATION SECTION.
SOURCE-COMPUTER. IBMi-Series.
OBJECT-COMPUTER. IBMi-Series.
DATA DIVISION.
*---------------------*
WORKING-STORAGE SECTION.
01 WS-POS-DEC PIC S9(5)V9(2) VALUE +555.55.
01 WS-NEG-DEC PIC S9(5)V9(2) VALUE -333.43.
01 WS-INT-RES1 PIC S9(5).
01 WS-INT-RES2 PIC S9(5).
PROCEDURE DIVISION.
MAINLINE-PROG.
* Converts decimals to integer
COMPUTE WS-INT-RES1 = FUNCTION INTEGER(WS-POS-DEC).
COMPUTE WS-INT-RES2 = FUNCTION INTEGER(WS-NEG-DEC).
DISPLAY "WS-INT-RES1:" WS-INT-RES1.
DISPLAY "WS-INT-RES2:" WS-INT-RES2.
STOP RUN.
Output:
WS-INT-RES1:00555 WS-INT-RES2:0033M
Snippet during debugging:
WS-INT-RES2 = -00334.
INTEGER-PART Function
In ILE COBOL, the INTEGER-PART function is used to fetch the integer part.
Program:
IDENTIFICATION DIVISION.
*-----------------------*
PROGRAM-ID. NUMFUNC03.
AUTHOR. PROGRAMMERS.
ENVIRONMENT DIVISION.
*---------------------*
CONFIGURATION SECTION.
SOURCE-COMPUTER. IBMi-Series.
OBJECT-COMPUTER. IBMi-Series.
DATA DIVISION.
*---------------------*
WORKING-STORAGE SECTION.
01 WS-POS-DEC PIC S9(5)V9(2) VALUE +1.55.
01 WS-NEG-DEC PIC S9(5)V9(2) VALUE -2.49.
01 WS-INT-RES1 PIC S9(5).
01 WS-INT-RES2 PIC S9(5).
PROCEDURE DIVISION.
MAINLINE-PROG.
* Fetches integer part
COMPUTE WS-INT-RES1 = FUNCTION INTEGER-PART(WS-POS-DEC).
COMPUTE WS-INT-RES2 = FUNCTION INTEGER-PART(WS-NEG-DEC).
DISPLAY "WS-INT-RES1:" WS-INT-RES1.
DISPLAY "WS-INT-RES2:" WS-INT-RES2.
STOP RUN.
Output:
WS-INT-RES1:00001 WS-INT-RES2:0000K
Snippet during debugging:
WS-INT-RES2: -00002.
MOD Function
In ILE COBOL, the MOD function used to calculate the remainder of a division operation. (Similar to REM intrinsic function in ILE COBOL and %REM built-in-function in RPGLE programming)
Program:
IDENTIFICATION DIVISION.
*-----------------------*
PROGRAM-ID. NUMFUNC04.
AUTHOR. PROGRAMMERS.
ENVIRONMENT DIVISION.
*---------------------*
CONFIGURATION SECTION.
SOURCE-COMPUTER. IBMi-Series.
OBJECT-COMPUTER. IBMi-Series.
DATA DIVISION.
*---------------------*
WORKING-STORAGE SECTION.
01 WS-DIVIDEND PIC S9(5) VALUE 43.
01 WS-DIVISOR PIC S9(5) VALUE 7.
01 WS-REMAINDER PIC S9(5).
PROCEDURE DIVISION.
MAIN-LOGIC.
* Returns remainder value
COMPUTE WS-REMAINDER = FUNCTION MOD(WS-DIVIDEND, WS-DIVISOR).
DISPLAY "WS-REMAINDER:" WS-REMAINDER.
STOP RUN.
Output:
WS-REMAINDER:00001
MAX & MIN Functions
In ILE COBOL, the MAX & MIN functions return maximum and minimum values from list of arguments.
(Similar as %MAX & %MIN built-in-function in RPGLE programming)
Program:
IDENTIFICATION DIVISION.
*-----------------------*
PROGRAM-ID. NUMFUNC05.
AUTHOR. PROGRAMMERS.
ENVIRONMENT DIVISION.
*---------------------*
CONFIGURATION SECTION.
SOURCE-COMPUTER. IBMi-Series.
OBJECT-COMPUTER. IBMi-Series.
DATA DIVISION.
*---------------------*
WORKING-STORAGE SECTION.
01 NUM1 PIC 9(5) VALUE 18.
01 NUM2 PIC 9(5) VALUE 21.
01 NUM3 PIC 9(5) VALUE 12.
01 NUM4 PIC 9(5) VALUE 19.
01 WS-MAX-VALUE LIKE NUM1.
01 WS-MIN-VALUE LIKE NUM1.
PROCEDURE DIVISION.
MAIN-LOGIC.
* Returns maximum value
COMPUTE WS-MAX-VALUE = FUNCTION MAX(NUM1, NUM2, NUM3, NUM4).
* Returns minimum value
COMPUTE WS-MIN-VALUE = FUNCTION MIN(NUM1, NUM2, NUM3, NUM4).
DISPLAY "MAX-VALUE:" WS-MAX-VALUE .
DISPLAY "MIN-VALUE:" WS-MIN-VALUE .
STOP RUN.
Output:
MAX-VALUE: 00021 MIN-VALUE: 00012
REM Function
In ILE COBOL, the REM function returns the remainder value. (Similar to MOD intrinsic function in ILE COBOL and %REM built-in-function in RPGLE programming)
Program:
IDENTIFICATION DIVISION.
*-----------------------*
PROGRAM-ID. NUMFUNC06.
AUTHOR. PROGRAMMERS.
ENVIRONMENT DIVISION.
*---------------------*
CONFIGURATION SECTION.
SOURCE-COMPUTER. IBMi-Series.
OBJECT-COMPUTER. IBMi-Series.
DATA DIVISION.
*---------------------*
WORKING-STORAGE SECTION.
01 WS-DIVIDEND PIC S9(5) VALUE 57.
01 WS-DIVISOR PIC S9(5) VALUE 7.
01 WS-REMAINDER PIC S9(5).
PROCEDURE DIVISION.
MAIN-LOGIC.
* Returns remainder value
COMPUTE WS-REMAINDER = FUNCTION REM(WS-DIVIDEND, WS-DIVISOR).
DISPLAY "WS-REMAINDER:" WS-REMAINDER.
STOP RUN.
Output:
WS-REMAINDER:00001
SQRT Function
In ILE COBOL, the SQRT function returns the square root value. (Similar to %SQRT built-in-function in RPGLE programming)
Program:
IDENTIFICATION DIVISION.
*-----------------------*
PROGRAM-ID. NUMFUNC07.
AUTHOR. PROGRAMMERS.
ENVIRONMENT DIVISION.
*---------------------*
CONFIGURATION SECTION.
SOURCE-COMPUTER. IBMi-Series.
OBJECT-COMPUTER. IBMi-Series.
DATA DIVISION.
*---------------------*
WORKING-STORAGE SECTION.
01 WS-NUM PIC S9(5) VALUE 1089.
01 WS-RES PIC S9(5).
PROCEDURE DIVISION.
MAIN-LOGIC.
* Does square root value
COMPUTE WS-RES = FUNCTION SQRT(WS-NUM).
DISPLAY "WS-RES:" WS-RES.
STOP RUN.
Output:
WS-RES:00033
SUM Function
In ILE COBOL, the SUM function returns a value that is
- Either the sum of the arguments or
- Sum of the all-data items of an array. (Similar to %XFOOT built-in-function of RPGLE programming.)
Program:
IDENTIFICATION DIVISION.
*-----------------------*
PROGRAM-ID. NUMFUNC08.
AUTHOR. PROGRAMMERS.
ENVIRONMENT DIVISION.
*---------------------*
CONFIGURATION SECTION.
SOURCE-COMPUTER. IBMi-Series.
OBJECT-COMPUTER. IBMi-Series.
DATA DIVISION.
*---------------------*
WORKING-STORAGE SECTION.
01 SALES-TABLE.
05 SALE-AMOUNT OCCURS 10 TIMES PIC 9(5)V9(2).
01 WS-TOTAL-SALES PIC 9(7)V9(2).
PROCEDURE DIVISION.
MAIN-LOGIC.
* Returns sum of all table data-items.
MOVE 100.50 TO SALE-AMOUNT(1)
MOVE 250.75 TO SALE-AMOUNT(2)
MOVE 75.00 TO SALE-AMOUNT(3)
MOVE 400.25 TO SALE-AMOUNT(4)
MOVE 120.10 TO SALE-AMOUNT(5)
MOVE 300.00 TO SALE-AMOUNT(6)
MOVE 45.90 TO SALE-AMOUNT(7)
MOVE 180.30 TO SALE-AMOUNT(8)
MOVE 500.00 TO SALE-AMOUNT(9)
MOVE 99.99 TO SALE-AMOUNT(10)
COMPUTE WS-TOTAL-SALES = FUNCTION SUM(SALE-AMOUNT(ALL)).
DISPLAY "SUM-VALUE1:" WS-TOTAL-SALES.
COMPUTE WS-TOTAL-SALES =
FUNCTION SUM(SALE-AMOUNT(1),SALE-AMOUNT(2),
SALE-AMOUNT(3),SALE-AMOUNT(4),
SALE-AMOUNT(5)).
DISPLAY "SUM-VALUE2:" WS-TOTAL-SALES.
STOP RUN.
Output:
SUM-VALUE1:000207279 SUM-VALUE2:000094660
Date-Time Functions
CURRENT-DATE Function
CURRENT-DATE function, in ILE COBOL, generates current date in YYYYMMDD format, current time in HHMMSSMS format and GMT information. This function does not work with FORMAT TIMESTAMP Clause of COBOL400 data types. This function will generate current timestamp with 21 characters of format YYYYMMDDHHMMSSMS-GMT.
(Similar to %TIMESTAMP and %DATE built-in function of RPGLE programming)
Program:
IDENTIFICATION DIVISION.
*-----------------------*
PROGRAM-ID. DATFUNC01.
AUTHOR. PROGRAMMERS.
ENVIRONMENT DIVISION.
*---------------------*
CONFIGURATION SECTION.
SOURCE-COMPUTER. IBMi-Series.
OBJECT-COMPUTER. IBMi-Series.
DATA DIVISION.
*---------------------*
WORKING-STORAGE SECTION.
01 CURRENT-DATE-TIME PIC X(21).
05 CURRENT-YEAR PIC 9(04).
05 CURRENT-MONTH PIC 9(02).
05 CURRENT-DAY PIC 9(02).
05 CURRENT-HOURS PIC 9(02).
05 CURRENT-MINUTE PIC 9(02).
05 CURRENT-SECOND PIC 9(02).
05 CURRENT-MS PIC 9(02).
05 DIFF-FROM-GMT PIC S9(04)
01 TODAYS-DATE-ISO PIC X(08).
01 TODAYS-TIME-HMS PIC X(06).
01 TODAYS-TIME-HM PIC X(04).
PROCEDURE DIVISION.
MAIN-LOGIC.
MOVE FUNCTION CURRENT-DATE TO CURRENT-DATE-TIME
TODAYS-DATE-ISO.
MOVE FUNCTION CURRENT-DATE(9:6)
TO TODAYS-TIME-HMS.
MOVE FUNCTION CURRENT-DATE(9:4)
TO TODAYS-TIME-HM.
DISPLAY "CURRENT-DATE-TIME:" CURRENT-DATE-TIME.
DISPLAY "TODAYS-DATE-ISO :" TODAYS-DATE-ISO.
DISPLAY "TODAYS-TIME-HMS :" TODAYS-TIME-HMS.
DISPLAY "TODAYS-TIME-HM :" TODAYS-TIME-HM.
STOP RUN.
Output:
CURRENT-DATE-TIME:2025112805281212-060 TODAYS-DATE-ISO :20251128 TODAYS-TIME-HMS :052812 TODAYS-TIME-HM :0528
DATE-TIME Functions
There are 6 DATE-TIME intrinsic functions which are interlinked with each other. They are as follows:
CONVERT-DATE-TIME Function
The CONVERT-DATE-TIME function takes an item of class alphanumeric, numeric, or date-time and returns a date-time item.
(Similar to %DATE built-in-function of RPGLE programming)
EXTRACT-DATE-TIME Function
The EXTRACT-DATE-TIME function in ILE COBOL returns part of a date, time, or timestamp item. The function type is integer or alphanumeric.
This function consists of two arguments-
Argument 1: The first argument must be DATE, TIME & TIMESTAMP data type only. If the first argument is PIC X (08) or PIC 9(08) then it gives compilation error. These field declarations must be done using FORMAT clause.
Argument 2: The second argument must be from the below listing and the field must have that fetching part.
- YEARS (‘@Y’)
- MONTHS (‘%m’)
- DAYS (‘%d’)
- HOURS (‘%H’)
- MINUTES (‘%M’)
- SECONDS (‘%S’)
- MICROSECONDS (‘@Sm’)
- PICOSECONDS (‘@Sp’)
TEST-DATE-TIME Function
The TEST-DATE-TIME function takes a date, time, timestamp, alphanumeric, numeric packed, or zoned item. The function determines if it is a valid date, time, or timestamp. It returns true (B’1′) if it is a valid item or false (B’0′) if it is not a valid item.
(Similar to %TEST built-in-function of RPGLE programming)
ADD-DURATION Function
The ADD-DURATION function adds a duration to a date, time, or timestamp item, and returns the modified item.
(Similar to ADDDUR opcode of RPGLE programming.)
FIND-DURATION Function
The FIND-DURATION function returns an integer in the form of complete units of the specified duration.
SUBTRACT-DURATION Function
The SUBTRACT-DURATION function subtracts a duration from a date, time, or timestamp item, and returns the modified item.
(Similar to SUBDUR opcode of RPGLE programming)
Program:
IDENTIFICATION DIVISION.
*-----------------------*
PROGRAM-ID. DATFUNC07.
AUTHOR. PROGRAMMERS.
ENVIRONMENT DIVISION.
*---------------------*
CONFIGURATION SECTION.
SOURCE-COMPUTER. IBMi-Series.
OBJECT-COMPUTER. IBMi-Series.
DATA DIVISION.
*---------------------*
WORKING-STORAGE SECTION.
01 CARD-ISSUE-DATE FORMAT DATE '@Y-%m-%d'
VALUE '2020-02-30'.
01 CARD-ISSUE-YEAR PIC 9(04).
01 CARD-ISSUE-MMYY FORMAT DATE '%m%y'.
01 CARD-EXPIRY-DATE FORMAT DATE '@Y-%m-%d'.
01 CARD-EXPIRY-YEAR PIC 9(04).
01 CARD-EXPIRY-MMYY FORMAT DATE '%m%y'.
01 CARD-VALID-DAYS PIC 9(04).
01 CARD-VALIDITY PIC X(15).
PROCEDURE DIVISION.
MAIN-LOGIC.
* Test card Issue Date is valid or not
IF FUNCTION TEST-DATE-TIME(CARD-ISSUE-DATE DATE '@Y-%m-%d')
= B'0'
DISPLAY 'INVALID DATE!'
MOVE '2020-02-29' TO CARD-ISSUE-DATE
ELSE
DISPLAY 'VALID DATE!'
END-IF.
* Calculate Card Issue Year
COMPUTE CARD-ISSUE-YEAR = FUNCTION EXTRACT-DATE-TIME(
CARD-ISSUE-DATE YEARS).
* Calculate Card expiry date
MOVE FUNCTION ADD-DURATION(CARD-ISSUE-DATE YEARS 4)
TO CARD-EXPIRY-DATE.
MOVE FUNCTION SUBTRACT-DURATION(CARD-EXPIRY-DATE DAYS 1)
TO CARD-EXPIRY-DATE.
* Calculate Card expiry year
COMPUTE CARD-EXPIRY-YEAR = FUNCTION EXTRACT-DATE-TIME(
CARD-EXPIRY-DATE YEARS).
* Calculate Card issue MMYY
MOVE FUNCTION CONVERT-DATE-TIME(CARD-ISSUE-DATE DATE)
TO CARD-ISSUE-MMYY.
* Calculate Card expiry MMYY
MOVE FUNCTION CONVERT-DATE-TIME(CARD-EXPIRY-DATE DATE)
TO CARD-EXPIRY-MMYY.
* Calculate Card valid number of days
COMPUTE CARD-VALID-DAYS = FUNCTION FIND-DURATION(
CARD-ISSUE-DATE
CARD-EXPIRY-DATE
DAYS).
* Prepare Validity Description
MOVE CARD-ISSUE-MMYY TO CARD-VALIDITY(1:4).
MOVE 'THRU' TO CARD-VALIDITY(6:4).
MOVE CARD-EXPIRY-MMYY TO CARD-VALIDITY(11:4).
* Display all fields
DISPLAY 'CARD-ISSUE-DATE :' CARD-ISSUE-DATE.
DISPLAY 'CARD-ISSUE-YEAR :' CARD-ISSUE-YEAR.
DISPLAY 'CARD-EXPIRY-DATE:' CARD-EXPIRY-DATE.
DISPLAY 'CARD-EXPIRY-YEAR:' CARD-EXPIRY-YEAR.
DISPLAY 'CARD-ISSUE-MMYY :' CARD-ISSUE-MMYY.
DISPLAY 'CARD-EXPIRY-MMYY:' CARD-EXPIRY-MMYY.
DISPLAY 'CARD-VALID-DAYS :' CARD-VALID-DAYS.
DISPLAY 'CARD-VALIDITY :' CARD-VALIDITY.
STOP RUN.
Output:
INVALID DATE! CARD-ISSUE-DATE :2020-02-29 CARD-ISSUE-YEAR :2020 CARD-EXPIRY-DATE:2024-02-28 CARD-EXPIRY-YEAR:2024 CARD-ISSUE-MMYY :0220 CARD-EXPIRY-MMYY:0224 CARD-VALID-DAYS :1460 CARD-VALIDITY :0220 THRU 0224
Statistical Functions
MEAN Function
The MEAN intrinsic function, in ILE COBOL, calculates the arithmetic mean of a series of numeric arguments.
Program:
IDENTIFICATION DIVISION.
*-----------------------*
PROGRAM-ID. SATFUNC01.
AUTHOR. PROGRAMMERS.
ENVIRONMENT DIVISION.
*---------------------*
CONFIGURATION SECTION.
SOURCE-COMPUTER. IBMi-Series.
OBJECT-COMPUTER. IBMi-Series.
DATA DIVISION.
*---------------------*
WORKING-STORAGE SECTION.
01 NUM1 PIC 9(5) VALUE 18.
01 NUM2 PIC 9(5) VALUE 21.
01 NUM3 PIC 9(5) VALUE 12.
01 NUM4 PIC 9(5) VALUE 19.
01 WS-MEAN-VALUE PIC 9(3)V9(2).
PROCEDURE DIVISION.
MAIN-LOGIC.
* Returns mean of arguments
COMPUTE WS-MEAN-VALUE = FUNCTION MEAN(NUM1, NUM2, NUM3, NUM4).
DISPLAY "MEAN-VALUE:" WS-MEAN-VALUE .
STOP RUN.
Output:
MEAN-VALUE:01750
Financial Functions
ANNUITY Function
In ILE COBOL, the ANNUITY function simplifies calculations related to annuities. It returns a numeric value that approximates the ratio of an annuity paid at the end of each period, for a given number of periods, at a given interest rate, to an initial value of one.
When the value of argument-1 is zero, the value returned by the function is the approximation of:
1 / argument#2
When the value of argument-1 is not zero, the value of the function is the approximation of:
Argument#1 / (1 – (1 + argument#1) ** (- argument#2))
Program:
IDENTIFICATION DIVISION.
*-------------------------*
PROGRAM-ID. FINFUNC01.
AUTHOR. PROGRAMMERS.
ENVIRONMENT DIVISION.
*---------------------*
CONFIGURATION SECTION.
SOURCE-COMPUTER. IBM1-Series.
OBJECT-COMPUTER. IBM1-Series.
DATA DIVISION
WORKING-STORAGE SECTION.
01 WS-TOTAL-LOAN PIC 9(09)V99 VALUE 100000.00.
01 WS-ANNUAL-RATE PIC SV9(3) VALUE 0.05.
01 WS-YEARS PIC 9(3) VALUE 30.
01 WS-MONTHS PIC 9(4) VALUE 0.
01 WS-MONTHLY-RATE PIC SV9(3).
01 WS-MONTHLY-EMI PIC S9(7)V9(2).
PROCEDURE DIVISION.
MAIN-LOGIC.
* Calculate Monthly EMI.
COMPUTE WS-MONTHS = WS-YEARS * 12.
COMPUTE WS-MONTHLY-RATE = WS-ANNUAL-RATE / 12.
COMPUTE WS-MONTHLY-EMI = WS-TOTAL-LOAN *
FUNCTION ANNUITY(WS-MONTHLY-RATE, WS-MONTHS).
DISPLAY 'Monthly EMI: ' WS-MONTHLY-EMI ' INR'.
STOP RUN.
Output:
Monthly EMI : 000052467INR
String Functions
LENGTH Function
LENGTH function, in ILE COBOL program, returns the count of number of characters in string or alphanumeric variable.
(Similar to %LEN built-in function in RPGLE programming)
Program:
IDENTIFICATION DIVISION.
*------------------------*
PROGRAM-ID. STRFUNC01.
AUTHOR. PROGRAMMERS.
ENVIRONMENT DIVISION.
*---------------------*
CONFIGURATION SECTION.
SOURCE-COMPUTER. IBMi-Series.
OBJECT-COMPUTER. IBMi-Series.
DATA DIVISION.
*--------------*
WORKING-STORAGE SECTION.
01 WS-LENGTH PIC S9(02) VALUE 0.
01 WS-STRING PIC X(12) VALUE ' SPIDERMAN '.
PROCEDURE DIVISION.
*-------------------*
MAIN-LOGIC.
* Calculate Length of String without leading & trailing spaces
COMPUTE WS-LENGTH = FUNCTION LENGTH(
FUNCTION TRIM(WS-STRING))
DISPLAY 'Length of String:' WS-LENGTH.
STOP RUN.
Output:
Length of String: 09
TRIM Function
TRIM function, in ILE COBOL program, removes leading and trailing spaces in character or alphanumeric variable.
(Similar to %trim built-in function in RPGLE programming)
Program:
IDENTIFICATION DIVISION.
*-----------------------*
PROGRAM-ID. STRFUNC02.
AUTHOR. PROGRAMMERS.
ENVIRONMENT DIVISION.
*--------------------*
CONFIGURATION SECTION.
SOURCE-COMPUTER. IBMi-Series.
OBJECT-COMPUTER. IBMi-Series.
DATA DIVISION.
*--------------------*
WORKING-STORAGE SECTION.
01 VAR1 PIC X(20) VALUE SPACES.
01 WS-TRIM PIC X(20) VALUE SPACES.
PROCEDURE DIVISION.
*-------------------------*
000-START.
MOVE ' MISSION IMPOSSIBLE ' TO VAR1.
MOVE FUNCTION TRIM(VAR1) TO WS-TRIM.
DISPLAY "Input :" VAR1.
DISPLAY "Output:" WS-TRIM.
STOP RUN.
Output:
Input : MISSION IMPOSSIBLE Output :MISSION IMPOSSIBLE
TRIML Function
TRIML function, in ILE COBOL program, removes leading spaces or leading characters (if defined) in character or alphanumeric variable.
(Similar to %triml built-in function in RPGLE programming)
Program:
IDENTIFICATION DIVISION.
*------------------------*
PROGRAM-ID. STRFUNC03.
AUTHOR. PROGRAMMERS.
ENVIRONMENT DIVISION.
*---------------------*
CONFIGURATION SECTION.
SOURCE-COMPUTER. IBMi-Series.
OBJECT-COMPUTER. IBMi-Series.
DATA DIVISION.
*--------------*
WORKING-STORAGE SECTION.
01 WS-LEN1 PIC X(20) VALUE SPACES.
01 WS-LEN2 PIC X(20) VALUE SPACES.
PROCEDURE DIVISION.
*-------------------*
000-START.
MOVE '012345' TO WS-LEN1.
MOVE FUNCTION TRIML(WS-LEN1, '0') TO WS-LEN2.
DISPLAY "INPUT :" WS-LEN1.
DISPLAY "OUTPUT:" WS-LEN2.
STOP RUN.
Output:
INPUT : 012345 OUTPUT : 12345
TRIMR Function
TRIMR function, in ILE COBOL program, removes trailing spaces or trailing characters (if defined) in character or alphanumeric variable.
(Similar to %trimr built-in function in RPGLE programming)
Program:
IDENTIFICATION DIVISION.
*------------------------*
PROGRAM-ID. STRFUNC04.
AUTHOR. PROGRAMMERS.
ENVIRONMENT DIVISION.
*---------------------*
CONFIGURATION SECTION.
SOURCE-COMPUTER. IBMi-Series.
OBJECT-COMPUTER. IBMi-Series.
DATA DIVISION.
*--------------*
WORKING-STORAGE SECTION.
01 VAR1 PIC X(30).
01 WS-TRIMR PIC X(30).
PROCEDURE DIVISION.
*-------------------*
000-START.
MOVE ' MARVEL ' TO VAR1.
STRING FUNCTION TRIMR(VAR1) DELIMITED BY SIZE
'-'
'END GAME'
DELIMITED BY SIZE
INTO WS-TRIMR
DISPLAY "Input :" VAR1.
DISPLAY "Output:" WS-TRIMR.
STOP RUN.
Output:
Input : MARVEL Output : MARVEL-END GAME
LOWER-CASE Function
LOWER-CASE function, in ILE COBOL program, converts all characters of string variable into lower cases.
(Similar to %lower built-in function in RPGLE programming)
Program:
IDENTIFICATION DIVISION.
*------------------------*
PROGRAM-ID. STRFUNC05.
AUTHOR. PROGRAMMERS.
ENVIRONMENT DIVISION.
*---------------------*
CONFIGURATION SECTION.
SOURCE-COMPUTER. IBMi-Series.
OBJECT-COMPUTER. IBMi-Series.
DATA DIVISION.
*--------------*
WORKING-STORAGE SECTION.
01 VAR1 PIC X(30).
01 WS-TRIM PIC X(30).
PROCEDURE DIVISION.
*-------------------------*
000-START.
MOVE ' MISSION IMPOSSIBLE' TO VAR1.
MOVE FUNCTION LOWER-CASE(VAR1) TO WS-TRIM.
DISPLAY "Input :" VAR1.
DISPLAY "Output:" WS-TRIM.
STOP RUN.
Output:
Input : MISSION IMPOSSIBLE Output : mission impossible
UPPER-CASE Function
UPPER-CASE function, in ILE COBOL program, converts all characters of string variable into upper cases.
(Similar to %upper built-in function in RPGLE programming)
Program:
IDENTIFICATION DIVISION.
*------------------------*
PROGRAM-ID. SATFUNC06.
AUTHOR. PROGRAMMERS.
ENVIRONMENT DIVISION.
*---------------------*
CONFIGURATION SECTION.
SOURCE-COMPUTER. IBMi-Series.
OBJECT-COMPUTER. IBMi-Series.
DATA DIVISION.
*--------------
WORKING-STORAGE SECTION.
01 VAR1 PIC X(30).
01 WS-TRIM PIC X(30).
PROCEDURE DIVISION.
*-------------------*
000-START.
MOVE 'mission impossible' TO VAR1.
MOVE FUNCTION UPPER-CASE(VAR1) TO WS-TRIM.
DISPLAY "Input :" VAR1.
DISPLAY "Output:" WS-TRIM.
STOP RUN.
Output:
Input :mission impossible Output :MISSION IMPOSSIBLE
REVERSE Function
REVERSE function, in ILE COBOL program, reverses all character positions in a string variable.
Program:
IDENTIFICATION DIVISION.
*------------------------*
PROGRAM-ID. STRFUNC07.
AUTHOR. PROGRAMMERS.
ENVIRONMENT DIVISION.
*---------------------*
CONFIGURATION SECTION.
SOURCE-COMPUTER. IBM1-Series.
OBJECT-COMPUTER. IBM1-Series.
DATA DIVISION.
*--------------*
WORKING-STORAGE SECTION.
01 VAR1 PIC X(20).
01 WS-REVERSE PIC X(20).
PROCEDURE DIVISION.
*-------------------*
000-START.
MOVE 'AVENGERS' TO VAR1.
MOVE FUNCTION REVERSE(VAR1) TO WS-REVERSE.
DISPLAY "Input :" VAR1.
DISPLAY "Output:" WS-REVERSE.
STOP RUN.
Output:
Input : AVENGERS Output : SREGNEVA