* Embedded SQL COBOL ("DML077.PCO") translated from * Embedded C on Fri Aug 9 08:24:50 1991.
* EMBEDDED COBOL (file "DML077.PCO")
**************************************************************** * * COMMENT SECTION * * DATE 1991/07/30 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. * * DML077.PCO * WRITTEN BY: YOLANDA HERD * * * REFERENCES * AMERICAN NATIONAL STANDARD database language * X3.135-1989 * * ****************************************************************
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, dml077.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
EXECSQLINSERTINTO TEMP_SS VALUES('E7',NULL,'Frankfurt') END-EXEC MOVE SQLCODE TO SQL-COD DISPLAY"SQLCODE after NULL literal INSERT = ", SQL-COD
MOVE 15 TO GRDE COMPUTE indic1 = -1
EXECSQLINSERTINTO TEMP_SS
VALUES('E8',:GRDE:indic1,'Atlanta') END-EXEC MOVE SQLCODE TO SQL-COD DISPLAY"SQLCODE after NULL with indic INSERT = ", SQL-COD
EXECSQLINSERTINTO TEMP_SS(EMPNUM) VALUES('E9') END-EXEC MOVE SQLCODE TO SQL-COD DISPLAY"SQLCODE after NULL INSERT by excluding column = ",
SQL-COD
EXECSQL UPDATE WORKS SET HOURS = NULL
WHERE PNUM = 'P2'END-EXEC MOVE SQLCODE TO SQL-COD DISPLAY"SQLCODE after UPDATE WORKS 'P2' = ", SQL-COD
EXECSQLINSERTINTO TEMP_SS SELECT PNUM,HOURS,'Nowhere' FROM WORKS
WHERE EMPNUM = 'E1'END-EXEC MOVE SQLCODE TO SQL-COD DISPLAY"SQLCODE after INSERT SELECT 'E1' = ", SQL-COD
EXECSQL UPDATE TEMP_SS SET GRADE = NULL
WHERE EMPNUM = 'E3'END-EXEC MOVE SQLCODE TO SQL-COD DISPLAY"SQLCODE after UPDATE TEMP_SS 'E3' = ", SQL-COD
EXECSQL UPDATE TEMP_SS SET GRADE = :GRDE:indic1
WHERE EMPNUM = 'E5'END-EXEC MOVE SQLCODE TO SQL-COD DISPLAY"SQLCODE after UPDATE TEMP_SS with indic = ",
SQL-COD
EXECSQL DECLARE Y CURSOR FOR SELECT EMPNUM FROM STAFF
WHERE EMPNUM > 'E1'END-EXEC
EXECSQL DECLARE X CURSOR FOR SELECT EMPNUM FROM WORKS
WHERE EMPNUM > :ENUM END-EXEC
EXECSQLOPEN X END-EXEC MOVE SQLCODE TO SQL-COD
MOVE 1 TO i PERFORM P50 UNTIL i > 7
EXECSQLCLOSE X END-EXEC MOVE SQLCODE TO SQL-COD
MOVE"XX"TO EMPNO1
EXECSQLOPEN Y END-EXEC MOVE SQLCODE TO SQL-COD
MOVE 1 TO i PERFORM P49 UNTIL i > 5
COMPUTE count1 = -1 COMPUTE count2 = -1
EXECSQLSELECTCOUNT(*) INTO :count1 FROM WORKS
WHERE EMPNUM > 'E5'END-EXEC MOVE SQLCODE TO SQL-COD
EXECSQLSELECTCOUNT(*) INTO :count2 FROM STAFF
WHERE EMPNUM > 'E5'END-EXEC MOVE SQLCODE TO SQL-COD
DISPLAY" " DISPLAY" The correct answers are:" DISPLAY" count1 = 6 and count2 = 4" DISPLAY" " DISPLAY" Your answers are:" DISPLAY" count1 = ", count1 " and count2 = ", count2
EXECSQL ROLLBACK WORK END-EXEC MOVE SQLCODE TO SQL-COD
if (count1 = 6 AND count2 = 4) then EXECSQLINSERTINTO TESTREPORT
VALUES('0444','pass','PCO') END-EXEC MOVE SQLCODE TO SQL-COD DISPLAY" *** pass *** " else EXECSQLINSERTINTO TESTREPORT
VALUES('0444','fail','PCO') END-EXEC ADD 1 TO errcnt MOVE SQLCODE TO SQL-COD DISPLAY" dml077.pco *** fail *** " END-IF DISPLAY"================================================"
DISPLAY" " EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD
******************** END TEST0444 *******************
******************** BEGIN TEST0445 ******************* DISPLAY" TEST0445 " DISPLAY" Values not assigned to targets for SQLCODE=100 " DISPLAY" reference X3.135-1989" DISPLAY"
- " ----------------------------------------------------"
MOVE 0 TO flag1 MOVE"ZZZ"TO PNO1
EXECSQLSELECT PNUM INTO :PNO1 FROM WORKS
WHERE HOURS = 13 END-EXEC MOVE SQLCODE TO SQL-COD DISPLAY"PNO1 = ", PNO1 ", SQLCODE after SELECT PNUM = ",
SQL-COD DISPLAY" "
if (SQLCODE NOT = 100 OR PNO1 NOT = "ZZZ") then MOVE 1 TO flag1 END-IF
MOVE 99 TO HRS
EXECSQLSELECT HOURS INTO :HRS FROM WORKS
WHERE EMPNUM = 'E4'AND PNUM = 'P1'END-EXEC MOVE SQLCODE TO SQL-COD DISPLAY"HRS = ", HRS ", SQLCODE after SELECT HOURS = ",
SQL-COD DISPLAY" "
if (SQLCODE NOT = 100 OR HRS NOT = 99) then MOVE 1 TO flag1 END-IF
MOVE 999 TO NUM
EXECSQLSELECT COL1 INTO :NUM FROM VTABLE
WHERE COL2 > 500 END-EXEC MOVE SQLCODE TO SQL-COD DISPLAY"NUM = ", NUM ", SQLCODE after SELECT COL1 = ",
SQL-COD
if (SQLCODE NOT = 100 OR NUM NOT = 999) then MOVE 1 TO flag1 END-IF
EXECSQL DECLARE XX CURSOR FOR SELECT PNUM,HOURS FROM WORKS
WHERE EMPNUM > 'E1'END-EXEC
EXECSQL DECLARE YY CURSOR FOR SELECT COL2, COL3 FROM VTABLE END-EXEC
MOVE 0 TO count1 MOVE 0 TO count2
MOVE"YY"TO PNO1 MOVE 99 TO HRS MOVE 99 TO INT1 MOVE 99 TO INT2
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.