MainframeMaster

COBOL Tutorial

COBOL METHOD Clause - Quick Reference

Progress0 of 0 lessons

Overview

The METHOD clause is used in object-oriented COBOL to define class methods that specify the behavior and functionality of objects. It enables encapsulation, inheritance, and polymorphism in COBOL applications, providing modern object-oriented programming capabilities.

Purpose and Usage

  • Class behavior - Define methods that belong to classes
  • Encapsulation - Control access to object data
  • Inheritance - Support method overriding in subclasses
  • Polymorphism - Enable different implementations
  • Object state - Access and modify object data

Object-Oriented Concept

Class Definition: Contains data and methods
Method Definition: Specifies behavior
Object Creation: Instances of classes
Method Invocation: Using INVOKE statement
Inheritance: Subclasses inherit methods

The METHOD clause enables object-oriented programming in COBOL.

Syntax and Usage

The METHOD clause is defined within class definitions in the PROCEDURE DIVISION, specifying the behavior and functionality of class methods.

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
* Basic METHOD clause syntax METHOD-ID. method-name [USING parameter-list]. * Examples METHOD-ID. CALCULATE-AREA USING LENGTH, WIDTH. METHOD-ID. GET-BALANCE. METHOD-ID. UPDATE-STATUS USING NEW-STATUS. * Complete example CLASS-ID. BANK-ACCOUNT. ENVIRONMENT DIVISION. CONFIGURATION SECTION. DATA DIVISION. WORKING-STORAGE SECTION. 01 ACCOUNT-BALANCE PIC 9(10)V99. 01 ACCOUNT-STATUS PIC X(10). PROCEDURE DIVISION. METHOD-ID. DEPOSIT USING AMOUNT. ADD AMOUNT TO ACCOUNT-BALANCE MOVE "ACTIVE" TO ACCOUNT-STATUS END METHOD. METHOD-ID. WITHDRAW USING AMOUNT. IF ACCOUNT-BALANCE >= AMOUNT SUBTRACT AMOUNT FROM ACCOUNT-BALANCE MOVE "ACTIVE" TO ACCOUNT-STATUS ELSE MOVE "INSUFFICIENT" TO ACCOUNT-STATUS END-IF END METHOD. METHOD-ID. GET-BALANCE. * Return current balance * Implementation here END METHOD.

Methods are defined within class definitions using METHOD-ID.

Complete Example

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
* Complete object-oriented COBOL example CLASS-ID. CUSTOMER. ENVIRONMENT DIVISION. CONFIGURATION SECTION. DATA DIVISION. WORKING-STORAGE SECTION. 01 CUSTOMER-DATA. 05 CUSTOMER-ID PIC 9(6). 05 CUSTOMER-NAME PIC X(30). 05 CUSTOMER-EMAIL PIC X(50). 05 CUSTOMER-STATUS PIC X(10). 05 CUSTOMER-BALANCE PIC 9(8)V99. LINKAGE SECTION. 01 PARAMETER-AREA. 05 INPUT-PARAM PIC X(30). 05 OUTPUT-PARAM PIC X(50). PROCEDURE DIVISION. METHOD-ID. INITIALIZE-CUSTOMER USING CUST-ID, CUST-NAME, CUST-EMAIL. MOVE CUST-ID TO CUSTOMER-ID MOVE CUST-NAME TO CUSTOMER-NAME MOVE CUST-EMAIL TO CUSTOMER-EMAIL MOVE "ACTIVE" TO CUSTOMER-STATUS MOVE ZERO TO CUSTOMER-BALANCE END METHOD. METHOD-ID. UPDATE-BALANCE USING NEW-BALANCE. MOVE NEW-BALANCE TO CUSTOMER-BALANCE IF CUSTOMER-BALANCE < 0 MOVE "OVERDRAWN" TO CUSTOMER-STATUS ELSE MOVE "ACTIVE" TO CUSTOMER-STATUS END-IF END METHOD. METHOD-ID. GET-CUSTOMER-INFO RETURNING CUST-INFO. MOVE CUSTOMER-DATA TO CUST-INFO END METHOD. METHOD-ID. VALIDATE-EMAIL. * Email validation logic here IF CUSTOMER-EMAIL CONTAINS "@" MOVE "VALID" TO CUSTOMER-STATUS ELSE MOVE "INVALID" TO CUSTOMER-STATUS END-IF END METHOD. END CLASS.

This example shows a complete class with multiple methods.

