The GET clause is used in COBOL to retrieve data from various sources including files, databases, external systems, and other data repositories. It provides a standardized way to access and retrieve information in COBOL programs.
GET operations follow a consistent pattern regardless of data source.
The GET clause follows specific syntax patterns for different types of data retrieval.
12345678910111213141516171819202122232425262728293031323334* Basic GET clause syntax GET file-name [INVALID KEY imperative-statement] [NOT INVALID KEY imperative-statement] [END-GET] GET data-name FROM source [ON EXCEPTION imperative-statement] [NOT ON EXCEPTION imperative-statement] [END-GET] * Examples GET CUSTOMER-FILE INVALID KEY DISPLAY 'Error reading file' STOP RUN END-GET GET CUSTOMER-DATA FROM DATABASE-TABLE ON EXCEPTION DISPLAY 'Database error' PERFORM ERROR-HANDLING NOT ON EXCEPTION DISPLAY 'Data retrieved successfully' END-GET * Complete example GET API-RESPONSE FROM WEB-SERVICE ON EXCEPTION MOVE 'ERROR' TO STATUS-CODE PERFORM LOG-ERROR NOT ON EXCEPTION MOVE 'SUCCESS' TO STATUS-CODE PERFORM PROCESS-RESPONSE END-GET
GET can be used for file operations and external data retrieval.
Clause | Purpose | Use Case |
---|---|---|
INVALID KEY | Handle file access errors | File operations |
ON EXCEPTION | Handle general exceptions | External systems |
NOT INVALID KEY | Handle successful file operations | File operations |
NOT ON EXCEPTION | Handle successful external operations | External systems |
1234567891011121314151617181920212223* Different data source types for GET * File operations GET CUSTOMER-FILE INVALID KEY PERFORM ERROR-HANDLING END-GET * Database operations GET CUSTOMER-RECORD FROM CUSTOMER-TABLE WHERE CUSTOMER-ID = 'CUST001' ON EXCEPTION PERFORM DB-ERROR-HANDLING END-GET * API operations GET API-RESPONSE FROM REST-API USING 'https://api.example.com/data' ON EXCEPTION PERFORM API-ERROR-HANDLING END-GET * External system operations GET SYSTEM-DATA FROM LEGACY-SYSTEM USING CONNECTION-PARAMETERS ON EXCEPTION PERFORM SYSTEM-ERROR-HANDLING END-GET
GET supports various data source types with appropriate error handling.
GET is commonly used in specific scenarios where data retrieval from various sources is needed.
12345678910111213141516171819202122232425262728293031* Retrieve records from sequential, indexed, or relative files IDENTIFICATION DIVISION. PROGRAM-ID. FILE-READER. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT CUSTOMER-FILE ASSIGN TO 'CUSTOMER.DAT' ORGANIZATION IS SEQUENTIAL ACCESS MODE IS SEQUENTIAL. DATA DIVISION. FILE SECTION. FD CUSTOMER-FILE. 01 CUSTOMER-RECORD. 05 CUSTOMER-ID PIC X(10). 05 CUSTOMER-NAME PIC X(50). 05 CUSTOMER-ADDRESS PIC X(100). PROCEDURE DIVISION. OPEN INPUT CUSTOMER-FILE PERFORM UNTIL EOF GET CUSTOMER-FILE INVALID KEY DISPLAY 'Error reading file' STOP RUN END-GET DISPLAY 'Customer: ' CUSTOMER-NAME END-PERFORM CLOSE CUSTOMER-FILE STOP RUN.
GET is used to retrieve records from various file types.
1234567891011121314151617181920212223242526272829* Retrieve records from database tables IDENTIFICATION DIVISION. PROGRAM-ID. DB-READER. DATA DIVISION. WORKING-STORAGE SECTION. 01 DB-CONNECTION. 05 DB-NAME PIC X(20) VALUE 'CUSTOMERDB'. 05 DB-USER PIC X(20) VALUE 'ADMIN'. 05 DB-PASSWORD PIC X(20) VALUE 'SECRET'. 01 CUSTOMER-DATA. 05 CUST-ID PIC X(10). 05 CUST-NAME PIC X(50). 05 CUST-BALANCE PIC 9(8)V99. PROCEDURE DIVISION. CONNECT TO DATABASE DB-CONNECTION GET CUSTOMER-DATA FROM CUSTOMER-TABLE WHERE CUST-ID = 'CUST001' ON EXCEPTION DISPLAY 'Database error occurred' PERFORM ERROR-HANDLING NOT ON EXCEPTION DISPLAY 'Customer: ' CUST-NAME DISPLAY 'Balance: ' CUST-BALANCE END-GET DISCONNECT FROM DATABASE STOP RUN.
GET enables database record retrieval with error handling.
123456789101112131415161718192021222324252627282930* Retrieve data from external systems, APIs, or web services IDENTIFICATION DIVISION. PROGRAM-ID. API-READER. DATA DIVISION. WORKING-STORAGE SECTION. 01 API-ENDPOINT. 05 API-URL PIC X(100) VALUE 'https://api.example.com/data'. 05 API-METHOD PIC X(10) VALUE 'GET'. 05 API-HEADERS PIC X(200). 01 RESPONSE-DATA. 05 STATUS-CODE PIC 9(3). 05 RESPONSE-BODY PIC X(1000). PROCEDURE DIVISION. SET API-HEADERS TO 'Content-Type: application/json' GET RESPONSE-DATA FROM API-ENDPOINT ON EXCEPTION DISPLAY 'API call failed' PERFORM ERROR-HANDLING NOT ON EXCEPTION IF STATUS-CODE = 200 DISPLAY 'Data retrieved successfully' PERFORM PROCESS-RESPONSE ELSE DISPLAY 'API returned error: ' STATUS-CODE END-IF END-GET STOP RUN.
GET provides access to external systems and APIs.
Following these best practices ensures effective use of the GET clause for data retrieval operations.
Pitfall | Problem | Solution |
---|---|---|
No error handling | Program crashes on errors | Always use INVALID KEY or ON EXCEPTION |
Unclosed connections | Resource leaks and system issues | Properly close all connections |
No data validation | Incorrect data processing | Validate retrieved data |
Poor performance | Slow data retrieval | Optimize queries and use indexing |
No logging | Difficult debugging | Implement comprehensive logging |
Use Case | GET Suitability | Reasoning |
---|---|---|
File data retrieval | Excellent | Natural fit for file operations |
Database access | Excellent | Efficient for database operations |
External system access | Good | Provides standardized interface |
Simple data access | Good | Straightforward for basic operations |
Complex data processing | Poor | Use specialized processing tools |
Usage | Syntax | Example |
---|---|---|
File retrieval | GET file-name [INVALID KEY] | GET CUSTOMER-FILE INVALID KEY PERFORM ERROR |
Database retrieval | GET data-name FROM source | GET CUSTOMER-DATA FROM CUSTOMER-TABLE |
External system | GET data-name FROM source [ON EXCEPTION] | GET API-RESPONSE FROM WEB-SERVICE ON EXCEPTION |
Error handling | [INVALID KEY] or [ON EXCEPTION] | INVALID KEY PERFORM ERROR-HANDLING |
Success handling | [NOT INVALID KEY] or [NOT ON EXCEPTION] | NOT ON EXCEPTION PERFORM SUCCESS-HANDLING |
1. What is the primary purpose of the GET clause in COBOL?
2. Which clause is used to handle file access errors in GET operations?
3. What is the correct syntax for retrieving data from an external source?
4. Which clause handles exceptions when retrieving data from external sources?
5. What is the relationship between GET and READ in COBOL?