* Standard COBOL (file "DML024.SCO") calling SQL * procedures in file "DML024.MCO"
**************************************************************** * * COMMENT SECTION * * DATE 1987/08/21 STANDARD 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. * * DML024.SCO * WRITTEN BY: HU YANPING * TRANSLATED AUTOMATICALLY FROM EMBEDDED COBOL BY CHRIS SCHANZLE * * THIS ROUTINE TESTS THE SEARCH CONDITIONS FOR SQL. * * REFERENCES * AMERICAN NATIONAL STANDARD database language - SQL * X3.135-1989 * * SECTION 5.18 <search condition> * ****************************************************************
MOVE"HU"TO uid CALL"AUTHID"USING uid MOVE"not logged in, not"TO uidx CALL"AUTHCK"USING SQLCODE uidx MOVE SQLCODE TO SQL-COD if (uid NOT = uidx) then DISPLAY"ERROR: User " uid " expected." DISPLAY"User " uidx " connected." DISPLAY" " STOPRUN END-IF
MOVE 0 TO errcnt DISPLAY "SQL Test Suite, V6.0, Module COBOL, dml024.sco" DISPLAY" " DISPLAY "59-byte ID" DISPLAY"TEd Version #" DISPLAY" " * date_time print * ACCEPT TO-DAY FROMDATE ACCEPT THE-TIME FROMTIME DISPLAY"Date run YYMMDD: " TO-DAY " at hhmmssff: " THE-TIME
******************** BEGIN TEST0108 *******************
DISPLAY" TEST0108" DISPLAY" Reference ANSI X3.135-1989 5.18
- " GR" DISPLAY" - - - - - - - - - - - - - - - - - - -" DISPLAY"*** Select all from a table " DISPLAY"*** SELECT EMPNUM, CITY " DISPLAY"*** FROM STAFF " DISPLAY"*** WHERE EMPNUM='E1' OR NOT(EMPNUM='E1') "
* EXEC SQL DECLARE S1 CURSOR FOR * SELECT EMPNUM,CITY * FROM STAFF * WHERE EMPNUM='E1' OR NOT(EMPNUM='E1') END-EXEC * EXEC SQL OPEN S1; CALL"SUB1"USING SQLCODE MOVE SQLCODE TO SQL-COD MOVE 0 TO i if (SQLCODE = 0) then DISPLAY"EMPNUM CITY " END-IF
MOVE 1 TO ii PERFORM P50 UNTIL ii > 19 * EXEC SQL CLOSE S1; CALL"SUB2"USING SQLCODE MOVE SQLCODE TO SQL-COD
if ( i = 5) then DISPLAY" *** pass *** " * EXEC SQL INSERT INTO TESTREPORT * VALUES('0108','pass','MCO') END-EXEC CALL"SUB3"USING SQLCODE MOVE SQLCODE TO SQL-COD else DISPLAY" dml024.sco *** fail *** " * EXEC SQL INSERT INTO TESTREPORT * VALUES('0108','fail','MCO') END-EXEC ADD 1 TO errcnt CALL"SUB4"USING SQLCODE MOVE SQLCODE TO SQL-COD END-IF
******************** END TEST0108 ******************* ******************** BEGIN TEST0109 *******************
DISPLAY" TEST0109" DISPLAY" Reference ANSI X3.135-1989 5.18
- " GR" DISPLAY" - - - - - - - - - - - - - - - - - - -" DISPLAY"*** Select nothing from a table " DISPLAY"*** SELECT EMPNUM, CITY " DISPLAY"*** FROM STAFF " DISPLAY"*** WHERE EMPNUM='E1' AND NOT(EMPNUM='E1') "
* EXEC SQL DECLARE S2 CURSOR FOR * SELECT EMPNUM,CITY * FROM STAFF * WHERE EMPNUM='E1' AND NOT(EMPNUM='E1') END-EXEC * EXEC SQL OPEN S2; CALL"SUB6"USING SQLCODE MOVE SQLCODE TO SQL-COD MOVE 0 TO i if (SQLCODE = 0) then DISPLAY"EMPNUM CITY" END-IF
MOVE 1 TO ii PERFORM P49 UNTIL ii > 19 * EXEC SQL CLOSE S2; CALL"SUB7"USING SQLCODE MOVE SQLCODE TO SQL-COD
if ( i = 0) then DISPLAY" *** pass *** " * EXEC SQL INSERT INTO TESTREPORT * VALUES('0109','pass','MCO') END-EXEC CALL"SUB8"USING SQLCODE MOVE SQLCODE TO SQL-COD else DISPLAY" dml024.sco *** fail *** " * EXEC SQL INSERT INTO TESTREPORT * VALUES('0109','fail','MCO') END-EXEC ADD 1 TO errcnt CALL"SUB9"USING SQLCODE MOVE SQLCODE TO SQL-COD END-IF
******************** END TEST0109 ******************* ******************** BEGIN TEST0110 *******************
DISPLAY" TEST0110" DISPLAY" Reference ANSI X3.135-1989 5.18
- " GR" DISPLAY" - - - - - - - - - - - - - - - - - - -" DISPLAY"*** unknown OR NOT(unknown) " DISPLAY"*** INSERT INTO WORKS " DISPLAY"*** VALUES ('E8','P8',NULL) " DISPLAY"*** SELECT EMPNUM,PNUM " DISPLAY"*** FROM WORKS " DISPLAY"*** WHERE HOURS < (SELECT HOURS FROM WORKS " DISPLAY"*** WHERE EMPNUM = 'E8') " DISPLAY"*** OR NOT(HOURS < (SELECT HOURS FROM WORKS " DISPLAY"*** WHERE EMPNUM = 'E8') "
* EXEC SQL INSERT INTO WORKS * VALUES('E8','P8',NULL) END-EXEC CALL"SUB11"USING SQLCODE MOVE SQLCODE TO SQL-COD
* EXEC SQL DECLARE S3 CURSOR FOR * SELECT EMPNUM,PNUM * FROM WORKS * WHERE HOURS < (SELECT HOURS FROM WORKS * WHERE EMPNUM = 'E8') * OR NOT(HOURS< (SELECT HOURS FROM WORKS * WHERE EMPNUM = 'E8')) END-EXEC * EXEC SQL OPEN S3; CALL"SUB12"USING SQLCODE MOVE SQLCODE TO SQL-COD MOVE 0 TO i if (SQLCODE = 0) then DISPLAY"EMPNUM PNUM" END-IF
******************** END TEST0110 ******************* ******************** BEGIN TEST0111 *******************
DISPLAY" TEST0111" DISPLAY" Reference ANSI X3.135-1989 5.18
- " GR" DISPLAY" - - - - - - - - - - - - - - - - - - -" DISPLAY"*** unknown AND NOT(unknown) " DISPLAY"*** SELECT EMPNUM,PNUM " DISPLAY"*** FROM WORKS " DISPLAY"*** WHERE HOURS < (SELECT HOURS FROM WORKS " DISPLAY"*** WHERE EMPNUM = 'E8') " DISPLAY"*** AND NOT(HOURS < (SELECT HOURS FROM WORKS " DISPLAY"*** WHERE EMPNUM = 'E8') "
* EXEC SQL INSERT INTO WORKS * VALUES('E8','P8',NULL) END-EXEC CALL"SUB17"USING SQLCODE MOVE SQLCODE TO SQL-COD
* EXEC SQL DECLARE S4 CURSOR FOR * SELECT EMPNUM,PNUM * FROM WORKS * WHERE HOURS < (SELECT HOURS FROM WORKS * WHERE EMPNUM = 'E8') * AND NOT(HOURS< (SELECT HOURS FROM WORKS * WHERE EMPNUM = 'E8')) END-EXEC * EXEC SQL OPEN S4; CALL"SUB18"USING SQLCODE MOVE SQLCODE TO SQL-COD MOVE 0 TO i if (SQLCODE = 0) then DISPLAY"EMPNUM PNUM" END-IF
******************** END TEST0111 ******************* ******************** BEGIN TEST0112 *******************
DISPLAY" TEST0112" DISPLAY" Reference ANSI X3.135-1989 5.18
- " GR" DISPLAY" - - - - - - - - - - - - - - - - - - -" DISPLAY"*** unknown AND true " DISPLAY"*** SELECT EMPNUM,PNUM " DISPLAY"*** FROM WORKS " DISPLAY"*** WHERE HOURS < (SELECT HOURS FROM WORKS " DISPLAY"*** WHERE EMPNUM = 'E8') " DISPLAY"*** AND HOURS IN (SELECT HOURS FROM WORKS) "
* EXEC SQL INSERT INTO WORKS * VALUES('E8','P8',NULL) END-EXEC CALL"SUB23"USING SQLCODE MOVE SQLCODE TO SQL-COD
* EXEC SQL DECLARE S5 CURSOR FOR * SELECT EMPNUM,PNUM * FROM WORKS * WHERE HOURS < (SELECT HOURS FROM WORKS * WHERE EMPNUM = 'E8') * AND HOURS IN (SELECT HOURS FROM WORKS) END-EXEC * EXEC SQL OPEN S5; CALL"SUB24"USING SQLCODE MOVE SQLCODE TO SQL-COD MOVE 0 TO i if (SQLCODE = 0) then DISPLAY"EMPNUM PNUM" END-IF
******************** END TEST0112 ******************* ******************** BEGIN TEST0113 *******************
DISPLAY" TEST0113" DISPLAY" Reference ANSI X3.135-1989 5.18
- " GR" DISPLAY" - - - - - - - - - - - - - - - - - - -" DISPLAY"*** unknown OR true " DISPLAY"*** SELECT EMPNUM,PNUM " DISPLAY"*** FROM WORKS " DISPLAY"*** WHERE HOURS < (SELECT HOURS FROM WORKS " DISPLAY"*** WHERE EMPNUM = 'E8') " DISPLAY"*** OR HOURS IN (SELECT HOURS FROM WORKS) "
* EXEC SQL INSERT INTO WORKS * VALUES('E8','P8',NULL) END-EXEC CALL"SUB29"USING SQLCODE MOVE SQLCODE TO SQL-COD
* EXEC SQL DECLARE S6 CURSOR FOR * SELECT EMPNUM,PNUM * FROM WORKS * WHERE HOURS < (SELECT HOURS FROM WORKS * WHERE EMPNUM = 'E8') * OR HOURS IN (SELECT HOURS FROM WORKS) END-EXEC * EXEC SQL OPEN S6; CALL"SUB30"USING SQLCODE MOVE SQLCODE TO SQL-COD MOVE 0 TO i if (SQLCODE = 0) then DISPLAY"EMPNUM PNUM" END-IF
******************** END TEST0113 *******************
**** TESTER MAY CHOOSE TO INSERT CODE FOR errcnt > 0 STOPRUN.
* **** Procedures for PERFORM statements
P50. * EXEC SQL FETCH S1 INTO * :EMPNO1,:SCITY END-EXEC CALL"SUB35"USING SQLCODE EMPNO1 SCITY MOVE SQLCODE TO SQL-COD if (SQLCODE = 0) then COMPUTE i = i + 1 DISPLAY EMPNO1 " ", SCITY END-IF ADD 1 TO ii
.
P49. * EXEC SQL FETCH S2 INTO * :EMPNO1,:SCITY END-EXEC CALL"SUB36"USING SQLCODE EMPNO1 SCITY MOVE SQLCODE TO SQL-COD if (SQLCODE = 0) then COMPUTE i = i + 1 DISPLAY EMPNO1 " ", SCITY END-IF ADD 1 TO ii
.
P48. * EXEC SQL FETCH S3 INTO * :WEMP,:WPNUM END-EXEC CALL"SUB37"USING SQLCODE WEMP WPNUM MOVE SQLCODE TO SQL-COD if (SQLCODE = 0) then COMPUTE i = i + 1 DISPLAY WEMP " ", WPNUM END-IF ADD 1 TO ii
.
P47. * EXEC SQL FETCH S4 INTO * :WEMP,:WPNUM END-EXEC CALL"SUB38"USING SQLCODE WEMP WPNUM MOVE SQLCODE TO SQL-COD if (SQLCODE = 0) then COMPUTE i = i + 1 DISPLAY WEMP " ", WPNUM END-IF ADD 1 TO ii
.
P46. * EXEC SQL FETCH S5 INTO * :WEMP,:WPNUM END-EXEC CALL"SUB39"USING SQLCODE WEMP WPNUM MOVE SQLCODE TO SQL-COD if (SQLCODE = 0) then COMPUTE i = i + 1 DISPLAY WEMP " ", WPNUM END-IF ADD 1 TO ii
.
P45. * EXEC SQL FETCH S6 INTO * :WEMP,:WPNUM END-EXEC CALL"SUB40"USING SQLCODE WEMP WPNUM MOVE SQLCODE TO SQL-COD if (SQLCODE = 0) then COMPUTE i = i + 1 DISPLAY WEMP " ", WPNUM END-IF ADD 1 TO ii
.
¤ Dauer der Verarbeitung: 0.11 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 ist noch experimentell.