Tang Cheng | 03c0b0a | 2015-01-12 11:19:45 +0800 | [diff] [blame^] | 1 | ***************************************************************** |
| 2 | * procobdemo.pco - Pro*COBOL demo file for Instant Client. * |
| 3 | * * |
| 4 | * This program logs on to ORACLE, declares and opens a cursor, * |
| 5 | * fetches the names, salaries, and commissions of all * |
| 6 | * salespeople, displays the results, then closes the cursor. * |
| 7 | ***************************************************************** |
| 8 | |
| 9 | IDENTIFICATION DIVISION. |
| 10 | PROGRAM-ID. CURSOR-OPS. |
| 11 | ENVIRONMENT DIVISION. |
| 12 | DATA DIVISION. |
| 13 | WORKING-STORAGE SECTION. |
| 14 | |
| 15 | EXEC SQL BEGIN DECLARE SECTION END-EXEC. |
| 16 | 01 USERNAME PIC X(10) VARYING. |
| 17 | 01 PASSWD PIC X(10) VARYING. |
| 18 | 01 EMP-REC-VARS. |
| 19 | 05 EMP-NAME PIC X(10) VARYING. |
| 20 | 05 SALARY PIC S9(6)V99 |
| 21 | DISPLAY SIGN LEADING SEPARATE. |
| 22 | 05 COMMISSION PIC S9(6)V99 |
| 23 | DISPLAY SIGN LEADING SEPARATE. |
| 24 | EXEC SQL VAR SALARY IS DISPLAY(8,2) END-EXEC. |
| 25 | EXEC SQL VAR COMMISSION IS DISPLAY(8,2) END-EXEC. |
| 26 | EXEC SQL END DECLARE SECTION END-EXEC. |
| 27 | |
| 28 | EXEC SQL INCLUDE SQLCA END-EXEC. |
| 29 | |
| 30 | 01 DISPLAY-VARIABLES. |
| 31 | 05 D-EMP-NAME PIC X(10). |
| 32 | 05 D-SALARY PIC Z(4)9.99. |
| 33 | 05 D-COMMISSION PIC Z(4)9.99. |
| 34 | |
| 35 | PROCEDURE DIVISION. |
| 36 | |
| 37 | BEGIN-PGM. |
| 38 | EXEC SQL WHENEVER SQLERROR |
| 39 | DO PERFORM SQL-ERROR END-EXEC. |
| 40 | PERFORM LOGON. |
| 41 | EXEC SQL DECLARE SALESPEOPLE CURSOR FOR |
| 42 | SELECT ENAME, SAL, COMM |
| 43 | FROM EMP |
| 44 | WHERE JOB LIKE 'SALES%' |
| 45 | END-EXEC. |
| 46 | EXEC SQL OPEN SALESPEOPLE END-EXEC. |
| 47 | DISPLAY " ". |
| 48 | DISPLAY "SALESPERSON SALARY COMMISSION". |
| 49 | DISPLAY "----------- ---------- ----------". |
| 50 | |
| 51 | FETCH-LOOP. |
| 52 | EXEC SQL WHENEVER NOT FOUND |
| 53 | DO PERFORM SIGN-OFF END-EXEC. |
| 54 | EXEC SQL FETCH SALESPEOPLE |
| 55 | INTO :EMP-NAME, :SALARY, :COMMISSION |
| 56 | END-EXEC. |
| 57 | MOVE EMP-NAME-ARR TO D-EMP-NAME. |
| 58 | MOVE SALARY TO D-SALARY. |
| 59 | MOVE COMMISSION TO D-COMMISSION. |
| 60 | DISPLAY D-EMP-NAME, " ", D-SALARY, " ", D-COMMISSION. |
| 61 | MOVE SPACES TO EMP-NAME-ARR. |
| 62 | GO TO FETCH-LOOP. |
| 63 | |
| 64 | LOGON. |
| 65 | MOVE "scott" TO USERNAME-ARR. |
| 66 | MOVE 5 TO USERNAME-LEN. |
| 67 | MOVE "tiger" TO PASSWD-ARR. |
| 68 | MOVE 5 TO PASSWD-LEN. |
| 69 | EXEC SQL |
| 70 | CONNECT :USERNAME IDENTIFIED BY :PASSWD |
| 71 | END-EXEC. |
| 72 | DISPLAY " ". |
| 73 | DISPLAY "CONNECTED TO ORACLE AS USER: ", USERNAME-ARR. |
| 74 | |
| 75 | SIGN-OFF. |
| 76 | EXEC SQL CLOSE SALESPEOPLE END-EXEC. |
| 77 | DISPLAY " ". |
| 78 | DISPLAY "HAVE A GOOD DAY.". |
| 79 | DISPLAY " ". |
| 80 | EXEC SQL COMMIT WORK RELEASE END-EXEC. |
| 81 | STOP RUN. |
| 82 | |
| 83 | SQL-ERROR. |
| 84 | EXEC SQL WHENEVER SQLERROR CONTINUE END-EXEC. |
| 85 | DISPLAY " ". |
| 86 | DISPLAY "ORACLE ERROR DETECTED:". |
| 87 | DISPLAY " ". |
| 88 | DISPLAY SQLERRMC. |
| 89 | EXEC SQL ROLLBACK WORK RELEASE END-EXEC. |
| 90 | STOP RUN. |