The INTERFACE statement in object-oriented COBOL defines a contract that specifies what methods a class must implement. It provides a way to define a common set of methods that different classes can implement, enabling polymorphism and loose coupling.
The INTERFACE statement defines method signatures and contracts:
12345678910111213INTERFACE-ID. interface-name. ENVIRONMENT DIVISION. CONFIGURATION SECTION. OBJECT-COMPUTER. DATA DIVISION. WORKING-STORAGE SECTION. PROCEDURE DIVISION. METHOD-ID. method-name. DATA DIVISION. LINKAGE SECTION. PROCEDURE DIVISION. END METHOD method-name. END INTERFACE interface-name.
Interfaces define method signatures without implementation.
12345678910111213141516INTERFACE-ID. ICalculator. ENVIRONMENT DIVISION. CONFIGURATION SECTION. OBJECT-COMPUTER. DATA DIVISION. WORKING-STORAGE SECTION. PROCEDURE DIVISION. METHOD-ID. Add. DATA DIVISION. LINKAGE SECTION. 01 a PIC 9(5). 01 b PIC 9(5). 01 result PIC 9(6). PROCEDURE DIVISION USING a, b RETURNING result. END METHOD Add. END INTERFACE ICalculator.
123456789101112131415161718CLASS-ID. Calculator IMPLEMENTS ICalculator. ENVIRONMENT DIVISION. CONFIGURATION SECTION. OBJECT-COMPUTER. DATA DIVISION. WORKING-STORAGE SECTION. PROCEDURE DIVISION. METHOD-ID. Add. DATA DIVISION. LINKAGE SECTION. 01 a PIC 9(5). 01 b PIC 9(5). 01 result PIC 9(6). PROCEDURE DIVISION USING a, b RETURNING result. COMPUTE result = a + b EXIT METHOD. END METHOD Add. END CLASS Calculator.
Here are some practical uses of INTERFACE in object-oriented COBOL:
12345678910111213141516171819202122INTERFACE-ID. IDatabase. ENVIRONMENT DIVISION. CONFIGURATION SECTION. OBJECT-COMPUTER. DATA DIVISION. WORKING-STORAGE SECTION. PROCEDURE DIVISION. METHOD-ID. Connect. DATA DIVISION. LINKAGE SECTION. 01 connection-string PIC X(100). 01 success PIC X. PROCEDURE DIVISION USING connection-string RETURNING success. END METHOD Connect. METHOD-ID. ExecuteQuery. DATA DIVISION. LINKAGE SECTION. 01 query PIC X(500). 01 result PIC X(1000). PROCEDURE DIVISION USING query RETURNING result. END METHOD ExecuteQuery. END INTERFACE IDatabase.
Defines a contract for database operations that different database classes can implement.
1234567891011121314151617181920INTERFACE-ID. ILogger. ENVIRONMENT DIVISION. CONFIGURATION SECTION. OBJECT-COMPUTER. DATA DIVISION. WORKING-STORAGE SECTION. PROCEDURE DIVISION. METHOD-ID. LogInfo. DATA DIVISION. LINKAGE SECTION. 01 message PIC X(200). PROCEDURE DIVISION USING message. END METHOD LogInfo. METHOD-ID. LogError. DATA DIVISION. LINKAGE SECTION. 01 message PIC X(200). PROCEDURE DIVISION USING message. END METHOD LogError. END INTERFACE ILogger.
Defines logging methods that different logger implementations can provide.
1. What is the primary purpose of the INTERFACE statement in COBOL?
2. In which type of COBOL is INTERFACE primarily used?
3. What does an INTERFACE define?
4. How do classes use INTERFACE?
5. Can an INTERFACE contain data fields?