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: dml076.cob   Sprache: Cobol

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


      * Embedded SQL COBOL ("DML076.PCO") translated from
      * Embedded C on Tue Jul 16 10:05:50 1991.


      * EMBEDDED COBOL (file "DML076.PCO")     

      *********************************************************
      *                                                       
      *             COMMENT SECTION                           
      *                                                       
      * DATE 1991/06/18 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.
      *                                                       
      * DML076.PCO                                             
      * WRITTEN BY: YOLANDA HERD                              
      *                                                       
      * THIS ROUTINE TESTS NULLS AND CURSORS                  
      *                                                       
      * REFERENCES                                            
      *  AMERICAN NATIONAL STANDARD database language - SQL   
      *                               X3.135-1989             
      *                                                       
      *                SECTION 4.2                            
      *                  DATA TYPES, DEFINITION OF NULL       
      *                  SECTION 8.10, GR 8                   
      *                                                       
      *********************************************************


           EXEC SQL BEGIN DECLARE SECTION END-EXEC
       01  CHARTP PIC  X(1).
       01  INTTP PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  REALTP-SUB PIC S9(6)V99 DISPLAY SIGN LEADING SEPARATE.
       01  SMLTP PIC S9(4) DISPLAY SIGN LEADING SEPARATE.
       01  NUMTP PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  DECTP PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  GRDE PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  NME1 PIC  X(20).
       01  NME2 PIC  X(20).
       01  CITY1 PIC  X(15).
       01  VAR1 PIC  X(3).
       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  indic4 PIC S9(4) DISPLAY SIGN LEADING SEPARATE.
       01  indic5 PIC S9(4) DISPLAY SIGN LEADING SEPARATE.
       01  indic6 PIC S9(4) DISPLAY SIGN LEADING SEPARATE.
       01  indic7 PIC S9(4) DISPLAY SIGN LEADING SEPARATE.
       01  indic8 PIC S9(4) DISPLAY SIGN LEADING SEPARATE.
       01  indic9 PIC S9(4) DISPLAY SIGN LEADING SEPARATE.
       01  indicx PIC S9(4) 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  count5 PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  count6 PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  count7 PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  count8 PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  count9 PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  countx PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       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  flag1 PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  flag2 PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  flag3 PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  i 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  DISP4 PIC S9(4) DISPLAY SIGN LEADING SEPARATE.
       01  DISP7 PIC S9(4) DISPLAY SIGN LEADING SEPARATE.
       01  DISP8 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
           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, dml076.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 TEST0410 *********************
      *This program tests NULL values in OPEN CURSORS           
      *                                                         

             DISPLAY " TEST0410 "
             DISPLAY " NULL value in OPEN CURSOR "
             DISPLAY " reference X3.135-1989 5.11 GR2 and 5.21 GR2
      -    " "
             DISPLAY "
      -    " -------------------------------------------------"

             MOVE "IRM" TO NME1
             MOVE "XXX" TO VAR1
             MOVE -1 TO indic1 
             MOVE 0 TO indic2
             MOVE 10000 TO count1
             MOVE 0 TO count3

             EXEC SQL DECLARE X CURSOR
               FOR SELECT PNUM
               FROM PROJ
               WHERE PNAME = :NME1:indic1 OR BUDGET > :count1:indic2
             END-EXEC

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

             MOVE 1 TO i
             PERFORM P50 UNTIL i > 6

             MOVE "MXSS" TO NME1
             MOVE "XXXXXX" TO CITY1
             MOVE 50000 TO count1
             MOVE 0 TO count2
             MOVE -1 TO indic1 
             MOVE 0 TO indic2

             EXEC SQL DECLARE Y CURSOR
               FOR SELECT CITY
               FROM PROJ
               WHERE PNAME = :NME1:indic2 OR BUDGET < :count1:indic1
             END-EXEC

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

             MOVE 1 TO i
             PERFORM P49 UNTIL i > 6

             DISPLAY " The correct answers are:"
             DISPLAY " count3 = 4 and count2 = 1 "
             DISPLAY  " "
             DISPLAY " Your answers are:"
             DISPLAY " count3 = ", count3 " and count2 = ", count2 " "

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

             DISPLAY
             "====================================================="

             DISPLAY  " "


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

      ********************** END TEST0410 *********************

      ********************** BEGIN TEST0435 *********************
      *This program tests UPDATES WHERE CURRENT                 
      *                                                         

             DISPLAY " TEST0435 "
             DISPLAY " Host variables in UPDATE WHERE CURRENT"
             DISPLAY " reference X3.135-1989 8.11, value expression"
             DISPLAY "
      -    " --------------------------------------------------"

             EXEC SQL DECLARE DINO CURSOR 
               FOR SELECT EMPNUM, CITY
               FROM STAFF
               WHERE CITY > 'Dino' END-EXEC

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

             MOVE 0 TO GRDE
             MOVE "XXXXX" TO CITY1
             MOVE "XXX" TO NME1
             MOVE "XXX" TO VAR1

             MOVE 1 TO i
             PERFORM P48 UNTIL i > 5

             MOVE -1 TO GRDE 
             MOVE "Joan" TO NME1

             EXEC SQL SELECT SUM(GRADE) INTO :GRDE
               FROM STAFF
               WHERE CITY = :CITY1 END-EXEC
             MOVE SQLCODE TO SQL-COD

             EXEC SQL SELECT EMPNAME INTO :NME1
               FROM STAFF
               WHERE EMPNAME > 'Ed' 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 " GRDE = 35 and NME1 = Smith"
             DISPLAY  " "
             DISPLAY " Your answers are:"
             DISPLAY " GRDE = ", GRDE " and NME1 = ", NME1

             if ((GRDE  =  35)  AND  (NME1   =   "Smith
      -    " "))  then
               EXEC SQL INSERT INTO TESTREPORT 
                 VALUES('0435','pass','PCO'END-EXEC
               MOVE SQLCODE TO SQL-COD
               DISPLAY " *** pass *** "
             else
               EXEC SQL INSERT INTO TESTREPORT 
                 VALUES('0435','fail','PCO'END-EXEC
             ADD 1 TO errcnt
               MOVE SQLCODE TO SQL-COD
               DISPLAY " dml076.pco *** fail *** "
             END-IF

             DISPLAY
             "====================================================="

             DISPLAY  " "


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

      ********************** END TEST0435 *********************



      ********************** BEGIN TEST0436 *********************
      *This program tests the NULL values for various           
      *SQL Data Types                                           

             DISPLAY " TEST0436 "
             DISPLAY " NULL values for various SQL Data Types
      -    " "
             DISPLAY " reference X3.135-1989 section 4.2, 8.10 GR 8
      -    " "
             DISPLAY "
      -    " -------------------------------------------------"


             MOVE "X" TO CHARTP
             MOVE 0 TO indic1
             MOVE 0 TO indic2
             MOVE 0 TO indic3
             MOVE 0 TO indic4
             MOVE 0 TO indic5
             MOVE 0 TO indic6
             MOVE 0 TO indic7
             MOVE 0 TO indic8
             MOVE 0 TO count1
             MOVE 0 TO count2
             MOVE 0 TO count3
             MOVE 99999 TO INTTP
             MOVE 99 TO SMLTP
             MOVE 999 TO NUMTP
             MOVE 999 TO DECTP

             EXEC SQL INSERT INTO BB VALUES(NULLEND-EXEC
             MOVE SQLCODE TO SQL-COD
             EXEC SQL INSERT INTO EE VALUES(NULLEND-EXEC
             MOVE SQLCODE TO SQL-COD
             EXEC SQL INSERT INTO GG VALUES(NULLEND-EXEC
             MOVE SQLCODE TO SQL-COD
             EXEC SQL INSERT INTO HH VALUES(NULLEND-EXEC
             MOVE SQLCODE TO SQL-COD
             EXEC SQL INSERT INTO II VALUES(NULLEND-EXEC
             MOVE SQLCODE TO SQL-COD
             EXEC SQL INSERT INTO JJ VALUES(NULLEND-EXEC
             MOVE SQLCODE TO SQL-COD
             EXEC SQL INSERT INTO MM VALUES(NULLEND-EXEC
             MOVE SQLCODE TO SQL-COD
             EXEC SQL INSERT INTO SS VALUES(NULLEND-EXEC
             MOVE SQLCODE TO SQL-COD

             EXEC SQL SELECT CHARTEST INTO :CHARTP:indic1 
               FROM BB END-EXEC
             MOVE SQLCODE TO SQL-COD
             MOVE indic1 TO DISP1

             EXEC SQL SELECT INTTEST INTO :INTTP:indic2 
               FROM EE END-EXEC
             MOVE SQLCODE TO SQL-COD
             MOVE indic2 TO DISP2

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

             EXEC SQL SELECT SMALLTEST INTO :SMLTP:indic4 
               FROM HH END-EXEC
             MOVE SQLCODE TO SQL-COD
             MOVE indic4 TO DISP4

             EXEC SQL SELECT COUNT(*) INTO :count2 
               FROM II 
               WHERE DOUBLETEST IS NULL END-EXEC
             MOVE SQLCODE TO SQL-COD


             EXEC SQL SELECT COUNT(*) INTO :count3 
               FROM JJ 
               WHERE FLOATTEST IS NULL END-EXEC
             MOVE SQLCODE TO SQL-COD

             EXEC SQL SELECT NUMTEST INTO :NUMTP:indic7 
               FROM MM END-EXEC
             MOVE SQLCODE TO SQL-COD
             MOVE indic7 TO DISP7

             EXEC SQL SELECT NUMTEST INTO :DECTP:indic8 
               FROM SS END-EXEC
             MOVE SQLCODE TO SQL-COD
             MOVE indic8 TO DISP8

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

             DISPLAY " The correct answers are:"
             DISPLAY " All indicator variables should be -1"
             DISPLAY " count1, count2, and count3 = 1"
             DISPLAY  " "
             DISPLAY " Your answers are:"
             DISPLAY " indic1 = ", DISP1 ", indic2 = ", DISP2
             DISPLAY " indic4 = ", DISP4
             DISPLAY " indic7 = ", DISP7 ", indic8 = ", DISP8
             DISPLAY " count1 = ", count1 ", count2 = ", count2 ",
      -    " count3 = ", count3

             MOVE 0 TO flag1

             MOVE 0 TO flag2

             if (indic1  NOT =  -1  OR  indic2  NOT =  -1  OR 
             indic4  NOT =  -1)  then
               MOVE 1 TO flag1
             END-IF

             if (indic7 NOT =  -1  OR  indic8  NOT =  -1)   then
               MOVE 1 TO flag1
             END-IF

             if (count1  NOT =  1  OR  count2  NOT =  1  OR  count3  NOT
             =  1)  then
               MOVE 1 TO flag2
             END-IF


             if (flag1  =  0  AND  flag2  =  0)  then
               EXEC SQL INSERT INTO TESTREPORT 
                 VALUES('0436','pass','PCO'END-EXEC
               MOVE SQLCODE TO SQL-COD
               DISPLAY " *** pass *** "
             else
               EXEC SQL INSERT INTO TESTREPORT 
                 VALUES('0436','fail','PCO'END-EXEC
             ADD 1 TO errcnt
               MOVE SQLCODE TO SQL-COD
               DISPLAY " dml076.pco *** fail *** "
             END-IF

             DISPLAY
             "====================================================="

             DISPLAY  " "

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

      ********************** END TEST0436 *********************


      ********************** BEGIN TEST0437 *******************

             DISPLAY " TEST0437 "
             DISPLAY " NULL values for various host variables
      -    " "
             DISPLAY " reference X3.135-1989 section 4.2, 8.7, 5.6 GR
      -    " 1 or 2 "
             DISPLAY "
      -    " -------------------------------------------------- "

             MOVE -1 TO indic1 
             MOVE -1 TO indic2 
             MOVE -1 TO indic3 
             MOVE 0 TO indic4
             MOVE 0 TO indic5
             MOVE 0 TO indic6
             MOVE 0 TO count1
             MOVE 0 TO count2
             MOVE 0 TO count3
             MOVE 0 TO count4

             MOVE "2" TO CHARTP
             MOVE -23 TO DECTP
             MOVE 99 TO REALTP-SUB
             EXEC SQL INSERT INTO BB VALUES(:CHARTP :indic1) END-EXEC
             MOVE SQLCODE TO SQL-COD
             EXEC SQL INSERT INTO SS VALUES(:DECTP  :indic2) END-EXEC
             MOVE SQLCODE TO SQL-COD
             EXEC SQL INSERT INTO GG VALUES(:REALTP-SUB :indic3) 
               END-EXEC
             MOVE SQLCODE TO SQL-COD


             MOVE "X" TO CHARTP
             MOVE 23 TO DECTP
             MOVE 45 TO REALTP-SUB
             EXEC SQL INSERT INTO BB VALUES(:CHARTP :indic4) END-EXEC
             MOVE SQLCODE TO SQL-COD
             EXEC SQL INSERT INTO SS VALUES(:DECTP  :indic5) END-EXEC
             MOVE SQLCODE TO SQL-COD
             EXEC SQL INSERT INTO GG VALUES(:REALTP-SUB :indic6) 
               END-EXEC
             MOVE SQLCODE TO SQL-COD

             EXEC SQL INSERT INTO DD SELECT * FROM BB END-EXEC
             MOVE SQLCODE TO SQL-COD
             EXEC SQL INSERT INTO PP SELECT NUMTEST FROM SS END-EXEC
             MOVE SQLCODE TO SQL-COD
             EXEC SQL INSERT INTO JJ SELECT REALTEST FROM GG
               WHERE REALTEST IS NULL OR REALTEST > 0 END-EXEC
             MOVE SQLCODE TO SQL-COD

             EXEC SQL SELECT CHARTEST INTO :CHARTP 
               FROM DD 
               WHERE CHARTEST IS NOT NULL END-EXEC
             MOVE SQLCODE TO SQL-COD

             EXEC SQL SELECT NUMTEST INTO :DECTP 
               FROM PP 
               WHERE NUMTEST IS NOT NULL END-EXEC
             MOVE SQLCODE TO SQL-COD

             EXEC SQL SELECT COUNT(*) INTO :REALTP-SUB
               FROM JJ 
               WHERE FLOATTEST BETWEEN 44 AND 46 END-EXEC
             MOVE SQLCODE TO SQL-COD

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

             EXEC SQL SELECT COUNT(*) INTO :count2
               FROM DD
               WHERE CHARTEST IS NULL END-EXEC
             MOVE SQLCODE TO SQL-COD

             EXEC SQL SELECT COUNT(*) INTO :count3
               FROM PP
               WHERE NUMTEST IS NULL END-EXEC
             MOVE SQLCODE TO SQL-COD

             EXEC SQL SELECT COUNT(*) INTO :count4
               FROM JJ
               WHERE FLOATTEST IS NULL END-EXEC
             MOVE SQLCODE TO SQL-COD

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

             DISPLAY " The correct answers are:"
             DISPLAY " CHARTP = X, DECTP = 23, REALTP-SUB = 1"
             DISPLAY " count1 = 1, count2 = 1"
             DISPLAY " count3 = 1, count4 = 1"
             DISPLAY  " "
             DISPLAY " Your answers are:"
             DISPLAY " CHARTP = ", CHARTP ", DECTP = ", DECTP ",
      -    " REALTP-SUB = ", REALTP-SUB
             DISPLAY " count1 = ", count1 ", count2 = ", count2
             DISPLAY " count3 = ", count3 ", count4 = ", count4

             MOVE 0 TO flag1

             if ((CHARTP  NOT  =   "X")  OR  DECTP  NOT =  23) then
               MOVE 1 TO flag1
             END-IF

             MOVE 0 TO flag2

             if (REALTP-SUB NOT = 1)  then
               MOVE 1 TO flag2
             END-IF

             MOVE 0 TO flag3

             if (count1  NOT =  1  OR  count2  NOT =  1  OR  count3  NOT
             =  1  OR  count4  NOT =  1) then
               MOVE 1 TO flag3
             END-IF

             if (flag1  =  0  AND  flag2  =  0  AND  flag3  =  0) then
               EXEC SQL INSERT INTO TESTREPORT
                 VALUES('0437','pass','PCO'END-EXEC
               MOVE SQLCODE TO SQL-COD
               DISPLAY " *** pass *** "
             else
               EXEC SQL INSERT INTO TESTREPORT
                 VALUES('0437','fail','PCO'END-EXEC
             ADD 1 TO errcnt
               MOVE SQLCODE TO SQL-COD
               DISPLAY " dml076.pco *** fail *** "
             END-IF

             EXEC SQL COMMIT WORK END-EXEC
             DISPLAY
             "====================================================="

             DISPLAY  " "
      ********************** END TEST0437 *********************

      ********************** BEGIN TEST0441 *******************

             DISPLAY " TEST0441 "
             DISPLAY " NULL values for various predicates"
             DISPLAY " reference 5.6 GR 1 or 2"
             DISPLAY
             "----------------------------------------------------"

             MOVE 0 TO count1
             MOVE -1 TO count2 
             MOVE 0 TO count3
             MOVE -1 TO count4 
             MOVE 0 TO count5
             MOVE -1 TO count6 
             MOVE 0 TO count7
             MOVE -1 TO count8 
             MOVE 0 TO count9
             MOVE -1 TO countx 
             MOVE 0 TO indic1
             MOVE -1 TO indic2 
             MOVE 0 TO indic3
             MOVE -1 TO indic4 
             MOVE 0 TO indic5
             MOVE -1 TO indic6 
             MOVE 0 TO indic7
             MOVE -1 TO indic8 
             MOVE 0 TO indic9
             MOVE -1 TO indicx 

             MOVE 11 TO DECTP
             MOVE "V___na%" TO CITY1
             MOVE "S_P%" TO NME1

             EXEC SQL SELECT COUNT(*) INTO :count1 
               FROM STAFF 
               WHERE GRADE BETWEEN 9 AND :DECTP :indic1 END-EXEC
             MOVE SQLCODE TO SQL-COD

             EXEC SQL SELECT COUNT(*) INTO :count2 
               FROM STAFF 
               WHERE GRADE BETWEEN 9 AND :DECTP :indic2 END-EXEC
             MOVE SQLCODE TO SQL-COD

             MOVE 39999 TO DECTP

             EXEC SQL SELECT COUNT(*) INTO :count3 
               FROM PROJ 
               WHERE BUDGET NOT BETWEEN 9999 AND :DECTP :indic3 END-EXEC
             MOVE SQLCODE TO SQL-COD

             EXEC SQL SELECT COUNT(*) INTO :count4  
               FROM PROJ 
               WHERE BUDGET NOT BETWEEN 999 AND :DECTP :indic4 END-EXEC
             MOVE SQLCODE TO SQL-COD

             EXEC SQL SELECT COUNT(*) INTO :count5 
               FROM  PROJ 
               WHERE PNAME LIKE :NME1 :indic5 END-EXEC
             MOVE SQLCODE TO SQL-COD

             EXEC SQL SELECT COUNT(*) INTO :count6 
               FROM PROJ 
               WHERE PNAME LIKE :NME1 :indic6 END-EXEC
             MOVE SQLCODE TO SQL-COD

             EXEC SQL SELECT COUNT(*) INTO :count7 
               FROM STAFF 
               WHERE CITY NOT LIKE :CITY1 :indic7 END-EXEC
             MOVE SQLCODE TO SQL-COD

             EXEC SQL SELECT COUNT(*) INTO :count8 
               FROM STAFF 
               WHERE CITY NOT LIKE :CITY1 :indic8 END-EXEC
             MOVE SQLCODE TO SQL-COD

             MOVE 20 TO DECTP

             EXEC SQL SELECT COUNT(*) INTO :count9
               FROM WORKS
               WHERE HOURS <> :DECTP :indic9 END-EXEC
             MOVE SQLCODE TO SQL-COD

             EXEC SQL SELECT COUNT(*) INTO :countx
               FROM WORKS
               WHERE HOURS <> :DECTP :indicx END-EXEC
             MOVE SQLCODE TO SQL-COD

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

             DISPLAY " The correct answers are:"
             DISPLAY " count1 = 1, count2 = 0"
             DISPLAY " count3 = 1, count4 = 0"
             DISPLAY " count5 = 2, count6 = 0"
             DISPLAY " count7 = 3, count8 = 0"
             DISPLAY " count9 = 8, countx = 0"
             DISPLAY  " "
             DISPLAY " Your answers are:"
             DISPLAY " count1 = ", count1 ", count2 = ", count2
             DISPLAY " count3 = ", count3 ", count4 = ", count4
             DISPLAY " count5 = ", count5 ", count6 = ", count6
             DISPLAY " count7 = ", count7 ", count8 = ", count8
             DISPLAY " count9 = ", count9 ", countx = ", countx

             MOVE 0 TO flag1
             MOVE 0 TO flag2
             MOVE 0 TO flag3

             if ((count1  NOT =  1)  OR  (count2  NOT =  0)  OR  (count3
              NOT =  1)  OR  (count4  NOT =  0))  then
               MOVE 1 TO flag1
             END-IF

             if ((count5  NOT =  2)  OR  (count6  NOT =  0)  OR  (count7
              NOT =  3)  OR  (count8  NOT =  0))  then
               MOVE 1 TO flag2
             END-IF

             if ((count9  NOT =  8)  OR  (countx  NOT =  0)) then
               MOVE 1 TO flag3
             END-IF

             if ((flag1  =  0)  AND  (flag2  =  0)  AND  (flag3  =  0))
             then
               EXEC SQL INSERT INTO TESTREPORT 
                 VALUES('0441','pass','PCO'END-EXEC
               MOVE SQLCODE TO SQL-COD
               DISPLAY " *** pass *** "
             else
               EXEC SQL INSERT INTO TESTREPORT 
                 VALUES('0441','fail','PCO'END-EXEC
             ADD 1 TO errcnt
               MOVE SQLCODE TO SQL-COD
               DISPLAY " dml076.pco *** fail *** "
             END-IF

             DISPLAY
             "====================================================="

             DISPLAY  " "


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

      ********************** END TEST0441 *********************





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

      *    ****  Procedures for PERFORM statements

        P50.
               EXEC SQL FETCH X INTO :VAR1 END-EXEC
               MOVE SQLCODE TO SQL-COD
               if (SQLCODE  =  0) then
                 COMPUTE count3 = count3 + 1
               END-IF
               DISPLAY "VAR1 = ", VAR1
             ADD 1 TO i
           .

        P49.
               EXEC SQL FETCH Y INTO :CITY1 END-EXEC
               MOVE SQLCODE TO SQL-COD
               if (SQLCODE  =  0) then
                 COMPUTE count2 = count2 + 1
               END-IF
               DISPLAY "CITY1 = ", CITY1
             ADD 1 TO i
           .

        P48.
               MOVE i TO GRDE
               EXEC SQL FETCH DINO INTO :VAR1, :CITY1 END-EXEC
               MOVE SQLCODE TO SQL-COD

               if (SQLCODE  =  0) then
                 DISPLAY " VAR1 = ", VAR1 ", CITY1 = ", CITY1
                 MOVE "Dinoville" TO CITY1
                 EXEC SQL UPDATE STAFF
                   SET GRADE = :GRDE + 10, CITY = :CITY1
                   WHERE CURRENT OF DINO END-EXEC
                 MOVE SQLCODE TO SQL-COD
               END-IF


               if (i  =  2) then
                 MOVE "Smith" TO NME1
                 EXEC SQL UPDATE STAFF
                   SET GRADE = GRADE * :GRDE, EMPNAME = :NME1
                   WHERE CURRENT OF DINO END-EXEC
                 MOVE SQLCODE TO SQL-COD
                 DISPLAY " VAR1 = ", VAR1 ", GRDE = ", GRDE
               END-IF
             ADD 1 TO i
           .

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