MainframeMaster

COBOL Tutorial

COBOL INTERFACE-ID Clause - Quick Reference

Progress0 of 0 lessons

Overview

The INTERFACE-ID clause is used in object-oriented COBOL to define interfaces that specify contracts for classes. Interfaces define a set of methods and properties that implementing classes must provide, enabling polymorphic behavior and promoting loose coupling between components.

Purpose and Usage

  • Contract definition - Define method signatures and contracts
  • Loose coupling - Promote loose coupling between components
  • Polymorphic behavior - Enable polymorphic programming
  • Testability - Enable easier testing with mock objects
  • Multiple inheritance - Achieve multiple inheritance-like behavior

Interface Contract Concept

Interface: [Method1 Signature] [Method2 Signature] [Method3 Signature]
Implementing Class: [Method1 Implementation] [Method2 Implementation] [Method3 Implementation]
Contract: Class must implement ALL interface methods
Interface defines the "what", class provides the "how"

Interfaces define contracts that implementing classes must fulfill.

Syntax

The INTERFACE-ID clause follows specific syntax patterns for defining interfaces in object-oriented COBOL.

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
40
41
42
43
44
45
46
47
48
49
50
* Basic INTERFACE-ID clause syntax INTERFACE-ID interface-name [INHERITS parent-interface-name] [FACTORY] [OBJECT] [ENVIRONMENT DIVISION] [DATA DIVISION] [PROCEDURE DIVISION] END INTERFACE interface-name. * Examples INTERFACE-ID IDATABASE-OPERATIONS FACTORY. INTERFACE-ID IPAYMENT-PROCESSOR INHERITS IBASE-PROCESSOR FACTORY. * Complete example INTERFACE-ID IDATABASE-INTERFACE FACTORY. DATA DIVISION. PROCEDURE DIVISION. METHOD-ID CONNECT. DATA DIVISION. LINKAGE SECTION. 01 CONNECTION-STRING PIC X(100). 01 RETURN-CODE PIC 9(4). PROCEDURE DIVISION USING CONNECTION-STRING RETURNING RETURN-CODE. END METHOD CONNECT. METHOD-ID DISCONNECT. DATA DIVISION. PROCEDURE DIVISION. END METHOD DISCONNECT. METHOD-ID EXECUTE-QUERY. DATA DIVISION. LINKAGE SECTION. 01 QUERY-STRING PIC X(500). 01 RESULT-SET PIC X(1000). PROCEDURE DIVISION USING QUERY-STRING RETURNING RESULT-SET. END METHOD EXECUTE-QUERY. END INTERFACE IDATABASE-INTERFACE.

INTERFACE-ID defines the interface name and structure.

Interface Components

ComponentPurposeExample
INTERFACE-IDDefine interface nameINTERFACE-ID IPAYMENT-INTERFACE
METHOD-IDDefine method signaturesMETHOD-ID PROCESS-PAYMENT
INHERITSInherit from parent interfaceINHERITS IBASE-INTERFACE
END INTERFACEEnd interface definitionEND INTERFACE IPAYMENT-INTERFACE

Interface Inheritance

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
* Interface inheritance example INTERFACE-ID IBASE-OPERATIONS FACTORY. PROCEDURE DIVISION. METHOD-ID INITIALIZE. DATA DIVISION. LINKAGE SECTION. 01 CONFIG-PARAMS PIC X(200). 01 RETURN-CODE PIC 9(4). PROCEDURE DIVISION USING CONFIG-PARAMS RETURNING RETURN-CODE. END METHOD INITIALIZE. METHOD-ID CLEANUP. DATA DIVISION. PROCEDURE DIVISION. END METHOD CLEANUP. END INTERFACE IBASE-OPERATIONS. INTERFACE-ID IDATABASE-OPERATIONS INHERITS IBASE-OPERATIONS FACTORY. PROCEDURE DIVISION. METHOD-ID CONNECT. DATA DIVISION. LINKAGE SECTION. 01 CONNECTION-STRING PIC X(100). 01 RETURN-CODE PIC 9(4). PROCEDURE DIVISION USING CONNECTION-STRING RETURNING RETURN-CODE. END METHOD CONNECT. METHOD-ID DISCONNECT. DATA DIVISION. PROCEDURE DIVISION. END METHOD DISCONNECT. METHOD-ID EXECUTE-QUERY. DATA DIVISION. LINKAGE SECTION. 01 QUERY-STRING PIC X(500). 01 RESULT-SET PIC X(1000). PROCEDURE DIVISION USING QUERY-STRING RETURNING RESULT-SET. END METHOD EXECUTE-QUERY. END INTERFACE IDATABASE-OPERATIONS.

