| DB Access Class Library for COBOL V1.0 API Reference - Microsoft(R) Windows(R) - - Microsoft(R) Windows NT(R) - - Microsoft(R) Windows(R) 2000 - |
Contents
Index
![]()
|
Chapter 10 Sample Codings Using Methods Provided
Reference detailed information about errors as they occur. Describe which procedure will be followed when errors occur in the declarative part of the procedure division.
IDENTIFICATION DIVISION.
PROGRAM-ID. ERROR-APL.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
*Specify the class names that are used in the program.
REPOSITORY.
CLASS FJDB-SESSION
CLASS FJDB-DATABASE
CLASS FJDB-RECORDSET
CLASS FJDB-ERROR.
*Specify the symbolic constants library that is used in the program.
SPECIAL-NAMES.
SYMBOLIC CONSTANT
COPY FJDBOPT.
.
DATA DIVISION.
WORKING-STORAGE SECTION.
*Define object variables.
01 SESSION-A USAGE OBJECT REFERENCE FJDB-SESSION.
01 DATABASE-A USAGE OBJECT REFERENCE FJDB-DATABASE.
01 RECORDSET-A USAGE OBJECT REFERENCE FJDB-RECORDSET.
01 ERROR-A USAGE OBJECT REFERENCE FJDB-ERROR.
*Define data setup variables.
01 DSN PIC X(100).
01 UID PIC X(100).
01 PWD PIC X(100).
01 SCM PIC X(100).
01 OPT PIC S9(9) COMP-5.
01 RSOPT PIC S9(9) COMP-5.
01 SQL PIC X(100).
*Define error information return variables.
01 ERROR-COUNT PIC S9(9) COMP-5.
01 ERROR-MESSAGE PIC X(100).
01 ERROR-CODE PIC S9(9) COMP-5.
01 SQLSTATE PIC X(5).
01 SQLSTATE-SIZE PIC S9(9) COMP-5.
01 MESSAGE-SIZE PIC S9(9) COMP-5.
01 NATIVE-CODE PIC S9(9) COMP-5.
01 SEVERITY PIC S9(9) COMP-5.
01 CLASS-NAME PIC X(100).
01 METHOD-NAME PIC X(100).
01 CLASS-SIZE PIC S9(9) COMP-5.
01 METHOD-SIZE PIC S9(9) COMP-5.
01 IND PIC S9(9) COMP-5.
*Define a return value variable.
01 RET-CODE PIC S9(9) COMP-5.
PROCEDURE DIVISION.
*Describe error-handling procedures.
DECLARATIVES.
ERR SECTION.
USE AFTER EXCEPTION FJDB-ERROR.
INVOKE EXCEPTION-OBJECT "GET-COUNT" RETURNING ERROR-COUNT.
PERFORM ERROR-COUNT TIMES
INVOKE EXCEPTION-OBJECT "GET-SQLSTATE"
USING SQLSTATE SQLSTATE-SIZE
RETURNING RET-CODE
INVOKE EXCEPTION-OBJECT "GET-MESSAGE"
USING ERROR-MESSAGE MESSAGE-SIZE
RETURNING RET-CODE
INVOKE EXCEPTION-OBJECT "GET-CODE" RETURNING ERROR-CODE
INVOKE EXCEPTION-OBJECT "GET-NATIVE-ERROR-CODE"
RETURNING NATIVE-CODE
INVOKE EXCEPTION-OBJECT "GET-SEVERITY"
RETURNING SEVERITY
INVOKE EXCEPTION-OBJECT "GET-CLASS-NAME"
USING CLASS-NAME CLASS-SIZE
RETURNING RET-CODE
INVOKE EXCEPTION-OBJECT "GET-METHOD-NAME"
USING METHOD-NAME METHOD-SIZE
RETURNING RET-CODE
DISPLAY "SQL-STATE= " SQLSTATE
DISPLAY "MESSAGE=" ERROR-MESSAGE
DISPLAY "CODE= " ERROR-CODE
DISPLAY "NATIVE-ERROR-CODE=" NATIVE-CODE
DISPLAY "SEVERITY=" SEVERITY
DISPLAY "CLASS-NAME= " CLASS-NAME
DISPLAY "METHOD-NAME=" METHOD-NAME
INVOKE EXCEPTION-OBJECT "GET-NEXT" RETURNING RET-CODE
END-PERFORM.
MOVE 1 TO IND.
INVOKE EXCEPTION-OBJECT "GET-AT" USING IND RETURNING RET-CODE.
GO TO ERR-PROC.
END DECLARATIVES.
*Create an FJDB-SESSION class object.
INVOKE FJDB-SESSION "CREATE-OBJECT" USING ERROR-A
RETURNING SESSION-A.
*Set the values of arguments accompanying the OPEN-DATABASE method.
MOVE "DB01" TO DSN.
MOVE "YODA" TO UID.
MOVE "YODA" TO PWD.
MOVE "GENERAL" TO SCM.
MOVE FJDB-SCDBOPT-DEFAULT TO OPT.
*Connect to the database.
INVOKE SESSION-A "OPEN-DATABASE"
USING DSN UID PWD SCM OPT DATABASE-A
RETURNING RET-CODE.
*Set the values of arguments accompanying the OPEN-RECORDSET method.
MOVE "SELECT NO,NAME,ADDRESS FROM EMPLOYEE" TO SQL.
MOVE FJDB-SCRSOPT-DEFAULT TO RSOPT.
*Create a recordset.
INVOKE DATABASE-A "OPEN-RECORDSET" USING SQL RSOPT RECORDSET-A
RETURNING RET-CODE.
:
:
ERR-PROC.
*Collect the objects.
SET ERROR-A TO NULL.
SET RECORDSET-A TO NULL.
SET DATABASE-A TO NULL.
SET SESSION-A TO NULL.
STOP RUN.
END PROGRAM ERROR-APL.
Contents
Index
![]()
|