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
quality 99%
¤ Dauer der Verarbeitung: 0.17 Sekunden
(vorverarbeitet)
¤
*© Formatika GbR, Deutschland