MainframeMaster

COBOL Tutorial

COBOL Built-in Functions

Progress0 of 0 lessons

Introduction to Built-in Functions

Built-in functions in COBOL provide a powerful set of predefined operations that simplify common programming tasks and improve code efficiency. These intrinsic functions cover a wide range of operations including string manipulation, mathematical calculations, date/time processing, and data conversion, making COBOL programming more productive and maintainable.

Key categories of built-in functions include:

  • String Functions: LENGTH, TRIM, SUBSTRING, and text manipulation
  • Mathematical Functions: ABS, SQRT, trigonometric functions
  • Date/Time Functions: CURRENT-DATE, DATE-OF-INTEGER
  • Conversion Functions: NUMVAL, CHAR, data type conversion
  • Utility Functions: RANDOM, MAX, MIN, statistical functions

String Manipulation Functions

String manipulation functions provide essential capabilities for working with text data, including length calculation, trimming, and substring extraction.

Basic String Functions

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
IDENTIFICATION DIVISION. PROGRAM-ID. STRING-FUNCTIONS-DEMO. DATA DIVISION. WORKING-STORAGE SECTION. 01 STRING-DATA. 05 WS-INPUT-STRING PIC X(50) VALUE " Hello World ". 05 WS-NAME-STRING PIC X(30) VALUE "John Smith". 05 WS-ADDRESS-STRING PIC X(50) VALUE "123 Main Street, Anytown, ST 12345". 05 WS-PHONE-STRING PIC X(15) VALUE "(555) 123-4567". 01 STRING-RESULTS. 05 WS-STRING-LENGTH PIC 9(2). 05 WS-TRIMMED-STRING PIC X(50). 05 WS-SUBSTRING-RESULT PIC X(20). 05 WS-UPPERCASE-STRING PIC X(50). 05 WS-LOWERCASE-STRING PIC X(50). PROCEDURE DIVISION. DISPLAY "=== String Functions Demonstration ===" PERFORM DEMONSTRATE-LENGTH-FUNCTION PERFORM DEMONSTRATE-TRIM-FUNCTION PERFORM DEMONSTRATE-SUBSTRING-FUNCTION PERFORM DEMONSTRATE-CASE-FUNCTIONS STOP RUN. DEMONSTRATE-LENGTH-FUNCTION. DISPLAY "=== LENGTH Function ===" DISPLAY "Input string: '" WS-INPUT-STRING "'" COMPUTE WS-STRING-LENGTH = FUNCTION LENGTH(WS-INPUT-STRING) DISPLAY "Length of input string: " WS-STRING-LENGTH COMPUTE WS-STRING-LENGTH = FUNCTION LENGTH(WS-NAME-STRING) DISPLAY "Length of name string: " WS-STRING-LENGTH COMPUTE WS-STRING-LENGTH = FUNCTION LENGTH(WS-ADDRESS-STRING) DISPLAY "Length of address string: " WS-STRING-LENGTH. DEMONSTRATE-TRIM-FUNCTION. DISPLAY "=== TRIM Function ===" DISPLAY "Original string: '" WS-INPUT-STRING "'" MOVE FUNCTION TRIM(WS-INPUT-STRING) TO WS-TRIMMED-STRING DISPLAY "Trimmed string: '" WS-TRIMMED-STRING "'" COMPUTE WS-STRING-LENGTH = FUNCTION LENGTH(WS-TRIMMED-STRING) DISPLAY "Length after trimming: " WS-STRING-LENGTH. DEMONSTRATE-SUBSTRING-FUNCTION. DISPLAY "=== SUBSTRING Function ===" DISPLAY "Full name: '" WS-NAME-STRING "'" * Extract first name (positions 1-4) MOVE FUNCTION SUBSTRING(WS-NAME-STRING, 1, 4) TO WS-SUBSTRING-RESULT DISPLAY "First name: '" WS-SUBSTRING-RESULT "'" * Extract last name (positions 6-10) MOVE FUNCTION SUBSTRING(WS-NAME-STRING, 6, 5) TO WS-SUBSTRING-RESULT DISPLAY "Last name: '" WS-SUBSTRING-RESULT "'". DEMONSTRATE-CASE-FUNCTIONS. DISPLAY "=== Case Functions ===" DISPLAY "Original string: '" WS-INPUT-STRING "'" MOVE FUNCTION UPPER-CASE(FUNCTION TRIM(WS-INPUT-STRING)) TO WS-UPPERCASE-STRING DISPLAY "Uppercase string: '" WS-UPPERCASE-STRING "'" MOVE FUNCTION LOWER-CASE(FUNCTION TRIM(WS-INPUT-STRING)) TO WS-LOWERCASE-STRING DISPLAY "Lowercase string: '" WS-LOWERCASE-STRING "'".

