MainframeMaster

COBOL Tutorial

COBOL FUNCTION-ID Clause - Quick Reference

Progress0 of 0 lessons

Overview

The FUNCTION-ID clause is used in COBOL to define functions that can accept parameters and return values. This clause enables functional programming capabilities in COBOL, allowing for modular, reusable code components.

Purpose and Usage

  • Function definition - Define reusable function components
  • Parameter passing - Accept input parameters using USING clause
  • Return values - Return data using RETURNING clause
  • Modular programming - Create self-contained code units
  • Functional programming - Enable function-based programming style

Function Structure

FUNCTION-ID function-name
USING parameter1, parameter2, ...
RETURNING result
PROCEDURE DIVISION
... function logic ...
GOBACK
END FUNCTION

Functions have a defined structure with parameters, return values, and logic.

Syntax

The FUNCTION-ID clause follows specific syntax patterns for defining functions with parameters and return values.

Basic Syntax

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
* Basic FUNCTION-ID clause syntax FUNCTION-ID function-name [USING parameter1, parameter2, ...] [RETURNING result-data-name] [ENVIRONMENT DIVISION] [DATA DIVISION] [PROCEDURE DIVISION] END FUNCTION function-name. * Examples FUNCTION-ID ADD-NUMBERS USING PARAM1 PARAM2 RETURNING RESULT. FUNCTION-ID CALCULATE-TOTAL USING AMOUNT TAX-RATE RETURNING TOTAL-AMOUNT. FUNCTION-ID VALIDATE-DATE USING DATE-STRING RETURNING IS-VALID. * Complete example FUNCTION-ID CALCULATE-INTEREST USING PRINCIPAL-AMOUNT INTEREST-RATE YEARS RETURNING INTEREST-AMOUNT. DATA DIVISION. LINKAGE SECTION. 01 PRINCIPAL-AMOUNT PIC 9(8)V99. 01 INTEREST-RATE PIC 9(3)V99. 01 YEARS PIC 9(2). 01 INTEREST-AMOUNT PIC 9(8)V99. PROCEDURE DIVISION USING PRINCIPAL-AMOUNT INTEREST-RATE YEARS RETURNING INTEREST-AMOUNT. COMPUTE INTEREST-AMOUNT = PRINCIPAL-AMOUNT * INTEREST-RATE * YEARS GOBACK. END FUNCTION CALCULATE-INTEREST.

FUNCTION-ID defines the function name and characteristics.

Parameter Definition

ClausePurposeExample
USINGDefine input parametersUSING PARAM1 PARAM2
RETURNINGDefine return valueRETURNING RESULT
LINKAGE SECTIONDefine parameter data types01 PARAM1 PIC 9(5)
PROCEDURE DIVISIONDefine function logicFunction implementation

Function Call Syntax

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
* Calling functions FUNCTION function-name(parameter1, parameter2, ...) * Examples FUNCTION ADD-NUMBERS(100, 200) COMPUTE RESULT = FUNCTION CALCULATE-TOTAL(AMOUNT, TAX-RATE) IF FUNCTION VALIDATE-DATE(DATE-STRING) = 'Y' DISPLAY 'Valid date' END-IF * Using in expressions COMPUTE TOTAL = FUNCTION ADD-NUMBERS(A, B) + FUNCTION ADD-NUMBERS(C, D) * Storing function result MOVE FUNCTION CALCULATE-INTEREST(PRINCIPAL, RATE, YEARS) TO INTEREST

Functions are called using the FUNCTION keyword with parameters.

Common Use Cases

FUNCTION-ID is commonly used in specific scenarios where modular, reusable code components are needed.

Mathematical Calculations

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
* Mathematical function example FUNCTION-ID CALCULATE-AREA USING LENGTH WIDTH RETURNING AREA. DATA DIVISION. LINKAGE SECTION. 01 LENGTH PIC 9(5)V99. 01 WIDTH PIC 9(5)V99. 01 AREA PIC 9(8)V99. PROCEDURE DIVISION USING LENGTH WIDTH RETURNING AREA. COMPUTE AREA = LENGTH * WIDTH GOBACK. END FUNCTION CALCULATE-AREA. * Usage COMPUTE RECTANGLE-AREA = FUNCTION CALCULATE-AREA(10.5, 5.2) DISPLAY 'Area: ' RECTANGLE-AREA

Functions are ideal for mathematical calculations and formulas.

Data Validation

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
* Data validation function FUNCTION-ID VALIDATE-EMAIL USING EMAIL-ADDRESS RETURNING IS-VALID. DATA DIVISION. LINKAGE SECTION. 01 EMAIL-ADDRESS PIC X(50). 01 IS-VALID PIC X. PROCEDURE DIVISION USING EMAIL-ADDRESS RETURNING IS-VALID. IF EMAIL-ADDRESS CONTAINS '@' AND EMAIL-ADDRESS CONTAINS '.' MOVE 'Y' TO IS-VALID ELSE MOVE 'N' TO IS-VALID END-IF GOBACK. END FUNCTION VALIDATE-EMAIL. * Usage IF FUNCTION VALIDATE-EMAIL(USER-EMAIL) = 'Y' DISPLAY 'Valid email address' ELSE DISPLAY 'Invalid email address' END-IF

