**************************************************************** * * COMMENT SECTION * * DATE 1994/08/17 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. * * DML132.PCO * WRITTEN BY: David Flater * TRANSLATED AUTOMATICALLY FROM EMBEDDED C BY CHRIS SCHANZLE * * This routine tests FIPS sizing. * * REFERENCES * 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, dml132.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 TEST0515 ******************* MOVE 1 TO flag
DISPLAY"INSERT INTO HU.P15 VALUES (999999999999999);" EXECSQLINSERTINTO HU.P15 VALUES (999999999999999) END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY" "
DISPLAY"INSERT INTO HU.P15 VALUES (-999999999999999);" EXECSQLINSERTINTO HU.P15 VALUES (-999999999999999) END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY" "
*Since these are exact numerics, there should be no problems *with the precision of + and -.
COMPUTE int1 = -1 DISPLAY"SELECT NUMTEST - 999999999999990," DISPLAY" NUMTEST / 9999999 INTO :int1, :int2" DISPLAY" FROM HU.P15 WHERE NUMTEST > 0;" EXECSQLSELECT NUMTEST - 999999999999990,
NUMTEST / 9999999 INTO :int1, :int2 FROM HU.P15 WHERE NUMTEST > 0 END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY"int1 should be 9; its value is ", int1 DISPLAY"int2 should be 100000010; its value is ", int2 if (int1 NOT = 9 OR int2 NOT = 100000010) then MOVE 0 TO flag END-IF
COMPUTE int1 = -1 DISPLAY"SELECT NUMTEST + 999999999999990," DISPLAY" NUMTEST / 9999999 INTO :int1, :int2" DISPLAY" FROM HU.P15 WHERE NUMTEST < 0;" EXECSQLSELECT NUMTEST + 999999999999990,
NUMTEST / 9999999 INTO :int1, :int2 FROM HU.P15 WHERE NUMTEST < 0 END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY"int1 should be -9; its value is ", int1 DISPLAY"int2 should be -100000010; its value is ", int2 if (int1 NOT = -9 OR int2 NOT = -100000010) then MOVE 0 TO flag END-IF
DISPLAY"DELETE FROM HU.P15;" EXECSQLDELETEFROM HU.P15 END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY" "
DISPLAY"INSERT INTO HU.P15 VALUES (562949953421313);" EXECSQLINSERTINTO HU.P15 VALUES (562949953421313) END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY" "
COMPUTE int1 = -1 DISPLAY"SELECT COUNT(*) INTO :int1" DISPLAY" FROM HU.P15 WHERE NUMTEST = 562949953421312;" EXECSQLSELECTCOUNT(*) INTO :int1 FROM HU.P15 WHERE NUMTEST = 562949953421312 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"SELECT COUNT(*) INTO :int1" DISPLAY" FROM HU.P15 WHERE NUMTEST = 562949953421313;" EXECSQLSELECTCOUNT(*) INTO :int1 FROM HU.P15 WHERE NUMTEST = 562949953421313 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"SELECT COUNT(*) INTO :int1" DISPLAY" FROM HU.P15 WHERE NUMTEST = 562949953421314;" EXECSQLSELECTCOUNT(*) INTO :int1 FROM HU.P15 WHERE NUMTEST = 562949953421314 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"ROLLBACK WORK;" EXECSQL ROLLBACK WORK END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY" "
if (flag = 1) then DISPLAY" *** pass *** " EXECSQLINSERTINTO HU.TESTREPORT
VALUES('0515','pass','PCO') END-EXEC MOVE SQLCODE TO SQL-COD else DISPLAY" dml132.pco *** fail *** " EXECSQLINSERTINTO HU.TESTREPORT
VALUES('0515','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 DISPLAY"================================================"
******************** END TEST0515 ******************** ******************** BEGIN TEST0524 ******************* MOVE 1 TO flag
*This test is based on dml056 TEST0246
DISPLAY" TEST0524 " DISPLAY" FIPS sizing: 100 Items in a SELECT list" DISPLAY"References:" DISPLAY" FIPS 16.6 -- Sizing for database constructs" DISPLAY" - - - - - - - - - - - - - - - - - - -"
COMPUTE SQLCODE = -1 MOVE"xxxxx"TO SQLSTATE
DISPLAY"DELETE FROM HU.T100;" EXECSQLDELETEFROM HU.T100 END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY"indic1 should be 0; its value is ", indic1 if (indic1 NOT = 0) then MOVE 0 TO flag END-IF DISPLAY"indic2 should be 0; its value is ", indic2 if (indic2 NOT = 0) then MOVE 0 TO flag END-IF DISPLAY"cv00 should be '00'; its value is ", cv00 if (cv00 NOT = "00") then MOVE 0 TO flag END-IF DISPLAY"cv49 should be '31'; its value is ", cv49 if (cv49 NOT = "31") then MOVE 0 TO flag END-IF DISPLAY"cv66 should be '42'; its value is ", cv66 if (cv66 NOT = "42") then MOVE 0 TO flag END-IF DISPLAY"cv99 should be '63'; its value is ", cv99 if (cv99 NOT = "63") then MOVE 0 TO flag END-IF
DISPLAY"ROLLBACK WORK;" EXECSQL ROLLBACK WORK END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY" "
if (flag = 1) then DISPLAY" *** pass *** " EXECSQLINSERTINTO HU.TESTREPORT
VALUES('0524','pass','PCO') END-EXEC MOVE SQLCODE TO SQL-COD else DISPLAY" dml132.pco *** fail *** " EXECSQLINSERTINTO HU.TESTREPORT
VALUES('0524','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 DISPLAY"================================================"
******************** END TEST0524 ******************** ******************** BEGIN TEST0525 ******************* MOVE 1 TO flag
COMPUTE int1 = -1 DISPLAY"FETCH SILLY INTO :int1;" EXECSQL FETCH SILLY INTO :int1 END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY"int1 should be 46080; its value is ", int1 if (int1 NOT = 46080) then MOVE 0 TO flag END-IF
DISPLAY"ROLLBACK WORK;" EXECSQL ROLLBACK WORK END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY" "
if (flag = 1) then DISPLAY" *** pass *** " EXECSQLINSERTINTO HU.TESTREPORT
VALUES('0525','pass','PCO') END-EXEC MOVE SQLCODE TO SQL-COD else DISPLAY" dml132.pco *** fail *** " EXECSQLINSERTINTO HU.TESTREPORT
VALUES('0525','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 DISPLAY"================================================"
******************** END TEST0525 ********************
**** TESTER MAY CHOOSE TO INSERT CODE FOR errcnt > 0 STOPRUN.
* **** Procedures for PERFORM statements
*Test SQLCODE and SQLSTATE for normal completion.
CHCKOK. DISPLAY"SQLCODE should be 0; its value is ", SQL-COD DISPLAY"SQLSTATE should be 00000; its value is ", SQLSTATE PERFORM NOSUBCLASS THRU EXIT-NOSUBCLASS if (SQLCODE NOT = 0 OR NORMSQ NOT = "00000") then MOVE 0 TO flag END-IF if (NORMSQ = "00000"AND NORMSQ NOT = SQLSTATE) then DISPLAY"Valid implementation-defined SQLSTATE accepted." END-IF
.
NOSUBCLASS.
*This routine replaces valid implementation-defined *subclasses with 000. This replacement equates valid *implementation-defined subclasses with the 000 value *expected by the test case; otherwise the test will fail. *After calling NOSUBCLASS, NORMSQ will be tested * SQLSTATE will be printed.
MOVE SQLSTATE TO NORMSQ
MOVE 3 TO norm1 *subclass begins in position 3 of char array NORMSQ *valid subclass begins with 5-9, I-Z, end of ALPNUM table PERFORMVARYING norm2 FROM 14 BY 1 UNTIL norm2 > 36 if (NORMSQX(norm1) = ALPNUM(norm2)) then MOVE"0"TO NORMSQX(norm1) END-IF END-PERFORM
*Quit if NORMSQ is unchanged. Subclass is not impl.-def. *Changed NORMSQ means implementation-defined subclass, *so proceed to zero it out, if valid (0-9,A-Z) if (NORMSQ = SQLSTATE) then GOTO EXIT-NOSUBCLASS END-IF
MOVE 4 TO norm1 *examining position 4 of char array NORMSQ *valid characters are 0-9, A-Z PERFORMVARYING norm2 FROM 1 BY 1 UNTIL norm2 > 36 if (NORMSQX(norm1) = ALPNUM(norm2)) then MOVE"0"TO NORMSQX(norm1) END-IF END-PERFORM
MOVE 5 TO norm1 *valid characters are 0-9, A-Z *examining position 5 of char array NORMSQ PERFORMVARYING norm2 FROM 1 BY 1 UNTIL norm2 > 36 if (NORMSQX(norm1) = ALPNUM(norm2)) then MOVE"0"TO NORMSQX(norm1) END-IF END-PERFORM
*implementation-defined subclasses are allowed for warnings *(class = 01). These equate to successful completion *SQLSTATE values of 00000. *Reference SQL-92 4.28 SQL-transactions, paragraph 2
if (NORMSQX(1) = "0"AND NORMSQX(2) = "1") then MOVE"0"TO NORMSQX(2) END-IF
.
EXIT-NOSUBCLASS. EXIT.
¤ Diese beiden folgenden Angebotsgruppen bietet das Unternehmen0.15Angebot
¤
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.