* Standard COBOL (file "DML124.SCO") calling SQL * procedures in file "DML124.MCO".
**************************************************************** * * COMMENT SECTION * * DATE 1994/6/20 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. * * DML124.SCO * WRITTEN BY: David W. Flater * TRANSLATED AUTOMATICALLY FROM EMBEDDED COBOL 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 * ****************************************************************
* EXEC SQL BEGIN DECLARE SECTION END-EXEC
01 SQLCODEPIC 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). * EXEC SQL END DECLARE SECTION END-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 * EXEC SQL SELECT USER INTO :uidx FROM HU.ECCO; CALL"SUB1"USINGSQLCODE SQLSTATE uidx MOVESQLCODETO SQL-COD * EXEC SQL ROLLBACK WORK; CALL"SUB2"USINGSQLCODE SQLSTATE MOVESQLCODETO 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, Module COBOL, dml124.sco" 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));" * EXEC SQL CREATE TABLE CONCATBUF (ZZ CHAR(240)); CALL"SUB3"USINGSQLCODE SQLSTATE MOVESQLCODETO SQL-COD DISPLAY"COMMIT WORK;" * EXEC SQL COMMIT WORK; CALL"SUB4"USINGSQLCODE SQLSTATE MOVESQLCODETO SQL-COD
******************** BEGIN TEST0653 ******************* MOVE 1 TO flag
DISPLAY"ALLOCATE DESCRIPTOR 'D12411' WITH MAX 8;" * EXEC SQL ALLOCATE DESCRIPTOR 'D12411' WITH MAX 8; CALL"SUB9"USINGSQLCODE SQLSTATE MOVESQLCODETO 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 <occurrences>." END-IF DISPLAY" "
DISPLAY"dstmt=""SELECT * FROM HU.STAFF""" MOVE"SELECT * FROM HU.STAFF
- " "TO dstmt
DISPLAY"PREPARE S12411 FROM :dstmt;" * EXEC SQL PREPARE S12411 FROM :dstmt; CALL"SUB10"USINGSQLCODE SQLSTATE dstmt MOVESQLCODETO SQL-COD PERFORM CHCKOK DISPLAY" "
COMPUTE int1 = -1 DISPLAY"GET DESCRIPTOR 'D12411' :int1 = COUNT;" * EXEC SQL GET DESCRIPTOR 'D12411' :int1 = COUNT; CALL"SUB12"USINGSQLCODE SQLSTATE int1 MOVESQLCODETO 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;" * EXEC SQL GET DESCRIPTOR 'D12411' VALUE 1 * :int1 = TYPE, :int2 = NULLABLE, :int3 = UNNAMED, * :cname = NAME, :int4 = LENGTH, :int5 = OCTET_LENGTH * ; CALL"SUB13"USINGSQLCODE SQLSTATE
int1 int2 int3 cname int4 int5 MOVESQLCODETO 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;" * EXEC SQL GET DESCRIPTOR 'D12411' VALUE 2 * :bin9 = TYPE, :int2 = NULLABLE, :bin2 = UNNAMED, * :cname = NAME, :int4 = LENGTH, :int5 = OCTET_LENGTH * ; CALL"SUB14"USINGSQLCODE SQLSTATE
bin9 int2 bin2 cname int4 int5 MOVESQLCODETO 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;" * EXEC SQL GET DESCRIPTOR 'D12411' VALUE 3 * :bin2 = TYPE, :int2 = NULLABLE, :bin9 = UNNAMED, * :cname = NAME, :int4 = PRECISION, :int5 = SCALE; CALL"SUB15"USINGSQLCODE SQLSTATE
bin2 int2 bin9 cname int4 int5 MOVESQLCODETO 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;" * EXEC SQL GET DESCRIPTOR 'D12411' VALUE 4 * :int1 = TYPE, :int2 = NULLABLE, :bin2 = UNNAMED, * :cname = NAME, :bin9 = LENGTH, :int5 = OCTET_LENGTH * ; CALL"SUB16"USINGSQLCODE SQLSTATE
int1 int2 bin2 cname bin9 int5 MOVESQLCODETO 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
* EXEC SQL DELETE FROM CONCATBUF; CALL"SUB17"USINGSQLCODE SQLSTATE MOVESQLCODETO SQL-COD * EXEC SQL INSERT INTO CONCATBUF VALUES ( * 'SELECT * FROM CACHESTAT, COMBINATIONS' || * ' WHERE HIT_RATIO < .97' * ); CALL"SUB18"USINGSQLCODE SQLSTATE MOVESQLCODETO SQL-COD * EXEC SQL SELECT ZZ INTO :longst FROM CONCATBUF; CALL"SUB19"USINGSQLCODE SQLSTATE longst MOVESQLCODETO SQL-COD
DISPLAY"longst=""", longst """"
DISPLAY"PREPARE S12412 FROM :longst;" * EXEC SQL PREPARE S12412 FROM :longst; CALL"SUB20"USINGSQLCODE SQLSTATE longst MOVESQLCODETO SQL-COD PERFORM CHCKOK DISPLAY" "
COMPUTE int1 = -1 DISPLAY"GET DESCRIPTOR 'D12411' :int1 = COUNT;" * EXEC SQL GET DESCRIPTOR 'D12411' :int1 = COUNT; CALL"SUB22"USINGSQLCODE SQLSTATE int1 MOVESQLCODETO 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;" * EXEC SQL GET DESCRIPTOR 'D12411' VALUE 1 * :int1 = TYPE, :int2 = NULLABLE, :int3 = UNNAMED, * :cname = NAME, :int4 = PRECISION; CALL"SUB23"USINGSQLCODE SQLSTATE
int1 int2 int3 cname int4 MOVESQLCODETO 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;" * EXEC SQL GET DESCRIPTOR 'D12411' VALUE 2 * :int1 = TYPE, :int2 = NULLABLE, :int3 = UNNAMED, * :cname = NAME, :int4 = PRECISION; CALL"SUB24"USINGSQLCODE SQLSTATE
int1 int2 int3 cname int4 MOVESQLCODETO 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;" * EXEC SQL GET DESCRIPTOR 'D12411' VALUE 3 * :int1 = TYPE, :int2 = NULLABLE, :int3 = UNNAMED, * :cname = NAME, :int4 = PRECISION, :int5 = SCALE; CALL"SUB25"USINGSQLCODE SQLSTATE
int1 int2 int3 cname int4 int5 MOVESQLCODETO 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;" * EXEC SQL GET DESCRIPTOR 'D12411' VALUE 4 * :int1 = TYPE, :int2 = NULLABLE, :int3 = UNNAMED, * :cname = NAME, :int4 = PRECISION; CALL"SUB26"USINGSQLCODE SQLSTATE
int1 int2 int3 cname int4 MOVESQLCODETO 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;" * EXEC SQL GET DESCRIPTOR 'D12411' VALUE :int6 * :int1 = TYPE, :int2 = NULLABLE, :int3 = UNNAMED, * :cname = NAME, :int4 = PRECISION, :int5 = SCALE; CALL"SUB27"USINGSQLCODE SQLSTATE
int6 int1 int2 int3 cname int4 int5 MOVESQLCODETO 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;" * EXEC SQL GET DESCRIPTOR 'D12411' VALUE 6 * :int1 = TYPE, :int2 = NULLABLE, :int3 = UNNAMED, * :cname = NAME, :int4 = PRECISION; CALL"SUB28"USINGSQLCODE SQLSTATE
int1 int2 int3 cname int4 MOVESQLCODETO 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;" * EXEC SQL GET DESCRIPTOR 'D12411' VALUE 7 * :int1 = TYPE, :int2 = NULLABLE, :int3 = UNNAMED, * :cname = NAME, :int4 = PRECISION, :int5 = SCALE; CALL"SUB29"USINGSQLCODE SQLSTATE
int1 int2 int3 cname int4 int5 MOVESQLCODETO 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;" * EXEC SQL GET DESCRIPTOR 'D12411' VALUE 8 * :int1 = TYPE, :int2 = NULLABLE, :int3 = UNNAMED, * :cname = NAME, :int4 = PRECISION, :int5 = SCALE; CALL"SUB30"USINGSQLCODE SQLSTATE
int1 int2 int3 cname int4 int5 MOVESQLCODETO 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;" * EXEC SQL PREPARE S12413 FROM :dstmt; CALL"SUB31"USINGSQLCODE SQLSTATE dstmt MOVESQLCODETO SQL-COD PERFORM CHCKOK DISPLAY" "
COMPUTE int1 = -1 DISPLAY"GET DESCRIPTOR 'D12411' :int1 = COUNT;" * EXEC SQL GET DESCRIPTOR 'D12411' :int1 = COUNT; CALL"SUB33"USINGSQLCODE SQLSTATE int1 MOVESQLCODETO 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;" * EXEC SQL GET DESCRIPTOR 'D12411' VALUE 1 * :int1 = TYPE, :int2 = NULLABLE, :int3 = UNNAMED, * :cname = NAME, :int4 = LENGTH, :int5 = OCTET_LENGTH * ; CALL"SUB34"USINGSQLCODE SQLSTATE
int1 int2 int3 cname int4 int5 MOVESQLCODETO 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;" * EXEC SQL GET DESCRIPTOR 'D12411' VALUE 2 * :int1 = TYPE, :int2 = NULLABLE, :int3 = UNNAMED, * :cname = NAME, :int4 = PRECISION, :int5 = SCALE; CALL"SUB35"USINGSQLCODE SQLSTATE
int1 int2 int3 cname int4 int5 MOVESQLCODETO 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
* EXEC SQL DELETE FROM CONCATBUF; CALL"SUB36"USINGSQLCODE SQLSTATE MOVESQLCODETO SQL-COD * EXEC SQL INSERT INTO CONCATBUF VALUES ( * 'SELECT HIT_RATIO AS HR, FRAGMENTATION_PCT * ?' || * ' FROM CACHESTAT' * ); CALL"SUB37"USINGSQLCODE SQLSTATE MOVESQLCODETO SQL-COD * EXEC SQL SELECT ZZ INTO :longst FROM CONCATBUF; CALL"SUB38"USINGSQLCODE SQLSTATE longst MOVESQLCODETO SQL-COD
DISPLAY"longst=""", longst """"
DISPLAY"PREPARE S12414 FROM :longst;" * EXEC SQL PREPARE S12414 FROM :longst; CALL"SUB39"USINGSQLCODE SQLSTATE longst MOVESQLCODETO 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;" * EXEC SQL GET DESCRIPTOR 'D12411' VALUE 1 * :int1 = NULLABLE, :int2 = UNNAMED, :cname = NAME; CALL"SUB41"USINGSQLCODE SQLSTATE
int1 int2 cname MOVESQLCODETO 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;" * EXEC SQL GET DESCRIPTOR 'D12411' VALUE 2 * :int1 = NULLABLE, :int2 = UNNAMED; CALL"SUB42"USINGSQLCODE SQLSTATE int1 int2 MOVESQLCODETO 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
DISPLAY"ALLOCATE DESCRIPTOR 'D12421' WITH MAX 9;" * EXEC SQL ALLOCATE DESCRIPTOR 'D12421' WITH MAX 9; CALL"SUB55"USINGSQLCODE SQLSTATE MOVESQLCODETO 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 <occurrences>." END-IF DISPLAY" "
DISPLAY"dstmt=""SELECT * FROM BANKTAB""" MOVE"SELECT * FROM BANKTAB
- " "TO dstmt
DISPLAY"PREPARE S12421 FROM :dstmt;" * EXEC SQL PREPARE S12421 FROM :dstmt; CALL"SUB56"USINGSQLCODE SQLSTATE dstmt MOVESQLCODETO SQL-COD PERFORM CHCKOK DISPLAY" "
COMPUTE int1 = -1 DISPLAY"GET DESCRIPTOR 'D12421' :int1 = COUNT;" * EXEC SQL GET DESCRIPTOR 'D12421' :int1 = COUNT; CALL"SUB66"USINGSQLCODE SQLSTATE int1 MOVESQLCODETO 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;" * EXEC SQL GET DESCRIPTOR 'D12421' VALUE 1 * :int1 = INDICATOR, :cname = DATA; CALL"SUB67"USINGSQLCODE SQLSTATE
int1 cname MOVESQLCODETO 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;" * EXEC SQL GET DESCRIPTOR 'D12421' VALUE 2 * :int1 = INDICATOR, :flt1 = DATA; CALL"SUB68"USINGSQLCODE SQLSTATE int1 flt1 MOVESQLCODETO 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;" * EXEC SQL GET DESCRIPTOR 'D12421' VALUE 3 * :int1 = INDICATOR, :flt1 = DATA; CALL"SUB69"USINGSQLCODE SQLSTATE int1 flt1 MOVESQLCODETO 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;" * EXEC SQL GET DESCRIPTOR 'D12421' VALUE 4 * :int1 = INDICATOR, :bin9 = DATA; CALL"SUB70"USINGSQLCODE SQLSTATE int1 bin9 MOVESQLCODETO 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;" * EXEC SQL GET DESCRIPTOR 'D12421' VALUE 5 * :int1 = INDICATOR, :bin2 = DATA; CALL"SUB71"USINGSQLCODE SQLSTATE int1 bin2 MOVESQLCODETO 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;" * EXEC SQL GET DESCRIPTOR 'D12421' VALUE 6 * :int1 = INDICATOR, :flt1 = DATA; CALL"SUB72"USINGSQLCODE SQLSTATE int1 flt1 MOVESQLCODETO 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;" * EXEC SQL GET DESCRIPTOR 'D12421' VALUE 7 * :int1 = INDICATOR, :flt1 = DATA; CALL"SUB73"USINGSQLCODE SQLSTATE int1 flt1 MOVESQLCODETO 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;" * EXEC SQL GET DESCRIPTOR 'D12421' VALUE 8 * :int1 = INDICATOR, :flt1 = DATA; CALL"SUB74"USINGSQLCODE SQLSTATE int1 flt1 MOVESQLCODETO 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;" * EXEC SQL GET DESCRIPTOR 'D12421' VALUE 9 * :int1 = INDICATOR; CALL"SUB75"USINGSQLCODE SQLSTATE int1 MOVESQLCODETO 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 (SQLCODENOT = 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;" * EXEC SQL SET DESCRIPTOR 'D12421' VALUE 2 * TYPE = 4; CALL"SUB76"USINGSQLCODE SQLSTATE MOVESQLCODETO 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;" * EXEC SQL GET DESCRIPTOR 'D12421' VALUE 2 * :int1 = TYPE, :int2 = NULLABLE, :int3 = UNNAMED, * :cname = NAME, :int6 = INDICATOR, :bin9 = DATA; CALL"SUB80"USINGSQLCODE SQLSTATE
int1 int2 int3 cname int6 bin9 MOVESQLCODETO 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;" * EXEC SQL GET DESCRIPTOR 'D12421' VALUE 2 * :int1 = TYPE, :int2 = NULLABLE, :int3 = UNNAMED, * :cname = NAME, :int6 = INDICATOR, :bin9 = DATA; CALL"SUB85"USINGSQLCODE SQLSTATE
int1 int2 int3 cname int6 bin9 MOVESQLCODETO 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
DISPLAY"ALLOCATE DESCRIPTOR 'D12431' WITH MAX 8;" * EXEC SQL ALLOCATE DESCRIPTOR 'D12431' WITH MAX 8; CALL"SUB94"USINGSQLCODE SQLSTATE MOVESQLCODETO 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 <occurrences>." 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;" * EXEC SQL SELECT COUNT(*) INTO :int1 FROM BANKTAB * WHERE NAAM IS NULL * 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 * ; CALL"SUB106"USINGSQLCODE SQLSTATE int1 MOVESQLCODETO 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;" * EXEC SQL SET DESCRIPTOR 'D12431' VALUE 1 * TYPE = 6, PRECISION = 1, INDICATOR = -1; CALL"SUB107"USINGSQLCODE SQLSTATE MOVESQLCODETO 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;" * EXEC SQL SET DESCRIPTOR 'D12431' VALUE 4 * TYPE = 5, INDICATOR = :bin2, DATA = :smint1; CALL"SUB108"USINGSQLCODE SQLSTATE bin2 smint1 MOVESQLCODETO 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;" * EXEC SQL SET DESCRIPTOR 'D12431' VALUE 5 * TYPE = 5, INDICATOR = :bin9, DATA = :smint1; CALL"SUB109"USINGSQLCODE SQLSTATE bin9 smint1 MOVESQLCODETO 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;" * EXEC SQL SET DESCRIPTOR 'D12431' VALUE 6 * TYPE = 1, LENGTH = 7, * INDICATOR = 0, DATA = :c7; CALL"SUB110"USINGSQLCODE SQLSTATE c7 MOVESQLCODETO SQL-COD PERFORM CHCKOK DISPLAY" "
* EXEC SQL DELETE FROM CONCATBUF; CALL"SUB111"USINGSQLCODE SQLSTATE MOVESQLCODETO SQL-COD * EXEC SQL INSERT INTO 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 = ?' * ); CALL"SUB112"USINGSQLCODE SQLSTATE MOVESQLCODETO SQL-COD * EXEC SQL SELECT ZZ INTO :longst FROM CONCATBUF; CALL"SUB113"USINGSQLCODE SQLSTATE longst MOVESQLCODETO SQL-COD
DISPLAY"longst=""", longst """"
DISPLAY"PREPARE S12432 FROM :longst;" * EXEC SQL PREPARE S12432 FROM :longst; CALL"SUB114"USINGSQLCODE SQLSTATE longst MOVESQLCODETO SQL-COD PERFORM CHCKOK DISPLAY" "
DISPLAY"DECLARE C12432 CURSOR FOR S12432;" * EXEC SQL DECLARE C12432 CURSOR FOR S12432 END-EXEC DISPLAY" "
DISPLAY"OPEN C12432 USING SQL DESCRIPTOR 'D12431';" * EXEC SQL OPEN C12432 USING SQL DESCRIPTOR 'D12431'; CALL"SUB115"USINGSQLCODE SQLSTATE MOVESQLCODETO SQL-COD PERFORM CHCKOK DISPLAY" "
COMPUTE int1 = -1 DISPLAY"FETCH C12432 INTO :int1;" * EXEC SQL FETCH C12432 INTO :int1; CALL"SUB116"USINGSQLCODE SQLSTATE int1 MOVESQLCODETO SQL-COD PERFORM CHCKOK DISPLAY"int1 should be 1; its value is ", int1 if (int1 NOT = 1) then MOVE 0 TO flag END-IF
DISPLAY"ALLOCATE DESCRIPTOR 'D12441' WITH MAX 16;" * EXEC SQL ALLOCATE DESCRIPTOR 'D12441' WITH MAX 16; CALL"SUB127"USINGSQLCODE SQLSTATE MOVESQLCODETO 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 <occurrences>." END-IF DISPLAY" "
DISPLAY"dstmt=""SELECT * FROM LOTSA_DATETIMES""" MOVE"SELECT * FROM LOTSA_DATETIMES
- " "TO dstmt
DISPLAY"PREPARE S12441 FROM :dstmt;" * EXEC SQL PREPARE S12441 FROM :dstmt; CALL"SUB128"USINGSQLCODE SQLSTATE dstmt MOVESQLCODETO SQL-COD PERFORM CHCKOK DISPLAY" "
COMPUTE int1 = -1 DISPLAY"GET DESCRIPTOR 'D12441' :int1 = COUNT;" * EXEC SQL GET DESCRIPTOR 'D12441' :int1 = COUNT; CALL"SUB130"USINGSQLCODE SQLSTATE int1 MOVESQLCODETO SQL-COD PERFORM CHCKOK DISPLAY"int1 should be 16; its value is ", int1 if (int1 NOT = 16) then MOVE 0 TO flag END-IF
*The LENGTH field of the descriptor is tested in DML154, test 0849
COMPUTE int1 = -1 COMPUTE int2 = -1 DISPLAY"GET DESCRIPTOR 'D12441' VALUE 1" DISPLAY" :int1 = TYPE, :int2 = DATETIME_INTERVAL_CODE;" * EXEC SQL GET DESCRIPTOR 'D12441' VALUE 1 * :int1 = TYPE, :int2 = DATETIME_INTERVAL_CODE; CALL"SUB131"USINGSQLCODE SQLSTATE int1 int2 MOVESQLCODETO SQL-COD PERFORM CHCKOK DISPLAY"int1 should be 9; its value is ", int1 DISPLAY"int2 should be 1; its value is ", int2 if (int1 NOT = 9 OR int2 NOT = 1) then MOVE 0 TO flag END-IF
COMPUTE int1 = -1 COMPUTE int2 = -1 COMPUTE int3 = -1 DISPLAY"GET DESCRIPTOR 'D12441' VALUE 2" DISPLAY" :int1 = TYPE, :int2 = DATETIME_INTERVAL_CODE," DISPLAY" :int3 = PRECISION;" * EXEC SQL GET DESCRIPTOR 'D12441' VALUE 2 * :int1 = TYPE, :int2 = DATETIME_INTERVAL_CODE, * :int3 = PRECISION; CALL"SUB132"USINGSQLCODE SQLSTATE int1 int2 int3 MOVESQLCODETO SQL-COD PERFORM CHCKOK DISPLAY"int1 should be 9; its value is ", int1 DISPLAY"int2 should be 2; its value is ", int2 DISPLAY"int3 should be 0; its value is ", int3 if (int1 NOT = 9 OR int2 NOT = 2 OR int3 NOT = 0) then MOVE 0 TO flag END-IF
COMPUTE int1 = -1 COMPUTE int2 = -1 COMPUTE int3 = -1 DISPLAY"GET DESCRIPTOR 'D12441' VALUE 3" DISPLAY" :int1 = TYPE, :int2 = DATETIME_INTERVAL_CODE," DISPLAY" :int3 = PRECISION;" * EXEC SQL GET DESCRIPTOR 'D12441' VALUE 3 * :int1 = TYPE, :int2 = DATETIME_INTERVAL_CODE, * :int3 = PRECISION; CALL"SUB133"USINGSQLCODE SQLSTATE int1 int2 int3 MOVESQLCODETO SQL-COD PERFORM CHCKOK DISPLAY"int1 should be 9; its value is ", int1 DISPLAY"int2 should be 3; its value is ", int2 DISPLAY"int3 should be 6; its value is ", int3 if (int1 NOT = 9 OR int2 NOT = 3 OR int3 NOT = 6) then MOVE 0 TO flag END-IF
*Interval leading field precision = 2: 10.1 SR.5
COMPUTE int1 = -1 COMPUTE int2 = -1 COMPUTE int3 = -1 DISPLAY"GET DESCRIPTOR 'D12441' VALUE 4" DISPLAY" :int1 = TYPE, :int2 = DATETIME_INTERVAL_CODE," DISPLAY" :int3 = DATETIME_INTERVAL_PRECISION;" * EXEC SQL GET DESCRIPTOR 'D12441' VALUE 4 * :int1 = TYPE, :int2 = DATETIME_INTERVAL_CODE, * :int3 = DATETIME_INTERVAL_PRECISION; CALL"SUB134"USINGSQLCODE SQLSTATE int1 int2 int3 MOVESQLCODETO SQL-COD PERFORM CHCKOK DISPLAY"int1 should be 10; its value is ", int1 DISPLAY"int2 should be 1; its value is ", int2 DISPLAY"int3 should be 2; its value is ", int3 if (int1 NOT = 10 OR int2 NOT = 1 OR int3 NOT =
2) then MOVE 0 TO flag END-IF
COMPUTE int1 = -1 COMPUTE int2 = -1 COMPUTE int3 = -1 DISPLAY"GET DESCRIPTOR 'D12441' VALUE 5" DISPLAY" :int1 = TYPE, :int2 = DATETIME_INTERVAL_CODE," DISPLAY" :int3 = DATETIME_INTERVAL_PRECISION;" * EXEC SQL GET DESCRIPTOR 'D12441' VALUE 5 * :int1 = TYPE, :int2 = DATETIME_INTERVAL_CODE, * :int3 = DATETIME_INTERVAL_PRECISION; CALL"SUB135"USINGSQLCODE SQLSTATE int1 int2 int3 MOVESQLCODETO SQL-COD PERFORM CHCKOK DISPLAY"int1 should be 10; its value is ", int1 DISPLAY"int2 should be 2; its value is ", int2 DISPLAY"int3 should be 2; its value is ", int3 if (int1 NOT = 10 OR int2 NOT = 2 OR int3 NOT =
2) then MOVE 0 TO flag END-IF
COMPUTE int1 = -1 COMPUTE int2 = -1 COMPUTE int3 = -1 DISPLAY"GET DESCRIPTOR 'D12441' VALUE 6" DISPLAY" :int1 = TYPE, :int2 = DATETIME_INTERVAL_CODE," DISPLAY" :int3 = DATETIME_INTERVAL_PRECISION;" * EXEC SQL GET DESCRIPTOR 'D12441' VALUE 6 * :int1 = TYPE, :int2 = DATETIME_INTERVAL_CODE, * :int3 = DATETIME_INTERVAL_PRECISION; CALL"SUB136"USINGSQLCODE SQLSTATE int1 int2 int3 MOVESQLCODETO SQL-COD PERFORM CHCKOK DISPLAY"int1 should be 10; its value is ", int1 DISPLAY"int2 should be 3; its value is ", int2 DISPLAY"int3 should be 2; its value is ", int3 if (int1 NOT = 10 OR int2 NOT = 3 OR int3 NOT =
2) then MOVE 0 TO flag END-IF
COMPUTE int1 = -1 COMPUTE int2 = -1 COMPUTE int3 = -1 DISPLAY"GET DESCRIPTOR 'D12441' VALUE 7" DISPLAY" :int1 = TYPE, :int2 = DATETIME_INTERVAL_CODE," DISPLAY" :int3 = DATETIME_INTERVAL_PRECISION;" * EXEC SQL GET DESCRIPTOR 'D12441' VALUE 7 * :int1 = TYPE, :int2 = DATETIME_INTERVAL_CODE, * :int3 = DATETIME_INTERVAL_PRECISION; CALL"SUB137"USINGSQLCODE SQLSTATE int1 int2 int3 MOVESQLCODETO SQL-COD PERFORM CHCKOK DISPLAY"int1 should be 10; its value is ", int1 DISPLAY"int2 should be 4; its value is ", int2 DISPLAY"int3 should be 2; its value is ", int3 if (int1 NOT = 10 OR int2 NOT = 4 OR int3 NOT =
2) then MOVE 0 TO flag END-IF
COMPUTE int1 = -1 COMPUTE int2 = -1 COMPUTE int3 = -1 DISPLAY"GET DESCRIPTOR 'D12441' VALUE 8" DISPLAY" :int1 = TYPE, :int2 = DATETIME_INTERVAL_CODE," DISPLAY" :int3 = DATETIME_INTERVAL_PRECISION;" * EXEC SQL GET DESCRIPTOR 'D12441' VALUE 8 * :int1 = TYPE, :int2 = DATETIME_INTERVAL_CODE, * :int3 = DATETIME_INTERVAL_PRECISION; CALL"SUB138"USINGSQLCODE SQLSTATE int1 int2 int3 MOVESQLCODETO SQL-COD PERFORM CHCKOK DISPLAY"int1 should be 10; its value is ", int1 DISPLAY"int2 should be 5; its value is ", int2 DISPLAY"int3 should be 2; its value is ", int3 if (int1 NOT = 10 OR int2 NOT = 5 OR int3 NOT =
2) then MOVE 0 TO flag END-IF
COMPUTE int1 = -1 COMPUTE int2 = -1 COMPUTE int3 = -1 COMPUTE int4 = -1 DISPLAY"GET DESCRIPTOR 'D12441' VALUE 9" DISPLAY" :int1 = TYPE, :int2 = DATETIME_INTERVAL_CODE," DISPLAY" :int3 = DATETIME_INTERVAL_PRECISION," DISPLAY" :int4 = PRECISION;" * EXEC SQL GET DESCRIPTOR 'D12441' VALUE 9 * :int1 = TYPE, :int2 = DATETIME_INTERVAL_CODE, * :int3 = DATETIME_INTERVAL_PRECISION, * :int4 = PRECISION; CALL"SUB139"USINGSQLCODE SQLSTATE int1 int2 int3 int4 MOVESQLCODETO SQL-COD PERFORM CHCKOK DISPLAY"int1 should be 10; its value is ", int1 DISPLAY"int2 should be 6; its value is ", int2 DISPLAY"int3 should be 2; its value is ", int3 DISPLAY"int4 should be 6; its value is ", int4 if (int1 NOT = 10 OR int2 NOT = 6 OR int3 NOT =
2) then MOVE 0 TO flag END-IF if (int4 NOT = 6) then MOVE 0 TO flag END-IF
COMPUTE int1 = -1 COMPUTE int2 = -1 COMPUTE int3 = -1 DISPLAY"GET DESCRIPTOR 'D12441' VALUE 10" DISPLAY" :int1 = TYPE, :int2 = DATETIME_INTERVAL_CODE," DISPLAY" :int3 = DATETIME_INTERVAL_PRECISION;" * EXEC SQL GET DESCRIPTOR 'D12441' VALUE 10 * :int1 = TYPE, :int2 = DATETIME_INTERVAL_CODE, * :int3 = DATETIME_INTERVAL_PRECISION; CALL"SUB140"USINGSQLCODE SQLSTATE int1 int2 int3 MOVESQLCODETO SQL-COD PERFORM CHCKOK DISPLAY"int1 should be 10; its value is ", int1 DISPLAY"int2 should be 7; its value is ", int2 DISPLAY"int3 should be 2; its value is ", int3 if (int1 NOT = 10 OR int2 NOT = 7 OR int3 NOT =
2) then MOVE 0 TO flag END-IF
COMPUTE int1 = -1 COMPUTE int2 = -1 COMPUTE int3 = -1 DISPLAY"GET DESCRIPTOR 'D12441' VALUE 11" DISPLAY" :int1 = TYPE, :int2 = DATETIME_INTERVAL_CODE," DISPLAY" :int3 = DATETIME_INTERVAL_PRECISION;" * EXEC SQL GET DESCRIPTOR 'D12441' VALUE 11 * :int1 = TYPE, :int2 = DATETIME_INTERVAL_CODE, * :int3 = DATETIME_INTERVAL_PRECISION; CALL"SUB141"USINGSQLCODE SQLSTATE int1 int2 int3 MOVESQLCODETO SQL-COD PERFORM CHCKOK DISPLAY"int1 should be 10; its value is ", int1 DISPLAY"int2 should be 8; its value is ", int2 DISPLAY"int3 should be 2; its value is ", int3 if (int1 NOT = 10 OR int2 NOT = 8 OR int3 NOT =
2) then MOVE 0 TO flag END-IF
COMPUTE int1 = -1 COMPUTE int2 = -1 COMPUTE int3 = -1 DISPLAY"GET DESCRIPTOR 'D12441' VALUE 12" DISPLAY" :int1 = TYPE, :int2 = DATETIME_INTERVAL_CODE," DISPLAY" :int3 = DATETIME_INTERVAL_PRECISION;" * EXEC SQL GET DESCRIPTOR 'D12441' VALUE 12 * :int1 = TYPE, :int2 = DATETIME_INTERVAL_CODE, * :int3 = DATETIME_INTERVAL_PRECISION; CALL"SUB142"USINGSQLCODE SQLSTATE int1 int2 int3 MOVESQLCODETO SQL-COD PERFORM CHCKOK DISPLAY"int1 should be 10; its value is ", int1 DISPLAY"int2 should be 9; its value is ", int2 DISPLAY"int3 should be 2; its value is ", int3 if (int1 NOT = 10 OR int2 NOT = 9 OR int3 NOT =
2) then MOVE 0 TO flag END-IF
COMPUTE int1 = -1 COMPUTE int2 = -1 COMPUTE int3 = -1 COMPUTE int4 = -1 DISPLAY"GET DESCRIPTOR 'D12441' VALUE 13" DISPLAY" :int1 = TYPE, :int2 = DATETIME_INTERVAL_CODE," DISPLAY" :int3 = DATETIME_INTERVAL_PRECISION," DISPLAY" :int4 = PRECISION;" * EXEC SQL GET DESCRIPTOR 'D12441' VALUE 13 * :int1 = TYPE, :int2 = DATETIME_INTERVAL_CODE, * :int3 = DATETIME_INTERVAL_PRECISION, * :int4 = PRECISION; CALL"SUB143"USINGSQLCODE SQLSTATE int1 int2 int3 int4 MOVESQLCODETO SQL-COD PERFORM CHCKOK DISPLAY"int1 should be 10; its value is ", int1 DISPLAY"int2 should be 10; its value is ", int2 DISPLAY"int3 should be 2; its value is ", int3 DISPLAY"int4 should be 6; its value is ", int4 if (int1 NOT = 10 OR int2 NOT = 10 OR int3 NOT =
2) then MOVE 0 TO flag END-IF if (int4 NOT = 6) then MOVE 0 TO flag END-IF
COMPUTE int1 = -1 COMPUTE int2 = -1 COMPUTE int3 = -1 DISPLAY"GET DESCRIPTOR 'D12441' VALUE 14" DISPLAY" :int1 = TYPE, :int2 = DATETIME_INTERVAL_CODE," DISPLAY" :int3 = DATETIME_INTERVAL_PRECISION;" * EXEC SQL GET DESCRIPTOR 'D12441' VALUE 14 * :int1 = TYPE, :int2 = DATETIME_INTERVAL_CODE, * :int3 = DATETIME_INTERVAL_PRECISION; CALL"SUB144"USINGSQLCODE SQLSTATE int1 int2 int3 MOVESQLCODETO SQL-COD PERFORM CHCKOK DISPLAY"int1 should be 10; its value is ", int1 DISPLAY"int2 should be 11; its value is ", int2 DISPLAY"int3 should be 2; its value is ", int3 if (int1 NOT = 10 OR int2 NOT = 11 OR int3 NOT =
2) then MOVE 0 TO flag END-IF
COMPUTE int1 = -1 COMPUTE int2 = -1 COMPUTE int3 = -1 COMPUTE int4 = -1 DISPLAY"GET DESCRIPTOR 'D12441' VALUE 15" DISPLAY" :int1 = TYPE, :int2 = DATETIME_INTERVAL_CODE," DISPLAY" :int3 = DATETIME_INTERVAL_PRECISION," DISPLAY" :int4 = PRECISION;" * EXEC SQL GET DESCRIPTOR 'D12441' VALUE 15 * :int1 = TYPE, :int2 = DATETIME_INTERVAL_CODE, * :int3 = DATETIME_INTERVAL_PRECISION, * :int4 = PRECISION; CALL"SUB145"USINGSQLCODE SQLSTATE int1 int2 int3 int4 MOVESQLCODETO SQL-COD PERFORM CHCKOK DISPLAY"int1 should be 10; its value is ", int1 DISPLAY"int2 should be 12; its value is ", int2 DISPLAY"int3 should be 2; its value is ", int3 DISPLAY"int4 should be 6; its value is ", int4 if (int1 NOT = 10 OR int2 NOT = 12 OR int3 NOT =
2) then MOVE 0 TO flag END-IF if (int4 NOT = 6) then MOVE 0 TO flag END-IF
COMPUTE int1 = -1 COMPUTE int2 = -1 COMPUTE int3 = -1 COMPUTE int4 = -1 DISPLAY"GET DESCRIPTOR 'D12441' VALUE 16" DISPLAY" :int1 = TYPE, :int2 = DATETIME_INTERVAL_CODE," DISPLAY" :int3 = DATETIME_INTERVAL_PRECISION," DISPLAY" :int4 = PRECISION;" * EXEC SQL GET DESCRIPTOR 'D12441' VALUE 16 * :int1 = TYPE, :int2 = DATETIME_INTERVAL_CODE, * :int3 = DATETIME_INTERVAL_PRECISION, * :int4 = PRECISION; CALL"SUB146"USINGSQLCODE SQLSTATE int1 int2 int3 int4 MOVESQLCODETO SQL-COD PERFORM CHCKOK DISPLAY"int1 should be 10; its value is ", int1 DISPLAY"int2 should be 13; its value is ", int2 DISPLAY"int3 should be 2; its value is ", int3 DISPLAY"int4 should be 6; its value is ", int4 if (int1 NOT = 10 OR int2 NOT = 13 OR int3 NOT =
2) then MOVE 0 TO flag END-IF if (int4 NOT = 6) then MOVE 0 TO flag END-IF
*Set the data values in the descriptor and insert
MOVE"DATE '1994-06-24'
- " "TO dstmt DISPLAY"SET DESCRIPTOR 'D12441' VALUE 1" DISPLAY" INDICATOR = 0, TYPE = 1," DISPLAY" LENGTH = 50, DATA = :dstmt;" * EXEC SQL SET DESCRIPTOR 'D12441' VALUE 1 * INDICATOR = 0, TYPE = 1, * LENGTH = 50, DATA = :dstmt; CALL"SUB147"USINGSQLCODE SQLSTATE dstmt MOVESQLCODETO SQL-COD PERFORM CHCKOK DISPLAY" "
MOVE"TIME '14:41:10' " TO dstmt DISPLAY"SET DESCRIPTOR 'D12441' VALUE 2" DISPLAY" INDICATOR = 0, TYPE = 1," DISPLAY" LENGTH = 50, DATA = :dstmt;" * EXEC SQL SET DESCRIPTOR 'D12441' VALUE 2 * INDICATOR = 0, TYPE = 1, LENGTH = 50, * DATA = :dstmt; CALL"SUB148"USINGSQLCODE SQLSTATE dstmt MOVESQLCODETO SQL-COD PERFORM CHCKOK DISPLAY" "
MOVE"TIMESTAMP '1994-12-25 00:00:00.000000'
- " "TO dstmt DISPLAY"SET DESCRIPTOR 'D12441' VALUE 3" DISPLAY" INDICATOR = 0," DISPLAY" TYPE = 1, LENGTH = 50, DATA = :dstmt;" * EXEC SQL SET DESCRIPTOR 'D12441' VALUE 3 * INDICATOR = 0, * TYPE = 1, LENGTH = 50, DATA = :dstmt; CALL"SUB149"USINGSQLCODE SQLSTATE dstmt MOVESQLCODETO SQL-COD PERFORM CHCKOK DISPLAY" "
MOVE"INTERVAL '01' YEAR " TO dstmt DISPLAY"SET DESCRIPTOR 'D12441' VALUE 4" DISPLAY" INDICATOR = 0, TYPE = 1, LENGTH = 50," DISPLAY" DATA = :dstmt;" * EXEC SQL SET DESCRIPTOR 'D12441' VALUE 4 * INDICATOR = 0, TYPE = 1, LENGTH = 50, * DATA = :dstmt; CALL"SUB150"USINGSQLCODE SQLSTATE dstmt MOVESQLCODETO SQL-COD PERFORM CHCKOK DISPLAY" "
MOVE"INTERVAL '05' MONTH " TO dstmt DISPLAY"SET DESCRIPTOR 'D12441' VALUE 5" DISPLAY" INDICATOR = 0, TYPE = 1, LENGTH = 50," DISPLAY" DATA = :dstmt;" * EXEC SQL SET DESCRIPTOR 'D12441' VALUE 5 * INDICATOR = 0, TYPE = 1, LENGTH = 50, * DATA = :dstmt; CALL"SUB151"USINGSQLCODE SQLSTATE dstmt MOVESQLCODETO SQL-COD PERFORM CHCKOK DISPLAY" "
MOVE"INTERVAL '20' DAY " TO dstmt DISPLAY"SET DESCRIPTOR 'D12441' VALUE 6" DISPLAY" INDICATOR = 0, TYPE = 1, LENGTH = 50," DISPLAY" DATA = :dstmt;" * EXEC SQL SET DESCRIPTOR 'D12441' VALUE 6 * INDICATOR = 0, TYPE = 1, LENGTH = 50, * DATA = :dstmt; CALL"SUB152"USINGSQLCODE SQLSTATE dstmt MOVESQLCODETO SQL-COD PERFORM CHCKOK DISPLAY" "
MOVE"INTERVAL '30' HOUR " TO dstmt DISPLAY"SET DESCRIPTOR 'D12441' VALUE 7" DISPLAY" INDICATOR = 0, TYPE = 1, LENGTH = 50," DISPLAY" DATA = :dstmt;" * EXEC SQL SET DESCRIPTOR 'D12441' VALUE 7 * INDICATOR = 0, TYPE = 1, LENGTH = 50, * DATA = :dstmt; CALL"SUB153"USINGSQLCODE SQLSTATE dstmt MOVESQLCODETO SQL-COD PERFORM CHCKOK DISPLAY" "
MOVE"INTERVAL '15' MINUTE " TO dstmt DISPLAY"SET DESCRIPTOR 'D12441' VALUE 8" DISPLAY" INDICATOR = 0, TYPE = 1, LENGTH = 50," DISPLAY" DATA = :dstmt" * EXEC SQL SET DESCRIPTOR 'D12441' VALUE 8 * INDICATOR = 0, TYPE = 1, LENGTH = 50, * DATA = :dstmt; CALL"SUB154"USINGSQLCODE SQLSTATE dstmt MOVESQLCODETO SQL-COD PERFORM CHCKOK DISPLAY" "
DISPLAY"SET DESCRIPTOR 'D12441' VALUE 9" DISPLAY" INDICATOR = -1;" * EXEC SQL SET DESCRIPTOR 'D12441' VALUE 9 * INDICATOR = -1; CALL"SUB155"USINGSQLCODE SQLSTATE MOVESQLCODETO SQL-COD PERFORM CHCKOK DISPLAY" "
MOVE"INTERVAL '03-11' YEAR TO MONTH
- " "TO dstmt DISPLAY"SET DESCRIPTOR 'D12441' VALUE 10" DISPLAY" INDICATOR = 0, TYPE = 1, LENGTH = 50," DISPLAY" DATA = :dstmt;" * EXEC SQL SET DESCRIPTOR 'D12441' VALUE 10 * INDICATOR = 0, TYPE = 1, LENGTH = 50, DATA = :dstmt * ; CALL"SUB156"USINGSQLCODE SQLSTATE dstmt MOVESQLCODETO SQL-COD PERFORM CHCKOK DISPLAY" "
MOVE"INTERVAL '01 16' DAY TO HOUR " TO dstmt DISPLAY"SET DESCRIPTOR 'D12441' VALUE 11" DISPLAY" INDICATOR = 0, TYPE = 1, LENGTH = 50," DISPLAY" DATA = :dstmt;" * EXEC SQL SET DESCRIPTOR 'D12441' VALUE 11 * INDICATOR = 0, TYPE = 1, LENGTH = 50, DATA = :dstmt * ; CALL"SUB157"USINGSQLCODE SQLSTATE dstmt MOVESQLCODETO SQL-COD PERFORM CHCKOK DISPLAY" "
MOVE"INTERVAL '01 16:10' DAY TO MINUTE " TO dstmt DISPLAY"SET DESCRIPTOR 'D12441' VALUE 12" DISPLAY" INDICATOR = 0, TYPE = 1, LENGTH = 50," DISPLAY" DATA = :dstmt;" * EXEC SQL SET DESCRIPTOR 'D12441' VALUE 12 * INDICATOR = 0, TYPE = 1, LENGTH = 50, DATA = :dstmt * ; CALL"SUB158"USINGSQLCODE SQLSTATE dstmt MOVESQLCODETO SQL-COD PERFORM CHCKOK DISPLAY" "
MOVE"INTERVAL '01 16:10:07.000000' DAY TO SECOND " TO dstmt DISPLAY"SET DESCRIPTOR 'D12441' VALUE 13" DISPLAY" INDICATOR = 0, DATA =" DISPLAY" :dstmt, TYPE = 1, LENGTH = 50;" * EXEC SQL SET DESCRIPTOR 'D12441' VALUE 13 * INDICATOR = 0, DATA = * :dstmt, TYPE = 1, LENGTH = 50; CALL"SUB159"USINGSQLCODE SQLSTATE dstmt MOVESQLCODETO SQL-COD PERFORM CHCKOK DISPLAY" "
MOVE"INTERVAL '02:17' HOUR TO MINUTE " TO dstmt DISPLAY"SET DESCRIPTOR 'D12441' VALUE 14" DISPLAY" INDICATOR = 0, TYPE = 1, LENGTH = 50," DISPLAY" DATA = :dstmt;" * EXEC SQL SET DESCRIPTOR 'D12441' VALUE 14 * INDICATOR = 0, TYPE = 1, LENGTH = 50, DATA = :dstmt * ; CALL"SUB160"USINGSQLCODE SQLSTATE dstmt MOVESQLCODETO SQL-COD PERFORM CHCKOK DISPLAY" "
MOVE"INTERVAL '02:17:56.000000' HOUR TO SECOND " TO dstmt DISPLAY"SET DESCRIPTOR 'D12441' VALUE 15" DISPLAY" INDICATOR = 0, DATA =" DISPLAY" :dstmt, TYPE = 1, LENGTH = 50;" * EXEC SQL SET DESCRIPTOR 'D12441' VALUE 15 * INDICATOR = 0, DATA = * :dstmt, TYPE = 1, LENGTH = 50; CALL"SUB161"USINGSQLCODE SQLSTATE dstmt MOVESQLCODETO SQL-COD PERFORM CHCKOK DISPLAY" "
MOVE"INTERVAL '00:56.000000' MINUTE TO SECOND " TO dstmt DISPLAY"SET DESCRIPTOR 'D12441' VALUE 16" DISPLAY" INDICATOR = 0, DATA =" DISPLAY" :dstmt, TYPE = 1, LENGTH = 50;" * EXEC SQL SET DESCRIPTOR 'D12441' VALUE 16 * INDICATOR = 0, DATA = * :dstmt, TYPE = 1, LENGTH = 50; CALL"SUB162"USINGSQLCODE SQLSTATE dstmt MOVESQLCODETO SQL-COD PERFORM CHCKOK DISPLAY" "
* EXEC SQL DELETE FROM CONCATBUF; CALL"SUB163"USINGSQLCODE SQLSTATE MOVESQLCODETO SQL-COD * EXEC SQL INSERT INTO CONCATBUF VALUES ( * 'INSERT INTO LOTSA_DATETIMES VALUES (' || * ' ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)' * ); CALL"SUB164"USINGSQLCODE SQLSTATE MOVESQLCODETO SQL-COD * EXEC SQL SELECT ZZ INTO :longst FROM CONCATBUF; CALL"SUB165"USINGSQLCODE SQLSTATE longst MOVESQLCODETO SQL-COD
DISPLAY"longst=""", longst """"
DISPLAY"PREPARE S12442 FROM :longst;" * EXEC SQL PREPARE S12442 FROM :longst; CALL"SUB166"USINGSQLCODE SQLSTATE longst MOVESQLCODETO SQL-COD PERFORM CHCKOK DISPLAY" "
COMPUTE int1 = -1 DISPLAY"SELECT COUNT(*) INTO :int1" DISPLAY" FROM LOTSA_DATETIMES WHERE" DISPLAY" C1 = DATE '1994-06-24' AND C2 = TIME '14:41:10'" DISPLAY" AND C3 = TIMESTAMP '1994-12-25 00:00:00'" DISPLAY" AND C4 = INTERVAL '1' YEAR" DISPLAY" AND C5 = INTERVAL '5' MONTH AND C6 = INTERVAL
- " '20' DAY" DISPLAY" AND C7 = INTERVAL '30' HOUR AND C8 = INTERVAL
- " '15' MINUTE" DISPLAY" AND C9 IS NULL AND" DISPLAY" C10 = INTERVAL '3-11' YEAR TO MONTH AND" DISPLAY" C11 = INTERVAL '1 16' DAY TO HOUR AND" DISPLAY" C12 = INTERVAL '1 16:10' DAY TO MINUTE AND" DISPLAY" C13 = INTERVAL '1 16:10:07' DAY TO SECOND AND" DISPLAY" C14 = INTERVAL '2:17' HOUR TO MINUTE AND" DISPLAY" C15 = INTERVAL '2:17:56' HOUR TO SECOND AND" DISPLAY" C16 = INTERVAL '0:56' MINUTE TO SECOND;" * EXEC SQL SELECT COUNT(*) INTO :int1 * FROM LOTSA_DATETIMES WHERE * C1 = DATE '1994-06-24' AND C2 = TIME '14:41:10' * AND C3 = TIMESTAMP '1994-12-25 00:00:00' * AND C4 = INTERVAL '1' YEAR * AND C5 = INTERVAL '5' MONTH AND C6 = INTERVAL '20' DAY * AND C7 = INTERVAL '30' HOUR AND C8 = INTERVAL '15' MINUTE * AND C9 IS NULL AND * C10 = INTERVAL '3-11' YEAR TO MONTH AND * C11 = INTERVAL '1 16' DAY TO HOUR AND * C12 = INTERVAL '1 16:10' DAY TO MINUTE AND * C13 = INTERVAL '1 16:10:07' DAY TO SECOND AND * C14 = INTERVAL '2:17' HOUR TO MINUTE AND * C15 = INTERVAL '2:17:56' HOUR TO SECOND AND * C16 = INTERVAL '0:56' MINUTE TO SECOND; CALL"SUB168"USINGSQLCODE SQLSTATE int1 MOVESQLCODETO SQL-COD PERFORM CHCKOK DISPLAY"int1 should be 1; its value is ", int1 if (int1 NOT = 1) then MOVE 0 TO flag END-IF
*Yet more implicit casting
MOVE"DATE '1994-12-25'
- " "TO dstmT DISPLAY"SET DESCRIPTOR 'D12441' VALUE 3" DISPLAY" TYPE = 1, LENGTH = 50," DISPLAY" DATA = :dstmt;" * EXEC SQL SET DESCRIPTOR 'D12441' VALUE 3 * TYPE = 1, LENGTH = 50, DATA = :dstmt * ; CALL"SUB169"USINGSQLCODE SQLSTATE dstmt MOVESQLCODETO SQL-COD PERFORM CHCKOK DISPLAY" "
MOVE 1 TO smint1 DISPLAY"SET DESCRIPTOR 'D12441' VALUE 4" DISPLAY" TYPE = 5, DATA = :smint1;" * EXEC SQL SET DESCRIPTOR 'D12441' VALUE 4 * TYPE = 5, DATA = :smint1; CALL"SUB170"USINGSQLCODE SQLSTATE smint1 MOVESQLCODETO SQL-COD PERFORM CHCKOK DISPLAY" "
*17.9 GR.5.b.iv NULLs do not generate exception for invalid cas
DISPLAY"SET DESCRIPTOR 'D12441' VALUE 9" DISPLAY" TYPE = 8;" * EXEC SQL SET DESCRIPTOR 'D12441' VALUE 9 * TYPE = 8; CALL"SUB171"USINGSQLCODE SQLSTATE MOVESQLCODETO SQL-COD PERFORM CHCKOK DISPLAY" "
*Syntax required by SQL-92
MOVE"INTERVAL '1 16:10' DAY TO MINUTE " TO dstmt DISPLAY"SET DESCRIPTOR 'D12441' VALUE 12" DISPLAY" TYPE = 1, LENGTH = 50," DISPLAY" DATA = :dstmt;" * EXEC SQL SET DESCRIPTOR 'D12441' VALUE 12 * TYPE = 1, LENGTH = 50, * DATA = :dstmt; CALL"SUB172"USINGSQLCODE SQLSTATE dstmt MOVESQLCODETO SQL-COD PERFORM CHCKOK DISPLAY" "
*Nice, normal syntax legalized by X3H2-94-15
MOVE"1 16:10:07 " TO dstmt DISPLAY"SET DESCRIPTOR 'D12441' VALUE 13" DISPLAY" TYPE = 1, LENGTH = 50, DATA = :dstmt;" * EXEC SQL SET DESCRIPTOR 'D12441' VALUE 13 * TYPE = 1, LENGTH = 50, DATA = :dstmt; CALL"SUB173"USINGSQLCODE SQLSTATE dstmt MOVESQLCODETO SQL-COD PERFORM CHCKOK DISPLAY" "
MOVE"INTERVAL '56' SECOND " TO dstmt DISPLAY"SET DESCRIPTOR 'D12441' VALUE 16" DISPLAY" TYPE = 1, LENGTH = 50," DISPLAY" DATA = :dstmt;" * EXEC SQL SET DESCRIPTOR 'D12441' VALUE 16 * TYPE = 1, LENGTH = 50, * DATA = :dstmt; CALL"SUB174"USINGSQLCODE SQLSTATE dstmt MOVESQLCODETO SQL-COD PERFORM CHCKOK DISPLAY" "
* EXEC SQL DELETE FROM CONCATBUF; CALL"SUB175"USINGSQLCODE SQLSTATE MOVESQLCODETO SQL-COD * EXEC SQL INSERT INTO CONCATBUF VALUES ( * 'SELECT COUNT(*) FROM LOTSA_DATETIMES' || * ' WHERE C1 = ? AND C2 = ? AND C3 = ?' || * ' AND C4 = ? AND C5 = ? AND C6 = ?' || * ' AND C7 = ? AND C8 = ? AND (C9 = ? OR C9 IS NULL)' || * ' AND C10 = ? AND C11 = ? AND C12 = ?' || * ' AND C13 = ? AND C14 = ? AND C15 = ?' || * ' AND C16 = ?' * ); CALL"SUB176"USINGSQLCODE SQLSTATE MOVESQLCODETO SQL-COD * EXEC SQL SELECT ZZ INTO :longst FROM CONCATBUF; CALL"SUB177"USINGSQLCODE SQLSTATE longst MOVESQLCODETO SQL-COD
DISPLAY"longst=""", longst """"
DISPLAY"PREPARE S12443 FROM :longst;" * EXEC SQL PREPARE S12443 FROM :longst; CALL"SUB178"USINGSQLCODE SQLSTATE longst MOVESQLCODETO SQL-COD PERFORM CHCKOK DISPLAY" "
DISPLAY"DECLARE C12443 CURSOR FOR S12443;" * EXEC SQL DECLARE C12443 CURSOR FOR S12443 END-EXEC DISPLAY" "
DISPLAY"OPEN C12443 USING SQL DESCRIPTOR 'D12441';" * EXEC SQL OPEN C12443 USING SQL DESCRIPTOR 'D12441'; CALL"SUB179"USINGSQLCODE SQLSTATE MOVESQLCODETO SQL-COD PERFORM CHCKOK DISPLAY" "
COMPUTE int1 = -1 DISPLAY"FETCH C12443 INTO :int1;" * EXEC SQL FETCH C12443 INTO :int1; CALL"SUB180"USINGSQLCODE SQLSTATE int1 MOVESQLCODETO SQL-COD PERFORM CHCKOK DISPLAY"int1 should be 1; its value is ", int1 if (int1 NOT = 1) then MOVE 0 TO flag END-IF
COMPUTE bin9 = -1 COMPUTE int2 = -1 DISPLAY"GET DESCRIPTOR 'D12441' VALUE 4" DISPLAY" :bin9 = DATA, :int2 = INDICATOR;" * EXEC SQL GET DESCRIPTOR 'D12441' VALUE 4 * :bin9 = DATA, :int2 = INDICATOR; CALL"SUB188"USINGSQLCODE SQLSTATE bin9 int2 MOVESQLCODETO SQL-COD PERFORM CHCKOK MOVE bin9 TO BIN-1 DISPLAY"bin9 should be 1; its value is ", BIN-1 DISPLAY"int2 should be 0; its value is ", int2 if (bin9 NOT = 1 OR int2 NOT = 0) then MOVE 0 TO flag END-IF
*6.10 GR.2.a: NULLs can be cast from anything to anything.
MOVE 42 TO int1 DISPLAY"GET DESCRIPTOR 'D12441' VALUE 9" DISPLAY" :int1 = INDICATOR;" * EXEC SQL GET DESCRIPTOR 'D12441' VALUE 9 * :int1 = INDICATOR; CALL"SUB189"USINGSQLCODE SQLSTATE int1 MOVESQLCODETO SQL-COD PERFORM CHCKOK DISPLAY"int1 should be -1; its value is ", int1 if (int1 NOT = -1) then MOVE 0 TO flag END-IF
*Syntax required by SQL-92
MOVE"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" TO dstmt DISPLAY"GET DESCRIPTOR 'D12441' VALUE 15" DISPLAY" :dstmt = DATA;" * EXEC SQL GET DESCRIPTOR 'D12441' VALUE 15 * :dstmt = DATA; CALL"SUB190"USINGSQLCODE SQLSTATE dstmt MOVESQLCODETO SQL-COD PERFORM CHCKOK DISPLAY"dstmt should be very similar to" DISPLAY" INTERVAL '2:17:56.000000' HOUR TO SECOND" DISPLAY"Its value is ", dstmt if (dstmt NOT > "INTERVAL
- " ") then MOVE 0 TO flag END-IF if (dstmt NOT < "INTERVAM
- " ") then MOVE 0 TO flag END-IF
*Test SQLCODE and SQLSTATE for normal completion.
CHCKOK. DISPLAY"SQLCODE should be 0; its value is ", SQL-COD DISPLAY"SQLSTATE should be 00000; its value is ", SQLSTATE PERFORM NOSUBCLASS THRU EXIT-NOSUBCLASS if (SQLCODENOT = 0 OR NORMSQ NOT = "00000") then MOVE 0 TO flag END-IF if (NORMSQ = "00000"AND NORMSQ NOT = SQLSTATE) then DISPLAY"Valid implementation-defined SQLSTATE accepted." END-IF
.
NOSUBCLASS.
*This routine replaces valid implementation-defined *subclasses with 000. This replacement equates valid *implementation-defined subclasses with the 000 value *expected by the test case; otherwise the test will fail. *After calling NOSUBCLASS, NORMSQ will be tested * SQLSTATE will be printed.
MOVE SQLSTATE TO NORMSQ
MOVE 3 TO norm1 *subclass begins in position 3 of char array NORMSQ *valid subclass begins with 5-9, I-Z, end of ALPNUM table PERFORMVARYING norm2 FROM 14 BY 1 UNTIL norm2 > 36 if (NORMSQX(norm1) = ALPNUM(norm2)) then MOVE"0"TO NORMSQX(norm1) END-IF END-PERFORM
*Quit if NORMSQ is unchanged. Subclass is not impl.-def. *Changed NORMSQ means implementation-defined subclass, *so proceed to zero it out, if valid (0-9,A-Z) if (NORMSQ = SQLSTATE) then GOTO EXIT-NOSUBCLASS END-IF
MOVE 4 TO norm1 *examining position 4 of char array NORMSQ *valid characters are 0-9, A-Z PERFORMVARYING norm2 FROM 1 BY 1 UNTIL norm2 > 36 if (NORMSQX(norm1) = ALPNUM(norm2)) then MOVE"0"TO NORMSQX(norm1) END-IF END-PERFORM
MOVE 5 TO norm1 *valid characters are 0-9, A-Z *examining position 5 of char array NORMSQ PERFORMVARYING norm2 FROM 1 BY 1 UNTIL norm2 > 36 if (NORMSQX(norm1) = ALPNUM(norm2)) then MOVE"0"TO NORMSQX(norm1) END-IF END-PERFORM
*implementation-defined subclasses are allowed for warnings *(class = 01). These equate to successful completion *SQLSTATE values of 00000. *Reference SQL-92 4.28 SQL-transactions, paragraph 2
if (NORMSQX(1) = "0"AND NORMSQX(2) = "1") then MOVE"0"TO NORMSQX(2) END-IF
.
EXIT-NOSUBCLASS. EXIT.
Messung V0.5 in Prozent
¤ Diese beiden folgenden Angebotsgruppen bietet das Unternehmen0.51Angebot
(Wie Sie bei der Firma Beratungs- und Dienstleistungen beauftragen können 2026-04-26)
¤
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 und die Messung sind noch experimentell.