Interfaces can inherit from other interfaces to create hierarchies.

Common Use Cases

INTERFACE-ID is commonly used in specific scenarios where interface-based programming and contract definition are needed.

Service Layer Contracts

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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
* Service layer interface definition INTERFACE-ID IDATABASE-SERVICE FACTORY. PROCEDURE DIVISION. METHOD-ID CONNECT. DATA DIVISION. LINKAGE SECTION. 01 CONNECTION-STRING PIC X(100). 01 RETURN-CODE PIC 9(4). PROCEDURE DIVISION USING CONNECTION-STRING RETURNING RETURN-CODE. END METHOD CONNECT. METHOD-ID DISCONNECT. DATA DIVISION. PROCEDURE DIVISION. END METHOD DISCONNECT. METHOD-ID EXECUTE-QUERY. DATA DIVISION. LINKAGE SECTION. 01 QUERY-STRING PIC X(500). 01 RESULT-SET PIC X(1000). PROCEDURE DIVISION USING QUERY-STRING RETURNING RESULT-SET. END METHOD EXECUTE-QUERY. METHOD-ID EXECUTE-UPDATE. DATA DIVISION. LINKAGE SECTION. 01 UPDATE-STRING PIC X(500). 01 ROWS-AFFECTED PIC 9(5). PROCEDURE DIVISION USING UPDATE-STRING RETURNING ROWS-AFFECTED. END METHOD EXECUTE-UPDATE. END INTERFACE IDATABASE-SERVICE. CLASS-ID ORACLE-DATABASE-SERVICE IMPLEMENTS IDATABASE-SERVICE FACTORY. DATA DIVISION. WORKING-STORAGE SECTION. 01 ORACLE-CONNECTION PIC X(100). 01 IS-CONNECTED PIC X VALUE 'N'. OBJECT SECTION. PROCEDURE DIVISION. METHOD-ID CONNECT. DATA DIVISION. LINKAGE SECTION. 01 CONNECTION-STRING PIC X(100). 01 RETURN-CODE PIC 9(4). PROCEDURE DIVISION USING CONNECTION-STRING RETURNING RETURN-CODE. MOVE CONNECTION-STRING TO ORACLE-CONNECTION PERFORM ORACLE-CONNECT IF CONNECTION-SUCCESSFUL MOVE 'Y' TO IS-CONNECTED MOVE 0 TO RETURN-CODE ELSE MOVE 1 TO RETURN-CODE END-IF EXIT METHOD. END METHOD CONNECT. METHOD-ID DISCONNECT. DATA DIVISION. PROCEDURE DIVISION. IF IS-CONNECTED = 'Y' PERFORM ORACLE-DISCONNECT MOVE 'N' TO IS-CONNECTED END-IF EXIT METHOD. END METHOD DISCONNECT. METHOD-ID EXECUTE-QUERY. DATA DIVISION. LINKAGE SECTION. 01 QUERY-STRING PIC X(500). 01 RESULT-SET PIC X(1000). PROCEDURE DIVISION USING QUERY-STRING RETURNING RESULT-SET. IF IS-CONNECTED = 'Y' PERFORM ORACLE-EXECUTE-QUERY ELSE MOVE 'NOT CONNECTED' TO RESULT-SET END-IF EXIT METHOD. END METHOD EXECUTE-QUERY. METHOD-ID EXECUTE-UPDATE. DATA DIVISION. LINKAGE SECTION. 01 UPDATE-STRING PIC X(500). 01 ROWS-AFFECTED PIC 9(5). PROCEDURE DIVISION USING UPDATE-STRING RETURNING ROWS-AFFECTED. IF IS-CONNECTED = 'Y' PERFORM ORACLE-EXECUTE-UPDATE ELSE MOVE 0 TO ROWS-AFFECTED END-IF EXIT METHOD. END METHOD EXECUTE-UPDATE. END CLASS ORACLE-DATABASE-SERVICE.

Service layer interfaces define contracts for different implementations.