Functions provide reusable validation logic.

String Manipulation

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
* String manipulation function FUNCTION-ID REVERSE-STRING USING INPUT-STRING RETURNING REVERSED-STRING. DATA DIVISION. LINKAGE SECTION. 01 INPUT-STRING PIC X(50). 01 REVERSED-STRING PIC X(50). WORKING-STORAGE SECTION. 01 STRING-LENGTH PIC 9(2). 01 COUNTER PIC 9(2). 01 TEMP-CHAR PIC X. PROCEDURE DIVISION USING INPUT-STRING RETURNING REVERSED-STRING. MOVE INPUT-STRING TO REVERSED-STRING INSPECT REVERSED-STRING TALLYING STRING-LENGTH FOR CHARACTERS PERFORM VARYING COUNTER FROM 1 BY 1 UNTIL COUNTER > STRING-LENGTH / 2 MOVE REVERSED-STRING(COUNTER:1) TO TEMP-CHAR MOVE REVERSED-STRING(STRING-LENGTH - COUNTER + 1:1) TO REVERSED-STRING(COUNTER:1) MOVE TEMP-CHAR TO REVERSED-STRING(STRING-LENGTH - COUNTER + 1:1) END-PERFORM GOBACK. END FUNCTION REVERSE-STRING. * Usage MOVE FUNCTION REVERSE-STRING('HELLO') TO REVERSED-WORD DISPLAY 'Reversed: ' REVERSED-WORD

Functions enable complex string manipulation operations.

Best Practices and Tips

Following these best practices ensures effective use of the FUNCTION-ID clause for functional programming.

FUNCTION-ID Design Principles

  • Single responsibility - Each function should have one clear purpose
  • Clear naming - Use descriptive function names
  • Parameter validation - Validate input parameters
  • Return value consistency - Ensure consistent return value types
  • Documentation - Document function purpose and parameters
  • Error handling - Handle errors gracefully within functions

Common Pitfalls to Avoid

PitfallProblemSolution
Complex functionsHard to understand and maintainKeep functions simple and focused
No parameter validationIncorrect results or errorsAlways validate input parameters
Inconsistent return typesConfusing and error-proneUse consistent return value types
Poor namingHard to understand function purposeUse descriptive function names
No error handlingFunctions fail without proper error messagesImplement proper error handling

Performance Considerations

  • Function call overhead - Function calls have some overhead
  • Parameter passing cost - Parameter passing adds processing time
  • Return value handling - Return value processing has overhead
  • Memory usage - Functions may use additional memory
  • Optimization opportunities - Some compilers optimize function calls
  • Inline vs function calls - Consider when to use inline code vs functions

When to Use FUNCTION-ID

Use CaseFUNCTION-ID SuitabilityReasoning
Reusable logicExcellentPerfect for code that needs to be reused
Complex calculationsExcellentIdeal for complex business logic
Data validationGoodGood for validation rules
Simple operationsPoorOverkill for simple operations
Performance-critical codePoorFunction call overhead may be too high

FUNCTION-ID Clause Quick Reference

UsageSyntaxExample
Basic functionFUNCTION-ID function-nameFUNCTION-ID CALCULATE-TOTAL
Function with parametersFUNCTION-ID function-name USING paramsFUNCTION-ID ADD-NUMBERS USING PARAM1 PARAM2
Function with returnFUNCTION-ID function-name RETURNING resultFUNCTION-ID CALCULATE-TOTAL RETURNING RESULT
Function callFUNCTION function-name(params)FUNCTION ADD-NUMBERS(100, 200)
Function in expressionCOMPUTE result = FUNCTION function-name(params)COMPUTE TOTAL = FUNCTION ADD-NUMBERS(A, B)

Test Your Knowledge

1. What is the primary purpose of the FUNCTION-ID clause in COBOL?

  • To define data types
  • To define function names and characteristics in functional programming
  • To control file operations
  • To perform calculations

2. Which clause is used to specify the return type of a function?

  • USING
  • RETURNING
  • FUNCTION-ID
  • END FUNCTION

3. What is the correct syntax for defining a function parameter?

  • USING parameter-name PIC X(10)
  • PARAMETER parameter-name PIC X(10)
  • INPUT parameter-name PIC X(10)
  • ARGUMENT parameter-name PIC X(10)

4. How do you return a value from a function in COBOL?

  • Use the RETURN statement with a value
  • Use the GOBACK statement with a value
  • Use the EXIT statement with a value
  • Use the STOP statement with a value

5. What is the relationship between FUNCTION-ID and PROGRAM-ID?

  • They are the same thing
  • FUNCTION-ID defines functions while PROGRAM-ID defines main programs
  • FUNCTION-ID is obsolete and PROGRAM-ID should be used instead
  • They cannot be used together

Frequently Asked Questions