products/Sources/formale Sprachen/Cobol/Test-Suite/SQL M image not shown  

Quellcode-Bibliothek

© Kompilation durch diese Firma

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

Datei: dml061.cob   Sprache: Cobol

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


      * Standard COBOL (file "DML061.SCO") calling SQL
      * procedures in file "DML061.MCO"  

      ****************************************************************
      *                                                              
      *                 COMMENT SECTION                              
      *                                                              
      * DATE 1989/07/21 STANDARD 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.
      *                                                              
      * DML061.SCO                                                    
      * WRITTEN BY: SUN DAJUN                                        
      * TRANSLATED AUTOMATICALLY FROM EMBEDDED COBOL BY CHRIS SCHANZLE
      *                                                              
      *   THIS ROUTINE TESTS BETWEEN, SET FUNCTIONS, AND INTEGRITY.  
      *                                                              
      * REFERENCES                                                   
      *       AMERICAN NATIONAL STANDARD database language - SQL     
      *                         X3.135-1989                          
      *                                                              
      *                SECTION 5.12 <between predicate>              
      *                SECTION 5.8  <set specification>              
      *                SECTION 7.3  <procedure> GR 3b                
      *                                                              
      ****************************************************************



      * EXEC SQL BEGIN DECLARE SECTION END-EXEC
       01  EMPNO1 PIC  X(3).
       01  HOURS1 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  count4 PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  max1 PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  min1 PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  sum1 PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  ff1 PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  indic1 PIC S9(4) DISPLAY SIGN LEADING SEPARATE.
       01  indic2 PIC S9(4) DISPLAY SIGN LEADING SEPARATE.
       01  indic3 PIC S9(4) DISPLAY SIGN LEADING SEPARATE.
       01  EMPNA1 PIC  X(20).
       01  EMPNA2 PIC  X(20).
       01  EMPNA3 PIC  X(20).
      * EXEC SQL END DECLARE SECTION END-EXEC
       01  SQLCODE PIC S9(9) COMP.
       01  errcnt PIC S9(4) DISPLAY SIGN LEADING SEPARATE.
       01  uid PIC  X(18).
       01  uidx PIC X(18).
       01  i PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  flag PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  cnt PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  SQL-COD PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  DISP1 PIC S9(4) DISPLAY SIGN LEADING SEPARATE.
       01  DISP2 PIC S9(4) DISPLAY SIGN LEADING SEPARATE.
       01  DISP3 PIC S9(4) 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
           CALL "AUTHCK" USING SQLCODE uidx
           MOVE SQLCODE TO SQL-COD
           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, Module COBOL, dml061.sco"
           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 TEST0269 *******************

      *BETWEEN value expressions in wrong order             


           DISPLAY "BETWEEN value expressions in wrong order "
           DISPLAY "Reference X3.135-1989 section 5.12 GR 2 "
           DISPLAY " ------------------------------------------ "
           DISPLAY " TEST0269 "
           DISPLAY " Reference 5.12 General Rules )"
           DISPLAY " - - - - - - - - - - - - - - - - - - - - - "
           DISPLAY  " "
           DISPLAY " SELECT COUNT(*) INTO :count1"
           DISPLAY " FROM WORKS"
           DISPLAY " WHERE HOURS BETWEEN 80 AND 40;"
           DISPLAY " INSERT INTO WORKS"
           DISPLAY " VALUES('E6','P6',-60);"
           DISPLAY  " "
           DISPLAY " SELECT COUNT(*) INTO :count2"
           DISPLAY " FROM WORKS"
           DISPLAY " WHERE HOURS BETWEEN :max1 AND :min1;"
           DISPLAY  " "
           DISPLAY " SELECT COUNT(*) INTO :count3"
           DISPLAY " FROM WORKS"
           DISPLAY " WHERE HOURS BETWEEN :min1 AND :max1;"
           DISPLAY  " "
           MOVE -1 TO count1
           MOVE -1 TO count2
           MOVE -1 TO count3
      * EXEC SQL SELECT COUNT(*) INTO :count1
      *  FROM WORKS
      *  WHERE HOURS BETWEEN 80 AND 40 END-EXEC
           CALL "SUB1" USING SQLCODE count1
           MOVE SQLCODE TO SQL-COD
      * EXEC SQL INSERT INTO WORKS
      *  VALUES('E6','P6',-60) END-EXEC
           CALL "SUB2" USING SQLCODE
           MOVE SQLCODE TO SQL-COD
           MOVE -40 TO max1
           MOVE -80 TO min1
      * EXEC SQL SELECT COUNT(*) INTO :count2
      *  FROM WORKS
      *  WHERE HOURS BETWEEN :max1 AND :min1 END-EXEC
           CALL "SUB3" USING SQLCODE count2 max1 min1
           MOVE SQLCODE TO SQL-COD
      * EXEC SQL SELECT COUNT(*) INTO :count3
      *  FROM WORKS
      *  WHERE HOURS BETWEEN :min1 AND :max1 END-EXEC
           CALL "SUB4" USING SQLCODE count3 min1 max1
           MOVE SQLCODE TO SQL-COD
      * EXEC SQL ROLLBACK WORK;
           CALL "SUB5" USING SQLCODE
           MOVE SQLCODE TO SQL-COD
           DISPLAY " The correct answer is :"
           DISPLAY " count1 = 0"
           DISPLAY " count2 = 0"
           DISPLAY " count3 = 1"
           DISPLAY " Your answer is :"
           DISPLAY " count1 = ", count1
           DISPLAY " count2 = ", count2
           DISPLAY " count3 = ", count3



           if (count1  =  0  AND  count2  =  0  AND  count3  =  1) then
             DISPLAY " *** pass *** "
      *  EXEC SQL INSERT INTO TESTREPORT
      *    VALUES('0269','pass','MCO') END-EXEC
             CALL "SUB6" USING SQLCODE
             MOVE SQLCODE TO SQL-COD
           else
             DISPLAY " dml061.sco *** fail *** "
      *  EXEC SQL INSERT INTO TESTREPORT
      *    VALUES('0269','fail','MCO') END-EXEC
             ADD 1 TO errcnt
             CALL "SUB7" USING SQLCODE
             MOVE SQLCODE TO SQL-COD
           END-IF
           DISPLAY "==============================================="

      * EXEC SQL COMMIT WORK;
           CALL "SUB8" USING SQLCODE
           MOVE SQLCODE TO SQL-COD

      ******************** END TEST0269 *******************




      ******************** BEGIN TEST0270 *******************
      *BETWEEN approximate and exact numeric values         

           DISPLAY "BETWEEN value with comparable data types "
           DISPLAY "Reference X3.135-1989 section 5.12 SR 1 "
           DISPLAY " ------------------------------------------ "
           DISPLAY " TEST0270 "
           DISPLAY " Reference 5.12 Syntax Rules "
           DISPLAY " - - - - - - - - - - - - - - - - - - - - - "
           DISPLAY  " "
           DISPLAY " SELECT COUNT(*) INTO :count1"
           DISPLAY " FROM WORKS"
           DISPLAY " WHERE HOURS BETWEEN :ff1 AND :HOURS1 OR
      -    " "
           DISPLAY " HOURS BETWEEN 19.999 AND 2.001E1;"
           DISPLAY  " "
           MOVE -1 TO count1
           MOVE 11 TO ff1
           MOVE 12 TO HOURS1
      * EXEC SQL SELECT COUNT(*) INTO :count1
      *  FROM WORKS
      *  WHERE HOURS BETWEEN :ff1 AND :HOURS1 OR
      *  HOURS BETWEEN 19.999 AND 2.001E1 END-EXEC
           CALL "SUB9" USING SQLCODE count1 ff1 HOURS1
           MOVE SQLCODE TO SQL-COD
           DISPLAY " The correct answer is :"
           DISPLAY " count1 = 6"
           DISPLAY " Your answer is :"
           DISPLAY " count1 = ", count1



           if (count1  =  6) then
             DISPLAY " *** pass *** "
      *  EXEC SQL INSERT INTO TESTREPORT
      *    VALUES('0270','pass','MCO') END-EXEC
             CALL "SUB10" USING SQLCODE
             MOVE SQLCODE TO SQL-COD
           else
             DISPLAY " dml061.sco *** fail *** "
      *  EXEC SQL INSERT INTO TESTREPORT
      *    VALUES('0270','fail','MCO') END-EXEC
             ADD 1 TO errcnt
             CALL "SUB11" USING SQLCODE
             MOVE SQLCODE TO SQL-COD
           END-IF
           DISPLAY "==============================================="

      * EXEC SQL COMMIT WORK;
           CALL "SUB12" USING SQLCODE
           MOVE SQLCODE TO SQL-COD

      ******************** END TEST0270 *******************




      ******************** BEGIN TEST0271 *******************
      *COUNT(*) with Cartesian product subset               

           DISPLAY "COUNT (*) with Cartesian product subset"
           DISPLAY "Reference X3.135-1989 section:"
           DISPLAY " section 5.8 GR 4b"
           DISPLAY " section 5.20 GR 2b"
           DISPLAY " section 5.21 1,2"
           DISPLAY " ------------------------------------------ "
           DISPLAY " TEST0271 "
           DISPLAY " Reference 5.8 General Rules )"
           DISPLAY " - - - - - - - - - - - - - - - - - - - - - "
           DISPLAY  " "
           DISPLAY " SELECT COUNT(*) INTO :count1"
           DISPLAY " FROM WORKS,STAFF"
           DISPLAY " WHERE WORKS.EMPNUM = 'E1';"
           DISPLAY  " "

           MOVE 0 TO count1
      * EXEC SQL SELECT COUNT(*) INTO :count1
      *  FROM WORKS,STAFF
      *  WHERE WORKS.EMPNUM = 'E1' END-EXEC
           CALL "SUB13" USING SQLCODE count1
           MOVE SQLCODE TO SQL-COD

           DISPLAY " The correct answer is :"
           DISPLAY " count1 = 30"
           DISPLAY " Your answer is :"
           DISPLAY " count1 = ", count1



           if (count1  =  30) then
             DISPLAY " *** pass *** "
      *  EXEC SQL INSERT INTO TESTREPORT
      *    VALUES('0271','pass','MCO') END-EXEC
             CALL "SUB14" USING SQLCODE
             MOVE SQLCODE TO SQL-COD
           else
             DISPLAY " dml061.sco *** fail *** "
      *  EXEC SQL INSERT INTO TESTREPORT
      *    VALUES('0271','fail','MCO') END-EXEC
             ADD 1 TO errcnt
             CALL "SUB15" USING SQLCODE
             MOVE SQLCODE TO SQL-COD
           END-IF
           DISPLAY "==============================================="

      * EXEC SQL COMMIT WORK;
           CALL "SUB16" USING SQLCODE
           MOVE SQLCODE TO SQL-COD

      ******************** END TEST0271 *******************





      ******************** BEGIN TEST0272 *******************
      *Statement rollback for integrity violation.          

           DISPLAY " Statement rollback for integrity violation "
           DISPLAY "Reference X3.135-1989 section 7.3 General Rules 3b"
           DISPLAY " ------------------------------------------ "
           DISPLAY " TEST0272 "
           DISPLAY " Reference 7.3 General Rules )"
           DISPLAY " - - - - - - - - - - - - - - - - - - - - - "
           DISPLAY  " "
           DISPLAY " UPDATE WORKS"
           DISPLAY " SET EMPNUM = 'E7'"
           DISPLAY " WHERE EMPNUM = 'E1' OR EMPNUM = 'E4';"
           DISPLAY  " "
           DISPLAY " INSERT INTO WORKS "
           DISPLAY " SELECT 'E3',PNUM,17 FROM PROJ;"
           DISPLAY  " "
           DISPLAY " UPDATE V_WORKS1"
           DISPLAY " SET HOURS = HOURS - 9;"
           DISPLAY  " "
           DISPLAY " SELECT COUNT(*) INTO :count4 FROM WORKS"
           DISPLAY " WHERE EMPNUM = 'E7' OR HOURS = 31 OR HOURS =
      -    " 17;"
           DISPLAY  " "
           MOVE 0 TO count1
           MOVE 0 TO count2
           MOVE 0 TO count3
           MOVE -1 TO count4
      * EXEC SQL UPDATE WORKS
      *  SET EMPNUM = 'E7'
      *  WHERE EMPNUM = 'E1' OR EMPNUM = 'E4' END-EXEC
           CALL "SUB17" USING SQLCODE
           MOVE SQLCODE TO SQL-COD
           MOVE SQLCODE TO count1
      * EXEC SQL INSERT INTO WORKS 
      *  SELECT 'E3',PNUM,17 FROM PROJ END-EXEC
           CALL "SUB18" USING SQLCODE
           MOVE SQLCODE TO SQL-COD
           MOVE SQLCODE TO count2
      * EXEC SQL UPDATE V_WORKS1
      *  SET HOURS = HOURS - 9 END-EXEC
           CALL "SUB19" USING SQLCODE
           MOVE SQLCODE TO SQL-COD
           MOVE SQLCODE TO count3
      * EXEC SQL SELECT COUNT(*) INTO :count4 FROM WORKS
      *  WHERE EMPNUM = 'E7' OR HOURS = 31 OR HOURS = 17 END-EXEC
           CALL "SUB20" USING SQLCODE count4
           MOVE SQLCODE TO SQL-COD
      * EXEC SQL ROLLBACK WORK;
           CALL "SUB21" USING SQLCODE
           MOVE SQLCODE TO SQL-COD
           DISPLAY " The correct answer is :"
           DISPLAY " count1 < 0"
           DISPLAY " count2 < 0"
           DISPLAY " count3 < 0"
           DISPLAY " count4 = 0"
           DISPLAY " Your answer is :"
           DISPLAY " count1 = ", count1
           DISPLAY " count2 = ", count2
           DISPLAY " count3 = ", count3
           DISPLAY " count4 = ", count4



           if (count1  <  0  AND  count2  <  0  AND  count3  <  0  AND 
             count4  =  0) then
             DISPLAY " *** pass *** "
      *  EXEC SQL INSERT INTO TESTREPORT
      *    VALUES('0272','pass','MCO') END-EXEC
             CALL "SUB22" USING SQLCODE
             MOVE SQLCODE TO SQL-COD
           else
             DISPLAY " dml061.sco *** fail *** "
      *  EXEC SQL INSERT INTO TESTREPORT
      *    VALUES('0272','fail','MCO') END-EXEC
             ADD 1 TO errcnt
             CALL "SUB23" USING SQLCODE
             MOVE SQLCODE TO SQL-COD
           END-IF
           DISPLAY "==============================================="

      * EXEC SQL COMMIT WORK;
           CALL "SUB24" USING SQLCODE
           MOVE SQLCODE TO SQL-COD

      ******************** END TEST0272 *******************






      ******************** BEGIN TEST0273 *******************
      *SUM, MAX, MIN = NULL for empty arguments             

           DISPLAY " SUM, MAX, MIN = NULL "
           DISPLAY "Reference X3.135-1989 section 5.8 GR 4c "
           DISPLAY " ------------------------------------------ "
           DISPLAY " TEST0273 "
           DISPLAY " Reference 5.8 General Rules )"
           DISPLAY " - - - - - - - - - - - - - - - - - - - - - "
           DISPLAY  " "
           DISPLAY " UPDATE WORKS"
           DISPLAY " SET HOURS = NULL;"
           DISPLAY  " "
           DISPLAY " SELECT SUM(HOURS),MAX(HOURS),MIN(HOURS)"
           DISPLAY " INTO
      -    " :sum1:indic1,:max1:indic2,:min1:indic3"
           DISPLAY " FROM WORKS;"
           DISPLAY  " "
           MOVE 0 TO indic1
           MOVE 0 TO indic2
           MOVE 0 TO indic3
      * EXEC SQL UPDATE WORKS
      *  SET HOURS = NULL END-EXEC
           CALL "SUB25" USING SQLCODE
           MOVE SQLCODE TO SQL-COD
      * EXEC SQL SELECT SUM(HOURS),MAX(HOURS),MIN(HOURS)
      *  INTO :sum1:indic1,:max1:indic2,:min1:indic3
      *  FROM WORKS END-EXEC
           CALL "SUB26" USING SQLCODE sum1 indic1 max1 indic2 min1
             indic3
           MOVE SQLCODE TO SQL-COD
           MOVE indic1 TO DISP1
           MOVE indic2 TO DISP2
           MOVE indic3 TO DISP3
      * EXEC SQL ROLLBACK WORK;
           CALL "SUB27" USING SQLCODE
           MOVE SQLCODE TO SQL-COD
           DISPLAY " The correct answer is :"
           DISPLAY " indic1 < 0"
           DISPLAY " indic2 < 0"
           DISPLAY " indic3 < 0"
           DISPLAY " Your answer is :"
           DISPLAY " indic1 = ", DISP1
           DISPLAY " indic2 = ", DISP2
           DISPLAY " indic3 = ", DISP3



           if (indic1  <  0  AND  indic2  <  0  AND  indic3  <  0) then
             DISPLAY " *** pass *** "
      *  EXEC SQL INSERT INTO TESTREPORT
      *    VALUES('0273','pass','MCO') END-EXEC
             CALL "SUB28" USING SQLCODE
             MOVE SQLCODE TO SQL-COD
           else
             DISPLAY " dml061.sco *** fail *** "
      *  EXEC SQL INSERT INTO TESTREPORT
      *    VALUES('0273','fail','MCO') END-EXEC
             ADD 1 TO errcnt
             CALL "SUB29" USING SQLCODE
             MOVE SQLCODE TO SQL-COD
           END-IF
           DISPLAY "==============================================="

      * EXEC SQL COMMIT WORK;
           CALL "SUB30" USING SQLCODE
           MOVE SQLCODE TO SQL-COD

      ******************** END TEST0273 *******************








      ******************** BEGIN TEST0277 *******************
      *Computation with NULL value specification            

           DISPLAY " Computation with NULL value spec. "
           DISPLAY "Reference X3.135-1989 section 5.6 GR "
           DISPLAY " ------------------------------------------ "
           DISPLAY " TEST0277 "
           DISPLAY " Reference 5.6 General Rules )"
           DISPLAY " - - - - - - - - - - - - - - - - - - - - - "
           DISPLAY  " "
           DISPLAY " UPDATE WORKS"
           DISPLAY " SET HOURS = NULL WHERE EMPNUM = 'E1';"
           DISPLAY  " "
           DISPLAY " UPDATE WORKS"
           DISPLAY " SET HOURS = :count1:indic1 - "
           DISPLAY " (:count2:indic2 + :count3:indic3)"
           DISPLAY " WHERE EMPNUM = 'E2';"
           DISPLAY  " "
           DISPLAY " UPDATE WORKS"
           DISPLAY " SET HOURS = :count2:indic2 / :count3:indic3 * "
           DISPLAY " :count1:indic1"
           DISPLAY " WHERE EMPNUM = 'E3';"
           DISPLAY  " "
           DISPLAY " UPDATE WORKS"
           DISPLAY " SET HOURS = HOURS + 5;"
           DISPLAY  " "
           DISPLAY " SELECT COUNT(*) INTO :count4"
           DISPLAY " FROM WORKS"
           DISPLAY " WHERE HOURS IS NULL; "
           DISPLAY  " "
           MOVE -1 TO indic1
           MOVE 0 TO indic2
           MOVE 0 TO indic3
           MOVE 11 TO count1
           MOVE 3 TO count2
           MOVE -17 TO count3
           MOVE -1 TO count4
      * EXEC SQL UPDATE WORKS
      *  SET HOURS = NULL  WHERE EMPNUM = 'E1' END-EXEC
           CALL "SUB31" USING SQLCODE
           MOVE SQLCODE TO SQL-COD
      * EXEC SQL UPDATE WORKS
      *  SET HOURS = :count1:indic1 - (:count2:indic2 +
      *  :count3:indic3)
      *  WHERE EMPNUM = 'E2' END-EXEC
           CALL "SUB32" USING SQLCODE count1 indic1 count2 indic2 count3
             indic3
           MOVE SQLCODE TO SQL-COD
      * EXEC SQL UPDATE WORKS
      *  SET HOURS = :count2:indic2 / :count3:indic3 *
      *  :count1:indic1
      *  WHERE EMPNUM = 'E3' END-EXEC
           CALL "SUB33" USING SQLCODE count2 indic2 count3 indic3 count1
             indic1
           MOVE SQLCODE TO SQL-COD
      * EXEC SQL UPDATE WORKS
      *  SET HOURS = HOURS + 5 END-EXEC
           CALL "SUB34" USING SQLCODE
           MOVE SQLCODE TO SQL-COD
      * EXEC SQL SELECT COUNT(*) INTO :count4
      *  FROM WORKS
      *  WHERE HOURS IS NULL END-EXEC
           CALL "SUB35" USING SQLCODE count4
           MOVE SQLCODE TO SQL-COD
      * EXEC SQL ROLLBACK WORK;
           CALL "SUB36" USING SQLCODE
           MOVE SQLCODE TO SQL-COD
           DISPLAY " The correct answer is :"
           DISPLAY " count4 = 9"
           DISPLAY " Your answer is :"
           DISPLAY " count4 = ", count4



           if (count4  =  9) then
             DISPLAY " *** pass *** "
      *  EXEC SQL INSERT INTO TESTREPORT
      *    VALUES('0277','pass','MCO') END-EXEC
             CALL "SUB37" USING SQLCODE
             MOVE SQLCODE TO SQL-COD
           else
             DISPLAY " dml061.sco *** fail *** "
      *  EXEC SQL INSERT INTO TESTREPORT
      *    VALUES('0277','fail','MCO') END-EXEC
             ADD 1 TO errcnt
             CALL "SUB38" USING SQLCODE
             MOVE SQLCODE TO SQL-COD
           END-IF
           DISPLAY "==============================================="

      * EXEC SQL COMMIT WORK;
           CALL "SUB39" USING SQLCODE
           MOVE SQLCODE TO SQL-COD

      ******************** END TEST0277 *******************




      ******************** BEGIN TEST0278 *******************
      *IN value list with USER, literal, variable spec.     

           DISPLAY "IN value list with USER, literal, variable"
           DISPLAY "Reference X3.135-1989 section 5.6 GR "
           DISPLAY " ------------------------------------------ "
           DISPLAY " TEST0278 "
           DISPLAY " Reference 5.6 General Rules )"
           DISPLAY " - - - - - - - - - - - - - - - - - - - - - "
           DISPLAY  " "
           DISPLAY  " "
           DISPLAY " UPDATE STAFF"
           DISPLAY " SET EMPNAME = 'HU'"
           DISPLAY " WHERE EMPNAME = 'Ed';"
           DISPLAY  " "
           DISPLAY " SELECT COUNT(*) INTO :count1"
           DISPLAY " FROM STAFF"
           DISPLAY " WHERE EMPNAME IN "
           DISPLAY "
      -    " (USER,:EMPNA1:indic1,:EMPNA2:indic2,:EMPNA3); "
           DISPLAY  " "
           MOVE -1 TO indic1
           MOVE 0 TO indic2
           MOVE -1 TO count1
           MOVE "Alice" TO EMPNA1
           MOVE "Betty" TO EMPNA2
           MOVE "Carmen" TO EMPNA3
      * EXEC SQL UPDATE STAFF
      *  SET EMPNAME = 'HU'
      *  WHERE EMPNAME = 'Ed' END-EXEC
           CALL "SUB40" USING SQLCODE
           MOVE SQLCODE TO SQL-COD
      * EXEC SQL SELECT COUNT(*) INTO :count1
      *  FROM STAFF
      *  WHERE EMPNAME IN
      *  (USER,:EMPNA1:indic1,:EMPNA2:indic2,:EMPNA3) END-EXEC
           CALL "SUB41" USING SQLCODE count1 EMPNA1 indic1 EMPNA2 indic2
             EMPNA3
           MOVE SQLCODE TO SQL-COD
           DISPLAY "SQLCODE = ", SQL-COD
      * EXEC SQL ROLLBACK WORK;
           CALL "SUB42" USING SQLCODE
           MOVE SQLCODE TO SQL-COD
           DISPLAY " The correct answer is :"
           DISPLAY " count1 = 3"
           DISPLAY " Your answer is :"
           DISPLAY " count1 = ", count1



           if (count1  =  3) then
             DISPLAY " *** pass *** "
      *  EXEC SQL INSERT INTO TESTREPORT
      *    VALUES('0278','pass','MCO') END-EXEC
             CALL "SUB43" USING SQLCODE
             MOVE SQLCODE TO SQL-COD
           else
             DISPLAY " dml061.sco *** fail *** "
      *  EXEC SQL INSERT INTO TESTREPORT
      *    VALUES('0278','fail','MCO') END-EXEC
             ADD 1 TO errcnt
             CALL "SUB44" USING SQLCODE
             MOVE SQLCODE TO SQL-COD
           END-IF
           DISPLAY "==============================================="

      * EXEC SQL COMMIT WORK;
           CALL "SUB45" USING SQLCODE
           MOVE SQLCODE TO SQL-COD

      ******************** END TEST0278 *******************







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

      *    ****  Procedures for PERFORM statements

¤ Dauer der Verarbeitung: 0.25 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