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 DefinitionSQL> desc tab; Name Null? Type ----------------------------------------- -------- -------------------- A NOT NULL NUMBER(6) B CHAR(10) C NUMBER(6)
COBOL ProgramThis 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. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |