The SERVICE clause is used to call external services, web services, and APIs from COBOL programs. It enables integration with modern systems and provides a standardized way to invoke external services with proper parameter handling.
The SERVICE clause is used in the PROCEDURE DIVISION for external service calls.
123456789101112131415161718192021222324* Basic SERVICE syntax SERVICE service-name [USING parameter-1 parameter-2...] [RETURNING result-field]. * Complete example IDENTIFICATION DIVISION. PROGRAM-ID. SERVICE-EXAMPLE. DATA DIVISION. WORKING-STORAGE SECTION. 01 SERVICE-PARAMETERS. 05 INPUT-DATA PIC X(100). 05 OUTPUT-DATA PIC X(100). 01 SERVICE-RESULT PIC XX. PROCEDURE DIVISION. MAIN-LOGIC. MOVE "Request data" TO INPUT-DATA SERVICE "EXTERNAL-SERVICE" USING INPUT-DATA RETURNING SERVICE-RESULT DISPLAY "Service result: " SERVICE-RESULT STOP RUN.
SERVICE calls external services with parameters.
Examples of using the SERVICE clause in different scenarios.
12345678910111213141516* Call web service 01 WEB-SERVICE-PARAMS. 05 USER-ID PIC X(10). 05 REQUEST-TYPE PIC X(20). 05 RESPONSE-DATA PIC X(200). PROCEDURE DIVISION. CALL-WEB-SERVICE. MOVE "USER123" TO USER-ID MOVE "GET-PROFILE" TO REQUEST-TYPE SERVICE "USER-PROFILE-SERVICE" USING USER-ID REQUEST-TYPE RETURNING RESPONSE-DATA DISPLAY "Profile data: " RESPONSE-DATA.
SERVICE for web service calls.
1234567891011121314151617181920* Call database service 01 DB-SERVICE-PARAMS. 05 QUERY-TEXT PIC X(200). 05 RESULT-SET PIC X(500). 05 STATUS-CODE PIC XX. PROCEDURE DIVISION. CALL-DB-SERVICE. MOVE "SELECT * FROM CUSTOMERS" TO QUERY-TEXT SERVICE "DATABASE-SERVICE" USING QUERY-TEXT RETURNING RESULT-SET STATUS-CODE IF STATUS-CODE = "00" DISPLAY "Query successful" DISPLAY "Results: " RESULT-SET ELSE DISPLAY "Query failed with status: " STATUS-CODE END-IF.
SERVICE for database service calls.
123456789101112131415161718* Call external API 01 API-PARAMETERS. 05 API-ENDPOINT PIC X(100). 05 API-METHOD PIC X(10). 05 API-DATA PIC X(300). 05 API-RESPONSE PIC X(500). PROCEDURE DIVISION. CALL-EXTERNAL-API. MOVE "https://api.example.com/data" TO API-ENDPOINT MOVE "POST" TO API-METHOD MOVE "{"key":"value"}" TO API-DATA SERVICE "HTTP-API-SERVICE" USING API-ENDPOINT API-METHOD API-DATA RETURNING API-RESPONSE DISPLAY "API Response: " API-RESPONSE.
SERVICE for external API integration.
Understanding best practices ensures effective use of the SERVICE clause.
1. What is the primary purpose of the SERVICE clause in COBOL?
2. In which COBOL division is the SERVICE clause typically used?
3. What types of services can be called using the SERVICE clause?
4. Is the SERVICE clause commonly used in modern COBOL applications?
5. What is the relationship between SERVICE and CALL statements?