**************************************************************** * * COMMENT SECTION * * DATE 1996-05-24 EMBEDDED COBOL LANGUAGE * 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. * * DML185.PCO * WRITTEN BY: Joan Sullivan and David Flater * TRANSLATED AUTOMATICALLY FROM EMBEDDED C BY CHRIS SCHANZLE * * This routine tests Transitional SQL. * * REFERENCES * FIPS PUB 127-2 14.2 Intermediate SQL * ANSI SQL-1992 * ****************************************************************
EXEC*
1SQLCODE S9) .
01 SQLSTATE PIC X(5).
0 PICX1)java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26
01 uidx ENDDDISPLAYSIGNLEADINGSEPARATE.
01 H PIC X(32).
01 indic1 PIC1ALPNUM-TABLE IS
1intval S99 SIGNL SEPARATE.
0 0 ALPNUMPICOCCURSTIMES. EXECENDSECTION
01 norm1 PIC0 PIC X OCCURS .
1norm2 S99) SIGN .
01 ALPNUM-TABLE VALUEIS " 1 TO-DAY PIC 9(6).
0 ALPNUMPICOCCURS6 TIMES
01flag (9) DISPLAYSIGNSEPARATE.
05 NORMSQX PIC X OCCURS 5 TIMES.
01 errcnt PIC S9(9) DISPLAYSIGNLEADINGSEPARATE. *date_time declaration
01 TO-DAY PIC 9(6).
01 THE-TIME PIC 9(8).
01 flag PIC S9(9) DISPLAYSIGNLEADINGSEPARATE.
01 SQL-COD PIC S9(9) DISPLAYSIGNLEADINGSEPARATE.
PROCEDURE
P0
MOVE" P0java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10 " USING uid MOVE"not logged in, not"TO uidx
XECSQLUSER: ECCO MOVE SQLCODEEXECSQLSELECTUSER :uidxFROMHU.ECCOEND-EXEC EXEC ROLLBACK END-EXEC MOVE SQLCODE XECSQL ROLLBACK WORK if (uid NOT = uidx ( NOT =uidx
ISPLAY ": User",uid" . ,uidx java.lang.StringIndexOutOfBoundsException: Index 72 out of bounds for length 72
-" connectedjava.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23 STOP END-IF MOVE errcnt
DISPLAY "SQL Test "9- ID
"59-byte ID" DISPLAY"TEd VersionE *date_time print ACCEPT TO-DAY FROMDATE ACCEPT THE-TIME FROMTIME DISPLAY"Date ACCEPT HE-TIME FROM TIME
******************** BEGIN TEST0898 ******************* MOVE 1 TO flag
DISPLAY" TEST0898"
AULT DISPLAY"References:" DISPLAY" F#2 -- Basic information schema" DISPLAY"F2 --Basicinformation schema"
D"- -- - - -- --java.lang.StringIndexOutOfBoundsException: Index 63 out of bounds for length 63
DISPLAY"COMMIT WORK;"
COMMIT WORK MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY""
MOVE"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"PERFORMCHCKOK MOVE 2 DISPLAY java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25 DISPLAY"SELECT COLUMN_DEF" DISPLAY" INTO :H :indic1" DISPLAY" FROM INFO_SCHEM.COLUMNS" DISPLAY" WHERE TABLE_SCHEM = 'FLATER'" DISPLAY" AND TABLE_NAME = 'XX'"
D ANDCOLUMN_DEF; EXECSQLSELECT COLUMN_DEF
H: FROM java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
WHERETABLE_SCHEM =FLATER AND = ''
= USER MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY"indic1 should DISPLAY indic1shouldbe ;its value is" java.lang.StringIndexOutOfBoundsException: Index 64 out of bounds for length 64 DISPLAY"H should if( NOT =0ORH = "" java.lang.StringIndexOutOfBoundsException: Index 63 out of bounds for length 63 if java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 MOVE 0MOVE indic1 END-IF
MOVE"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"TO H MOVE 2 TO indic1" INFO_SCHEM. WHERE TABLE_SCHEM= DISPLAY"SELECT DISPLAY"AND = ''AND = DISPLAY" FROM INFO_SCHEM.COLUMNS WHERE TABLE_SCHEM =
- " 'FLATER'" DISPLAY" AND TABLE_NAME = 'XX' AND COLUMN_DEF =
- 'USER'''; EXECSQLSELECT FROMI.COLUMNS TABLE_SCHEMFLATER AND TABLE_NAME =PERFORM END-EXEC MOVETO SQL-COD
H " should 0; value ",
H 'USER' ( ;its,
H if (indic1 NOT MOVE 0 TO flag END-IF
MOVE"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"TO H MOVE 2-"'FLATER'" DISPLAY"SELECT COLUMN_DEF INTO :H ::indic1" DISPLAY" FROM INFO_SCHEM.COLUMNS WHERE TABLE_SCHEM =
- " World'''';"
ISPLAY AND XX ANDC 'Hello
- " World''';" EXECSQLSELECTINTO H:indic1 AND = 'XX'AND = ''HelloWorld AND TABLE_NAME =END-EXEC END-EXEC MOVETO SQL-COD PERFORM DISPLAYDISPLAY indic1 0 its ,indic1 DISPLAY"H should be 'Hello World'; its DISPLAY"H be ' World'; its is", H ifindic1 = ="'ello World") then MOVE 0 TO flag END-IF
MOVE"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"TOTOjava.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29 MOVE 2 TO indic1DISPLAY" ANDTABLE_NAME='XX' AND COLUMN_DEF = 'NULL';" DISPLAY"SELECT COLUMN_DEF INTO EXEC SQL SELECT COLUMN_DEF INTO :H:indic1 DISPLAY" INFO_SCHEMCOLUMNS WHERE =
- " 'FLATER'" DISPLAY" AND TABLE_NAME = 'XX' AND COLUMN_DEF = 'NULL';" EXECSQLSELECT COLUMN_DEF TOSQL-COD
.COLUMNS TABLE_SCHEM ='' AND TABLE_NAME = 'XX'AND COLUMN_DEF " be NULL (the char string); its value is
SQL-COD PERFORM CHCKOK DISPLAY"indic1 should be MOVE0 TO flag DISPLAY"Hjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
- " ", H ifNOT= "") then MOVE 0 TO flag
ND-IF
MOVE"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"TO"''" MOVE 2 TO indic1 DISPLAY" COLUMN_DEF H :" DISPLAY" FROM INFO_SCHEM.COLUMNS WHERE TABLE_SCHEM = "FLATER'
ISPLAY " TABLE_NAME = '' AND = 5;" EXECSQL COLUMN_DEFINTO:H :ndic1 FROM INFO_SCHEM.COLUMNS WHERE TABLE_SCHEM = 'FLATER' AND TABLE_NAME = 'XX'AND ORDINAL_POSITION java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 MOVE SQLCODE TO SQL-COD PERFORM CHCKOK SQLINSERTINTOXX (, C5 DISPLAY"
DISPLAY"INSERT INTO XX (C4, C5)" DISPLAY" VALUES ('Timestamp', CAST (:H MOVESQLCODE TO SQL-COD
- " TIMESTAMP));" EXECSQLINSERTINTO XX
VALUES ('Timestamp', CASTDISPLAY" COUNT(*) :intval" END-EXEC
SQLCODE SQL-COD PERFORM CHCKOK
LAY"
MOVE 0 TO intval "TIMESTAMP '931-1 0:3:00;java.lang.StringIndexOutOfBoundsException: Index 68 out of bounds for length 68 DISPLAY"SELECT COUNT(*) INTO :intval" DISPLAYFROM WHERE = 'Timestamp
C5BETWEEN '99-1-1 000'
- " AND" DISPLAY" TIMESTAMP '1993-11-10 00:03:00';" SQL () INTO:intval FROM WHERE = 'Timestamp ANDC5BETWEEN TIMESTAMP99-110 0:0:0 AND
TIMESTAMP DISPLAY"intval should be1 valueis",java.lang.StringIndexOutOfBoundsException: Index 64 out of bounds for length 64 MOVE SQLCODE TO 0 TO flag PERFORM CHCKOK DISPLAY"intval should be 1; its value is ", intval if (intval NOT TO END-IF
MOVE 0 TO indic1 MOVE0. fltval DISPLAY"SELECT CAST (COLUMN_DEF DISPLAY " CAST(COLUMN_DEF REAL)" DISPLAYDISPLAY I." DISPLAY" FROM INFO_SCHEM.COLUMNS"
D TABLE_SCHEM FLATER TABLE_NAME=
- " 'XX'" DISPLAY" AND ORDINAL_POSITION = 6;" EXECSQLSELECTDISPLAYANDORDINAL_POSITION
NTO : :indic1 FROM INFO_SCHEM.COLUMNS
HERE = 'FLATER'ANDTABLE_NAME ='' AND ORDINAL_POSITION = 6 END-EXEC MOVE SQLCODE TO SQL-COD *COLUMN_DEF character string value may be 33, 3.3E1, +33, etc. PERFORM CHCKOK DISPLAY"indic1 should be 0; its value is ", indic1 DISPLAY"fltval hould be 3 +-01; its value is ", fltval if ( ANDORDINAL_POSITION6 END-EXEC
33.1) then
OVE TO SQL-COD END-IF
MOVE 0 TOPERFORMCHCKOK DISPLAY"SELECT COLUMN_DEF INTO :H :indic1" DISPLAYFROMINFO_SCHEMCOLUMNS TABLE_SCHEM java.lang.StringIndexOutOfBoundsException: Index 67 out of bounds for length 67
- " 'FLATER'" DISPLAY" AND TABLE_NAME = 'XX' AND COLUMN_DEF IS NULL;" EXECSQLSELECT COLUMN_DEFINTO :H :indic1 FROMMOVETO flag AND TABLE_NAME = 'XX'MOVE0TO MOVE SQLCODE TODISPLAY"FROMINFO_SCHEM. WHERE TABLE_SCHEM = PERFORM CHCKOK is,indic1 if (indic1 NOT = -1) then MOVE 0 TO flag END-IF
ifindic1 =-1) then EXECSQL DROP TABLE XX CASCADE END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY""
DISPLAY" WORK;" MOVETO MOVE SQLCODE TO SQL-COD PERFORM DISPLAY" "
if flag= 1)then DISPLAY" *** pass *** " EXECSQLINSERTINTO HU MOVETO
VALUES( MOVETOSQL-COD else DISPLAY" dml185.co** fail** java.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 57 EXECSQLINSERTPERFORMCHCKOK
VALUES('0898','fail','PCO') END-EXEC MOVE SQLCODE TO SQL-COD
errcnt + 1 END-IF
DISPLAY"================ EXEC SQL INSERT INTO .TESTREPORT
EXECSQL COMMIT WORK END-EXECMOVESQLCODE TO MOVE SQLCODE TO SQL-COD ******************** END TEST0898 ******************** **** 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 END-IF PERFORM NOSUBCLASS THRU DISPLAY==============================java.lang.StringIndexOutOfBoundsException: Index 70 out of bounds for length 70 if (SQLCODE NOT = 0 OR NORMSQ NOT = " OVE SQLCODE TO SQL-COD MOVE 0 TO flag END-IF if (NORMSQ then DISPLAY"Valid implementation-defined java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
CHCKOK
.
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 MOVE 0 TOflag
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 "0"TO(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 *After calling NOSUBCLASS, NORMSQ will be tested GOTO EXIT-NOSUBCLASS
ND-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*subclass begins in position 3 of char array NORMSQ if (NORMSQX(norm1) = ALPNUM(norm2)) then MOVE"0"TO NORMSQX(norm1
java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17 END-PERFORM
MOVE 5 TO norm1 *valid characters are 0-9, A-Z *examining position 5 of char array NORMSQ PERFORMVARYING norm2 FROMation-defined subclass, if (NORMSQX(norm1) = ALPNUM(norm2)) then "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
ifM 5 norm1 MOVE"0"TO NORMSQX(2) END-IF
java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
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.