* Embedded SQL COBOL ("CDR025.PCO") translated from * Embedded C on Fri Jun 14 10:56:28 1991.
* EMBEDDED COBOL (file "CDR025.PCO")
**************************************************************** * * COMMENT SECTION * * DATE 1990/09/14 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. * * CDR025.PCO * WRITTEN BY: SUN DAJUN * * THIS ROUTINE TESTS THE SCHEMA DEFINITION LANGUAGE FOR SQL. * * REFERENCES * AMERICAN NATIONAL STANDARD database language - SQL * X3.135-1989 * * SECTION 6.9 View Definition * ****************************************************************
MOVE"SUN"TO uid CALL"AUTHID"USING uid MOVE"not logged in, not"TO uidx EXECSQLSELECT
USER INTO :uidx FROM SUN.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, cdr025.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 EXECSQLDELETEFROM C_TRANSACTION END-EXEC MOVE SQLCODE TO SQL-COD
EXECSQLDELETEFROM COMMODITY END-EXEC MOVE SQLCODE TO SQL-COD
EXECSQLDELETEFROM CURRENCY_TABLE END-EXEC MOVE SQLCODE TO SQL-COD
EXECSQLDELETEFROM MEASURE_TABLE END-EXEC MOVE SQLCODE TO SQL-COD
EXECSQLINSERTINTO COMMODITY
VALUES (17, 'Wheat') END-EXEC MOVE SQLCODE TO SQL-COD
EXECSQLINSERTINTO COMMODITY
VALUES (14, 'Saffron') END-EXEC MOVE SQLCODE TO SQL-COD
EXECSQLINSERTINTO COMMODITY
VALUES (23, 'Alfalfa') END-EXEC MOVE SQLCODE TO SQL-COD
EXECSQLINSERTINTO CURRENCY_TABLE
VALUES ('DOLLAR', 1.00) END-EXEC MOVE SQLCODE TO SQL-COD
EXECSQLINSERTINTO CURRENCY_TABLE
VALUES ('POUND', 1.91) END-EXEC MOVE SQLCODE TO SQL-COD
EXECSQLINSERTINTO CURRENCY_TABLE
VALUES ('DM', .45) END-EXEC MOVE SQLCODE TO SQL-COD
EXECSQLINSERTINTO MEASURE_TABLE
VALUES ('POUND', 1.00) END-EXEC MOVE SQLCODE TO SQL-COD
EXECSQLINSERTINTO MEASURE_TABLE
VALUES ('OUNCE', .06) END-EXEC MOVE SQLCODE TO SQL-COD
EXECSQLINSERTINTO MEASURE_TABLE
VALUES ('KILO', 2.20) END-EXEC MOVE SQLCODE TO SQL-COD
EXECSQLINSERTINTO MEASURE_TABLE
VALUES ('TON', 2000.00) END-EXEC MOVE SQLCODE TO SQL-COD
EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD
******************** BEGIN TEST0402 ******************* DISPLAY" TEST0402 " DISPLAY" Computed GROUP BY view over referencing tables" DISPLAY" Reference X3.135-89 section 6.9 " DISPLAY" - - - - - - - - - - - - - - - - - - -" DISPLAY" ***" DISPLAY" CREATE VIEW DOLLARS_PER_POUND" DISPLAY" (COMMODITY, UNIT_PRICE, FROM_DATE,
- " TO_DATE)" DISPLAY" AS SELECT COMMODITY.C_NAME, " DISPLAY" SUM(TOT_PRICE * DOLLAR_EQUIV) / SUM(UNITS
- " * POUND_EQUIV)," DISPLAY" MIN(T_DATE), MAX(T_DATE)" DISPLAY" FROM C_TRANSACTION, COMMODITY,
- " CURRENCY_TABLE, MEASURE_TABLE" DISPLAY" WHERE C_TRANSACTION.COMMOD_NO =
- " COMMODITY.C_NUM" DISPLAY" AND C_TRANSACTION.CURRENCY =
- " CURRENCY_TABLE.CURRENCY" DISPLAY" AND C_TRANSACTION.MEASURE =
- " MEASURE_TABLE.MEASURE" DISPLAY" GROUP BY COMMODITY.C_NAME" DISPLAY" HAVING SUM(TOT_PRICE * DOLLAR_EQUIV) >
- " 10000;" DISPLAY" " MOVE 0 TO count1 EXECSQLSELECTCOUNT(*) INTO :count1 FROM C_TRANSACTION WHERE COMMOD_NO = 17 END-EXEC MOVE SQLCODE TO SQL-COD
MOVE 1 TO flag
MOVE 0.0 TO PRICE1 MOVE 0 TO FROMDT MOVE 0 TO TODATE EXECSQL DECLARE CCC CURSOR FOR SELECT UNIT_PRICE, FROM_DATE, TO_DATE, COMMODITY FROM DOLLARS_PER_POUND ORDERBY COMMODITY DESC END-EXEC EXECSQLOPEN CCC END-EXEC MOVE SQLCODE TO SQL-COD EXECSQL FETCH CCC INTO :PRICE1, :FROMDT, :TODATE, :COMMOD END-EXEC MOVE SQLCODE TO SQL-COD EXECSQLCLOSE CCC END-EXEC MOVE SQLCODE TO SQL-COD if (FROMDT NOT = 871012 OR PRICE1 < 0.06 OR PRICE1
> 0.07) then MOVE 0 TO flag END-IF if (TODATE NOT = 871212) then MOVE 0 TO flag END-IF
DISPLAY" The correct answer is approximately:" DISPLAY" count1 = 2 PRICE1 = .067" DISPLAY" FROMDT = 871012, TODATE = 871212"
DISPLAY" " EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD ******************** END TEST0402 ********************
******************** BEGIN TEST0403 ******************* DISPLAY" OPTIONAL TEST0403 " DISPLAY" View on computed GROUP BY view with join" DISPLAY" Reference X3.135-89 section 6.9 " DISPLAY" - - - - - - - - - - - - - - - - - - -" DISPLAY" ***" DISPLAY" CREATE VIEW COST_PER_UNIT" DISPLAY" (COMMODITY, UNIT_PRICE, CURRENCY, MEASURE" DISPLAY" AS SELECT COMMODITY, UNIT_PRICE *
- " POUND_EQUIV / DOLLAR_EQUIV" DISPLAY" FROM DOLLARS_PER_POUND,
- " CURRENCY_TABLE," DISPLAY" MEASURE_TABLE;" DISPLAY" " MOVE 0 TO count1 EXECSQLSELECTCOUNT(*) INTO :count1 FROM COST_PER_UNIT END-EXEC MOVE SQLCODE TO SQL-COD
EXECSQL DECLARE DDD CURSOR FOR SELECTCURRENCY, MEASURE, UNIT_PRICE, COMMODITY FROM COST_PER_UNIT END-EXEC EXECSQLOPEN DDD END-EXEC MOVE SQLCODE TO SQL-COD *Find the unit price for Alfalfa in DM per KILO MOVE 1 TO iii PERFORM P50 UNTIL iii > 24 DISPLAY" The correct answer is approximately:" DISPLAY" count1 = 24 PRICE1 = 2.444"
DISPLAY" " EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD ******************** END TEST0413 ********************
**** TESTER MAY CHOOSE TO INSERT CODE FOR errcnt > 0 STOPRUN.
* **** Procedures for PERFORM statements
P50. MOVE 1 TO flag EXECSQL FETCH DDD INTO :CURREN, :MEASUR, :PRICE2, :COMMOD END-EXEC MOVE SQLCODE TO SQL-COD if (CURREN NOT = "DM") then MOVE 0 TO flag END-IF if (MEASUR NOT = "KILO") then MOVE 0 TO flag END-IF if (COMMOD NOT = "Alfalfa") then MOVE 0 TO flag END-IF if (flag = 1) then MOVE PRICE2 TO PRICE1 END-IF ADD 1 TO iii
.
¤ 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.