* Standard COBOL (file "DML087.SCO") calling SQL * procedures in file "DML087.MCO". * STANDARD COBOL (file "DML087.SCO")
**************************************************************** * * COMMENT SECTION * * DATE 1992/08/01 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. * * DML087.SCO * WRITTEN BY: DAVID W. FLATER * * THIS ROUTINE TESTS ENTRY LEVEL SQL. * * REFERENCES * ANSI SQL-1992 * ****************************************************************
MOVE"FLATER"TO uid CALL"AUTHID"USING uid MOVE"not logged in, not"TO uidx * EXEC SQL SELECT USER INTO :uidx FROM HU.ECCO; CALL"SUB1"USING SQLCODE uidx MOVE SQLCODE TO SQL-COD if (uid NOT = uidx) then DISPLAY"ERROR: User ", uid " expected. User ", uidx "
- " connected" STOPRUN END-IF MOVE 0 TO errcnt MOVE 1 TO flag
DISPLAY "SQL Test Suite, V6.0, Standard COBOL, dml087.sco" DISPLAY "59-byte ID" DISPLAY"TEd Version #" *date_time print ACCEPT TO-DAY FROMDATE ACCEPT THE-TIME FROMTIME DISPLAY"Date run YYMMDD: " TO-DAY " at hhmmssff: " THE-TIME
******************** BEGIN TEST0518 ******************* MOVE 1 TO flag
DISPLAY" CREATE VIEW DV1 AS" DISPLAY" SELECT DISTINCT HOURS FROM HU.WORKS" DISPLAY" " COMPUTE tmpcnt = -1 DISPLAY"SELECT COUNT(*) FROM DV1;" * EXEC SQL SELECT COUNT(*) INTO :tmpcnt FROM DV1; CALL"SUB2"USING SQLCODE tmpcnt MOVE SQLCODE TO SQL-COD DISPLAY"SQLCODE should be 0; its value is ", SQL-COD DISPLAY"COUNT should be 4; its value is ", tmpcnt
if (SQLCODE NOT = 0 OR tmpcnt NOT = 4) then MOVE 0 TO flag END-IF
DISPLAY" " COMPUTE tmpcnt = -1 MOVE 0 TO cnt1 DISPLAY" DECLARE POIU CURSOR FOR" DISPLAY" SELECT HOURS FROM DV1" DISPLAY" ORDER BY HOURS DESC;" DISPLAY" OPEN POIU;" * EXEC SQL DECLARE POIU CURSOR FOR * SELECT HOURS FROM DV1 * ORDER BY HOURS DESC END-EXEC * EXEC SQL OPEN POIU; CALL"SUB3"USING SQLCODE MOVE SQLCODE TO SQL-COD MOVE 1 TO cnt3 PERFORM P50 UNTIL cnt3 > 5 DISPLAY" " DISPLAY"SQLCODE should be 100; its value is ", SQL-COD DISPLAY"COUNT should be 4; its value is ", tmpcnt
if (tmpcnt NOT = 4 OR SQLCODE NOT = 100) then MOVE 0 TO flag END-IF
DISPLAY" CREATE VIEW VS2 AS" DISPLAY" SELECT A.C1 FROM BASE_VS1 A WHERE EXISTS" DISPLAY" (SELECT B.C2 FROM BASE_VS1 B WHERE B.C2 =
- " A.C1)" DISPLAY" " DISPLAY"SELECT COUNT(*) FROM VS2 WHERE C1 = 0;" * EXEC SQL SELECT COUNT(*) INTO :tmpcnt * FROM VS2 WHERE C1 = 0; CALL"SUB8"USING SQLCODE tmpcnt MOVE SQLCODE TO SQL-COD DISPLAY"SQLCODE should be 0; its value is ", SQL-COD DISPLAY"COUNT should be 2; its value is ", tmpcnt
if (SQLCODE NOT = 0 OR tmpcnt NOT = 2) then MOVE 0 TO flag END-IF
DISPLAY" " DISPLAY"SELECT COUNT(*) FROM VS2 WHERE C1 = 1;" * EXEC SQL SELECT COUNT(*) INTO :tmpcnt * FROM VS2 WHERE C1 = 1; CALL"SUB9"USING SQLCODE tmpcnt MOVE SQLCODE TO SQL-COD DISPLAY"SQLCODE should be 0; its value is ", SQL-COD DISPLAY"COUNT should be 2; its value is ", tmpcnt
if (SQLCODE NOT = 0 OR tmpcnt NOT = 2) then MOVE 0 TO flag END-IF
DISPLAY" " DISPLAY"CREATE VIEW VS3 AS" DISPLAY" SELECT A.C2 FROM BASE_VS1 A WHERE A.C2 IN" DISPLAY" (SELECT B.C1 FROM BASE_VS1 B WHERE B.C1 <
- " A.C2)" DISPLAY" " DISPLAY"SELECT COUNT(*) FROM VS3;" * EXEC SQL SELECT COUNT(*) INTO :tmpcnt * FROM VS3; CALL"SUB10"USING SQLCODE tmpcnt MOVE SQLCODE TO SQL-COD DISPLAY"SQLCODE should be 0; its value is ", SQL-COD DISPLAY"COUNT should be 0; its value is ", tmpcnt
if (SQLCODE NOT = 0 OR tmpcnt NOT = 0) then MOVE 0 TO flag END-IF
DISPLAY" " DISPLAY"CREATE VIEW VS4 AS" DISPLAY" SELECT A.C1 FROM BASE_VS1 A WHERE A.C1 < ALL" DISPLAY" (SELECT B.C2 FROM BASE_VS1 B)" DISPLAY" " DISPLAY"SELECT COUNT(*) FROM VS4;" * EXEC SQL SELECT COUNT(*) INTO :tmpcnt * FROM VS4; CALL"SUB11"USING SQLCODE tmpcnt MOVE SQLCODE TO SQL-COD DISPLAY"SQLCODE should be 0; its value is ", SQL-COD DISPLAY"COUNT should be 0; its value is ", tmpcnt
if (SQLCODE NOT = 0 OR tmpcnt NOT = 0) then MOVE 0 TO flag END-IF
DISPLAY" " DISPLAY"CREATE VIEW VS5 AS" DISPLAY" SELECT A.C1 FROM BASE_VS1 A WHERE A.C1 < SOME" DISPLAY" (SELECT B.C2 FROM BASE_VS1 B)" DISPLAY" " DISPLAY"SELECT COUNT(*) FROM VS5;" * EXEC SQL SELECT COUNT(*) INTO :tmpcnt * FROM VS5; CALL"SUB12"USING SQLCODE tmpcnt MOVE SQLCODE TO SQL-COD DISPLAY"SQLCODE should be 0; its value is ", SQL-COD DISPLAY"COUNT should be 2; its value is ", tmpcnt
if (SQLCODE NOT = 0 OR tmpcnt NOT = 2) then MOVE 0 TO flag END-IF
DISPLAY" " DISPLAY"CREATE VIEW VS6 AS" DISPLAY" SELECT A.C1 FROM BASE_VS1 A WHERE A.C1 < ANY" DISPLAY" (SELECT B.C2 FROM BASE_VS1 B)" DISPLAY" " DISPLAY"SELECT COUNT(*) FROM VS6;" * EXEC SQL SELECT COUNT(*) INTO :tmpcnt * FROM VS6; CALL"SUB13"USING SQLCODE tmpcnt MOVE SQLCODE TO SQL-COD DISPLAY"SQLCODE should be 0; its value is ", SQL-COD DISPLAY"COUNT should be 2; its value is ", tmpcnt
if (SQLCODE NOT = 0 OR tmpcnt NOT = 2) then MOVE 0 TO flag END-IF
DISPLAY"SELECT COUNT(*) INTO :cnt1 FROM USIG WHERE C1 =
- " 0;" DISPLAY"SELECT COUNT(*) INTO :cnt2 FROM USIG WHERE C1 =
- " 2;" DISPLAY"SELECT COUNT(*) INTO :cnt3 FROM USIG WHERE C_1 =
- " 0;" DISPLAY"SELECT COUNT(*) INTO :cnt4 FROM USIG WHERE C_1 =
- " 2;"
* EXEC SQL SELECT COUNT(*) INTO :cnt1 FROM USIG WHERE C1 = 0 * ; CALL"SUB18"USING SQLCODE cnt1 MOVE SQLCODE TO SQL-COD * EXEC SQL SELECT COUNT(*) INTO :cnt2 FROM USIG WHERE C1 = 2 * ; CALL"SUB19"USING SQLCODE cnt2 MOVE SQLCODE TO SQL-COD * EXEC SQL SELECT COUNT(*) INTO :cnt3 FROM USIG WHERE C_1 = 0 * ; CALL"SUB20"USING SQLCODE cnt3 MOVE SQLCODE TO SQL-COD * EXEC SQL SELECT COUNT(*) INTO :cnt4 FROM USIG WHERE C_1 = 2 * ; CALL"SUB21"USING SQLCODE cnt4 MOVE SQLCODE TO SQL-COD
DISPLAY"cnt1 cnt2 cnt3 cnt4 should be 1 0 0 1;" DISPLAY" they are ", cnt1 " ", cnt2 " ", cnt3 " ", cnt4
if (cnt1 NOT = 1 OR cnt2 NOT = 0 OR cnt3 NOT = 0 OR cnt4 NOT = 1) then MOVE 0 TO flag END-IF
DISPLAY"SELECT COUNT(*) INTO :cnt1 FROM USIG WHERE C1 =
- " 4;" DISPLAY"SELECT COUNT(*) INTO :cnt2 FROM U_SIG WHERE C1 =
- " 0;" DISPLAY"SELECT COUNT(*) INTO :cnt3 FROM U_SIG WHERE C1 =
- " 4;"
* EXEC SQL SELECT COUNT(*) INTO :cnt1 FROM USIG WHERE C1 = 4 * ; CALL"SUB22"USING SQLCODE cnt1 MOVE SQLCODE TO SQL-COD * EXEC SQL SELECT COUNT(*) INTO :cnt2 FROM U_SIG WHERE C1 = 0 * ; CALL"SUB23"USING SQLCODE cnt2 MOVE SQLCODE TO SQL-COD * EXEC SQL SELECT COUNT(*) INTO :cnt3 FROM U_SIG WHERE C1 = 4 * ; CALL"SUB24"USING SQLCODE cnt3 MOVE SQLCODE TO SQL-COD
DISPLAY"cnt1 cnt2 cnt3 should be 0 0 1;" DISPLAY" they are ", cnt1 " ", cnt2 " ", cnt3
if (cnt1 NOT = 0 OR cnt2 NOT = 0 OR cnt3 NOT = 1) then MOVE 0 TO flag END-IF
DISPLAY"SELECT COUNT(*) INTO :cnt1 FROM HU.STAFF U_CN" DISPLAY" WHERE U_CN.GRADE IN (SELECT UCN.GRADE FROM
- " HU.STAFF UCN" DISPLAY" WHERE UCN.GRADE > 10);" DISPLAY"DECLARE UCRSR CURSOR FOR" DISPLAY" SELECT COUNT(*) FROM HU.STAFF WHERE GRADE > 10;" DISPLAY"DECLARE U_CRSR CURSOR FOR" DISPLAY" SELECT COUNT(*) FROM HU.STAFF WHERE GRADE < 10;" DISPLAY"OPEN UCRSR;" DISPLAY"FETCH UCRSR INTO :cnt2;" DISPLAY"CLOSE UCRSR;" DISPLAY"OPEN U_CRSR;" DISPLAY"FETCH U_CRSR INTO :cnt3;" DISPLAY"CLOSE U_CRSR;"
* EXEC SQL SELECT COUNT(*) INTO :cnt1 FROM HU.STAFF U_CN * WHERE U_CN.GRADE IN (SELECT UCN.GRADE FROM HU.STAFF UCN * WHERE UCN.GRADE > 10); CALL"SUB25"USING SQLCODE cnt1 MOVE SQLCODE TO SQL-COD
* EXEC SQL DECLARE UCRSR CURSOR FOR * SELECT COUNT(*) FROM HU.STAFF WHERE GRADE > 10 END-EXEC * EXEC SQL DECLARE U_CRSR CURSOR FOR * SELECT COUNT(*) FROM HU.STAFF WHERE GRADE < 10 END-EXEC
* EXEC SQL OPEN UCRSR; CALL"SUB26"USING SQLCODE MOVE SQLCODE TO SQL-COD * EXEC SQL FETCH UCRSR INTO :cnt2; CALL"SUB27"USING SQLCODE cnt2 MOVE SQLCODE TO SQL-COD * EXEC SQL CLOSE UCRSR; CALL"SUB28"USING SQLCODE MOVE SQLCODE TO SQL-COD * EXEC SQL OPEN U_CRSR; CALL"SUB29"USING SQLCODE MOVE SQLCODE TO SQL-COD * EXEC SQL FETCH U_CRSR INTO :cnt3; CALL"SUB30"USING SQLCODE cnt3 MOVE SQLCODE TO SQL-COD * EXEC SQL CLOSE U_CRSR; CALL"SUB31"USING SQLCODE MOVE SQLCODE TO SQL-COD
DISPLAY"cnt1 cnt2 cnt3 should be 4 4 0;" DISPLAY" they are ", cnt1 " ", cnt2 " ", cnt3
if (cnt1 NOT = 4 OR cnt2 NOT = 4 OR cnt3 NOT = 0) then MOVE 0 TO flag END-IF
* EXEC SQL COMMIT WORK; CALL"SUB35"USING SQLCODE MOVE SQLCODE TO SQL-COD ******************** END TEST0520 ********************
**** TESTER MAY CHOOSE TO INSERT CODE FOR errcnt > 0 STOPRUN.
* **** Procedures for PERFORM statements
P50. * EXEC SQL FETCH POIU INTO :cnt1; CALL"SUB36"USING SQLCODE cnt1 MOVE SQLCODE TO SQL-COD DISPLAY" FETCH POIU INTO :cnt1;" DISPLAY"cnt1 = ", cnt1 "; and SQLCODE = ", SQL-COD if (SQLCODE = 0) then MOVE cnt3 TO tmpcnt END-IF if (cnt3 = 4 AND cnt1 NOT = 12) then MOVE 0 TO flag END-IF ADD 1 TO cnt3
.
¤ Diese beiden folgenden Angebotsgruppen bietet das Unternehmen0.15Angebot
Wie Sie bei der Firma Beratungs- und Dienstleistungen beauftragen können
¤
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.