* Standard COBOL (file "CDR001.SCO") calling SQL * procedures in file "CDR001.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. * * CDR001.SCO * WRITTEN BY: SUN DAJUN * TRANSLATED AUTOMATICALLY FROM EMBEDDED COBOL BY CHRIS SCHANZLE * * THIS ROUTINE TESTS THE <DEFAULT CLAUSE> IN COLUMN DEFINI- * TION. * * REFERENCES * AMERICAN NATIONAL STANDARD database language - SQL * with Integrity Enhancement * * SECTION 6.3 * <column definition>::= * <column name><data type> * (<default clause>) * (<column constrait>...) * SECTION 6.4 * <default clause>::= * DEFAULT {<literal>|USER|NULL} * ****************************************************************
MOVE"SUN"TO uid CALL"AUTHID"USING uid MOVE"not logged in, not"TO uidx CALL"AUTHCK"USING SQLCODE uidx MOVE SQLCODE TO SQL-COD 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, Module COBOL, cdr001.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 TEST0300 ******************* *This program tests if the default values of a column in *table can be properly set. The default value of column *EMPNAME is NULL, GRADE 0, CITY ' '
DISPLAY" TEST0300 " DISPLAY" DEFAULT CLAUSE " DISPLAY" SQL with Integrity Enhancement section
- " 6.3,6.4" DISPLAY" - - - - - - - - - - - - - - - - - - - - - " DISPLAY" INSERT INTO STAFF4 (EMPNUM,GRADE)" DISPLAY" VALUES ('E1',40);" DISPLAY" " DISPLAY" INSERT INTO STAFF4 (EMPNUM,EMPNAME)" DISPLAY" VALUES ('E2','HUFFMAN');" DISPLAY" " DISPLAY" SELECT EMPNAME INTO :ename FROM STAFF4" DISPLAY" WHERE GRADE=0;" DISPLAY" " DISPLAY" SELECT GRADE INTO :egrd FROM STAFF4" DISPLAY" WHERE (EMPNAME IS NULL)" DISPLAY" AND CITY = ' ';"
* EXEC SQL DELETE FROM STAFF4; CALL"SUB1"USING SQLCODE MOVE SQLCODE TO SQL-COD
* EXEC SQL INSERT INTO STAFF4 (EMPNUM,GRADE) * VALUES ('E1',40) END-EXEC CALL"SUB2"USING SQLCODE MOVE SQLCODE TO SQL-COD
* EXEC SQL INSERT INTO STAFF4 (EMPNUM,EMPNAME) * VALUES ('E2','HUFFMAN') END-EXEC CALL"SUB3"USING SQLCODE MOVE SQLCODE TO SQL-COD
* EXEC SQL SELECT EMPNAME INTO :ename FROM STAFF4 * WHERE GRADE=0 END-EXEC CALL"SUB4"USING SQLCODE ename MOVE SQLCODE TO SQL-COD
* EXEC SQL SELECT GRADE INTO :egrd FROM STAFF4 * WHERE (EMPNAME IS NULL) * AND CITY = ' ' END-EXEC CALL"SUB5"USING SQLCODE egrd MOVE SQLCODE TO SQL-COD DISPLAY"The correct result is :" DISPLAY" EMPNUM=HUFFMAN GRADE=40 " DISPLAY"Your answer is :" DISPLAY" EMPNUM=", ename " GRADE=", egrd " " if ( (ename = "HUFFMAN") AND (egrd = 40)) then * EXEC SQL INSERT INTO TESTREPORT * VALUES('0300','pass','MCO') END-EXEC CALL"SUB6"USING SQLCODE MOVE SQLCODE TO SQL-COD DISPLAY" *** pass *** " else * EXEC SQL INSERT INTO TESTREPORT * VALUES('0300','fail','MCO') END-EXEC ADD 1 TO errcnt CALL"SUB7"USING SQLCODE MOVE SQLCODE TO SQL-COD DISPLAY" cdr001.sco *** fail *** " END-IF DISPLAY"================================================"
DISPLAY" " * EXEC SQL COMMIT WORK; CALL"SUB8"USING SQLCODE MOVE SQLCODE TO SQL-COD ********** END TEST0300 **************
******************** BEGIN TEST0301 ******************* *This program tests if the default values of a column in *table are properly set.General rule 1.c
* EXEC SQL DELETE FROM STAFF14; CALL"SUB9"USING SQLCODE MOVE SQLCODE TO SQL-COD
* EXEC SQL INSERT INTO STAFF14 (EMPNUM,GRADE) * VALUES ('E1',40) END-EXEC CALL"SUB10"USING SQLCODE MOVE SQLCODE TO SQL-COD
* EXEC SQL SELECT EMPNAME INTO :ename FROM STAFF14 * WHERE EMPNAME = 'SUN' END-EXEC CALL"SUB11"USING SQLCODE ename MOVE SQLCODE TO SQL-COD
DISPLAY"The correct result is :" DISPLAY" EMPNUM=SUN " DISPLAY"Your answer is :" DISPLAY" EMPNUM=", ename " " if ( (ename = "SUN")) then * EXEC SQL INSERT INTO TESTREPORT * VALUES('0301','pass','MCO') END-EXEC CALL"SUB12"USING SQLCODE MOVE SQLCODE TO SQL-COD DISPLAY" *** pass *** " else * EXEC SQL INSERT INTO TESTREPORT * VALUES('0301','fail','MCO') END-EXEC ADD 1 TO errcnt CALL"SUB13"USING SQLCODE MOVE SQLCODE TO SQL-COD DISPLAY" cdr001.sco *** fail *** " END-IF DISPLAY"================================================"
DISPLAY" " * EXEC SQL COMMIT WORK; CALL"SUB14"USING SQLCODE MOVE SQLCODE TO SQL-COD ********** END TEST0301 **************
******************** BEGIN TEST0377 ******************* *This program tests if the default values of a column in *table are properly set.General rule 1.c
DISPLAY" TEST0377 " DISPLAY" DEFAULT CLAUSE " DISPLAY" SQL with Integrity Enhancement section
- " 6.3,6.4" DISPLAY" - - - - - - - - - - - - - - - - - - - - - " DISPLAY" " DISPLAY" INSERT INTO STAFF16 (EMPNUM,GRADE)" DISPLAY" VALUES ('E1',150);" DISPLAY" " DISPLAY" INSERT INTO STAFF16 (EMPNUM,GRADE)" DISPLAY" VALUES ('E1',150);" DISPLAY" " DISPLAY" SELECT COUNT(*) INTO :count1 FROM STAFF16" DISPLAY" WHERE EMPNAME IS NULL;" DISPLAY" " DISPLAY" INSERT INTO STAFF16 (EMPNUM,EMPNAME,GRADE)" DISPLAY" VALUES ('E2','Tom',100);" DISPLAY" " DISPLAY" SELECT EMPNAME INTO :ename FROM STAFF16" DISPLAY" WHERE EMPNUM = 'E2';" DISPLAY" " DISPLAY" INSERT INTO STAFF16 (EMPNUM,EMPNAME,GRADE)" DISPLAY" VALUES ('E3','Bill',151);" DISPLAY" " DISPLAY" SELECT GRADE INTO :egrd FROM STAFF16" DISPLAY" WHERE EMPNUM = 'E3';" DISPLAY" " COMPUTE count1 = -1 MOVE 0 TO egrd
* EXEC SQL DELETE FROM STAFF16; CALL"SUB15"USING SQLCODE MOVE SQLCODE TO SQL-COD
* EXEC SQL INSERT INTO STAFF16 (EMPNUM,GRADE) * VALUES ('E1',150) END-EXEC CALL"SUB16"USING SQLCODE MOVE SQLCODE TO SQL-COD
* EXEC SQL INSERT INTO STAFF16 (EMPNUM,GRADE) * VALUES ('E1',150) END-EXEC CALL"SUB16"USING SQLCODE MOVE SQLCODE TO SQL-COD
* EXEC SQL SELECT COUNT(*) INTO :count1 FROM STAFF16 * WHERE EMPNAME IS NULL END-EXEC CALL"SUB17"USING SQLCODE count1 MOVE SQLCODE TO SQL-COD
* EXEC SQL INSERT INTO STAFF16 (EMPNUM,EMPNAME,GRADE) * VALUES ('E2','Tom',100) END-EXEC CALL"SUB18"USING SQLCODE MOVE SQLCODE TO SQL-COD
* EXEC SQL SELECT EMPNAME INTO :ename FROM STAFF16 * WHERE EMPNUM = 'E2' END-EXEC CALL"SUB19"USING SQLCODE ename MOVE SQLCODE TO SQL-COD
* EXEC SQL INSERT INTO STAFF16 (EMPNUM,EMPNAME,GRADE) * VALUES ('E3','Bill',151) END-EXEC CALL"SUB20"USING SQLCODE MOVE SQLCODE TO SQL-COD
MOVE SQLCODE TO code1
* EXEC SQL SELECT GRADE INTO :egrd FROM STAFF16 * WHERE EMPNUM = 'E3' END-EXEC CALL"SUB21"USING SQLCODE egrd MOVE SQLCODE TO SQL-COD
DISPLAY"The correct result is :" DISPLAY" count1=1 " DISPLAY" ename = Tom " DISPLAY" egrd = 0" DISPLAY" code1 < 0 " DISPLAY"Your answer is :" DISPLAY" count1=", count1 " " DISPLAY" ename = ", ename " " DISPLAY" egrd = ", egrd " " DISPLAY" code1 = ", code1 " " if (count1 = 1 AND ename = "Tom"AND code1 < 0) then * EXEC SQL INSERT INTO TESTREPORT * VALUES('0377','pass','MCO') END-EXEC CALL"SUB22"USING SQLCODE MOVE SQLCODE TO SQL-COD DISPLAY" *** pass *** " else * EXEC SQL INSERT INTO TESTREPORT * VALUES('0377','fail','MCO') END-EXEC ADD 1 TO errcnt CALL"SUB23"USING SQLCODE MOVE SQLCODE TO SQL-COD DISPLAY" cdr001.sco *** fail *** " END-IF DISPLAY"================================================"
DISPLAY" " * EXEC SQL COMMIT WORK; CALL"SUB24"USING SQLCODE MOVE SQLCODE TO SQL-COD ********** END TEST0377 **************
**** TESTER MAY CHOOSE TO INSERT CODE FOR errcnt > 0 STOPRUN.
* **** Procedures for PERFORM statements
¤ Dauer der Verarbeitung: 0.3 Sekunden
(vorverarbeitet)
¤
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.