**************************************************************** * * COMMENT SECTION * * DATE 1994/3/30 EMBEDDED COBOL LANGUAGE * NIST 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. * * DML114.PCO * WRITTEN BY: David W. Flater * TRANSLATED AUTOMATICALLY FROM EMBEDDED C BY CHRIS SCHANZLE * * This routine tests FIPS features 13, 14, 15, and 16. * This is the non-dynamic version of DML115.PC. * * REFERENCES * FIPS PUB 127-2 14.1 Transitional SQL * ANSI SQL-1992 * ****************************************************************
EXECSQL BEGIN DECLARE SECTION*
0 * DISCLAIMER:
01 SQLSTATE PIC* this program.
01 uid PIC X
01 uidx PIC X(18).
01 int1 *
01 int2 PIC S9(9) * REFERENCES
01 ch1 PIC X(3).
01 ch2 PIC X(20).
01 ch3 PIC X(15). SQL BEGIN DECLARE END-EXEC EXECENDDECLARE END-EXEC
0 PIC S9 SIGNSEPARATE
1norm2 S9DISPLAYSIGNSEPARATE.
01 ALPNUM-TABLE VALUEPIC X(18java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27 "4".
05 ALPNUM END DECLARE END-EXEC
01 NORMSQ.
05 NORMSQX PIC X OCCURS 5 TIMES.
01 errcnt PIC S9(9 1norm1 (9) DISPLAYLEADINGSEPARATE *date_time declaration
01 TO-DAY1ALPNUM-TABLE IS
0 PIC 98.
01 flag PIC S9(9 5 ALPNUM PIC 36 TIMES
01 ctr1(9) DISPLAYLEADINGSEPARATE
0 PIC S9 SIGNSEPARATE
01 *date_time declaration
010 PIC 9)java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Range [32, 13) out of bounds for length 36 notin, " uidx EXECCALLAUTHID uid MOVETO EXECEXECSELECTINTO uidx.ECCO
SQLCODE SQL-COD ifSQL WORK DISPLAY"RROR:User""expected User ""
- " connected" STOPRUN END-IF "ERROR: User "" expected. ", uidx
DISPLAY "SQL Test Suite, END-IF DISPLAY
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 " Version #" *date_time print ACCEPT TO-DAYDISPLAY ACCEPT THE-TIME " DISPLAY"Date run *date_time print
******************** BEGIN TEST0635 ******************* MOVEACCEPTFROMTIME
DISPLAY" TEST0635 java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 " TEST0635"
D"References: DISPLAY" FIPS PUB 127 "References " FIPSPUB12-214.1 SQL feature
- " 13"DISPLAY . LR
73 .2.a" DISPLAY" 7.4 LR.2.a" DISPLAY 79 LRjava.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39 DISPLAY" 7.11 LR.2.a" DISPLAY 3. LR" DISPLAY" - - - - - - - - - - - - - - - - - - -"
COMPUTE SQLCODE = -1 MOVE"xxxxx"TO SQLSTATE
DISPLAY"CREATE VIEW WORKWEEK AS" DISPLAY" SELECTEMPNUM,HOURS FROM.WORKS" DISPLAY" GROUP BY HOURS, EMPNUM;
EXECSQL VIEW WORKWEEKAS SELECT EMPNUM "xxxxx"TO
java.lang.StringIndexOutOfBoundsException: Range [46, 15) out of bounds for length 46 " GROUPBY HOURS, EMPNUM;"
"java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
*Removal of leveling rule 2a of Subclause 7.3 *Removal of leveling rule 2c of Subclause 7.9 *Removal of leveling rule 2b of Subclause 13.5
MOVE*Removal of leveling rule 2b of Subclause 13.5 MOVE"" java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30 " WORKWEEK" DISPLAY 0 DISPLAYDISPLAY GROUP DISPLAYSELECT,SUM)INTOch1 "BYjava.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40 DISPLAYHAVINGE1 EXECSQLSELECT EMPNUM, HAVING EMPNUM= FROM WORKWEEK
WHERE > 20
GROUPDISPLAYch1 E1 value" ch1 "'"
HAVING EMPNUM=''END-EXEC MOVEifch1 = "E1 "OR int1 10 then PERFORMCHCKOK DISPLAY"ch1 should be 'E1 '; its value is '", ch1 "'" DISPLAY"int1 should be 120; its value is ", int1 if ( MOVE 0 TO flag END-IF
*This is more meaningful -- how many people work too hard?
COMPUTEDISPLAY" WORKWEEK WHERE > 40;" DISPLAY" DISPLAY" FROM WORKWEEK WHERE HOURS > 40;" EXECSQLCOUNT* :java.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48 FROM WHERE > 40END-EXEC
SQLCODE TO
CHCKOK DISPLAY"int1 should be 3; its value is ", END-IF if (int1 NOT = 3) then MOVE 0 TO flag END-IF
*Removal of leveling rule 2a of Subclause 7.4
MOVEDISPLAY" HUSTAFF " DISPLAYSELECTINTO :ch2" "FROMHUSTAFF, WORKWEEK" DISPLAY" WHERE HU.STAFF.EMPNUM = WORKWEEK.EMPNUM" DISPLAY 2" EXECSQLSELECT EMPNAME INTO :ch2 FROM HU.STAFF, WORKWEEK
WHERE HU.STAFF.java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38 ANDHOURSEND-EXEC
SQLCODE SQL-COD PERFORM SQLCODE SQL-COD DISPLAYch2be ,ch2 if (ch2 NOT = "Alice") then MOVETO END-IF
*Removal of leveling rule 2c of Subclause 7.9
COMPUTE int1 COMPUTE int2 *Removal of leveling rule 2c of Subclause 7.9 ""TO MOVE"xxx"TOMOVE xxxTO DISPLAY" COUNT(*) (EMPNUM),MIN(MPNUM),
- " AVG(HOURS)" DISPLAY" DISPLAY"INTO, :ch1, :int2 " FROM ;" SQLCOUNT,MAX), MIN),
AVG(HOURS(HOURS INTO, :ch1:h4 int2 FROM WORKWEEK END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAYint11 ",int1 "ch1 should 'E4 ';itsvalue '", ch1"" DISPLAYch4' ;its is '", ch4"' " should be 43 value is " ifDISPLAY" should be E1 'is,ch4 MOVETO END-IF if ch4 E1 int2 3 java.lang.StringIndexOutOfBoundsException: Index 63 out of bounds for length 63
0TO END-IF
*Removal of leveling rule 2a of Subclause 7.11
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 DISPLAY ." DISPLAYSELECTjava.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 53 DISPLAY" (SELECT EMPNUM HUSTAFFWHEREEMPNUM =
D " WHERE = 12)" EXEC HOURS) FROM.STAFF EMPNUMjava.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43
( java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43
WHERE =2 MOVE SQLCODE 0 TOflag PERFORM DISPLAY"ch2 should be " EMPNAME :" ifNOTAlice MOVE 0 TO flagSELECTHU
""TOch2 DISPLAY"SELECT EMPNAME INTO :ch2" EXECSELECTINTO :h2 DISPLAY" (SELECT EMPNUM FROM HU.WORKS" DISPLAY"GROUP, HOURS DISPLAY" HAVING HOURS = SELECTEMPNUMFROM HU.ORKS EXECSQLSELECT EMPNAME , HOURS FROM HU
(DISPLAYis
GROUP, HOURS
HAVING HOURS = 12) END-EXEC MOVE SQLCODE TO SQL-COD 0 TOflag
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
ch2 is if ( 4 ctr3
java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29 END-IF
*Cursor operation
MOVE 3 TO ctr1 MOVE 1 TO ctr2 MOVE 4 TO ctr3
DISPLAY"The following cursor scan shouldreturn 3three
- " java.lang.StringIndexOutOfBoundsException: Range [0, 18) out of bounds for length 0 DISPLAYDISPLAY ;java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40
EXECSQL DECLARE C11411 SELECTCOUNTEXECOPENEND-EXEC
GROUP
DISPLAY java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
D "FETCH INTO :int1;java.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 47 EXECOPENEND-EXEC MOVE SQLCODE TO SQLCODE SQL-COD PERFORM DISPLAY"DISPLAY SQLSTATEis" java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
.
,java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37 INTO
FETCH END-EXEC MOVE SQLCODE DISPLAY ctr1 - 1 DISPLAY"SQLSTATE is "TO if ( . TO END-IF DISPLAYint1 COMPUTE ctr3 = ctr3 - 1 if (int1= 1 then COMPUTE ctr2 = ctr2 - 1 END-IF if(int1 3 then COMPUTE ctr1 - 1 END-IF TO
.
P101
java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17 then
COMMIT PERFORM SQLCODESQL-COD PERFORM MOVE java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25 END-IFTO if ( thenjava.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25 DISPLAYMOVETO
DISPLAY"
*Let the commit close the cursor
DISPLAY"COMMIT WORK;" EXEC MOVESQL HU
PERFORM DISPLAY java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
DISPLAY"DROP VIEW WORKWEEKCASCADE;" EXECSQL DROP VIEW WORKWEEK CASCADE END-EXEC
java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25 DISPLAY = + 1
DISPLAY" ******************** BEGIN TEST0637 ******************* EXEC MOVE SQLCODE4*in()java.lang.StringIndexOutOfBoundsException: Index 72 out of bounds for length 72
CHCKOK DISPLAY" ---- ----------"
if ( flag = 1 ) then DISPLAY" *** pass *** " EXECSQLINSERTINTO HU DISPLAY STAFF, MOVETO else"HU.=.;
. ** java.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 57 INSERT.
VALUES TO
SQLCODE COMPUTE errcnt = errcnt + " END-IFCOMMIT
DISPLAY"=============
EXECSQL COMMIT WORKDISPLAY"" MOVEDISPLAY"REATEVIEWCORRQUALSTARAS ******************** END TEST0635 ******************** ******************** BEGIN TEST0637 ******************* MOVE CREATE CORRQUALSTAR
"TEST0637java.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 50 DISPLAY"Feature14 * in select list(static)" DISPLAY"References:"
PUB 12- 41 Transitional feature
- " 14" DISPLAY" 7.9 LR.2.b" DISPLAY CHCKOK
COMPUTE SQLCODE MOVE"xxxxx"SQL WORK END-EXEC
DISPLAY"CREATE VIEW QUALSTAR AS" DISPLAY" PERFORM CHCKOK
-" HUWORKS" DISPLAY" WHERE HU.STAFF.EMPNUM = HUjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 EXECSQL CREATE VIEW QUALSTAREXECSQL VIEW SUBQ2
HUSTAFF, FROM HUSTAFF, HUWORKS
WHERE HU.STAFF.EMPNUM = HU SQLCODETO MOVE SQLCODE CHCKOK "" DISPLAY" "
DISPLAY"COMMIT WORK;" EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY" "
DISPLAY"CREATE VIEW EXEC SQL COMMIT WORKEND-EXEC DISPLAYSELECT* HOURSSTAFF
- " HU.WORKS" DISPLAY" BLAHEMPNUM =HUWORKS.EMPNUM;java.lang.StringIndexOutOfBoundsException: Index 61 out of bounds for length 61 SQL CORRQUALSTAR SELECT BLAH.*, HOURS DISPLAY" DISTINCT* CORRQUALSTAR;java.lang.StringIndexOutOfBoundsException: Index 61 out of bounds for length 61
WHERE. = HU.EMPNUMEND-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY" "
DISPLAY"COMMIT WORK;" EXECSQL COMMIT WORK CHCKOK TO PERFORM DISPLAYEXEC COMMIT END-EXEC
DISPLAY"CREATE VIEW SUBQ2 DISPLAY" SELECT DISTINCT * FROM QUALSTAR;" EXECSQL CREATE VIEW SUBQ2 AS SELECT DISTINCT * FROM QUALSTAR java.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 25 MOVESQLCOUNT*INTO int1 END-EXEC PERFORM CHCKOK DISPLAY" "
PERFORM CHCKOK EXECSQL WORK MOVE SQLCODE f(nt1 NOT 2 PERFORM CHCKOK DISPLAY" "
DISPLAYCOMPUTE = -1 "SELECT (*) :int1 FROM SUBQ2" EXECSQLEXECSQLSELECTCOUNT() INTO: FROM SUBQ2 END-EXEC SELECT DISTINCT * FROMMOVETO SQL-COD MOVE SQLCODE TO"int1shouldbe10 its is ", int1 PERFORM DISPLAY" "
DISPLAY"COMMIT WORK;" EXECSQL COMMIT MOVE SQLCODE TO"xxxxxxxxxxxxxxx java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42
CHCKOK DISPLAY"
COMPUTE int1 EXECSQL EMPNUM,, CITY, HOURS DISPLAY"SELECT COUNT(*) INTO :int1 FROM QUALSTAR;" EXECSELECTCOUNT) :int1 QUALSTAR MOVE SQLCODE TOFROM WHERE EMPNAME''END-EXEC PERFORM DISPLAY"int1 should be 12; its value is ", int1 if (int1 NOT = 12) then MOVE 0 TO flag
java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19 DISPLAY"SELECT (int1 NOT = 13then EXECSQLSELECTCOUNT(*) INTO :int1 FROM SUBQ2 END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY"int1 should be 10; its value is ", int1MOVE flag if (int1 NOT = 10) then"ch3should 'Vienna '; its value is ",
0 TO flag END-IF
*Subtest one: through the view
MOVEEND-IF MOVE"xxxxxxxxxxxxxxx"TO ch3 COMPUTEint11 COMPUTE int2 = -1 DISPLAY"SELECT EMPNUM, GRADE, CITY, HOURSjava.lang.StringIndexOutOfBoundsException: Index 56 out of bounds for length 56 DISPLAYjava.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19 DISPLAY*Subtest two: with a cursor *Ordering of columns: 7.4 SR.1.b INTO : FROMQUALSTAR WHEREEMPNAMECarmen MOVE SQLCODE TO SQL-COD PERFORM" SELECT HU.STAFF.*, HOURSFROM .STAFF, DISPLAY"ch1 should be 'E3 '; its value - "HU" "WHEREHUSTAFFEMPNUM=HUWORKS" TO " ;" DISPLAY bevalue if (int1 HU.*, HOURS HU.STAFFHU MOVE 0 TO flag END-IF DISPLAY EMPNAME''
ch3 "'" if (ch3 DISPLAY"PEN JOANS" MOVETO END-IF MOVETOSQL-COD if (int2 NOT = 20) then MOVE 0 TO flag END-IF
*Subtest two: with a cursor *Ordering of columns: 7.4 SR.1.b
MOVE"xxx"TO MOVE" TO ch2 MOVE"xxxxxxxxxxxxxxx"TO"', ch2 '" COMPUTE int1 = -1 COMPUTE int2 = -1 "FETCHJOANSINTO:, :ch2, :, :ch3, :int2" EXECSQL 0 flag END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY =1)then
java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
0 flag END-IFMOVE flag DISPLAY"ch2 should be 'Carmen " should 2;its is java.lang.StringIndexOutOfBoundsException: Index 61 out of bounds for length 61
- " '", ch2 "'" if (ch2 NOT = "Carmen ") thenMOVE0TO MOVE 0 TO
DISPLAY"int1 should be 13; itsEXECSQLCLOSE END-EXEC ifint1 3) hen MOVE CHCKOK END-IF DISPLAY
ch3 "'" ifMOVE xxx ch1 MOVE 0 TO flag "xxxxxxxxxxxxxxxxxxxx TOch2
IF DISPLAY"int2 should be 20; its value is ", int2 = -java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
.STAFF MOVE END-IF
MOVE"xxx"TOMOVETO SQL-COD MOVE"xxxxxxxxxxxxxxxxxxxx PERFORM CHCKOK MOVE"xxxxxxxxxxxxxxx"TO ch3 COMPUTE (ch1 =" ") then COMPUTE = -1 DISPLAY"SELECT HU.STAFF.* " should 'Carmen '; its is DISPLAY" INTO :ch1, :ch2, : ( NOT = "Carmen " java.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 59 DISPLAYFROMHU HU.WORKS" DISPLAY" WHERE HU.STAFF.EMPNUM = HU.WORKS.EMPNUM" DISPLAY" AND EMPNAME = 'Carmen';" EXECSQLSELECT HUif( NOT = 13) then
:ch1:h2, :ch3, :java.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 50 FROM HU, HU.WORKS
ch3 "'" AND EMPNAME = 'Carmen'END-EXEC MOVE SQLCODE SQL-COD PERFORM CHCKOK DISPLAY" should be 'E3 ';its is '", ch1"" if (ch1 NOT = "E3 ") then MOVE 0 TO flagDISPLAY"int2 should be 20; its value is ", int2 END-IF DISPLAY"ch2 MOVE 0TOflag
- " '", ch2 "'" if (ch2 NOT = "Carmen ") then MOVE 0 TO flag END-IF DISPLAY"int1 should be 13; its value is ", int1 if*Contiue with view testing MOVE 0 TO flagCOMPUTEint11 END-IF DISPLAY"ch3 should be 'Vienna '; its value is '",
ch3" if (ch3 NOTEND-EXEC MOVE0TO END-IFPERFORM CHCKOK DISPLAYshould,int2 ifif(nt1 java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38 MOVE 0END-IF END-IF
*Contiue with view testing
COMPUTE = -1 DISPLAY"SELECT COUNT "SELECT* : FROM;" EXECSELECT(* :int1 END-EXEC
SQLCODE SQL-COD PERFORM CHCKOK DISPLAYint1its if (int1 NOT = 12) then"int1should 10; its value is " int1 MOVE 0 TO flag END-IF
COMPUTE int1 = -1 DISPLAY"SELECT java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 EXECSQLSELECTCOUNT(*) INTOCOMPUTEint1 =- MOVE SQLCODE TO" ,:java.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 54
" should 10;its is"java.lang.StringIndexOutOfBoundsException: Index 61 out of bounds for length 61
int1 MOVE 0 TO flag END-IF
MOVE"xxx"TO ch1
ch3 COMPUTENOT
= - " EMPNUM,, CITY, HOURS" DISPLAY" INTO :ch1, :int1, : " shouldVienna valuejava.lang.StringIndexOutOfBoundsException: Index 71 out of bounds for length 71 FROM Carmen EXECSQLSELECT EMPNUM, GRADE
,int2 FROM CORRQUALSTAR WHERE EMPNAME = 'Carmen'END-EXEC MOVETO SQL-COD PERFORM CHCKOK DISPLAY"h1should be ' ' "' ifEND-IF MOVE 0 TO flag END-IF DISPLAY"int1 should be 13; its value is ", int1 if (int1 NOT = 13) then MOVE 0 TO flag END-IF DISPLAY"ch3 should be 'Vienna MOVE SQLCODE TO SQL-COD
ch3 PERFORMCHCKOK if (ch3 NOT = "Vienna ") then MOVE 0 TO flag END-IF DISPLAY"int2 should be 20; its value is ", int2 if (int2 NOT = 20) then MOVE 0 TO flag END-IF
DISPLAY"COMMIT WORK;" EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY" "
DISPLAY"DROP VIEW QUALSTAR CASCADE;" EXECSQL DROP VIEW QUALSTAR 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 VIEW CORRQUALSTAR CASCADE;" EXECSQL DROP VIEW CORRQUALSTAR 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('0637','pass','PCO') END-EXEC MOVE SQLCODE TO SQL-COD else DISPLAY" dml114.pco *** fail *** " EXECSQLINSERTINTO HU.TESTREPORT
VALUES('0637','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 TEST0637 ******************** ******************** BEGIN TEST0639 ******************* MOVE 1 TO flag
DISPLAY"EXEC SQL CREATE VIEW STAFF (EMPNUM, EMPNAME,
- " GRADE, CITY) AS" DISPLAY" SELECT EMPNUM, EMPNAME, GRADE, CITY FROM
- " HU.STAFF;" ExecSQL create view Staff (Empnum, empname, Grade, City)
as select Empnum, EMPNAME, Grade, cItY from Hu.Staff END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY" "
DISPLAY"exec sql commit work;" execsql commit work END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK DISPLAY" "
COMPUTE int1 = -1 DISPLAY"exec sql SELECT Count(*) INTO :int1 FROM STAFF;" execsqlSELECTCount(*) INTO :int1 FROM STAFF END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY"int1 should be 5; its value is ", int1 if (int1 NOT = 5) then MOVE 0 TO flag END-IF
MOVE"xxx"TO ch1 MOVE"xxxxxxxxxxxxxxx"TO ch3 COMPUTE int1 = -1 DISPLAY"SELECT EMPNUM as WhatsHisNumber, GRADE, CITY" DISPLAY" INTO :ch1, :int1, :ch3" DISPLAY" FROM Flater.staff FLaterStaff_Flater" DISPLAY" WHERE EMPNAME = 'Carmen'" DISPLAY" AND FLATERstaff_fLATER.whatshisnumber = 'E3';" EXECSQLSELECT EMPNUM as WhatsHisNumber, GRADE, CITY INTO :ch1, :int1, :ch3 FROM Flater.staff FLaterStaff_Flater
WHERE EMPNAME = 'Carmen' AND FLATERstaff_fLATER.whatshisnumber = 'E3'END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY"ch1 should be 'E3 '; its value is '", ch1 "'" if (ch1 NOT = "E3 ") then MOVE 0 TO flag END-IF DISPLAY"int1 should be 13; its value is ", int1 if (int1 NOT = 13) then MOVE 0 TO flag END-IF DISPLAY"ch3 should be 'Vienna '; its value is '",
ch3 "'" if (ch3 NOT = "Vienna ") then MOVE 0 TO flag END-IF
DISPLAY"DECLARE c63931 CURSOR FOR" DISPLAY" SELECT EMPNUM as WhatsHisNumber, GRADE, CITY" DISPLAY" FROM Flater.staff FLaterStaff_Flater" DISPLAY" WHERE EMPNAME > 'Betty'" DISPLAY" ORDER BY whatshisnumber;" EXECSQL DECLARE c63931 CURSOR FOR SELECT EMPNUM as WhatsHisNumber, GRADE, CITY FROM Flater.staff FLaterStaff_Flater
WHERE EMPNAME > 'Betty' ORDERBY WHATSHISNUMBER END-EXEC
MOVE"xxx"TO ch1 MOVE"xxxxxxxxxxxxxxx"TO ch3 COMPUTE int1 = -1 DISPLAY"FETCH c63931 INTO :ch1, :int1, :ch3;" EXECSQL FETCH c63931 INTO :ch1, :int1, :ch3 END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY"ch1 should be 'E3 '; its value is '", ch1 "'" if (ch1 NOT = "E3 ") then MOVE 0 TO flag END-IF DISPLAY"int1 should be 13; its value is ", int1 if (int1 NOT = 13) then MOVE 0 TO flag END-IF DISPLAY"ch3 should be 'Vienna '; its value is '",
ch3 "'" if (ch3 NOT = "Vienna ") then MOVE 0 TO flag END-IF
*Translation note for module: change a procedure name to lower *case if host language permits it, both in module and in host *language.
DISPLAY"COMMIT WORK;" EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY" "
DISPLAY"DROP VIEW STAFF CASCADE;" EXECSQL DROP VIEW STAFF 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('0639','pass','PCO') END-EXEC MOVE SQLCODE TO SQL-COD else DISPLAY" dml114.pco *** fail *** " EXECSQLINSERTINTO HU.TESTREPORT
VALUES('0639','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 TEST0639 ******************** ******************** BEGIN TEST0641 ******************* MOVE 1 TO flag
DISPLAY"COMMIT WORK;" EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY" "
DISPLAY"INSERT INTO FEAT16 VALUES (1, 10);" EXECSQLINSERTINTO FEAT16 VALUES (1, 10) END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY" "
DISPLAY"INSERT INTO FEAT16 VALUES (2, 20);" EXECSQLINSERTINTO FEAT16 VALUES (2, 20) END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY" "
DISPLAY"INSERT INTO FEAT16 VALUES (1, 30);" EXECSQLINSERTINTO FEAT16 VALUES (1, 30) 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 FEAT16 VALUES (3, 20);" EXECSQLINSERTINTO FEAT16 VALUES (3, 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" "
*Multiple nulls are OK -- See 8.9 GR.2
DISPLAY"INSERT INTO FEAT16 VALUES (3, NULL);" EXECSQLINSERTINTO FEAT16 VALUES (3, NULL) END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY" "
DISPLAY"INSERT INTO FEAT16 VALUES (4, NULL);" EXECSQLINSERTINTO FEAT16 VALUES (4, NULL) END-EXEC MOVE SQLCODE TO SQL-COD PERFORM DISPLAY" "
" WORK;java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35 INSERT VALUES1',1,') END-EXEC MOVE SQLCODE TO SQL-COD SQL VIEW CASCADE java.lang.StringIndexOutOfBoundsException: Index 61 out of bounds for length 61 PERFORM CHCKOK DISPLAY"
DISPLAY"INSERT INTO BARNO VALUES (2 EXECSQLCOMMITWORK END-EXEC SQLINTO VALUES2 A,2, ') END-EXEC MOVE AY PERFORM DISPLAY" "
DISPLAYINSERTBARNOA,3, '';java.lang.StringIndexOutOfBoundsException: Index 66 out of bounds for length 66 EXECSQLINSERTINTO BARNO VALUES (1, ' SQLCODE TO SQL-COD
Ejava.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21 MOVE SQLCODE java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36 DISPLAY" should be<0 its is ", SQL-COD ifSQLCODE )then MOVETO flag END-IF DISPLAYSQLSTATE30; " java.lang.StringIndexOutOfBoundsException: Range [72, 73) out of bounds for length 72 PERFORM NOSUBCLASS THRU EXIT-NOSUBCLASS ifNORMSQ 230" java.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 47 MOVE******************** BEGIN TEST0639 ******************* END-IF
SQLSTATE
DISPLAY"INSERT INTO BARNO VALUES (3, 'A', 20, 'a');" EXEC 3 ''2,'') END-EXEC MOVE SQLCODE "xxxxx TOSQLSTATE DISPLAY"SQLCODE should be < 0; its value is ", SQL-COD
ODE<0 then MOVE- GRADE END-IF DISPLAY"SQLSTATE should be 23000; its value is ", SQLSTATE SQL view Empnum, Gradejava.lang.StringIndexOutOfBoundsException: Index 70 out of bounds for length 70 ifNOT ="300"then MOVE 0 TO flag END-IF if (NORMSQjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
DISPLAYValid " END-IF DISPLAY" "
DISPLAY"INSERT INTO BARNO VALUES CHCKOK EXECSQLINSERTINTO BARNO END-EXEC MOVE SQLCODE TO SQL-CODMOVETO " should < ; value " java.lang.StringIndexOutOfBoundsException: Index 68 out of bounds for length 68 if
0 flag END-IF""TO " should be 23000;its value is ", SQLSTATE
NOSUBCLASS EXIT-NOSUBCLASS ifNOT200)then MOVE 0 TO flag . " END-IF if (NORMSQ = "23000" EXEC SQL SELECT EMPNUM as WhatsHisNumber then DISPLAY"ValidWHEREEMPNAME END-IF "
DISPLAY"INSERT INTO " be is"'" EXECSQLINSERTINTO BARNO VALUES (3 0 TO END-EXEC MOVE SQLCODE TO SQL-COD DISPLAY"SQLCODE should be < 0; its value is ", SQL-COD if (SQLCODE NOT < 0java.lang.StringIndexOutOfBoundsException: Range [19, 20) out of bounds for length 19 MOVETO flag END-IF DISPLAY"SQLSTATE should be 23000; itsjava.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 0
THRU if (NORMSQ
flag END-IF ifSELECT MPNUM WhatsHisNumber, java.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 59 thenBYEND-EXEC DISPLAY"Valid implementation-defined SQLSTATE java.lang.StringIndexOutOfBoundsException: Index 67 out of bounds for length 35 END-IF DISPLAY java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
DISPLAY EXECSQLINSERTINTO BARNOMOVE ch3 END-EXEC MOVE SQL-COD PERFORM CHCKOK DISPLAY"java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
DISPLAYINSERT VALUESB,30 NULL EXECMOVETO flag END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOKDISPLAY"shouldbe 3 its is" DISPLAY java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
" WORK;" EXECSQL WORK MOVE SQLCODE TO PERFORM CHCKOK
DISPLAY ; EXEC SQLCODE MOVE PERFORM CHCKOK DISPLAY" " EXECINSERT HU DISPLAYCOMMIT SQL WORK MOVE SQLCODE TO SQL-COD PERFORM CHCKOKEXECINSERT HU " java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
DISPLAY"COMMIT WORK;" EXECSQL COMMIT ******************** END TEST0639 ******************** MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY" java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
if ( flag = 1 ) then
ISPLAY":" EXECSQLINSERTINTO HU 1
VALUES,'PCO) MOVE" - -- -- ----- --java.lang.StringIndexOutOfBoundsException: Index 63 out of bounds for length 63
DISPLAYDISPLAY java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
SQLCODE MOVE SQLCODE TO SQL-COD ******************** END TEST0641 ******************** **** TESTER MAY CHOOSE TO INSERT CODE FOR errcnt > 0 STOP P1
* **** Procedures for PERFORM statements
*Test SQLCODE and SQLSTATE for normal completion.
CHCKOK. DISPLAY"SQLCODE should be 0; its value is ",PERFORM DISPLAY" SQL WORK if(SQLCODE = 0 NORMSQNOT = "000) then MOVE 0 TO flag END-IF if ( PERFORM then " " 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.
SQLSTATE
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
java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
NOSUBCLASS EXIT-NOSUBCLASS MOVE"0"TO NORMSQX(norm1) if (NORMSQ = "2300"then
ND-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
MOVE 4 TO norm1 *examining position 4 of char array NORMSQ *valid characters are 0-9, A-Z PERFORMVARYING norm2 SQLCODE SQL-COD if(norm1ALPNUM)) then MOVE"0"TO NORMSQX(norm1) END-IF END-PERFORM
MOVE 5 DISPLAY"shouldbe 200;itsvalueis"java.lang.StringIndexOutOfBoundsException: Index 72 out of bounds for length 72 *valid characters are 0-9, A-Z *examining position 5 of char array NORMSQ PERFORMVARYING norm2 FROM java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
(norm1norm2) MOVE NORMSQXjava.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39 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)DISPLAY" INTO FEAT16 VALUES (4 NULL);" MOVE"0"TO NORMSQX(2)
java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17
.
EXIT-NOSUBCLASS. EXIT.
Messung V0.5
¤ 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.0.22Bemerkung:
¤
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.