* 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('E8',:GRDE:indic1,'Atlanta') END-EXEC MOVESQLCODETO SQL-COD DISPLAY"SQLCODE after NULL with indic INSERT = ", SQL-COD
EXECSQLINSERTINTO TEMP_SS(EMPNUM) VALUES('E9') END-EXEC MOVESQLCODETO SQL-COD DISPLAY"SQLCODE after NULL INSERT by excluding column = ",
SQL-COD
EXECSQL UPDATE WORKS SET HOURS = NULL WHERE PNUM = 'P2'END-EXEC MOVESQLCODETO SQL-COD DISPLAY"SQLCODE after UPDATE WORKS 'P2' = ", SQL-COD
EXECSQLINSERTINTO TEMP_SS SELECT PNUM,HOURS,'Nowhere' FROM WORKS WHERE EMPNUM = 'E1'END-EXEC MOVESQLCODETO SQL-COD DISPLAY"SQLCODE after INSERT SELECT 'E1' = ", SQL-COD
EXECSQL UPDATE TEMP_SS SET GRADE = NULL WHERE EMPNUM = 'E3'END-EXEC MOVESQLCODETO SQL-COD DISPLAY"SQLCODE after UPDATE TEMP_SS 'E3' = ", SQL-COD
EXECSQL UPDATE TEMP_SS SET GRADE = :GRDE:indic1 WHERE EMPNUM = 'E5'END-EXEC MOVESQLCODETO 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 MOVESQLCODETO SQL-COD
MOVE 1 TO i PERFORM P50 UNTIL i > 7
EXECSQLCLOSE X END-EXEC MOVESQLCODETO SQL-COD
MOVE"XX"TO EMPNO1
EXECSQLOPEN Y END-EXEC MOVESQLCODETO 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 MOVESQLCODETO SQL-COD
EXECSQLSELECTCOUNT(*) INTO :count2 FROM STAFF WHERE EMPNUM > 'E5'END-EXEC MOVESQLCODETO 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
EXECSQLROLLBACK WORK END-EXEC MOVESQLCODETO SQL-COD
if (count1 = 6 AND count2 = 4) then EXECSQLINSERTINTO TESTREPORT
VALUES('0444','pass','PCO') END-EXEC MOVESQLCODETO SQL-COD DISPLAY" *** pass *** " else EXECSQLINSERTINTO TESTREPORT
VALUES('0444','fail','PCO') END-EXEC ADD 1 TO errcnt MOVESQLCODETO SQL-COD DISPLAY" dml077.pco *** fail *** " END-IF DISPLAY"================================================"
DISPLAY" " EXECSQLCOMMIT WORK END-EXEC MOVESQLCODETO 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 MOVESQLCODETO SQL-COD DISPLAY"PNO1 = ", PNO1 ", SQLCODE after SELECT PNUM = ",
SQL-COD DISPLAY" "
if (SQLCODENOT = 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 MOVESQLCODETO SQL-COD DISPLAY"HRS = ", HRS ", SQLCODE after SELECT HOURS = ",
SQL-COD DISPLAY" "
if (SQLCODENOT = 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 MOVESQLCODETO SQL-COD DISPLAY"NUM = ", NUM ", SQLCODE after SELECT COL1 = ",
SQL-COD
if (SQLCODENOT = 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 und die Messung sind noch experimentell.