**************************************************************** * * 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. * * DML024.PCO * WRITTEN BY: HU YANPING * TRANSLATED AUTOMATICALLY FROM EMBEDDED C 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 EXECSQLSELECT
USER INTO :uidx FROM HU.ECCO END-EXEC 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, Embedded COBOL, dml024.pco" 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') "
EXECSQL DECLARE S1 CURSOR FOR SELECT EMPNUM,CITY FROM STAFF
WHERE EMPNUM='E1'ORNOT(EMPNUM='E1') END-EXEC EXECSQLOPEN S1 END-EXEC 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 EXECSQLCLOSE S1 END-EXEC MOVE SQLCODE TO SQL-COD
if ( i = 5) then DISPLAY" *** pass *** " EXECSQLINSERTINTO TESTREPORT
VALUES('0108','pass','PCO') END-EXEC MOVE SQLCODE TO SQL-COD else DISPLAY" dml024.pco *** fail *** " EXECSQLINSERTINTO TESTREPORT
VALUES('0108','fail','PCO') END-EXEC ADD 1 TO errcnt MOVE SQLCODE TO SQL-COD END-IF
EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD
******************** 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') "
EXECSQL DECLARE S2 CURSOR FOR SELECT EMPNUM,CITY FROM STAFF
WHERE EMPNUM='E1'ANDNOT(EMPNUM='E1') END-EXEC EXECSQLOPEN S2 END-EXEC 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 EXECSQLCLOSE S2 END-EXEC MOVE SQLCODE TO SQL-COD
if ( i = 0) then DISPLAY" *** pass *** " EXECSQLINSERTINTO TESTREPORT
VALUES('0109','pass','PCO') END-EXEC MOVE SQLCODE TO SQL-COD else DISPLAY" dml024.pco *** fail *** " EXECSQLINSERTINTO TESTREPORT
VALUES('0109','fail','PCO') END-EXEC ADD 1 TO errcnt MOVE SQLCODE TO SQL-COD END-IF
EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD
******************** 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') "
EXECSQLINSERTINTO WORKS
VALUES('E8','P8',NULL) END-EXEC MOVE SQLCODE TO SQL-COD
EXECSQL DECLARE S3 CURSOR FOR SELECT EMPNUM,PNUM FROM WORKS
WHERE HOURS < (SELECT HOURS FROM WORKS
WHERE EMPNUM = 'E8') ORNOT(HOURS< (SELECT HOURS FROM WORKS
WHERE EMPNUM = 'E8')) END-EXEC EXECSQLOPEN S3 END-EXEC MOVE SQLCODE TO SQL-COD MOVE 0 TO i if (SQLCODE = 0) then DISPLAY"EMPNUM PNUM" END-IF
MOVE 1 TO ii PERFORM P48 UNTIL ii > 19
EXECSQL ROLLBACK WORK END-EXEC MOVE SQLCODE TO SQL-COD
if ( i = 0) then DISPLAY" *** pass *** " EXECSQLINSERTINTO TESTREPORT
VALUES('0110','pass','PCO') END-EXEC MOVE SQLCODE TO SQL-COD else DISPLAY" dml024.pco *** fail *** " EXECSQLINSERTINTO TESTREPORT
VALUES('0110','fail','PCO') END-EXEC ADD 1 TO errcnt MOVE SQLCODE TO SQL-COD END-IF
EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD
******************** 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') "
EXECSQLINSERTINTO WORKS
VALUES('E8','P8',NULL) END-EXEC MOVE SQLCODE TO SQL-COD
EXECSQL DECLARE S4 CURSOR FOR SELECT EMPNUM,PNUM FROM WORKS
WHERE HOURS < (SELECT HOURS FROM WORKS
WHERE EMPNUM = 'E8') ANDNOT(HOURS< (SELECT HOURS FROM WORKS
WHERE EMPNUM = 'E8')) END-EXEC EXECSQLOPEN S4 END-EXEC MOVE SQLCODE TO SQL-COD MOVE 0 TO i if (SQLCODE = 0) then DISPLAY"EMPNUM PNUM" END-IF
MOVE 1 TO ii PERFORM P47 UNTIL ii > 19
EXECSQL ROLLBACK WORK END-EXEC MOVE SQLCODE TO SQL-COD
if ( i = 0) then DISPLAY" *** pass *** " EXECSQLINSERTINTO TESTREPORT
VALUES('0111','pass','PCO') END-EXEC MOVE SQLCODE TO SQL-COD else DISPLAY" dml024.pco *** fail *** " EXECSQLINSERTINTO TESTREPORT
VALUES('0111','fail','PCO') END-EXEC ADD 1 TO errcnt MOVE SQLCODE TO SQL-COD END-IF
EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD
******************** 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) "
EXECSQLINSERTINTO WORKS
VALUES('E8','P8',NULL) END-EXEC MOVE SQLCODE TO SQL-COD
EXECSQL 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 EXECSQLOPEN S5 END-EXEC MOVE SQLCODE TO SQL-COD MOVE 0 TO i if (SQLCODE = 0) then DISPLAY"EMPNUM PNUM" END-IF
MOVE 1 TO ii PERFORM P46 UNTIL ii > 19
EXECSQL ROLLBACK WORK END-EXEC MOVE SQLCODE TO SQL-COD
if ( i = 0) then DISPLAY" *** pass *** " EXECSQLINSERTINTO TESTREPORT
VALUES('0112','pass','PCO') END-EXEC MOVE SQLCODE TO SQL-COD else DISPLAY" dml024.pco *** fail *** " EXECSQLINSERTINTO TESTREPORT
VALUES('0112','fail','PCO') END-EXEC ADD 1 TO errcnt MOVE SQLCODE TO SQL-COD END-IF
EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD
******************** 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) "
EXECSQLINSERTINTO WORKS
VALUES('E8','P8',NULL) END-EXEC MOVE SQLCODE TO SQL-COD
EXECSQL 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 EXECSQLOPEN S6 END-EXEC MOVE SQLCODE TO SQL-COD MOVE 0 TO i if (SQLCODE = 0) then DISPLAY"EMPNUM PNUM" END-IF
MOVE 1 TO ii PERFORM P45 UNTIL ii > 19
DISPLAY" "" SQLCODE = ", SQL-COD ", i = ", i
EXECSQL ROLLBACK WORK END-EXEC MOVE SQLCODE TO SQL-COD
if ( i = 12) then DISPLAY" *** pass *** " EXECSQLINSERTINTO TESTREPORT
VALUES('0113','pass','PCO') END-EXEC MOVE SQLCODE TO SQL-COD else DISPLAY" dml024.pco *** fail *** " EXECSQLINSERTINTO TESTREPORT
VALUES('0113','fail','PCO') END-EXEC ADD 1 TO errcnt MOVE SQLCODE TO SQL-COD END-IF
EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD
******************** END TEST0113 *******************
**** TESTER MAY CHOOSE TO INSERT CODE FOR errcnt > 0 STOPRUN.
* **** Procedures for PERFORM statements
P50. EXECSQL FETCH S1 INTO
:EMPNO1,:SCITY END-EXEC MOVE SQLCODE TO SQL-COD if (SQLCODE = 0) then COMPUTE i = i + 1 DISPLAY EMPNO1 " ", SCITY END-IF ADD 1 TO ii
.
P49. EXECSQL FETCH S2 INTO
:EMPNO1,:SCITY END-EXEC MOVE SQLCODE TO SQL-COD if (SQLCODE = 0) then COMPUTE i = i + 1 DISPLAY EMPNO1 " ", SCITY END-IF ADD 1 TO ii
.
P48. EXECSQL FETCH S3 INTO
:WEMP,:WPNUM END-EXEC MOVE SQLCODE TO SQL-COD if (SQLCODE = 0) then COMPUTE i = i + 1 DISPLAY WEMP " ", WPNUM END-IF ADD 1 TO ii
.
P47. EXECSQL FETCH S4 INTO
:WEMP,:WPNUM END-EXEC MOVE SQLCODE TO SQL-COD if (SQLCODE = 0) then COMPUTE i = i + 1 DISPLAY WEMP " ", WPNUM END-IF ADD 1 TO ii
.
P46. EXECSQL FETCH S5 INTO
:WEMP,:WPNUM END-EXEC MOVE SQLCODE TO SQL-COD if (SQLCODE = 0) then COMPUTE i = i + 1 DISPLAY WEMP " ", WPNUM END-IF ADD 1 TO ii
.
P45. EXECSQL FETCH S6 INTO
:WEMP,:WPNUM END-EXEC 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.18 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.