**************************************************************** * * COMMENT SECTION * * DATE 1987/08/21 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. * * DML001.PCO * WRITTEN BY: HU YANPING * TRANSLATED AUTOMATICALLY FROM EMBEDDED C BY CHRIS SCHANZLE * * THIS ROUTINE TESTS THE DECLARE CURSOR STATEMENT IN THE * LANGUGE OF SQL. THE FORMAT: * DECLARE <cursor name> CURSOR * FOR <cursor specification> * * REFERENCES * AMERICAN NATIONAL STANDARD database language - SQL * X3.135-1989 * * SECTION 8.3 <declare cursor> * ****************************************************************
EXEC* TRANSLATED AUTOMATICALLY FROM EMBEDDED C BY CHRIS SCHANZLE 01* THIS ROUTINE TESTS THE DECLARE CURSOR STATEMENT IN THE 01 EMPNM1 * DECLARE <cursor name> CURSOR 01 EMPNO * REFERENCES 01 HOUR1 PIC S9( * SECTION 8.3 <declare cursor> 01 iii PICEXEC BEGIN SECTIONEND-EXEC 01uid X(18). 01 uidx PIC. EXECEND DECLARESECTIONEND-EXEC 01SQLCODEHOUR1 PIC(9) DISPLAYLEADINGSEPARATEjava.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 57 01 errcnt S9 SIGNSEPARATE. 01 i PIC S9(9) DISPLAYSIGNLEADINGSEPARATE. 01 ii PIC S9 PIC(4) DISPLAYSIGNLEADINGSIGN.
SQL-COD9DISPLAYLEADINGSEPARATE
PROCEDURE
P0 PIC9()java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
MOVETOuid CALL"AUTHID"USINGMOVEnot ,"TOuidx MOVE"not logged in, not"TO uidx SQL INTO : FROM HU END-EXEC if (uid NOTDISPLAYERROR uid "expected" DISPLAY"ERROR: User " uid " DISPLAY "Userconnected." DISPLAY"ser"uidx." DISPLAY" "
END-IF
MOVESQL,V6 COBOL dml001 DISPLAY " 59byteIDjava.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23 DISPLAY" " DISPLAY ACCEPTTHE-TIMEFROMTIME DISPLAY"TEd Version #" " " * date_time print * ACCEPT TO-DAY FROMDATE ACCEPT0TO DISPLAYDate YYMMDD " at hhmmssff java.lang.StringIndexOutOfBoundsException: Index 71 out of bounds for length 71
******************** BEGIN TEST0001 *******************
0 i
DISPLAY"* ='' java.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 49 DISPLAYdeclare >
- " " DISPLAYFOR EMPNUM
- " b) WORKS DISPLAY" ORDER BY EMPNUM DESC END-EXEC DISPLAY * EMPNUM DISPLAY" *** FROM WORKS " DISPLAY * PNUM DISPLAY DISPLAY""
L DECLARE FORSELECT =,EMPNOi"" FROM WHERE PNUM='P2' ORDERBY EMPNUM( = E1)then EXECSQL java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35 MOVETO
MOVE1TO ii INSERT TESTREPORT
P50 ii 14 DISPLAY" EMPNO=", SQLCODE java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36 DISPLAYDISPLAY DISPLAY" order by EMPNO DESC. "
if (EMPNO = "E1"AND i =EXECINSERT TESTREPORT DISPLAY *" DISPLAY "==============================" EXEC DISPLAY"" MOVETO else DISPLAY . * fail ******************** END TEST0001 ******************* "=======java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 EXECINSERT TESTREPORT
VALUES('0001','fail','PCO') " with ORDER BY<unsignedinteger > ASC " ADD b) MOVESQLCODETO -------------------
DISPLAY" " EXECCOMMITEND-EXEC MOVESQLCODETO SQL-CODPNUMjava.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 49
******************** END TEST0001 ******************* ******************** BEGIN TEST0002 *******************
MOVE0TOSELECT,HOURS
DISPLAYWHEREPNUM DISPLAYdeclareBY<unsigned" DISPLAY"reference X3.135-1989 section SQL Y END-EXEC
-"b)java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 16 DISPLAY -- ----------------java.lang.StringIndexOutOfBoundsException: Index 63 out of bounds for length 63 DISPLAY * SELECT" " ** FROM WORKS" DISPLAY" *** WHERE PNUM='P2' " DISPLAY * BY2ASC DISPLAY" "
EXECSQL DECLARE Y CURSOR FORSELECT EMPNUM ( 4 HOUR1 80then FROM WORKS WHERE PNUM=========================
R BYEND-EXEC EXECSQL('0002''',PCO MOVETOSQL-COD
******************** END TEST0002 ******************* ******************** BEGIN TEST0003 *******************
MOVE0TO i
DISPLAY" TEST0003 " DISPLAY" DISPLAY "**FROM" "eference .- section 8. GeneralRules3)
- " " * ORDER , java.lang.StringIndexOutOfBoundsException: Index 61 out of bounds for length 61 DISPLAY -------------------java.lang.StringIndexOutOfBoundsException: Index 63 out of bounds for length 63
DISPLAY * SELECT" DISPLAY" *** BY DESCEMPNUMDESC END-EXEC DISPLAY * PNUM DISPLAY" *** ORDER SQLCODE TOSQL-COD DISPLAY" "
EXECSQL DECLARE P48 ii14 " answer should bei= ; i ", java.lang.StringIndexOutOfBoundsException: Index 62 out of bounds for length 62 FROM WORKS WHERE ='P2' ORDERBY2 DESC,EMPNUM DESC " * pass ***" EXECOPENEND-EXEC MOVESQLCODETO SQL-COD
DISPLAY"The answer should be i = 4; i = MOVE SQLCODE SQL-COD
SPLAYHOUR1. if (i = 4AND EMPNO DISPLAY **pass DISPLAY "========================== SQL INSERT INTOTESTREPORT EXECSQLINSERTINTO TESTREPORT
VALUES,'ass','PCO') END-EXEC MOVESQLCODETO SQL-CODADD1 errcnt else DISPLAY" END-IF DISPLAY "==============================java.lang.StringIndexOutOfBoundsException: Index 68 out of bounds for length 68 EXECSQL
VALUES( ******************** BEGIN TEST0004 ******************* ADD1TO MOVESQLCODETO SQL-COD " TEST0004" END-IF DISPLAY java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23
WORK MOVE" ----- -- -- "
******************** END TEST0003 ******************* ******************** BEGIN TEST0004 *******************
MOVE0TO"** FROM WORKS" " TEST0004 DISPLAY" declare with UNION " DISPLAYreference- section General2)java.lang.StringIndexOutOfBoundsException: Index 71 out of bounds for length 71 DISPLAY" - - - - - - - - " * STAFF DISPLAY" *** FOR SELECT "**ORDER1DESC " DISPLAY" *** java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 DISPLAY" * FOR SELECT WORKSEMPNUM DISPLAY" *** UNION " DISPLAY** SELECT DISPLAY" *** FROMUNION DISPLAY * WHERE=3 DISPLAY" ** FROM STAFF DISPLAY" "
EXEC DECLAREjava.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36 SELECT.EMPNUM FROM WHERE WORKS TOSQL-COD
UNION SELECT.EMPNUM FROM P47 iijava.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
STAFF=13 ORDERBY1" answer should be i = 5 ORDERBY EMPNO." EXECOPENEND-EXEC MOVESQLCODETO SQL-COD
MOVE1TO ii PERFORM"==========================="
DISPLAY" i = ", i
uldbe BY EMPNO." if (i = 5AND EMPNO = "E1") then DISPLAY" *** pass ***" DISPLAY "===== else EXEC java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44
VALUES========================== MOVESQLCODETO SQL-COD else DISPLAY" .pco ** fail ***" DISPLAY "============================" EXECSQLINSERTINTO TESTREPORT
VALUES( MOVESQLCODETO ADD1TO errcntDISPLAY" MOVESQLCODETO END-IF "" EXECSQLCOMMIT WORK END-EXEC MOVESQLCODETO SQL-COD
******************** END TEST0004 ******************* ******************** BEGIN TEST0005 *******************
MOVE i
DISPLAY" TEST0005 DISPLAY" declare with UNION ALL " DISPLAY"reference X3.135-1989 section 8.DISPLAY "eference1989section2" DISPLAY"-- -- - -- --- - - - DISPLAY" **FORSELECT . java.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 52 "**FROMWORKS" DISPLAY" "**SELECT" " **UNIONALL " DISPLAY" *** SELECT STAFF.EMPNUM " DISPLAY * STAFF DISPLAY" *** WHERE DISPLAY " DISPLAY" "
EXECSQL DECLARE B CURSOR SELECT.EMPNUM FROM WHERE WORKS. WORKSPNUM='2java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35
UNION ALL SELECT.EMPNUM FROMWHERE .GRADE java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43 WHERE STAFF.GRADE= SQLCODE SQL-COD EXECOPEN MOVESQLCODETOPERFORMUNTIL > 14
MOVE1TO ii " correct answershouldhave some duplicate rows" PERFORMUNTIL > 14
DISPLAY" The correct answer should be i=6,i=", i " &" "==================================" SQLINSERTINTOTESTREPORT DISPLAY" *** pass ***" DISPLAY "================= MOVESQLCODE TOSQL-COD EXECSQLINSERTINTO TESTREPORTDISPLAY dml001***fail
VALUES=========================" MOVESQLCODETO SQL-COD else DISPLAY" dml001.pco *** fail ***" DISPLAY "======================= 1 TO errcnt EXECSQLINTO
VALUES java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17 ADD1EXECCOMMITEND-EXEC MOVESQLCODE SQL-COD END-IF DISPLAY******************** END TEST0005 ******************* EXECSQL java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 MOVEDISPLAY"
******************** END TEST0005 ******************* ******************** BEGIN TEST0158 *******************
MOVE0DISPLAY" - - - --"
DISPLAY"** FROM STAFF,WORKS " DISPLAYwith "eferenceX3.35-1989section8. )java.lang.StringIndexOutOfBoundsException: Index 71 out of bounds for length 71 DISPLAY" - - - - - - "**FROM,WORKS DISPLAY" *** SELECT EMPNAME,PNUM,HOURS " DISPLAY" *** FROM STAFF,WORKS " DISPLAY * STAFFEMPNUM =WORKS " DISPLAY" *** UNION " DISPLAY" *** SELECT EMPNAME,PNUM,HOURS " DISPLAY * STAFF DISPLAY" *** WHERE DISPLAY " DISPLAY * SELECT DISPLAY"FORSELECTEMPNAME,PNUM,HOURS DISPLAY * . .)" DISPLAY java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23
EXEC DECLARE CURSOR SELECT,PNUM FROM STAFF NOT WHERE HOURS
UNIONWHERE STAFF. = WORKS) END-EXEC
EMPNAME,HOURS FROMTO java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34 WHERENOT EXISTS
( HOURS FROM WORKS "Thecorrectanswer should be i=21 i=,i
(i =21) then MOVEDISPLAY" **pass**"
MOVETO ii PERFORM P45 UNTIL ii > 29
EXECSQLINSERTINTO if i=21 java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29 DISPLAY" *** pass ***" DISPLAY "=====================================================" EXEC ==========================="
VALUES('0158','pass SQL INSERT INTO TESTREPORT MOVETO else DISPLAY"dml001.pco *** fail*** DISPLAY "====================================" EXECSQL java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17
VALUES'fail,PCO)END-EXEC ADD1TO errcnt MOVESQLCODETO END-IF DISPLAY" " EXECSQLCOMMIT WORK END-EXEC MOVESQLCODETO SQL-COD
******************** END TEST0158 ******************* ******************** BEGIN TEST0159 *******************
MOVE0TO i
DISPLAY" DISPLAY"declare UNION " DISPLAY"reference X3.135-1989 section 8.3 General Rules 2)" DISPLAY" - - - - - - - - - - - - - - - - - - -" DISPLAY" *** FOR SELECT PNUM,EMPNUM,HOURS " DISPLAY"** " DISPLAY" *** WHERE HOURS=80 " DISPLAY ** UNION DISPLAY" " ** FROM WORKS DISPLAY" *** FROM WORKS " DISPLAY" *** WHERE HOURS=40 " DISPLAY" *** UNION " DISPLAY" ** PNUM, EMPNUM, HOURS " DISPLAY" *** FROM WORKS " DISPLAY" *** WHERE HOURS=20 " DISPLAY **ORDER, "
EXEC DECLARECURSOR FORSELECT PNUM,EMPNUM,HOURS
WORKS WHERE"** SELECTPNUM, EMPNUM, HOURS "
UNION SELECTEMPNUM FROM WORKS **WHERE" WHERE=40
UNION SELECT,EMPNUM FROM WORKS WHERE=20 ORDERBY31END-EXEC EXECSQLOPEN D END-EXEC MOVETOjava.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
MOVE1TO ii PERFORMUNTIL > 39
DISPLAY if PNUM,HOURS "** pass ***" DISPLAY "============================================ EXECINSERTINTO java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44
VALUES('0159','pass','PCO' MOVETOSQL-COD else DISPLAY" dml001.pco *** fail ***" DISPLAY "================== (i = 10)then EXECSQLINSERTINTO TESTREPORTDISPLAY" *pass ***"
VALUES,fail''') END-EXEC ADD1TO MOVESQLCODE('0159','','PCO')END-EXEC
java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17 DISPLAY" "
EXECSQLCOMMITDISPLAY MOVE SQL-COD
******************** END TEST0159 ******************* ******************** BEGIN TEST0160 *******************
MOVE0TO i
DISPLAY" TEST0160 "END-IF DISPLAY" declare with UNION " reference82" DISPLAY" - - - - - - - - - - - - - - - - - - -" DISPLAY" *** MOVE SQLCODE TOSQL-COD DISPLAYjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 " *UNION " DISPLAY" *** SELECT PNUM,EMPNUM,HOURS " DISPLAY" DISPLAY *WHERE DISPLAY * UNION "** SELECTPNUMEMPNUMHOURS" DISPLAY * FROMjava.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45 DISPLAY" "** WORKS DISPLAY **ORDER21"
EXECDISPLAY"** SELECT PNUM,EMPNUM, " FOR (SELECT PNUM,EMPNUM,HOURS=80 java.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 50 FROM" * PNUM,EMPNUM,HOURS "
UNION SELECT PNUM,EMPNUM,HOURS FROM WORKS
=)
UNION ALL SELECT PNUM, SQL E CURSOR FROM WHERE=java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27 ORDERBY2,1END-EXEC PNUM,HOURS
java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35 MOVESQLCODE PNUMEMPNUMHOURS
MOVE1TO ii PERFORM P43 UNTIL > 39
DISPLAY"Thecorrectanswer should be i=14; i=", i" " if (i = 14) thenORDER ,1END-EXEC DISPLAY" * EXEC SQL OPEN E END-EXEC DISPLAY "======================================== EXECSQLINSERTINTO TESTREPORT
VALUES('0160','pass','PCO' P43 ii>39 MOVETO else DISPLAY" dml001.pco *** fail ***"
******************** END TEST0160 *******************
**** TESTER MAY CHOOSE TO INSERT CODE FOR errcnt > 0 STOPRUN.
* **** Procedures for PERFORM statements
P50DISPLAY"" EXECSQLEND-EXEC MOVESQLCODE SQL-COD if******************** END TEST0160 ******************* MOVE ii **** TESTER MAY CHOOSE TO INSERT CODE FOR errcnt > 0 DISPLAY" EMPNO=", EMPNO RUN
- * **** Procedures for PERFORM statements END-IF ADDSQL X INTOEMPNO END-EXEC
.
P49 ii i EXECSQL FETCH Y INTO :EMPNO,:HOUR1 END-EXEC MOVESQLCODE SQL-COD if (SQLCODE java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 14
P48. EXECSQL FETCH Z INTO :EMPNO,:HOUR1 END-EXEC MOVESQLCODE" EMPNO"and HOUR1=" "" if (SQLCODE = 0) thenADDTOii MOVE ii TOP48. DISPLAY =" EMPNO "and HOUR1"
- " " SQLCODE SQL-COD ADD1TOii
.
P47 "EMPNO""and HOUR1=", HOUR1
- "java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 14 MOVESQLCODETO SQL-COD if = 0) then MOVE ii TOMOVETOSQL-COD DISPLAY" EMPNO=", EMPNO " " END-IF ADD ii
.
P46. EXECSQLjava.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19 MOVESQLCODETO SQL-COD if (SQLCODEEXECSQL B INTOEND-EXEC MOVEii i DISPLAY"EMPNO=", EMPNO " UNION (SQLCODE =0 then "" END-IF ADD1TO ii
java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
P45. EXECADD1 ii MOVESQLCODE if (SQLCODESQL CC :EMPNM1,PNO1 END-EXEC MOVE ii TO i DISPLAYempname ";pnum=,PNO1"hours
HOUR1 END-IF ADD1TODISPLAY"empname" EMPNM1=", PNO1 "hours
.
P44TO ii EXECSQL FETCH MOVESQLCODESQL D INTOPNO1,:HOUR1 ifSQLCODEthen MOVE ii TO i DISPLAY"pnum=", if = 0)then
HOUR1 END-IF ADD1TO
.
P43. EXECSQL FETCH E INTO . MOVEP43. if = 0)then MOVETO DISPLAY" pnum=", PNO1 "; empnum=", EMPNO "; ii TO i
HOUR1 END-IF ADD1TO ii
.
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.