IDENTIFICATION DIVISION .
PROGRAM-ID . DML068.
ENVIRONMENT DIVISION .
CONFIGURATION SECTION .
SOURCE-COMPUTER . xyz.
OBJECT-COMPUTER . xyz.
DATA DIVISION .
WORKING-STORAGE SECTION .
* Standard COBOL (file "DML068.SCO") calling SQL
* procedures in file "DML068.MCO".
****************************************************************
*
* COMMENT SECTION
*
* DATE 1990/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.
*
* DML068.SCO
* WRITTEN BY: SUN DAJUN
*
* THIS ROUTINE TESTS THE COLLATING SEQUENCE OF THE
* 95-CHARACTER GRAPHIC SUBSET OF ASCII SPECIFIED IN
* FIPS PUB 1-2.
*
* REFERENCES
*
* FIPS PUB 1-2 page 9
* Code for Information Interchange showing
* 95-character graphic subset.
*
****************************************************************
* EXEC SQL BEGIN DECLARE SECTION END-EXEC
01 MID1 PIC X(4 ).
01 MID PIC X(4 ).
* EXEC SQL END DECLARE SECTION END-EXEC
01 uid PIC X(18 ).
01 uidx PIC X(18 ).
01 ascflg PIC S9(9 ) DISPLAY SIGN LEADING SEPARATE .
01 flag PIC S9(9 ) DISPLAY SIGN LEADING SEPARATE .
01 cnt PIC S9(9 ) DISPLAY SIGN LEADING SEPARATE .
01 temp PIC S9(9 ) DISPLAY SIGN LEADING SEPARATE .
01 indexx PIC S9(9 ) DISPLAY SIGN LEADING SEPARATE .
01 SQLCODE PIC S9(9 ) COMP .
01 errcnt PIC S9(4 ) DISPLAY SIGN LEADING SEPARATE .
01 ASCIIX-TABLE.
05 ASCIIX PIC X(4 ) OCCURS 39 TIMES.
01 TXTBUF-TABLE.
05 TXTBUF PIC X(4 ) OCCURS 39 TIMES.
01 SQL-COD PIC S9(9 ) DISPLAY SIGN LEADING SEPARATE .
01 QUOTE-VALUE.
05 FILLER PIC X VALUE QUOTE .
05 FILLER PIC XXX VALUE "dqt" .
01 XXXX.
05 X1 PIC X.
05 FILLER PIC XXX.
01 YYYY.
05 Y1 PIC X.
05 FILLER PIC XXX.
* 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
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 " "
STOP RUN
END-IF
MOVE 0 TO errcnt
DISPLAY
"SQL Test Suite, V6.0, Module COBOL, dml068.sco"
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 TEST0389 *******************
*This program tests if the collating sequence for the
*programming language and SQL are consistent.
DISPLAY " OPTIONAL TEST0389 "
DISPLAY " Sorting Consistency "
DISPLAY " SQL with Integrity Enhancement section 8.3"
DISPLAY " - - - - - - - - - - - - - - - - - - - - - "
DISPLAY " Check if the programming language sorting result"
DISPLAY " is consistent with SQL sorting result!"
DISPLAY " "
MOVE "@ at" TO TXTBUF(1 )
MOVE "`-qt" TO TXTBUF(2 )
MOVE "!exc" TO TXTBUF(3 )
MOVE QUOTE-VALUE TO TXTBUF(4 )
MOVE "#pou" TO TXTBUF(5 )
MOVE "$dol" TO TXTBUF(6 )
MOVE "%pct" TO TXTBUF(7 )
MOVE "&" TO TXTBUF(8 )
MOVE "'+qt" TO TXTBUF(9 )
MOVE "(lpr" TO TXTBUF(10 )
MOVE ")rpr" TO TXTBUF(11 )
MOVE "*ast" TO TXTBUF(12 )
MOVE "aaaa" TO TXTBUF(13 )
MOVE ":col" TO TXTBUF(14 )
MOVE "+plu" TO TXTBUF(15 )
MOVE ";sem" TO TXTBUF(16 )
MOVE "[lbk" TO TXTBUF(17 )
MOVE "{lbc" TO TXTBUF(18 )
MOVE ",com" TO TXTBUF(19 )
MOVE "< lt" TO TXTBUF(20 )
MOVE "/ sl" TO TXTBUF(21 )
MOVE "|dvt" TO TXTBUF(22 )
MOVE "-hyp" TO TXTBUF(23 )
MOVE "=equ" TO TXTBUF(24 )
MOVE "]rbk" TO TXTBUF(25 )
MOVE "}rbc" TO TXTBUF(26 )
MOVE ".per" TO TXTBUF(27 )
MOVE "> gt" TO TXTBUF(28 )
MOVE "^hat" TO TXTBUF(29 )
MOVE "~til" TO TXTBUF(30 )
MOVE "\bsl" TO TXTBUF(31 )
MOVE "?que" TO TXTBUF(32 )
MOVE "_und" TO TXTBUF(33 )
MOVE "AAAA" TO TXTBUF(34 )
MOVE "0000" TO TXTBUF(35 )
MOVE "9999" TO TXTBUF(36 )
MOVE "zzzz" TO TXTBUF(37 )
MOVE " sp" TO TXTBUF(38 )
MOVE "ZZZZ" TO TXTBUF(39 )
MOVE "@ at" TO ASCIIX(25 )
MOVE "`-qt" TO ASCIIX(33 )
MOVE "!exc" TO ASCIIX(2 )
MOVE QUOTE-VALUE TO ASCIIX(3 )
MOVE "#pou" TO ASCIIX(4 )
MOVE "$dol" TO ASCIIX(5 )
MOVE "%pct" TO ASCIIX(6 )
MOVE "&" TO ASCIIX(7 )
MOVE "'+qt" TO ASCIIX(8 )
MOVE "(lpr" TO ASCIIX(9 )
MOVE ")rpr" TO ASCIIX(10 )
MOVE "*ast" TO ASCIIX(11 )
MOVE "aaaa" TO ASCIIX(34 )
MOVE ":col" TO ASCIIX(19 )
MOVE "+plu" TO ASCIIX(12 )
MOVE ";sem" TO ASCIIX(20 )
MOVE "[lbk" TO ASCIIX(28 )
MOVE "{lbc" TO ASCIIX(36 )
MOVE ",com" TO ASCIIX(13 )
MOVE "< lt" TO ASCIIX(21 )
MOVE "/ sl" TO ASCIIX(16 )
MOVE "|dvt" TO ASCIIX(37 )
MOVE "-hyp" TO ASCIIX(14 )
MOVE "=equ" TO ASCIIX(22 )
MOVE "]rbk" TO ASCIIX(30 )
MOVE "}rbc" TO ASCIIX(38 )
MOVE ".per" TO ASCIIX(15 )
MOVE "> gt" TO ASCIIX(23 )
MOVE "^hat" TO ASCIIX(31 )
MOVE "~til" TO ASCIIX(39 )
MOVE "\bsl" TO ASCIIX(29 )
MOVE "?que" TO ASCIIX(24 )
MOVE "_und" TO ASCIIX(32 )
MOVE "AAAA" TO ASCIIX(26 )
MOVE "0000" TO ASCIIX(17 )
MOVE "9999" TO ASCIIX(18 )
MOVE "zzzz" TO ASCIIX(35 )
MOVE " sp" TO ASCIIX(1 )
MOVE "ZZZZ" TO ASCIIX(27 )
* EXEC SQL DELETE FROM AA END-EXEC
CALL "SUB1" USING SQLCODE
MOVE SQLCODE TO SQL-COD
MOVE 1 TO ascflg
MOVE 1 TO flag
MOVE 1 TO cnt
PERFORM P50 UNTIL cnt > 39
*Bubble sorting the TXTBUF
MOVE 1 TO indexx
PERFORM P49 UNTIL indexx > 39
* EXEC SQL DECLARE ROCK CURSOR FOR SELECT * FROM AA
* ORDER BY CHARTEST END-EXEC
* EXEC SQL OPEN ROCK END-EXEC
CALL "SUB2" USING SQLCODE
MOVE SQLCODE TO SQL-COD
MOVE 1 TO cnt
PERFORM P47 UNTIL cnt > 39
* EXEC SQL CLOSE ROCK END-EXEC
CALL "SUB3" USING SQLCODE
MOVE SQLCODE TO SQL-COD
* EXEC SQL ROLLBACK WORK END-EXEC
CALL "SUB4" USING SQLCODE
MOVE SQLCODE TO SQL-COD
DISPLAY "The correct result is :"
DISPLAY " flag = 1"
DISPLAY "Your answer is :"
DISPLAY " flag = " , flag
if (ascflg = 1 ) then
DISPLAY "******************************************"
DISPLAY "* ASCII sequence verified *"
DISPLAY "******************************************"
else
DISPLAY "******************************************"
DISPLAY "* Sequence is not ASCII *"
DISPLAY "******************************************"
END-IF
if (flag = 1 ) then
* EXEC SQL INSERT INTO TESTREPORT
* VALUES('0389','pass','MCO') END-EXEC
CALL "SUB5" USING SQLCODE
MOVE SQLCODE TO SQL-COD
DISPLAY " *** pass *** "
else
* EXEC SQL INSERT INTO TESTREPORT
* VALUES('0389','fail','MCO') END-EXEC
ADD 1 TO errcnt
CALL "SUB6" USING SQLCODE
MOVE SQLCODE TO SQL-COD
DISPLAY " dml068.sco *** fail *** "
END-IF
DISPLAY "================================================"
DISPLAY " "
* EXEC SQL COMMIT WORK END-EXEC
CALL "SUB7" USING SQLCODE
MOVE SQLCODE TO SQL-COD
****************** END TEST0389 ***********************
**** TESTER MAY CHOOSE TO INSERT CODE FOR errcnt > 0
STOP RUN .
* **** Procedures for PERFORM statements
P50.
MOVE TXTBUF(cnt) TO MID
* EXEC SQL INSERT INTO AA
* VALUES (:MID) END-EXEC
CALL "SUB8" USING SQLCODE MID
MOVE SQLCODE TO SQL-COD
ADD 1 TO cnt
.
P49.
COMPUTE temp = 39 - indexx
MOVE 1 TO cnt
PERFORM P48 UNTIL cnt > temp
ADD 1 TO indexx
.
P48.
if (TXTBUF(cnt) > TXTBUF(cnt + 1 )) then
MOVE TXTBUF(cnt) TO MID
MOVE TXTBUF(cnt + 1 ) TO TXTBUF(cnt)
MOVE MID TO TXTBUF(cnt + 1 )
END-IF
MOVE TXTBUF(cnt) to XXXX
MOVE TXTBUF(cnt + 1 ) to YYYY
IF X1 = Y1
DISPLAY "Duplicate values for " XXXX " " YYYY
MOVE 0 TO flag
END-IF
ADD 1 TO cnt
.
P47.
MOVE TXTBUF(cnt) TO MID1
* EXEC SQL FETCH ROCK INTO :MID END-EXEC
CALL "SUB9" USING SQLCODE MID
MOVE SQLCODE TO SQL-COD
if (MID1 NOT = MID) then
MOVE 0 TO flag
DISPLAY "TESTING" , cnt
END-IF
DISPLAY " " , cnt " COBOL: " , MID1 " SQL: " , MID
if (MID NOT = ASCIIX(cnt)) then
MOVE 0 TO ascflg
END-IF
ADD 1 TO cnt
.
Messung V0.5 in Prozent C=84 H=100 G=92
¤ Dauer der Verarbeitung: 0.11 Sekunden
(vorverarbeitet am 2026-06-08)
¤
*© Formatika GbR, Deutschland