products/sources/formale sprachen/Cobol/Test-Suite/SQL P/yts image not shown  

Quellcode-Bibliothek

© Kompilation durch diese Firma

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

Datei: yts807.cob   Sprache: Cobol

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


      * EMBEDDED COBOL (file "YTS807.PCO")


      *Copyright 1996 National Computing Centre Ltd, 
      *and Computer Logic R&D S.A 
      *on behalf of CTS5 SQL2 Project. 
      *All rights reserved.                                          
      *The CTS5 SQL2 Project is sponsored by the European Community. 
      *                                                             
      *The National Computing Centre Limited and Computer Logic R&D  
      *have given permission to NIST to distribute this program      
      *over the World Wide Web in order to promote SQL standards.    
      *DISCLAIMER:                                                   
      *This program was reviewed by employees of NIST for            
      *conformance to the SQL standards.                             
      *NIST assumes no responsibility for any party's use of         
      *this program.                                                 


      ****************************************************************
      *                                                              
      *                 COMMENT SECTION                              
      *                                                              
      * SQL VALIDATION TEST SUITE V6.0                               
      *                                                              
      * YTS807.PCO                                                   
      * WRITTEN BY:  Susan Watters                                   
      * TRANSLATED AUTOMATICALLY FROM EMBEDDED C BY CHRIS SCHANZLE
      *                                                              
      * This routine tests TIMEZONE_HOUR and TIMEZONE_MINUTE in      
      *                    <extract expression>                      
      *                                                              
      * REFERENCES                                                   
      *   6.6 SR6b     <numeric value function>                      
      *   6.6 SR4                                                    
      *   6.6 GR3)a)ii                                               
      *   6.10 GR10    <cast expression>                             
      *   F#41         Time zone specification                       
      *   F#5          DATETIME data types                           
      *   F#20         CAST functions                                
      *                                                              
      * DATE LAST ALTERED 02.01.96 CTS5 Hand-over Test               
      * Table Inserts corrected 24/10/95                             
      * Superfluous references to CASCADE removed from DELETE 3/11/95
      *                                                              
      * QA Status: Full FC                                           
      *                                                              
      * Revised by DWF 1996-03-28                                    
      *   Added rollback after authid                                
      *   Deleted extraneous code                                    
      *   Fixed syntax errors                                        
      ****************************************************************


   

           EXEC SQL BEGIN DECLARE SECTION END-EXEC
       01  SQLCODE PIC S9(9) COMP.
       01  SQLSTATE PIC  X(5).
       01  id1 PIC S9(4) DISPLAY SIGN LEADING SEPARATE.
       01  id2 PIC S9(4) DISPLAY SIGN LEADING SEPARATE.
       01  min PIC S9(4) DISPLAY SIGN LEADING SEPARATE.
       01  hrs PIC S9(4) DISPLAY SIGN LEADING SEPARATE.
       01  mn1 PIC S9(4) DISPLAY SIGN LEADING SEPARATE.
       01  mn2 PIC S9(4) DISPLAY SIGN LEADING SEPARATE.
       01  hr1 PIC S9(4) DISPLAY SIGN LEADING SEPARATE.
       01  hr2 PIC S9(4) DISPLAY SIGN LEADING SEPARATE.
       01  co PIC S9(4) DISPLAY SIGN LEADING SEPARATE.
       01  uid PIC  X(18).
       01  uidx PIC  X(18).
             EXEC SQL END DECLARE SECTION END-EXEC
       01  norm1 PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  norm2 PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  ALPNUM-TABLE VALUE IS
               "01234ABCDEFGH56789IJKLMNOPQRSTUVWXYZ".
           05  ALPNUM PIC X OCCURS 36 TIMES.
       01  NORMSQ.
           05  NORMSQX PIC X OCCURS 5 TIMES.
       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  flag PIC S9(9) DISPLAY SIGN LEADING SEPARATE.

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

       PROCEDURE DIVISION.
       P0.

             MOVE "CTS1 " TO uid
             CALL "AUTHID" USING uid
             MOVE "not logged in, not" TO uidx
             EXEC SQL SELECT USER INTO :uidx FROM CTS1.ECCO END-EXEC
             MOVE SQLCODE TO SQL-COD
             EXEC SQL ROLLBACK WORK 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, yts807.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

      ******************** BEGIN TEST7564 *******************
             MOVE 1 TO flag

             DISPLAY " TEST7564 "
             DISPLAY " TIMEZONE_HOUR & TIMEZONE_MINUTE in
      -    " expr.>"
             DISPLAY "References:"
             DISPLAY " 6.6 SR6b
             DISPLAY " 6.6 SR4"
             DISPLAY " 6.6 GR3)a)ii"
             DISPLAY " 6.10 GR10 "
             DISPLAY " F#41 Time zone specification."
             DISPLAY " F#5 DATETIME data types."
             DISPLAY " F#20 CAST functions."
             DISPLAY " - - - - - - - - - - - - - - - - - - -"

             COMPUTE SQLCODE = -1
             MOVE "xxxxx" TO SQLSTATE

      *Ensure tables used in the test are empty 

             DISPLAY "DELETE FROM TTIME_BASE;"
             EXEC SQL DELETE FROM TTIME_BASE END-EXEC
             MOVE SQLCODE TO SQL-COD

      *Insert values into TTIME 

             DISPLAY "INSERT INTO TTIME (PK, TT)"
             DISPLAY "VALUES (1, TIME '00:00:00');"
             EXEC SQL INSERT INTO TTIME (PK, TT)
               VALUES (1, '00:00:00'END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

      *return the primary key and time hour and minutes from TTIME TT;

      *initialise host variables 

             MOVE 99 TO id1
             COMPUTE hrs = -1
             COMPUTE min = -1

             DISPLAY "SELECT PK,"
             DISPLAY " EXTRACT (TIMEZONE_HOUR FROM CAST (TT AS TIME
      -    " WITH TIME ZONE)),"
             DISPLAY " EXTRACT (TIMEZONE_MINUTE FROM CAST (TT AS TIME
      -    " WITH TIME ZONE))"
             DISPLAY "INTO :id, :hrs, :min"
             DISPLAY "FROM TTIME"
             DISPLAY "WHERE PK = 1;"
             EXEC SQL SELECT PK,
               TIMEZONE_HOUR,
               TIMEZONE_MINUTE
               INTO :id, :hrs, :min
               FROM TTIME
               WHERE PK = 1 END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY "id should be 1; its value is ", id1
             if (id1  NOT =  1) then
               MOVE 0 TO flag
             END-IF
             DISPLAY "hours should be in the range -12 to 13; its value
      -    " is ", hrs
             if (hrs  <  -12  OR  hrs  >  13) then
               MOVE 0 TO flag
             END-IF
             DISPLAY "minutes should be in the range 0 to 59; its value
      -    " is ", min
             if (min  <  0  OR  min  >  59) then
               MOVE 0 TO flag
             END-IF

      *tidy up TTIME before inserting into TTIME2 

             DISPLAY "DELETE FROM TTIME_BASE;"
             EXEC SQL DELETE FROM TTIME_BASE END-EXEC
             MOVE SQLCODE TO SQL-COD

      *insert into TTIME2 

             DISPLAY "INSERT INTO TTIME2 "
             DISPLAY "VALUES (1, TIME '00:00:00+07:35',"
             DISPLAY "TIMESTAMP '1995-12-25 00:00:00+07:35');"
             EXEC SQL INSERT INTO TTIME2 
               VALUES (1, '00:00:00+07:35',
               TIMESTAMP '1995-12-25 00:00:00+07:35'END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "INSERT INTO TTIME2 "
             DISPLAY "VALUES (2, TIME '01:00:15+09:15',"
             DISPLAY "TIMESTAMP '1990-07-13 10:30:16+12:35');"
             EXEC SQL INSERT INTO TTIME2 
               VALUES (2, '01:00:15+09:15',
               TIMESTAMP '1990-07-13 10:30:16+12:35'END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "INSERT INTO TTIME2 "
             DISPLAY "VALUES (3, TIME '23:30:10-16:12',"
             DISPLAY "TIMESTAMP '1989-03-30 07:58:10-02:20');"
             EXEC SQL INSERT INTO TTIME2 
               VALUES (3, '23:30:10-16:12',
               TIMESTAMP '1989-03-30 07:58:10-02:20'END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "INSERT INTO TTIME2 "
             DISPLAY "VALUES (4, TIME '12:55:05-07:35',"
             DISPLAY "TIMESTAMP '1970-06-28 20:10:15-10:07');"
             EXEC SQL INSERT INTO TTIME2 
               VALUES (4, '12:55:05-07:35',
               TIMESTAMP '1970-06-28 20:10:15-10:07'END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "INSERT INTO TTIME2 "
             DISPLAY "VALUES (5, TIME '09:45:45+09:15',"
             DISPLAY "TIMESTAMP '1961-04-21 01:02:03+05:29');"
             EXEC SQL INSERT INTO TTIME2 
               VALUES (5, '09:45:45+09:15',
               TIMESTAMP '1961-04-21 01:02:03+05:29'END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

      *Extract time zone hour and minute from TT2 and TS2 
      *should be the same time zone as that inserted earlier 

      *initialise host variables 

             COMPUTE id2 = -1
             MOVE 99 TO hr1
             MOVE 99 TO mn1
             MOVE 99 TO hr2
             MOVE 99 TO mn2

             DISPLAY "SELECT PK,"
             DISPLAY " EXTRACT (TIMEZONE_HOUR FROM TT2),"
             DISPLAY " EXTRACT (TIMEZONE_MINUTE FROM TT2),"
             DISPLAY " EXTRACT (TIMEZONE_HOUR FROM TS2),"
             DISPLAY " EXTRACT (TIMEZONE_MINUTE FROM TS2)"
             DISPLAY "INTO :id2, :hr1, :mn1, :hr2, :mn2"
             DISPLAY "FROM TTIME2"
             DISPLAY "WHERE PK = 1;"

             EXEC SQL SELECT PK,
               TIMEZONE_HOUR,
               TIMEZONE_MINUTE,
               TIMEZONE_HOUR,
               TIMEZONE_MINUTE
               INTO :id2, :hr1, :mn1, :hr2, :mn2
               FROM TTIME2
               WHERE PK = 1 END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY "id2 should be 1; its value is ", id2
             DISPLAY "hr1 should be 7; its value is ", hr1
             DISPLAY "mn1 should be 35; its value is ", mn1
             DISPLAY "hr2 should be 7; its value is ", hr2
             DISPLAY "mn2 should be 35; its value is ", mn2
             if (id2  NOT =  1  OR  hr1  NOT =  7  OR  mn1  NOT =  35)
             then
               MOVE 0 TO flag
             END-IF
             if (hr2  NOT =  7  OR  mn2  NOT =  35) then
               MOVE 0 TO flag
             END-IF

      *select the number of distinct vals for TIME STAMP minute 

      *initialise host variables 

             DISPLAY "INSERT INTO ET (col5)"
             DISPLAY "SELECT EXTRACT (TIMEZONE_MINUTE FROM TS2) AS AA"
             DISPLAY "FROM TTIME2;"
             EXEC SQL INSERT INTO ET (col5)  
               SELECT TIMEZONE_MINUTE AS AA
               FROM TTIME2 END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             COMPUTE co = -1
             DISPLAY "SELECT COUNT (DISTINCT COL5) INTO :co"
             DISPLAY "FROM CTS1.ET;"
             EXEC SQL SELECT COUNT (DISTINCT COL5) INTO :co
               FROM CTS1.ET END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY "co should be 4; its value is ", co
             if (co  NOT =  4) then
               MOVE 0 TO flag
             END-IF

             DISPLAY "ROLLBACK WORK;"
             EXEC SQL ROLLBACK WORK END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             if ( flag  =  1 ) then
               DISPLAY " yts807.pco *** pass ***"
               EXEC SQL INSERT INTO CTS1.TESTREPORT
                 VALUES('7564','pass','PCO'END-EXEC
               MOVE SQLCODE TO SQL-COD
             else
               DISPLAY " yts807.pco *** fail ***"
               EXEC SQL INSERT INTO CTS1.TESTREPORT
                 VALUES('7564','fail','PCO'END-EXEC
               MOVE SQLCODE TO SQL-COD
               COMPUTE errcnt = errcnt + 1
             END-IF

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

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


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

      *    ****  Procedures for PERFORM statements

      *Test SQLCODE and SQLSTATE for normal completion. 
       CHCKOK.
             DISPLAY "SQLCODE should be 0; its value is ", SQL-COD
             DISPLAY "SQLSTATE should be 00000; its value is ", SQLSTATE
             PERFORM NOSUBCLASS THRU EXIT-NOSUBCLASS
             if (SQLCODE NOT =  0  OR   NORMSQ NOT = "00000"then
               MOVE 0 TO flag
             END-IF
             if (NORMSQ = "00000"  AND  NORMSQ NOT = SQLSTATE)
             then
               DISPLAY "Valid implementation-defined SQLSTATE accepted."
             END-IF
             .

       NOSUBCLASS.

      *This routine replaces valid implementation-defined       
      *subclasses with 000.  This replacement equates valid     
      *implementation-defined subclasses with the 000 value     
      *expected by the test case; otherwise the test will fail. 
      *After calling NOSUBCLASS, NORMSQ will be tested          
      *                          SQLSTATE will be printed.      

           MOVE SQLSTATE TO NORMSQ

           MOVE 3 TO norm1
      *subclass begins in position 3 of char array NORMSQ 
      *valid subclass begins with 5-9, I-Z, end of ALPNUM table 
           PERFORM VARYING norm2 FROM 14 BY 1 UNTIL norm2 > 36
           if (NORMSQX(norm1)  =  ALPNUM(norm2)) then
             MOVE "0" TO NORMSQX(norm1)
           END-IF
           END-PERFORM
           
      *Quit if NORMSQ is unchanged.  Subclass is not impl.-def. 
      *Changed NORMSQ means implementation-defined subclass,    
      *so proceed to zero it out, if valid (0-9,A-Z)            
           if (NORMSQ   =   SQLSTATE) then
             GO TO EXIT-NOSUBCLASS
           END-IF

           MOVE 4 TO norm1
      *examining position 4 of char array NORMSQ 
      *valid characters are 0-9, A-Z 
           PERFORM VARYING norm2 FROM 1 BY 1 UNTIL norm2 > 36
           if (NORMSQX(norm1)  =  ALPNUM(norm2)) then
             MOVE "0" TO NORMSQX(norm1)
           END-IF
           END-PERFORM
          
           MOVE 5 TO norm1
      *valid characters are 0-9, A-Z 
      *examining position 5 of char array NORMSQ 
           PERFORM VARYING norm2 FROM 1 BY 1 UNTIL norm2 > 36
           if (NORMSQX(norm1)  =  ALPNUM(norm2)) then
             MOVE "0" TO NORMSQX(norm1)
           END-IF
           END-PERFORM
   
      *implementation-defined subclasses are allowed for warnings 
      *(class = 01).  These equate to successful completion 
      *SQLSTATE values of 00000. 
      *Reference SQL-92 4.28 SQL-transactions, paragraph 2 

           if (NORMSQX(1)  =  "0"  AND  NORMSQX(2)  =  "1"then
             MOVE "0" TO NORMSQX(2)
           END-IF
           .

       EXIT-NOSUBCLASS.
           EXIT.

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