* DISCLAIMER: * This program was reviewed by employees of NIST for * conformance to the SQL standards. * NIST assumes no responsibility for any party's use of * this program.
* X/Open and the 'X' symbol are registered trademarks of X/Open Company * Limited in the UK and other countries.
**************************************************************** * * COMMENT SECTION * * DATE 1994/05/05 EMBEDDED C LANGUAGE * X/Open SQL VALIDATION TEST SUITE V6.0 * * XOP719.PCO * WRITTEN BY: E. Pratt * * GRANT ALL with optional PRIVILEGES omitted. * * REFERENCES * X/Open CAE SQL * SECTION 5.3.9 * * <embedded SQL C program> * * DATE PROGRAM LAST CHANGED 1/11/94 * ****************************************************************
*Must be run under authorization identifier XOPEN2
*This test program must be run before xop720.pco, *xop721.pco, xop722.pco, xop723.pco
*Log on as user XOPEN2 MOVE"XOPEN2"TO uid CALL"AUTHID"USING uid MOVE"not logged in, not"TO uidx EXECSQLSELECT USER INTO :uidx FROM XOPEN1.ECCO 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"X/OPEN Extensions SQL Test Suite, V6.0, Embedded
- "COBOL, xop719.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
MOVE" "TO HCV
******************** BEGIN TEST0719 *******************
DISPLAY" This test program must be run before xop720.pco," DISPLAY" xop721.pco, xop722.pco, xop723.pco "
DISPLAY" TEST0719 " DISPLAY"X/O,GRANT ALL with optional PRIVILEGES omitted" DISPLAY" X/Open CAE SQL SEC. 5.3.9" DISPLAY" - - - - - - - - - - - - - - - - - - -" DISPLAY"*** GRANT ALL ON XOPEN1.AAA TO XOPEN3 WITH " DISPLAY"*** GRANT OPTION;" DISPLAY"*** GRANT ALL ON XOPEN1.BBB TO XOPEN3;" DISPLAY"*** SELECT B2 INTO :ch1 FROM XOPEN2V " DISPLAY"*** WHERE B1 = 'BD'; " DISPLAY"*** GRANT ALL ON XOPEN1.CCC TO XOPEN3 " DISPLAY"================================================="
*GRANT ALL with optional PRIVILEGES omitted, grantor
MOVE 0 TO errflg MOVE 1 TO flag
*Clear the tables first EXECSQLDELETEFROM XOPEN1.AAA END-EXEC MOVE SQLCODE TO SQL-COD EXECSQLDELETEFROM XOPEN1.BBB END-EXEC MOVE SQLCODE TO SQL-COD EXECSQLDELETEFROM XOPEN1.CCC END-EXEC MOVE SQLCODE TO SQL-COD EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD
*Load data into the working database tables EXECSQLINSERTINTO XOPEN1.AAA VALUES('AA', 'AB', 'AC') END-EXEC MOVE SQLCODE TO SQL-COD EXECSQLINSERTINTO XOPEN1.AAA VALUES('AD', 'AE', 'AF') END-EXEC MOVE SQLCODE TO SQL-COD EXECSQLINSERTINTO XOPEN1.AAA VALUES('AG', 'AH', 'AI') END-EXEC MOVE SQLCODE TO SQL-COD EXECSQLINSERTINTO XOPEN1.AAA VALUES('AJ', 'AK', 'AL') END-EXEC MOVE SQLCODE TO SQL-COD EXECSQLINSERTINTO XOPEN1.BBB VALUES('BA', 'BB', 'BC') END-EXEC MOVE SQLCODE TO SQL-COD EXECSQLINSERTINTO XOPEN1.BBB VALUES('BD', 'BE', 'BF') END-EXEC MOVE SQLCODE TO SQL-COD EXECSQLINSERTINTO XOPEN1.BBB VALUES('BG', 'BH', 'BI') END-EXEC MOVE SQLCODE TO SQL-COD EXECSQLINSERTINTO XOPEN1.BBB VALUES('BJ', 'BK', 'BL') END-EXEC MOVE SQLCODE TO SQL-COD EXECSQLINSERTINTO XOPEN1.CCC VALUES('CA', 'CB', 'CC') END-EXEC MOVE SQLCODE TO SQL-COD EXECSQLINSERTINTO XOPEN1.CCC VALUES('CD', 'CE', 'CF') END-EXEC MOVE SQLCODE TO SQL-COD EXECSQLINSERTINTO XOPEN1.CCC VALUES('CG', 'CH', 'CI') END-EXEC MOVE SQLCODE TO SQL-COD EXECSQLINSERTINTO XOPEN1.CCC VALUES('CJ', 'CK', 'CL') END-EXEC MOVE SQLCODE TO SQL-COD EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD
DISPLAY"=================================================" *Grantor holds all privileges, but has grant option *only for SELECT and CREATE MOVE"x"TO SQLSTATE EXECSQL GRANT ALLON XOPEN1.AAA TO XOPEN3 WITH
GRANT OPTION END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK if (NORMSQ2 NOT = "00000"OR SQLCODE NOT = 0) then DISPLAY"*** Problem found (TEST STEP NUMBER 1) ! *** " COMPUTE errflg = errflg + 1 END-IF
EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD DISPLAY"=================================================" *Grantor holds SELECT, INSERT, DELETE with GRANT OPTION, MOVE"x"TO SQLSTATE EXECSQL GRANT ALLON XOPEN1.BBB TO XOPEN3 END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK if (NORMSQ2 NOT = "00000"OR SQLCODE NOT = 0) then DISPLAY"*** Problem found (TEST STEP NUMBER 2) ! *** " COMPUTE errflg = errflg + 1 END-IF EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD
DISPLAY"=================================================" *Grantor holds SELECT, INSERT, DELETE with GRANT OPTION, MOVE"x"TO SQLSTATE MOVE" "TO ch1 *CREATE VIEW XOPEN2V AS SELECT B1, B2, B3 FROM XOPEN1.BBB EXECSQLSELECT B2 INTO :ch1 FROM XOPEN2V
WHERE B1 = 'BD'END-EXEC MOVE SQLCODE TO SQL-COD DISPLAY"SQLSTATE should be 00000, it is ", SQLSTATE DISPLAY"ch1 should be BE, it is ", ch1 PERFORM NOSUBCLASS THROUGH P213. if (NORMSQ2 NOT = "00000"OR ch1 NOT = "BE" ) then DISPLAY"*** Problem found (TEST STEP NUMBER 3) ! *** " COMPUTE errflg = errflg + 1 END-IF EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD
DISPLAY"=================================================" *Grantor holds INSERT, SELECT only without GRANT OPTION *Expect a warning for no privileges granted below MOVE"x"TO SQLSTATE MOVE"GRANT ALL ON XOPEN1.CCC TO XOPEN3"TO HCV EXECSQL PREPARE XOP719A FROM :HCV END-EXEC MOVE SQLCODE TO SQL-COD EXECSQL EXECUTE XOP719A END-EXEC MOVE SQLCODE TO SQL-COD DISPLAY"SQLSTATE should be 01007, it is ", SQLSTATE
if (SQLSTATE NOT = "01007") then DISPLAY"*** Problem found (TEST STEP NUMBER 4) ! *** " COMPUTE errflg = errflg + 1 END-IF EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD *No ROLLBACK WORK;-programs follow on from this one e.g. *xop720.pco, which require the above grants to exist
DISPLAY"number of errors detected is = ", errflg " " DISPLAY"### maximum number of errors is 4 ###"
EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD
******************** END TEST0719 *******************
****** TESTER MAY CHOOSE TO INSERT CODE FOR errcnt > 0 STOPRUN.
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 SQLSTORE *subclass begins in position 3 of char array NORMSQ MOVE 3 TO norm1 MOVE 14 TO norm2 PERFORMUNTIL norm2 > 36 if (NORMSQ(norm1) = ALPNUM3(norm2)) then MOVE'0'TO NORMSQ(norm1) END-IF ADD 1 TO norm2 END-PERFORM MOVE SQLS2 TO NORMSQ2 if (NORMSQ2 = SQLSTATE) then GOTO P213 END-IF *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)
MOVE 4 TO norm1 *examining position 4 of char array NORMSQ MOVE 1 TO norm2 PERFORMUNTIL norm2 > 36 if (NORMSQ(norm1) = ALPNUM3(norm2)) then MOVE'0'TO NORMSQ(norm1) END-IF ADD 1 TO norm2 END-PERFORM MOVE 5 TO norm1 *examining position 5 of char array NORMSQ MOVE 1 TO norm2 PERFORMUNTIL norm2 > 36 if (NORMSQ(norm1) = ALPNUM3(norm2)) then MOVE'0'TO NORMSQ(norm1) END-IF ADD 1 TO norm2 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 (NORMSQ(1) = '0'AND NORMSQ(2) = '1') then MOVE'0'TO NORMSQ(2) END-IF MOVE SQLS2 TO NORMSQ2.
P213.
*Test SQLCODE and SQLSTATE for normal completion
CHCKOK. MOVE 1 TO flag DISPLAY"SQLCODE should be '0'; its value is ", SQL-COD DISPLAY"SQLSTATE should be 00000; its value is ", SQLSTATE
PERFORM NOSUBCLASS THROUGH P213. if (SQLCODE NOT = 0 OR NORMSQ2 NOT = "00000") then MOVE 0 TO flag END-IF if (flag = 1 AND NORMSQ2 NOT = SQLSTATE) then DISPLAY"Valid implementation defined SQLSTATE accepted." END-IF
.
¤ Dauer der Verarbeitung: 0.15 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 ist noch experimentell.