Mathematical Functions

Mathematical functions provide essential mathematical operations including absolute value, square root, and trigonometric functions.

Basic Mathematical Functions

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
IDENTIFICATION DIVISION. PROGRAM-ID. MATH-FUNCTIONS-DEMO. DATA DIVISION. WORKING-STORAGE SECTION. 01 MATH-DATA. 05 WS-NUMBER-1 PIC S9(5)V99 VALUE -123.45. 05 WS-NUMBER-2 PIC S9(5)V99 VALUE 67.89. 05 WS-NUMBER-3 PIC S9(5)V99 VALUE 144.00. 05 WS-ANGLE-DEGREES PIC S9(3)V99 VALUE 45.00. 01 MATH-RESULTS. 05 WS-ABSOLUTE-VALUE PIC 9(5)V99. 05 WS-SQUARE-ROOT PIC 9(5)V99. 05 WS-SINE-VALUE PIC S9V9999. 05 WS-COSINE-VALUE PIC S9V9999. 05 WS-TANGENT-VALUE PIC S9V9999. 05 WS-LOGARITHM PIC 9(5)V99. 05 WS-POWER-RESULT PIC 9(8)V99. PROCEDURE DIVISION. DISPLAY "=== Mathematical Functions Demonstration ===" PERFORM DEMONSTRATE-ABSOLUTE-FUNCTION PERFORM DEMONSTRATE-SQUARE-ROOT-FUNCTION PERFORM DEMONSTRATE-TRIGONOMETRIC-FUNCTIONS PERFORM DEMONSTRATE-LOGARITHM-FUNCTION PERFORM DEMONSTRATE-POWER-FUNCTION STOP RUN. DEMONSTRATE-ABSOLUTE-FUNCTION. DISPLAY "=== ABS Function ===" DISPLAY "Original number: " WS-NUMBER-1 COMPUTE WS-ABSOLUTE-VALUE = FUNCTION ABS(WS-NUMBER-1) DISPLAY "Absolute value: " WS-ABSOLUTE-VALUE. DEMONSTRATE-SQUARE-ROOT-FUNCTION. DISPLAY "=== SQRT Function ===" DISPLAY "Number: " WS-NUMBER-3 COMPUTE WS-SQUARE-ROOT = FUNCTION SQRT(WS-NUMBER-3) DISPLAY "Square root: " WS-SQUARE-ROOT. DEMONSTRATE-TRIGONOMETRIC-FUNCTIONS. DISPLAY "=== Trigonometric Functions ===" DISPLAY "Angle: " WS-ANGLE-DEGREES " degrees" * Convert degrees to radians for trigonometric functions COMPUTE WS-SINE-VALUE = FUNCTION SIN(WS-ANGLE-DEGREES * 3.14159 / 180) DISPLAY "Sine: " WS-SINE-VALUE COMPUTE WS-COSINE-VALUE = FUNCTION COS(WS-ANGLE-DEGREES * 3.14159 / 180) DISPLAY "Cosine: " WS-COSINE-VALUE COMPUTE WS-TANGENT-VALUE = FUNCTION TAN(WS-ANGLE-DEGREES * 3.14159 / 180) DISPLAY "Tangent: " WS-TANGENT-VALUE. DEMONSTRATE-LOGARITHM-FUNCTION. DISPLAY "=== LOG Function ===" DISPLAY "Number: " WS-NUMBER-2 COMPUTE WS-LOGARITHM = FUNCTION LOG(WS-NUMBER-2) DISPLAY "Natural logarithm: " WS-LOGARITHM. DEMONSTRATE-POWER-FUNCTION. DISPLAY "=== ** Power Function ===" DISPLAY "Base: " WS-NUMBER-2 ", Exponent: 2" COMPUTE WS-POWER-RESULT = WS-NUMBER-2 ** 2 DISPLAY "Power result: " WS-POWER-RESULT.