Plugin Architecture

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
83
84
85
86
* Plugin architecture interface definition INTERFACE-ID IPLUGIN-INTERFACE FACTORY. PROCEDURE DIVISION. METHOD-ID INITIALIZE. DATA DIVISION. LINKAGE SECTION. 01 CONFIG-PARAMS PIC X(200). 01 RETURN-CODE PIC 9(4). PROCEDURE DIVISION USING CONFIG-PARAMS RETURNING RETURN-CODE. END METHOD INITIALIZE. METHOD-ID EXECUTE. DATA DIVISION. LINKAGE SECTION. 01 INPUT-DATA PIC X(500). 01 OUTPUT-DATA PIC X(500). PROCEDURE DIVISION USING INPUT-DATA RETURNING OUTPUT-DATA. END METHOD EXECUTE. METHOD-ID CLEANUP. DATA DIVISION. PROCEDURE DIVISION. END METHOD CLEANUP. END INTERFACE IPLUGIN-INTERFACE. CLASS-ID EMAIL-PLUGIN IMPLEMENTS IPLUGIN-INTERFACE FACTORY. DATA DIVISION. WORKING-STORAGE SECTION. 01 SMTP-SERVER PIC X(50). 01 SMTP-PORT PIC 9(4). 01 IS-INITIALIZED PIC X VALUE 'N'. OBJECT SECTION. PROCEDURE DIVISION. METHOD-ID INITIALIZE. DATA DIVISION. LINKAGE SECTION. 01 CONFIG-PARAMS PIC X(200). 01 RETURN-CODE PIC 9(4). PROCEDURE DIVISION USING CONFIG-PARAMS RETURNING RETURN-CODE. PERFORM PARSE-SMTP-CONFIG IF CONFIG-VALID MOVE 'Y' TO IS-INITIALIZED MOVE 0 TO RETURN-CODE ELSE MOVE 1 TO RETURN-CODE END-IF EXIT METHOD. END METHOD INITIALIZE. METHOD-ID EXECUTE. DATA DIVISION. LINKAGE SECTION. 01 INPUT-DATA PIC X(500). 01 OUTPUT-DATA PIC X(500). PROCEDURE DIVISION USING INPUT-DATA RETURNING OUTPUT-DATA. IF IS-INITIALIZED = 'Y' PERFORM SEND-EMAIL MOVE 'EMAIL SENT' TO OUTPUT-DATA ELSE MOVE 'PLUGIN NOT INITIALIZED' TO OUTPUT-DATA END-IF EXIT METHOD. END METHOD EXECUTE. METHOD-ID CLEANUP. DATA DIVISION. PROCEDURE DIVISION. MOVE 'N' TO IS-INITIALIZED EXIT METHOD. END METHOD CLEANUP. END CLASS EMAIL-PLUGIN.

Plugin architectures use interfaces for extensible functionality.

Payment Processing Interface

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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
* Payment processing interface hierarchy INTERFACE-ID IPAYMENT-INTERFACE FACTORY. PROCEDURE DIVISION. METHOD-ID PROCESS-PAYMENT. DATA DIVISION. LINKAGE SECTION. 01 AMOUNT PIC 9(8)V99. 01 RETURN-CODE PIC 9(4). PROCEDURE DIVISION USING AMOUNT RETURNING RETURN-CODE. END METHOD PROCESS-PAYMENT. METHOD-ID VALIDATE-PAYMENT. DATA DIVISION. LINKAGE SECTION. 01 PAYMENT-DATA PIC X(200). 01 IS-VALID PIC X. PROCEDURE DIVISION USING PAYMENT-DATA RETURNING IS-VALID. END METHOD VALIDATE-PAYMENT. END INTERFACE IPAYMENT-INTERFACE. INTERFACE-ID ICARD-PAYMENT-INTERFACE INHERITS IPAYMENT-INTERFACE FACTORY. PROCEDURE DIVISION. METHOD-ID AUTHORIZE-CARD. DATA DIVISION. LINKAGE SECTION. 01 CARD-NUMBER PIC X(16). 01 EXPIRY-DATE PIC X(5). 01 CVV PIC X(3). 01 AUTHORIZATION-CODE PIC X(10). PROCEDURE DIVISION USING CARD-NUMBER, EXPIRY-DATE, CVV RETURNING AUTHORIZATION-CODE. END METHOD AUTHORIZE-CARD. END INTERFACE ICARD-PAYMENT-INTERFACE. CLASS-ID CREDIT-CARD-PROCESSOR IMPLEMENTS ICARD-PAYMENT-INTERFACE FACTORY. DATA DIVISION. WORKING-STORAGE SECTION. 01 PROCESSOR-STATUS PIC X(10). OBJECT SECTION. PROCEDURE DIVISION. METHOD-ID PROCESS-PAYMENT. DATA DIVISION. LINKAGE SECTION. 01 AMOUNT PIC 9(8)V99. 01 RETURN-CODE PIC 9(4). PROCEDURE DIVISION USING AMOUNT RETURNING RETURN-CODE. PERFORM CREDIT-CARD-PROCESSING IF PROCESSING-SUCCESSFUL MOVE 0 TO RETURN-CODE ELSE MOVE 1 TO RETURN-CODE END-IF EXIT METHOD. END METHOD PROCESS-PAYMENT. METHOD-ID VALIDATE-PAYMENT. DATA DIVISION. LINKAGE SECTION. 01 PAYMENT-DATA PIC X(200). 01 IS-VALID PIC X. PROCEDURE DIVISION USING PAYMENT-DATA RETURNING IS-VALID. PERFORM VALIDATE-CREDIT-CARD EXIT METHOD. END METHOD VALIDATE-PAYMENT. METHOD-ID AUTHORIZE-CARD. DATA DIVISION. LINKAGE SECTION. 01 CARD-NUMBER PIC X(16). 01 EXPIRY-DATE PIC X(5). 01 CVV PIC X(3). 01 AUTHORIZATION-CODE PIC X(10). PROCEDURE DIVISION USING CARD-NUMBER, EXPIRY-DATE, CVV RETURNING AUTHORIZATION-CODE. PERFORM AUTHORIZE-CREDIT-CARD EXIT METHOD. END METHOD AUTHORIZE-CARD. END CLASS CREDIT-CARD-PROCESSOR.

