* 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/94 EMBEDDED COBOL LANGUAGE * NIST VALIDATION TEST SUITE V6.0 WITH X/OPEN SQL * * XOP708.pco * written by Susan Watters * * Length of Index Key at least 120 * * * REFERENCES * X/Open SQL CAE * Section 7.1.3 * * <embedded SQL program> * * date last changed 1.11.94 * **********************************************************
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, xop708.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 TEST 0708 *********************
DISPLAY" TEST0708 " DISPLAY" X/O,Limit on the total length of an Index Key" DISPLAY" X/OPEN CAE SQL Sec. 7.1.3 " DISPLAY" - - - - - - - - - - - - - - - - - - -" DISPLAY"### CREATE INDEX WIDEINDEX ON WIDETABLE(WIDE);" DISPLAY"### DROP INDEX WIDEINDEX;" DISPLAY"### CREATE INDEX WIDEINDEX ON WIDETAB(WIDE1, " DISPLAY"### WIDE2, WIDE3);" DISPLAY"=================================================" DISPLAY"test beginning" MOVE 0 TO errflg MOVE 0 TO flagerr MOVE 1 TO flag
EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD *set up database EXECSQL DROP INDEX WIDEINDEX END-EXEC MOVE SQLCODE TO SQL-COD EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD EXECSQLDELETEFROM WIDETABLE END-EXEC MOVE SQLCODE TO SQL-COD EXECSQLDELETEFROM WIDETAB END-EXEC MOVE SQLCODE TO SQL-COD
*set up first long row.
MOVEALL"BLAH"TO wide
EXECSQLINSERTINTO WIDETABLE
VALUES (:wide) END-EXEC MOVE SQLCODE TO SQL-COD
IF (SQLCODE NOT = 0) THEN COMPUTE flagerr = flagerr + 1 END-IF
*set up second long row.
MOVEALL"OH"TO wide
EXECSQLINSERTINTO WIDETABLE
VALUES (:wide) END-EXEC MOVE SQLCODE TO SQL-COD
IF (SQLCODE NOT = 0) THEN COMPUTE flagerr = flagerr + 1 END-IF
*set up third long row.
MOVEALL"AH"TO WIDE
EXECSQLINSERTINTO WIDETABLE
VALUES (:wide) END-EXEC. MOVE SQLCODE TO SQL-COD
IF (SQLCODE NOT = 0) THEN COMPUTE flagerr = flagerr + 1 END-IF
IF (flagerr NOT = 0) THEN DISPLAY"***INSERT failed (TEST STEP NUMBER 1a) ! ***" COMPUTE errflg = errflg + 1 END-IF
EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD MOVE"X"TO SQLSTATE MOVE 9999 TO SQLCODE
EXECSQL CREATE INDEX WIDEINDEX ON WIDETABLE(wide) END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK if (NORMSQ2 NOT = "00000"AND SQLCODE NOT = 0) then DISPLAY"*** Create Index Failed(TEST STEP NO 1) ***" COMPUTE errflg = errflg + 1 END-IF EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD EXECSQL DROP INDEX WIDEINDEX END-EXEC MOVE SQLCODE TO SQL-COD
EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD DISPLAY"============================================="
MOVE 0 TO flagerr
*Load values into wide1, wide2 and wide3 *wide1 MOVEALL"BLAH"TO wide1
IF (flagerr NOT = 0) THEN DISPLAY"*** INSERT failed (TEST STEP NUMBER 2a) ! ***" COMPUTE errflg = errflg + 1 END-IF
EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD MOVE"X"TO SQLSTATE MOVE 9999 TO SQLCODE EXECSQL CREATE UNIQUE INDEX WIDEINDEX ON WIDETAB(WIDE1, WIDE3 DESC, WIDE2 ASC) END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK if (NORMSQ2 NOT = "00000"AND SQLCODE NOT = 0) THEN DISPLAY"*** Create Index Failed(TEST STEP NO 2)!***" COMPUTE errflg = errflg + 1 END-IF EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD
EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD
******************** END TEST 0708 *********************" ****** 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.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.