The END-METHOD clause is used to terminate a method definition in object-oriented COBOL. This clause marks the end of a method scope and completes the method structure, working in conjunction with the METHOD-ID clause to define complete method definitions within classes.
END-METHOD provides proper method termination and scope management.
The END-METHOD clause follows specific syntax patterns and is used to terminate method definitions in object-oriented COBOL.
123456789101112131415161718192021222324252627282930313233* Basic END-METHOD clause syntax METHOD-ID method-name. * Method content goes here * Logic, operations, etc. END METHOD. * Examples METHOD-ID CalculateTotal. * Calculation logic here END METHOD. METHOD-ID ValidateData. * Validation logic here END METHOD. * Complete example METHOD-ID CONSTRUCTOR. DATA DIVISION. LINKAGE SECTION. 01 PARAM1 PIC X(50). 01 PARAM2 PIC 9(5). PROCEDURE DIVISION USING PARAM1 PARAM2. MOVE PARAM1 TO INSTANCE-VAR1 MOVE PARAM2 TO INSTANCE-VAR2 END METHOD. METHOD-ID GET-VALUE. DATA DIVISION. LINKAGE SECTION. 01 RETURN-VALUE PIC X(50). PROCEDURE DIVISION RETURNING RETURN-VALUE. MOVE INSTANCE-VAR1 TO RETURN-VALUE END METHOD.
END-METHOD terminates a method definition that was started with METHOD-ID.
Component | Required | Purpose |
---|---|---|
METHOD-ID | Yes | Start method definition |
Method content | Optional | Logic, operations, data |
END-METHOD | Yes | Terminate method definition |
PROCEDURE DIVISION | Optional | Method logic implementation |
1234567891011121314151617181920212223242526272829303132333435363738394041* Multiple methods in a single class 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. METHOD-ID GET-NAME. DATA DIVISION. LINKAGE SECTION. 01 RETURN-NAME PIC X(50). PROCEDURE DIVISION RETURNING RETURN-NAME. MOVE CUSTOMER-NAME TO RETURN-NAME END METHOD. METHOD-ID GET-ID. DATA DIVISION. LINKAGE SECTION. 01 RETURN-ID PIC 9(5). PROCEDURE DIVISION RETURNING RETURN-ID. MOVE CUSTOMER-ID TO RETURN-ID END METHOD. METHOD-ID UPDATE-NAME. DATA DIVISION. LINKAGE SECTION. 01 NEW-NAME PIC X(50). PROCEDURE DIVISION USING NEW-NAME. MOVE NEW-NAME TO CUSTOMER-NAME END METHOD. END-CLASS.
Each method must be properly terminated with its own END-METHOD clause.
END-METHOD is commonly used in specific scenarios where object-oriented programming with methods is needed.
1234567891011121314* Constructor method for object initialization METHOD-ID CONSTRUCTOR. DATA DIVISION. LINKAGE SECTION. 01 INIT-NAME PIC X(50). 01 INIT-ID PIC 9(5). 01 INIT-ADDRESS PIC X(100). PROCEDURE DIVISION USING INIT-NAME INIT-ID INIT-ADDRESS. MOVE INIT-NAME TO CUSTOMER-NAME MOVE INIT-ID TO CUSTOMER-ID MOVE INIT-ADDRESS TO CUSTOMER-ADDRESS MOVE "ACTIVE" TO CUSTOMER-STATUS MOVE FUNCTION CURRENT-DATE TO CREATION-DATE END METHOD.
Define constructor methods for object initialization.
123456789101112131415161718192021222324252627* Getter and setter methods for data access METHOD-ID GET-CUSTOMER-NAME. DATA DIVISION. LINKAGE SECTION. 01 RETURN-NAME PIC X(50). PROCEDURE DIVISION RETURNING RETURN-NAME. MOVE CUSTOMER-NAME TO RETURN-NAME END METHOD. METHOD-ID SET-CUSTOMER-NAME. DATA DIVISION. LINKAGE SECTION. 01 NEW-NAME PIC X(50). PROCEDURE DIVISION USING NEW-NAME. IF NEW-NAME NOT = SPACES MOVE NEW-NAME TO CUSTOMER-NAME MOVE FUNCTION CURRENT-DATE TO LAST-UPDATE-DATE END-IF END METHOD. METHOD-ID GET-CUSTOMER-ID. DATA DIVISION. LINKAGE SECTION. 01 RETURN-ID PIC 9(5). PROCEDURE DIVISION RETURNING RETURN-ID. MOVE CUSTOMER-ID TO RETURN-ID END METHOD.
Create getter and setter methods for controlled data access.
12345678910111213141516171819202122232425262728293031323334353637383940414243* Business logic methods for complex operations METHOD-ID CALCULATE-TOTAL-BALANCE. DATA DIVISION. LINKAGE SECTION. 01 RETURN-BALANCE PIC 9(10)V99. PROCEDURE DIVISION RETURNING RETURN-BALANCE. COMPUTE TOTAL-BALANCE = CHECKING-BALANCE + SAVINGS-BALANCE MOVE TOTAL-BALANCE TO RETURN-BALANCE END METHOD. METHOD-ID VALIDATE-CUSTOMER-DATA. DATA DIVISION. LINKAGE SECTION. 01 IS-VALID PIC X. PROCEDURE DIVISION RETURNING IS-VALID. IF CUSTOMER-NAME NOT = SPACES AND CUSTOMER-ID > 0 AND CUSTOMER-ADDRESS NOT = SPACES MOVE "Y" TO IS-VALID ELSE MOVE "N" TO IS-VALID END-IF END METHOD. METHOD-ID PROCESS-TRANSACTION. DATA DIVISION. LINKAGE SECTION. 01 TRANSACTION-AMOUNT PIC 9(8)V99. 01 TRANSACTION-TYPE PIC X. 01 SUCCESS-FLAG PIC X. PROCEDURE DIVISION USING TRANSACTION-AMOUNT TRANSACTION-TYPE RETURNING SUCCESS-FLAG. IF TRANSACTION-TYPE = "D" ADD TRANSACTION-AMOUNT TO ACCOUNT-BALANCE MOVE "Y" TO SUCCESS-FLAG ELSE IF TRANSACTION-TYPE = "W" IF ACCOUNT-BALANCE >= TRANSACTION-AMOUNT SUBTRACT TRANSACTION-AMOUNT FROM ACCOUNT-BALANCE MOVE "Y" TO SUCCESS-FLAG ELSE MOVE "N" TO SUCCESS-FLAG END-IF END-IF END METHOD.
Define business logic methods for complex operations.
Following these best practices ensures effective use of the END-METHOD clause for proper method structure and termination.
Pitfall | Problem | Solution |
---|---|---|
Missing END-METHOD | Compilation errors, undefined method scope | Always include END-METHOD after method definition |
Mismatched METHOD-ID/END-METHOD | Method structure errors | Ensure each METHOD-ID has corresponding END-METHOD |
Poor method organization | Difficult to maintain and understand | Organize method logic logically |
Unclear method names | Confusing code structure | Use descriptive and meaningful method names |
Not documenting methods | Difficult to understand method purpose | Document method purpose and functionality |
Use Case | END-METHOD Suitability | Reasoning |
---|---|---|
Object-oriented programming | Essential | Required for proper method structure |
Class method definition | Excellent | Perfect for defining class behaviors |
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 method termination | END METHOD. | END METHOD. |
Complete method structure | METHOD-ID name. ... END METHOD. | METHOD-ID MyMethod. ... END METHOD. |
Multiple methods | Multiple METHOD-ID/END METHOD pairs | METHOD-ID Method1. ... END METHOD. METHOD-ID Method2. ... END METHOD. |
Method with parameters | METHOD-ID name. ... PROCEDURE DIVISION USING params. ... END METHOD. | METHOD-ID MyMethod. ... PROCEDURE DIVISION USING PARAM1. ... END METHOD. |
Method with return value | METHOD-ID name. ... PROCEDURE DIVISION RETURNING value. ... END METHOD. | METHOD-ID MyMethod. ... PROCEDURE DIVISION RETURNING RESULT. ... END METHOD. |
1. What is the primary purpose of the END-METHOD clause in COBOL?
2. What must precede the END-METHOD clause?
3. What is the relationship between METHOD-ID and END-METHOD?
4. When is END-METHOD most useful?
5. How does END-METHOD relate to object-oriented programming?
Understanding the METHOD-ID clause for method definition.
Understanding the CLASS-ID clause for class definition.
Understanding the END-CLASS clause for class termination.
Complete guide to object-oriented COBOL programming.
Understanding COBOL program organization.