* 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/10/20 EMBEDDED C LANGUAGE * X/Open SQL VALIDATION TEST SUITE V6.0 * * XOP707.PCO * WRITTEN BY: Phil Brown * * THIS ROUTINE CHECKS THAT ANY LIMIT ON THE DEPTH OF NESTED * SUB-QUERIES IN A STATEMENT IS NOT LESS THAN NINE(9) * * REFERENCES * X/Open CAE SQL * Section 7.1.2 f. Additional Limits * * DATE PROGRAM LAST CHANGED 1994/10/31 * ****************************************************************
MOVE"XOPEN1"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, xop707.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 1 TO FLAG
******************** BEGIN TEST0707 *******************
DISPLAY" TEST0707 " DISPLAY"X/O,Limit on depth of nested sub-queries " DISPLAY"X/OPEN CAE SQL Sec. 7.1.2f" DISPLAY" - - - - - - - - - - - - - - - - - - -" DISPLAY"### SELECT EMPNUM, EMPNAME INTO :EMPNO1, :EMPNA1" DISPLAY"### FROM STAFF" DISPLAY"### WHERE EMPNUM NOT IN (SELECT EMPNUM FROM
- " WORKS" DISPLAY"### WHERE PNUM IN (SELECT PNUM FROM PROJ" DISPLAY"### WHERE PTYPE IN (SELECT PTYPE FROM PROJ" DISPLAY"### WHERE PNUM <> 'P5' AND PNUM" DISPLAY"### IN (SELECT PNUM FROM WORKS " DISPLAY"### WHERE EMPNUM <> 'E1'" DISPLAY"### AND EMPNUM IN (SELECT EMPNUM FROM WORKS" DISPLAY"### WHERE PNUM IN (SELECT PNUM FROM PROJ" DISPLAY"### WHERE PTYPE = (SELECT DISTINCT PTYPE FROM
- " PROJ" DISPLAY"### WHERE CITY = (SELECT DISTINCT CITY FROM
- " STAFF S8" DISPLAY"### WHERE EXISTS (SELECT EMPNUM FROM WORKS W9" DISPLAY"### WHERE W9.HOURS < 20 AND S8.EMPNUM =
- " W9.EMPNUM" DISPLAY"### )))))))));" DISPLAY "===================================================="
MOVE 0 TO errflg MOVE"*****"TO SQLSTATE MOVE 9999999 TO SQLCODE MOVE"ZZZ"TO EMPNO1 MOVE"Nobody78901234567890"TO EMPNA1
EXECSQLSELECT EMPNUM, EMPNAME INTO :EMPNO1, :EMPNA1 FROM STAFF
WHERE EMPNUM NOTIN
(SELECT EMPNUM FROM WORKS
WHERE PNUM IN
(SELECT PNUM FROM PROJ
WHERE PTYPE IN
(SELECT PTYPE FROM PROJ
WHERE PNUM <> 'P5'AND PNUM IN
(SELECT PNUM FROM WORKS
WHERE EMPNUM <> 'E1'AND EMPNUM IN
(SELECT EMPNUM FROM WORKS
WHERE PNUM IN
(SELECT PNUM FROM PROJ
WHERE PTYPE =
(SELECT DISTINCT PTYPE FROM PROJ
WHERE CITY =
(SELECT DISTINCT CITY FROM STAFF S8
WHERE EXISTS
(SELECT EMPNUM FROM WORKS W9
WHERE W9.HOURS < 20 AND S8.EMPNUM = W9.EMPNUM
))))))))) END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK
DISPLAY"EMPNO expected E5, returned ", EMPNO1 " " DISPLAY"EMPNAME expected Ed, returned ", EMPNA1 " "
if (EMPNO1 NOT = "E5 "OR
EMPNA1 NOT = "Ed ") then MOVE 1 TO errflg END-IF
EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD
******************** END TEST0707 *******************
****** TESTER MAY CHOOSE TO INSERT CODE FOR errcnt > 0 STOPRUN.
* **** Procedures for PERFORM statements
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
MOVE 3 TO norm1 *subclass begins in position 3 of char array NORMSQ 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.
DISPLAY"SQLCODE should be 0; its value is ", SQL-COD DISPLAY"SQLSTATE should be 00000; its value is ", SQLSTATE
PERFORM NOSUBCLASS THROUGH P213.
*If either status indicator shows success, set flag to zero
if (SQLCODE = 0 OR NORMSQ2 = "00000") then MOVE 0 TO flag else MOVE 1 TO errflg END-IF if (flag = 1 AND NORMSQ2 NOT = SQLSTATE) then DISPLAY"Valid implementation defined SQLSTATE accepted." END-IF
.
¤ Dauer der Verarbeitung: 0.13 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.