products/Sources/formale Sprachen/COBOL/Test-Suite/SQL P/dml1-99 image not shown  

Quellcode-Bibliothek

© Kompilation durch diese Firma

[Weder Korrektheit noch Funktionsfähigkeit der Software werden zugesichert.]

Datei:   Sprache: Cobol

       IDENTIFICATION DIVISION.
       PROGRAM-ID.  DML077.
       ENVIRONMENT DIVISION.
       CONFIGURATION SECTION.
       SOURCE-COMPUTER.  xyz.
       OBJECT-COMPUTER.  xyz.
       DATA DIVISION.
       WORKING-STORAGE SECTION.


      * Embedded SQL COBOL ("DML077.PCO") translated from
      * Embedded C on Fri Aug  9 08:24:50 1991.

      * EMBEDDED COBOL (file "DML077.PCO")  

      ****************************************************************
      *                                                              
      *                 COMMENT SECTION                              
      *                                                              
      * DATE 1991/07/30 EMBEDDED COBOL LANGUAGE                          
      * NIST SQL VALIDATION TEST SUITE V6.0                          
      *  DISCLAIMER:                                                  
      *  This program was written by employees of NIST to test SQL    
      *  implementations for conformance to the SQL standards.        
      *  NIST assumes no responsibility for any party's use of        
      *  this program.
      *                                                              
      * DML077.PCO                                                    
      * WRITTEN BY: YOLANDA HERD                                     
      *                                                              
      *                                                              
      * REFERENCES                                                   
      *       AMERICAN NATIONAL STANDARD database language           
      *       X3.135-1989                                            
      *                                                              
      *                                                              
      ****************************************************************



           EXEC SQL BEGIN DECLARE SECTION END-EXEC
       01  GRDE PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  count1 PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  count2 PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  count3 PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  HRS PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  NUM PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  INT1 PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  INT2 PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  indic1 PIC S9(4) DISPLAY SIGN LEADING SEPARATE.
       01  ENUM PIC  X(3).
       01  EMPNO1 PIC  X(3).
       01  PNO1 PIC  X(3).
       01  uid PIC X(18).
       01  uidx PIC X(18).
             EXEC SQL END DECLARE SECTION END-EXEC
       01  SQLCODE PIC S9(9) COMP.
       01  errcnt PIC S9(4) DISPLAY SIGN LEADING SEPARATE.

       01  i PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  flag1 PIC S9(9) DISPLAY SIGN LEADING SEPARATE.

       01  SQL-COD PIC S9(9) DISPLAY SIGN LEADING SEPARATE.

      * date_time declaration *
       01  TO-DAY PIC 9(6).
       01  THE-TIME PIC 9(8).
    
       PROCEDURE DIVISION.
       P0.


             MOVE "HU" TO uid
             CALL "AUTHID" USING uid
           MOVE "not logged in, not" TO uidx
           EXEC SQL SELECT 
                 USER INTO :uidx FROM HU.ECCO END-EXEC
           if (uid NOT = uidx) then
             DISPLAY "ERROR: User " uid " expected."
             DISPLAY "User " uidx " connected."
             DISPLAY " "
             STOP RUN
           END-IF

           MOVE 0 TO errcnt
           DISPLAY
           "SQL Test Suite, V6.0, Embedded COBOL, dml077.pco"
           DISPLAY " "
           DISPLAY
           "59-byte ID"
           DISPLAY "TEd Version #"
           DISPLAY " "
      * date_time print *
           ACCEPT TO-DAY FROM DATE
           ACCEPT THE-TIME FROM TIME
           DISPLAY "Date run YYMMDD: " TO-DAY " at hhmmssff: " THE-TIME

      ******************** BEGIN TEST0443 *******************
             DISPLAY " TEST0443 "
             DISPLAY " VIEW with check option rejects unknown (NULL)"
             DISPLAY " Reference 6.9 GR 3a, 4.5 para 6 "
             DISPLAY " - - - - - - - - - - - - - - - - - - - -"


             EXEC SQL INSERT INTO TEMP_SS VALUES('E7',NULL,'Frankfurt')
             END-EXEC
             MOVE SQLCODE TO SQL-COD
             DISPLAY "SQLCODE after NULL literal INSERT = ", SQL-COD

             MOVE 15 TO GRDE
             COMPUTE indic1 = -1

             EXEC SQL INSERT INTO TEMP_SS
             VALUES('E8',:GRDE:indic1,'Atlanta'END-EXEC
             MOVE SQLCODE TO SQL-COD
             DISPLAY "SQLCODE after NULL with indic INSERT = ", SQL-COD

             EXEC SQL INSERT INTO TEMP_SS(EMPNUM) VALUES('E9'END-EXEC
             MOVE SQLCODE TO SQL-COD
             DISPLAY "SQLCODE after NULL INSERT by excluding column = ",
             SQL-COD


             EXEC SQL UPDATE WORKS 
               SET HOURS = NULL 
               WHERE PNUM = 'P2' END-EXEC
             MOVE SQLCODE TO SQL-COD
             DISPLAY "SQLCODE after UPDATE WORKS 'P2' = ", SQL-COD

             EXEC SQL INSERT INTO TEMP_SS 
               SELECT PNUM,HOURS,'Nowhere'  
               FROM WORKS 
               WHERE EMPNUM = 'E1' END-EXEC
             MOVE SQLCODE TO SQL-COD
             DISPLAY "SQLCODE after INSERT SELECT 'E1' = ", SQL-COD

             EXEC SQL UPDATE TEMP_SS 
               SET GRADE = NULL 
               WHERE EMPNUM = 'E3' END-EXEC
             MOVE SQLCODE TO SQL-COD
             DISPLAY "SQLCODE after UPDATE TEMP_SS 'E3' = ", SQL-COD

             EXEC SQL UPDATE TEMP_SS 
               SET GRADE = :GRDE:indic1 
               WHERE EMPNUM = 'E5' END-EXEC
             MOVE SQLCODE TO SQL-COD
             DISPLAY "SQLCODE after UPDATE TEMP_SS with indic = ",
             SQL-COD

             COMPUTE count1 = -1
             COMPUTE count2 = -1
             COMPUTE count3 = -1

             EXEC SQL SELECT COUNT(*) INTO :count1 
               FROM STAFF 
               WHERE GRADE IS NULL END-EXEC
             MOVE SQLCODE TO SQL-COD

             EXEC SQL SELECT COUNT(*) INTO :count2 
               FROM TEMP_SS END-EXEC
             MOVE SQLCODE TO SQL-COD

             EXEC SQL SELECT COUNT(*) INTO :count3 
               FROM STAFF END-EXEC
             MOVE SQLCODE TO SQL-COD

             EXEC SQL ROLLBACK WORK END-EXEC
             MOVE SQLCODE TO SQL-COD

             DISPLAY  " "
             DISPLAY " The correct answers are:"
             DISPLAY " count1 = 0, count2 = 2 and count3 = 5"
             DISPLAY  " "
             DISPLAY " Your answers are:"
             DISPLAY " count1 = ", count1 ", count2 = ", count2 " and
      -    " count3 = ", count3


             if (count1  =  0  AND  count2  =  2  AND  count3  =  5) 
             then
               EXEC SQL INSERT INTO TESTREPORT 
                 VALUES('0443','pass','PCO'END-EXEC
               MOVE SQLCODE TO SQL-COD
               DISPLAY " *** pass *** "
             else
               EXEC SQL INSERT INTO TESTREPORT 
                 VALUES('0443','fail','PCO'END-EXEC
             ADD 1 TO errcnt
               MOVE SQLCODE TO SQL-COD
               DISPLAY " dml077.pco *** fail *** "
             END-IF
             DISPLAY "================================================"

             DISPLAY  " "
             EXEC SQL COMMIT WORK END-EXEC
             MOVE SQLCODE TO SQL-COD

      ******************** END TEST0443 *******************

      ******************** BEGIN TEST0444 *******************


             DISPLAY " TEST0444 "
             DISPLAY " Updatable cursor, modify value selected on"
             DISPLAY " reference X3.135-1989 "
             DISPLAY " ---------------------------------------------"


             MOVE "E1" TO ENUM
             MOVE "XX" TO EMPNO1

             EXEC SQL DECLARE Y CURSOR FOR 
               SELECT EMPNUM 
               FROM STAFF 
               WHERE EMPNUM > 'E1' END-EXEC

             EXEC SQL DECLARE X CURSOR FOR 
               SELECT EMPNUM 
               FROM WORKS 
               WHERE EMPNUM > :ENUM END-EXEC

             EXEC SQL OPEN X END-EXEC
             MOVE SQLCODE TO SQL-COD

             MOVE 1 TO i
             PERFORM P50 UNTIL i > 7

             EXEC SQL CLOSE X END-EXEC
             MOVE SQLCODE TO SQL-COD

             MOVE "XX" TO EMPNO1

             EXEC SQL OPEN Y END-EXEC
             MOVE SQLCODE TO SQL-COD

             MOVE 1 TO i
             PERFORM P49 UNTIL i > 5

             COMPUTE count1 = -1
             COMPUTE count2 = -1

             EXEC SQL SELECT COUNT(*) INTO :count1 
               FROM WORKS 
               WHERE EMPNUM > 'E5' END-EXEC
             MOVE SQLCODE TO SQL-COD

             EXEC SQL SELECT COUNT(*) INTO :count2 
               FROM STAFF 
               WHERE EMPNUM > 'E5' END-EXEC
             MOVE SQLCODE TO SQL-COD

             DISPLAY  " "
             DISPLAY " The correct answers are:"
             DISPLAY " count1 = 6 and count2 = 4"
             DISPLAY  " "
             DISPLAY " Your answers are:"
             DISPLAY " count1 = ", count1 " and count2 = ", count2

             EXEC SQL ROLLBACK WORK END-EXEC
             MOVE SQLCODE TO SQL-COD

             if (count1  =  6  AND  count2  =  4)  then
               EXEC SQL INSERT INTO TESTREPORT 
                 VALUES('0444','pass','PCO'END-EXEC
               MOVE SQLCODE TO SQL-COD
               DISPLAY " *** pass *** "
             else
               EXEC SQL INSERT INTO TESTREPORT 
                 VALUES('0444','fail','PCO'END-EXEC
             ADD 1 TO errcnt
               MOVE SQLCODE TO SQL-COD
               DISPLAY " dml077.pco *** fail *** "
             END-IF
             DISPLAY "================================================"

             DISPLAY  " "
             EXEC SQL COMMIT WORK END-EXEC
             MOVE SQLCODE TO SQL-COD

      ******************** END TEST0444 *******************



      ******************** BEGIN TEST0445 *******************
             DISPLAY " TEST0445 "
             DISPLAY " Values not assigned to targets for SQLCODE=100 "
             DISPLAY " reference X3.135-1989"
             DISPLAY "
      -    " ----------------------------------------------------"

             MOVE 0 TO flag1
             MOVE "ZZZ" TO PNO1

             EXEC SQL SELECT PNUM INTO :PNO1
               FROM WORKS
               WHERE HOURS = 13 END-EXEC
             MOVE SQLCODE TO SQL-COD
             DISPLAY "PNO1 = ", PNO1 ", SQLCODE after SELECT PNUM = ",
             SQL-COD
             DISPLAY  " "

             if (SQLCODE  NOT =  100  OR  PNO1  NOT =  "ZZZ"then
               MOVE 1 TO flag1
             END-IF

             MOVE 99 TO HRS

             EXEC SQL SELECT HOURS INTO :HRS
               FROM WORKS
               WHERE EMPNUM = 'E4' AND PNUM = 'P1' END-EXEC
             MOVE SQLCODE TO SQL-COD
             DISPLAY "HRS = ", HRS ", SQLCODE after SELECT HOURS = ",
             SQL-COD
             DISPLAY  " "

             if (SQLCODE  NOT =  100  OR  HRS  NOT =  99) then
               MOVE 1 TO flag1
             END-IF

             MOVE 999 TO NUM

             EXEC SQL SELECT COL1 INTO :NUM
               FROM VTABLE
               WHERE COL2 > 500 END-EXEC
             MOVE SQLCODE TO SQL-COD
             DISPLAY "NUM = ", NUM ", SQLCODE after SELECT COL1 = ",
             SQL-COD

             if (SQLCODE  NOT =  100  OR  NUM  NOT =  999) then
               MOVE 1 TO flag1
             END-IF

             EXEC SQL DECLARE XX CURSOR FOR
               SELECT PNUM,HOURS
               FROM WORKS
               WHERE EMPNUM > 'E1' END-EXEC

             EXEC SQL DECLARE YY CURSOR FOR
               SELECT COL2, COL3
               FROM VTABLE END-EXEC

             MOVE 0 TO count1
             MOVE 0 TO count2

             MOVE "YY" TO PNO1
             MOVE 99 TO HRS
             MOVE 99 TO INT1
             MOVE 99 TO INT2

             EXEC SQL OPEN XX END-EXEC
             MOVE SQLCODE TO SQL-COD

             MOVE 1 TO i
             PERFORM P48 UNTIL i > 14

             EXEC SQL CLOSE XX END-EXEC
             MOVE SQLCODE TO SQL-COD

             EXEC SQL OPEN YY END-EXEC
             MOVE SQLCODE TO SQL-COD

             MOVE 1 TO i
             PERFORM P47 UNTIL i > 9

             EXEC SQL CLOSE YY END-EXEC
             MOVE SQLCODE TO SQL-COD

             DISPLAY  " "
             DISPLAY "The correct answers are:"
             DISPLAY " count1 = 6, count2 = 4 and flag1 = 0"
             DISPLAY  " "
             DISPLAY "Your answers are:"
             DISPLAY " count1 = ", count1 ", count2 = ", count2 " and
      -    " flag1 = ", flag1

             EXEC SQL ROLLBACK WORK END-EXEC
             MOVE SQLCODE TO SQL-COD

             if (count1  =  6  AND  count2  =  4  AND  flag1  =  0) 
             then
               EXEC SQL INSERT INTO TESTREPORT 
                 VALUES('0445','pass','PCO'END-EXEC
               MOVE SQLCODE TO SQL-COD
               DISPLAY " *** pass *** "
             else
               EXEC SQL INSERT INTO TESTREPORT 
                 VALUES('0445','fail','PCO'END-EXEC
             ADD 1 TO errcnt
               MOVE SQLCODE TO SQL-COD
               DISPLAY " dml077.pco *** fail *** "
             END-IF
             DISPLAY "================================================"

             DISPLAY  " "
             EXEC SQL COMMIT WORK END-EXEC
             MOVE SQLCODE TO SQL-COD

      ******************** END TEST0445 *******************

      **** TESTER MAY CHOOSE TO INSERT CODE FOR errcnt > 0
           STOP RUN.

      *    ****  Procedures for PERFORM statements

        P50.
               EXEC SQL FETCH X INTO :EMPNO1 END-EXEC
               MOVE SQLCODE TO SQL-COD

               if (EMPNO1   =   "E2")  then
                 MOVE "E9" TO EMPNO1
               END-IF

               if (EMPNO1   =   "E3")  then
                 MOVE "E7" TO EMPNO1
               END-IF

               if (EMPNO1   =   "E4")  then
                 MOVE "E6" TO EMPNO1
               END-IF

               EXEC SQL UPDATE WORKS 
                 SET EMPNUM = :EMPNO1 
                 WHERE CURRENT OF X END-EXEC
               MOVE SQLCODE TO SQL-COD
             ADD 1 TO i
           .

        P49.
               EXEC SQL FETCH Y INTO :EMPNO1 END-EXEC
               MOVE SQLCODE TO SQL-COD

               if (EMPNO1   =   "E2")  then
                 MOVE "E9" TO EMPNO1
               END-IF

               if (EMPNO1   =   "E3")  then
                 MOVE "E7" TO EMPNO1
               END-IF

               if (EMPNO1   =   "E4")  then
                 MOVE "E6" TO EMPNO1
               END-IF

               if (EMPNO1   =   "E5")  then
                 MOVE "E8" TO EMPNO1
               END-IF

               EXEC SQL UPDATE STAFF 
                 SET EMPNUM = :EMPNO1 
                 WHERE CURRENT OF Y END-EXEC
               MOVE SQLCODE TO SQL-COD
             ADD 1 TO i
           .

        P48.
               EXEC SQL FETCH XX INTO :PNO1, :HRS END-EXEC
               MOVE SQLCODE TO SQL-COD

               if (SQLCODE  =  0) then
                 COMPUTE count1 = count1 + 1
               END-IF
             ADD 1 TO i
           .

        P47.
               EXEC SQL FETCH YY INTO :INT1, :INT2 END-EXEC
               MOVE SQLCODE TO SQL-COD

               if (SQLCODE  =  0) then
                 COMPUTE count2 = count2 + 1
               END-IF
             ADD 1 TO i
           .

¤ Dauer der Verarbeitung: 0.15 Sekunden  (vorverarbeitet)  ¤





Download des
Quellennavigators
Download des
sprechenden Kalenders

in der Quellcodebibliothek suchen




Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.


Bemerkung:

Die farbliche Syntaxdarstellung ist noch experimentell.


Bot Zugriff