* Embedded SQL COBOL ("SDL027.PCO") translated from * Embedded C on Thu May 9 11:33:50 1991.
* EMBEDDED COBOL (file "SDL027.PCO")
**************************************************************** * * COMMENT SECTION * * DATE 1990/09/14 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. * * SDL027.PCO * WRITTEN BY: SUN DAJUN * * THIS ROUTINE TESTS THE SCHEMA DEFINITION LANGUAGE FOR SQL. * * REFERENCES * AMERICAN NATIONAL STANDARD database language - SQL * X3.135-1989 * * SECTION 6.9 View Definition * ****************************************************************
MOVE"HU"TO uid CALL"AUTHID"USING uid MOVE"not logged in, not"TO uidx EXECSQLSELECT
USER INTO :uidx FROM HU.ECCO END-EXEC if (uid NOT = uidx) then DISPLAY"ERROR: User " uid " expected." DISPLAY"User " uidx " connected." DISPLAY" " STOPRUN END-IF
MOVE 0 TO errcnt DISPLAY "SQL Test Suite, V6.0, Embedded COBOL, sdl027.pco" DISPLAY" " DISPLAY "59-byte ID" DISPLAY"TEd Version #" DISPLAY" " * date_time print * ACCEPT TO-DAY FROMDATE ACCEPT THE-TIME FROMTIME DISPLAY"Date run YYMMDD: " TO-DAY " at hhmmssff: " THE-TIME
EXECSQLDELETEFROM TEMP_OBSERV END-EXEC MOVE SQLCODE TO SQL-COD
******************** BEGIN TEST0401 ******************* DISPLAY" TEST0401 " DISPLAY" VIEW with computed columns" DISPLAY" Reference X3.135-89 section 6.9 " DISPLAY" - - - - - - - - - - - - - - - - - - -" DISPLAY" ***" DISPLAY" *** CREATE TABLE TEMP_OBSERV" DISPLAY" *** (YEAR_OBSERV NUMERIC(4)," DISPLAY" *** CITY CHAR(10)," DISPLAY" *** MAX_TEMP NUMERIC(5,2)," DISPLAY" *** MIN_TEMP NUMERIC(5,2))" DISPLAY" ***" DISPLAY" *** CREATE VIEW CELSIUS_OBSERV (CITY,
- " YEAR_OBSERV, MIN_C, MAX_C)" DISPLAY" *** AS SELECT CITY, YEAR_OBSERV, (MIN_TEMP -
- " 32) * 5 / 9," DISPLAY" *** (MAX_TEMP - 32) * 5 / 9" DISPLAY" *** FROM TEMP_OBSERV" DISPLAY" ***" DISPLAY" *** CREATE VIEW MULTI_YEAR_OBSERV (CITY, HIGH,
- " LOW)" DISPLAY" *** AS SELECT CITY, AVG(MAX_TEMP),
- " AVG(MIN_TEMP)" DISPLAY" *** FROM TEMP_OBSERV" DISPLAY" *** GROUP BY CITY" DISPLAY" ***" DISPLAY" *** CREATE VIEW EXTREME_TEMPS (YEAR_OBSERV,
- " HIGH, LOW)" DISPLAY" *** AS SELECT YEAR_OBSERV, MAX(MAX_TEMP),
- " MIN(MIN_TEMP)" DISPLAY" *** FROM TEMP_OBSERV" DISPLAY" *** GROUP BY YEAR" DISPLAY" " MOVE 1 TO flag MOVE 0 TO Hi MOVE 0 TO Lo EXECSQLSELECT CITY, YEAR_OBSERV, MIN_C, MAX_C INTO :CITY1, :YEAR1, :Lo, :Hi FROM CELSIUS_OBSERV
WHERE YEAR_OBSERV = 1984 AND MIN_C > 5 END-EXEC MOVE SQLCODE TO SQL-COD
DISPLAY" The correct answer is approximately:" DISPLAY" CITY1 = Sun City, Year1 = 1984" DISPLAY" Lo = 6.67, Hi = 43.33" DISPLAY" SQLCODE >= 0 "
MOVE Lo TO SHOWNUM MOVE Hi TO SHOWNUM1
DISPLAY" Your answer is:" DISPLAY" CITY1 = ", CITY1 ", YEAR1 = ", YEAR1 DISPLAY" Lo = ", SHOWNUM ", Hi = ", SHOWNUM1 DISPLAY" SQLCODE = ", SQL-COD if (SQLCODE LESS 0) then MOVE 0 TO flag END-IF
if (CITY1 NOT = "Sun City"OR YEAR1 NOT = 1984) then MOVE 0 TO flag END-IF if (Lo < 6.65 OR Lo > 6.68 OR Hi < 43.31 OR Hi
> 43.35) then MOVE 0 TO flag END-IF
EXECSQL DECLARE MYOB CURSOR FORSELECT CITY, HIGH, LOW FROM MULTI_YEAR_OBSERV ORDERBY CITY ASC END-EXEC
EXECSQLOPEN MYOB END-EXEC MOVE SQLCODE TO SQL-COD
EXECSQL FETCH MYOB INTO
:CITY1,:Hi, :Lo END-EXEC MOVE SQLCODE TO SQL-COD
EXECSQLCLOSE MYOB END-EXEC MOVE SQLCODE TO SQL-COD
DISPLAY" The correct answer is approximately:" DISPLAY" Hi = 99.5, Lo = 3.5"
MOVE Hi TO SHOWNUM1 MOVE Lo TO SHOWNUM
DISPLAY" Your answer is:" DISPLAY" Hi = ", SHOWNUM1 ", Lo = ", SHOWNUM
if (Hi < 99.3 OR Hi > 99.7 OR Lo > 3.7 OR Lo <
3.3) then MOVE 0 TO flag END-IF
EXECSQL DECLARE ET CURSOR FORSELECT HIGH, YEAR_OBSERV,LOW FROM EXTREME_TEMPS ORDERBY YEAR_OBSERV DESC END-EXEC
EXECSQLOPEN ET END-EXEC MOVE SQLCODE TO SQL-COD EXECSQL FETCH ET INTO :MAX1, :YEAR1,:MIN1 END-EXEC MOVE SQLCODE TO SQL-COD EXECSQLCLOSE ET END-EXEC MOVE SQLCODE TO SQL-COD
EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD ******************** END TEST0401 ********************
******************** BEGIN TEST0391 ******************* DISPLAY" TEST0391 " DISPLAY" Correlation names used in self-join of view" DISPLAY" Reference X3.135-89 section 6.9 " DISPLAY" - - - - - - - - - - - - - - - - - - -" DISPLAY" " MOVE 1 TO flag MOVE 0 TO Hi MOVE 0 TO Hi2 MOVE"NV"TO CITY1 EXECSQL DECLARE THERMO CURSOR FOR SELECT X.CITY, X.MAX_C, Y.MAX_C,
(X.MAX_C + Y.MAX_C) / 2 FROM CELSIUS_OBSERV X, CELSIUS_OBSERV Y
WHERE X.YEAR_OBSERV = 1984 AND
Y.YEAR_OBSERV = 1985 AND
X.CITY = Y.CITY ORDERBY 4 DESC END-EXEC
EXECSQLOPEN THERMO END-EXEC MOVE SQLCODE TO SQL-COD EXECSQL FETCH THERMO INTO :CITY1, :Hi, :Hi2, :AVGHi END-EXEC MOVE SQLCODE TO SQL-COD
DISPLAY" The correct answer is approximately:" DISPLAY" CITY1 = Sun City, AVGHi = 41.945" DISPLAY" 1984 Hi = 43.33, 1985 Hi = 40.56" DISPLAY" SQLCODE >= 0 "
MOVE Hi TO SHOWNUM MOVE Hi2 TO SHOWNUM1 MOVE AVGHi TO SHOWNUM2
DISPLAY" Your answer is:" DISPLAY" CITY1 = ", CITY1 ", AVGHi = ", SHOWNUM2 DISPLAY" 1984 Hi = ", SHOWNUM ", 1985 Hi = ", SHOWNUM1 DISPLAY" SQLCODE = ", SQL-COD if (SQLCODE LESS 0) then MOVE 0 TO flag END-IF
if (CITY1 NOT = "Sun City"OR AVGHi > 41.96 OR
AVGHi < 41.93) then MOVE 0 TO flag END-IF if (Hi2 < 40.54 OR Hi2 > 40.57 OR Hi < 43.31 OR
Hi > 43.35) then MOVE 0 TO flag END-IF
if ( flag = 1 ) then DISPLAY" *** pass *** " EXECSQLINSERTINTO TESTREPORT
VALUES('0391','pass','PCO') END-EXEC MOVE SQLCODE TO SQL-COD else DISPLAY" sdl027.pco *** fail *** " EXECSQLINSERTINTO TESTREPORT
VALUES('0391','fail','PCO') END-EXEC ADD 1 TO errcnt MOVE SQLCODE TO SQL-COD END-IF
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.