Interface hierarchies enable specialized payment processing.

Best Practices and Tips

Following these best practices ensures effective use of the INTERFACE-ID clause for interface-based programming.

INTERFACE-ID Design Principles

  • Single responsibility - Keep interfaces focused on one purpose
  • Clear naming - Use descriptive interface names
  • Minimal methods - Define only essential methods
  • Consistent signatures - Use consistent parameter patterns
  • Documentation - Document interface contracts clearly
  • Interface segregation - Avoid large, monolithic interfaces

Common Pitfalls to Avoid

PitfallProblemSolution
Large interfacesDifficult to implementKeep interfaces small and focused
Vague contractsUnclear requirementsDefine clear method signatures
Interface bloatToo many methodsUse interface segregation
Poor namingConfusing interface namesUse descriptive names
No documentationUnclear contractsDocument all interfaces

Performance Considerations

  • Interface call overhead - Interface method calls may have slight overhead
  • Method resolution - Virtual method table lookups
  • Interface inheritance - Multiple inheritance can add complexity
  • Memory footprint - Consider interface implementation memory usage
  • Optimization opportunities - Some compilers optimize interface calls
  • Interface granularity - Balance flexibility with performance

When to Use INTERFACE-ID

Use CaseINTERFACE-ID SuitabilityReasoning
Service contractsExcellentPerfect for defining service APIs
Plugin architecturesExcellentIdeal for extensible systems
Polymorphic behaviorGoodEnables polymorphic programming
Simple inheritancePoorUse INHERITS instead
Performance-critical codePoorInterface overhead may be too high

INTERFACE-ID Clause Quick Reference

UsageSyntaxExample
Basic interfaceINTERFACE-ID interface-nameINTERFACE-ID IPAYMENT-INTERFACE
Interface inheritanceINTERFACE-ID interface-name INHERITS parentINTERFACE-ID ICHILD INHERITS IPARENT
Method definitionMETHOD-ID method-nameMETHOD-ID PROCESS-PAYMENT
Interface implementationIMPLEMENTS interface-nameIMPLEMENTS IPAYMENT-INTERFACE
End interfaceEND INTERFACE interface-nameEND INTERFACE IPAYMENT-INTERFACE

Test Your Knowledge

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

  • To define class inheritance
  • To define interfaces that specify contracts for classes
  • To create new objects
  • To define data structures

2. What is the relationship between interfaces and classes?

  • Interfaces inherit from classes
  • Classes implement interfaces
  • Interfaces and classes are the same thing
  • Interfaces cannot be used with classes

3. Can interfaces inherit from other interfaces?

  • No, interfaces cannot inherit
  • Yes, using the INHERITS clause
  • Only from classes
  • Only from abstract classes

4. Which of the following is a benefit of using interfaces?

  • Reduced memory usage
  • Loose coupling and polymorphic behavior
  • Faster execution speed
  • Simpler syntax

5. What happens if a class implements an interface but doesn't provide all required methods?

  • The program will run normally
  • A compilation error will occur
  • The missing methods will be automatically generated
  • The interface will be ignored

Frequently Asked Questions