-
Notifications
You must be signed in to change notification settings - Fork 869
Expand file tree
/
Copy pathprocobdemo.pco
More file actions
99 lines (89 loc) · 3.9 KB
/
Copy pathprocobdemo.pco
File metadata and controls
99 lines (89 loc) · 3.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
*****************************************************************
* Copyright (c) 2025, Oracle and/or its affiliates.. *
* All rights reserved. *
* *
* procobdemo.pco - Pro*COBOL demo file. *
* *
* DESCRIPTION: *
* This program logs on to ORACLE, declares and opens a cursor, *
* fetches the names, salaries, and commissions of all *
* salespeople, displays the results, then closes the cursor. *
*****************************************************************
IDENTIFICATION DIVISION.
PROGRAM-ID. CURSOR-OPS.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
EXEC SQL BEGIN DECLARE SECTION END-EXEC.
01 USERNAME PIC X(256) VARYING.
01 PASSWD PIC X(256) VARYING.
01 EMP-REC-VARS.
05 EMP-NAME PIC X(10) VARYING.
05 SALARY PIC S9(6)V99
DISPLAY SIGN LEADING SEPARATE.
05 COMMISSION PIC S9(6)V99
DISPLAY SIGN LEADING SEPARATE.
EXEC SQL VAR SALARY IS DISPLAY(8,2) END-EXEC.
EXEC SQL VAR COMMISSION IS DISPLAY(8,2) END-EXEC.
EXEC SQL END DECLARE SECTION END-EXEC.
EXEC SQL INCLUDE SQLCA END-EXEC.
01 DISPLAY-VARIABLES.
05 D-EMP-NAME PIC X(10).
05 D-SALARY PIC Z(4)9.99.
05 D-COMMISSION PIC Z(4)9.99.
PROCEDURE DIVISION.
BEGIN-PGM.
EXEC SQL WHENEVER SQLERROR
DO PERFORM SQL-ERROR END-EXEC.
PERFORM LOGON.
EXEC SQL DECLARE SALESPEOPLE CURSOR FOR
SELECT ENAME, SAL, COMM
FROM EMP
WHERE JOB LIKE 'SALES%'
END-EXEC.
EXEC SQL OPEN SALESPEOPLE END-EXEC.
DISPLAY " ".
DISPLAY "SALESPERSON SALARY COMMISSION".
DISPLAY "----------- ---------- ----------".
FETCH-LOOP.
EXEC SQL WHENEVER NOT FOUND
DO PERFORM SIGN-OFF END-EXEC.
EXEC SQL FETCH SALESPEOPLE
INTO :EMP-NAME, :SALARY, :COMMISSION
END-EXEC.
MOVE EMP-NAME-ARR TO D-EMP-NAME.
MOVE SALARY TO D-SALARY.
MOVE COMMISSION TO D-COMMISSION.
DISPLAY D-EMP-NAME, " ", D-SALARY, " ", D-COMMISSION.
MOVE SPACES TO EMP-NAME-ARR.
GO TO FETCH-LOOP.
LOGON.
*****************************************************************
* Application user: Set the database credentials here. *
* CAUTION: Username and password buffers are 256 bytes. *
* Do not paste credentials longer than 256 characters. *
*****************************************************************
MOVE "<username>" TO USERNAME-ARR.
MOVE LENGTH OF "<username>" TO USERNAME-LEN.
MOVE "<password>" TO PASSWD-ARR.
MOVE LENGTH OF "<password>" TO PASSWD-LEN.
EXEC SQL
CONNECT :USERNAME IDENTIFIED BY :PASSWD
END-EXEC.
DISPLAY " ".
DISPLAY "CONNECTED TO ORACLE AS USER: ", USERNAME-ARR.
SIGN-OFF.
EXEC SQL CLOSE SALESPEOPLE END-EXEC.
DISPLAY " ".
DISPLAY "HAVE A GOOD DAY.".
DISPLAY " ".
EXEC SQL COMMIT WORK RELEASE END-EXEC.
STOP RUN.
SQL-ERROR.
EXEC SQL WHENEVER SQLERROR CONTINUE END-EXEC.
DISPLAY " ".
DISPLAY "ORACLE ERROR DETECTED:".
DISPLAY " ".
DISPLAY SQLERRMC.
EXEC SQL ROLLBACK WORK RELEASE END-EXEC.
STOP RUN.