**************************************************************** * * COMMENT SECTION * * DATE 1993/11/10 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. * * DML112.PCO * WRITTEN BY: David W. Flater * TRANSLATED AUTOMATICALLY FROM EMBEDDED C BY CHRIS SCHANZLE * * This routine tests NULLs with DATETIME data types and in * outer joins, datetimes in a <default clause>, TRIM, and also * some schema manipulation statements. * This is the non-dynamic version of DML113.PC. * * REFERENCES * FIPS PUB 127-2 14.1 Transitional SQL * ANSI SQL-1992 * ****************************************************************
MOVE"FLATER "TO uid CALL"AUTHID"USING uid MOVE"not logged in, not"TO uidx EXECSQLSELECT USER INTO :uidx FROM HU.ECCO END-EXEC MOVE SQLCODE TO SQL-COD EXECSQL ROLLBACK WORK END-EXEC MOVE SQLCODE TO SQL-COD if (uid NOT = uidx) then DISPLAY"ERROR: User ", uid " expected. User ", uidx "
- " connected" STOPRUN END-IF MOVE 0 TO errcnt
DISPLAY "SQL Test Suite, V6.0, Embedded COBOL, dml112.pco" DISPLAY "59-byte ID" DISPLAY"TEd Version #" *date_time print ACCEPT TO-DAY FROMDATE ACCEPT THE-TIME FROMTIME DISPLAY"Date run YYMMDD: " TO-DAY " at hhmmssff: " THE-TIME
******************** BEGIN TEST0621 ******************* MOVE 1 TO flag
DISPLAY"COMMIT WORK;" EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY" "
*Do this with an outer join in a combined test later. *For FSQL, use SELECT DISTINCT (all that stuff)
DISPLAY"CREATE VIEW INVENTORY AS" DISPLAY" SELECT MERCH.ITEMKEY AS ITEMKEY, ORDERED," DISPLAY" MWAIT, DWAIT FROM MERCH, TURNAROUND COR1 WHERE
- " RDATE" DISPLAY" IS NOT NULL AND SOLD IS NULL AND" DISPLAY" MERCH.ITEMKEY = COR1.ITEMKEY" DISPLAY" UNION" DISPLAY" SELECT ITEMKEY, ORDERED," DISPLAY" CAST (NULL AS INTERVAL MONTH)," DISPLAY" CAST (NULL AS INTERVAL DAY TO HOUR) FROM" DISPLAY" MERCH WHERE RDATE IS NOT NULL AND SOLD IS NULL" DISPLAY" AND MERCH.ITEMKEY NOT IN (SELECT ITEMKEY" DISPLAY" FROM TURNAROUND);"
EXECSQL CREATE VIEW INVENTORY AS SELECT MERCH.ITEMKEY AS ITEMKEY, ORDERED,
MWAIT, DWAIT FROM MERCH, TURNAROUND COR1 WHERE RDATE ISNOTNULLAND SOLD ISNULLAND
MERCH.ITEMKEY = COR1.ITEMKEY
UNION SELECT ITEMKEY, ORDERED,
CAST (NULL2 AS DATE),
CAST (NULL2 AS DATE) FROM
MERCH WHERE RDATE ISNOTNULLAND SOLD ISNULL AND MERCH.ITEMKEY NOTIN (SELECT ITEMKEY FROM TURNAROUND) END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY" "
DISPLAY"COMMIT WORK;" EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY" "
*Something ordered but not received
DISPLAY"INSERT INTO MERCH VALUES (" DISPLAY" 0, DATE '1993-11-23'," DISPLAY" NULL, NULL, NULL);"
DISPLAY"SELECT COUNT(*) INTO :int1 FROM" DISPLAY" MERCH A, MERCH B WHERE A.SOLD = B.SOLD;"
COMPUTE int1 = -1 EXECSQLSELECTCOUNT(*) INTO :int1 FROM
MERCH A, MERCH B WHERE A.SOLD = B.SOLD END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY"int1 should be 1; its value is ", int1 if (int1 NOT = 1) then MOVE 0 TO flag END-IF
DISPLAY"SELECT COUNT(*) INTO :int1 FROM" DISPLAY" MERCH A, MERCH B WHERE A.RTIME = B.RTIME;"
COMPUTE int1 = -1 EXECSQLSELECTCOUNT(*) INTO :int1 FROM
MERCH A, MERCH B WHERE A.RTIME = B.RTIME END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY"int1 should be 0; its value is ", int1 if (int1 NOT = 0) then MOVE 0 TO flag END-IF
DISPLAY"SELECT COUNT(*) INTO :int1 FROM" DISPLAY" MERCH WHERE RDATE IS NULL;"
COMPUTE int1 = -1 EXECSQLSELECTCOUNT(*) INTO :int1 FROM
MERCH WHERE RDATE ISNULLEND-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY"int1 should be 2; its value is ", int1 if (int1 NOT = 2) then MOVE 0 TO flag END-IF
DISPLAY"SELECT COUNT(*) INTO :int1 FROM" DISPLAY" TURNAROUND WHERE DWAIT IS NOT NULL;"
COMPUTE int1 = -1 EXECSQLSELECTCOUNT(*) INTO :int1 FROM
TURNAROUND WHERE DWAIT ISNOTNULLEND-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY"int1 should be 1; its value is ", int1 if (int1 NOT = 1) then MOVE 0 TO flag END-IF
DISPLAY"SELECT EXTRACT (DAY FROM RDATE) INTO :int1:indic1" DISPLAY" FROM MERCH, TURNAROUND WHERE MERCH.ITEMKEY =" DISPLAY" TURNAROUND.ITEMKEY;"
COMPUTE int1 = -1 MOVE 2 TO indic1 EXECSQLSELECT RDATE INTO :int1:indic1 FROM MERCH, TURNAROUND WHERE MERCH.ITEMKEY =
TURNAROUND.ITEMKEY END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY"indic1 should be -1; its value is ", indic1 if (indic1 NOT = -1) then MOVE 0 TO flag END-IF
DISPLAY"DECLARE C11211 CURSOR FOR" DISPLAY" SELECT ITEMKEY FROM MERCH WHERE SOLD IS NOT
- " NULL;"
EXECSQL DECLARE C11211 CURSOR FOR SELECT ITEMKEY FROM MERCH WHERE SOLD ISNOTNULLEND-EXEC
DISPLAY" "
DISPLAY"OPEN C11211;" EXECSQLOPEN C11211 END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY" "
COMPUTE int1 = -1 DISPLAY"FETCH C11211 INTO :int1;" EXECSQL FETCH C11211 INTO :int1 END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY"int1 should be 2; its value is ", int1 if (int1 NOT = 2) then MOVE 0 TO flag END-IF
*Cursor left open.
DISPLAY"DECLARE C11212 CURSOR FOR" DISPLAY" SELECT EXTRACT (HOUR FROM AVG (DWAIT))" DISPLAY" FROM MERCH, TURNAROUND WHERE" DISPLAY" MERCH.ITEMKEY = TURNAROUND.ITEMKEY OR" DISPLAY" TURNAROUND.ITEMKEY NOT IN" DISPLAY" (SELECT ITEMKEY FROM MERCH);"
EXECSQL DECLARE C11212 CURSOR FOR SELECT AVG (DWAIT) FROM MERCH, TURNAROUND WHERE
MERCH.ITEMKEY = TURNAROUND.ITEMKEY OR
TURNAROUND.ITEMKEY NOTIN
(SELECT ITEMKEY FROM MERCH) END-EXEC
DISPLAY" "
DISPLAY"OPEN C11212;" EXECSQLOPEN C11212 END-EXEC MOVE SQLCODE TO SQL-COD
DISPLAY"SQLCODE should be >= 0; its value is ", SQL-COD if (SQLCODE < 0) then MOVE 0 TO flag END-IF DISPLAY"SQLSTATE can be 00000 or 01003; its value is ",
SQLSTATE PERFORM NOSUBCLASS THRU EXIT-NOSUBCLASS if (NORMSQ NOT = "00000"AND SQLSTATE NOT = "01003") then MOVE 0 TO flag END-IF
*DML083 set the precedent for requiring 01003 on the fetches. *One might argue that it ought to be returned just on the *open and never again. DML083 is under dispute, so status *codes are checked loosely here.
COMPUTE int1 = -1 DISPLAY"FETCH C11212 INTO :int1;" EXECSQL FETCH C11212 INTO :int1 END-EXEC MOVE SQLCODE TO SQL-COD
DISPLAY"SQLCODE should be >= 0; its value is ", SQL-COD if (SQLCODE < 0) then MOVE 0 TO flag END-IF DISPLAY"SQLSTATE can be 00000 or 01003; its value is ",
SQLSTATE PERFORM NOSUBCLASS THRU EXIT-NOSUBCLASS if (NORMSQ NOT = "00000"AND SQLSTATE NOT = "01003") then MOVE 0 TO flag END-IF DISPLAY"int1 should be 0; its value is ", int1 if (int1 NOT = 0) then MOVE 0 TO flag END-IF
DISPLAY"SELECT COUNT(*) INTO :int1" DISPLAY" FROM INVENTORY WHERE MWAIT IS NULL" DISPLAY" AND DWAIT IS NULL;"
COMPUTE int1 = -1 EXECSQLSELECTCOUNT(*) INTO :int1 FROM INVENTORY WHERE MWAIT ISNULL AND DWAIT ISNULLEND-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY"int1 should be 2; its value is ", int1 if (int1 NOT = 2) then MOVE 0 TO flag END-IF
DISPLAY"COMMIT WORK;" EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY" "
DISPLAY"DROP TABLE MERCH CASCADE;" EXECSQL DROP TABLE MERCH CASCADE END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY" "
DISPLAY"COMMIT WORK;" EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY" "
DISPLAY"DROP TABLE TURNAROUND CASCADE;" EXECSQL DROP TABLE TURNAROUND CASCADE END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY" "
DISPLAY"COMMIT WORK;" EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY" "
if ( flag = 1 ) then DISPLAY" *** pass *** " EXECSQLINSERTINTO HU.TESTREPORT
VALUES('0621','pass','PCO') END-EXEC MOVE SQLCODE TO SQL-COD else DISPLAY" dml112.pco *** fail *** " EXECSQLINSERTINTO HU.TESTREPORT
VALUES('0621','fail','PCO') END-EXEC MOVE SQLCODE TO SQL-COD COMPUTE errcnt = errcnt + 1 END-IF
EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD ******************** END TEST0621 ******************** ******************** BEGIN TEST0623 ******************* MOVE 1 TO flag
DISPLAY"COMMIT WORK;" EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY" "
DISPLAY"CREATE VIEW JNULL3 AS" DISPLAY" SELECT C1, D1, D2 FROM JNULL1 LEFT OUTER JOIN
- " JNULL2" DISPLAY" ON C2 = D2;"
EXECSQL CREATE VIEW JNULL3 AS SELECT C1, D1, D2 FROM JNULL1 OUTER JOIN JNULL2 END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY" "
DISPLAY"COMMIT WORK;" EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY" "
DISPLAY"CREATE VIEW JNULL4 AS" DISPLAY" SELECT D1, D2 AS C2 FROM JNULL2;"
EXECSQL CREATE VIEW JNULL4 AS SELECT D1, D2 AS C2 FROM JNULL2 END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY" "
DISPLAY"COMMIT WORK;" EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY" "
DISPLAY"CREATE VIEW JNULL5 AS" DISPLAY" SELECT C1, D1, C2 FROM JNULL1 RIGHT OUTER JOIN
- " JNULL4" DISPLAY" USING (C2);"
EXECSQL CREATE VIEW JNULL5 AS SELECT C1, D1, C2 FROM JNULL1 OUTER JOIN JNULL4 END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY" "
DISPLAY"COMMIT WORK;" EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY" "
DISPLAY"CREATE VIEW JNULL6 AS" DISPLAY" SELECT * FROM JNULL1 LEFT OUTER JOIN JNULL4" DISPLAY" USING (C2);"
EXECSQL CREATE VIEW JNULL6 AS SELECT * FROM JNULL1 OUTER JOIN JNULL4 END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY" "
DISPLAY"COMMIT WORK;" EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY" "
DISPLAY"INSERT INTO JNULL1 VALUES (NULL, NULL);" EXECSQLINSERTINTO JNULL1 VALUES (NULL, NULL) END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY" "
DISPLAY"INSERT INTO JNULL1 VALUES (1, NULL);" EXECSQLINSERTINTO JNULL1 VALUES (1, NULL) END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY" "
DISPLAY"INSERT INTO JNULL1 VALUES (NULL, 1);" EXECSQLINSERTINTO JNULL1 VALUES (NULL, 1) END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY" "
DISPLAY"INSERT INTO JNULL1 VALUES (1, 1);" EXECSQLINSERTINTO JNULL1 VALUES (1, 1) END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY" "
DISPLAY"INSERT INTO JNULL1 VALUES (2, 2);" EXECSQLINSERTINTO JNULL1 VALUES (2, 2) END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY" "
COMPUTE int1 = -1 DISPLAY"SELECT COUNT(*) INTO :int1 FROM JNULL3;" EXECSQLSELECTCOUNT(*) INTO :int1 FROM JNULL3 END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY"int1 should be 5; its value is ", int1 if (int1 NOT = 5) then MOVE 0 TO flag END-IF
COMPUTE int1 = -1 DISPLAY"SELECT COUNT(*) INTO :int1 FROM JNULL3" DISPLAY" WHERE D2 IS NOT NULL OR D1 IS NOT NULL;" EXECSQLSELECTCOUNT(*) INTO :int1 FROM JNULL3
WHERE D2 ISNOTNULLOR D1 ISNOTNULLEND-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY"int1 should be 0; its value is ", int1 if (int1 NOT = 0) then MOVE 0 TO flag END-IF
DISPLAY"SELECT COUNT(*) INTO :int1 FROM JNULL5;"
COMPUTE int1 = -1 EXECSQLSELECTCOUNT(*) INTO :int1 FROM JNULL5 END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY"int1 should be 0; its value is ", int1 if (int1 NOT = 0) then MOVE 0 TO flag END-IF
DISPLAY"SELECT COUNT(*) INTO :int1 FROM" DISPLAY" JNULL6" DISPLAY" WHERE C2 IS NOT NULL;"
EXECSQLSELECTCOUNT(*) INTO :int1 FROM
JNULL6
WHERE C2 ISNOTNULLEND-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY"int1 should be 3; its value is ", int1 if (int1 NOT = 3) then MOVE 0 TO flag END-IF
*Nonempty table
DISPLAY"INSERT INTO JNULL2" DISPLAY" SELECT * FROM JNULL1;"
EXECSQLINSERTINTO JNULL2 SELECT * FROM JNULL1 END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY" "
DISPLAY"UPDATE JNULL2" DISPLAY" SET D2 = 1 WHERE D2 = 2;"
EXECSQL UPDATE JNULL2 SET D2 = 1 WHERE D2 = 2 END-EXEC MOVE SQLCODE TO SQL-COD
COMPUTE int1 = -1 DISPLAY"SELECT COUNT(*) INTO :int1 FROM JNULL3;" EXECSQLSELECTCOUNT(*) INTO :int1 FROM JNULL3 END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY"int1 should be 9; its value is ", int1 if (int1 NOT = 9) then MOVE 0 TO flag END-IF
COMPUTE int1 = -1 DISPLAY"SELECT COUNT(*) INTO :int1" DISPLAY" FROM JNULL3 WHERE C1 IS NULL;"
EXECSQLSELECTCOUNT(*) INTO :int1 FROM JNULL3 WHERE C1 ISNULLEND-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY"int1 should be 4; its value is ", int1 if (int1 NOT = 4) then MOVE 0 TO flag END-IF
DISPLAY"SELECT COUNT(*) INTO :int1" DISPLAY" FROM JNULL3 WHERE D1 IS NULL;"
COMPUTE int1 = -1 EXECSQLSELECTCOUNT(*) INTO :int1 FROM JNULL3 WHERE D1 ISNULLEND-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY"int1 should be 5; its value is ", int1 if (int1 NOT = 5) then MOVE 0 TO flag END-IF
DISPLAY"SELECT COUNT(*) INTO :int1" DISPLAY" FROM JNULL3 WHERE D2 IS NULL;"
COMPUTE int1 = -1 EXECSQLSELECTCOUNT(*) INTO :int1 FROM JNULL3 WHERE D2 ISNULLEND-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY"int1 should be 3; its value is ", int1 if (int1 NOT = 3) then MOVE 0 TO flag END-IF
DISPLAY"SELECT AVG(D1) * 10 INTO :int1" DISPLAY" FROM JNULL3;"
COMPUTE int1 = -1 EXECSQLSELECT AVG(D1) * 10 INTO :int1 FROM JNULL3 END-EXEC MOVE SQLCODE TO SQL-COD
DISPLAY"SQLCODE should be >= 0; its value is ", SQL-COD if (SQLCODE < 0) then MOVE 0 TO flag END-IF DISPLAY"SQLSTATE should be 01003; its value is ", SQLSTATE if (SQLSTATE NOT = "01003") then MOVE 0 TO flag END-IF DISPLAY"int1 should be 15; its value is ", int1 if (int1 NOT = 15) then MOVE 0 TO flag END-IF
DISPLAY"SELECT COUNT(*) INTO :int1" DISPLAY" FROM JNULL6" DISPLAY" WHERE C2 = 1;"
COMPUTE int1 = -1 EXECSQLSELECTCOUNT(*) INTO :int1 FROM JNULL6
WHERE C2 = 1 END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY"int1 should be 6; its value is ", int1 if (int1 NOT = 6) then MOVE 0 TO flag END-IF
DISPLAY"SELECT COUNT(*) INTO :int1" DISPLAY" FROM JNULL6" DISPLAY" WHERE C2 IS NULL;"
COMPUTE int1 = -1 EXECSQLSELECTCOUNT(*) INTO :int1 FROM JNULL6
WHERE C2 ISNULLEND-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY"int1 should be 2; its value is ", int1 if (int1 NOT = 2) then MOVE 0 TO flag END-IF
DISPLAY"SELECT COUNT(*) INTO :int1" DISPLAY" FROM JNULL6" DISPLAY" WHERE C2 = C1 AND" DISPLAY" D1 IS NULL;"
COMPUTE int1 = -1 EXECSQLSELECTCOUNT(*) INTO :int1 FROM JNULL6
WHERE C2 = C1 AND
D1 ISNULLEND-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY"int1 should be 2; its value is ", int1 if (int1 NOT = 2) then MOVE 0 TO flag END-IF
DISPLAY"COMMIT WORK;" EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY" "
DISPLAY"DROP TABLE JNULL1 CASCADE;" EXECSQL DROP TABLE JNULL1 CASCADE END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY" "
DISPLAY"COMMIT WORK;" EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY" "
DISPLAY"DROP TABLE JNULL2 CASCADE;" EXECSQL DROP TABLE JNULL2 CASCADE END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY" "
DISPLAY"COMMIT WORK;" EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY" "
if ( flag = 1 ) then DISPLAY" *** pass *** " EXECSQLINSERTINTO HU.TESTREPORT
VALUES('0623','pass','PCO') END-EXEC MOVE SQLCODE TO SQL-COD else DISPLAY" dml112.pco *** fail *** " EXECSQLINSERTINTO HU.TESTREPORT
VALUES('0623','fail','PCO') END-EXEC MOVE SQLCODE TO SQL-COD COMPUTE errcnt = errcnt + 1 END-IF
EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD ******************** END TEST0623 ******************** ******************** BEGIN TEST0625 ******************* MOVE 1 TO flag
DISPLAY"COMMIT WORK;" EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY" "
DISPLAY"CREATE VIEW CHANGGVIEW AS" DISPLAY" SELECT * FROM CHANGG;" EXECSQL CREATE VIEW CHANGGVIEW AS SELECT * FROM CHANGG END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY" "
DISPLAY"COMMIT WORK;" EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY" "
*should not be able to drop CHANGG.NAAM RESTRICT due to 11.15 SR DISPLAY"ALTER TABLE CHANGG" DISPLAY" DROP NAAM RESTRICT;" EXECSQLALTER TABLE CHANGG
DROP CONSTRAINT NAAM END-EXEC MOVE SQLCODE TO SQL-COD DISPLAY"SQLCODE should be < 0; its value is ", SQL-COD if (SQLCODE NOT < 0) then MOVE 0 TO flag END-IF DISPLAY"SQLSTATE should be 42000; its value is ", SQLSTATE PERFORM NOSUBCLASS THRU EXIT-NOSUBCLASS if (NORMSQ NOT = "42000") then MOVE 0 TO flag END-IF if (NORMSQ = "42000"AND NORMSQ NOT = SQLSTATE) then DISPLAY"Valid implementation-defined SQLSTATE accepted." END-IF
DISPLAY"COMMIT WORK;" EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD DISPLAY" "
DISPLAY"INSERT INTO CHANGG VALUES ('RALPH',
- "22);" EXECSQLINSERTINTO CHANGG VALUES ('RALPH',
22) END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY" "
DISPLAY"INSERT INTO CHANGG VALUES ('RUDOLPH',
- "54);" EXECSQLINSERTINTO CHANGG VALUES ('RUDOLPH',
54) END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY" "
DISPLAY"INSERT INTO CHANGG VALUES ('QUEEG',
- "33);" EXECSQLINSERTINTO CHANGG VALUES ('QUEEG',
33) END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY" "
DISPLAY"INSERT INTO CHANGG VALUES ('BESSIE',
- "106);" EXECSQLINSERTINTO CHANGG VALUES ('BESSIE',
106) END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY" "
*This select should fail
DISPLAY"SELECT COUNT(*) INTO :int1" DISPLAY" FROM CHANGG WHERE DIVORCES IS NULL;" EXECSQLSELECTCOUNT(*) INTO :int1 FROM CHANGG WHERE DIVORCES ISNULLEND-EXEC MOVE SQLCODE TO SQL-COD DISPLAY"SQLCODE should be < 0; its value is ", SQL-COD DISPLAY"SQLSTATE should be '42000'; its value is '",
SQLSTATE "'" if (SQLCODE NOT < 0) then MOVE 0 TO flag END-IF PERFORM NOSUBCLASS THRU EXIT-NOSUBCLASS if (NORMSQ NOT = "42000") then MOVE 0 TO flag END-IF if (NORMSQ = "42000"AND NORMSQ NOT = SQLSTATE) then DISPLAY"Valid implementation-defined SQLSTATE accepted." END-IF
DISPLAY"COMMIT WORK;" EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD
DISPLAY"COMMIT WORK;" EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY" "
COMPUTE int1 = -1 DISPLAY"SELECT MAX(AGE) INTO :int1 FROM CHANGGVIEW;" EXECSQLSELECT MAX(AGE2) INTO :int1 FROM CHANGGVIEW END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY"int1 should be 106; its value is ", int1 if (int1 NOT = 106) then MOVE 0 TO flag END-IF
*11.11 GR.2: This statement should fail.
DISPLAY"SELECT NUMBRR INTO :ch1 FROM CHANGGVIEW;" EXECSQLSELECT NUMBRR INTO :ch1 FROM CHANGGVIEW END-EXEC MOVE SQLCODE TO SQL-COD DISPLAY"SQLCODE should be < 0; its value is ", SQL-COD DISPLAY"SQLSTATE should be '42000'; its value is '",
SQLSTATE "'" if (SQLCODE NOT < 0) then MOVE 0 TO flag END-IF PERFORM NOSUBCLASS THRU EXIT-NOSUBCLASS if (NORMSQ NOT = "42000") then MOVE 0 TO flag END-IF if (NORMSQ = "42000"AND NORMSQ NOT = SQLSTATE) then DISPLAY"Valid implementation-defined SQLSTATE accepted." END-IF
DISPLAY"COMMIT WORK;" EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY" "
DISPLAY"DROP VIEW CHANGGVIEW CASCADE;" EXECSQL DROP VIEW CHANGGVIEW CASCADE END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY" "
DISPLAY"COMMIT WORK;" EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY" "
*Optional keyword!
DISPLAY"ALTER TABLE CHANGG" DISPLAY" ADD COLUMN DIVORCES INT DEFAULT 0;" EXECSQLALTER TABLE CHANGG ADDCOLUMN DIVORCES INT DEFAULT 0 END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY" "
DISPLAY"COMMIT WORK;" EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY" "
*Check that defaults are correct
DISPLAY"SELECT COUNT(*) INTO :int1" DISPLAY" FROM CHANGG WHERE NUMBRR IS NOT NULL" DISPLAY" OR DIVORCES <> 0;" COMPUTE int1 = -1 EXECSQLSELECTCOUNT(*) INTO :int1 FROM CHANGG WHERE NUMBRR ISNOTNULL OR DIVORCES <> 0 END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY"int1 should be 0; its value is ", int1 if (int1 NOT = 0) then MOVE 0 TO flag END-IF
*Do some uncomplicated things
DISPLAY"UPDATE CHANGG" DISPLAY" SET NUMBRR = '837-47-1847', DIVORCES = 3" DISPLAY" WHERE NAAM = 'RUDOLPH';" EXECSQL UPDATE CHANGG SET NUMBRR = '837-47-1847', DIVORCES = 3
WHERE NAAM = 'RUDOLPH'END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY" "
DISPLAY"UPDATE CHANGG" DISPLAY" SET NUMBRR = '738-47-1847', DIVORCES = NULL" DISPLAY" WHERE NAAM = 'QUEEG';" EXECSQL UPDATE CHANGG SET NUMBRR = '738-47-1847', DIVORCES = NULL
WHERE NAAM = 'QUEEG'END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY" "
DISPLAY"DELETE FROM CHANGG" DISPLAY" WHERE NUMBRR IS NULL;" EXECSQLDELETEFROM CHANGG
WHERE NUMBRR ISNULLEND-EXEC MOVE SQLCODE TO SQL-COD
COMPUTE int1 = -1 COMPUTE int2 = -1 MOVE"xxxxxxxxxxx"TO ch1 DISPLAY"SELECT AGE, NUMBRR, DIVORCES" DISPLAY" INTO :int1, :ch1, :int2" DISPLAY" FROM CHANGG" DISPLAY" WHERE NAAM = 'RUDOLPH';" EXECSQLSELECT AGE, NUMBRR, DIVORCES INTO :int1, :ch1, :int2 FROM CHANGG
WHERE NAAM = 'RUDOLPH'END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY"int1 should be 54; its value is ", int1 DISPLAY"int2 should be 3; its value is ", int2 DISPLAY"ch1 should be '837-47-1847'; its value is '",
ch1 "'" if (int1 NOT = 54 OR int2 NOT = 3) then MOVE 0 TO flag END-IF if (ch1 NOT = "837-47-1847") then MOVE 0 TO flag END-IF
COMPUTE int1 = -1 COMPUTE int2 = -1 MOVE 10 TO indic1 MOVE"xxxxxxxxxxx"TO ch1 DISPLAY"SELECT AGE, NUMBRR, DIVORCES" DISPLAY" INTO :int1, :ch1, :int2:indic1" DISPLAY" FROM CHANGG" DISPLAY" WHERE NAAM = 'QUEEG';" EXECSQLSELECT AGE, NUMBRR, DIVORCES INTO :int1, :ch1, :int2:indic1 FROM CHANGG
WHERE NAAM = 'QUEEG'END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY"int1 should be 33; its value is ", int1 DISPLAY"indic1 should be -1; its value is ", indic1 DISPLAY"ch1 should be '738-47-1847'; its value is '",
ch1 "'" if (int1 NOT = 33 OR indic1 NOT = -1) then MOVE 0 TO flag END-IF if (ch1 NOT = "738-47-1847") then MOVE 0 TO flag END-IF
COMPUTE int1 = -1 COMPUTE int2 = -1 MOVE"xxxxxxxxxxx"TO ch1 DISPLAY"SELECT AGE, NUMBRR, DIVORCES" DISPLAY" INTO :int1, :ch1, :int2" DISPLAY" FROM CHANGG" DISPLAY" WHERE NAAM = 'GOOBER';" EXECSQLSELECT AGE, NUMBRR, DIVORCES INTO :int1, :ch1, :int2 FROM CHANGG
WHERE NAAM = 'GOOBER'END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY"int1 should be 16; its value is ", int1 DISPLAY"int2 should be 0; its value is ", int2 DISPLAY"ch1 should be '000-10-0001'; its value is '",
ch1 "'" if (int1 NOT = 16 OR int2 NOT = 0) then MOVE 0 TO flag END-IF if (ch1 NOT = "000-10-0001") then MOVE 0 TO flag END-IF
COMPUTE int1 = -1 COMPUTE int2 = -1 MOVE"xxxxxxxxxxx"TO ch1 DISPLAY"SELECT AGE, NUMBRR, DIVORCES" DISPLAY" INTO :int1, :ch1, :int2" DISPLAY" FROM CHANGG" DISPLAY" WHERE NAAM = 'OLIVIA';" EXECSQLSELECT AGE, NUMBRR, DIVORCES INTO :int1, :ch1, :int2 FROM CHANGG
WHERE NAAM = 'OLIVIA'END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY"int1 should be 20; its value is ", int1 DISPLAY"int2 should be 0; its value is ", int2 DISPLAY"ch1 should be '111-11-1111'; its value is '",
ch1 "'" if (int1 NOT = 20 OR int2 NOT = 0) then MOVE 0 TO flag END-IF if (ch1 NOT = "111-11-1111") then MOVE 0 TO flag END-IF
COMPUTE int1 = -1 DISPLAY"SELECT COUNT(*) INTO :int1 FROM CHANGG;" EXECSQLSELECTCOUNT(*) INTO :int1 FROM CHANGG END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY"int1 should be 4; its value is ", int1 if (int1 NOT = 4) then MOVE 0 TO flag END-IF
DISPLAY"COMMIT WORK;" EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY" "
*Age is nobody's business!
DISPLAY"ALTER TABLE CHANGG DROP AGE CASCADE;" EXECSQLALTER TABLE CHANGG DROP CONSTRAINT AGE END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY" "
DISPLAY"COMMIT WORK;" EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY" "
*Optional keyword!
DISPLAY"ALTER TABLE CHANGG DROP COLUMN DIVORCES RESTRICT;" EXECSQLALTER TABLE CHANGG DROP CONSTRAINT DIVORCES END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY" "
DISPLAY"COMMIT WORK;" EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY" "
*This select should fail
DISPLAY"SELECT COUNT(*) INTO :int1" DISPLAY" FROM CHANGG WHERE AGE > 30;" EXECSQLSELECTCOUNT(*) INTO :int1 FROM CHANGG WHERE AGE > 30 END-EXEC MOVE SQLCODE TO SQL-COD DISPLAY"SQLCODE should be < 0; its value is ", SQL-COD DISPLAY"SQLSTATE should be '42000'; its value is '",
SQLSTATE "'" if (SQLCODE NOT < 0) then MOVE 0 TO flag END-IF PERFORM NOSUBCLASS THRU EXIT-NOSUBCLASS if (NORMSQ NOT = "42000") then MOVE 0 TO flag END-IF if (NORMSQ = "42000"AND NORMSQ NOT = SQLSTATE) then DISPLAY"Valid implementation-defined SQLSTATE accepted." END-IF
*This select should fail too
MOVE"xxxxx"TO SQLSTATE DISPLAY"SELECT COUNT(*) INTO :int1" DISPLAY" FROM CHANGG WHERE DIVORCES IS NULL;" EXECSQLSELECTCOUNT(*) INTO :int1 FROM CHANGG WHERE DIVORCES ISNULLEND-EXEC MOVE SQLCODE TO SQL-COD DISPLAY"SQLCODE should be < 0; its value is ", SQL-COD DISPLAY"SQLSTATE should be '42000'; its value is '",
SQLSTATE "'" if (SQLCODE NOT < 0) then MOVE 0 TO flag END-IF PERFORM NOSUBCLASS THRU EXIT-NOSUBCLASS if (NORMSQ NOT = "42000") then MOVE 0 TO flag END-IF if (NORMSQ = "42000"AND NORMSQ NOT = SQLSTATE) then DISPLAY"Valid implementation-defined SQLSTATE accepted." END-IF
MOVE"xxxxxxxxxxxxxx"TO ch2 DISPLAY"SELECT NAAM INTO :ch2" DISPLAY" FROM CHANGG" DISPLAY" WHERE NUMBRR LIKE '%000%';" EXECSQLSELECT NAAM INTO :ch2 FROM CHANGG
WHERE NUMBRR LIKE '%000%'END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY"ch2 should be 'GOOBER '; its value is '",
ch2 "'" if (ch2 NOT = "GOOBER ") then MOVE 0 TO flag END-IF
DISPLAY"COMMIT WORK;" EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY" "
*create a referential constraint on table CHANGG
DISPLAY"CREATE TABLE REFERENCE_CHANGG (" DISPLAY" NAAM CHAR (14) NOT NULL PRIMARY KEY" DISPLAY" REFERENCES CHANGG);" EXECSQL CREATE TABLE REFERENCE_CHANGG (
NAAM CHAR (14) NOTNULL PRIMARY KEY
) END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY" "
DISPLAY"COMMIT WORK;" EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY" "
*verify referential constraint DISPLAY"INSERT INTO REFERENCE_CHANGG VALUES
- "('NO SUCH NAAM');" EXECSQLINSERTINTO REFERENCE_CHANGG VALUES
('NO SUCH NAAM') END-EXEC MOVE SQLCODE TO SQL-COD
DISPLAY"SQLCODE should be < 0; its value is ", SQL-COD if (SQLCODE NOT < 0) then MOVE 0 TO flag END-IF DISPLAY"SQLSTATE should be 23000; its value is ", SQLSTATE PERFORM NOSUBCLASS THRU EXIT-NOSUBCLASS if (NORMSQ NOT = "23000") then MOVE 0 TO flag END-IF if (NORMSQ = "23000"AND NORMSQ NOT = SQLSTATE) then DISPLAY"Valid implementation-defined SQLSTATE accepted." END-IF
DISPLAY"COMMIT WORK;" EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD
*should not be able to drop CHANGG.NAAM RESTRICT due to RI const DISPLAY"ALTER TABLE CHANGG" DISPLAY" DROP NAAM RESTRICT;" EXECSQLALTER TABLE CHANGG
DROP CONSTRAINT NAAM END-EXEC MOVE SQLCODE TO SQL-COD DISPLAY"SQLCODE should be < 0; its value is ", SQL-COD if (SQLCODE NOT < 0) then MOVE 0 TO flag END-IF DISPLAY"SQLSTATE should be 42000; its value is ", SQLSTATE PERFORM NOSUBCLASS THRU EXIT-NOSUBCLASS if (NORMSQ NOT = "42000") then MOVE 0 TO flag END-IF if (NORMSQ = "42000"AND NORMSQ NOT = SQLSTATE) then DISPLAY"Valid implementation-defined SQLSTATE accepted." END-IF
DISPLAY"COMMIT WORK;" EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD
DISPLAY" "
*should be able to drop CHANGG.NAAM CASCADE DISPLAY"ALTER TABLE CHANGG" DISPLAY" DROP NAAM CASCADE;" EXECSQLALTER TABLE CHANGG
DROP constraint NAAM END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY" "
DISPLAY"COMMIT WORK;" EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY" "
*verify referential constraint was a dropped object DISPLAY"INSERT INTO REFERENCE_CHANGG VALUES
- "('NO SUCH NAAM');" EXECSQLINSERTINTO REFERENCE_CHANGG VALUES
('NO SUCH NAAM') END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY" "
DISPLAY"COMMIT WORK;" EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY" "
*TEd Hook #1 Check 11.15 SR.3 (can't drop all the columns) *This is a syntax error. If it is rejected at compile time, *save the error and use the TEd hooks to remove this subtest. DISPLAY"ALTER TABLE CHANGG" DISPLAY" DROP NUMBRR RESTRICT;" EXECSQLALTER TABLE CHANGG
DROP constraint NUMBRR END-EXEC MOVE SQLCODE TO SQL-COD DISPLAY"SQLCODE should be < 0; its value is ", SQL-COD if (SQLCODE NOT < 0) then MOVE 0 TO flag END-IF DISPLAY"SQLSTATE should be 42000; its value is ", SQLSTATE PERFORM NOSUBCLASS THRU EXIT-NOSUBCLASS if (NORMSQ NOT = "42000") then MOVE 0 TO flag END-IF if (NORMSQ = "42000"AND NORMSQ NOT = SQLSTATE) then DISPLAY"Valid implementation-defined SQLSTATE accepted." END-IF
DISPLAY"COMMIT WORK;" EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD DISPLAY" "
*TEd Hook #2
DISPLAY"DROP TABLE CHANGG CASCADE;" EXECSQL DROP TABLE CHANGG CASCADE END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY" "
DISPLAY"COMMIT WORK;" EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY" "
*11.18 SR.4 -- only the constraint, not the referencing *table, was dropped.
DISPLAY"DROP TABLE REFERENCE_CHANGG CASCADE;" EXECSQL DROP TABLE REFERENCE_CHANGG CASCADE END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY" "
DISPLAY"COMMIT WORK;" EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY" "
if ( flag = 1 ) then DISPLAY" *** pass *** " EXECSQLINSERTINTO HU.TESTREPORT
VALUES('0625','pass','PCO') END-EXEC MOVE SQLCODE TO SQL-COD else DISPLAY" dml112.pco *** fail *** " EXECSQLINSERTINTO HU.TESTREPORT
VALUES('0625','fail','PCO') END-EXEC MOVE SQLCODE TO SQL-COD COMPUTE errcnt = errcnt + 1 END-IF
EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD ******************** END TEST0625 ******************** ******************** BEGIN TEST0631 ******************* MOVE 1 TO flag
DISPLAY"CREATE TABLE OBITUARIES (" DISPLAY" NAAM CHAR (14) NOT NULL PRIMARY KEY," DISPLAY" BORN DATE DEFAULT DATE '1880-01-01'," DISPLAY" DIED DATE DEFAULT CURRENT_DATE," DISPLAY" ENTERED TIMESTAMP DEFAULT CURRENT_TIMESTAMP);"
EXECSQL CREATE TABLE OBITUARIES (
NAAM CHAR (14) NOTNULL PRIMARY KEY,
BORN DATE DEFAULT '1880-01-01',
DIED DATE DEFAULT CURRENT_DATE,
ENTERED TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
TESTING1 DATE,
TESTING2 TIMESTAMP) END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY" "
DISPLAY"COMMIT WORK;" EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY" "
DISPLAY"CREATE TABLE BIRTHS (" DISPLAY" NAAM CHAR (14) NOT NULL PRIMARY KEY," DISPLAY" CHECKIN TIME (0)" DISPLAY" DEFAULT TIME '00:00:00'," DISPLAY" LABOR INTERVAL HOUR" DISPLAY" DEFAULT INTERVAL '4' HOUR," DISPLAY" CHECKOUT TIME" DISPLAY" DEFAULT CURRENT_TIME);"
EXECSQL CREATE TABLE BIRTHS (
NAAM CHAR (14) NOTNULL PRIMARY KEY,
CHECKIN TIME
DEFAULT '00:00:00',
LABOR TIME
DEFAULT '4' HOUR,
CHECKOUT TIME
DEFAULT CURRENT_TIME,
TESTING TIME) END-EXEC MOVE SQLCODE TO SQL-COD
*The <default option> must be a <literal> or a <datetime value *function> so I can't use a CAST to change CURRENT_TIME to have *no fractional seconds.
PERFORM CHCKOK DISPLAY" "
DISPLAY"COMMIT WORK;" EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD
DISPLAY"SELECT EXTRACT (HOUR FROM CHECKIN) +" DISPLAY" EXTRACT (MINUTE FROM CHECKIN) +" DISPLAY" EXTRACT (SECOND FROM CHECKIN)" DISPLAY" INTO :int1 FROM BIRTHS;"
COMPUTE int1 = -1 EXECSQLSELECT CHECKIN +
CHECKIN +
CHECKIN INTO :int1 FROM BIRTHS END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY"int1 should be 0; its value is ", int1 if (int1 NOT = 0) then MOVE 0 TO flag END-IF
DISPLAY"SELECT EXTRACT (HOUR FROM LABOR) INTO :int1 FROM
- " BIRTHS;" COMPUTE int1 = -1 EXECSQLSELECT LABOR INTO :int1 FROM
BIRTHS END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY"int1 should be 4; its value is ", int1 if (int1 NOT = 4) then MOVE 0 TO flag END-IF
DISPLAY"SELECT COUNT (*) INTO :int1 FROM BIRTHS" DISPLAY" WHERE TESTING <> CHECKOUT OR CHECKOUT IS NULL;"
COMPUTE int1 = -1 EXECSQLSELECTCOUNT (*) INTO :int1 FROM BIRTHS
WHERE TESTING <> CHECKOUT OR CHECKOUT ISNULLEND-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY"int1 should be 0; its value is ", int1 if (int1 NOT = 0) then MOVE 0 TO flag END-IF
DISPLAY"SELECT COUNT (*) INTO :int1 FROM OBITUARIES" DISPLAY" WHERE BORN <> DATE '1880-01-01'" DISPLAY" OR BORN IS NULL" DISPLAY" OR DIED <> TESTING1" DISPLAY" OR DIED IS NULL" DISPLAY" OR ENTERED <> TESTING2" DISPLAY" OR ENTERED IS NULL;"
COMPUTE int1 = -1 EXECSQLSELECTCOUNT (*) INTO :int1 FROM OBITUARIES
WHERE BORN <> '1880-01-01' OR BORN ISNULL OR DIED <> TESTING1 OR DIED ISNULL OR ENTERED <> TESTING2 OR ENTERED ISNULLEND-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY"int1 should be 0; its value is ", int1 if (int1 NOT = 0) then MOVE 0 TO flag END-IF
DISPLAY"COMMIT WORK;" EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY" "
DISPLAY"DROP TABLE BIRTHS CASCADE;" EXECSQL DROP TABLE BIRTHS CASCADE END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY" "
DISPLAY"COMMIT WORK;" EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY" "
DISPLAY"DROP TABLE OBITUARIES CASCADE;" EXECSQL DROP TABLE OBITUARIES CASCADE END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY" "
DISPLAY"COMMIT WORK;" EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY" "
if ( flag = 1 ) then DISPLAY" *** pass *** " EXECSQLINSERTINTO HU.TESTREPORT
VALUES('0631','pass','PCO') END-EXEC MOVE SQLCODE TO SQL-COD else DISPLAY" dml112.pco *** fail *** " EXECSQLINSERTINTO HU.TESTREPORT
VALUES('0631','fail','PCO') END-EXEC MOVE SQLCODE TO SQL-COD COMPUTE errcnt = errcnt + 1 END-IF
EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD ******************** END TEST0631 ******************** ******************** BEGIN TEST0633 ******************* MOVE 1 TO flag
DISPLAY"INSERT INTO WEIRDPAD (NAAM, SPONSOR) VALUES" DISPLAY" (' KEITH ', 'XXXXKATEXXXXXX');" EXECSQLINSERTINTO WEIRDPAD (NAAM, SPONSOR) VALUES
(' KEITH ', 'XXXXKATEXXXXXX') END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY" "
MOVE"BLAHBLAHBLAHBL"TO ch2 DISPLAY"SELECT TRIM ('X' FROM SPONSOR) INTO :ch2" DISPLAY" FROM WEIRDPAD" DISPLAY" WHERE TRIM (NAAM) = 'KEITH';"
EXECSQLSELECT TRIM (SPONSOR) INTO :ch2 FROM WEIRDPAD
WHERE TRIM (NAAM) = 'KEITH'END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY"ch2 should be 'KATE '; its value is '",
ch2 "'"
*In languages with variable length strings, the result should *not have trailing blanks. * if (ch2 NOT = "KATE")
if (ch2 NOT = "KATE ") then MOVE 0 TO flag END-IF
*repeat with CURSOR MOVE"BLAHBLAHBLAHBL"TO ch2 DISPLAY"DECLARE WWW CURSOR FOR " DISPLAY"SELECT TRIM ('X' FROM SPONSOR)" DISPLAY" FROM WEIRDPAD" DISPLAY" WHERE TRIM (NAAM) = 'KEITH';"
EXECSQL DECLARE WWW CURSOR FOR SELECT TRIM (SPONSOR) FROM WEIRDPAD
WHERE TRIM (NAAM) = 'KEITH'END-EXEC
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.