加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

COBOL access Oracle database sample

发布时间:2020-12-12 15:50:58 所属栏目:百科 来源:网络整理
导读:This is a sample program how COBOL access Oracle database. Table Definition SQL desc tab; Name Null? Type ----------------------------------------- -------- -------------------- A NOT NULL NUMBER(6) B CHAR(10) C NUMBER(6) COBOL Program Thi


This is a sample program how COBOL access Oracle database.


Table Definition

SQL> desc tab;
 Name                                      Null?    Type
 ----------------------------------------- -------- --------------------
 A                                         NOT NULL NUMBER(6)
 B                                                  CHAR(10)
 C                                                  NUMBER(6)


COBOL Program

This program demos the Oracle INSERT and SELECT statement.


$ cat ACCESSORA.pco
       IDENTIFICATION DIVISION.
       PROGRAM-ID. ACCESSORA.
       ENVIRONMENT DIVISION.
       CONFIGURATION SECTION.

       DATA DIVISION.
       WORKING-STORAGE SECTION.

           EXEC SQL BEGIN DECLARE SECTION END-EXEC.
       01 USERNAME PIC X(010).
       01 PASSWD PIC X(010).
       01 DBSTRING PIC X(020).

       01 SQL-DB-STATE PIC X(5).

       01 H-O-A       PIC S9(6) COMP-3.
       01 H-O-B       PIC X(10).
       01 H-O-C       PIC S9(6) COMP-3.

       01 H-I-A       PIC S9(6) COMP-3.
           EXEC SQL END DECLARE SECTION END-EXEC.

           EXEC SQL INCLUDE "SQLCA.cpy" END-EXEC.

       PROCEDURE DIVISION.

       BEGIN-PGM.
           EXEC SQL WHENEVER SQLERROR
            DO PERFORM SQL-ERROR
           END-EXEC.

           PERFORM LOGON.

           EXEC SQL WHENEVER NOT FOUND
            GOTO NO-CUST
           END-EXEC.

*     *INSERT A RECORD
           MOVE 2 TO H-O-A.
           MOVE "BBBBBBBBB" TO H-O-B.
           MOVE 222222 TO H-O-C.
           EXEC SQL
            INSERT INTO TAB(A,B,C)
            VALUES(2,:H-O-B,:H-O-C)
           END-EXEC.

*     *SELECT A RECORD
           MOVE 2 TO H-I-A.
           MOVE ZEROS TO H-O-A.
           MOVE ZEROS TO H-O-B.
           MOVE ZEROS TO H-O-C.
           MOVE SQLSTATE TO SQL-DB-STATE.

           EXEC SQL
            SELECT A,C
            INTO :H-O-A,:H-O-C
            FROM TAB 
            WHERE A = :H-I-A
           END-EXEC.

           PERFORM DISPLAY-INFO.
           PERFORM LOGOUT.

       NO-CUST.
           DISPLAY "NOT A VALID CUST CODE - TRY AGAIN".
           PERFORM LOGOUT.

       LOGON.
           MOVE "scott" TO USERNAME.
           MOVE "tiger" TO PASSWD.
           MOVE "orcl" TO DBSTRING.
           EXEC SQL
            CONNECT :USERNAME IDENTIFIED BY :PASSWD
            USING :DBSTRING
           END-EXEC.
           DISPLAY "SQLCODE: ",SQLCODE OF SQLCA.
           DISPLAY "CONNECTED TO DATABASE ",DBSTRING.

       DISPLAY-INFO.
           DISPLAY "SQLCODE: ",SQLCODE OF SQLCA.
           DISPLAY "RECORD:".
           DISPLAY "    A:"  H-O-A.
           DISPLAY "    B:"  H-O-B.   
           DISPLAY "    C:"  H-O-C.    

       LOGOUT.
           DISPLAY "HAVE A GOOD DAY.".
           EXEC SQL COMMIT WORK RELEASE END-EXEC.
           STOP RUN.

       SQL-ERROR.
           EXEC SQL WHENEVER SQLERROR CONTINUE END-EXEC.
           DISPLAY "ORACLE ERROR DETECTED:".
           DISPLAY SQLERRMC.
           EXEC SQL ROLLBACK WORK RELEASE END-EXEC.
           STOP RUN.


Compile


#Pre-processor
procob include=COPY iname=ACCESSORA.pco release_cursor=no hold_cursor=no 
       mode=oracle sqlcheck=syntax common_parser=yes lname=ACCESSORA.lis 
       oname=ACCESSORA.cbl declare_section=no varchar=yes format=variable 
       ireclen=300 db2_array=yes picx=char unsafe_null=yes dbms=v8 
       close_on_commit=no errors=yes end_of_fetch=100

#Compile
cob -ug ACCESSORA.cob -C "use(../common/opt.dir)" -C "list(ACCESSORA.lst)" 
    -C XREF -C SETTINGS


Run

$ rtsora ACCESSORA       
SQLCODE: +0000000000
CONNECTED TO DATABASE orcl                
SQLCODE: +0000000000
RECORD:
    A:+000002
    B:BBBBBBBBB 
    C:+222222
HAVE A GOOD DAY.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读