The END-CLASS clause is used to terminate a class definition in object-oriented COBOL. This clause marks the end of a class scope and completes the class structure, working in conjunction with the CLASS-ID clause to define complete class definitions.
END-CLASS provides proper class termination and scope management.
The END-CLASS clause follows specific syntax patterns and is used to terminate class definitions in object-oriented COBOL.
12345678910111213141516171819202122232425262728293031323334353637383940414243* Basic END-CLASS clause syntax CLASS-ID class-name. * Class content goes here * Methods, properties, etc. END-CLASS. * Examples CLASS-ID CustomerClass. * Customer class methods and properties END-CLASS. CLASS-ID BankAccount. * Bank account class methods and properties END-CLASS. * Complete example CLASS-ID EmployeeClass. ENVIRONMENT DIVISION. CONFIGURATION SECTION. DATA DIVISION. WORKING-STORAGE SECTION. 01 EMPLOYEE-NAME PIC X(50). 01 EMPLOYEE-ID PIC 9(5). METHOD-ID CONSTRUCTOR. DATA DIVISION. LINKAGE SECTION. 01 EMP-NAME PIC X(50). 01 EMP-ID PIC 9(5). PROCEDURE DIVISION USING EMP-NAME EMP-ID. MOVE EMP-NAME TO EMPLOYEE-NAME MOVE EMP-ID TO EMPLOYEE-ID END METHOD. METHOD-ID GET-NAME. DATA DIVISION. LINKAGE SECTION. 01 RETURN-NAME PIC X(50). PROCEDURE DIVISION RETURNING RETURN-NAME. MOVE EMPLOYEE-NAME TO RETURN-NAME END METHOD. END-CLASS.
END-CLASS terminates a class definition that was started with CLASS-ID.
Component | Required | Purpose |
---|---|---|
CLASS-ID | Yes | Start class definition |
Class content | Optional | Methods, properties, data |
END-CLASS | Yes | Terminate class definition |
Methods | Optional | Class behavior implementation |
123456789101112131415161718192021222324252627282930313233343536373839* Multiple classes in a single program CLASS-ID CustomerClass. DATA DIVISION. WORKING-STORAGE SECTION. 01 CUSTOMER-NAME PIC X(50). 01 CUSTOMER-ID PIC 9(5). METHOD-ID CONSTRUCTOR. DATA DIVISION. LINKAGE SECTION. 01 CUST-NAME PIC X(50). 01 CUST-ID PIC 9(5). PROCEDURE DIVISION USING CUST-NAME CUST-ID. MOVE CUST-NAME TO CUSTOMER-NAME MOVE CUST-ID TO CUSTOMER-ID END METHOD. END-CLASS. CLASS-ID OrderClass. DATA DIVISION. WORKING-STORAGE SECTION. 01 ORDER-NUMBER PIC 9(10). 01 ORDER-AMOUNT PIC 9(8)V99. METHOD-ID CREATE-ORDER. DATA DIVISION. LINKAGE SECTION. 01 ORD-NUM PIC 9(10). 01 ORD-AMT PIC 9(8)V99. PROCEDURE DIVISION USING ORD-NUM ORD-AMT. MOVE ORD-NUM TO ORDER-NUMBER MOVE ORD-AMT TO ORDER-AMOUNT END METHOD. END-CLASS. * Main program PROGRAM-ID MainProgram. * Main program logic here END PROGRAM.
Each class must be properly terminated with its own END-CLASS clause.
END-CLASS is commonly used in specific scenarios where object-oriented programming with classes is needed.
123456789101112131415161718192021222324252627282930313233* Business object class definition CLASS-ID CustomerClass. DATA DIVISION. WORKING-STORAGE SECTION. 01 CUSTOMER-NAME PIC X(50). 01 CUSTOMER-ID PIC 9(5). 01 CUSTOMER-ADDRESS PIC X(100). 01 CUSTOMER-PHONE PIC X(15). METHOD-ID CONSTRUCTOR. DATA DIVISION. LINKAGE SECTION. 01 CUST-NAME PIC X(50). 01 CUST-ID PIC 9(5). 01 CUST-ADDR PIC X(100). 01 CUST-PHONE PIC X(15). PROCEDURE DIVISION USING CUST-NAME CUST-ID CUST-ADDR CUST-PHONE. MOVE CUST-NAME TO CUSTOMER-NAME MOVE CUST-ID TO CUSTOMER-ID MOVE CUST-ADDR TO CUSTOMER-ADDRESS MOVE CUST-PHONE TO CUSTOMER-PHONE END METHOD. METHOD-ID GET-CUSTOMER-INFO. DATA DIVISION. LINKAGE SECTION. 01 RETURN-NAME PIC X(50). 01 RETURN-ID PIC 9(5). PROCEDURE DIVISION RETURNING RETURN-NAME RETURN-ID. MOVE CUSTOMER-NAME TO RETURN-NAME MOVE CUSTOMER-ID TO RETURN-ID END METHOD. END-CLASS.
Define business objects with proper class termination.
123456789101112131415161718192021222324252627282930313233343536* Utility class for common operations CLASS-ID StringUtilityClass. METHOD-ID CONCATENATE-STRINGS. DATA DIVISION. LINKAGE SECTION. 01 STRING1 PIC X(50). 01 STRING2 PIC X(50). 01 RESULT-STRING PIC X(100). PROCEDURE DIVISION USING STRING1 STRING2 RETURNING RESULT-STRING. STRING STRING1 DELIMITED BY SPACE STRING2 DELIMITED BY SPACE INTO RESULT-STRING END METHOD. METHOD-ID CONVERT-TO-UPPERCASE. DATA DIVISION. LINKAGE SECTION. 01 INPUT-STRING PIC X(50). 01 OUTPUT-STRING PIC X(50). PROCEDURE DIVISION USING INPUT-STRING RETURNING OUTPUT-STRING. MOVE FUNCTION UPPER-CASE(INPUT-STRING) TO OUTPUT-STRING END METHOD. METHOD-ID VALIDATE-EMAIL. DATA DIVISION. LINKAGE SECTION. 01 EMAIL-ADDRESS PIC X(100). 01 IS-VALID PIC X. PROCEDURE DIVISION USING EMAIL-ADDRESS RETURNING IS-VALID. IF EMAIL-ADDRESS CONTAINS "@" MOVE "Y" TO IS-VALID ELSE MOVE "N" TO IS-VALID END-IF END METHOD. END-CLASS.
Create utility classes with multiple methods.
12345678910111213141516171819202122232425262728293031323334* Data access class for database operations CLASS-ID DatabaseAccessClass. DATA DIVISION. WORKING-STORAGE SECTION. 01 CONNECTION-STRING PIC X(200). 01 SQL-STATEMENT PIC X(500). METHOD-ID CONNECT-DATABASE. DATA DIVISION. LINKAGE SECTION. 01 CONN-STRING PIC X(200). 01 SUCCESS-FLAG PIC X. PROCEDURE DIVISION USING CONN-STRING RETURNING SUCCESS-FLAG. MOVE CONN-STRING TO CONNECTION-STRING * Database connection logic here MOVE "Y" TO SUCCESS-FLAG END METHOD. 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. MOVE QUERY-STRING TO SQL-STATEMENT * Query execution logic here MOVE "Query results" TO RESULT-SET END METHOD. METHOD-ID CLOSE-CONNECTION. PROCEDURE DIVISION. * Close database connection logic here END METHOD. END-CLASS.
Define data access classes with database operations.
Following these best practices ensures effective use of the END-CLASS clause for proper class structure and termination.
Pitfall | Problem | Solution |
---|---|---|
Missing END-CLASS | Compilation errors, undefined class scope | Always include END-CLASS after class definition |
Mismatched CLASS-ID/END-CLASS | Class structure errors | Ensure each CLASS-ID has corresponding END-CLASS |
Poor class organization | Difficult to maintain and understand | Organize class content logically |
Unclear class names | Confusing code structure | Use descriptive and meaningful class names |
Not documenting classes | Difficult to understand class purpose | Document class purpose and functionality |
Use Case | END-CLASS Suitability | Reasoning |
---|---|---|
Object-oriented programming | Essential | Required for proper class structure |
Business object modeling | Excellent | Perfect for modeling business entities |
Code organization | Good | Helps organize code into logical units |
Traditional COBOL | Not applicable | Only for object-oriented COBOL |
Simple programs | Poor | Unnecessary complexity for simple logic |
Usage | Syntax | Example |
---|---|---|
Basic class termination | END-CLASS. | END-CLASS. |
Complete class structure | CLASS-ID name. ... END-CLASS. | CLASS-ID MyClass. ... END-CLASS. |
Multiple classes | Multiple CLASS-ID/END-CLASS pairs | CLASS-ID Class1. ... END-CLASS. CLASS-ID Class2. ... END-CLASS. |
Class with methods | CLASS-ID name. ... METHOD-ID. ... END METHOD. END-CLASS. | CLASS-ID MyClass. ... METHOD-ID MyMethod. ... END METHOD. END-CLASS. |
Class with data | CLASS-ID name. DATA DIVISION. ... END-CLASS. | CLASS-ID MyClass. DATA DIVISION. ... END-CLASS. |
1. What is the primary purpose of the END-CLASS clause in COBOL?
2. What must precede the END-CLASS clause?
3. What is the relationship between CLASS-ID and END-CLASS?
4. When is END-CLASS most useful?
5. How does END-CLASS relate to object-oriented programming?
Understanding the CLASS-ID clause for class definition.
Understanding the METHOD-ID clause for method definition.
Understanding the END-METHOD clause for method termination.
Complete guide to object-oriented COBOL programming.
Understanding COBOL program organization.