home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / viscobv6.zip / vac22os2 / ibmcobol / samples / odbc / odbc2p.cpy < prev    next >
Text File  |  1996-09-04  |  5KB  |  126 lines

  1.       ******************************************************************
  2.       * ODBCPROC.CPY                                                   *
  3.       *----------------------------------------------------------------*
  4.       *  Sample ODBC initialization, clean-up and error handling       *
  5.       *    procedures                                                  *
  6.       ******************************************************************
  7.       *** Initialization functions SECTION *****************************
  8.        ODBC-Initialization SECTION.
  9.       *
  10.         SQLAllocEnv-Function.
  11.            CALL "SQLAllocEnv" USING BY REFERENCE Henv
  12.                               RETURNING SQL-RC
  13.            IF SQL-RC NOT = SQL-SUCCESS
  14.              MOVE "SQLAllocEnv" TO SQL-stmt
  15.              PERFORM SQLError-Function
  16.            END-IF.
  17.       *
  18.         SQLAllocConnect-Function.
  19.            CALL "SQLAllocConnect" USING BY VALUE     Henv
  20.                                         BY REFERENCE Hdbc
  21.                                   RETURNING SQL-RC
  22.            IF SQL-RC NOT = SQL-SUCCESS
  23.                MOVE "SQLAllocConnect" to SQL-stmt
  24.                PERFORM SQLError-Function
  25.            END-IF.
  26.  
  27.       *** SQL-SetLicInfo SECTION **************************************
  28.        SQL-SetLicInfo-Function SECTION.
  29.         SQL-SetLicInfo.
  30.            CALL "iwzODBCLicInfo" USING BY VALUE Hdbc.
  31.  
  32.       *** SQLAllocStmt function SECTION *******************************
  33.        SQLAllocStmt-Function SECTION.
  34.         SQLAllocStmt.
  35.            CALL "SQLAllocStmt" USING BY VALUE     Hdbc
  36.                                      BY REFERENCE Hstmt
  37.                                RETURNING SQL-RC
  38.            IF SQL-RC NOT = SQL-SUCCESS
  39.                MOVE "SQLAllocStmt" TO SQL-stmt
  40.                PERFORM SQLError-Function
  41.            END-IF.
  42.  
  43.       *** Cleanup Functions SECTION ***********************************
  44.        ODBC-Clean-Up SECTION.
  45.       *
  46.         SQLFreeStmt-Function.
  47.            CALL "SQLFreeStmt" USING BY VALUE Hstmt
  48.                                              SQL-DROP
  49.                               RETURNING SQL-RC
  50.            IF SQL-RC NOT = SQL-SUCCESS
  51.                MOVE "SQLFreeStmt" TO SQL-stmt
  52.                PERFORM SQLError-Function
  53.            END-IF.
  54.       *
  55.         SQLDisconnect-Function.
  56.            CALL "SQLDisconnect" USING BY VALUE Hdbc
  57.                                 RETURNING SQL-RC
  58.            IF SQL-RC NOT = SQL-SUCCESS
  59.                MOVE "SQLDisconnect" TO SQL-stmt
  60.                PERFORM SQLError-Function
  61.            END-IF.
  62.       *
  63.         SQLFreeConnect-Function.
  64.            CALL "SQLFreeConnect" USING BY VALUE Hdbc
  65.                                  RETURNING SQL-RC
  66.            IF SQL-RC NOT = SQL-SUCCESS
  67.                MOVE "SQLFreeConnect" TO SQL-stmt
  68.                PERFORM SQLError-Function
  69.            END-IF.
  70.       *
  71.         SQLFreeEnv-Function.
  72.            CALL "SQLFreeEnv" USING BY VALUE Henv
  73.                              RETURNING SQL-RC
  74.            IF SQL-RC NOT = SQL-SUCCESS
  75.                MOVE "SQLFreeEnv" TO SQL-stmt
  76.                PERFORM SQLError-Function
  77.            END-IF.
  78.  
  79.       *** SQLError function SECTION ************************************
  80.        SQLError-Function SECTION.
  81.         SQLError.
  82.            MOVE SQL-RC TO SAVED-SQL-RC
  83.            DISPLAY "Return Value = " SQL-RC
  84.            PERFORM WITH TEST AFTER UNTIL SQL-RC =  SQL-SUCCESS
  85.                                                 OR SQL-NO-DATA-FOUND
  86.                                                 OR SQL-INVALID-HANDLE
  87.  
  88.              IF SQL-RC = SQL-SUCCESS-WITH-INFO
  89.                THEN
  90.                   DISPLAY SQL-stmt " successful with information"
  91.                ELSE
  92.                   DISPLAY SQL-stmt " failed"
  93.              END-IF
  94.  
  95.              CALL "SQLError" USING BY VALUE     Henv
  96.                                                 Hdbc
  97.                                                 Hstmt
  98.                                    BY REFERENCE szSqlState
  99.                                                 fNativeError
  100.                                                 szErrorMsg
  101.                                    BY VALUE     cbErrorMsgMax
  102.                                    BY REFERENCE cbErrorMsg
  103.                              RETURNING SQL-RC
  104.              IF SQL-RC = SQL-SUCCESS OR SQL-SUCCESS-WITH-INFO
  105.                THEN
  106.                  DISPLAY "SQL-State = " szSQLState-Chars
  107.                  INSPECT szErrorMsg TALLYING char-count
  108.                                     FOR CHARACTERS BEFORE X"00"
  109.                  DISPLAY "Message = " szErrorMsg (1:char-count)
  110.                  MOVE 0 TO char-count
  111.                ELSE
  112.                  DISPLAY "Return value = " SQL-RC
  113.              END-IF
  114.                  MOVE "SQLError" TO SQL-stmt
  115.            END-PERFORM
  116.  
  117.            IF Saved-SQL-RC NOT = SQL-SUCCESS-WITH-INFO
  118.              DISPLAY "Application being terminated"
  119.       *       you might do <CALL "SQLTransact" USING BY VALUE ...
  120.       *       SQL-Rollback> or some other processing here.
  121.              STOP RUN
  122.            END-IF.
  123.       ***********************
  124.       * End of ODBCPROC.CPY *
  125.       ***********************
  126.