Date and Time Functions

Date and time functions provide essential capabilities for working with temporal data and performing date calculations.

Date/Time Function Usage

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
IDENTIFICATION DIVISION. PROGRAM-ID. DATE-TIME-FUNCTIONS-DEMO. DATA DIVISION. WORKING-STORAGE SECTION. 01 DATE-TIME-DATA. 05 WS-CURRENT-DATE PIC 9(8). 05 WS-CURRENT-TIME PIC 9(6). 05 WS-CURRENT-DATETIME PIC 9(14). 05 WS-TEST-DATE PIC 9(8) VALUE 20240115. 01 DATE-TIME-RESULTS. 05 WS-DATE-OF-INTEGER PIC 9(8). 05 WS-INTEGER-OF-DATE PIC 9(8). 05 WS-DAY-OF-WEEK PIC 9(1). 05 WS-DAY-OF-YEAR PIC 9(3). 05 WS-YEAR-OF-DATE PIC 9(4). 05 WS-MONTH-OF-DATE PIC 9(2). 05 WS-DAY-OF-DATE PIC 9(2). PROCEDURE DIVISION. DISPLAY "=== Date/Time Functions Demonstration ===" PERFORM DEMONSTRATE-CURRENT-DATE-FUNCTION PERFORM DEMONSTRATE-DATE-CONVERSION-FUNCTIONS PERFORM DEMONSTRATE-DATE-EXTRACTION-FUNCTIONS PERFORM DEMONSTRATE-DATE-CALCULATIONS STOP RUN. DEMONSTRATE-CURRENT-DATE-FUNCTION. DISPLAY "=== CURRENT-DATE Function ===" ACCEPT WS-CURRENT-DATETIME FROM DATE YYYYMMDD ACCEPT WS-CURRENT-DATETIME(9:6) FROM TIME DISPLAY "Current date/time: " WS-CURRENT-DATETIME DISPLAY "Current date: " WS-CURRENT-DATE DISPLAY "Current time: " WS-CURRENT-TIME. DEMONSTRATE-DATE-CONVERSION-FUNCTIONS. DISPLAY "=== Date Conversion Functions ===" DISPLAY "Test date: " WS-TEST-DATE * Convert date to integer COMPUTE WS-INTEGER-OF-DATE = FUNCTION INTEGER-OF-DATE(WS-TEST-DATE) DISPLAY "Integer of date: " WS-INTEGER-OF-DATE * Convert integer back to date COMPUTE WS-DATE-OF-INTEGER = FUNCTION DATE-OF-INTEGER(WS-INTEGER-OF-DATE) DISPLAY "Date of integer: " WS-DATE-OF-INTEGER. DEMONSTRATE-DATE-EXTRACTION-FUNCTIONS. DISPLAY "=== Date Extraction Functions ===" DISPLAY "Test date: " WS-TEST-DATE * Extract year COMPUTE WS-YEAR-OF-DATE = FUNCTION YEAR-OF-DATE(WS-TEST-DATE) DISPLAY "Year: " WS-YEAR-OF-DATE * Extract month COMPUTE WS-MONTH-OF-DATE = FUNCTION MONTH-OF-DATE(WS-TEST-DATE) DISPLAY "Month: " WS-MONTH-OF-DATE * Extract day COMPUTE WS-DAY-OF-DATE = FUNCTION DAY-OF-DATE(WS-TEST-DATE) DISPLAY "Day: " WS-DAY-OF-DATE * Extract day of week COMPUTE WS-DAY-OF-WEEK = FUNCTION DAY-OF-WEEK(WS-TEST-DATE) DISPLAY "Day of week: " WS-DAY-OF-WEEK * Extract day of year COMPUTE WS-DAY-OF-YEAR = FUNCTION DAY-OF-YEAR(WS-TEST-DATE) DISPLAY "Day of year: " WS-DAY-OF-YEAR. DEMONSTRATE-DATE-CALCULATIONS. DISPLAY "=== Date Calculations ===" * Calculate days between dates COMPUTE WS-INTEGER-OF-DATE = FUNCTION INTEGER-OF-DATE(WS-TEST-DATE) COMPUTE WS-INTEGER-OF-DATE = WS-INTEGER-OF-DATE + 30 COMPUTE WS-DATE-OF-INTEGER = FUNCTION DATE-OF-INTEGER(WS-INTEGER-OF-DATE) DISPLAY "Date 30 days later: " WS-DATE-OF-INTEGER.