Method Invocation

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
* Method invocation examples IDENTIFICATION DIVISION. PROGRAM-ID. METHOD-DEMO. DATA DIVISION. WORKING-STORAGE SECTION. 01 CUSTOMER-OBJECT OBJECT REFERENCE CUSTOMER. 01 CUST-ID PIC 9(6) VALUE 123456. 01 CUST-NAME PIC X(30) VALUE "John Doe". 01 CUST-EMAIL PIC X(50) VALUE "john@example.com". 01 NEW-BALANCE PIC 9(8)V99 VALUE 1000.00. 01 CUST-INFO PIC X(100). PROCEDURE DIVISION. MAIN-LOGIC. * Create customer object INVOKE CUSTOMER "NEW" RETURNING CUSTOMER-OBJECT * Initialize customer INVOKE CUSTOMER-OBJECT "INITIALIZE-CUSTOMER" USING CUST-ID, CUST-NAME, CUST-EMAIL * Update balance INVOKE CUSTOMER-OBJECT "UPDATE-BALANCE" USING NEW-BALANCE * Get customer info INVOKE CUSTOMER-OBJECT "GET-CUSTOMER-INFO" RETURNING CUST-INFO * Validate email INVOKE CUSTOMER-OBJECT "VALIDATE-EMAIL" STOP RUN.

Methods are invoked using the INVOKE statement with object references.

Common Use Cases

The METHOD clause is essential in various scenarios where object-oriented programming is needed for better code organization and maintainability.

Business Object Modeling

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
* Business object modeling with methods CLASS-ID. BANK-ACCOUNT. DATA DIVISION. WORKING-STORAGE SECTION. 01 ACCOUNT-DATA. 05 ACCOUNT-NUMBER PIC 9(10). 05 ACCOUNT-TYPE PIC X(10). 05 ACCOUNT-BALANCE PIC 9(10)V99. 05 ACCOUNT-STATUS PIC X(10). 05 LAST-TRANSACTION PIC 9(8). PROCEDURE DIVISION. METHOD-ID. OPEN-ACCOUNT USING ACC-NUM, ACC-TYPE, INITIAL-DEPOSIT. MOVE ACC-NUM TO ACCOUNT-NUMBER MOVE ACC-TYPE TO ACCOUNT-TYPE MOVE INITIAL-DEPOSIT TO ACCOUNT-BALANCE MOVE "ACTIVE" TO ACCOUNT-STATUS MOVE FUNCTION CURRENT-DATE TO LAST-TRANSACTION END METHOD. METHOD-ID. DEPOSIT USING AMOUNT. IF ACCOUNT-STATUS = "ACTIVE" ADD AMOUNT TO ACCOUNT-BALANCE MOVE FUNCTION CURRENT-DATE TO LAST-TRANSACTION END-IF END METHOD. METHOD-ID. WITHDRAW USING AMOUNT RETURNING SUCCESS-FLAG. IF ACCOUNT-STATUS = "ACTIVE" AND ACCOUNT-BALANCE >= AMOUNT SUBTRACT AMOUNT FROM ACCOUNT-BALANCE MOVE FUNCTION CURRENT-DATE TO LAST-TRANSACTION MOVE "Y" TO SUCCESS-FLAG ELSE MOVE "N" TO SUCCESS-FLAG END-IF END METHOD. METHOD-ID. GET-STATEMENT RETURNING STATEMENT-DATA. * Generate account statement * Implementation here END METHOD. END CLASS.

Business objects use methods to encapsulate business logic and data.

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
* Data validation with methods CLASS-ID. DATA-VALIDATOR. DATA DIVISION. WORKING-STORAGE SECTION. 01 VALIDATION-RULES. 05 MIN-LENGTH PIC 9(2) VALUE 3. 05 MAX-LENGTH PIC 9(2) VALUE 50. 05 ALLOWED-CHARS PIC X(62) VALUE "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789". PROCEDURE DIVISION. METHOD-ID. VALIDATE-EMAIL USING EMAIL-ADDRESS RETURNING IS-VALID. * Email validation logic IF EMAIL-ADDRESS CONTAINS "@" AND EMAIL-ADDRESS CONTAINS "." MOVE "Y" TO IS-VALID ELSE MOVE "N" TO IS-VALID END-IF END METHOD. METHOD-ID. VALIDATE-PHONE USING PHONE-NUMBER RETURNING IS-VALID. * Phone number validation IF PHONE-NUMBER IS NUMERIC AND LENGTH OF PHONE-NUMBER = 10 MOVE "Y" TO IS-VALID ELSE MOVE "N" TO IS-VALID END-IF END METHOD. METHOD-ID. VALIDATE-NAME USING NAME-VALUE RETURNING IS-VALID. * Name validation IF LENGTH OF NAME-VALUE >= MIN-LENGTH AND LENGTH OF NAME-VALUE <= MAX-LENGTH MOVE "Y" TO IS-VALID ELSE MOVE "N" TO IS-VALID END-IF END METHOD. END CLASS.

