* Standard COBOL (file "DML023.SCO") calling SQL * procedures in file "DML023.MCO"
**************************************************************** * * COMMENT SECTION * * DATE 1988/02/10 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. * * DML023.SCO * WRITTEN BY: HU YANPING * TRANSLATED AUTOMATICALLY FROM EMBEDDED COBOL BY CHRIS SCHANZLE * * THIS ROUTINE TESTS THE COMPARISON PREDICATE FOR SQL. * * REFERENCES * AMERICAN NATIONAL STANDARD database language - SQL * X3.135-1989 * * SECTION 5.11 <comparison predicate> * ****************************************************************
* EXEC SQL DECLARE S1 CURSOR FOR * SELECT PNUM * FROM PROJ * WHERE PROJ.CITY = * (SELECT STAFF.CITY * FROM STAFF * WHERE 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 " 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 = 3) then DISPLAY" *** pass *** " * EXEC SQL INSERT INTO TESTREPORT * VALUES('0103','pass','MCO') END-EXEC CALL"SUB3"USING SQLCODE MOVE SQLCODE TO SQL-COD else DISPLAY" dml023.sco *** fail *** " * EXEC SQL INSERT INTO TESTREPORT * VALUES('0103','fail','MCO') END-EXEC ADD 1 TO errcnt CALL"SUB4"USING SQLCODE MOVE SQLCODE TO SQL-COD END-IF
******************** END TEST0104 ******************* ******************** BEGIN TEST0105 *******************
DISPLAY" TEST0105" DISPLAY" Reference ANSI X3.135-1989 5.11
- " GR2" DISPLAY" - - - - - - - - - - - - - - - - - - -" DISPLAY"*** The results of subquery is empty. " DISPLAY"*** SELECT COUNT(*) " DISPLAY"*** FROM STAFF " DISPLAY"*** WHERE STAFF.CITY = " DISPLAY"*** (SELECT PROJ.CITY " DISPLAY"*** FROM PROJ " DISPLAY"*** WHERE PNUM > 'P7') "
MOVE -1 TO ii MOVE -1 TO i * EXEC SQL SELECT COUNT(*) * INTO :ii * FROM STAFF * WHERE STAFF.CITY = * (SELECT PROJ.CITY * FROM PROJ * WHERE PNUM > 'P7') END-EXEC CALL"SUB11"USING SQLCODE ii MOVE SQLCODE TO SQL-COD MOVE ii TO i * EXEC SQL SELECT COUNT(*) * INTO :ii * FROM STAFF * WHERE NOT (STAFF.CITY = * (SELECT PROJ.CITY * FROM PROJ * WHERE PNUM > 'P7')) END-EXEC CALL"SUB12"USING SQLCODE ii MOVE SQLCODE TO SQL-COD
DISPLAY" SQLCODE = ", SQL-COD ", i = ", i ", ii = ", ii if (i = 0 AND ii = 0 AND SQLCODE NOT < 0) then DISPLAY" *** pass *** " * EXEC SQL INSERT INTO TESTREPORT * VALUES('0105','pass','MCO') END-EXEC CALL"SUB13"USING SQLCODE MOVE SQLCODE TO SQL-COD else DISPLAY" dml023.sco *** fail *** " * EXEC SQL INSERT INTO TESTREPORT * VALUES('0105','fail','MCO') END-EXEC ADD 1 TO errcnt CALL"SUB14"USING SQLCODE MOVE SQLCODE TO SQL-COD END-IF
******************** END TEST0106 ******************* ******************** BEGIN TEST0107 *******************
DISPLAY" TEST0107" DISPLAY" Reference ANSI X3.135-1989 5.11
- " GR5" DISPLAY" - - - - - - - - - - - - - - - - - - -" DISPLAY"*** SELECT COUNT(*) " DISPLAY"*** FROM WORKS " DISPLAY"*** WHERE EMPNUM = 'E1' " DISPLAY" same as " DISPLAY"*** SELECT COUNT(*) " DISPLAY"*** FROM WORKS " DISPLAY"*** WHERE EMPNUM = 'E1' AND EMPNUM = 'E1 ' "
* EXEC SQL SELECT COUNT(*) * INTO :ii * FROM WORKS * WHERE EMPNUM = 'E1' END-EXEC CALL"SUB21"USING SQLCODE ii MOVE SQLCODE TO SQL-COD MOVE ii TO i
* EXEC SQL SELECT COUNT(*) * INTO :ii * FROM WORKS * WHERE EMPNUM = 'E1' AND EMPNUM = 'E1 ' END-EXEC CALL"SUB22"USING SQLCODE ii MOVE SQLCODE TO SQL-COD
DISPLAY" SQLCODE = ", SQL-COD ", i = ", i ", ii = ", ii if (SQLCODE NOT < 0 AND i = 6 AND ii = 6) then DISPLAY" *** pass *** " * EXEC SQL INSERT INTO TESTREPORT * VALUES('0107','pass','MCO') END-EXEC CALL"SUB23"USING SQLCODE MOVE SQLCODE TO SQL-COD else DISPLAY" dml023.sco *** fail *** " * EXEC SQL INSERT INTO TESTREPORT * VALUES('0107','fail','MCO') END-EXEC ADD 1 TO errcnt CALL"SUB24"USING SQLCODE MOVE SQLCODE TO SQL-COD END-IF
* EXEC SQL UPDATE STAFF * SET GRADE = NULL * WHERE EMPNUM='E1' OR EMPNUM='E3' OR EMPNUM='E5' END-EXEC CALL"SUB26"USING SQLCODE MOVE SQLCODE TO SQL-COD
* EXEC SQL DECLARE XX CURSOR * FOR SELECT EMPNUM,GRADE * FROM STAFF * ORDER BY GRADE,EMPNUM END-EXEC * EXEC SQL OPEN XX; CALL"SUB27"USING SQLCODE MOVE SQLCODE TO SQL-COD
* EXEC SQL UPDATE STAFF * SET GRADE = NULL * WHERE EMPNUM='E1' OR EMPNUM='E3' OR EMPNUM='E5' END-EXEC CALL"SUB32"USING SQLCODE MOVE SQLCODE TO SQL-COD
* EXEC SQL DECLARE XXX CURSOR * FOR SELECT DISTINCT GRADE * FROM STAFF * ORDER BY GRADE END-EXEC * EXEC SQL OPEN XXX; CALL"SUB33"USING SQLCODE MOVE SQLCODE TO SQL-COD
******************** END TEST0181 *******************
**** TESTER MAY CHOOSE TO INSERT CODE FOR errcnt > 0 STOPRUN.
* **** Procedures for PERFORM statements
P50. * EXEC SQL FETCH S1 INTO * :EMPNO2 END-EXEC CALL"SUB38"USING SQLCODE EMPNO2 MOVE SQLCODE TO SQL-COD if (SQLCODE = 0) then COMPUTE i = i + 1 DISPLAY EMPNO2 END-IF ADD 1 TO ii
.
P49. * EXEC SQL FETCH S4 INTO * :PNO1 END-EXEC CALL"SUB39"USING SQLCODE PNO1 MOVE SQLCODE TO SQL-COD if (SQLCODE = 0) then COMPUTE i = i + 1 DISPLAY PNO1 END-IF ADD 1 TO ii
.
P48. * EXEC SQL FETCH XX INTO :EMPNO2,:GRADE1:indic1; CALL"SUB40"USING SQLCODE EMPNO2 GRADE1 indic1 MOVE SQLCODE TO SQL-COD MOVE indic1 TO DISP1 if (indic1 = -1) then DISPLAY" indic1 = ", DISP1 " " MOVE -1 TO GRADE1 END-IF if (SQLCODE = 0) then MOVE ii TO i DISPLAY" empnum = ", EMPNO2 "; grade = ", GRADE1 " " END-IF ADD 1 TO ii
.
P47. * EXEC SQL FETCH XXX INTO :GRADE1:indic1; CALL"SUB41"USING SQLCODE GRADE1 indic1 MOVE SQLCODE TO SQL-COD MOVE indic1 TO DISP1 if (indic1 = -1) then DISPLAY" indic1 = ", DISP1 " " MOVE -1 TO GRADE1 END-IF if (SQLCODE = 0) then MOVE ii TO i DISPLAY" GRADE1 = ", GRADE1 " " END-IF ADD 1 TO 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.0.16Bemerkung:
(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.