* Standard COBOL (file "CDR024.SCO") calling SQL * procedures in file "CDR024.MCO".
**************************************************************** * * COMMENT SECTION * * DATE 1989/04/07 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. * * CDR024.SCO * WRITTEN BY: SUN DAJUN * * THIS ROUTINE TESTS THE <DEFAULT CLAUSE> IN COLUMN DEFINI- * TION. * * REFERENCES * AMERICAN NATIONAL STANDARD database language - SQL * with Integrity Enhancement * * SECTION 6.3 * <column definition>::= * <column name><data type> * (<default clause>) * (<column constrait>...) * SECTION 6.4 * <default clause>::= * DEFAULT {<literal>|USER|NULL} * ****************************************************************
MOVE"SUN"TO uid CALL"AUTHID"USING uid MOVE"not logged in, not"TO uidx CALL"AUTHCK"USING SQLCODE uidx MOVE SQLCODE TO SQL-COD 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, Module COBOL, cdr024.sco" 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 ******************** BEGIN TEST0385 ******************* *This program tests if character string default *values of columns can be properly set.
DISPLAY" TEST0385 " DISPLAY" Char. column default value " DISPLAY" SQL with Integrity Enhancement section
- " 6.3,6.4" DISPLAY" - - - - - - - - - - - - - - - - - - - - - " DISPLAY" DELETE FROM CHAR_DEFAULT;" DISPLAY" " DISPLAY" INSERT INTO CHAR_DEFAULT(SEX_CODE)" DISPLAY" VALUES ('M');" DISPLAY" " DISPLAY" " DISPLAY" SELECT NICKNAME, INSURANCE1 INTO :NICK1,
- " :INSUR1 " DISPLAY" FROM CHAR_DEFAULT" DISPLAY" WHERE SEX_CODE = 'M';" DISPLAY" " DISPLAY" INSERT INTO CHAR_DEFAULT(NICKNAME,
- " INSURANCE1)" DISPLAY" VALUES ('Piggy', 'Kaise');" DISPLAY" " DISPLAY" " DISPLAY" SELECT SEX_CODE INTO :SEX1 " DISPLAY" FROM CHAR_DEFAULT" DISPLAY" WHERE INSURANCE1 = 'Kaise';"
MOVE"NV"TO INSUR1 MOVE"NV"TO NICK1 MOVE" "TO SEX1 * EXEC SQL DELETE FROM CHAR_DEFAULT END-EXEC CALL"SUB1"USING SQLCODE MOVE SQLCODE TO SQL-COD
* EXEC SQL INSERT INTO CHAR_DEFAULT(SEX_CODE) * VALUES ('M') END-EXEC CALL"SUB2"USING SQLCODE MOVE SQLCODE TO SQL-COD
* EXEC SQL SELECT NICKNAME, INSURANCE1 INTO :NICK1, :INSUR1 * FROM CHAR_DEFAULT * WHERE SEX_CODE = 'M' END-EXEC CALL"SUB3"USING SQLCODE NICK1 INSUR1 MOVE SQLCODE TO SQL-COD
* EXEC SQL INSERT INTO CHAR_DEFAULT(NICKNAME, INSURANCE1) * VALUES ('Piggy', 'Kaise') END-EXEC CALL"SUB4"USING SQLCODE MOVE SQLCODE TO SQL-COD
* EXEC SQL SELECT SEX_CODE INTO :SEX1 * FROM CHAR_DEFAULT * WHERE INSURANCE1 = 'Kaise' END-EXEC CALL"SUB5"USING SQLCODE SEX1 MOVE SQLCODE TO SQL-COD
DISPLAY"The correct result is :" DISPLAY" SEX1 = F, NICK1 = No nickname given" DISPLAY" INSUR1 = basic" DISPLAY"Your answer is :" DISPLAY" SEX1 = ", SEX1 ", NICK1 = ", NICK1 DISPLAY" INSUR1 = ", INSUR1 if (SEX1 = "F"AND NICK1 = "No nickname given") then MOVE 1 TO flag else MOVE 0 TO flag END-IF if (flag = 1 AND INSUR1 = "basic") then * EXEC SQL INSERT INTO TESTREPORT * VALUES('0385','pass','MCO') END-EXEC CALL"SUB6"USING SQLCODE MOVE SQLCODE TO SQL-COD DISPLAY" *** pass *** " else * EXEC SQL INSERT INTO TESTREPORT * VALUES('0385','fail','MCO') END-EXEC ADD 1 TO errcnt CALL"SUB7"USING SQLCODE MOVE SQLCODE TO SQL-COD DISPLAY" cdr024.sco *** fail *** " END-IF DISPLAY"================================================"
DISPLAY" " * EXEC SQL COMMIT WORK END-EXEC CALL"SUB8"USING SQLCODE MOVE SQLCODE TO SQL-COD ****************** END TEST0385 ***********************
******************** BEGIN TEST0386 ******************* *This program tests if exact numeric default values *of columns can be properly set.
DISPLAY" TEST0386 " DISPLAY" Exact numeric column default value " DISPLAY" SQL with Integrity Enhancement section
- " 6.3,6.4" DISPLAY" - - - - - - - - - - - - - - - - - - - - - " DISPLAY" " DISPLAY" DELETE FROM EXACT_DEF;" DISPLAY" " DISPLAY" INSERT INTO EXACT_DEF" DISPLAY" VALUES (98.3, -55556, .000001);" DISPLAY" " DISPLAY" INSERT INTO EXACT_DEF(BODY_TEMP)" DISPLAY" VALUES (99.0);" DISPLAY" " DISPLAY" " DISPLAY" INSERT INTO EXACT_DEF(MAX_NUM, MIN_NUM)" DISPLAY" VALUES (100, .2);" DISPLAY" " DISPLAY" " DISPLAY" SELECT COUNT(*) INTO :CNT " DISPLAY" FROM EXACT_DEF" DISPLAY" WHERE BODY_TEMP = 99.0 AND " DISPLAY" MAX_NUM = -55555 AND MIN_NUM = .000001" DISPLAY" OR BODY_TEMP = 98.6 AND MAX_NUM = 100 AND
- " MIN_NUM = .2;"
MOVE 0 TO CNT * EXEC SQL DELETE FROM EXACT_DEF END-EXEC CALL"SUB9"USING SQLCODE MOVE SQLCODE TO SQL-COD
* EXEC SQL INSERT INTO EXACT_DEF * VALUES (98.3, -55556, .000001) END-EXEC CALL"SUB10"USING SQLCODE MOVE SQLCODE TO SQL-COD
* EXEC SQL INSERT INTO EXACT_DEF(BODY_TEMP) * VALUES (99.0) END-EXEC CALL"SUB11"USING SQLCODE MOVE SQLCODE TO SQL-COD
* EXEC SQL INSERT INTO EXACT_DEF(MAX_NUM, MIN_NUM) * VALUES (100, .2) END-EXEC CALL"SUB12"USING SQLCODE MOVE SQLCODE TO SQL-COD
* EXEC SQL SELECT COUNT(*) INTO :CNT * FROM EXACT_DEF * WHERE BODY_TEMP = 99.0 AND * MAX_NUM = -55555 AND MIN_NUM = .000001 * OR BODY_TEMP = 98.6 AND MAX_NUM = 100 AND MIN_NUM = .2 * END-EXEC CALL"SUB13"USING SQLCODE CNT MOVE SQLCODE TO SQL-COD
DISPLAY"The correct result is :" DISPLAY" CNT = 2" DISPLAY"Your answer is :" DISPLAY" CNT = ", CNT
if (CNT = 2) then * EXEC SQL INSERT INTO TESTREPORT * VALUES('0386','pass','MCO') END-EXEC CALL"SUB14"USING SQLCODE MOVE SQLCODE TO SQL-COD DISPLAY" *** pass *** " else * EXEC SQL INSERT INTO TESTREPORT * VALUES('0386','fail','MCO') END-EXEC ADD 1 TO errcnt CALL"SUB15"USING SQLCODE MOVE SQLCODE TO SQL-COD DISPLAY" cdr024.sco *** fail *** " END-IF DISPLAY"================================================"
DISPLAY" " * EXEC SQL COMMIT WORK END-EXEC CALL"SUB16"USING SQLCODE MOVE SQLCODE TO SQL-COD ********************* END TEST0386 *******************
******************** BEGIN TEST0387 ******************* *This program tests if approximate numeric default *values of columns can be properly set.
DISPLAY" " DISPLAY" DELETE FROM APPROX_DEF;" DISPLAY" " DISPLAY" INSERT INTO APPROX_DEF(X_COUNT)" DISPLAY" VALUES (5.0E5);" DISPLAY" " DISPLAY" INSERT INTO APPROX_DEF" DISPLAY" VALUES (1.78E11, -9.9E10, 3.45E-10,
- " 7.6777E-7);" DISPLAY" " DISPLAY" INSERT INTO APPROX_DEF(Y_COUNT, Z_COUNT,
- " ZZ_COUNT)" DISPLAY" VALUES (1.0E3, 2.0E4, 3.8E6);" DISPLAY" " DISPLAY" SELECT COUNT(*) INTO :CNT" DISPLAY" FROM APPROX_DEF" DISPLAY" WHERE (Y_COUNT BETWEEN -9.991E10 AND
- " -9.989E10) AND" DISPLAY" (Z_COUNT BETWEEN 3.44E-11 AND
- " 3.46E-11) AND" DISPLAY" (ZZ_COUNT BETWEEN -7.6778E-7 AND
- " -7.6776E-7) OR" DISPLAY" (X_COUNT BETWEEN 1.77E12 AND
- " 1.79E12);" DISPLAY" " MOVE 0 TO CNT * EXEC SQL DELETE FROM APPROX_DEF END-EXEC CALL"SUB17"USING SQLCODE MOVE SQLCODE TO SQL-COD
* EXEC SQL INSERT INTO APPROX_DEF(X_COUNT) * VALUES (5.0E5) END-EXEC CALL"SUB18"USING SQLCODE MOVE SQLCODE TO SQL-COD
* EXEC SQL INSERT INTO APPROX_DEF * VALUES (1.78E11, -9.9E10, 3.45E-10, 7.6777E-7) END-EXEC CALL"SUB19"USING SQLCODE MOVE SQLCODE TO SQL-COD
* EXEC SQL INSERT INTO APPROX_DEF(Y_COUNT, Z_COUNT, ZZ_COUNT) * VALUES (1.0E3, 2.0E4, 3.8E6) END-EXEC CALL"SUB20"USING SQLCODE MOVE SQLCODE TO SQL-COD
* EXEC SQL SELECT COUNT(*) INTO :CNT * FROM APPROX_DEF * WHERE (Y_COUNT BETWEEN -9.991E10 AND -9.989E10) AND * (Z_COUNT BETWEEN 3.44E-11 AND 3.46E-11) AND * (ZZ_COUNT BETWEEN -7.6778E-7 AND -7.6776E-7) OR * (X_COUNT BETWEEN 1.77E12 AND 1.79E12) END-EXEC CALL"SUB21"USING SQLCODE CNT MOVE SQLCODE TO SQL-COD
DISPLAY"The correct result is :" DISPLAY" CNT = 2" DISPLAY"Your answer is :" DISPLAY" CNT = ", CNT
if (CNT = 2) then * EXEC SQL INSERT INTO TESTREPORT * VALUES('0387','pass','MCO') END-EXEC CALL"SUB22"USING SQLCODE MOVE SQLCODE TO SQL-COD DISPLAY" *** pass *** " else * EXEC SQL INSERT INTO TESTREPORT * VALUES('0387','fail','MCO') END-EXEC ADD 1 TO errcnt CALL"SUB23"USING SQLCODE MOVE SQLCODE TO SQL-COD DISPLAY" cdr024.sco *** fail *** " END-IF DISPLAY"================================================"
DISPLAY" " * EXEC SQL COMMIT WORK END-EXEC CALL"SUB24"USING SQLCODE MOVE SQLCODE TO SQL-COD ****************** END TEST0387 *********************
******************** BEGIN TEST0388 ******************* *This program tests if the FIPS sizing default values *of columns can be properly set. * * !!!!!!!!!! SEE COBOL TEST0206 FOR REFERENCE !!!!!!!! *
DISPLAY" TEST0388 " DISPLAY" Default value sizing test" DISPLAY" SQL with Integrity Enhancement section
- " 6.3,6.4" DISPLAY" - - - - - - - - - - - - - - - - - - - - - " DISPLAY" " DISPLAY" DELETE FROM SIZE_TAB;" DISPLAY" " DISPLAY" INSERT INTO SIZE_TAB(COL1) VALUES(" DISPLAY"
- " 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnop" DISPLAY" qrstuvwxyz0123456789012');" DISPLAY" " DISPLAY" INSERT INTO SIZE_TAB(COL2, COL3, COL4)" DISPLAY" VALUES (-999888777, 987654321.123456,
- " -1.45E22);" DISPLAY" " DISPLAY" INSERT INTO SIZE_TAB" DISPLAY" VALUES('ABCDEFG', 7,7,-1.49E22);" DISPLAY" " DISPLAY" DECLARE MOON CURSOR FOR " DISPLAY" SELECT COUNT(*) FROM SIZE_TAB" DISPLAY" WHERE COL4 BETWEEN -1.46E22 AND
- " -1.048575E22" DISPLAY" GROUP BY COL1, COL2, COL3;" DISPLAY" " MOVE 0 TO CNT * EXEC SQL DELETE FROM SIZE_TAB END-EXEC CALL"SUB25"USING SQLCODE * EXEC SQL INSERT INTO SIZE_TAB(COL1) * VALUES ('ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghi * - "jklmnopqrstuvwxyz0123456789012') END-EXEC CALL"SUB26"USING SQLCODE
MOVE SQLCODE TO SQL-COD
* EXEC SQL INSERT INTO SIZE_TAB(COL2, COL3, COL4) * VALUES (-999888777, 987654321.123456, -1.45E22) END-EXEC CALL"SUB27"USING SQLCODE MOVE SQLCODE TO SQL-COD
* EXEC SQL DECLARE MOON CURSOR FOR * SELECT COUNT(*) FROM SIZE_TAB * WHERE COL4 BETWEEN -1.46E22 AND -1.048575E22 * GROUP BY COL1, COL2, COL3 END-EXEC
* EXEC SQL INSERT INTO SIZE_TAB * VALUES('ABCDEFG', 7,7,-1.49E22) END-EXEC CALL"SUB28"USING SQLCODE MOVE SQLCODE TO SQL-COD
* EXEC SQL OPEN MOON END-EXEC CALL"SUB29"USING SQLCODE MOVE SQLCODE TO SQL-COD * EXEC SQL FETCH MOON INTO :CNT END-EXEC CALL"SUB30"USING SQLCODE CNT MOVE SQLCODE TO SQL-COD * EXEC SQL CLOSE MOON END-EXEC CALL"SUB31"USING SQLCODE MOVE SQLCODE TO SQL-COD
DISPLAY"The correct result is :" DISPLAY" CNT = 2 " DISPLAY"Your answer is :" DISPLAY" CNT = ", CNT
if (CNT = 2) then * EXEC SQL INSERT INTO TESTREPORT * VALUES('0388','pass','MCO') END-EXEC CALL"SUB32"USING SQLCODE MOVE SQLCODE TO SQL-COD DISPLAY" *** pass *** " else * EXEC SQL INSERT INTO TESTREPORT * VALUES('0388','fail','MCO') END-EXEC ADD 1 TO errcnt CALL"SUB33"USING SQLCODE MOVE SQLCODE TO SQL-COD DISPLAY" cdr024.sco *** fail *** " END-IF DISPLAY"================================================"
DISPLAY" " * EXEC SQL COMMIT WORK END-EXEC CALL"SUB34"USING SQLCODE MOVE SQLCODE TO SQL-COD ******************** END TEST0388 ********************
**** TESTER MAY CHOOSE TO INSERT CODE FOR errcnt > 0 STOPRUN.
* **** Procedures for PERFORM statements
¤ Dauer der Verarbeitung: 0.13 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.