Data validation uses methods to encapsulate validation logic.

Inheritance and Polymorphism

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
* Inheritance and polymorphism with methods CLASS-ID. EMPLOYEE. DATA DIVISION. WORKING-STORAGE SECTION. 01 EMPLOYEE-DATA. 05 EMPLOYEE-ID PIC 9(6). 05 EMPLOYEE-NAME PIC X(30). 05 BASE-SALARY PIC 9(8)V99. PROCEDURE DIVISION. METHOD-ID. CALCULATE-SALARY RETURNING TOTAL-SALARY. MOVE BASE-SALARY TO TOTAL-SALARY END METHOD. END CLASS. CLASS-ID. MANAGER INHERITS FROM EMPLOYEE. DATA DIVISION. WORKING-STORAGE SECTION. 01 MANAGER-DATA. 05 BONUS-AMOUNT PIC 9(8)V99. PROCEDURE DIVISION. METHOD-ID. CALCULATE-SALARY RETURNING TOTAL-SALARY. * Override parent method INVOKE SUPER "CALCULATE-SALARY" RETURNING TOTAL-SALARY ADD BONUS-AMOUNT TO TOTAL-SALARY END METHOD. METHOD-ID. SET-BONUS USING BONUS. MOVE BONUS TO BONUS-AMOUNT END METHOD. END CLASS.

Inheritance allows subclasses to override parent methods.

Best Practices and Tips

Following these best practices ensures effective use of the METHOD clause in object-oriented COBOL applications.

METHOD Clause Best Practices

  • Use descriptive names - Name methods clearly to indicate their purpose
  • Follow naming conventions - Use consistent naming patterns for methods
  • Keep methods focused - Each method should have a single responsibility
  • Use proper encapsulation - Control access to object data through methods
  • Document method behavior - Clearly document what each method does
  • Handle errors appropriately - Include proper error handling in methods

Method Design Patterns

PatternDescriptionExample
Getter/SetterAccess and modify object dataGET-BALANCE, SET-BALANCE
ConstructorInitialize object stateINITIALIZE-ACCOUNT
ValidatorValidate data or stateVALIDATE-EMAIL
ProcessorProcess data or perform operationsCALCULATE-INTEREST
FormatterFormat data for displayFORMAT-STATEMENT

Performance Considerations

  • Method overhead - Method calls have some performance overhead
  • Object creation - Creating objects consumes memory
  • Inheritance depth - Deep inheritance hierarchies can impact performance
  • Parameter passing - Large parameters can affect performance
  • Memory management - Objects need proper cleanup
  • Testing - Test method performance with large datasets

When to Use METHOD Clause

Use CaseMETHOD SuitabilityReasoning
Object-oriented designExcellentCore feature of OO programming
Code reuseExcellentEnables inheritance and polymorphism
EncapsulationExcellentControls access to object data
Simple proceduresPoorUse traditional COBOL procedures
Legacy systemsPoorMay not support OO features

METHOD Clause Quick Reference

UsageSyntaxExample
Basic methodMETHOD-ID. method-name.METHOD-ID. GET-BALANCE.
Method with parametersMETHOD-ID. method-name USING param.METHOD-ID. DEPOSIT USING AMOUNT.
Method with return valueMETHOD-ID. method-name RETURNING value.METHOD-ID. CALCULATE RETURNING RESULT.
Method invocationINVOKE object "method" USING paramsINVOKE ACCOUNT "DEPOSIT" USING 100
Constructor methodMETHOD-ID. NEW.METHOD-ID. NEW.

Test Your Knowledge

1. What is the primary purpose of the METHOD clause in COBOL?

  • To define data structures
  • To define class methods in object-oriented COBOL
  • To control file operations
  • To perform arithmetic calculations

2. In which COBOL division is the METHOD clause typically defined?

  • IDENTIFICATION DIVISION
  • ENVIRONMENT DIVISION
  • DATA DIVISION
  • PROCEDURE DIVISION

3. How is the METHOD clause used in object-oriented COBOL?

  • To define data fields
  • To define class behavior and functionality
  • To control program flow
  • To manage memory allocation

4. Which of the following is a common use case for the METHOD clause?

  • File I/O operations
  • Defining class behavior and encapsulation
  • Data validation
  • Mathematical calculations

5. How do you invoke a method defined with the METHOD clause?

  • Using CALL statement
  • Using INVOKE statement with object reference
  • Using PERFORM statement
  • Using GO TO statement

Frequently Asked Questions