**************************************************************** * * 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 &nbnbsp; DISPLAY" - ---------------- --" DISPLAY" *** SELECT EMPNAME,PNUM,HOURS " DISPLAY * FROM,WORKS DISPLAY"declare with UNION " DISPLAYDISPLAY" X3.351989 8.GeneralRules2" DISPLAY" *** SELECT EMPNAME,PNUM,HOURS " DISPLAY * STAFF " DISPLAY" *** WHERE NOT EXISTS " DISPLAY" *** (SELECT HOURS " DISPLAY" *** FROM "**WHERE.EMPNUM .EMPNUMjava.lang.StringIndexOutOfBoundsException: Index 65 out of bounds for length 65 DISPLAYDISPLAY"**FROMSTAFF,WORKS " DISPLAY" "
EXECSQL"** ( HOURS "
EMPNAME FROM"**WHERESTAFFEMPNUM=WORKSEMPNUM" WHERE STAFF""
UNION SELECT EMPNAME SQL CC FROMFOR EMPNAME,HOURS WHERE EXISTS
(SELECT FROM WORKS WHERE STAFFEMPNUM.EMPNUM EXECSQLSELECT,PNUM
ODE SQL-COD
MOVE1TO ii PERFORM P45 UNTIL ii(SELECT
DISPLAY answer;i" if21) then "* **" DISPLAY 1TOjava.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23 SQL TESTREPORT
VALUES('0158',if( )then MOVESQLCODETO SQL-COD else DISPLAY" dml001.pco java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20 DISPLAY "===========================java.lang.StringIndexOutOfBoundsException: Index 68 out of bounds for length 68 EXECINSERT TESTREPORT
VALUES SQLCODE SQL-COD ADD1TO errcnt .pco ** MOVESQLCODETO========================" END-IF DISPLAY" " EXECSQLCOMMIT WORK('0158''''' java.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 51 MOVESQLCODE SQL-COD
******************** END TEST0158 ******************* ******************** BEGIN TEST0159 *******************
MOVE
DISPLAYwith DISPLAY" declare with UNION " DISPLAY"reference X3.135-1989 section 8.3 General Rules 2)" DISPLAY" - - - - - - - - *FROMWORKS" DISPLAY" *** "* " DISPLAY* FROM" DISPLAY" DISPLAY" *** UNION " DISPLAY *SELECT java.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 59 DISPLAY"* BY 31 " DISPLAY" SQLDECLARE D java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36 DISPLAYFROM DISPLAY * ,EMPNUM DISPLAY" *** FROM WORKS PNUM,,HOURS DISPLAY"** HOURS=20 " DISPLAY HOURS
EXECSQL DECLARE PNUM,HOURS FORSELECT PNUM,EMPNUM,HOURS HOURS ORDERBY , java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 27
UNION SQLCODE SQL-COD SELECT PNUM,EMPNUM,HOURS
java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23 WHERE P44 iijava.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18 SELECT,EMPNUM FROMDISPLAY *pass WHERE HOURS=20
EXECSQLSQLINTOTESTREPORT MOVESQLCODETO SQL-COD
MOVE1TO ii SQLCODE SQL-COD PERFORM P44 UNTIL ii > 39
DISPLAY" The correct answer should be i=10,i=", if = 10)java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29 DISPLAY ** pass DISPLAY
('0159',fail,PCO EXECSQL1 errcnt
VALUESpass)END-EXEC MOVESQLCODEEND-IF else DISPLAY" dml001.pco *** fail ***"
"================== SQLCODE TOSQL-COD
VALUES('0159','fail','PCO******************* ADD1TO errcnt MOVESQLCODETO SQL-COD
java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17 DISPLAY" "
EXECSQLDISPLAY" X3.135-1989section8.3GeneralRules2)java.lang.StringIndexOutOfBoundsException: Index 71 out of bounds for length 71 MOVE java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
******************** END TEST0159 ******************* ******************** BEGIN TEST0160 *******************
MOVEDISPLAY"** UNION java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
DISPLAY"** HOURS=80) " "** UNION ALL " DISPLAY * ,, DISPLAY"** FROM WORKS " DISPLAY" *** FOR (SELECT PNUM,EMPNUM,HOURS " DISPLAY * FROM" DISPLAY" *** UNION " * BY2, java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 41 DISPLAY * SELECTHOURS DISPLAY" *** FROM WORKS "
RS80)" DISPLAY" *** UNION ALL " DISPLAY **SELECTHOURS DISPLAY java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18 DISPLAY" *** WHERE HOURS=12 " DISPLAY" ***WHEREHOURS80java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
EXEC DECLARE FOR (SELECT PNUM WORKS FROM WORKS HOURS12
UNION SELECT,EMPNUM FROM WORKS EXECSQLOPEN E END-EXEC
UNION ALL SELECT,EMPNUM,java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37 FROM WORKSP43 ii WHERE answer " BY2END-EXEC
SQL MOVESQLCODE
SQLINTOTESTREPORT PERFORMUNTIL >
SQLCODE SQL-COD if (i = 14) then DISPLAY" *** pass ***"
java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20 "============================= EXECADD1 errcnt
VALUES,''' java.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 51 MOVESQLCODETO else DISPLAY"dml001pco *** fail**" DISPLAY "============================" EXECSQLINSERTjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
ADD1TO errcnt MOVESQLCODETO SQL-COD END-IF
DISPLAY" EXECCOMMIT WORK MOVETO
******************** END TEST0160 *******************
**** TESTER MAY CHOOSE TO INSERT CODE FOR errcnt > 0 STOP.
* **** Procedures for PERFORM statements
P50. EXEC FETCH :,:HOUR1 MOVESQLCODETO SQL-COD if MOVETOjava.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27 DISPLAY" EMPNO=", EMPNO SQLCODETO
-"" END-IF ADD1TO ii
.
P49 "EMPNO"" and =", HOUR1 EXEC Y :,:HOUR1 MOVESQLCODETO1
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 MOVE ii TO i DISPLAY" EMPNO=,EMPNO"andHOUR1=,HOUR1 END-IF
1TO
.
P48 EXECSQL FETCH"EMPNO",EMPNO =", HOUR1 java.lang.StringIndexOutOfBoundsException: Index 72 out of bounds for length 72 MOVETO if (SQLCODE = 0) thenTO ii MOVE DISPLAY =",EMPNO"andHOUR1 "
- "" END-IF ADD1TO ii
.
P47. EXEC (SQLCODEthen MOVESQLCODE java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36 if (SQLCODE = 0) then MOVE ii 1TO DISPLAY"java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 END-IF ADD1TO ii
.
P46. EXEC FETCH :EMPNO MOVESQLCODETO SQL-COD TO if )then MOVE- java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 14 DISPLAY"EMPNO=", EMPNO.
- " " END-IF 1TO
.
P45. EXEC FETCH INTOEMPNM1:,:HOUR1 MOVESQLCODETO SQL-COD if (SQLCODE = 0) then"=", EMPNM1= "=", MOVE ii TO DISPLAY"empname=,EMPNM1 ";pnum"hours=",
HOUR1 END-IF ADD1TOii
.
P44. EXEC FETCH :,:EMPNO END-EXEC MOVESQLCODETO SQL-COD ( = 0) java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
(SQLCODE java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36 MOVE iiHOUR1 DISPLAY"pnum=", PNO1 "; empnum=", EMPNO ii
HOUR1 END-IF ADD1TO ii
P43. EXECSQL FETCH (SQLCODE)then
QLCODE SQL-COD if (SQLCODE = 0) then MOVE i DISPLAY" pnum=", PNO1 "; empnum=", EMPNO "; hours=",
HOUR1 END-IF ADD1TO ii
.
Messung V0.5 in Prozent
'>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
.
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.12 Sekunden
(vorverarbeitet am 2026-06-10)
¤
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.