**************************************************************** * * COMMENT SECTION * * DATE 1994/6/20 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. * * DML124.PCO * WRITTEN BY: David W. Flater * TRANSLATED AUTOMATICALLY FROM EMBEDDED C BY CHRIS SCHANZLE * Bug fixes & stronger pass criteria by Joan Sullivan 2/27/95 * Corrected in accordance with X3H2-95-105 5/9/95 * * This routine tests SQL descriptors, which is a feature of * Dynamic SQL. * * REFERENCES * FIPS PUB 127-2 14.1 Transitional SQL * ANSI SQL-1992 * ****************************************************************
EXECSQL BEGIN DECLARE SECTIONEND-EXEC
01 SQLCODE PIC S9(9) COMP.
01 SQLSTATE PIC X(5).
01 uid PIC X(18).
01 uidx PIC X(18).
01 int1 PIC S9(9) DISPLAYSIGNLEADINGSEPARATE.
01 int2 PIC S9(9) DISPLAYSIGNLEADINGSEPARATE.
01 int3 PIC S9(9) DISPLAYSIGNLEADINGSEPARATE.
01 int4 PIC S9(9) DISPLAYSIGNLEADINGSEPARATE.
01 int5 PIC S9(9) DISPLAYSIGNLEADINGSEPARATE.
01 int6 PIC S9(9) DISPLAYSIGNLEADINGSEPARATE.
01 int7 PIC S9(9) DISPLAYSIGNLEADINGSEPARATE.
01 flt1 PIC S9(4)V9(4) DISPLAYSIGNLEADINGSEPARATE. * OK to change the precision of smint1 to match SMALLINT
01 smint1 PIC S9(2) BINARY. * OK to change the precision of bin2 to match SMALLINT
01 bin2 PIC S9(2) BINARY. * OK to change the precision of bin9 to match INTEGER
01 bin9 PIC S9(9) BINARY.
01 dstmt PIC X(50).
01 longst PIC X(240).
01 cname PIC X(20).
01 indic1 PIC S9(4) DISPLAYSIGNLEADINGSEPARATE.
01 c2 PIC X(2).
01 c4 PIC X(4).
01 c6 PIC X(6).
01 c7 PIC X(7). EXECSQLEND DECLARE SECTIONEND-EXEC
01 FLT-1 PIC -(5).9999.
01 BIN-1 PIC -(5).
01 intprc PIC S9(9) DISPLAYSIGNLEADINGSEPARATE.
01 relprc PIC S9(9) DISPLAYSIGNLEADINGSEPARATE.
01 norm1 PIC S9(9) DISPLAYSIGNLEADINGSEPARATE.
01 norm2 PIC S9(9) DISPLAYSIGNLEADINGSEPARATE.
01 ALPNUM-TABLE VALUEIS "01234ABCDEFGH56789IJKLMNOPQRSTUVWXYZ".
05 ALPNUM PIC X OCCURS 36 TIMES.
01 NORMSQ.
05 NORMSQX PIC X OCCURS 5 TIMES.
01 errcnt PIC S9(9) DISPLAYSIGNLEADINGSEPARATE. *date_time declaration
01 TO-DAY PIC 9(6).
01 THE-TIME PIC 9(8).
01 flag PIC S9(9) DISPLAYSIGNLEADINGSEPARATE.
01 SQL-COD PIC S9(9) DISPLAYSIGNLEADINGSEPARATE.
PROCEDUREDIVISION.
P0.
MOVE"HU "TO uid CALL"AUTHID"USING uid MOVE"not logged in, not"TO uidx EXECSQLSELECT USER INTO :uidx FROM HU.ECCO END-EXEC MOVE SQLCODE TO SQL-COD EXECSQL ROLLBACK WORK END-EXEC MOVE SQLCODE TO SQL-COD if (uid NOT = uidx) then DISPLAY"ERROR: User ", uid " expected. User ", uidx "
- " connected" STOPRUN END-IF MOVE 0 TO errcnt
DISPLAY "SQL Test Suite, V6.0, Embedded COBOL, dml124.pco" DISPLAY "59-byte ID" DISPLAY"TEd Version #" *date_time print ACCEPT TO-DAY FROMDATE ACCEPT THE-TIME FROMTIME DISPLAY"Date run YYMMDD: " TO-DAY " at hhmmssff: " THE-TIME
*This test was converted from a FLATER test to a HU test. We *need CONCATBUF. DISPLAY"CREATE TABLE CONCATBUF (ZZ CHAR(240));" EXECSQL CREATE TABLE CONCATBUF (ZZ CHAR(240)) END-EXEC MOVE SQLCODE TO SQL-COD DISPLAY"COMMIT WORK;" EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD
******************** BEGIN TEST0653 ******************* MOVE 1 TO flag
DISPLAY"COMMIT WORK;" EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY" "
DISPLAY"ALLOCATE DESCRIPTOR 'D12411' WITH MAX 8;" EXECSQL ALLOCATE DESCRIPTOR 'D12411'WITH MAX 8 END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK if (SQLSTATE = "07009") then DISPLAY"Received SQLSTATE 07009!" DISPLAY"This test must be rewritten by NIST (in the
- " event of" DISPLAY"a validation) to accomodate
- " implementation-defined" DISPLAY"limit on ." END-IF DISPLAY" "
DISPLAY"dstmt=""SELECT * FROM HU.STAFF""" MOVE"SELECT * FROM HU.STAFF
- " "TO dstmt
DISPLAY"PREPARE S12411 FROM :dstmt;" EXECSQL PREPARE S12411 FROM :dstmt END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY" "
COMPUTE int1 = -1 DISPLAY"GET DESCRIPTOR 'D12411' :int1 = COUNT;" EXECSQL GET DESCRIPTOR 'D12411' :int1 = COUNTEND-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY"int1 should be 4; its value is ", int1 if (int1 NOT = 4) then MOVE 0 TO flag END-IF
*CHARACTER_SET_* and COLLATION_* are orphaned features
DISPLAY"GET DESCRIPTOR 'D12411' VALUE 1" DISPLAY" :int1 = TYPE, :int2 = NULLABLE, :int3 =
- " UNNAMED," DISPLAY" :cname = NAME, :int4 = LENGTH, :int5 =
- " OCTET_LENGTH;" EXECSQL GET DESCRIPTOR 'D12411'VALUE 1
:int1 = TYPE, :int2 = NULLABLE, :int3 = UNNAMED,
:cname = NAME, :int4 = LENGTH, :int5 = OCTET_LENGTH END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY"int1 should be 1 (CHARACTER); its value is ", int1 DISPLAY"int2 should be 0 (NOT NULL); its value is ", int2 DISPLAY"int3 should be 0 (named); its value is ", int3 DISPLAY"cname should be 'EMPNUM '; its value
- " is '", cname "'" DISPLAY"int4 should be 3; its value is ", int4 DISPLAY"int5 should be > 2; its value is ", int5 if (int1 NOT = 1 OR int2 NOT = 0 OR int3 NOT = 0) then MOVE 0 TO flag END-IF if (int4 NOT = 3 OR int5 NOT > 2) then MOVE 0 TO flag END-IF if (cname NOT = "EMPNUM ") then MOVE 0 TO flag END-IF
DISPLAY"GET DESCRIPTOR 'D12411' VALUE 2" DISPLAY" :bin9 = TYPE, :int2 = NULLABLE, :bin2 =
- " UNNAMED," DISPLAY" :cname = NAME, :int4 = LENGTH, :int5 =
- " OCTET_LENGTH;" EXECSQL GET DESCRIPTOR 'D12411'VALUE 2
:bin9 = TYPE, :int2 = NULLABLE, :bin2 = UNNAMED,
:cname = NAME, :int4 = LENGTH, :int5 = OCTET_LENGTH END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK MOVE bin9 TO BIN-1 DISPLAY"bin9 should be 1 (CHARACTER); its value is " BIN-1 DISPLAY"int2 should be 1 (NULLABLE); its value is ", int2 MOVE bin2 TO BIN-1 DISPLAY"bin2 should be 0 (named); its value is ", BIN-1 DISPLAY"cname should be 'EMPNAME '; its value
- " is '", cname "'" DISPLAY"int4 should be 20; its value is ", int4 DISPLAY"int5 should be > 14; its value is ", int5 if (bin9 NOT = 1 OR int2 NOT = 1 OR bin2 NOT = 0) then MOVE 0 TO flag END-IF if (int4 NOT = 20 OR int5 NOT > 14) then MOVE 0 TO flag END-IF if (cname NOT = "EMPNAME ") then MOVE 0 TO flag END-IF
DISPLAY"GET DESCRIPTOR 'D12411' VALUE 3" DISPLAY" :bin2 = TYPE, :int2 = NULLABLE, :bin9 =
- " UNNAMED," DISPLAY" :cname = NAME, :int4 = PRECISION, :int5 =
- " SCALE;" EXECSQL GET DESCRIPTOR 'D12411'VALUE 3
:bin2 = TYPE, :int2 = NULLABLE, :bin9 = UNNAMED,
:cname = NAME, :int4 = PRECISION, :int5 = SCALE END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK MOVE bin2 TO BIN-1 DISPLAY"bin2 should be 3 (DECIMAL); its value is ", BIN-1 DISPLAY"int2 should be 1 (NULLABLE); its value is ", int2 MOVE bin9 TO BIN-1 DISPLAY"bin9 should be 0 (named); its value is ", BIN-1 DISPLAY"cname should be 'GRADE '; its value
- " is '", cname "'" DISPLAY"int4 should be >= 4; its value is ", int4 DISPLAY"int5 should be 0; its value is ", int5 if (bin2 NOT = 3 OR int2 NOT = 1 OR bin9 NOT = 0) then MOVE 0 TO flag END-IF if (int4 < 4 OR int5 NOT = 0) then MOVE 0 TO flag END-IF if (cname NOT = "GRADE ") then MOVE 0 TO flag END-IF
DISPLAY"GET DESCRIPTOR 'D12411' VALUE 4" DISPLAY" :int1 = TYPE, :int2 = NULLABLE, :bin2 =
- " UNNAMED," DISPLAY" :cname = NAME, :bin9 = LENGTH, :int5 =
- " OCTET_LENGTH;" EXECSQL GET DESCRIPTOR 'D12411'VALUE 4
:int1 = TYPE, :int2 = NULLABLE, :bin2 = UNNAMED,
:cname = NAME, :bin9 = LENGTH, :int5 = OCTET_LENGTH END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY"int1 should be 1 (CHARACTER); its value is ", int1 DISPLAY"int2 should be 1 (NULLABLE); its value is ", int2 MOVE bin2 TO BIN-1 DISPLAY"bin2 should be 0 (named); its value is ", BIN-1 DISPLAY"cname should be 'CITY '; its value
- " is '", cname "'" MOVE bin9 TO BIN-1 DISPLAY"bin9 should be 15; its value is ", BIN-1 DISPLAY"int5 should be > 11; its value is ", int5 if (int1 NOT = 1 OR int2 NOT = 1 OR bin2 NOT = 0) then MOVE 0 TO flag END-IF if (bin9 NOT = 15 OR int5 NOT > 11) then MOVE 0 TO flag END-IF if (cname NOT = "CITY ") then MOVE 0 TO flag END-IF
EXECSQLDELETEFROM CONCATBUF END-EXEC MOVE SQLCODE TO SQL-COD EXECSQLINSERTINTO CONCATBUF VALUES ( 'SELECT * FROM CACHESTAT, COMBINATIONS' || ' WHERE HIT_RATIO < .97'
) END-EXEC MOVE SQLCODE TO SQL-COD EXECSQLSELECT ZZ INTO :longst FROM CONCATBUF END-EXEC MOVE SQLCODE TO SQL-COD
DISPLAY"longst=""", longst """"
DISPLAY"PREPARE S12412 FROM :longst;" EXECSQL PREPARE S12412 FROM :longst END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY" "
COMPUTE int1 = -1 DISPLAY"GET DESCRIPTOR 'D12411' :int1 = COUNT;" EXECSQL GET DESCRIPTOR 'D12411' :int1 = COUNTEND-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY"int1 should be 8; its value is ", int1 if (int1 NOT = 8) then MOVE 0 TO flag END-IF
DISPLAY"GET DESCRIPTOR 'D12411' VALUE 1" DISPLAY" :int1 = TYPE, :int2 = NULLABLE, :int3 =
- " UNNAMED," DISPLAY" :cname = NAME, :int4 = PRECISION;" EXECSQL GET DESCRIPTOR 'D12411'VALUE 1
:int1 = TYPE, :int2 = NULLABLE, :int3 = UNNAMED,
:cname = NAME, :int4 = PRECISION END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY"int1 should be 6 (FLOAT); its value is ", int1 DISPLAY"int2 should be 0 (NOT NULL); its value is ", int2 DISPLAY"int3 should be 0 (named); its value is ", int3 DISPLAY"cname should be 'HIT_RATIO '; its value
- " is '", cname "'" DISPLAY"int4 should be > 0; its value is ", int4 if (int1 NOT = 6 OR int2 NOT = 0 OR int3 NOT = 0) then MOVE 0 TO flag END-IF if (int4 NOT > 0) then MOVE 0 TO flag END-IF if (cname NOT = "HIT_RATIO ") then MOVE 0 TO flag END-IF
DISPLAY"GET DESCRIPTOR 'D12411' VALUE 2" DISPLAY" :int1 = TYPE, :int2 = NULLABLE, :int3 =
- " UNNAMED," DISPLAY" :cname = NAME, :int4 = PRECISION;" EXECSQL GET DESCRIPTOR 'D12411'VALUE 2
:int1 = TYPE, :int2 = NULLABLE, :int3 = UNNAMED,
:cname = NAME, :int4 = PRECISION END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY"int1 should be 6 (FLOAT); its value is ", int1 DISPLAY"int2 should be 1 (NULLABLE); its value is ", int2 DISPLAY"int3 should be 0 (named); its value is ", int3 DISPLAY"cname should be 'FRAGMENTATION_PCT '; its value
- " is '", cname "'" DISPLAY"int4 should be > 0; its value is ", int4 if (int1 NOT = 6 OR int2 NOT = 1 OR int3 NOT = 0) then MOVE 0 TO flag END-IF if (int4 < 1) then MOVE 0 TO flag END-IF if (cname NOT = "FRAGMENTATION_PCT ") then MOVE 0 TO flag END-IF
DISPLAY"GET DESCRIPTOR 'D12411' VALUE 3" DISPLAY" :int1 = TYPE, :int2 = NULLABLE, :int3 =
- " UNNAMED," DISPLAY" :cname = NAME, :int4 = PRECISION, :int5 =
- " SCALE;" EXECSQL GET DESCRIPTOR 'D12411'VALUE 3
:int1 = TYPE, :int2 = NULLABLE, :int3 = UNNAMED,
:cname = NAME, :int4 = PRECISION, :int5 = SCALE END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY"int1 should be 4 (INTEGER); its value is ", int1 DISPLAY"int2 should be 1 (NULLABLE); its value is ", int2 DISPLAY"int3 should be 0 (named); its value is ", int3 DISPLAY"cname should be 'INTTEST '; its value
- " is '", cname "'" DISPLAY"int4 should be > 0; its value is ", int4 DISPLAY"int5 should be 0; its value is ", int5 if (int1 NOT = 4 OR int2 NOT = 1 OR int3 NOT = 0) then MOVE 0 TO flag END-IF if (int4 < 1 OR int5 NOT = 0) then MOVE 0 TO flag END-IF if (cname NOT = "INTTEST ") then MOVE 0 TO flag END-IF MOVE int4 TO intprc
DISPLAY"GET DESCRIPTOR 'D12411' VALUE 4" DISPLAY" :int1 = TYPE, :int2 = NULLABLE, :int3 =
- " UNNAMED," DISPLAY" :cname = NAME, :int4 = PRECISION;" EXECSQL GET DESCRIPTOR 'D12411'VALUE 4
:int1 = TYPE, :int2 = NULLABLE, :int3 = UNNAMED,
:cname = NAME, :int4 = PRECISION END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY"int1 should be 7 (REAL); its value is ", int1 DISPLAY"int2 should be 1 (NULLABLE); its value is ", int2 DISPLAY"int3 should be 0 (named); its value is ", int3 DISPLAY"cname should be 'REALTEST '; its value
- " is '", cname "'" DISPLAY"int4 should be > 0; its value is ", int4 if (int1 NOT = 7 OR int2 NOT = 1 OR int3 NOT = 0) then MOVE 0 TO flag END-IF if (int4 < 1) then MOVE 0 TO flag END-IF if (cname NOT = "REALTEST ") then MOVE 0 TO flag END-IF MOVE int4 TO relprc
DISPLAY"GET DESCRIPTOR 'D12411' VALUE :int6" DISPLAY" :int1 = TYPE, :int2 = NULLABLE, :int3 =
- " UNNAMED," DISPLAY" :cname = NAME, :int4 = PRECISION, :int5 =
- " SCALE;" EXECSQL GET DESCRIPTOR 'D12411'VALUE :int6
:int1 = TYPE, :int2 = NULLABLE, :int3 = UNNAMED,
:cname = NAME, :int4 = PRECISION, :int5 = SCALE END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY"int1 should be 5 (SMALLINT); its value is ", int1 DISPLAY"int2 should be 1 (NULLABLE); its value is ", int2 DISPLAY"int3 should be 0 (named); its value is ", int3 DISPLAY"cname should be 'SMALLTEST '; its value
- " is '", cname "'" DISPLAY"int4 should be 0 < int4 <= ", intprc "; its value
- " is ", int4 DISPLAY"int5 should be 0; its value is ", int5 if (int1 NOT = 4 OR int2 NOT = 1 OR int3 NOT = 0) then MOVE 0 TO flag END-IF if (int4 < 1 OR int4 > intprc OR int5 NOT = 0) then MOVE 0 TO flag END-IF if (cname NOT = "SMALLTEST ") then MOVE 0 TO flag END-IF
DISPLAY"GET DESCRIPTOR 'D12411' VALUE 6" DISPLAY" :int1 = TYPE, :int2 = NULLABLE, :int3 =
- " UNNAMED," DISPLAY" :cname = NAME, :int4 = PRECISION;" EXECSQL GET DESCRIPTOR 'D12411'VALUE 6
:int1 = TYPE, :int2 = NULLABLE, :int3 = UNNAMED,
:cname = NAME, :int4 = PRECISION END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY"int1 should be 8 (DOUBLE); its value is ", int1 DISPLAY"int2 should be 1 (NULLABLE); its value is ", int2 DISPLAY"int3 should be 0 (named); its value is ", int3 DISPLAY"cname should be 'DOUBLETEST '; its value
- " is '", cname "'" DISPLAY"int4 should be > ", relprc "; its value is ", int4 if (int1 NOT = 8 OR int2 NOT = 1 OR int3 NOT = 0) then MOVE 0 TO flag END-IF if (int4 < 1 OR int4 NOT > relprc) then MOVE 0 TO flag END-IF if (cname NOT = "DOUBLETEST ") then MOVE 0 TO flag END-IF
DISPLAY"GET DESCRIPTOR 'D12411' VALUE 7" DISPLAY" :int1 = TYPE, :int2 = NULLABLE, :int3 =
- " UNNAMED," DISPLAY" :cname = NAME, :int4 = PRECISION, :int5 =
- " SCALE;" EXECSQL GET DESCRIPTOR 'D12411'VALUE 7
:int1 = TYPE, :int2 = NULLABLE, :int3 = UNNAMED,
:cname = NAME, :int4 = PRECISION, :int5 = SCALE END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY"int1 should be 2 (NUMERIC); its value is ", int1 DISPLAY"int2 should be 1 (NULLABLE); its value is ", int2 DISPLAY"int3 should be 0 (named); its value is ", int3 DISPLAY"cname should be 'NUMTEST '; its value
- " is '", cname "'" DISPLAY"int4 should be 13; its value is ", int4 DISPLAY"int5 should be 6; its value is ", int5 if (int1 NOT = 2 OR int2 NOT = 1 OR int3 NOT = 0) then MOVE 0 TO flag END-IF if (int4 NOT = 13 OR int5 NOT = 6) then MOVE 0 TO flag END-IF if (cname NOT = "NUMTEST ") then MOVE 0 TO flag END-IF
DISPLAY"GET DESCRIPTOR 'D12411' VALUE 8" DISPLAY" :int1 = TYPE, :int2 = NULLABLE, :int3 =
- " UNNAMED," DISPLAY" :cname = NAME, :int4 = PRECISION, :int5 =
- " SCALE;" EXECSQL GET DESCRIPTOR 'D12411'VALUE 8
:int1 = TYPE, :int2 = NULLABLE, :int3 = UNNAMED,
:cname = NAME, :int4 = PRECISION, :int5 = SCALE END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY"int1 should be 3 (DECIMAL); its value is ", int1 DISPLAY"int2 should be 1 (NULLABLE); its value is ", int2 DISPLAY"int3 should be 0 (named); its value is ", int3 DISPLAY"cname should be 'DECTEST '; its value
- " is '", cname "'" DISPLAY"int4 should be >= 13; its value is ", int4 DISPLAY"int5 should be 6; its value is ", int5 if (int1 NOT = 3 OR int2 NOT = 1 OR int3 NOT = 0) then MOVE 0 TO flag END-IF if (int4 < 13 OR int5 NOT = 6) then MOVE 0 TO flag END-IF if (cname NOT = "DECTEST ") then MOVE 0 TO flag END-IF
*Unnamed columns
DISPLAY"dstmt=""SELECT USER, COUNT(*) FROM HU.ECCO""" MOVE"SELECT USER, COUNT(*) FROM HU.ECCO
- " "TO dstmt
DISPLAY"PREPARE S12413 FROM :dstmt;" EXECSQL PREPARE S12413 FROM :dstmt END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY" "
COMPUTE int1 = -1 DISPLAY"GET DESCRIPTOR 'D12411' :int1 = COUNT;" EXECSQL GET DESCRIPTOR 'D12411' :int1 = COUNTEND-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY"int1 should be 2; its value is ", int1 if (int1 NOT = 2) then MOVE 0 TO flag END-IF
DISPLAY"GET DESCRIPTOR 'D12411' VALUE 1" DISPLAY" :int1 = TYPE, :int2 = NULLABLE, :int3 =
- " UNNAMED," DISPLAY" :cname = NAME, :int4 = LENGTH, :int5 =
- " OCTET_LENGTH;" EXECSQL GET DESCRIPTOR 'D12411'VALUE 1
:int1 = TYPE, :int2 = NULLABLE, :int3 = UNNAMED,
:cname = NAME, :int4 = LENGTH, :int5 = OCTET_LENGTH END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY"int1 should be 1 (CHARACTER); its value is ", int1 DISPLAY"int2 should be 0 (NOT NULL); its value is ", int2 DISPLAY"int3 should be 1 (unnamed); its value is ", int3 DISPLAY"cname is '", cname "'" DISPLAY"int4 should be > 7; its value is ", int4 DISPLAY"int5 should be > 4; its value is ", int5 if (int1 NOT = 1 OR int2 NOT = 0 OR int3 NOT = 1) then MOVE 0 TO flag END-IF if (int4 NOT > 7 OR int5 NOT > 4) then DISPLAY"The correct values for int4 and int5 are
- " implementation-" DISPLAY"defined, but must be justified since they are
- " unexpectedly low." MOVE 0 TO flag END-IF
DISPLAY"GET DESCRIPTOR 'D12411' VALUE 2" DISPLAY" :int1 = TYPE, :int2 = NULLABLE, :int3 =
- " UNNAMED," DISPLAY" :cname = NAME, :int4 = PRECISION, :int5 =
- " SCALE;" EXECSQL GET DESCRIPTOR 'D12411'VALUE 2
:int1 = TYPE, :int2 = NULLABLE, :int3 = UNNAMED,
:cname = NAME, :int4 = PRECISION, :int5 = SCALE END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY"int1 should be 2 <= int1 <= 5; its value is ",
int1 DISPLAY"int2 should be 0 (NOT NULL); its value is ", int2 DISPLAY"int3 should be 1 (unnamed); its value is ", int3 DISPLAY"cname is '", cname "'" DISPLAY"int4 should be > 0; its value is ", int4 DISPLAY"int5 should be 0; its value is ", int5 if (int1 < 2 OR int1 > 5 OR int2 NOT = 0) then MOVE 0 TO flag END-IF if (int3 NOT = 1 OR int4 < 1 OR int5 NOT = 0) then MOVE 0 TO flag END-IF
*X3H2-95-103: Question marks are possibly nullable *17.9 GR.3.e.iii Unnamed columns
EXECSQLDELETEFROM CONCATBUF END-EXEC MOVE SQLCODE TO SQL-COD EXECSQLINSERTINTO CONCATBUF VALUES ( 'SELECT HIT_RATIO AS HR, FRAGMENTATION_PCT * ?' || ' FROM CACHESTAT'
) END-EXEC MOVE SQLCODE TO SQL-COD EXECSQLSELECT ZZ INTO :longst FROM CONCATBUF END-EXEC MOVE SQLCODE TO SQL-COD
DISPLAY"longst=""", longst """"
DISPLAY"PREPARE S12414 FROM :longst;" EXECSQL PREPARE S12414 FROM :longst END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY" "
COMPUTE int1 = -1 COMPUTE int2 = -1 MOVE"xxxxxxxxxxxxxxxxxxxx"TO cname DISPLAY"GET DESCRIPTOR 'D12411' VALUE 1" DISPLAY" :int1 = NULLABLE, :int2 = UNNAMED, :cname =
- " NAME;" EXECSQL GET DESCRIPTOR 'D12411'VALUE 1
:int1 = NULLABLE, :int2 = UNNAMED, :cname = NAME END-EXEC MOVE SQLCODE TO SQL-COD DISPLAY"int1 should be 0 (NOT NULL); its value is ", int1 DISPLAY"int2 should be 0 (named); its value is ", int2 DISPLAY"cname should be 'HR '; its value
- " is '", cname "'" if (int1 NOT = 0 OR int2 NOT = 0) then MOVE 0 TO flag END-IF if (cname NOT = "HR ") then MOVE 0 TO flag END-IF
COMPUTE int1 = -1 COMPUTE int2 = -1 DISPLAY"GET DESCRIPTOR 'D12411' VALUE 2" DISPLAY" :int1 = NULLABLE, :int2 = UNNAMED;" EXECSQL GET DESCRIPTOR 'D12411'VALUE 2
:int1 = NULLABLE, :int2 = UNNAMED END-EXEC MOVE SQLCODE TO SQL-COD DISPLAY"int1 should be 1 (NULLABLE); its value is ", int1 DISPLAY"int2 should be 1 (unnamed); its value is ", int2 if (int1 NOT = 1 OR int2 NOT = 1) then MOVE 0 TO flag END-IF
EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD ******************** END TEST0653 ******************** ******************** BEGIN TEST0654 ******************* MOVE 1 TO flag
DISPLAY"ALLOCATE DESCRIPTOR 'D12421' WITH MAX 9;" EXECSQL ALLOCATE DESCRIPTOR 'D12421'WITH MAX 9 END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK if (SQLSTATE = "07009") then DISPLAY"Received SQLSTATE 07009!" DISPLAY"This test must be rewritten by NIST (in the
- " event of" DISPLAY"a validation) to accomodate
- " implementation-defined" DISPLAY"limit on ." END-IF DISPLAY" "
DISPLAY"dstmt=""SELECT * FROM BANKTAB""" MOVE"SELECT * FROM BANKTAB
- " "TO dstmt
DISPLAY"PREPARE S12421 FROM :dstmt;" EXECSQL PREPARE S12421 FROM :dstmt END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY" "
DISPLAY"FETCH C12421 INTO SQL DESCRIPTOR 'D12421';" EXECSQL FETCH C12421 INTOSQL DESCRIPTOR 'D12421'END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY" "
COMPUTE int1 = -1 DISPLAY"GET DESCRIPTOR 'D12421' :int1 = COUNT;" EXECSQL GET DESCRIPTOR 'D12421' :int1 = COUNTEND-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY"int1 should be 8; its value is ", int1 if (int1 NOT = 8) then MOVE 0 TO flag END-IF
COMPUTE int1 = -1 MOVE"xxxxxxxxxxxxxxxxxxxx"TO cname DISPLAY"GET DESCRIPTOR 'D12421' VALUE 1" DISPLAY" :int1 = INDICATOR, :cname = DATA;" EXECSQL GET DESCRIPTOR 'D12421'VALUE 1
:int1 = INDICATOR, :cname = DATAEND-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY"int1 should be 0; its value is ", int1 DISPLAY"cname should be 'Bubba '; its value
- " is '", cname "'" if (int1 NOT = 0 OR cname NOT = "Bubba
- " ") then MOVE 0 TO flag END-IF
COMPUTE int1 = -1 COMPUTE flt1 = -1.0 DISPLAY"GET DESCRIPTOR 'D12421' VALUE 2" DISPLAY" :int1 = INDICATOR, :flt1 = DATA;" EXECSQL GET DESCRIPTOR 'D12421'VALUE 2
:int1 = INDICATOR, :flt1 = DATAEND-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY"int1 should be 0; its value is ", int1 MOVE flt1 TO FLT-1 DISPLAY"flt1 should be 524.07 +-.005; its value is ",
FLT-1 if (int1 NOT = 0 OR flt1 < 524.065 OR flt1 >
524.075) then MOVE 0 TO flag END-IF
COMPUTE int1 = -1 COMPUTE flt1 = -1.0 DISPLAY"GET DESCRIPTOR 'D12421' VALUE 3" DISPLAY" :int1 = INDICATOR, :flt1 = DATA;" EXECSQL GET DESCRIPTOR 'D12421'VALUE 3
:int1 = INDICATOR, :flt1 = DATAEND-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY"int1 should be 0; its value is ", int1 MOVE flt1 TO FLT-1 DISPLAY"flt1 should be 2.42 +-.005; its value is ", FLT-1 if (int1 NOT = 0 OR flt1 < 2.415 OR flt1 > 2.425) then MOVE 0 TO flag END-IF
COMPUTE int1 = -1 COMPUTE int2 = -1 MOVE"xxxxxxxxxxxxxxxxxxxx"TO cname DISPLAY"GET DESCRIPTOR 'D12421' VALUE 4" DISPLAY" :int1 = INDICATOR, :bin9 = DATA;" EXECSQL GET DESCRIPTOR 'D12421'VALUE 4
:int1 = INDICATOR, :bin9 = DATAEND-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY"int1 should be 0; its value is ", int1 MOVE bin9 TO BIN-1 DISPLAY"bin9 should be 13; its value is ", BIN-1 if (int1 NOT = 0 OR bin9 NOT = 13) then MOVE 0 TO flag END-IF
COMPUTE int1 = -1 COMPUTE int2 = -1 MOVE"xxxxxxxxxxxxxxxxxxxx"TO cname DISPLAY"GET DESCRIPTOR 'D12421' VALUE 5" DISPLAY" :int1 = INDICATOR, :bin2 = DATA;" EXECSQL GET DESCRIPTOR 'D12421'VALUE 5
:int1 = INDICATOR, :bin2 = DATAEND-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY"int1 should be 0; its value is ", int1 MOVE bin2 TO BIN-1 DISPLAY"bin2 should be 1; its value is ", BIN-1 if (int1 NOT = 0 OR bin2 NOT = 1) then MOVE 0 TO flag END-IF
COMPUTE int1 = -1 COMPUTE flt1 = -1.0 DISPLAY"GET DESCRIPTOR 'D12421' VALUE 6" DISPLAY" :int1 = INDICATOR, :flt1 = DATA;" EXECSQL GET DESCRIPTOR 'D12421'VALUE 6
:int1 = INDICATOR, :flt1 = DATAEND-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY"int1 should be 0; its value is ", int1 MOVE flt1 TO FLT-1 DISPLAY"flt1 should be 3.0 +-.05; its value is ", FLT-1 if (int1 NOT = 0 OR flt1 < 2.95 OR flt1 > 3.05) then MOVE 0 TO flag END-IF
COMPUTE int1 = -1 COMPUTE flt1 = -1.0 DISPLAY"GET DESCRIPTOR 'D12421' VALUE 7" DISPLAY" :int1 = INDICATOR, :flt1 = DATA;" EXECSQL GET DESCRIPTOR 'D12421'VALUE 7
:int1 = INDICATOR, :flt1 = DATAEND-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY"int1 should be 0; its value is ", int1 MOVE flt1 TO FLT-1 DISPLAY"flt1 should be 3.1 +-.05; its value is ", FLT-1 if (int1 NOT = 0 OR flt1 < 3.05 OR flt1 > 3.15) then MOVE 0 TO flag END-IF
COMPUTE int1 = -1 COMPUTE flt1 = -1.0 DISPLAY"GET DESCRIPTOR 'D12421' VALUE 8" DISPLAY" :int1 = INDICATOR, :flt1 = DATA;" EXECSQL GET DESCRIPTOR 'D12421'VALUE 8
:int1 = INDICATOR, :flt1 = DATAEND-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY"int1 should be 0; its value is ", int1 MOVE flt1 TO FLT-1 DISPLAY"flt1 should be -.256 +-.0005; its value is ",
FLT-1 if (int1 NOT = 0 OR flt1 < -.2565 OR flt1 >
-.2555) then MOVE 0 TO flag END-IF
*17.4 GR 4, no data (SQLSTATE 02000) if <item number> > COUNT
COMPUTE int1 = -1 DISPLAY"GET DESCRIPTOR 'D12421' VALUE 9" DISPLAY" :int1 = INDICATOR;" EXECSQL GET DESCRIPTOR 'D12421'VALUE 9
:int1 = INDICATOR END-EXEC MOVE SQLCODE TO SQL-COD DISPLAY"SQLCODE should be 100; its value is ", SQL-COD DISPLAY"SQLSTATE should be 02000; its value is ", SQLSTATE PERFORM NOSUBCLASS THRU EXIT-NOSUBCLASS if (SQLCODE NOT = 100 OR NORMSQ NOT = "02000") then MOVE 0 TO flag END-IF if (NORMSQ = "02000"AND NORMSQ NOT = SQLSTATE) then DISPLAY"Valid implementation-defined SQLSTATE accepted." END-IF DISPLAY" "
*Implicit casting: 17.9 GR.7 *Substitute integer for real
DISPLAY"SET DESCRIPTOR 'D12421' VALUE 2" DISPLAY" TYPE = 4;" EXECSQLSET DESCRIPTOR 'D12421'VALUE 2
TYPE = 4 END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY" "
DISPLAY"GET DESCRIPTOR 'D12421' VALUE 2" DISPLAY" :int1 = TYPE, :int2 = NULLABLE, :int3 =
- " UNNAMED," DISPLAY" :cname = NAME, :int6 = INDICATOR, :bin9 = DATA;" EXECSQL GET DESCRIPTOR 'D12421'VALUE 2
:int1 = TYPE, :int2 = NULLABLE, :int3 = UNNAMED,
:cname = NAME, :int6 = INDICATOR, :bin9 = DATAEND-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY"int1 should be 4 (INTEGER); its value is ", int1 DISPLAY"int2 should be 1 (NULLABLE); its value is ", int2 DISPLAY"int3 should be 0 (named); its value is ", int3 DISPLAY"cname should be 'BALANCE '; its value
- " is '", cname "'" MOVE bin9 TO BIN-1 DISPLAY"bin9 should be 524; its value is ", BIN-1 DISPLAY"int6 should be 0; its value is ", int6 if (int1 NOT = 4 OR int2 NOT = 1 OR int3 NOT = 0) then MOVE 0 TO flag END-IF if (bin9 NOT = 524 OR int6 NOT = 0) then MOVE 0 TO flag END-IF if (cname NOT = "BALANCE ") then MOVE 0 TO flag END-IF
DISPLAY"GET DESCRIPTOR 'D12421' VALUE 2" DISPLAY" :int1 = TYPE, :int2 = NULLABLE, :int3 =
- " UNNAMED," DISPLAY" :cname = NAME, :int6 = INDICATOR, :bin9 = DATA;" EXECSQL GET DESCRIPTOR 'D12421'VALUE 2
:int1 = TYPE, :int2 = NULLABLE, :int3 = UNNAMED,
:cname = NAME, :int6 = INDICATOR, :bin9 = DATAEND-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY"int1 should be 4 (INTEGER); its value is ", int1 DISPLAY"int2 should be 1 (NULLABLE); its value is ", int2 DISPLAY"int3 should be 0 (named); its value is ", int3 DISPLAY"cname should be 'BALANCE '; its value
- " is '", cname "'" DISPLAY"int6 should be -1; its value is ", int6 if (int1 NOT = 4 OR int2 NOT = 1 OR int3 NOT = 0) then MOVE 0 TO flag END-IF if (int6 NOT = -1) then MOVE 0 TO flag END-IF if (cname NOT = "BALANCE ") then MOVE 0 TO flag END-IF
.
P198. DISPLAY"ROLLBACK WORK;" EXECSQL ROLLBACK WORK END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY" "
EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD ******************** END TEST0654 ******************** ******************** BEGIN TEST0655 ******************* MOVE 1 TO flag
DISPLAY"COMMIT WORK;" EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY" " *TEd Hook #2
DISPLAY"ALLOCATE DESCRIPTOR 'D12431' WITH MAX 8;" EXECSQL ALLOCATE DESCRIPTOR 'D12431'WITH MAX 8 END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK if (SQLSTATE = "07009") then DISPLAY"Received SQLSTATE 07009!" DISPLAY"This test must be rewritten by NIST (in the
- " event of" DISPLAY"a validation) to accomodate
- " implementation-defined" DISPLAY"limit on ." END-IF DISPLAY" "
*Now we're going to do implicit casting in the other direction
COMPUTE int1 = -1 DISPLAY"SELECT COUNT(*) INTO :int1 FROM BANKTAB" DISPLAY" WHERE NAAM IS NULL" DISPLAY" AND BALANCE >= 3785.19 AND BALANCE <= 3785.21" DISPLAY" AND INTEREST = 7.67" DISPLAY" AND TRANSACTIONS = 5" DISPLAY" AND PAYMENTS = 0" DISPLAY" AND INTEREST_RATE >= 10.94 AND INTEREST_RATE <=
- " 10.96" DISPLAY" AND ANNUAL_YIELD >= 10.99 AND ANNUAL_YIELD <=
- " 11.01" DISPLAY" AND FRACTIONAL_CENTS >= 0.29 AND
- " FRACTIONAL_CENTS <= 0.31;" EXECSQLSELECTCOUNT(*) INTO :int1 FROM BANKTAB
WHERE NAAM ISNULL AND BALANCE >= 3785.19 AND BALANCE <= 3785.21 AND INTEREST = 7.67 AND TRANSACTIONS = 5 AND PAYMENTS = 0 AND INTEREST_RATE >= 10.94 AND INTEREST_RATE <= 10.96 AND ANNUAL_YIELD >= 10.99 AND ANNUAL_YIELD <= 11.01 AND FRACTIONAL_CENTS >= 0.29 AND FRACTIONAL_CENTS <= 0.31 END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY"int1 should be 1; its value is ", int1 if (int1 NOT = 1) then MOVE 0 TO flag END-IF
*Now substitute some equal values in various fields in the *descriptor and test for equality.
DISPLAY"SET DESCRIPTOR 'D12431' VALUE 1" DISPLAY" TYPE = 6, PRECISION = 1, INDICATOR = -1;" EXECSQLSET DESCRIPTOR 'D12431'VALUE 1
TYPE = 6, PRECISION = 1, INDICATOR = -1 END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY" "
MOVE 0 TO bin2 DISPLAY"bin2 = 0" MOVE 5 TO smint1 DISPLAY"SET DESCRIPTOR 'D12431' VALUE 4" DISPLAY" TYPE = 5, INDICATOR = :bin2, DATA = :smint1;" EXECSQLSET DESCRIPTOR 'D12431'VALUE 4
TYPE = 5, INDICATOR = :bin2, DATA = :smint1 END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY" "
MOVE 0 TO bin9 MOVE 0 TO smint1 DISPLAY"bin9 = 0" DISPLAY"SET DESCRIPTOR 'D12431' VALUE 5" DISPLAY" TYPE = 5, INDICATOR = :bin9, DATA = :smint1;" EXECSQLSET DESCRIPTOR 'D12431'VALUE 5
TYPE = 5, INDICATOR = :bin9, DATA = :smint1 END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY" "
MOVE"010.950"TO c7 DISPLAY"SET DESCRIPTOR 'D12431' VALUE 6" DISPLAY" TYPE = 1, LENGTH = 7," DISPLAY" INDICATOR = 0, DATA = :c7;" EXECSQLSET DESCRIPTOR 'D12431'VALUE 6
TYPE = 1, LENGTH = 7,
INDICATOR = 0, DATA = :c7 END-EXEC MOVE SQLCODE TO SQL-COD PERFORM CHCKOK DISPLAY" "
EXECSQLDELETEFROM CONCATBUF END-EXEC MOVE SQLCODE TO SQL-COD EXECSQLINSERTINTO CONCATBUF VALUES ( 'SELECT COUNT(*) FROM BANKTAB' || ' WHERE (NAAM = ? OR NAAM IS NULL) AND BALANCE = ?' || ' AND INTEREST = ? AND TRANSACTIONS = ?' || ' AND PAYMENTS = ? AND INTEREST_RATE = ?' || ' AND ANNUAL_YIELD = ? AND FRACTIONAL_CENTS = ?'
) END-EXEC MOVE SQLCODE TO SQL-COD EXECSQLSELECT ZZ INTO :longst FROM CONCATBUF END-EXEC MOVE SQLCODE TO SQL-COD
DISPLAY"longst=""", longst """"
DISPLAY"PREPARE S12432 FROM :longst;"
--> --------------------
--> maximum size reached
--> --------------------
¤ Diese beiden folgenden Angebotsgruppen bietet das Unternehmen0.49Angebot
Wie Sie bei der Firma Beratungs- und Dienstleistungen beauftragen können
¤
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.