**************************************************************** * * COMMENT SECTION * * DATE 1994/8/16 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. * * DML131.PCO * WRITTEN BY: David W. Flater * TRANSLATED AUTOMATICALLY FROM EMBEDDED C BY CHRIS SCHANZLE * * This routine tests the Information Schema. * * 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, dml131.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 TEST0683 ******************* MOVE 1 TO flag
COMPUTE int1 = -1 DISPLAY"SELECT COUNT(*) INTO :int1 FROM INFO_SCHEM.TABLES" DISPLAY" WHERE TABLE_SCHEM = 'FLATER' AND TABLE_NAME =
- " 'VISCHANGE';" EXECSQLSELECTCOUNT(*) INTO :int1 FROM INFO_SCHEM.TABLES
WHERE TABLE_SCHEM = 'FLATER'AND TABLE_NAME = 'VISCHANGE' 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 FROM
- " INFO_SCHEM.COLUMNS" DISPLAY" WHERE TABLE_SCHEM = 'FLATER' AND TABLE_NAME =
- " 'VISCHANGE';" EXECSQLSELECTCOUNT(*) INTO :int1 FROM INFO_SCHEM.COLUMNS
WHERE TABLE_SCHEM = 'FLATER'AND TABLE_NAME = 'VISCHANGE' 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" "
DISPLAY"COMMIT WORK;" EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY" "
*Table should exist
COMPUTE int1 = -1 DISPLAY"SELECT COUNT(*) INTO :int1 FROM INFO_SCHEM.TABLES" DISPLAY" WHERE TABLE_SCHEM = 'FLATER' AND TABLE_NAME =
- " 'VISCHANGE'" DISPLAY" AND TABLE_TYPE = 'BASE TABLE';" EXECSQLSELECTCOUNT(*) INTO :int1 FROM INFO_SCHEM.TABLES
WHERE TABLE_SCHEM = 'FLATER'AND TABLE_NAME = 'VISCHANGE' AND TABLE_TYPE = 'BASE TABLE'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
MOVE 0 TO int1 DISPLAY"SELECT COUNT(*) INTO :int1 FROM
- " INFO_SCHEM.COLUMNS" DISPLAY" WHERE TABLE_SCHEM = 'FLATER' AND TABLE_NAME =
- " 'VISCHANGE';" EXECSQLSELECTCOUNT(*) INTO :int1 FROM INFO_SCHEM.COLUMNS
WHERE TABLE_SCHEM = 'FLATER'AND TABLE_NAME = 'VISCHANGE' 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"ROLLBACK WORK;" EXECSQL ROLLBACK WORK END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY" "
DISPLAY"ALTER TABLE VISCHANGE DROP C1 RESTRICT;" EXECSQLALTER TABLE VISCHANGE DROP C1 RESTRICT 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" "
*Deleted column should not exist
MOVE 0 TO int1 DISPLAY"SELECT COUNT(*) INTO :int1 FROM
- " INFO_SCHEM.COLUMNS" DISPLAY" WHERE TABLE_SCHEM = 'FLATER' AND TABLE_NAME =
- " 'VISCHANGE';" EXECSQLSELECTCOUNT(*) INTO :int1 FROM INFO_SCHEM.COLUMNS
WHERE TABLE_SCHEM = 'FLATER'AND TABLE_NAME = 'VISCHANGE' 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
MOVE 0 TO int1 DISPLAY"SELECT COUNT(*) INTO :int1 FROM
- " INFO_SCHEM.COLUMNS" DISPLAY" WHERE TABLE_SCHEM = 'FLATER' AND TABLE_NAME =
- " 'VISCHANGE'" DISPLAY" AND COLUMN_NAME = 'C2';" EXECSQLSELECTCOUNT(*) INTO :int1 FROM INFO_SCHEM.COLUMNS
WHERE TABLE_SCHEM = 'FLATER'AND TABLE_NAME = 'VISCHANGE' AND COLUMN_NAME = 'C2'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"ROLLBACK WORK;" EXECSQL ROLLBACK WORK END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY" "
DISPLAY"DROP TABLE VISCHANGE CASCADE;" EXECSQL DROP TABLE VISCHANGE 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" "
*Table should not exist
COMPUTE int1 = -1 DISPLAY"SELECT COUNT(*) INTO :int1 FROM INFO_SCHEM.TABLES" DISPLAY" WHERE TABLE_SCHEM = 'FLATER' AND TABLE_NAME =
- " 'VISCHANGE';" EXECSQLSELECTCOUNT(*) INTO :int1 FROM INFO_SCHEM.TABLES
WHERE TABLE_SCHEM = 'FLATER'AND TABLE_NAME = 'VISCHANGE' 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 FROM
- " INFO_SCHEM.COLUMNS" DISPLAY" WHERE TABLE_SCHEM = 'FLATER' AND TABLE_NAME =
- " 'VISCHANGE';" EXECSQLSELECTCOUNT(*) INTO :int1 FROM INFO_SCHEM.COLUMNS
WHERE TABLE_SCHEM = 'FLATER'AND TABLE_NAME = 'VISCHANGE' 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('0683','pass','PCO') END-EXEC MOVE SQLCODE TO SQL-COD else DISPLAY" dml131.pco *** fail *** " EXECSQLINSERTINTO HU.TESTREPORT
VALUES('0683','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 TEST0683 ******************** ******************** BEGIN TEST0684 ******************* MOVE 1 TO flag
DISPLAY" TEST0684 " DISPLAY" INFO_SCHEM: Visibility to other users" DISPLAY"References:" DISPLAY" F# 2 -- Basic information schema" DISPLAY" FIPS Change Notice #1 -- Shortened
- " identifiers" DISPLAY" in INFO_SCHEM" DISPLAY" - - - - - - - - - - - - - - - - - - -"
COMPUTE SQLCODE = -1 MOVE"xxxxx"TO SQLSTATE
*This test checks for the correct levels of visibility in the *Information Schema when the user has different levels of *access to the target table.
*FLATER has SELECT on HU.WORKS
COMPUTE int1 = -1 DISPLAY"SELECT COUNT(*) INTO :int1 FROM INFO_SCHEM.TABLES" DISPLAY" WHERE TABLE_SCHEM = 'HU' AND TABLE_NAME =
- " 'WORKS'" DISPLAY" AND TABLE_TYPE = 'BASE TABLE';" EXECSQLSELECTCOUNT(*) INTO :int1 FROM INFO_SCHEM.TABLES
WHERE TABLE_SCHEM = 'HU'AND TABLE_NAME = 'WORKS' AND TABLE_TYPE = 'BASE TABLE'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
MOVE 0 TO int1 DISPLAY"SELECT COUNT(*) INTO :int1 FROM
- " INFO_SCHEM.COLUMNS" DISPLAY" WHERE TABLE_SCHEM = 'HU' AND TABLE_NAME =
- " 'WORKS';" EXECSQLSELECTCOUNT(*) INTO :int1 FROM INFO_SCHEM.COLUMNS
WHERE TABLE_SCHEM = 'HU'AND TABLE_NAME = 'WORKS' 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
*PUBLIC has INSERT on HU.TESTREPORT
COMPUTE int1 = -1 DISPLAY"SELECT COUNT(*) INTO :int1 FROM INFO_SCHEM.TABLES" DISPLAY" WHERE TABLE_SCHEM = 'HU' AND TABLE_NAME =
- " 'TESTREPORT'" DISPLAY" AND TABLE_TYPE = 'VIEW';" EXECSQLSELECTCOUNT(*) INTO :int1 FROM INFO_SCHEM.TABLES
WHERE TABLE_SCHEM = 'HU'AND TABLE_NAME = 'TESTREPORT' AND TABLE_TYPE = 'VIEW'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 FROM INFO_SCHEM.VIEWS" DISPLAY" WHERE TABLE_SCHEM = 'HU' AND TABLE_NAME =
- " 'TESTREPORT';" EXECSQLSELECTCOUNT(*) INTO :int1 FROM INFO_SCHEM.VIEWS
WHERE TABLE_SCHEM = 'HU'AND TABLE_NAME = 'TESTREPORT' 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
MOVE 0 TO int1 DISPLAY"SELECT COUNT(*) INTO :int1 FROM
- " INFO_SCHEM.COLUMNS" DISPLAY" WHERE TABLE_SCHEM = 'HU' AND TABLE_NAME =
- " 'TESTREPORT';" EXECSQLSELECTCOUNT(*) INTO :int1 FROM INFO_SCHEM.COLUMNS
WHERE TABLE_SCHEM = 'HU'AND TABLE_NAME = 'TESTREPORT' 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
*FLATER has UPDATE (COL1) on HU.VTABLE
COMPUTE int1 = -1 DISPLAY"SELECT COUNT(*) INTO :int1 FROM INFO_SCHEM.TABLES" DISPLAY" WHERE TABLE_SCHEM = 'HU' AND TABLE_NAME =
- " 'VTABLE'" DISPLAY" AND TABLE_TYPE = 'BASE TABLE';" EXECSQLSELECTCOUNT(*) INTO :int1 FROM INFO_SCHEM.TABLES
WHERE TABLE_SCHEM = 'HU'AND TABLE_NAME = 'VTABLE' AND TABLE_TYPE = 'BASE TABLE'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
MOVE 0 TO int1 DISPLAY"SELECT COUNT(*) INTO :int1 FROM
- " INFO_SCHEM.COLUMNS" DISPLAY" WHERE TABLE_SCHEM = 'HU' AND TABLE_NAME =
- " 'VTABLE';" EXECSQLSELECTCOUNT(*) INTO :int1 FROM INFO_SCHEM.COLUMNS
WHERE TABLE_SCHEM = 'HU'AND TABLE_NAME = 'VTABLE' 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
*FLATER has ZILCH on HU.FF
COMPUTE int1 = -1 DISPLAY"SELECT COUNT(*) INTO :int1 FROM INFO_SCHEM.TABLES" DISPLAY" WHERE TABLE_SCHEM = 'HU' AND TABLE_NAME = 'FF';" EXECSQLSELECTCOUNT(*) INTO :int1 FROM INFO_SCHEM.TABLES
WHERE TABLE_SCHEM = 'HU'AND TABLE_NAME = 'FF'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 FROM
- " INFO_SCHEM.COLUMNS" DISPLAY" WHERE TABLE_SCHEM = 'HU' AND TABLE_NAME = 'FF';" EXECSQLSELECTCOUNT(*) INTO :int1 FROM INFO_SCHEM.COLUMNS
WHERE TABLE_SCHEM = 'HU'AND TABLE_NAME = 'FF'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('0684','pass','PCO') END-EXEC MOVE SQLCODE TO SQL-COD else DISPLAY" dml131.pco *** fail *** " EXECSQLINSERTINTO HU.TESTREPORT
VALUES('0684','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 TEST0684 ******************** ******************** BEGIN TEST0685 ******************* MOVE 1 TO flag
COMPUTE int1 = -1 DISPLAY"SELECT COUNT(*) INTO :int1" DISPLAY" FROM INFO_SCHEM.TABLE_PRIVILEGES" DISPLAY" WHERE TABLE_SCHEM = 'FLATER' AND GRANTOR <>
- " '_SYSTEM'" DISPLAY" AND GRANTEE = 'FLATER';" EXECSQLSELECTCOUNT(*) INTO :int1 FROM INFO_SCHEM.TABLE_PRIVILEGES
WHERE TABLE_SCHEM = 'FLATER'AND GRANTOR <> '_SYSTEM' AND GRANTEE = 'FLATER'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 INFO_SCHEM.COLUMN_PRIVILEGES" DISPLAY" WHERE TABLE_SCHEM = 'FLATER' AND GRANTOR <>
- " '_SYSTEM'" DISPLAY" AND GRANTEE = 'FLATER';" EXECSQLSELECTCOUNT(*) INTO :int1 FROM INFO_SCHEM.COLUMN_PRIVILEGES
WHERE TABLE_SCHEM = 'FLATER'AND GRANTOR <> '_SYSTEM' AND GRANTEE = 'FLATER'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
*This one was a GRANT ALL TO SCHANZLE. Five rows: *SELECT, INSERT, UPDATE, DELETE, REFERENCES
MOVE 0 TO int1 DISPLAY"SELECT COUNT(*) INTO :int1" DISPLAY" FROM INFO_SCHEM.TABLE_PRIVILEGES" DISPLAY" WHERE TABLE_SCHEM = 'FLATER' AND TABLE_NAME =
- " 'VS1'" DISPLAY" AND GRANTOR = 'FLATER' AND GRANTEE = 'SCHANZLE'" DISPLAY" AND IS_GRANTABLE = 'NO';" EXECSQLSELECTCOUNT(*) INTO :int1 FROM INFO_SCHEM.TABLE_PRIVILEGES
WHERE TABLE_SCHEM = 'FLATER'AND TABLE_NAME = 'VS1' AND GRANTOR = 'FLATER'AND GRANTEE = 'SCHANZLE' AND IS_GRANTABLE = 'NO'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
*5 times degree of view = 10
MOVE 0 TO int1 DISPLAY"SELECT COUNT(*) INTO :int1" DISPLAY" FROM INFO_SCHEM.COLUMN_PRIVILEGES" DISPLAY" WHERE TABLE_SCHEM = 'FLATER' AND TABLE_NAME =
- " 'VS1'" DISPLAY" AND GRANTOR = 'FLATER' AND GRANTEE = 'SCHANZLE'" DISPLAY" AND IS_GRANTABLE = 'NO';" EXECSQLSELECTCOUNT(*) INTO :int1 FROM INFO_SCHEM.COLUMN_PRIVILEGES
WHERE TABLE_SCHEM = 'FLATER'AND TABLE_NAME = 'VS1' AND GRANTOR = 'FLATER'AND GRANTEE = 'SCHANZLE' AND IS_GRANTABLE = 'NO'END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY"int1 should be 10; its value is ", int1 if (int1 NOT = 10) then MOVE 0 TO flag END-IF
*This one was GRANT SELECT TO PUBLIC
MOVE 0 TO int1 DISPLAY"SELECT COUNT(*) INTO :int1" DISPLAY" FROM INFO_SCHEM.TABLE_PRIVILEGES" DISPLAY" WHERE TABLE_SCHEM = 'HU' AND TABLE_NAME =
- " 'PROJ'" DISPLAY" AND GRANTOR = 'HU' AND GRANTEE = 'PUBLIC'" DISPLAY" AND IS_GRANTABLE = 'NO';" EXECSQLSELECTCOUNT(*) INTO :int1 FROM INFO_SCHEM.TABLE_PRIVILEGES
WHERE TABLE_SCHEM = 'HU'AND TABLE_NAME = 'PROJ' AND GRANTOR = 'HU'AND GRANTEE = 'PUBLIC' AND IS_GRANTABLE = 'NO'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
MOVE 0 TO int1 DISPLAY"SELECT COUNT(*) INTO :int1" DISPLAY" FROM INFO_SCHEM.COLUMN_PRIVILEGES" DISPLAY" WHERE TABLE_SCHEM = 'HU' AND TABLE_NAME =
- " 'PROJ'" DISPLAY" AND GRANTOR = 'HU' AND GRANTEE = 'PUBLIC'" DISPLAY" AND IS_GRANTABLE = 'NO';" EXECSQLSELECTCOUNT(*) INTO :int1 FROM INFO_SCHEM.COLUMN_PRIVILEGES
WHERE TABLE_SCHEM = 'HU'AND TABLE_NAME = 'PROJ' AND GRANTOR = 'HU'AND GRANTEE = 'PUBLIC' AND IS_GRANTABLE = 'NO'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
*GRANT INSERT TO PUBLIC WITH GRANT OPTION
MOVE 0 TO int1 DISPLAY"SELECT COUNT(*) INTO :int1" DISPLAY" FROM INFO_SCHEM.TABLE_PRIVILEGES" DISPLAY" WHERE TABLE_SCHEM = 'HU' AND TABLE_NAME =
- " 'TESTREPORT'" DISPLAY" AND GRANTOR = 'HU' AND GRANTEE = 'PUBLIC'" DISPLAY" AND IS_GRANTABLE = 'YES' AND PRIVILEGE_TYPE =
- " 'INSERT';" EXECSQLSELECTCOUNT(*) INTO :int1 FROM INFO_SCHEM.TABLE_PRIVILEGES
WHERE TABLE_SCHEM = 'HU'AND TABLE_NAME = 'TESTREPORT' AND GRANTOR = 'HU'AND GRANTEE = 'PUBLIC' AND IS_GRANTABLE = 'YES'AND PRIVILEGE_TYPE = 'INSERT' 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 = -153 DISPLAY"SELECT COUNT(*) INTO :int1" DISPLAY" FROM INFO_SCHEM.COLUMN_PRIVILEGES" DISPLAY" WHERE TABLE_SCHEM = 'HU' AND TABLE_NAME =
- " 'TESTREPORT'" DISPLAY" AND GRANTOR = 'HU' AND GRANTEE = 'PUBLIC'" DISPLAY" AND IS_GRANTABLE = 'YES' AND PRIVILEGE_TYPE =
- " 'INSERT';" EXECSQLSELECTCOUNT(*) INTO :int1 FROM INFO_SCHEM.COLUMN_PRIVILEGES
WHERE TABLE_SCHEM = 'HU'AND TABLE_NAME = 'TESTREPORT' AND GRANTOR = 'HU'AND GRANTEE = 'PUBLIC' AND IS_GRANTABLE = 'YES'AND PRIVILEGE_TYPE = 'INSERT' 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
MOVE 62 TO int1 DISPLAY"SELECT COUNT(*) INTO :int1" DISPLAY" FROM INFO_SCHEM.COLUMN_PRIVILEGES" DISPLAY" WHERE TABLE_SCHEM = 'HU' AND TABLE_NAME =
- " 'TESTREPORT'" DISPLAY" AND GRANTOR = 'HU' AND (GRANTEE <> 'PUBLIC'" DISPLAY" OR IS_GRANTABLE <> 'YES' OR PRIVILEGE_TYPE <>
- " 'INSERT');" EXECSQLSELECTCOUNT(*) INTO :int1 FROM INFO_SCHEM.COLUMN_PRIVILEGES
WHERE TABLE_SCHEM = 'HU'AND TABLE_NAME = 'TESTREPORT' AND GRANTOR = 'HU'AND (GRANTEE <> 'PUBLIC' OR IS_GRANTABLE <> 'YES'OR PRIVILEGE_TYPE <> 'INSERT') 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
*GRANT UPDATE (COL1) ON VTABLE TO FLATER *The syntax for column-specific privileges is hidden in *10.3 <privileges> instead of 11.36 <grant statement>
COMPUTE int1 = -1 DISPLAY"SELECT COUNT(*) INTO :int1" DISPLAY" FROM INFO_SCHEM.TABLE_PRIVILEGES" DISPLAY" WHERE TABLE_SCHEM = 'HU' AND TABLE_NAME =
- " 'VTABLE'" DISPLAY" AND GRANTOR = 'HU';" EXECSQLSELECTCOUNT(*) INTO :int1 FROM INFO_SCHEM.TABLE_PRIVILEGES
WHERE TABLE_SCHEM = 'HU'AND TABLE_NAME = 'VTABLE' AND GRANTOR = 'HU'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 INFO_SCHEM.COLUMN_PRIVILEGES" DISPLAY" WHERE TABLE_SCHEM = 'HU' AND TABLE_NAME =
- " 'VTABLE'" DISPLAY" AND GRANTOR = 'HU';" EXECSQLSELECTCOUNT(*) INTO :int1 FROM INFO_SCHEM.COLUMN_PRIVILEGES
WHERE TABLE_SCHEM = 'HU'AND TABLE_NAME = 'VTABLE' AND GRANTOR = 'HU'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 INFO_SCHEM.COLUMN_PRIVILEGES" DISPLAY" WHERE TABLE_SCHEM = 'HU' AND TABLE_NAME =
- " 'VTABLE'" DISPLAY" AND GRANTOR = 'HU' AND COLUMN_NAME = 'COL1'" DISPLAY" AND PRIVILEGE_TYPE = 'UPDATE' AND" DISPLAY" IS_GRANTABLE = 'NO' AND GRANTEE = 'FLATER';" EXECSQLSELECTCOUNT(*) INTO :int1 FROM INFO_SCHEM.COLUMN_PRIVILEGES
WHERE TABLE_SCHEM = 'HU'AND TABLE_NAME = 'VTABLE' AND GRANTOR = 'HU'AND COLUMN_NAME = 'COL1' AND PRIVILEGE_TYPE = 'UPDATE'AND
IS_GRANTABLE = 'NO'AND GRANTEE = 'FLATER'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
*This should not be visible.
COMPUTE int1 = -1 DISPLAY"SELECT COUNT(*) INTO :int1" DISPLAY" FROM INFO_SCHEM.TABLE_PRIVILEGES" DISPLAY" WHERE TABLE_SCHEM = 'HU' AND TABLE_NAME = 'FF';" EXECSQLSELECTCOUNT(*) INTO :int1 FROM INFO_SCHEM.TABLE_PRIVILEGES
WHERE TABLE_SCHEM = 'HU'AND TABLE_NAME = 'FF'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 INFO_SCHEM.COLUMN_PRIVILEGES" DISPLAY" WHERE TABLE_SCHEM = 'HU' AND TABLE_NAME = 'FF';" EXECSQLSELECTCOUNT(*) INTO :int1 FROM INFO_SCHEM.COLUMN_PRIVILEGES
WHERE TABLE_SCHEM = 'HU'AND TABLE_NAME = 'FF'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
*Check future grant not yet reflected
COMPUTE int1 = -1 DISPLAY"SELECT COUNT(*) INTO :int1" DISPLAY" FROM INFO_SCHEM.TABLE_PRIVILEGES" DISPLAY" WHERE TABLE_SCHEM = 'FLATER' AND TABLE_NAME =
- " 'BASE_WCOV'" DISPLAY" AND GRANTOR = 'FLATER' AND GRANTEE = 'CUGINI';" EXECSQLSELECTCOUNT(*) INTO :int1 FROM INFO_SCHEM.TABLE_PRIVILEGES
WHERE TABLE_SCHEM = 'FLATER'AND TABLE_NAME = 'BASE_WCOV'AND GRANTOR = 'FLATER'AND GRANTEE = 'CUGINI' 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 INFO_SCHEM.COLUMN_PRIVILEGES" DISPLAY" WHERE TABLE_SCHEM = 'FLATER' AND TABLE_NAME =
- " 'BASE_WCOV'" DISPLAY" AND GRANTOR = 'FLATER' AND GRANTEE = 'CUGINI';" EXECSQLSELECTCOUNT(*) INTO :int1 FROM INFO_SCHEM.COLUMN_PRIVILEGES
WHERE TABLE_SCHEM = 'FLATER'AND TABLE_NAME = 'BASE_WCOV'AND GRANTOR = 'FLATER'AND GRANTEE = 'CUGINI' 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" "
*Check visibility of new grant
DISPLAY"GRANT DELETE ON BASE_WCOV TO CUGINI;" EXECSQL GRANT DELETEON BASE_WCOV TO CUGINI 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" "
COMPUTE int1 = -1 DISPLAY"SELECT COUNT(*) INTO :int1" DISPLAY" FROM INFO_SCHEM.TABLE_PRIVILEGES" DISPLAY" WHERE TABLE_SCHEM = 'FLATER' AND TABLE_NAME =
- " 'BASE_WCOV'" DISPLAY" AND GRANTOR = 'FLATER' AND GRANTEE = 'CUGINI'" DISPLAY" AND PRIVILEGE_TYPE = 'DELETE' AND IS_GRANTABLE =
- " 'NO';" EXECSQLSELECTCOUNT(*) INTO :int1 FROM INFO_SCHEM.TABLE_PRIVILEGES
WHERE TABLE_SCHEM = 'FLATER'AND TABLE_NAME = 'BASE_WCOV' AND GRANTOR = 'FLATER'AND GRANTEE = 'CUGINI' AND PRIVILEGE_TYPE = 'DELETE'AND IS_GRANTABLE = 'NO' 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 INFO_SCHEM.TABLE_PRIVILEGES" DISPLAY" WHERE TABLE_SCHEM = 'FLATER' AND TABLE_NAME =
- " 'BASE_WCOV'" DISPLAY" AND GRANTOR = 'FLATER' AND GRANTEE = 'CUGINI';" EXECSQLSELECTCOUNT(*) INTO :int1 FROM INFO_SCHEM.TABLE_PRIVILEGES
WHERE TABLE_SCHEM = 'FLATER'AND TABLE_NAME = 'BASE_WCOV'AND GRANTOR = 'FLATER'AND GRANTEE = 'CUGINI' 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 INFO_SCHEM.COLUMN_PRIVILEGES" DISPLAY" WHERE TABLE_SCHEM = 'FLATER' AND TABLE_NAME =
- " 'BASE_WCOV'" DISPLAY" AND GRANTOR = 'FLATER' AND GRANTEE = 'CUGINI'" DISPLAY" AND PRIVILEGE_TYPE = 'DELETE' AND IS_GRANTABLE =
- " 'NO';" EXECSQLSELECTCOUNT(*) INTO :int1 FROM INFO_SCHEM.COLUMN_PRIVILEGES
WHERE TABLE_SCHEM = 'FLATER'AND TABLE_NAME = 'BASE_WCOV'AND GRANTOR = 'FLATER'AND GRANTEE = 'CUGINI'AND PRIVILEGE_TYPE = 'DELETE'AND
IS_GRANTABLE = 'NO'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 INFO_SCHEM.COLUMN_PRIVILEGES" DISPLAY" WHERE TABLE_SCHEM = 'FLATER' AND TABLE_NAME =
- " 'BASE_WCOV'" DISPLAY" AND GRANTOR = 'FLATER' AND GRANTEE = 'CUGINI';" EXECSQLSELECTCOUNT(*) INTO :int1 FROM INFO_SCHEM.COLUMN_PRIVILEGES
WHERE TABLE_SCHEM = 'FLATER'AND TABLE_NAME = 'BASE_WCOV'AND GRANTOR = 'FLATER'AND GRANTEE = 'CUGINI'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"ROLLBACK WORK;" EXECSQL ROLLBACK WORK END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY" "
DISPLAY"REVOKE DELETE ON BASE_WCOV FROM CUGINI CASCADE;" EXECSQL REVOKE DELETEON BASE_WCOV FROM CUGINI 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" "
*Check that revoke also worked
COMPUTE int1 = -1 DISPLAY"SELECT COUNT(*) INTO :int1" DISPLAY" FROM INFO_SCHEM.TABLE_PRIVILEGES" DISPLAY" WHERE TABLE_SCHEM = 'FLATER' AND TABLE_NAME =
- " 'BASE_WCOV'" DISPLAY" AND GRANTOR = 'FLATER' AND GRANTEE = 'CUGINI';" EXECSQLSELECTCOUNT(*) INTO :int1 FROM INFO_SCHEM.TABLE_PRIVILEGES
WHERE TABLE_SCHEM = 'FLATER'AND TABLE_NAME = 'BASE_WCOV'AND GRANTOR = 'FLATER'AND GRANTEE = 'CUGINI'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 INFO_SCHEM.COLUMN_PRIVILEGES" DISPLAY" WHERE TABLE_SCHEM = 'FLATER' AND TABLE_NAME =
- " 'BASE_WCOV'" DISPLAY" AND GRANTOR = 'FLATER' AND GRANTEE = 'CUGINI';" EXECSQLSELECTCOUNT(*) INTO :int1 FROM INFO_SCHEM.COLUMN_PRIVILEGES
WHERE TABLE_SCHEM = 'FLATER'AND TABLE_NAME = 'BASE_WCOV'AND GRANTOR = 'FLATER'AND GRANTEE = 'CUGINI' 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('0685','pass','PCO') END-EXEC MOVE SQLCODE TO SQL-COD else DISPLAY" dml131.pco *** fail *** " EXECSQLINSERTINTO HU.TESTREPORT
VALUES('0685','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 TEST0685 ******************** ******************** BEGIN TEST0686 ******************* MOVE 1 TO flag
DISPLAY"CREATE TABLE FEAT16 (" DISPLAY" EMPNUM INT PRIMARY KEY," DISPLAY" PNUM INT UNIQUE);" EXECSQL CREATE TABLE FEAT16 (
EMPNUM INT PRIMARY KEY,
PNUM INT UNIQUE) 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" "
*PRIMARY KEY implies NOT NULL but UNIQUE does not
MOVE 0 TO int1 DISPLAY"SELECT COUNT(*) INTO :int1" DISPLAY" FROM INFO_SCHEM.COLUMNS WHERE TABLE_SCHEM =
- " 'FLATER'" DISPLAY" AND TABLE_NAME = 'FEAT16' AND COLUMN_NAME =
- " 'EMPNUM'" DISPLAY" AND IS_NULLABLE = 'NO';" EXECSQLSELECTCOUNT(*) INTO :int1 FROM INFO_SCHEM.COLUMNS WHERE TABLE_SCHEM = 'FLATER' AND TABLE_NAME = 'FEAT16'AND COLUMN_NAME = 'EMPNUM' AND IS_NULLABLE = 'NO'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
MOVE 0 TO int1 DISPLAY"SELECT COUNT(*) INTO :int1" DISPLAY" FROM INFO_SCHEM.COLUMNS WHERE TABLE_SCHEM =
- " 'FLATER'" DISPLAY" AND TABLE_NAME = 'FEAT16' AND COLUMN_NAME =
- " 'PNUM'" DISPLAY" AND IS_NULLABLE = 'YES';" EXECSQLSELECTCOUNT(*) INTO :int1 FROM INFO_SCHEM.COLUMNS WHERE TABLE_SCHEM = 'FLATER' AND TABLE_NAME = 'FEAT16'AND COLUMN_NAME = 'PNUM' AND IS_NULLABLE = 'YES'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"ROLLBACK WORK;" EXECSQL ROLLBACK WORK END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY" "
DISPLAY"DROP TABLE FEAT16 CASCADE;" EXECSQL DROP TABLE FEAT16 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('0686','pass','PCO') END-EXEC MOVE SQLCODE TO SQL-COD else DISPLAY" dml131.pco *** fail *** " EXECSQLINSERTINTO HU.TESTREPORT
VALUES('0686','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 TEST0686 ******************** ******************** BEGIN TEST0687 ******************* MOVE 1 TO flag
MOVE 0 TO int1 DISPLAY"SELECT COUNT(*) INTO :int1" DISPLAY" FROM INFO_SCHEM.SCHEMATA" DISPLAY" WHERE SCHEM_NAME = 'SHIRLEY_HURWITZ' AND" DISPLAY" SCHEM_OWNER = 'FLATER';" EXECSQLSELECTCOUNT(*) INTO :int1 FROM INFO_SCHEM.SCHEMATA
WHERE SCHEM_NAME = 'SHIRLEY_HURWITZ'AND
SCHEM_OWNER = 'FLATER'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
MOVE 0 TO int1 DISPLAY"SELECT COUNT(*) INTO :int1" DISPLAY" FROM INFO_SCHEM.SCHEMATA" DISPLAY" WHERE SCHEM_NAME = 'LEN_GALLAGHER' AND" DISPLAY" SCHEM_OWNER = 'FLATER';" EXECSQLSELECTCOUNT(*) INTO :int1 FROM INFO_SCHEM.SCHEMATA
WHERE SCHEM_NAME = 'LEN_GALLAGHER'AND
SCHEM_OWNER = 'FLATER'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"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('0687','pass','PCO') END-EXEC MOVE SQLCODE TO SQL-COD else DISPLAY" dml131.pco *** fail *** " EXECSQLINSERTINTO HU.TESTREPORT
VALUES('0687','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 TEST0687 ******************** **** 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.
Messung V0.5
¤ Dauer der Verarbeitung: 0.20 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 und die Messung sind noch experimentell.