* Standard COBOL (file "DML076.SCO") calling SQL * procedures in file "DML076.MCO".
* STANDARD COBOL (file "DML076.SCO")
********************************************************* * * COMMENT SECTION * * DATE 1991/06/18 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. * * DML076.SCO * WRITTEN BY: YOLANDA HERD * * THIS ROUTINE TESTS NULLS AND CURSORS * * REFERENCES * AMERICAN NATIONAL STANDARD database language - SQL * X3.135-1989 * * SECTION 4.2 * DATA TYPES, DEFINITION OF NULL * SECTION 8.10, GR 8 * *********************************************************
********************** END TEST0435 *********************
********************** BEGIN TEST0436 ********************* *This program tests the NULL values for various *SQL Data Types
DISPLAY" TEST0436 " DISPLAY" NULL values for various SQL Data Types
- " " DISPLAY" reference X3.135-1989 section 4.2, 8.10 GR 8
- " " DISPLAY"
- " -------------------------------------------------"
MOVE"X"TO CHARTP MOVE 0 TO indic1 MOVE 0 TO indic2 MOVE 0 TO indic3 MOVE 0 TO indic4 MOVE 0 TO indic5 MOVE 0 TO indic6 MOVE 0 TO indic7 MOVE 0 TO indic8 MOVE 0 TO count1 MOVE 0 TO count2 MOVE 0 TO count3 MOVE 99999 TO INTTP MOVE 99 TO SMLTP MOVE 999 TO NUMTP MOVE 999 TO DECTP
* EXEC SQL INSERT INTO BB VALUES(NULL); CALL"SUB13"USING SQLCODE MOVE SQLCODE TO SQL-COD * EXEC SQL INSERT INTO EE VALUES(NULL); CALL"SUB14"USING SQLCODE MOVE SQLCODE TO SQL-COD * EXEC SQL INSERT INTO GG VALUES(NULL); CALL"SUB15"USING SQLCODE MOVE SQLCODE TO SQL-COD * EXEC SQL INSERT INTO HH VALUES(NULL); CALL"SUB16"USING SQLCODE MOVE SQLCODE TO SQL-COD * EXEC SQL INSERT INTO II VALUES(NULL); CALL"SUB17"USING SQLCODE MOVE SQLCODE TO SQL-COD * EXEC SQL INSERT INTO JJ VALUES(NULL); CALL"SUB18"USING SQLCODE MOVE SQLCODE TO SQL-COD * EXEC SQL INSERT INTO MM VALUES(NULL); CALL"SUB19"USING SQLCODE MOVE SQLCODE TO SQL-COD * EXEC SQL INSERT INTO SS VALUES(NULL); CALL"SUB20"USING SQLCODE MOVE SQLCODE TO SQL-COD
* EXEC SQL SELECT CHARTEST INTO :CHARTP:indic1 * FROM BB; CALL"SUB21"USING SQLCODE CHARTP indic1 MOVE SQLCODE TO SQL-COD MOVE indic1 TO DISP1
* EXEC SQL SELECT INTTEST INTO :INTTP:indic2 * FROM EE; CALL"SUB22"USING SQLCODE INTTP indic2 MOVE SQLCODE TO SQL-COD MOVE indic2 TO DISP2
* EXEC SQL SELECT COUNT(*) INTO :count1 * FROM GG * WHERE REALTEST IS NULL; CALL"SUB24"USING SQLCODE count1 MOVE SQLCODE TO SQL-COD
* EXEC SQL SELECT SMALLTEST INTO :SMLTP:indic4 * FROM HH; CALL"SUB25"USING SQLCODE SMLTP indic4 MOVE SQLCODE TO SQL-COD MOVE indic4 TO DISP4
* EXEC SQL SELECT COUNT(*) INTO :count2 * FROM II * WHERE DOUBLETEST IS NULL; CALL"SUB27"USING SQLCODE count2 MOVE SQLCODE TO SQL-COD
* EXEC SQL SELECT COUNT(*) INTO :count3 * FROM JJ * WHERE FLOATTEST IS NULL; CALL"SUB29"USING SQLCODE count3 MOVE SQLCODE TO SQL-COD
* EXEC SQL SELECT NUMTEST INTO :NUMTP:indic7 * FROM MM; CALL"SUB30"USING SQLCODE NUMTP indic7 MOVE SQLCODE TO SQL-COD MOVE indic7 TO DISP7
* EXEC SQL SELECT NUMTEST INTO :DECTP:indic8 * FROM SS; CALL"SUB31"USING SQLCODE DECTP indic8 MOVE SQLCODE TO SQL-COD MOVE indic8 TO DISP8
********************** END TEST0436 *********************
********************** BEGIN TEST0437 *******************
DISPLAY" TEST0437 " DISPLAY" NULL values for various host variables
- " " DISPLAY" reference X3.135-1989 section 4.2, 8.7, 5.6 GR
- " 1 or 2 " DISPLAY"
- " -------------------------------------------------- "
MOVE -1 TO indic1 MOVE -1 TO indic2 MOVE -1 TO indic3 MOVE 0 TO indic4 MOVE 0 TO indic5 MOVE 0 TO indic6 MOVE 0 TO count1 MOVE 0 TO count2 MOVE 0 TO count3 MOVE 0 TO count4
MOVE"2"TO CHARTP MOVE -23 TO DECTP MOVE 99 TO REALTP-SUB * EXEC SQL INSERT INTO BB VALUES(:CHARTP :indic1); CALL"SUB36"USING SQLCODE CHARTP indic1 MOVE SQLCODE TO SQL-COD * EXEC SQL INSERT INTO SS VALUES(:DECTP :indic2); CALL"SUB37"USING SQLCODE DECTP indic2 MOVE SQLCODE TO SQL-COD * EXEC SQL INSERT INTO GG VALUES(:REALTP-SUB :indic3); CALL"SUB38"USING SQLCODE REALTP-SUB indic3 MOVE SQLCODE TO SQL-COD
MOVE"X"TO CHARTP MOVE 23 TO DECTP MOVE 45 TO REALTP-SUB * EXEC SQL INSERT INTO BB VALUES(:CHARTP :indic4); CALL"SUB39"USING SQLCODE CHARTP indic4 MOVE SQLCODE TO SQL-COD * EXEC SQL INSERT INTO SS VALUES(:DECTP :indic5); CALL"SUB40"USING SQLCODE DECTP indic5 MOVE SQLCODE TO SQL-COD * EXEC SQL INSERT INTO GG VALUES(:REALTP-SUB :indic6); CALL"SUB41"USING SQLCODE REALTP-SUB indic6 MOVE SQLCODE TO SQL-COD
* EXEC SQL INSERT INTO DD SELECT * FROM BB; CALL"SUB42"USING SQLCODE MOVE SQLCODE TO SQL-COD * EXEC SQL INSERT INTO PP SELECT NUMTEST FROM SS; CALL"SUB43"USING SQLCODE MOVE SQLCODE TO SQL-COD * EXEC SQL INSERT INTO JJ SELECT REALTEST FROM GG * WHERE REALTEST IS NULL OR REALTEST > 0; CALL"SUB44"USING SQLCODE MOVE SQLCODE TO SQL-COD
* EXEC SQL SELECT CHARTEST INTO :CHARTP * FROM DD * WHERE CHARTEST IS NOT NULL; CALL"SUB45"USING SQLCODE CHARTP MOVE SQLCODE TO SQL-COD
* EXEC SQL SELECT NUMTEST INTO :DECTP * FROM PP * WHERE NUMTEST IS NOT NULL; CALL"SUB46"USING SQLCODE DECTP MOVE SQLCODE TO SQL-COD
* EXEC SQL SELECT COUNT(*) INTO :REALTP-SUB * FROM JJ * WHERE FLOATTEST BETWEEN 44 AND 46; CALL"SUB47"USING SQLCODE REALTP-SUB MOVE SQLCODE TO SQL-COD
* EXEC SQL SELECT COUNT(*) INTO :count1 * FROM JJ * WHERE FLOATTEST IS NOT NULL; CALL"SUB48"USING SQLCODE count1 MOVE SQLCODE TO SQL-COD
* EXEC SQL SELECT COUNT(*) INTO :count2 * FROM DD * WHERE CHARTEST IS NULL; CALL"SUB49"USING SQLCODE count2 MOVE SQLCODE TO SQL-COD
* EXEC SQL SELECT COUNT(*) INTO :count3 * FROM PP * WHERE NUMTEST IS NULL; CALL"SUB50"USING SQLCODE count3 MOVE SQLCODE TO SQL-COD
* EXEC SQL SELECT COUNT(*) INTO :count4 * FROM JJ * WHERE FLOATTEST IS NULL; CALL"SUB51"USING SQLCODE count4 MOVE SQLCODE TO SQL-COD
DISPLAY" " ********************** END TEST0437 *********************
********************** BEGIN TEST0441 *******************
DISPLAY" TEST0441 " DISPLAY" NULL values for various predicates" DISPLAY" reference 5.6 GR 1 or 2" DISPLAY "----------------------------------------------------"
MOVE 0 TO count1 MOVE -1 TO count2 MOVE 0 TO count3 MOVE -1 TO count4 MOVE 0 TO count5 MOVE -1 TO count6 MOVE 0 TO count7 MOVE -1 TO count8 MOVE 0 TO count9 MOVE -1 TO countx MOVE 0 TO indic1 MOVE -1 TO indic2 MOVE 0 TO indic3 MOVE -1 TO indic4 MOVE 0 TO indic5 MOVE -1 TO indic6 MOVE 0 TO indic7 MOVE -1 TO indic8 MOVE 0 TO indic9 MOVE -1 TO indicx
MOVE 11 TO DECTP MOVE"V___na%"TO CITY1 MOVE"S_P%"TO NME1
* EXEC SQL SELECT COUNT(*) INTO :count1 * FROM STAFF * WHERE GRADE BETWEEN 9 AND :DECTP :indic1; CALL"SUB55"USING SQLCODE count1 DECTP indic1 MOVE SQLCODE TO SQL-COD
* EXEC SQL SELECT COUNT(*) INTO :count2 * FROM STAFF * WHERE GRADE BETWEEN 9 AND :DECTP :indic2; CALL"SUB56"USING SQLCODE count2 DECTP indic2 MOVE SQLCODE TO SQL-COD
MOVE 39999 TO DECTP
* EXEC SQL SELECT COUNT(*) INTO :count3 * FROM PROJ * WHERE BUDGET NOT BETWEEN 9999 AND :DECTP :indic3; CALL"SUB57"USING SQLCODE count3 DECTP indic3 MOVE SQLCODE TO SQL-COD
* EXEC SQL SELECT COUNT(*) INTO :count4 * FROM PROJ * WHERE BUDGET NOT BETWEEN 999 AND :DECTP :indic4; CALL"SUB58"USING SQLCODE count4 DECTP indic4 MOVE SQLCODE TO SQL-COD
* EXEC SQL SELECT COUNT(*) INTO :count5 * FROM PROJ * WHERE PNAME LIKE :NME1 :indic5; CALL"SUB59"USING SQLCODE count5 NME1 indic5 MOVE SQLCODE TO SQL-COD
* EXEC SQL SELECT COUNT(*) INTO :count6 * FROM PROJ * WHERE PNAME LIKE :NME1 :indic6; CALL"SUB60"USING SQLCODE count6 NME1 indic6 MOVE SQLCODE TO SQL-COD
* EXEC SQL SELECT COUNT(*) INTO :count7 * FROM STAFF * WHERE CITY NOT LIKE :CITY1 :indic7; CALL"SUB61"USING SQLCODE count7 CITY1 indic7 MOVE SQLCODE TO SQL-COD
* EXEC SQL SELECT COUNT(*) INTO :count8 * FROM STAFF * WHERE CITY NOT LIKE :CITY1 :indic8; CALL"SUB62"USING SQLCODE count8 CITY1 indic8 MOVE SQLCODE TO SQL-COD
MOVE 20 TO DECTP
* EXEC SQL SELECT COUNT(*) INTO :count9 * FROM WORKS * WHERE HOURS <> :DECTP :indic9; CALL"SUB63"USING SQLCODE count9 DECTP indic9 MOVE SQLCODE TO SQL-COD
* EXEC SQL SELECT COUNT(*) INTO :countx * FROM WORKS * WHERE HOURS <> :DECTP :indicx; CALL"SUB64"USING SQLCODE countx DECTP indicx MOVE SQLCODE TO SQL-COD