Data Conversion Functions

Data conversion functions enable transformation between different data types and formats.

Conversion Function Examples

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
IDENTIFICATION DIVISION. PROGRAM-ID. CONVERSION-FUNCTIONS-DEMO. DATA DIVISION. WORKING-STORAGE SECTION. 01 CONVERSION-DATA. 05 WS-NUMERIC-STRING PIC X(10) VALUE "123.45". 05 WS-CHAR-STRING PIC X(5) VALUE "HELLO". 05 WS-NUMERIC-VALUE PIC 9(5)V99. 05 WS-CHAR-VALUE PIC X(1). 01 CONVERSION-RESULTS. 05 WS-CONVERTED-NUMBER PIC 9(5)V99. 05 WS-CONVERTED-CHAR PIC X(1). 05 WS-VALIDATION-RESULT PIC X(1). 88 CONVERSION-VALID VALUE 'Y'. 88 CONVERSION-INVALID VALUE 'N'. PROCEDURE DIVISION. DISPLAY "=== Conversion Functions Demonstration ===" PERFORM DEMONSTRATE-NUMVAL-FUNCTION PERFORM DEMONSTRATE-CHAR-FUNCTION PERFORM DEMONSTRATE-VALIDATION-FUNCTIONS STOP RUN. DEMONSTRATE-NUMVAL-FUNCTION. DISPLAY "=== NUMVAL Function ===" DISPLAY "Numeric string: '" WS-NUMERIC-STRING "'" COMPUTE WS-CONVERTED-NUMBER = FUNCTION NUMVAL(WS-NUMERIC-STRING) DISPLAY "Converted number: " WS-CONVERTED-NUMBER. DEMONSTRATE-CHAR-FUNCTION. DISPLAY "=== CHAR Function ===" MOVE 65 TO WS-NUMERIC-VALUE DISPLAY "Numeric value: " WS-NUMERIC-VALUE COMPUTE WS-CONVERTED-CHAR = FUNCTION CHAR(WS-NUMERIC-VALUE) DISPLAY "Converted character: '" WS-CONVERTED-CHAR "'". DEMONSTRATE-VALIDATION-FUNCTIONS. DISPLAY "=== Validation Functions ===" * Test numeric validation IF FUNCTION NUMVAL-C(WS-NUMERIC-STRING) = 0 SET CONVERSION-VALID TO TRUE DISPLAY "Numeric string is valid" ELSE SET CONVERSION-INVALID TO TRUE DISPLAY "Numeric string is invalid" END-IF * Test character validation IF FUNCTION CHAR(65) = "A" DISPLAY "Character conversion successful" ELSE DISPLAY "Character conversion failed" END-IF.

Utility and Statistical Functions

Utility and statistical functions provide additional capabilities for data analysis and random number generation.

