IDENTIFICATION PROGRAM-ID ENVIRONMENTDIVISIONPERFORM WORK CONFIGURATIONMOVETO
SOURCE-COMPUTER**** END TEST0878 OBJECT-COMPUTERxyz DATA"TEST0879 "
"
* EMBEDDED COBOL (file "DML168.PCO")
**************************************************************** * * COMMENT SECTION * * DATE 1996-05-06 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. * * DML168.PCO * WRITTEN BY: David Flater * TRANSLATED AUTOMATICALLY FROM EMBEDDED C BY CHRIS SCHANZLE * * This routine tests Intermediate SQL. * * REFERENCES * FIPS PUB 127-2 14.2 Intermediate SQL * ANSI SQL-1992 * ****************************************************************
EXECSQL TABLE
0C1 PERFORM
01SQLSTATETO
0 uid X(PERFORM "
01 int1
0 COMMIT SQLENDSECTION
01 SQLCODEjava.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
0MOVEDISPLAY CONSTRAINT
0 SQL T0879 "1ABCDEFGH56789IJKLMNOPQRSTUVWXYZ"
05 ALPNUM TOjava.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
01 DISPL""
05 NORMSQX 5 TIMES
01 errcnt PICEND-IF *date_time declaration
1TO-DAY
01 THE-TIME COMMIT
01 flag COMMIT END-EXEC
0 PIC(9) SIGNSEPARATENOSUBCLASSEXIT-NOSUBCLASS
PROCEDUREjava.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
P0.
MOVE" if ( = "2300" java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 CALLEXEC MOVE"implementation-definedSQLSTATEaccepted.
MOVE SQLCODE java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 SQLEND-EXEC MOVETO ifDISPLAYSQLCODEits java.lang.StringIndexOutOfBoundsException: Index 68 out of bounds for length 68 DISPLAY" "java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23
END-IF MOVEjava.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
DISPLAY SQL . ,." EXECSELECTCOUNT*INTO :int1 "59- T0879 END-EXEC MOVETO *date_time print
int12java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37 ACCEPT java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19 DISPLAYDISPLAYCOMMIT
******************** BEGIN TEST0876 ******************* MOVE 1 TO flag TO
DISPLAY" TEST0876" DISPLAY" SQL_IDENTIFIER and CHARACTER_DATA "SQLCODEjava.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25 DISPLAY"References:"
D F2 --Domain" DISPLAY" F#3 MOVE0TO flag DISPLAY
SQLCODE CONSTRAINT END-EXEC MOVE SQLSTATE
DISPLAY"CREATE TABLE T0876 ( = 3)then DISPLAYf <java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40
INFORMATION_SCHEMA
java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17
C1"
java.lang.StringIndexOutOfBoundsException: Range [0, 17) out of bounds for length 0 MOVE PERFORM CHCKOK DISPLAY"MOVE SQLCODE if (NORMSQ = "42000 NORMSQNOT )
DISPLAYDISPLAY" should be 0 then EXEC COMMIT " implementation-defined SQLSTATEaccepted" MOVETOSQL-COD PERFORMMOVE0 flag DISPLAY" "
SQLSTATE "
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 EXECSQLINTOEXECSQL OMMIT 'This table tests a coupleof domains')END-EXEC
PCHCKOK PERFORM"" DISPLAY
99 int1 DISPLAYi NORMSQ0 ANDNOTSQLSTATE
then DISPLAY" WHERE C1 = 'T0876';" EXEC TABLE FROM T0876
WHERE DISPLAY MOVE
DISPLAY" SQLCODE WORKEND-EXEC
(P CHCKOK
PER CHCKOK END-IF
DISPLAY"COMMIT WORK;" EXECSQL COMMIT DISPLAY T0879 PERFORM CHCKOKMOVETOSQL-COD DISPLAY java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
DISPLAY"DROP TABLE T0876 CASCADE;" EXECSQL DROP INSERTINTO VALUES2)END-EXEC MOVE SQLCODE TO SQLCODE SQL-COD PERFORM CHCKOK DISPLAY" "
ifflag= 1)then DISPLAY *pass EXEC java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
VALUES COMMIT END-EXEC
(SQLCODE SQLCODESQL-COD else DISPLAY" dml168 END-IF EXECSQLINSERTINTO""
VALUES( MOVE SQL-COD " DISPLAY "SQLSTATE T0879 CASCADE END-IF
DISPLAY" java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
EXECSQLCOMMITEND-EXEC MOVE SQLCODE TO 0 TOflag SQLCODE SQL-COD ******************** END TEST0876 ******************** ******************** BEGIN TEST0878 ******************* MOVE java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
DISPLAY DISPLAYC1; EXECSQL CREATE TABLEEXECALTERTABLE
C1DROPREFME END-EXEC MOVEMOVETO PERFORMPERFORM CHCKOKDISPLAY"" DISPLAYjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
DISPLAY"ALTER TABLE T0878" DISPLAY" ADD C2 CHAR (4);" EXECSQLALTER TABLE T0878 ADD C2 DISPLAY"dml168java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
SQLCODE PERFORM CHCKOK DISPLAYjava.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
DISPLAY"COMMIT WORK;" EXECSQL COMMIT WORKValidaccepted
java.lang.StringIndexOutOfBoundsException: Range [19, 20) out of bounds for length 19 PERFORM*This routine replaces valid implementation-defined DISPLAY" *implementation-defined subclasses with the 000 value
EXECi ( = 1*SQLSTATEbeprinted MOVE SQLCODE TOjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 DISPLAY" "
MOVE"xxxx"TO*valid subclass begins with 5-9, I-Z, end of ALPNUM table DISPLAY* c4 DISPLAY" FROM T0878;" EXECSQLSQL NTO.TESTREPORT
VALUES'',' ((norm1)= (norm2)) then MOVE SQLCODE " SQLCODE TO PERFORM CHCKOK DISPLAY"c4 should be 'ABCD'; its java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 if (c4 MOVETO
DISPLAY" ******************** END TEST0879 ******************** EXECSQL COMMIT *Changed NORMSQ means implementation-defined subclass, MOVETOjava.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36 PERFORM CHCKOK
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
DISPLAY"DROP TABLE T0878 . EXECSQL DROP SQLCODE0 value MOVE SQL-COD PERFORM CHCKOK " java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
DISPLAYCOMMIT PERFORM norm2FROM EXECSQL COMMITifNORMSQ0 ANDNORMSQjava.lang.StringIndexOutOfBoundsException: Index 62 out of bounds for length 62 MOVE SQLCODE TO SQL-COD PERFORM CHCKOKEND-PERFORM DISPLAY" "
if ( flag = . DISPLAY" *NOSUBCLASS. *examining position 5 of char array NORMSQ
('07''','PCO' MOVE (NORMSQX) (norm2 java.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 53 else " .pco ** SQLSTATE will be printed. EXECSQLINSERTINTO HU.TESTREPORT
java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 0 MOVE SQLCODE *(class = 01). These equate to successful completion
END-IF
DISPLAY"===================== if (( *subclass begins in position 3 of char array NORMSQ
EXECSQL COMMIT MOVE ******************** END TEST0878 ******************** ******************** BEGIN TEST0879 ******************* MOVE 1TO EXIT-NOSUBCLASS
DISPLAY" TEST0879" DISPLAY" " DISPLAY"References:" DISPLAY" F#38 -- Schema *Quit if NORMSQ is unchanged. Subclass is not impl.-def. DISPLAY*Changed NORMSQ means implementation-defined subclass, DISPLAY" - - - - - - - - - - - - - - - - - - -"
DISPLAY"COMMIT WORK;" EXECSQL WORK MOVETO
java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25 DISPLAY" "
DISPLAY"CREATE TABLE U0879 (" DISPLAY" C1 INT (NORMSQX1)= 0 ANDNORMSQX()="" java.lang.StringIndexOutOfBoundsException: Index 64 out of bounds for length 64 EXECSQL CREATE
C1 INT REFERENCES MOVETO PERFORM . DISPLAY" "
DISPLAY"COMMIT WORK;" EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY" "
DISPLAY"ALTER TABLE T0879" DISPLAY" DROP CONSTRAINT DELME RESTRICT;" EXECSQLALTER TABLE T0879
DROP CONSTRAINT DELME 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" "
DISPLAY"INSERT INTO T0879 VALUES (0, 0);" EXECSQLINSERTINTO T0879 VALUES (0, 0) END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY" "
DISPLAY"INSERT INTO T0879 VALUES (-1, -1);" EXECSQLINSERTINTO T0879 VALUES (-1, -1) END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY" "
MOVE 0 TO int1 DISPLAY"SELECT COUNT(*) INTO :int1" DISPLAY" FROM T0879;" EXECSQLSELECTCOUNT(*) INTO :int1 FROM T0879 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"INSERT INTO U0879 VALUES (20);" EXECSQLINSERTINTO U0879 VALUES (20) END-EXEC MOVE SQLCODE TO SQL-COD DISPLAY"SQLCODE should be < 0; its value is ", SQL-COD if (SQLCODE NOT < 0) then MOVE 0 TO flag END-IF DISPLAY"SQLSTATE should be 23000; its value is ", SQLSTATE PERFORM NOSUBCLASS THRU EXIT-NOSUBCLASS if (NORMSQ NOT = "23000") then MOVE 0 TO flag END-IF if (NORMSQ = "23000"AND NORMSQ NOT = SQLSTATE) then DISPLAY"Valid implementation-defined SQLSTATE accepted." END-IF DISPLAY" "
DISPLAY"INSERT INTO T0879 VALUES (2, 0);" EXECSQLINSERTINTO T0879 VALUES (2, 0) END-EXEC MOVE SQLCODE TO SQL-COD DISPLAY"SQLCODE should be < 0; its value is ", SQL-COD if (SQLCODE NOT < 0) then MOVE 0 TO flag END-IF DISPLAY"SQLSTATE should be 23000; its value is ", SQLSTATE PERFORM NOSUBCLASS THRU EXIT-NOSUBCLASS if (NORMSQ NOT = "23000") then MOVE 0 TO flag END-IF if (NORMSQ = "23000"AND NORMSQ NOT = SQLSTATE) then DISPLAY"Valid implementation-defined SQLSTATE accepted." END-IF DISPLAY" "
DISPLAY"COMMIT WORK;" EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY" "
DISPLAY"ALTER TABLE T0879" DISPLAY" DROP CONSTRAINT REFME RESTRICT;" EXECSQLALTER TABLE T0879
DROP CONSTRAINT REFME RESTRICT END-EXEC MOVE SQLCODE TO SQL-COD DISPLAY"SQLCODE should be < 0; its value is ", SQL-COD if (SQLCODE NOT < 0) then MOVE 0 TO flag END-IF DISPLAY"SQLSTATE should be 42000; its value is ", SQLSTATE PERFORM NOSUBCLASS THRU EXIT-NOSUBCLASS if (NORMSQ NOT = "42000") then MOVE 0 TO flag END-IF if (NORMSQ = "42000"AND NORMSQ NOT = SQLSTATE) then DISPLAY"Valid implementation-defined SQLSTATE accepted." END-IF DISPLAY" "
DISPLAY"COMMIT WORK;" EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY" "
DISPLAY"ALTER TABLE T0879" DISPLAY" DROP CONSTRAINT REFME CASCADE;" EXECSQLALTER TABLE T0879
DROP CONSTRAINT REFME 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" "
DISPLAY"INSERT INTO U0879 VALUES (20);" EXECSQLINSERTINTO U0879 VALUES (20) END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY" "
DISPLAY"INSERT INTO T0879 VALUES (0, 0);" EXECSQLINSERTINTO T0879 VALUES (0, 0) 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" "
DISPLAY"DROP TABLE T0879 CASCADE;" EXECSQL DROP TABLE T0879 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" "
DISPLAY"DROP TABLE U0879 CASCADE;" EXECSQL DROP TABLE U0879 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('0879','pass','PCO') END-EXEC MOVE SQLCODE TO SQL-COD else DISPLAY" dml168.pco *** fail *** " EXECSQLINSERTINTO HU.TESTREPORT
VALUES('0879','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 TEST0879 ******************** **** 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.2 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.