The FUNCTION keyword represents a sophisticated built-in operation access mechanism within COBOL programming environments, serving as the primary gateway for utilizing intrinsic functions that provide comprehensive mathematical computations, string manipulation capabilities, date and time processing operations, and data conversion utilities. This keyword embodies the principles of modular programming by offering pre-built, tested, and optimized functionality that eliminates the need for custom implementation of common operations while ensuring consistent behavior across different COBOL implementations and maintaining high performance standards in enterprise applications that require reliable computational services and data processing capabilities.
12345678FUNCTION function-name FUNCTION function-name(argument1) FUNCTION function-name(argument1, argument2, ...) *> Examples: MOVE FUNCTION CURRENT-DATE TO WS-DATE COMPUTE WS-RESULT = FUNCTION SQRT(WS-NUMBER) MOVE FUNCTION UPPER-CASE(WS-STRING) TO WS-UPPER-STRING
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061IDENTIFICATION DIVISION. PROGRAM-ID. FUNCTION-EXAMPLES. DATA DIVISION. WORKING-STORAGE SECTION. 01 NUMERIC-VALUES. 05 WS-NUMBER-1 PIC 9(5)V99 VALUE 123.45. 05 WS-NUMBER-2 PIC 9(5)V99 VALUE 678.90. 05 WS-RESULT PIC 9(7)V99. 05 WS-INTEGER PIC 9(5). 01 STRING-VALUES. 05 WS-INPUT-STRING PIC X(50) VALUE 'Hello World'. 05 WS-UPPER-STRING PIC X(50). 05 WS-LOWER-STRING PIC X(50). 05 WS-STRING-LENGTH PIC 9(3). 01 DATE-TIME-VALUES. 05 WS-CURRENT-DATE PIC X(21). 05 WS-CURRENT-TIME PIC X(8). 05 WS-JULIAN-DATE PIC 9(7). PROCEDURE DIVISION. MAIN-PROCESSING. *> Mathematical Functions COMPUTE WS-RESULT = FUNCTION MAX(WS-NUMBER-1, WS-NUMBER-2) DISPLAY 'Maximum value: ' WS-RESULT COMPUTE WS-RESULT = FUNCTION MIN(WS-NUMBER-1, WS-NUMBER-2) DISPLAY 'Minimum value: ' WS-RESULT COMPUTE WS-RESULT = FUNCTION SQRT(WS-NUMBER-1) DISPLAY 'Square root of ' WS-NUMBER-1 ': ' WS-RESULT COMPUTE WS-INTEGER = FUNCTION INTEGER(WS-NUMBER-1) DISPLAY 'Integer part of ' WS-NUMBER-1 ': ' WS-INTEGER COMPUTE WS-RESULT = FUNCTION ABS(-456.78) DISPLAY 'Absolute value: ' WS-RESULT *> String Functions MOVE FUNCTION UPPER-CASE(WS-INPUT-STRING) TO WS-UPPER-STRING DISPLAY 'Uppercase: ' WS-UPPER-STRING MOVE FUNCTION LOWER-CASE(WS-INPUT-STRING) TO WS-LOWER-STRING DISPLAY 'Lowercase: ' WS-LOWER-STRING COMPUTE WS-STRING-LENGTH = FUNCTION LENGTH(WS-INPUT-STRING) DISPLAY 'String length: ' WS-STRING-LENGTH *> Date and Time Functions MOVE FUNCTION CURRENT-DATE TO WS-CURRENT-DATE DISPLAY 'Current date: ' WS-CURRENT-DATE MOVE FUNCTION WHEN-COMPILED TO WS-CURRENT-TIME DISPLAY 'Compilation time: ' WS-CURRENT-TIME COMPUTE WS-JULIAN-DATE = FUNCTION DATE-OF-INTEGER(2024001) DISPLAY 'Julian date: ' WS-JULIAN-DATE STOP RUN.
1234567891011121314151617181901 INPUT-DATA. 05 USER-INPUT PIC X(20). 05 NUMERIC-VALUE PIC 9(8)V99. 05 VALIDATION-RESULT PIC X(10). PROCEDURE DIVISION. *> Validate and convert input IF FUNCTION TEST-NUMVAL(USER-INPUT) = 0 COMPUTE NUMERIC-VALUE = FUNCTION NUMVAL(USER-INPUT) MOVE 'VALID' TO VALIDATION-RESULT ELSE MOVE 'INVALID' TO VALIDATION-RESULT END-IF *> Check range using MAX/MIN IF NUMERIC-VALUE = FUNCTION MAX(NUMERIC-VALUE, 1000) AND NUMERIC-VALUE = FUNCTION MIN(NUMERIC-VALUE, 9999) DISPLAY 'Value is within acceptable range' END-IF.
12345678910111213141516171801 TEXT-PROCESSING. 05 INPUT-TEXT PIC X(100). 05 PROCESSED-TEXT PIC X(100). 05 WORD-COUNT PIC 9(3) VALUE 0. PROCEDURE DIVISION. *> Normalize text case MOVE FUNCTION UPPER-CASE( FUNCTION TRIM(INPUT-TEXT)) TO PROCESSED-TEXT *> Count words (simplified) PERFORM VARYING WS-INDEX FROM 1 BY 1 UNTIL WS-INDEX > FUNCTION LENGTH(PROCESSED-TEXT) IF PROCESSED-TEXT(WS-INDEX:1) = SPACE AND PROCESSED-TEXT(WS-INDEX + 1:1) NOT = SPACE ADD 1 TO WORD-COUNT END-IF END-PERFORM.
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647IDENTIFICATION DIVISION. PROGRAM-ID. ADVANCED-FUNCTIONS. DATA DIVISION. WORKING-STORAGE SECTION. 01 STATISTICAL-DATA. 05 VALUES-ARRAY OCCURS 10 TIMES PIC 9(5)V99. 05 ARRAY-INDEX PIC 9(2). 05 TOTAL-SUM PIC 9(7)V99. 05 AVERAGE-VALUE PIC 9(5)V99. 05 VARIANCE PIC 9(7)V99. 01 DATE-CALCULATIONS. 05 START-DATE PIC 9(8). 05 END-DATE PIC 9(8). 05 DAYS-DIFFERENCE PIC 9(5). 05 BUSINESS-DAYS PIC 9(5). PROCEDURE DIVISION. ADVANCED-PROCESSING. *> Statistical calculations using functions COMPUTE TOTAL-SUM = FUNCTION SUM(VALUES-ARRAY(ALL)) COMPUTE AVERAGE-VALUE = TOTAL-SUM / 10 *> Find maximum and minimum values DISPLAY 'Maximum value: ' FUNCTION MAX(VALUES-ARRAY(ALL)) DISPLAY 'Minimum value: ' FUNCTION MIN(VALUES-ARRAY(ALL)) *> Calculate variance PERFORM VARYING ARRAY-INDEX FROM 1 BY 1 UNTIL ARRAY-INDEX > 10 COMPUTE VARIANCE = VARIANCE + FUNCTION ABS(VALUES-ARRAY(ARRAY-INDEX) - AVERAGE-VALUE) ** 2 END-PERFORM COMPUTE VARIANCE = VARIANCE / 10 *> Date arithmetic MOVE FUNCTION CURRENT-DATE(1:8) TO START-DATE COMPUTE END-DATE = FUNCTION INTEGER-OF-DATE( FUNCTION DATE-OF-INTEGER(START-DATE) + 30) COMPUTE DAYS-DIFFERENCE = FUNCTION INTEGER-OF-DATE(END-DATE) - FUNCTION INTEGER-OF-DATE(START-DATE) DISPLAY 'Days between dates: ' DAYS-DIFFERENCE STOP RUN.
What's the correct syntax to get the length of a string variable?
Answer: FUNCTION LENGTH(string-variable) returns the length of the string including trailing spaces.
How do you find the maximum value between three numbers?
Answer: FUNCTION MAX(number1, number2, number3) or use nested MAX functions: FUNCTION MAX(FUNCTION MAX(number1, number2), number3).
What function provides the current system date and time?
Answer: FUNCTION CURRENT-DATE returns a 21-character string containing current date, time, and time zone information.
123456789101112131401 INPUT-VALIDATION. 05 USER-INPUT PIC X(20). 05 CLEAN-INPUT PIC X(20). PROCEDURE DIVISION. *> Clean and validate input MOVE FUNCTION TRIM( FUNCTION UPPER-CASE(USER-INPUT)) TO CLEAN-INPUT IF FUNCTION TEST-NUMVAL(CLEAN-INPUT) = 0 DISPLAY 'Valid numeric input' ELSE DISPLAY 'Invalid input' END-IF.
123456789101101 SALES-DATA OCCURS 12 TIMES PIC 9(7)V99. 01 STATISTICS. 05 TOTAL-SALES PIC 9(9)V99. 05 AVERAGE-SALES PIC 9(7)V99. PROCEDURE DIVISION. COMPUTE TOTAL-SALES = FUNCTION SUM(SALES-DATA(ALL)) COMPUTE AVERAGE-SALES = TOTAL-SALES / 12 DISPLAY 'Highest month: ' FUNCTION MAX(SALES-DATA(ALL)) DISPLAY 'Lowest month: ' FUNCTION MIN(SALES-DATA(ALL)).