Utility Function Examples

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
IDENTIFICATION DIVISION. PROGRAM-ID. UTILITY-FUNCTIONS-DEMO. DATA DIVISION. WORKING-STORAGE SECTION. 01 UTILITY-DATA. 05 WS-NUMBER-1 PIC 9(3) VALUE 100. 05 WS-NUMBER-2 PIC 9(3) VALUE 200. 05 WS-NUMBER-3 PIC 9(3) VALUE 150. 05 WS-ARRAY OCCURS 10 TIMES. 10 WS-ARRAY-VALUE PIC 9(3). 01 UTILITY-RESULTS. 05 WS-MAXIMUM-VALUE PIC 9(3). 05 WS-MINIMUM-VALUE PIC 9(3). 05 WS-RANDOM-NUMBER PIC 9(3). 05 WS-SUM-VALUE PIC 9(4). 05 WS-AVERAGE-VALUE PIC 9(3)V99. PROCEDURE DIVISION. DISPLAY "=== Utility Functions Demonstration ===" PERFORM INITIALIZE-ARRAY-DATA PERFORM DEMONSTRATE-MAX-MIN-FUNCTIONS PERFORM DEMONSTRATE-RANDOM-FUNCTION PERFORM DEMONSTRATE-STATISTICAL-FUNCTIONS STOP RUN. INITIALIZE-ARRAY-DATA. DISPLAY "=== Initializing Array Data ===" MOVE 10 TO WS-ARRAY-VALUE(1) MOVE 25 TO WS-ARRAY-VALUE(2) MOVE 30 TO WS-ARRAY-VALUE(3) MOVE 15 TO WS-ARRAY-VALUE(4) MOVE 40 TO WS-ARRAY-VALUE(5) MOVE 20 TO WS-ARRAY-VALUE(6) MOVE 35 TO WS-ARRAY-VALUE(7) MOVE 50 TO WS-ARRAY-VALUE(8) MOVE 45 TO WS-ARRAY-VALUE(9) MOVE 5 TO WS-ARRAY-VALUE(10) DISPLAY "Array initialized with values". DEMONSTRATE-MAX-MIN-FUNCTIONS. DISPLAY "=== MAX and MIN Functions ===" DISPLAY "Numbers: " WS-NUMBER-1 ", " WS-NUMBER-2 ", " WS-NUMBER-3 COMPUTE WS-MAXIMUM-VALUE = FUNCTION MAX(WS-NUMBER-1, WS-NUMBER-2, WS-NUMBER-3) DISPLAY "Maximum value: " WS-MAXIMUM-VALUE COMPUTE WS-MINIMUM-VALUE = FUNCTION MIN(WS-NUMBER-1, WS-NUMBER-2, WS-NUMBER-3) DISPLAY "Minimum value: " WS-MINIMUM-VALUE. DEMONSTRATE-RANDOM-FUNCTION. DISPLAY "=== RANDOM Function ===" * Generate random numbers PERFORM VARYING WS-NUMBER-1 FROM 1 BY 1 UNTIL WS-NUMBER-1 > 5 COMPUTE WS-RANDOM-NUMBER = FUNCTION RANDOM(1000) DISPLAY "Random number " WS-NUMBER-1 ": " WS-RANDOM-NUMBER END-PERFORM. DEMONSTRATE-STATISTICAL-FUNCTIONS. DISPLAY "=== Statistical Functions ===" * Calculate sum of array values MOVE 0 TO WS-SUM-VALUE PERFORM VARYING WS-NUMBER-1 FROM 1 BY 1 UNTIL WS-NUMBER-1 > 10 ADD WS-ARRAY-VALUE(WS-NUMBER-1) TO WS-SUM-VALUE END-PERFORM DISPLAY "Sum of array values: " WS-SUM-VALUE * Calculate average COMPUTE WS-AVERAGE-VALUE = WS-SUM-VALUE / 10 DISPLAY "Average value: " WS-AVERAGE-VALUE.

Advanced Function Usage

Advanced function usage demonstrates complex scenarios and combinations of built-in functions.

