* Standard COBOL (file "CDR006.SCO") calling SQL * procedures in file "CDR006.MCO"
**************************************************************** * * COMMENT SECTION * * DATE 1989/04/07 STANDARD 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. * * CDR006.SCO * WRITTEN BY: SUN DAJUN * TRANSLATED AUTOMATICALLY FROM EMBEDDED COBOL BY CHRIS SCHANZLE * * THIS ROUTINE TESTS THE <CHECK> CONSTRAINT. * * REFERENCES * AMERICAN NATIONAL STANDARD database language - SQL * with Integrity Enhancement * * SECTION 6.8 * <check constraint definition>::= * CHECK (<search condition>) ****************************************************************
MOVE"SUN"TO uid CALL"AUTHID"USING uid MOVE"not logged in, not"TO uidx CALL"AUTHCK"USINGSQLCODE uidx MOVESQLCODETO SQL-COD if (uid NOT = uidx) then DISPLAY"ERROR: User " uid " expected." DISPLAY"User " uidx " connected." DISPLAY" " STOPRUN END-IF
MOVE0TO errcnt DISPLAY "SQL Test Suite, V6.0, Module COBOL, cdr006.sco" 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 ******************** BEGIN TEST0316 ******************* *This test case checks the integrity constraint: * EMPNAME IS NOT NULL on STAFF8 * declared in <table constraint definition> * <null predicate> * Using UPDATE to check violation
DISPLAY" TEST0316 " DISPLAY" CHECK CONSTRAINT " DISPLAY" SQL with Integrity Enhancement section
- " 6.5,6.6" DISPLAY" - - - - - - - - - - - - - - - - - - - - - " DISPLAY" " DISPLAY" INSERT INTO STAFF8" DISPLAY" VALUES('E1','Alice',34,'Deale');" DISPLAY" " DISPLAY" UPDATE STAFF8" DISPLAY" SET EMPNAME = NULL" DISPLAY" WHERE EMPNUM = 'E1';" DISPLAY" " DISPLAY" SELECT COUNT(*) INTO:count1" DISPLAY" FROM STAFF8" DISPLAY" WHERE EMPNAME = 'Alice';" MOVE0TO count1 * EXEC SQL DELETE FROM STAFF8; CALL"SUB1"USINGSQLCODE MOVESQLCODETO SQL-COD * EXEC SQL INSERT INTO STAFF8 * VALUES('E1','Alice',34,'Deale') END-EXEC CALL"SUB2"USINGSQLCODE MOVESQLCODETO SQL-COD * EXEC SQL UPDATE STAFF8 * SET EMPNAME = NULL * WHERE EMPNUM = 'E1' END-EXEC CALL"SUB3"USINGSQLCODE MOVESQLCODETO SQL-COD MOVESQLCODETO code1 * EXEC SQL SELECT COUNT(*) INTO:count1 * FROM STAFF8 * WHERE EMPNAME = 'Alice' END-EXEC CALL"SUB4"USINGSQLCODE count1 MOVESQLCODETO SQL-COD DISPLAY" The correct answer is :" DISPLAY" code1 is less than to 0." DISPLAY" count1 is 1" DISPLAY" Your answer is :" DISPLAY" code1 is ", code1 DISPLAY" count1 is ", count1 if (code1 < 0AND count1 = 1) then * EXEC SQL INSERT INTO TESTREPORT * VALUES('0316','pass','MCO') END-EXEC CALL"SUB5"USINGSQLCODE MOVESQLCODETO SQL-COD DISPLAY" *** pass *** " else * EXEC SQL INSERT INTO TESTREPORT * VALUES('0316','fail','MCO') END-EXEC ADD1TO errcnt CALL"SUB6"USINGSQLCODE MOVESQLCODETO SQL-COD DISPLAY" cdr006.sco *** fail *** " END-IF DISPLAY"================================================"
DISPLAY" " * EXEC SQL COMMIT WORK; CALL"SUB7"USINGSQLCODE MOVESQLCODETO SQL-COD **************** END TEST 0316 **********
******************** BEGIN TEST0317 ******************* *test if NOT X IS NULL and X IS NOT NULL has the same *meaning in CHECK condition * NOT EMPNAME IS NULL on STAFF13 * declared in <table constraint definition> * <NULL Predicate> * Using UPDATE to check violation
DISPLAY" TEST0317 " DISPLAY" CHECK CONSTRAINT " DISPLAY" SQL with Integrity Enhancement section
- " 6.5,6.6" DISPLAY" - - - - - - - - - - - - - - - - - - - - - " DISPLAY" " DISPLAY" DELETE FROM STAFF13;" DISPLAY" " DISPLAY" INSERT INTO STAFF13" DISPLAY" VALUES('E1','Alice',36,'Deale');" DISPLAY" " DISPLAY" UPDATE STAFF13" DISPLAY" SET EMPNAME = NULL" DISPLAY" WHERE EMPNUM = 'E1';" DISPLAY" " DISPLAY" SELECT COUNT(*) INTO:count1" DISPLAY" FROM STAFF13" DISPLAY" WHERE EMPNUM = 'E1';" MOVE0TO count1 * EXEC SQL DELETE FROM STAFF13; CALL"SUB8"USINGSQLCODE MOVESQLCODETO SQL-COD * EXEC SQL INSERT INTO STAFF13 * VALUES('E1','Alice',36,'Deale') END-EXEC CALL"SUB9"USINGSQLCODE MOVESQLCODETO SQL-COD * EXEC SQL UPDATE STAFF13 * SET EMPNAME = NULL * WHERE EMPNUM = 'E1' END-EXEC CALL"SUB10"USINGSQLCODE MOVESQLCODETO SQL-COD MOVESQLCODETO code1 * EXEC SQL SELECT COUNT(*) INTO:count1 * FROM STAFF13 * WHERE EMPNAME = 'Alice' END-EXEC CALL"SUB11"USINGSQLCODE count1 MOVESQLCODETO SQL-COD DISPLAY" The correct answer is :" DISPLAY" code1 is less than 0." DISPLAY" count1 is 1" DISPLAY" Your answer is :" DISPLAY" code1 is ", code1 DISPLAY" count1 is ", count1 if (code1 < 0AND count1 = 1) then * EXEC SQL INSERT INTO TESTREPORT * VALUES('0317','pass','MCO') END-EXEC CALL"SUB12"USINGSQLCODE MOVESQLCODETO SQL-COD DISPLAY" *** pass *** " else * EXEC SQL INSERT INTO TESTREPORT * VALUES('0317','fail','MCO') END-EXEC ADD1TO errcnt CALL"SUB13"USINGSQLCODE MOVESQLCODETO SQL-COD DISPLAY" cdr006.sco *** fail *** " END-IF DISPLAY"================================================"
DISPLAY" " * EXEC SQL COMMIT WORK; CALL"SUB14"USINGSQLCODE MOVESQLCODETO SQL-COD **************** END TEST 0317 **********
******************** BEGIN TEST0318 *************** *test LIKE predicate in <table constraints> * CHECK condition * EMPNAME NOT LIKE 'T%' on STAFF9 * declared in <table constraint definition> * <NULL Predicate> * Using UPDATE to check violation
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 und die Messung sind noch experimentell.