products/sources/formale sprachen/Coq/test-suite/bugs/closed image not shown  

Quellcode-Bibliothek

© Kompilation durch diese Firma

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

Datei: bug_9684.v   Sprache: Cobol

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


      * EMBEDDED COBOL (file "MPA001.PCO")  

      ****************************************************************
      *                                                              
      *                 COMMENT SECTION                              
      *                                                              
      * DATE 1988/12/07 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.
      *                                                              
      * MPA001.PCO                                                    
      * WRITTEN BY: S HURWITZ                                        
      *                                                              
      * THIS PROGRAM IS PART A OF A TWO-PART PROGRAM(A & B) THAT     
      * TESTS THE CONCURRENCY OF SQL                                 
      *                                                              
      * REFERENCES                                                   
      *       AMERICAN NATIONAL STANDARD database language - SQL     
      *                         X3.135-1989                          
      *                                                              
      *          SECTION  4.16 Transactions                          
      *                   Paragraph Two                              
      ****************************************************************




           EXEC SQL BEGIN DECLARE SECTION END-EXEC
       01  i PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  ii PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  knum PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  newmax PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  auth PIC  X(1).
       01  uid PIC  X(18).
       01  uidx PIC  X(18).
             EXEC SQL END DECLARE SECTION END-EXEC
       01  code1 PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  oldkey PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  keydif PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  concur PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  SQLCODE PIC S9(9) COMP.
       01  errcnt PIC S9(9) DISPLAY SIGN LEADING SEPARATE.

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

       01  pauze PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  keymax PIC S9(9) DISPLAY SIGN LEADING SEPARATE.


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

       PROCEDURE DIVISION.
       P0.


             MOVE "SULLIVAN1" TO uid
             CALL "AUTHID" USING uid
             MOVE "not logged in, not" TO uidx
             EXEC SQL SELECT USER INTO :uidx FROM HU.ECCO END-EXEC
             MOVE SQLCODE TO SQL-COD
             if (uid  NOT  =   uidx) then
               DISPLAY "ERROR: User ", uid " expected. User ", uidx "
      -    " connected"
             STOP RUN
             END-IF
             MOVE 0 TO errcnt
             DISPLAY
           "SQL Test Suite, V6.0, Embedded COBOL, mpa001.pco"
             DISPLAY 
           "59-byte ID"
           DISPLAY "TEd Version #"

      *date_time print 
           ACCEPT TO-DAY FROM DATE
           ACCEPT THE-TIME FROM TIME
           DISPLAY "Date run YYMMDD: " TO-DAY " at hhmmssff: " THE-TIME

      *concurrency tuning variables follow: 
             MOVE 10 TO pauze
             MOVE 50 TO keymax

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

      ******************** BEGIN TEST0230 *******************

             DISPLAY " TEST0230 "
             DISPLAY " Reference X3.135-1989 Section 4.16 Transactions
      -    " "
             DISPLAY " Paragraph Two "
             DISPLAY " - - - - - - - - - - - - - - - - - - -"

             DISPLAY "*** This program is part A of a two-part
      -    " "
             DISPLAY "*** program (A & B) that tests for the concurrency
      -    " "
             DISPLAY "*** of SQL. Program A inserts the first value
      -    " into "
             DISPLAY "*** a table and waits for Program B.
      -    " "

             DISPLAY " This is Program A which starts first and
      -    " waits.... "

      *                      -----Initialization----- 
           .
        P100.
             MOVE 0 TO code1
             EXEC SQL DELETE FROM MP1_NEXTKEY END-EXEC
             MOVE SQLCODE TO SQL-COD
             if (SQLCODE  <  0) then
               MOVE 1 TO code1
             END-IF
             EXEC SQL INSERT
               INTO MP1_NEXTKEY (KEYNUM,AUTHOR)
               VALUES (1,'A'END-EXEC
             MOVE SQLCODE TO SQL-COD
             if (SQLCODE  NOT =  0) then
               MOVE 1 TO code1
             END-IF
             DISPLAY " MPA001: keynum = 1 "
             EXEC SQL COMMIT WORK END-EXEC
             MOVE SQLCODE TO SQL-COD
             if (SQLCODE  NOT =  0) then
               MOVE 1 TO code1
             END-IF
             if (code1  =  1) then
               DISPLAY "Cannot initialize MP1_NEXTKEY"
               GO TO P100
             END-IF

      *                      -----Synchronization----- 
           .
        P101.
      *pause a little 

             EXEC SQL DELETE FROM MP1_NN END-EXEC
             MOVE SQLCODE TO SQL-COD
             MOVE 0 TO i
           .
        P102.
             EXEC SQL INSERT INTO MP1_NN VALUES (:i) END-EXEC
             MOVE SQLCODE TO SQL-COD
             COMPUTE i = i + 1
             if (i  <  pauze) then
               GO TO P102
             END-IF
      *end of pause 

             MOVE 0 TO knum
             EXEC SQL SELECT COUNT(*)
               INTO :knum
               FROM MP1_NEXTKEY WHERE AUTHOR = 'B' END-EXEC
             MOVE SQLCODE TO SQL-COD

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

      *are we in sync? 

             if (knum  =  0) then
               DISPLAY " PLEASE start program MPB001!!! "
               GO TO P101
             END-IF

      *YES, we are in sync! 

             MOVE 0 TO keydif
             MOVE 0 TO oldkey
             MOVE 0 TO concur

      *          -----Concurrent Transaction Loop----- 
           .
        P110.

      *start table lock 

             EXEC SQL SELECT MAX(KEYNUM)
               INTO :newmax
               FROM MP1_NEXTKEY END-EXEC
             MOVE SQLCODE TO SQL-COD

             if (SQLCODE  NOT =  0) then
               DISPLAY " SQLCODE not zero in SELECT MAX(KEYNUM)
      -    " statement "
               DISPLAY " SQLCODE = ", SQL-COD " "
               EXEC SQL COMMIT WORK END-EXEC
               MOVE SQLCODE TO SQL-COD
               GO TO P110
             END-IF

             if (newmax  NOT <  keymax) then
               GO TO P120
             END-IF

             COMPUTE newmax = newmax + 1
             MOVE 0 TO code1
             EXEC SQL INSERT
               INTO MP1_NEXTKEY (KEYNUM,AUTHOR)
               VALUES (:newmax,'A'END-EXEC
             MOVE SQLCODE TO SQL-COD
             if (SQLCODE  NOT =  0) then
               MOVE 1 TO code1
             END-IF
             EXEC SQL COMMIT WORK END-EXEC
             MOVE SQLCODE TO SQL-COD
             if (SQLCODE  NOT =  0) then
               MOVE 1 TO code1
             END-IF
      *end table lock 

             if (code1  =  0) then
               DISPLAY " MPA001: keynum = ", newmax " "
               COMPUTE keydif = newmax - oldkey
               MOVE newmax TO oldkey
             END-IF
             if (code1  =  0  AND  keydif  >  1) then
               COMPUTE concur = concur + 1
               DISPLAY " *** A interleaved #", concur "***"
             END-IF

             GO TO P110

      *                          -----Evaluation----- 
           .
        P120.
             EXEC SQL COMMIT WORK END-EXEC
             EXEC SQL SELECT COUNT(*)
               INTO :i
               FROM MP1_NEXTKEY END-EXEC
             MOVE SQLCODE TO SQL-COD
             if (SQLCODE  NOT =  0) then
               DISPLAY " Cannot select for MP1_NEXTKEY"
               GO TO P120
             END-IF

             EXEC SQL SELECT COUNT(DISTINCT KEYNUM) 
               INTO :ii
               FROM MP1_NEXTKEY END-EXEC
             MOVE SQLCODE TO SQL-COD
             if (SQLCODE  NOT =  0) then
               DISPLAY " Cannot select for MP1_NEXTKEY!"
               GO TO P120
             END-IF

             DISPLAY " The number of rows should be ", keymax " "
             DISPLAY " The number of distinct keynum values should be ",
             keymax " "
             DISPLAY " The number of rows = ", i " "
             DISPLAY " The number of distinct keynum values = ", ii "
      -    " "

             if (concur  <  4  AND  i  =  ii  AND  ii  =  keymax) then
               DISPLAY " Insufficient interleaving to demonstrate
      -    " concurrency!"
               DISPLAY " Using TEd, decrease variable pauze to start"
               DISPLAY " MPA001 sooner or increase value of variable
      -    " keymax"
               DISPLAY " in both MPA001 and MPB001 to lengthen test."
               DISPLAY " Then RERUN!"
               GO TO P130
             END-IF

             if ( i  =  ii  AND  ii  =  keymax) then
               DISPLAY "mpa001.pco: *** pass *** "
               EXEC SQL INSERT INTO HU.TESTREPORT
                 VALUES('0230','pass','PCO'END-EXEC
               MOVE SQLCODE TO SQL-COD
             else
               DISPLAY "mpa001.pco: *** fail *** "
               EXEC SQL INSERT INTO HU.TESTREPORT
                 VALUES('0230','fail','PCO'END-EXEC
               MOVE SQLCODE TO SQL-COD
               COMPUTE errcnt = errcnt + 1
             END-IF

           .
        P130.
             DISPLAY  " "
             DISPLAY
             "===================================================="

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

      ******************** END TEST0230 *******************

      **** TESTER MAY CHOOSE TO INSERT CODE FOR errcnt > 0

           STOP RUN.

      *    ****  Procedures for PERFORM statements

¤ Dauer der Verarbeitung: 0.21 Sekunden  (vorverarbeitet)  ¤





Download des
Quellennavigators
Download des
sprechenden Kalenders

Eigene Datei ansehen




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