Complex Function Combinations

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
IDENTIFICATION DIVISION. PROGRAM-ID. ADVANCED-FUNCTIONS-DEMO. DATA DIVISION. WORKING-STORAGE SECTION. 01 ADVANCED-DATA. 05 WS-INPUT-TEXT PIC X(100) VALUE " Hello World! This is a test. ". 05 WS-DATE-STRING PIC X(10) VALUE "2024-01-15". 05 WS-PHONE-STRING PIC X(15) VALUE "(555) 123-4567". 05 WS-EMAIL-STRING PIC X(30) VALUE "user@example.com". 01 ADVANCED-RESULTS. 05 WS-PROCESSED-TEXT PIC X(100). 05 WS-WORD-COUNT PIC 9(2). 05 WS-CLEAN-PHONE PIC X(10). 05 WS-DOMAIN-NAME PIC X(20). 05 WS-VALIDATION-RESULT PIC X(1). PROCEDURE DIVISION. DISPLAY "=== Advanced Functions Demonstration ===" PERFORM DEMONSTRATE-TEXT-PROCESSING PERFORM DEMONSTRATE-DATA-CLEANING PERFORM DEMONSTRATE-VALIDATION-LOGIC STOP RUN. DEMONSTRATE-TEXT-PROCESSING. DISPLAY "=== Text Processing ===" DISPLAY "Original text: '" WS-INPUT-TEXT "'" * Process text: trim, convert to uppercase, count words MOVE FUNCTION UPPER-CASE(FUNCTION TRIM(WS-INPUT-TEXT)) TO WS-PROCESSED-TEXT DISPLAY "Processed text: '" WS-PROCESSED-TEXT "'" * Count words (simplified approach) COMPUTE WS-WORD-COUNT = FUNCTION LENGTH(FUNCTION TRIM(WS-PROCESSED-TEXT)) / 5 DISPLAY "Estimated word count: " WS-WORD-COUNT. DEMONSTRATE-DATA-CLEANING. DISPLAY "=== Data Cleaning ===" DISPLAY "Original phone: '" WS-PHONE-STRING "'" * Extract numeric characters from phone number MOVE FUNCTION SUBSTRING(WS-PHONE-STRING, 2, 3) TO WS-CLEAN-PHONE(1:3) MOVE FUNCTION SUBSTRING(WS-PHONE-STRING, 7, 3) TO WS-CLEAN-PHONE(4:3) MOVE FUNCTION SUBSTRING(WS-PHONE-STRING, 11, 4) TO WS-CLEAN-PHONE(7:4) DISPLAY "Cleaned phone: '" WS-CLEAN-PHONE "'" * Extract domain from email DISPLAY "Original email: '" WS-EMAIL-STRING "'" MOVE FUNCTION SUBSTRING(WS-EMAIL-STRING, 6, 11) TO WS-DOMAIN-NAME DISPLAY "Domain name: '" WS-DOMAIN-NAME "'". DEMONSTRATE-VALIDATION-LOGIC. DISPLAY "=== Validation Logic ===" * Validate email format (simplified) IF FUNCTION LENGTH(WS-EMAIL-STRING) > 5 AND FUNCTION SUBSTRING(WS-EMAIL-STRING, 5, 1) = "@" MOVE 'Y' TO WS-VALIDATION-RESULT DISPLAY "Email format appears valid" ELSE MOVE 'N' TO WS-VALIDATION-RESULT DISPLAY "Email format appears invalid" END-IF.

Best Practices for Built-in Functions

Following best practices ensures effective and efficient use of built-in functions in COBOL applications.

Usage Guidelines

  • Use built-in functions instead of custom implementations when possible
  • Validate input parameters before using functions
  • Handle function return values appropriately
  • Combine functions efficiently for complex operations
  • Document function usage for maintainability

Performance Considerations

  • Built-in functions are generally optimized for performance
  • Avoid unnecessary function calls in loops
  • Cache function results when appropriate
  • Use appropriate data types for function parameters
  • Profile function usage in performance-critical sections

Error Handling

  • Check function return values for expected ranges
  • Handle division by zero and other mathematical errors
  • Validate string parameters for length and content
  • Implement fallback procedures for function failures
  • Log function errors for debugging and monitoring

FAQ

What are built-in functions in COBOL?

Built-in functions in COBOL are predefined functions provided by the language that perform common operations like string manipulation, mathematical calculations, date/time processing, and data conversion. They are accessed using the FUNCTION keyword and provide efficient, standardized implementations of common operations.

What are the main categories of COBOL built-in functions?

COBOL built-in functions include string functions (LENGTH, TRIM, SUBSTRING), mathematical functions (ABS, SQRT, SIN, COS), date/time functions (CURRENT-DATE, DATE-OF-INTEGER), conversion functions (NUMVAL, CHAR), and utility functions (RANDOM, MAX, MIN).

How do you use built-in functions in COBOL?

Built-in functions are used with the FUNCTION keyword followed by the function name and parameters in parentheses. For example: FUNCTION LENGTH(WS-STRING), FUNCTION ABS(WS-NUMBER), or FUNCTION CURRENT-DATE. They can be used in COMPUTE statements, MOVE statements, and conditional expressions.

What are the performance benefits of built-in functions?

Built-in functions provide optimized implementations, reduce code complexity, improve readability, ensure consistent behavior across platforms, and often perform better than custom implementations. They also reduce the need for external libraries and simplify maintenance.

How do you handle errors with built-in functions?

Built-in functions handle errors through return values (like zero for invalid operations), exception handling mechanisms, and by providing safe default behaviors. It's important to validate input parameters and check return values for expected ranges.