**************************************************************** * * 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. * * DML113.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 dynamic version of DML112.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, dml113.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 TEST0622 ******************* 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)
*Statement too long for CONCATBUF; break into two views. *Even now, this statement has whitespace removed to make it fit
EXECSQLDELETEFROM CONCATBUF END-EXEC MOVE SQLCODE TO SQL-COD EXECSQLINSERTINTO CONCATBUF VALUES ( 'CREATE VIEW NULLINV AS'
|| ' SELECT ITEMKEY,ORDERED,CAST'
|| ' (NULL AS INTERVAL MONTH) AS MWAIT,CAST'
|| ' (NULL AS INTERVAL DAY TO HOUR) AS DWAIT FROM'
|| ' MERCH WHERE RDATE IS NOT NULL AND SOLD IS NULL'
|| ' AND MERCH.ITEMKEY NOT IN(SELECT ITEMKEY'
|| ' FROM TURNAROUND)'
) END-EXEC MOVE SQLCODE TO SQL-COD EXECSQLSELECT ZZ INTO :longst FROM CONCATBUF END-EXEC MOVE SQLCODE TO SQL-COD
DISPLAY"longst=""", longst """"
DISPLAY"COMMIT WORK;" EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD
COMPUTE int1 = -1 DISPLAY"FETCH C11313 INTO :int1;" EXECSQL FETCH C11313 INTO :int1 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
COMPUTE int1 = -1 DISPLAY"FETCH C11314 INTO :int1;" EXECSQL FETCH C11314 INTO :int1 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
COMPUTE int1 = -1 DISPLAY"FETCH C11315 INTO :int1;" EXECSQL FETCH C11315 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
EXECSQLDELETEFROM CONCATBUF END-EXEC MOVE SQLCODE TO SQL-COD EXECSQLINSERTINTO CONCATBUF VALUES ( 'SELECT COUNT(*) FROM TURNAROUND' || ' WHERE DWAIT IS NOT NULL'
) END-EXEC MOVE SQLCODE TO SQL-COD EXECSQLSELECT ZZ INTO :longst FROM CONCATBUF END-EXEC MOVE SQLCODE TO SQL-COD
DISPLAY"longst=""", longst """"
DISPLAY"PREPARE S11316 FROM :longst;" EXECSQL PREPARE S11316 FROM :longst END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY" "
DISPLAY"DECLARE C11316 CURSOR FOR S11316;" EXECSQL DECLARE C11316 CURSOR FOR S11316 END-EXEC DISPLAY" "
COMPUTE int1 = -1 DISPLAY"FETCH C11316 INTO :int1;" EXECSQL FETCH C11316 INTO :int1 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
COMPUTE int1 = -1 MOVE 2 TO ind1 DISPLAY"FETCH C11317 INTO :int1:ind1;" EXECSQL FETCH C11317 INTO :int1:ind1 END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY"ind1 should be -1; its value is ", ind1 if (ind1 NOT = -1) then MOVE 0 TO flag END-IF
COMPUTE int1 = -1 DISPLAY"FETCH C11318 INTO :int1;" EXECSQL FETCH C11318 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.
EXECSQLDELETEFROM CONCATBUF END-EXEC MOVE SQLCODE TO SQL-COD EXECSQLINSERTINTO CONCATBUF VALUES ( 'SELECT EXTRACT (HOUR FROM AVG (DWAIT))' || ' FROM MERCH, TURNAROUND WHERE' || ' MERCH.ITEMKEY = TURNAROUND.ITEMKEY OR' || ' TURNAROUND.ITEMKEY NOT IN' || ' (SELECT ITEMKEY FROM MERCH)'
) END-EXEC MOVE SQLCODE TO SQL-COD EXECSQLSELECT ZZ INTO :longst FROM CONCATBUF END-EXEC MOVE SQLCODE TO SQL-COD
DISPLAY"longst=""", longst """"
DISPLAY"PREPARE S11319 FROM :longst;" EXECSQL PREPARE S11319 FROM :longst END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY" "
DISPLAY"DECLARE C11319 CURSOR FOR S11319;" EXECSQL DECLARE C11319 CURSOR FOR S11319 END-EXEC DISPLAY" "
DISPLAY"OPEN C11319;" EXECSQLOPEN C11319 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
COMPUTE int1 = -1 DISPLAY"FETCH C11319 INTO :int1;" EXECSQL FETCH C11319 INTO :int1 END-EXEC MOVE SQLCODE TO SQL-COD
*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.
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
EXECSQLDELETEFROM CONCATBUF END-EXEC MOVE SQLCODE TO SQL-COD EXECSQLINSERTINTO CONCATBUF VALUES ( 'SELECT COUNT(*)' || ' FROM INVENTORY WHERE MWAIT IS NULL' || ' AND DWAIT IS NULL'
) END-EXEC MOVE SQLCODE TO SQL-COD EXECSQLSELECT ZZ INTO :longst FROM CONCATBUF END-EXEC MOVE SQLCODE TO SQL-COD
DISPLAY"longst=""", longst """"
DISPLAY"PREPARE S1131A FROM :longst;" EXECSQL PREPARE S1131A FROM :longst END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY" "
DISPLAY"DECLARE C1131A CURSOR FOR S1131A;" EXECSQL DECLARE C1131A CURSOR FOR S1131A END-EXEC DISPLAY" "
COMPUTE int1 = -1 DISPLAY"FETCH C1131A INTO :int1;" EXECSQL FETCH C1131A 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
DISPLAY"COMMIT WORK;" EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD
EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD ******************** END TEST0622 ******************** ******************** BEGIN TEST0624 ******************* MOVE 1 TO flag
COMPUTE int1 = -1 DISPLAY"FETCH C11321 INTO :int1;" EXECSQL FETCH C11321 INTO :int1 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
EXECSQLDELETEFROM CONCATBUF END-EXEC MOVE SQLCODE TO SQL-COD EXECSQLINSERTINTO CONCATBUF VALUES ( 'SELECT COUNT(*) FROM JNULL3' || ' WHERE D2 IS NOT NULL OR D1 IS NOT NULL'
) END-EXEC MOVE SQLCODE TO SQL-COD EXECSQLSELECT ZZ INTO :longst FROM CONCATBUF END-EXEC MOVE SQLCODE TO SQL-COD
DISPLAY"longst=""", longst """"
DISPLAY"PREPARE S11322 FROM :longst;" EXECSQL PREPARE S11322 FROM :longst END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY" "
DISPLAY"DECLARE C11322 CURSOR FOR S11322;" EXECSQL DECLARE C11322 CURSOR FOR S11322 END-EXEC DISPLAY" "
COMPUTE int1 = -1 DISPLAY"FETCH C11322 INTO :int1;" EXECSQL FETCH C11322 INTO :int1 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
COMPUTE int1 = -1 DISPLAY"FETCH C11323 INTO :int1;" EXECSQL FETCH C11323 INTO :int1 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
COMPUTE int1 = -1 DISPLAY"FETCH C11324 INTO :int1;" EXECSQL FETCH C11324 INTO :int1 END-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
COMPUTE int1 = -1 DISPLAY"FETCH C11321 INTO :int1;" EXECSQL FETCH C11321 INTO :int1 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"FETCH C11325 INTO :int1;" EXECSQL FETCH C11325 INTO :int1 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
COMPUTE int1 = -1 DISPLAY"FETCH C11326 INTO :int1;" EXECSQL FETCH C11326 INTO :int1 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"FETCH C11327 INTO :int1;" EXECSQL FETCH C11327 INTO :int1 END-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"dstmt=""SELECT AVG(D1) * 10 FROM JNULL3""" MOVE"SELECT AVG(D1) * 10 FROM JNULL3
- " "TO dstmt
DISPLAY"PREPARE S11328 FROM :dstmt;" EXECSQL PREPARE S11328 FROM :dstmt END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY" "
DISPLAY"DECLARE C11328 CURSOR FOR S11328;" EXECSQL DECLARE C11328 CURSOR FOR S11328 END-EXEC DISPLAY" "
DISPLAY"OPEN C11328;" EXECSQLOPEN C11328 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" "
COMPUTE int1 = -1 DISPLAY"FETCH C11328 INTO :int1;" EXECSQL FETCH C11328 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 15; its value is ", int1 if (int1 NOT = 15) then MOVE 0 TO flag END-IF
COMPUTE int1 = -1 DISPLAY"FETCH C11329 INTO :int1;" EXECSQL FETCH C11329 INTO :int1 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
EXECSQLDELETEFROM CONCATBUF END-EXEC MOVE SQLCODE TO SQL-COD EXECSQLINSERTINTO CONCATBUF VALUES ( 'SELECT COUNT(*)' || ' FROM JNULL6' || ' WHERE C2 IS NULL'
) END-EXEC MOVE SQLCODE TO SQL-COD EXECSQLSELECT ZZ INTO :longst FROM CONCATBUF END-EXEC MOVE SQLCODE TO SQL-COD
DISPLAY"longst=""", longst """"
DISPLAY"PREPARE S1132A FROM :longst;" EXECSQL PREPARE S1132A FROM :longst END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY" "
DISPLAY"DECLARE C1132A CURSOR FOR S1132A;" EXECSQL DECLARE C1132A CURSOR FOR S1132A END-EXEC DISPLAY" "
COMPUTE int1 = -1 DISPLAY"FETCH C1132A INTO :int1;" EXECSQL FETCH C1132A 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
COMPUTE int1 = -1 DISPLAY"FETCH C1132B INTO :int1;" EXECSQL FETCH C1132B 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
EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD ******************** END TEST0624 ******************** ******************** BEGIN TEST0626 ******************* MOVE 1 TO flag
DISPLAY"dstmt=""SELECT COUNT(*) FROM CHANGG WHERE DIVORCES
- " IS NULL""" MOVE"SELECT COUNT(*) FROM CHANGG WHERE DIVORCES
- " IS NULL"TO dstmt
DISPLAY"PREPARE S11331 FROM :dstmt;" EXECSQL PREPARE S11331 FROM :dstmt END-EXEC MOVE SQLCODE TO SQL-COD
if (SQLCODE = 0) then DISPLAY"SQLCODE is 0" GOTO P101 END-IF
DISPLAY"SQLCODE is ", SQL-COD 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 GOTO P100
.
P101. DISPLAY"DECLARE C11331 CURSOR FOR S11331;" EXECSQL DECLARE C11331 CURSOR FOR S11331 END-EXEC DISPLAY" "
DISPLAY"OPEN C11331;" EXECSQLOPEN C11331 END-EXEC MOVE SQLCODE TO SQL-COD
if (SQLCODE = 0) then DISPLAY"SQLCODE is 0" GOTO P102 END-IF
DISPLAY"SQLCODE is ", SQL-COD 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 GOTO P100
.
P102. DISPLAY"FETCH C11331 INTO :int1;" EXECSQL FETCH C11331 INTO :int1 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" "
*Check that defaults are correct
EXECSQLDELETEFROM CONCATBUF END-EXEC MOVE SQLCODE TO SQL-COD EXECSQLINSERTINTO CONCATBUF VALUES ( 'SELECT COUNT(*)' || ' FROM CHANGG WHERE NUMBRR IS NOT NULL' || ' OR DIVORCES <> 0'
) END-EXEC MOVE SQLCODE TO SQL-COD EXECSQLSELECT ZZ INTO :longst FROM CONCATBUF END-EXEC MOVE SQLCODE TO SQL-COD
DISPLAY"longst=""", longst """"
DISPLAY"PREPARE S11332 FROM :longst;" EXECSQL PREPARE S11332 FROM :longst END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY" "
DISPLAY"DECLARE C11332 CURSOR FOR S11332;"
--> --------------------
--> maximum size reached
--> --------------------
¤ 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.0.53Bemerkung:
(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.