Skip to content

Commit 2e444d9

Browse files
authored
Handling SQL error codes
Signed-off-by: Janos Varga <113785741+vargajb@users.noreply.github.com>
1 parent 35eb1ff commit 2e444d9

File tree

1 file changed

+38
-0
lines changed
  • COBOL Programming Course #3 - Advanced Topics/Labs/cbl

1 file changed

+38
-0
lines changed

COBOL Programming Course #3 - Advanced Topics/Labs/cbl/CBLDB21.cbl

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,17 @@
3636
* SQL INCLUDE FOR SQLCA *
3737
*****************************************************
3838
EXEC SQL INCLUDE SQLCA END-EXEC.
39+
*****************************************************
40+
* DECLARATIONS FOR SQL ERROR HANDLING *
41+
*****************************************************
42+
01 ERROR-MESSAGE.
43+
02 ERROR-LEN PIC S9(4) COMP VALUE +1320.
44+
02 ERROR-TEXT PIC X(132) OCCURS 10 TIMES
45+
INDEXED BY ERROR-INDEX.
46+
77 ERROR-TEXT-LEN PIC S9(9) COMP VALUE +132.
47+
77 ERROR-TEXT-HBOUND PIC S9(9) COMP VALUE +10.
48+
* USER DEFINED ERROR MESSAGE
49+
01 UD-ERROR-MESSAGE PIC X(80) VALUE SPACES.
3950
*****************************************************
4051
* SQL DECLARATION FOR VIEW ACCOUNTS *
4152
*****************************************************
@@ -89,10 +100,23 @@
89100
*****************************************************
90101
LIST-ALL.
91102
EXEC SQL OPEN CUR1 END-EXEC.
103+
IF SQLCODE NOT = 0 THEN
104+
MOVE 'OPEN CUR1' TO UD-ERROR-MESSAGE
105+
PERFORM SQL-ERROR-HANDLING
106+
END-IF
92107
EXEC SQL FETCH CUR1 INTO :CUSTOMER-RECORD END-EXEC.
93108
PERFORM PRINT-AND-GET1
94109
UNTIL SQLCODE IS NOT EQUAL TO ZERO.
110+
IF SQLCODE NOT = 100 THEN
111+
MOVE 'FETCH CUR1' TO UD-ERROR-MESSAGE
112+
PERFORM SQL-ERROR-HANDLING
113+
END-IF
95114
EXEC SQL CLOSE CUR1 END-EXEC.
115+
IF SQLCODE NOT = 0 THEN
116+
MOVE 'CLOSE CUR1' TO UD-ERROR-MESSAGE
117+
PERFORM SQL-ERROR-HANDLING
118+
END-IF
119+
.
96120
PRINT-AND-GET1.
97121
PERFORM PRINT-A-LINE.
98122
EXEC SQL FETCH CUR1 INTO :CUSTOMER-RECORD END-EXEC.
@@ -104,3 +128,17 @@
104128
MOVE ACCT-FIRSTN TO ACCT-FIRSTN-O.
105129
MOVE ACCT-COMMENT TO ACCT-COMMENT-O.
106130
WRITE REPREC AFTER ADVANCING 2 LINES.
131+
132+
SQL-ERROR-HANDLING.
133+
DISPLAY 'ERROR AT ' FUNCTION TRIM(UD-ERROR-MESSAGE, TRAILING)
134+
CALL 'DSNTIAR' USING SQLCA ERROR-MESSAGE ERROR-TEXT-LEN.
135+
PERFORM VARYING ERROR-INDEX FROM 1 BY 1
136+
UNTIL ERROR-INDEX > ERROR-TEXT-HBOUND
137+
OR ERROR-TEXT(ERROR-INDEX) = SPACES
138+
DISPLAY FUNCTION TRIM(ERROR-TEXT(ERROR-INDEX), TRAILING)
139+
END-PERFORM
140+
IF SQLCODE NOT = 0 AND SQLCODE NOT = 100
141+
MOVE 1000 TO RETURN-CODE
142+
STOP RUN
143+
END-IF
144+
.

0 commit comments

Comments
 (0)