blob: 245a69ef407cf6c0b8a587419f9c879b507564ce [file] [log] [blame]
Tang Cheng37650ea2014-10-20 16:14:41 +08001 *****************************************************************
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.