*************************************************** * COBOL Stored Procedure SAMPLE.COBSAMP * @param Action * @param City * @param Country * @param Response *************************************************** IDENTIFICATION DIVISION. PROGRAM-ID. COBSAMP. ENVIRONMENT DIVISION. DATA DIVISION. WORKING-STORAGE SECTION. EXEC SQL INCLUDE SQLCA END-EXEC. 01 Sqlcode-Pic PIC +++999 USAGE DISPLAY. LINKAGE SECTION. 01 Action. 49 VAR-LEN PIC S9(4) USAGE BINARY. 49 VAR-TEXT PIC X9(8) USAGE DISPLAY. 01 City. 49 VAR-LEN PIC S9(4) USAGE BINARY. 49 VAR-TEXT PIC X9(32) USAGE DISPLAY. 01 Country. 49 VAR-LEN PIC S9(4) USAGE BINARY. 49 VAR-TEXT PIC X9(32) USAGE DISPLAY. 01 Response. 49 VAR-LEN PIC S9(4) USAGE BINARY. 49 VAR-TEXT PIC X9(80) USAGE DISPLAY. PROCEDURE DIVISION USING Action City Country Response. Move Function Upper-case(VAR-TEXT of Action) to VAR-TEXT of Action Evaluate VAR-TEXT of Action(1:VAR-LEN of Action) When 'S' When 'SELECT' Evaluate true also true When VAR-LEN of City = 0 also VAR-LEN of Country = 0 EXEC SQL DECLARE C1 CURSOR WITH RETURN WITH HOLD FOR SELECT * FROM SAMPLE.CITYTABLE END-EXEC EXEC SQL OPEN C1 END-EXEC When VAR-LEN of City = 0 also VAR-LEN of Country > 0 EXEC SQL DECLARE C2 CURSOR WITH RETURN WITH HOLD FOR SELECT * FROM SAMPLE.CITYTABLE WHERE COUNTRY=:COUNTRY END-EXEC EXEC SQL OPEN C2 END-EXEC When VAR-LEN of City > 0 also VAR-LEN of Country = 0 EXEC SQL DECLARE C3 CURSOR WITH RETURN WITH HOLD FOR SELECT * FROM SAMPLE.CITYTABLE WHERE CITY=:CITY END-EXEC EXEC SQL OPEN C3 END-EXEC When Other EXEC SQL DECLARE C4 CURSOR WITH RETURN WITH HOLD FOR SELECT * FROM SAMPLE.CITYTABLE WHERE CITY=:CITY AND COUNTRY=:COUNTRY END-EXEC EXEC SQL OPEN C4 END-EXEC End-Evaluate If Sqlcode = 0 then String 'Select successful' delimited by Size into VAR-TEXT of Response Else Move SQLCode to SQLCode-Pic String 'Select unsuccessful: Sqlcode ' Sqlcode-Pic delimited by Size into VAR-TEXT of Response End-If When 'I' When 'INSERT' Evaluate true also true When VAR-LEN of City = 0 also VAR-LEN of Country = 0 String 'Insert unsuccessful: ' 'City and Country not specified' delimited by Size into VAR-TEXT of Response When VAR-LEN of City = 0 also VAR-LEN of Country > 0 String 'Insert unsuccessful: City not specified' delimited by Size into VAR-TEXT of Response When VAR-LEN of City > 0 also VAR-LEN of Country = 0 String 'Insert unsuccessful: Country not specified' delimited by Size into VAR-TEXT of Response When Other EXEC SQL INSERT INTO SAMPLE.CITYTABLE (CITY, COUNTRY) VALUES (:CITY, :COUNTRY) END-EXEC If Sqlcode = 0 then String 'Insert successful' delimited by Size into VAR-TEXT of Response Else Move SQLCode to SQLCode-Pic String 'Insert unsuccessful: Sqlcode ' Sqlcode-Pic delimited by Size into VAR-TEXT of Response End-If End-Evaluate When 'D' When 'DELETE' Evaluate true also true When VAR-LEN of City = 0 also VAR-LEN of Country = 0 String 'Delete unsuccessful: ' 'City and Country not specified' delimited by Size into VAR-TEXT of Response When VAR-LEN of City = 0 also VAR-LEN of Country > 0 String 'Delete unsuccessful: City not specified' delimited by Size into VAR-TEXT of Response When VAR-LEN of City > 0 also VAR-LEN of Country = 0 String 'Delete unsuccessful: Country not specified' delimited by Size into VAR-TEXT of Response When Other EXEC SQL DELETE FROM SAMPLE.CITYTABLE WHERE CITY=:CITY AND COUNTRY=:COUNTRY END-EXEC If Sqlcode = 0 then String 'Delete successful' delimited by Size into VAR-TEXT of Response Else Move SQLCode to SQLCode-Pic String 'Delete unsuccessful: Sqlcode ' Sqlcode-Pic delimited by Size into VAR-TEXT of Response End-If End-Evaluate When Other String 'Action "' VAR-TEXT of Action(1:VAR-LEN of Action) '" not supported' delimited by Size into VAR-TEXT of Response End-Evaluate. Inspect VAR-TEXT of Response tallying VAR-LEN of Response for characters before initial x'00' GOBACK.
We use cookies to provide and improve our services. By using our site, you consent to our Cookies Policy. Accept Learn more