Exemple de code source COBOL pour créer un exemple de procédure mémorisée.
Fonction
Vous pouvez appliquer ce code pour créer un exemple de procédure mémorisée avec le langage COBOL.
***************************************************
* procédure mémorisée COBOL 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.