* 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. * * DML020.SCO * WRITTEN BY: HU YANPING * TRANSLATED AUTOMATICALLY FROM EMBEDDED COBOL BY CHRIS SCHANZLE * * THIS ROUTINE TESTS THE JOIN QUERY FUNCTIONS IN SQL. * * REFERENCES * AMERICAN NATIONAL STANDARD database language - SQL * X3.135-1989 * * SECTION 5.20 <from clause> * ****************************************************************
* EXEC SQL DECLARE SNP1 CURSOR FOR * SELECT EMPNUM,EMPNAME,GRADE,STAFF.CITY, PNAME, PROJ.CITY * FROM STAFF, PROJ * WHERE STAFF.CITY = PROJ.CITY END-EXEC * EXEC SQL OPEN SNP1; CALL"SUB1"USING SQLCODE MOVE SQLCODE TO SQL-COD MOVE 0 TO i if (SQLCODE = 0) then DISPLAY"EMPNUM GRADE STAFF.CITY PROJ.CITY " END-IF MOVE 1 TO ii PERFORM P50 UNTIL ii > 19 * EXEC SQL CLOSE SNP1; CALL"SUB2"USING SQLCODE MOVE SQLCODE TO SQL-COD
DISPLAY" i should be 10, i = ", i
if (i = 10) then DISPLAY" *** pass *** " * EXEC SQL INSERT INTO TESTREPORT * VALUES('0080','pass','MCO') END-EXEC CALL"SUB3"USING SQLCODE MOVE SQLCODE TO SQL-COD else DISPLAY" dml020.sco *** fail *** " * EXEC SQL INSERT INTO TESTREPORT * VALUES('0080','fail','MCO') END-EXEC ADD 1 TO errcnt CALL"SUB4"USING SQLCODE MOVE SQLCODE TO SQL-COD END-IF
* EXEC SQL DECLARE SNP3 CURSOR FOR * SELECT EMPNUM,EMPNAME,GRADE,STAFF.CITY,PNUM,PNAME, * PTYPE,BUDGET,PROJ.CITY * FROM STAFF, PROJ * WHERE STAFF.CITY = PROJ.CITY * AND GRADE <> 12 END-EXEC * EXEC SQL OPEN SNP3; CALL"SUB6"USING SQLCODE MOVE SQLCODE TO SQL-COD MOVE 0 TO i MOVE 1 TO ii PERFORM P49 UNTIL ii > 19 * EXEC SQL CLOSE SNP3; CALL"SUB7"USING SQLCODE MOVE SQLCODE TO SQL-COD
DISPLAY" i should be 4, i = ", i
if (i = 4) then DISPLAY" *** pass *** " * EXEC SQL INSERT INTO TESTREPORT * VALUES('0081','pass','MCO') END-EXEC CALL"SUB8"USING SQLCODE MOVE SQLCODE TO SQL-COD else DISPLAY" dml020.sco *** fail *** " * EXEC SQL INSERT INTO TESTREPORT * VALUES('0081','fail','MCO') END-EXEC ADD 1 TO errcnt CALL"SUB9"USING SQLCODE MOVE SQLCODE TO SQL-COD END-IF
* EXEC SQL DECLARE SNP5 CURSOR FOR * SELECT DISTINCT STAFF.CITY, PROJ.CITY * FROM STAFF, WORKS, PROJ * WHERE STAFF.EMPNUM = WORKS.EMPNUM * AND WORKS.PNUM = PROJ.PNUM END-EXEC * EXEC SQL OPEN SNP5; CALL"SUB11"USING SQLCODE MOVE SQLCODE TO SQL-COD MOVE 0 TO i if (SQLCODE = 0) then DISPLAY"STAFF.CITY PROJ.CITY " END-IF MOVE 1 TO ii PERFORM P48 UNTIL ii > 19 * EXEC SQL CLOSE SNP5; CALL"SUB12"USING SQLCODE MOVE SQLCODE TO SQL-COD
DISPLAY" i should be 5, i = ", i
if (i = 5) then DISPLAY" *** pass *** " * EXEC SQL INSERT INTO TESTREPORT * VALUES('0082','pass','MCO') END-EXEC CALL"SUB13"USING SQLCODE MOVE SQLCODE TO SQL-COD else DISPLAY" dml020.sco *** fail *** " * EXEC SQL INSERT INTO TESTREPORT * VALUES('0082','fail','MCO') END-EXEC ADD 1 TO errcnt CALL"SUB14"USING SQLCODE MOVE SQLCODE TO SQL-COD END-IF
* EXEC SQL DECLARE SNP6 CURSOR FOR * SELECT FIRST1.EMPNUM, SECOND2.EMPNUM * FROM STAFF FIRST1, STAFF SECOND2 * WHERE FIRST1.CITY = SECOND2.CITY * AND FIRST1.EMPNUM < SECOND2.EMPNUM END-EXEC * EXEC SQL OPEN SNP6; CALL"SUB16"USING SQLCODE MOVE SQLCODE TO SQL-COD MOVE 0 TO i if (SQLCODE = 0) then DISPLAY"FIRST1.EMPNUM SECOND2.EMPNUM " END-IF MOVE 1 TO ii PERFORM P47 UNTIL ii > 19 * EXEC SQL CLOSE SNP6; CALL"SUB17"USING SQLCODE MOVE SQLCODE TO SQL-COD
DISPLAY" i should be 2, i = ", i
if (i = 2) then DISPLAY" *** pass *** " * EXEC SQL INSERT INTO TESTREPORT * VALUES('0083','pass','MCO') END-EXEC CALL"SUB18"USING SQLCODE MOVE SQLCODE TO SQL-COD else DISPLAY" dml020.sco *** fail *** " * EXEC SQL INSERT INTO TESTREPORT * VALUES('0083','fail','MCO') END-EXEC ADD 1 TO errcnt CALL"SUB19"USING SQLCODE MOVE SQLCODE TO SQL-COD END-IF
******************** END TEST0083 *******************
**** TESTER MAY CHOOSE TO INSERT CODE FOR errcnt > 0 STOPRUN.
* **** Procedures for PERFORM statements
P50. * EXEC SQL FETCH SNP1 INTO * :EMPNO1,:EMPNA1,:GRADE1,:SCITY,:PNAME1,:PCITY END-EXEC CALL"SUB21"USING SQLCODE EMPNO1 EMPNA1 GRADE1 SCITY
PNAME1 PCITY MOVE SQLCODE TO SQL-COD if (SQLCODE = 0) then COMPUTE i = i + 1 DISPLAY EMPNO1 " ", GRADE1 " ", SCITY " ", PCITY END-IF ADD 1 TO ii
.
P49. * EXEC SQL FETCH SNP3 INTO * :EMPNO1,:EMPNA1,:GRADE1,:SCITY,:PPNUM, * :PNAME1,:PTYPE,:BUGET1,:PCITY END-EXEC CALL"SUB22"USING SQLCODE EMPNO1 EMPNA1 GRADE1 SCITY PPNUM
PNAME1 PTYPE BUGET1 PCITY MOVE SQLCODE TO SQL-COD if (SQLCODE = 0) then COMPUTE i = i + 1 DISPLAY"STAFF.CITY=", SCITY " PROJ.CITY=", PCITY "
- " GRADE1=", GRADE1 END-IF ADD 1 TO ii
.
P48. * EXEC SQL FETCH SNP5 INTO * :SCITY,:PCITY END-EXEC CALL"SUB23"USING SQLCODE SCITY PCITY MOVE SQLCODE TO SQL-COD if (SQLCODE = 0) then COMPUTE i = i + 1 DISPLAY SCITY " ", PCITY END-IF ADD 1 TO ii
.
P47. * EXEC SQL FETCH SNP6 INTO * :EMPNO1,:PPNUM END-EXEC CALL"SUB24"USING SQLCODE EMPNO1 PPNUM MOVE SQLCODE TO SQL-COD if (SQLCODE = 0) then COMPUTE i = i + 1 DISPLAY EMPNO1 " ", PPNUM END-IF ADD 1 TO ii
.
¤ Dauer der Verarbeitung: 0.16 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.