IDENTIFICATION DIVISION.
PROGRAM-ID. DML021.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER. xyz.
OBJECT-COMPUTER. xyz.
DATA DIVISION.
WORKING-STORAGE SECTION.
* EMBEDDED COBOL (file "DML021.PCO")
****************************************************************
*
* COMMENT SECTION
*
* DATE 1988/02/10 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.
*
* DML021.PCO
* WRITTEN BY: HU YANPING
* TRANSLATED AUTOMATICALLY FROM EMBEDDED C BY CHRIS SCHANZLE
*
* THIS ROUTINE TESTS THE DATA TYPES IN SQL LANGUAGE.
*
* REFERENCES
* AMERICAN NATIONAL STANDARD database language - SQL
* X3.135-1989
*
* SECTION 5.5 <data type>
*
* Database Language Embedded SQL
* X3.168-1989
* SECTION 9. <embedded SQL Host Program>
*
****************************************************************
EXEC SQL BEGIN DECLARE SECTION END-EXEC
01 char1 PIC X(20).
01 long1 PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
01 short1 PIC S9(4) DISPLAY SIGN LEADING SEPARATE.
01 uid PIC X(18).
01 uidx PIC X(18).
EXEC SQL END DECLARE SECTION END-EXEC
01 SQLCODE PIC S9(9) COMP.
01 errcnt PIC S9(4) DISPLAY SIGN LEADING SEPARATE.
01 i PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
01 SQL-COD PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
* date_time declaration *
01 TO-DAY PIC 9(6).
01 THE-TIME PIC 9(8).
PROCEDURE DIVISION.
P0.
MOVE "HU" TO uid
CALL "AUTHID" USING uid
MOVE "not logged in, not" TO uidx
EXEC SQL SELECT
USER INTO :uidx FROM HU.ECCO END-EXEC
if (uid NOT = uidx) then
DISPLAY "ERROR: User " uid " expected."
DISPLAY "User " uidx " connected."
DISPLAY " "
STOP RUN
END-IF
MOVE 0 TO errcnt
DISPLAY
"SQL Test Suite, V6.0, Embedded COBOL, dml021.pco"
DISPLAY " "
DISPLAY
"59-byte ID"
DISPLAY "TEd Version #"
DISPLAY " "
* date_time print *
ACCEPT TO-DAY FROM DATE
ACCEPT THE-TIME FROM TIME
DISPLAY "Date run YYMMDD: " TO-DAY " at hhmmssff: " THE-TIME
******************** BEGIN TEST0084 *******************
DISPLAY " TEST0084"
DISPLAY "reference: X3.135-1989 5.5 & X3.168-1989 9. "
DISPLAY " - - - - - - - - - - - - - - - - - - -"
DISPLAY " *** CREATE TABLE AA (chartest CHAR(20)) "
DISPLAY " *** INSERT INTO AA "
DISPLAY " *** VALUES('abcdefghijklmnopqrst') "
DISPLAY " "
EXEC SQL INSERT INTO AA
VALUES('abcdefghijklmnopqrst') END-EXEC
MOVE SQLCODE TO SQL-COD
DISPLAY " After INSERT SQLCODE = ", SQL-COD
EXEC SQL DECLARE DATA1 CURSOR
FOR SELECT CHARTEST
FROM AA END-EXEC
EXEC SQL OPEN DATA1 END-EXEC
MOVE SQLCODE TO SQL-COD
MOVE " " TO char1
EXEC SQL FETCH DATA1 INTO :char1 END-EXEC
MOVE SQLCODE TO SQL-COD
DISPLAY " char1 = ", char1
EXEC SQL ROLLBACK WORK END-EXEC
MOVE SQLCODE TO SQL-COD
if (char1 = "abcdefghijklmnopqrst") then
DISPLAY " *** pass ***"
EXEC SQL INSERT INTO TESTREPORT
VALUES('0084','pass','PCO') END-EXEC
MOVE SQLCODE TO SQL-COD
else
DISPLAY " dml021.pco *** fail ***"
EXEC SQL INSERT INTO TESTREPORT
VALUES('0084','fail','PCO') END-EXEC
ADD 1 TO errcnt
MOVE SQLCODE TO SQL-COD
END-IF
DISPLAY
"====================================================="
DISPLAY " "
EXEC SQL COMMIT WORK END-EXEC
MOVE SQLCODE TO SQL-COD
******************** END TEST0084 *******************
******************** BEGIN TEST0173 *******************
DISPLAY " TEST0173 "
DISPLAY "reference: X3.135-1989 5.5 & X3.168-1989 9. "
DISPLAY " - - - - - - - - - - - - - - - - - - -"
DISPLAY " *** CREATE TABLE BB (chartest CHAR) "
DISPLAY " *** INSERT INTO BB "
DISPLAY " *** VALUES('a') "
DISPLAY " "
COMPUTE i = -1
EXEC SQL INSERT INTO BB
VALUES('a') END-EXEC
MOVE SQLCODE TO SQL-COD
DISPLAY " After INSERT SQLCODE = ", SQL-COD
EXEC SQL DECLARE DATA01 CURSOR
FOR SELECT CHARTEST
FROM BB END-EXEC
EXEC SQL OPEN DATA01 END-EXEC
MOVE SQLCODE TO SQL-COD
MOVE " " TO char1
EXEC SQL FETCH DATA01 INTO :char1 END-EXEC
MOVE SQLCODE TO SQL-COD
MOVE SQLCODE TO i
DISPLAY " char1 = ", char1
EXEC SQL ROLLBACK WORK END-EXEC
MOVE SQLCODE TO SQL-COD
if (char1 = "a" AND i = 0) then
DISPLAY " *** pass ***"
EXEC SQL INSERT INTO TESTREPORT
VALUES('0173','pass','PCO') END-EXEC
MOVE SQLCODE TO SQL-COD
else
DISPLAY " dml021.pco *** fail ***"
EXEC SQL INSERT INTO TESTREPORT
VALUES('0173','fail','PCO') END-EXEC
ADD 1 TO errcnt
MOVE SQLCODE TO SQL-COD
END-IF
DISPLAY
"====================================================="
DISPLAY " "
EXEC SQL COMMIT WORK END-EXEC
MOVE SQLCODE TO SQL-COD
******************** END TEST0173 *******************
******************** BEGIN TEST0085 *******************
DISPLAY " TEST0085"
DISPLAY "reference: X3.135-1989 5.5 & X3.168-1989 9. "
DISPLAY " - - - - - - - - - - - - - - - - - - -"
DISPLAY "*** CREATE TABLE CC (chartest CHARACTER(20)) "
DISPLAY "*** INSERT INTO CC "
DISPLAY "*** VALUES('abcdefghijklmnopqrst') "
DISPLAY " "
EXEC SQL INSERT INTO CC
VALUES('abcdefghijklmnopqrst') END-EXEC
MOVE SQLCODE TO SQL-COD
DISPLAY " After INSERT SQLCODE = ", SQL-COD
EXEC SQL DECLARE DATA2 CURSOR
FOR SELECT CHARTEST
FROM CC END-EXEC
EXEC SQL OPEN DATA2 END-EXEC
MOVE SQLCODE TO SQL-COD
MOVE " " TO char1
EXEC SQL FETCH DATA2 INTO :char1 END-EXEC
MOVE SQLCODE TO SQL-COD
DISPLAY " char1 = ", char1
EXEC SQL ROLLBACK WORK END-EXEC
MOVE SQLCODE TO SQL-COD
if (char1 = "abcdefghijklmnopqrst") then
DISPLAY " *** pass ***"
EXEC SQL INSERT INTO TESTREPORT
VALUES('0085','pass','PCO') END-EXEC
MOVE SQLCODE TO SQL-COD
else
DISPLAY " dml021.pco *** fail ***"
EXEC SQL INSERT INTO TESTREPORT
VALUES('0085','fail','PCO') END-EXEC
ADD 1 TO errcnt
MOVE SQLCODE TO SQL-COD
END-IF
DISPLAY
"====================================================="
DISPLAY " "
EXEC SQL COMMIT WORK END-EXEC
MOVE SQLCODE TO SQL-COD
******************** END TEST0085 *******************
******************** BEGIN TEST0174 *******************
DISPLAY " TEST0174 "
DISPLAY "reference: X3.135-1989 5.5 & X3.168-1989 9. "
DISPLAY " - - - - - - - - - - - - - - - - - - -"
DISPLAY " *** CREATE TABLE DD (chartest CHARACTER) "
DISPLAY " *** INSERT INTO DD "
DISPLAY " *** VALUES('a') "
DISPLAY " "
COMPUTE i = -1
EXEC SQL INSERT INTO DD
VALUES('a') END-EXEC
MOVE SQLCODE TO SQL-COD
DISPLAY " After INSERT SQLCODE = ", SQL-COD
EXEC SQL DECLARE DATA02 CURSOR
FOR SELECT CHARTEST
FROM DD END-EXEC
EXEC SQL OPEN DATA02 END-EXEC
MOVE SQLCODE TO SQL-COD
MOVE " " TO char1
EXEC SQL FETCH DATA02 INTO :char1 END-EXEC
MOVE SQLCODE TO SQL-COD
MOVE SQLCODE TO i
DISPLAY " char1 = ", char1
EXEC SQL ROLLBACK WORK END-EXEC
MOVE SQLCODE TO SQL-COD
if (char1 = "a" AND i = 0) then
DISPLAY " *** pass ***"
EXEC SQL INSERT INTO TESTREPORT
VALUES('0174','pass','PCO') END-EXEC
MOVE SQLCODE TO SQL-COD
else
DISPLAY " dml021.pco *** fail ***"
EXEC SQL INSERT INTO TESTREPORT
VALUES('0174','fail','PCO') END-EXEC
ADD 1 TO errcnt
MOVE SQLCODE TO SQL-COD
END-IF
DISPLAY
"====================================================="
DISPLAY " "
EXEC SQL COMMIT WORK END-EXEC
MOVE SQLCODE TO SQL-COD
******************** END TEST0174 *******************
******************** BEGIN TEST0086 *******************
DISPLAY " TEST0086"
DISPLAY "reference: X3.135-1989 5.5 & X3.168-1989 9. "
DISPLAY " - - - - - - - - - - - - - - - - - - -"
DISPLAY " *** CREATE TABLE EE (inttest INTEGER) "
DISPLAY " *** INSERT INTO EE "
DISPLAY " *** VALUES(123456) "
DISPLAY " "
COMPUTE i = -1
EXEC SQL INSERT INTO EE
VALUES(123456) END-EXEC
MOVE SQLCODE TO SQL-COD
DISPLAY " After INSERT SQLCODE = ", SQL-COD
EXEC SQL DECLARE DATA3 CURSOR
FOR SELECT INTTEST
FROM EE END-EXEC
EXEC SQL OPEN DATA3 END-EXEC
MOVE SQLCODE TO SQL-COD
MOVE 0 TO long1
EXEC SQL FETCH DATA3 INTO :long1 END-EXEC
MOVE SQLCODE TO SQL-COD
MOVE SQLCODE TO i
DISPLAY " long1 = ", long1
EXEC SQL ROLLBACK WORK END-EXEC
MOVE SQLCODE TO SQL-COD
if (long1 = 123456 AND i = 0) then
DISPLAY " *** pass ***"
EXEC SQL INSERT INTO TESTREPORT
VALUES('0086','pass','PCO') END-EXEC
MOVE SQLCODE TO SQL-COD
else
DISPLAY " dml021.pco *** fail ***"
EXEC SQL INSERT INTO TESTREPORT
VALUES('0086','fail','PCO') END-EXEC
ADD 1 TO errcnt
MOVE SQLCODE TO SQL-COD
END-IF
DISPLAY
"====================================================="
DISPLAY " "
EXEC SQL COMMIT WORK END-EXEC
MOVE SQLCODE TO SQL-COD
******************** END TEST0086 *******************
******************** BEGIN TEST0087 *******************
DISPLAY " TEST0087"
DISPLAY "reference: X3.135-1989 5.5 & X3.168-1989 9. "
DISPLAY " - - - - - - - - - - - - - - - - - - -"
DISPLAY " *** CREATE TABLE FF (inttest INT) "
DISPLAY " *** INSERT INTO FF "
DISPLAY " *** VALUES(123456) "
DISPLAY " "
COMPUTE i = -1
EXEC SQL INSERT INTO FF
VALUES(123456) END-EXEC
MOVE SQLCODE TO SQL-COD
DISPLAY " After INSERT SQLCODE = ", SQL-COD
EXEC SQL DECLARE DATA4 CURSOR
FOR SELECT INTTEST
FROM FF END-EXEC
EXEC SQL OPEN DATA4 END-EXEC
MOVE SQLCODE TO SQL-COD
MOVE 0 TO long1
EXEC SQL FETCH DATA4 INTO :long1 END-EXEC
MOVE SQLCODE TO SQL-COD
MOVE SQLCODE TO i
DISPLAY " long1 = ", long1
EXEC SQL ROLLBACK WORK END-EXEC
MOVE SQLCODE TO SQL-COD
if (long1 = 123456 AND i = 0) then
DISPLAY " *** pass ***"
EXEC SQL INSERT INTO TESTREPORT
VALUES('0087','pass','PCO') END-EXEC
MOVE SQLCODE TO SQL-COD
else
DISPLAY " dml021.pco *** fail ***"
EXEC SQL INSERT INTO TESTREPORT
VALUES('0087','fail','PCO') END-EXEC
ADD 1 TO errcnt
MOVE SQLCODE TO SQL-COD
END-IF
DISPLAY
"====================================================="
DISPLAY " "
EXEC SQL COMMIT WORK END-EXEC
MOVE SQLCODE TO SQL-COD
******************** END TEST0087 *******************
******************** BEGIN TEST0089 *******************
DISPLAY " TEST0089"
DISPLAY "reference: X3.135-1989 5.5 & X3.168-1989 9. "
DISPLAY " - - - - - - - - - - - - - - - - - - -"
DISPLAY " *** CREATE TABLE HH (smalltest SMALLINT) "
DISPLAY " *** INSERT INTO HH "
DISPLAY " *** VALUES(123) "
DISPLAY " "
EXEC SQL INSERT INTO HH
VALUES(123) END-EXEC
MOVE SQLCODE TO SQL-COD
DISPLAY " After INSERT SQLCODE = ", SQL-COD
MOVE 0 TO short1
EXEC SQL SELECT *
INTO :short1
FROM HH END-EXEC
MOVE SQLCODE TO SQL-COD
DISPLAY " short1 = ", short1
EXEC SQL ROLLBACK WORK END-EXEC
MOVE SQLCODE TO SQL-COD
if (short1 = 123 ) then
DISPLAY " *** pass ***"
EXEC SQL INSERT INTO TESTREPORT
VALUES('0089','pass','PCO') END-EXEC
MOVE SQLCODE TO SQL-COD
else
DISPLAY " dml021.pco *** fail ***"
EXEC SQL INSERT INTO TESTREPORT
VALUES('0089','fail','PCO') END-EXEC
ADD 1 TO errcnt
MOVE SQLCODE TO SQL-COD
END-IF
DISPLAY
"====================================================="
DISPLAY " "
EXEC SQL COMMIT WORK END-EXEC
MOVE SQLCODE TO SQL-COD
******************** END TEST0089 *******************
******************** BEGIN TEST0175 *******************
DISPLAY " TEST0175 "
DISPLAY "reference: X3.135-1989 5.5 & X3.168-1989 9. "
DISPLAY " - - - - - - - - - - - - - - - - - - -"
DISPLAY " *** CREATE TABLE MM (numtest NUMERIC) "
DISPLAY " *** INSERT INTO MM "
DISPLAY " *** VALUES(7) "
DISPLAY " "
EXEC SQL INSERT INTO MM
VALUES(7) END-EXEC
MOVE SQLCODE TO SQL-COD
DISPLAY " After INSERT SQLCODE = ", SQL-COD " "
MOVE 0 TO long1
EXEC SQL SELECT *
INTO :long1
FROM MM END-EXEC
MOVE SQLCODE TO SQL-COD
DISPLAY " select from MM long1 = ", long1
EXEC SQL ROLLBACK WORK END-EXEC
MOVE SQLCODE TO SQL-COD
if (long1 = 7) then
DISPLAY " *** pass ***"
EXEC SQL INSERT INTO TESTREPORT
VALUES('0175','pass','PCO') END-EXEC
MOVE SQLCODE TO SQL-COD
else
DISPLAY " dml021.pco *** fail ***"
EXEC SQL INSERT INTO TESTREPORT
VALUES('0175','fail','PCO') END-EXEC
ADD 1 TO errcnt
MOVE SQLCODE TO SQL-COD
END-IF
DISPLAY
"====================================================="
DISPLAY " "
EXEC SQL COMMIT WORK END-EXEC
MOVE SQLCODE TO SQL-COD
******************** END TEST0175 *******************
******************** BEGIN TEST0176 *******************
DISPLAY " TEST0176 "
DISPLAY "reference: X3.135-1989 5.5 & X3.168-1989 9. "
DISPLAY " - - - - - - - - - - - - - - - - - - -"
DISPLAY " *** CREATE TABLE NN (numtest NUMERIC(9)) "
DISPLAY " *** INSERT INTO NN "
DISPLAY " *** VALUES(123456789) "
DISPLAY " "
EXEC SQL DELETE FROM NN END-EXEC
EXEC SQL INSERT INTO NN
VALUES(123456789) END-EXEC
MOVE SQLCODE TO SQL-COD
DISPLAY " After INSERT SQLCODE = ", SQL-COD " "
MOVE 0 TO long1
EXEC SQL SELECT *
INTO :long1
FROM NN END-EXEC
MOVE SQLCODE TO SQL-COD
DISPLAY " long1 = ", long1
EXEC SQL ROLLBACK WORK END-EXEC
MOVE SQLCODE TO SQL-COD
if (long1 = 123456789) then
DISPLAY " *** pass ***"
EXEC SQL INSERT INTO TESTREPORT
VALUES('0176','pass','PCO') END-EXEC
MOVE SQLCODE TO SQL-COD
else
DISPLAY " dml021.pco *** fail ***"
EXEC SQL INSERT INTO TESTREPORT
VALUES('0176','fail','PCO') END-EXEC
ADD 1 TO errcnt
MOVE SQLCODE TO SQL-COD
END-IF
DISPLAY
"====================================================="
DISPLAY " "
EXEC SQL COMMIT WORK END-EXEC
MOVE SQLCODE TO SQL-COD
******************** END TEST0176 *******************
******************** BEGIN TEST0177 *******************
DISPLAY " TEST0177 "
DISPLAY "reference: X3.135-1989 5.5 & Cross ref. 8.6 "
DISPLAY " - - - - - - - - - - - - - - - - - - -"
DISPLAY " *** CREATE TABLE OO (numtest NUMERIC(9)) "
DISPLAY " *** INSERT INTO OO "
DISPLAY " *** VALUES(123456789) "
DISPLAY " "
EXEC SQL INSERT INTO OO
VALUES(123456789) END-EXEC
MOVE SQLCODE TO SQL-COD
DISPLAY " After INSERT SQLCODE = ", SQL-COD " "
EXEC SQL DECLARE DATA011 CURSOR
FOR SELECT NUMTEST
FROM OO END-EXEC
EXEC SQL OPEN DATA011 END-EXEC
MOVE SQLCODE TO SQL-COD
MOVE 0 TO long1
EXEC SQL FETCH DATA011 INTO :long1 END-EXEC
MOVE SQLCODE TO SQL-COD
DISPLAY " long1 = ", long1
EXEC SQL ROLLBACK WORK END-EXEC
MOVE SQLCODE TO SQL-COD
if (long1 = 123456789) then
DISPLAY " *** pass ***"
EXEC SQL INSERT INTO TESTREPORT
VALUES('0177','pass','PCO') END-EXEC
MOVE SQLCODE TO SQL-COD
else
DISPLAY " dml021.pco *** fail ***"
EXEC SQL INSERT INTO TESTREPORT
VALUES('0177','fail','PCO') END-EXEC
ADD 1 TO errcnt
MOVE SQLCODE TO SQL-COD
END-IF
DISPLAY
"====================================================="
DISPLAY " "
EXEC SQL COMMIT WORK END-EXEC
MOVE SQLCODE TO SQL-COD
******************** END TEST0177 *******************
******************** BEGIN TEST0178 *******************
DISPLAY " TEST0178 "
DISPLAY "reference: X3.135-1989 5.5 & X3.168-1989 9. "
DISPLAY " - - - - - - - - - - - - - - - - - - -"
DISPLAY " *** CREATE TABLE QQ (numtest DECIMAL) "
DISPLAY " *** INSERT INTO QQ "
DISPLAY " *** VALUES(56) "
DISPLAY " "
EXEC SQL INSERT INTO QQ
VALUES(56) END-EXEC
MOVE SQLCODE TO SQL-COD
DISPLAY " After INSERT SQLCODE = ", SQL-COD
MOVE 0 TO long1
EXEC SQL SELECT *
INTO :long1
FROM QQ END-EXEC
MOVE SQLCODE TO SQL-COD
DISPLAY " long1 = ", long1
EXEC SQL ROLLBACK WORK END-EXEC
MOVE SQLCODE TO SQL-COD
if (long1 = 56) then
DISPLAY " *** pass ***"
EXEC SQL INSERT INTO TESTREPORT
VALUES('0178','pass','PCO') END-EXEC
MOVE SQLCODE TO SQL-COD
else
DISPLAY " dml021.pco *** fail ***"
EXEC SQL INSERT INTO TESTREPORT
VALUES('0178','fail','PCO') END-EXEC
ADD 1 TO errcnt
MOVE SQLCODE TO SQL-COD
END-IF
DISPLAY
"====================================================="
DISPLAY " "
EXEC SQL COMMIT WORK END-EXEC
MOVE SQLCODE TO SQL-COD
******************** END TEST0178 *******************
******************** BEGIN TEST0179 *******************
DISPLAY " TEST0179 "
DISPLAY "reference: X3.135-1989 5.5 & X3.168-1989 9. "
DISPLAY " - - - - - - - - - - - - - - - - - - -"
DISPLAY " *** CREATE TABLE RR (numtest DECIMAL(8)) "
DISPLAY " *** INSERT INTO RR "
DISPLAY " *** VALUES(12345678) "
DISPLAY " "
EXEC SQL INSERT INTO RR
VALUES(12345678) END-EXEC
MOVE SQLCODE TO SQL-COD
DISPLAY " After INSERT SQLCODE = ", SQL-COD
MOVE 0 TO long1
EXEC SQL SELECT *
INTO :long1
FROM RR END-EXEC
MOVE SQLCODE TO SQL-COD
DISPLAY " long1 = ", long1
EXEC SQL ROLLBACK WORK END-EXEC
MOVE SQLCODE TO SQL-COD
if (long1 = 12345678) then
DISPLAY " *** pass ***"
EXEC SQL INSERT INTO TESTREPORT
VALUES('0179','pass','PCO') END-EXEC
MOVE SQLCODE TO SQL-COD
else
DISPLAY " dml021.pco *** fail ***"
EXEC SQL INSERT INTO TESTREPORT
VALUES('0179','fail','PCO') END-EXEC
ADD 1 TO errcnt
MOVE SQLCODE TO SQL-COD
END-IF
DISPLAY
"====================================================="
DISPLAY " "
EXEC SQL COMMIT WORK END-EXEC
MOVE SQLCODE TO SQL-COD
******************** END TEST0179 *******************
**** TESTER MAY CHOOSE TO INSERT CODE FOR errcnt > 0
STOP RUN.
* **** Procedures for PERFORM statements
¤ Dauer der Verarbeitung: 0.32 Sekunden
(vorverarbeitet)
¤
|
Haftungshinweis
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.
|