**************************************************************** * * COMMENT SECTION * * DATE 1992/06/16 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. * * SDL033.PCO * WRITTEN BY: DAVID W. FLATER * * THIS ROUTINE TESTS THE SCHEMA DEFINITION LANGUAGE FOR SQL. * * REFERENCES * ANSI SQL-1992 * 11.36 <grant statement> * ****************************************************************
*Part one: make sure we can do everything to the view.
DISPLAY"DELETE FROM FLATER.VS1 WHERE C2 = 1;" DISPLAY"SELECT COUNT(*) FROM FLATER.VS1;" EXECSQLDELETEFROM FLATER.VS1 WHERE C2 = 1 END-EXEC MOVE SQLCODE TO SQL-COD MOVE SQLCODE TO ii COMPUTE cc1 = -1 EXECSQLSELECTCOUNT(*) INTO :cc1 FROM FLATER.VS1 END-EXEC MOVE SQLCODE TO SQL-COD MOVE SQLCODE TO i DISPLAY"SQLCODE should be 0, 0; its value is ", ii ", ", i DISPLAY"COUNT should be 1; its value is ", cc1
if (ii NOT = 0 OR cc1 NOT = 1 OR i NOT = 0) then MOVE 0 TO flag END-IF
DISPLAY"INSERT INTO FLATER.VS1 VALUES (0,7);" EXECSQLINSERTINTO FLATER.VS1 VALUES (0,7) END-EXEC MOVE SQLCODE TO SQL-COD MOVE SQLCODE TO ii DISPLAY"SQLCODE should be 0; its value is ", ii
if (ii NOT = 0) then MOVE 0 TO flag END-IF
DISPLAY"UPDATE FLATER.VS1 SET C2 = 8 WHERE C2 = 7;" EXECSQL UPDATE FLATER.VS1 SET C2 = 8
WHERE C2 = 7 END-EXEC MOVE SQLCODE TO SQL-COD MOVE SQLCODE TO ii DISPLAY"SQLCODE should be 0; its value is ", ii
if (ii NOT = 0) then MOVE 0 TO flag END-IF
DISPLAY"SELECT C1, C2 INTO :cc1, :cc2 FROM FLATER.VS1" DISPLAY" WHERE C2 = 0;" COMPUTE cc1 = -1 COMPUTE cc2 = -1 EXECSQLSELECT C1, C2 INTO :cc1, :cc2 FROM FLATER.VS1
WHERE C2 = 0 END-EXEC MOVE SQLCODE TO SQL-COD MOVE SQLCODE TO ii DISPLAY"SQLCODE should be 0; its value is ", ii DISPLAY"cc1 should be 0; its value is ", cc1 DISPLAY"cc2 should be 0; its value is ", cc2
if (ii NOT = 0 OR cc1 NOT = 0 OR cc2 NOT = 0) then MOVE 0 TO flag END-IF
EXECSQL ROLLBACK WORK END-EXEC MOVE SQLCODE TO SQL-COD
*Part two: make sure we can't do anything to the table.
DISPLAY"DELETE FROM FLATER.BASE_VS1;" EXECSQLDELETEFROM FLATER.BASE_VS1 END-EXEC MOVE SQLCODE TO SQL-COD MOVE SQLCODE TO ii DISPLAY"SQLCODE should be < 0; its value is ", ii
if (ii NOT < 0) then MOVE 0 TO flag END-IF
DISPLAY"SELECT COUNT(*) FROM FLATER.VS1;" COMPUTE tmpcnt = -1 EXECSQLSELECTCOUNT(*) INTO :tmpcnt FROM FLATER.VS1 END-EXEC MOVE SQLCODE TO SQL-COD MOVE SQLCODE TO ii DISPLAY"SQLCODE should be 0; its value is ", ii DISPLAY"COUNT should be 2; its value is ", tmpcnt
if (ii NOT = 0 OR tmpcnt NOT = 2) then MOVE 0 TO flag END-IF
DISPLAY"INSERT INTO FLATER.BASE_VS1 VALUES (0,7);" EXECSQLINSERTINTO FLATER.BASE_VS1 VALUES (0,7) END-EXEC MOVE SQLCODE TO SQL-COD MOVE SQLCODE TO ii DISPLAY"SQLCODE should be < 0; its value is ", ii
if (ii NOT < 0) then MOVE 0 TO flag END-IF
DISPLAY"SELECT COUNT(*) FROM FLATER.VS1;" COMPUTE tmpcnt = -1 EXECSQLSELECTCOUNT(*) INTO :tmpcnt FROM FLATER.VS1 END-EXEC MOVE SQLCODE TO SQL-COD MOVE SQLCODE TO ii DISPLAY"SQLCODE should be 0; its value is ", ii DISPLAY"COUNT should be 2; its value is ", tmpcnt
if (ii NOT = 0 OR tmpcnt NOT = 2) then MOVE 0 TO flag END-IF
DISPLAY"UPDATE FLATER.BASE_VS1 SET C2 = 1;" EXECSQL UPDATE FLATER.BASE_VS1 SET C2 = 1 END-EXEC MOVE SQLCODE TO SQL-COD MOVE SQLCODE TO ii DISPLAY"SQLCODE should be < 0; its value is ", ii
if (ii NOT < 0) then MOVE 0 TO flag END-IF
DISPLAY"SELECT COUNT(*) FROM FLATER.VS1" DISPLAY"WHERE C2 = 1;" COMPUTE tmpcnt = -1 EXECSQLSELECTCOUNT(*) INTO :tmpcnt FROM FLATER.VS1 WHERE C2 = 1 END-EXEC MOVE SQLCODE TO SQL-COD MOVE SQLCODE TO ii DISPLAY"SQLCODE should be 0; its value is ", ii DISPLAY"COUNT should be 1; its value is ", tmpcnt
if (ii NOT = 0 OR tmpcnt NOT = 1) then MOVE 0 TO flag END-IF
COMPUTE cc1 = -1 DISPLAY"SELECT COUNT(*) FROM FLATER.BASE_VS1;" EXECSQLSELECTCOUNT(*) INTO :cc1 FROM FLATER.BASE_VS1 END-EXEC MOVE SQLCODE TO SQL-COD MOVE SQLCODE TO ii DISPLAY"SQLCODE should be < 0; its value is ", ii DISPLAY"COUNT should NOT be 4; its value is ", cc1
if (ii NOT < 0 OR cc1 = 4) then MOVE 0 TO flag END-IF
EXECSQL ROLLBACK WORK END-EXEC MOVE SQLCODE TO SQL-COD
if ( flag = 1 ) then DISPLAY" *** pass *** " EXECSQLINSERTINTO HU.TESTREPORT
VALUES('0473','pass','PCO') END-EXEC MOVE SQLCODE TO SQL-COD else DISPLAY" sdl033.pco *** fail *** " EXECSQLINSERTINTO HU.TESTREPORT
VALUES('0473','fail','PCO') END-EXEC MOVE SQLCODE TO SQL-COD COMPUTE errcnt = errcnt + 1 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.