MINI MINI MANI MO

Path : /opt/oracle/product/18c/dbhomeXE/sdk/demo/
File Upload :
Current File : //opt/oracle/product/18c/dbhomeXE/sdk/demo/procobdemo.pco

      *****************************************************************
      * procobdemo.pco - Pro*COBOL demo file for Instant Client.      *
      *                                                               *
      * 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(10) VARYING.
       01  PASSWD            PIC X(10) 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.
           MOVE "scott" TO USERNAME-ARR.
           MOVE 5 TO USERNAME-LEN.
           MOVE "tiger" TO PASSWD-ARR.
           MOVE 5 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.

OHA YOOOO