IDENTIFICATION DIVISION.
PROGRAM-ID. DML132.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER. xyz.
OBJECT-COMPUTER. xyz.
DATA DIVISION.
WORKING-STORAGE SECTION.
* Standard COBOL (file "DML132.SCO") calling SQL
* procedures in file "DML132.MCO".
****************************************************************
*
* COMMENT SECTION
*
* DATE 1994/08/17 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.
*
* DML132.SCO
* WRITTEN BY: David Flater
* TRANSLATED AUTOMATICALLY FROM EMBEDDED COBOL BY CHRIS SCHANZLE
*
* This routine tests FIPS sizing.
*
* REFERENCES
* ANSI SQL-1992
*
****************************************************************
* EXEC SQL BEGIN DECLARE SECTION END-EXEC
01 cv00 PIC X(2).
01 cv01 PIC X(2).
01 cv02 PIC X(2).
01 cv03 PIC X(2).
01 cv04 PIC X(2).
01 cv05 PIC X(2).
01 cv06 PIC X(2).
01 cv07 PIC X(2).
01 cv08 PIC X(2).
01 cv09 PIC X(2).
01 cv10 PIC X(2).
01 cv11 PIC X(2).
01 cv12 PIC X(2).
01 cv13 PIC X(2).
01 cv14 PIC X(2).
01 cv15 PIC X(2).
01 cv16 PIC X(2).
01 cv17 PIC X(2).
01 cv18 PIC X(2).
01 cv19 PIC X(2).
01 cv20 PIC X(2).
01 cv21 PIC X(2).
01 cv22 PIC X(2).
01 cv23 PIC X(2).
01 cv24 PIC X(2).
01 cv25 PIC X(2).
01 cv26 PIC X(2).
01 cv27 PIC X(2).
01 cv28 PIC X(2).
01 cv29 PIC X(2).
01 cv30 PIC X(2).
01 cv31 PIC X(2).
01 cv32 PIC X(2).
01 cv33 PIC X(2).
01 cv34 PIC X(2).
01 cv35 PIC X(2).
01 cv36 PIC X(2).
01 cv37 PIC X(2).
01 cv38 PIC X(2).
01 cv39 PIC X(2).
01 cv40 PIC X(2).
01 cv41 PIC X(2).
01 cv42 PIC X(2).
01 cv43 PIC X(2).
01 cv44 PIC X(2).
01 cv45 PIC X(2).
01 cv46 PIC X(2).
01 cv47 PIC X(2).
01 cv48 PIC X(2).
01 cv49 PIC X(2).
01 cv50 PIC X(2).
01 cv51 PIC X(2).
01 cv52 PIC X(2).
01 cv53 PIC X(2).
01 cv54 PIC X(2).
01 cv55 PIC X(2).
01 cv56 PIC X(2).
01 cv57 PIC X(2).
01 cv58 PIC X(2).
01 cv59 PIC X(2).
01 cv60 PIC X(2).
01 cv61 PIC X(2).
01 cv62 PIC X(2).
01 cv63 PIC X(2).
01 cv64 PIC X(2).
01 cv65 PIC X(2).
01 cv66 PIC X(2).
01 cv67 PIC X(2).
01 cv68 PIC X(2).
01 cv69 PIC X(2).
01 cv70 PIC X(2).
01 cv71 PIC X(2).
01 cv72 PIC X(2).
01 cv73 PIC X(2).
01 cv74 PIC X(2).
01 cv75 PIC X(2).
01 cv76 PIC X(2).
01 cv77 PIC X(2).
01 cv78 PIC X(2).
01 cv79 PIC X(2).
01 cv80 PIC X(2).
01 cv81 PIC X(2).
01 cv82 PIC X(2).
01 cv83 PIC X(2).
01 cv84 PIC X(2).
01 cv85 PIC X(2).
01 cv86 PIC X(2).
01 cv87 PIC X(2).
01 cv88 PIC X(2).
01 cv89 PIC X(2).
01 cv90 PIC X(2).
01 cv91 PIC X(2).
01 cv92 PIC X(2).
01 cv93 PIC X(2).
01 cv94 PIC X(2).
01 cv95 PIC X(2).
01 cv96 PIC X(2).
01 cv97 PIC X(2).
01 cv98 PIC X(2).
01 cv99 PIC X(2).
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) DISPLAY SIGN LEADING SEPARATE.
01 int2 PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
01 indic1 PIC S9(4) DISPLAY SIGN LEADING SEPARATE.
01 indic2 PIC S9(4) DISPLAY SIGN LEADING SEPARATE.
* EXEC SQL END DECLARE SECTION END-EXEC
01 norm1 PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
01 norm2 PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
01 ALPNUM-TABLE VALUE IS
"01234ABCDEFGH56789IJKLMNOPQRSTUVWXYZ".
05 ALPNUM PIC X OCCURS 36 TIMES.
01 NORMSQ.
05 NORMSQX PIC X OCCURS 5 TIMES.
01 errcnt PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
*date_time declaration
01 TO-DAY PIC 9(6).
01 THE-TIME PIC 9(8).
01 flag PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
01 SQL-COD PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
PROCEDURE DIVISION.
P0.
MOVE "FLATER " TO uid
CALL "AUTHID" USING uid
MOVE "not logged in, not" TO uidx
* EXEC SQL SELECT USER INTO :uidx FROM HU.ECCO;
CALL "SUB1" USING SQLCODE SQLSTATE uidx
MOVE SQLCODE TO SQL-COD
* EXEC SQL ROLLBACK WORK;
CALL "SUB2" USING SQLCODE SQLSTATE
MOVE SQLCODE TO SQL-COD
if (uid NOT = uidx) then
DISPLAY "ERROR: User ", uid " expected. User ", uidx "
- " connected"
STOP RUN
END-IF
MOVE 0 TO errcnt
DISPLAY
"SQL Test Suite, V6.0, Module COBOL, dml132.sco"
DISPLAY
"59-byte ID"
DISPLAY "TEd Version #"
*date_time print
ACCEPT TO-DAY FROM DATE
ACCEPT THE-TIME FROM TIME
DISPLAY "Date run YYMMDD: " TO-DAY " at hhmmssff: " THE-TIME
******************** BEGIN TEST0515 *******************
MOVE 1 TO flag
*This test is based on dml098 TEST0579
DISPLAY " TEST0515 "
DISPLAY "FIPS sizing: NUMERIC (15) decimal precision"
DISPLAY "References:"
DISPLAY " FIPS 16.6 -- Sizing for database constructs"
DISPLAY " - - - - - - - - - - - - - - - - - - -"
COMPUTE SQLCODE = -1
MOVE "xxxxx" TO SQLSTATE
DISPLAY "INSERT INTO HU.P15 VALUES (999999999999999);"
* EXEC SQL INSERT INTO HU.P15 VALUES (999999999999999)
* ;
CALL "SUB3" USING SQLCODE SQLSTATE
MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK
DISPLAY " "
DISPLAY "INSERT INTO HU.P15 VALUES (-999999999999999);"
* EXEC SQL INSERT INTO HU.P15 VALUES (-999999999999999)
* ;
CALL "SUB4" USING SQLCODE SQLSTATE
MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK
DISPLAY " "
*Since these are exact numerics, there should be no problems
*with the precision of + and -.
COMPUTE int1 = -1
DISPLAY "SELECT NUMTEST - 999999999999990,"
DISPLAY " NUMTEST / 9999999 INTO :int1, :int2"
DISPLAY " FROM HU.P15 WHERE NUMTEST > 0;"
* EXEC SQL SELECT NUMTEST - 999999999999990,
* NUMTEST / 9999999 INTO :int1, :int2
* FROM HU.P15 WHERE NUMTEST > 0;
CALL "SUB5" USING SQLCODE SQLSTATE int1 int2
MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK
DISPLAY "int1 should be 9; its value is ", int1
DISPLAY "int2 should be 100000010; its value is ", int2
if (int1 NOT = 9 OR int2 NOT = 100000010) then
MOVE 0 TO flag
END-IF
COMPUTE int1 = -1
DISPLAY "SELECT NUMTEST + 999999999999990,"
DISPLAY " NUMTEST / 9999999 INTO :int1, :int2"
DISPLAY " FROM HU.P15 WHERE NUMTEST < 0;"
* EXEC SQL SELECT NUMTEST + 999999999999990,
* NUMTEST / 9999999 INTO :int1, :int2
* FROM HU.P15 WHERE NUMTEST < 0;
CALL "SUB6" USING SQLCODE SQLSTATE int1 int2
MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK
DISPLAY "int1 should be -9; its value is ", int1
DISPLAY "int2 should be -100000010; its value is ", int2
if (int1 NOT = -9 OR int2 NOT = -100000010) then
MOVE 0 TO flag
END-IF
DISPLAY "DELETE FROM HU.P15;"
* EXEC SQL DELETE FROM HU.P15;
CALL "SUB7" USING SQLCODE SQLSTATE
MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK
DISPLAY " "
DISPLAY "INSERT INTO HU.P15 VALUES (562949953421313);"
* EXEC SQL INSERT INTO HU.P15 VALUES (562949953421313)
* ;
CALL "SUB8" USING SQLCODE SQLSTATE
MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK
DISPLAY " "
COMPUTE int1 = -1
DISPLAY "SELECT COUNT(*) INTO :int1"
DISPLAY " FROM HU.P15 WHERE NUMTEST = 562949953421312;"
* EXEC SQL SELECT COUNT(*) INTO :int1
* FROM HU.P15 WHERE NUMTEST = 562949953421312;
CALL "SUB9" USING SQLCODE SQLSTATE int1
MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK
DISPLAY "int1 should be 0; its value is ", int1
if (int1 NOT = 0) then
MOVE 0 TO flag
END-IF
COMPUTE int1 = -1
DISPLAY "SELECT COUNT(*) INTO :int1"
DISPLAY " FROM HU.P15 WHERE NUMTEST = 562949953421313;"
* EXEC SQL SELECT COUNT(*) INTO :int1
* FROM HU.P15 WHERE NUMTEST = 562949953421313;
CALL "SUB10" USING SQLCODE SQLSTATE int1
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
COMPUTE int1 = -1
DISPLAY "SELECT COUNT(*) INTO :int1"
DISPLAY " FROM HU.P15 WHERE NUMTEST = 562949953421314;"
* EXEC SQL SELECT COUNT(*) INTO :int1
* FROM HU.P15 WHERE NUMTEST = 562949953421314;
CALL "SUB11" USING SQLCODE SQLSTATE int1
MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK
DISPLAY "int1 should be 0; its value is ", int1
if (int1 NOT = 0) then
MOVE 0 TO flag
END-IF
DISPLAY "ROLLBACK WORK;"
* EXEC SQL ROLLBACK WORK;
CALL "SUB12" USING SQLCODE SQLSTATE
MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK
DISPLAY " "
if (flag = 1) then
DISPLAY " *** pass *** "
* EXEC SQL INSERT INTO HU.TESTREPORT
* VALUES('0515','pass','MCO');
CALL "SUB13" USING SQLCODE SQLSTATE
MOVE SQLCODE TO SQL-COD
else
DISPLAY " dml132.sco *** fail *** "
* EXEC SQL INSERT INTO HU.TESTREPORT
* VALUES('0515','fail','MCO');
CALL "SUB14" USING SQLCODE SQLSTATE
MOVE SQLCODE TO SQL-COD
COMPUTE errcnt = errcnt + 1
END-IF
* EXEC SQL COMMIT WORK;
CALL "SUB15" USING SQLCODE SQLSTATE
MOVE SQLCODE TO SQL-COD
DISPLAY "================================================"
******************** END TEST0515 ********************
******************** BEGIN TEST0524 *******************
MOVE 1 TO flag
*This test is based on dml056 TEST0246
DISPLAY " TEST0524 "
DISPLAY " FIPS sizing: 100 Items in a SELECT list"
DISPLAY "References:"
DISPLAY " FIPS 16.6 -- Sizing for database constructs"
DISPLAY " - - - - - - - - - - - - - - - - - - -"
COMPUTE SQLCODE = -1
MOVE "xxxxx" TO SQLSTATE
DISPLAY "DELETE FROM HU.T100;"
* EXEC SQL DELETE FROM HU.T100;
CALL "SUB16" USING SQLCODE SQLSTATE
MOVE SQLCODE TO SQL-COD
DISPLAY "INSERT INTO HU.T100 VALUES ('00', '01', '02',"
DISPLAY " '03', '04', '05', '06', '07', '08', '09', '0a',
- " '0b', '0c',"
DISPLAY " '0d', '0e', '0f', '10', '11', '12', '13', '14',
- " '15', '16',"
DISPLAY " '17', '18', '19', '1a', '1b', '1c', '1d', '1e',
- " '1f', '20',"
DISPLAY " '21', '22', '23', '24', '25', '26', '27', '28',
- " '29', '2a',"
DISPLAY " '2b', '2c', '2d', '2e', '2f', '30', '31', '32',
- " '33', '34',"
DISPLAY " '35', '36', '37', '38', '39', '3a', '3b', '3c',
- " '3d', '3e',"
DISPLAY " '3f', '40', '41', '42', '43', '44', '45', '46',
- " '47', '48',"
DISPLAY " '49', '4a', '4b', '4c', '4d', '4e', '4f', '50',
- " '51', '52',"
DISPLAY " '53', '54', '55', '56', '57', '58', '59', '5a',
- " '5b', '5c',"
DISPLAY " '5d', '5e', '5f', '60', '61', '62', '63');"
* EXEC SQL INSERT INTO HU.T100 VALUES ('00', '01', '02',
* '03', '04', '05', '06', '07', '08', '09', '0a', '0b',
* '0c',
* '0d', '0e', '0f', '10', '11', '12', '13', '14', '15',
* '16',
* '17', '18', '19', '1a', '1b', '1c', '1d', '1e', '1f',
* '20',
* '21', '22', '23', '24', '25', '26', '27', '28', '29',
* '2a',
* '2b', '2c', '2d', '2e', '2f', '30', '31', '32', '33',
* '34',
* '35', '36', '37', '38', '39', '3a', '3b', '3c', '3d',
* '3e',
* '3f', '40', '41', '42', '43', '44', '45', '46', '47',
* '48',
* '49', '4a', '4b', '4c', '4d', '4e', '4f', '50', '51',
* '52',
* '53', '54', '55', '56', '57', '58', '59', '5a', '5b',
* '5c',
* '5d', '5e', '5f', '60', '61', '62', '63');
CALL "SUB17" USING SQLCODE SQLSTATE
MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK
DISPLAY " "
MOVE "xx" TO cv00
MOVE "xx" TO cv01
MOVE "xx" TO cv02
MOVE "xx" TO cv03
MOVE "xx" TO cv04
MOVE "xx" TO cv05
MOVE "xx" TO cv06
MOVE "xx" TO cv07
MOVE "xx" TO cv08
MOVE "xx" TO cv09
MOVE "xx" TO cv10
MOVE "xx" TO cv11
MOVE "xx" TO cv12
MOVE "xx" TO cv13
MOVE "xx" TO cv14
MOVE "xx" TO cv15
MOVE "xx" TO cv16
MOVE "xx" TO cv17
MOVE "xx" TO cv18
MOVE "xx" TO cv19
MOVE "xx" TO cv20
MOVE "xx" TO cv21
MOVE "xx" TO cv22
MOVE "xx" TO cv23
MOVE "xx" TO cv24
MOVE "xx" TO cv25
MOVE "xx" TO cv26
MOVE "xx" TO cv27
MOVE "xx" TO cv28
MOVE "xx" TO cv29
MOVE "xx" TO cv30
MOVE "xx" TO cv31
MOVE "xx" TO cv32
MOVE "xx" TO cv33
MOVE "xx" TO cv34
MOVE "xx" TO cv35
MOVE "xx" TO cv36
MOVE "xx" TO cv37
MOVE "xx" TO cv38
MOVE "xx" TO cv39
MOVE "xx" TO cv40
MOVE "xx" TO cv41
MOVE "xx" TO cv42
MOVE "xx" TO cv43
MOVE "xx" TO cv44
MOVE "xx" TO cv45
MOVE "xx" TO cv46
MOVE "xx" TO cv47
MOVE "xx" TO cv48
MOVE "xx" TO cv49
MOVE "xx" TO cv50
MOVE "xx" TO cv51
MOVE "xx" TO cv52
MOVE "xx" TO cv53
MOVE "xx" TO cv54
MOVE "xx" TO cv55
MOVE "xx" TO cv56
MOVE "xx" TO cv57
MOVE "xx" TO cv58
MOVE "xx" TO cv59
MOVE "xx" TO cv60
MOVE "xx" TO cv61
MOVE "xx" TO cv62
MOVE "xx" TO cv63
MOVE "xx" TO cv64
MOVE "xx" TO cv65
MOVE "xx" TO cv66
MOVE "xx" TO cv67
MOVE "xx" TO cv68
MOVE "xx" TO cv69
MOVE "xx" TO cv70
MOVE "xx" TO cv71
MOVE "xx" TO cv72
MOVE "xx" TO cv73
MOVE "xx" TO cv74
MOVE "xx" TO cv75
MOVE "xx" TO cv76
MOVE "xx" TO cv77
MOVE "xx" TO cv78
MOVE "xx" TO cv79
MOVE "xx" TO cv80
MOVE "xx" TO cv81
MOVE "xx" TO cv82
MOVE "xx" TO cv83
MOVE "xx" TO cv84
MOVE "xx" TO cv85
MOVE "xx" TO cv86
MOVE "xx" TO cv87
MOVE "xx" TO cv88
MOVE "xx" TO cv89
MOVE "xx" TO cv90
MOVE "xx" TO cv91
MOVE "xx" TO cv92
MOVE "xx" TO cv93
MOVE "xx" TO cv94
MOVE "xx" TO cv95
MOVE "xx" TO cv96
MOVE "xx" TO cv97
MOVE "xx" TO cv98
MOVE "xx" TO cv99
COMPUTE indic1 = -1
COMPUTE indic2 = -1
DISPLAY "SELECT"
DISPLAY " C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11,
- " C12, C13, C14,"
DISPLAY " C15, C16, C17, C18, C19, C20, C21, C22, C23,
- " C24, C25, C26,"
DISPLAY " C27, C28, C29, C30, C31, C32, C33, C34, C35,
- " C36, C37, C38,"
DISPLAY " C39, C40, C41, C42, C43, C44, C45, C46, C47,
- " C48, C49, C50,"
DISPLAY " C51, C52, C53, C54, C55, C56, C57, C58, C59,
- " C60, C61, C62,"
DISPLAY " C63, C64, C65, C66, C67, C68, C69, C70, C71,
- " C72, C73, C74,"
DISPLAY " C75, C76, C77, C78, C79, C80, C81, C82, C83,
- " C84, C85, C86,"
DISPLAY " C87, C88, C89, C90, C91, C92, C93, C94, C95,
- " C96, C97, C98,"
DISPLAY " C99, C100"
DISPLAY " "
DISPLAY " INTO"
DISPLAY " :cv00, :cv01, :cv02, :cv03, :cv04:indic1,"
DISPLAY " :cv05, :cv06, :cv07, :cv08, :cv09,"
DISPLAY " :cv10, :cv11, :cv12, :cv13, :cv14,"
DISPLAY " :cv15, :cv16, :cv17, :cv18, :cv19,"
DISPLAY " :cv20, :cv21, :cv22, :cv23, :cv24,"
DISPLAY " :cv25, :cv26, :cv27, :cv28, :cv29,"
DISPLAY " :cv30, :cv31, :cv32, :cv33, :cv34,"
DISPLAY " :cv35, :cv36, :cv37, :cv38, :cv39,"
DISPLAY " :cv40, :cv41, :cv42, :cv43, :cv44,"
DISPLAY " :cv45, :cv46, :cv47, :cv48, :cv49,"
DISPLAY " :cv50, :cv51, :cv52, :cv53, :cv54,"
DISPLAY " :cv55, :cv56, :cv57, :cv58, :cv59,"
DISPLAY " :cv60, :cv61, :cv62, :cv63, :cv64,"
DISPLAY " :cv65, :cv66, :cv67, :cv68, :cv69,"
DISPLAY " :cv70, :cv71, :cv72, :cv73, :cv74,"
DISPLAY " :cv75, :cv76, :cv77, :cv78, :cv79,"
DISPLAY " :cv80, :cv81, :cv82, :cv83, :cv84,"
DISPLAY " :cv85, :cv86, :cv87, :cv88, :cv89,"
DISPLAY " :cv90, :cv91, :cv92, :cv93, :cv94,"
DISPLAY " :cv95, :cv96, :cv97, :cv98, :cv99:indic2"
DISPLAY " "
DISPLAY " FROM HU.T100;"
* EXEC SQL SELECT
* C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13,
* C14,
* C15, C16, C17, C18, C19, C20, C21, C22, C23, C24, C25,
* C26,
* C27, C28, C29, C30, C31, C32, C33, C34, C35, C36, C37,
* C38,
* C39, C40, C41, C42, C43, C44, C45, C46, C47, C48, C49,
* C50,
* C51, C52, C53, C54, C55, C56, C57, C58, C59, C60, C61,
* C62,
* C63, C64, C65, C66, C67, C68, C69, C70, C71, C72, C73,
* C74,
* C75, C76, C77, C78, C79, C80, C81, C82, C83, C84, C85,
* C86,
* C87, C88, C89, C90, C91, C92, C93, C94, C95, C96, C97,
* C98,
* C99, C100
*
* INTO
* :cv00, :cv01, :cv02, :cv03, :cv04:indic1,
* :cv05, :cv06, :cv07, :cv08, :cv09,
* :cv10, :cv11, :cv12, :cv13, :cv14,
* :cv15, :cv16, :cv17, :cv18, :cv19,
* :cv20, :cv21, :cv22, :cv23, :cv24,
* :cv25, :cv26, :cv27, :cv28, :cv29,
* :cv30, :cv31, :cv32, :cv33, :cv34,
* :cv35, :cv36, :cv37, :cv38, :cv39,
* :cv40, :cv41, :cv42, :cv43, :cv44,
* :cv45, :cv46, :cv47, :cv48, :cv49,
* :cv50, :cv51, :cv52, :cv53, :cv54,
* :cv55, :cv56, :cv57, :cv58, :cv59,
* :cv60, :cv61, :cv62, :cv63, :cv64,
* :cv65, :cv66, :cv67, :cv68, :cv69,
* :cv70, :cv71, :cv72, :cv73, :cv74,
* :cv75, :cv76, :cv77, :cv78, :cv79,
* :cv80, :cv81, :cv82, :cv83, :cv84,
* :cv85, :cv86, :cv87, :cv88, :cv89,
* :cv90, :cv91, :cv92, :cv93, :cv94,
* :cv95, :cv96, :cv97, :cv98, :cv99:indic2
*
* FROM HU.T100;
CALL "SUB18" USING SQLCODE SQLSTATE cv00 cv01 cv02 cv03
cv04 indic1 cv05 cv06 cv07 cv08 cv09 cv10 cv11 cv12 cv13
cv14 cv15 cv16 cv17 cv18 cv19 cv20 cv21 cv22 cv23 cv24
cv25 cv26 cv27 cv28 cv29 cv30 cv31 cv32 cv33 cv34 cv35
cv36 cv37 cv38 cv39 cv40 cv41 cv42 cv43 cv44 cv45 cv46
cv47 cv48 cv49 cv50 cv51 cv52 cv53 cv54 cv55 cv56 cv57
cv58 cv59 cv60 cv61 cv62 cv63 cv64 cv65 cv66 cv67 cv68
cv69 cv70 cv71 cv72 cv73 cv74 cv75 cv76 cv77 cv78 cv79
cv80 cv81 cv82 cv83 cv84 cv85 cv86 cv87 cv88 cv89 cv90
cv91 cv92 cv93 cv94 cv95 cv96 cv97 cv98 cv99 indic2
MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK
DISPLAY "indic1 should be 0; its value is ", indic1
if (indic1 NOT = 0) then
MOVE 0 TO flag
END-IF
DISPLAY "indic2 should be 0; its value is ", indic2
if (indic2 NOT = 0) then
MOVE 0 TO flag
END-IF
DISPLAY "cv00 should be '00'; its value is ", cv00
if (cv00 NOT = "00") then
MOVE 0 TO flag
END-IF
DISPLAY "cv49 should be '31'; its value is ", cv49
if (cv49 NOT = "31") then
MOVE 0 TO flag
END-IF
DISPLAY "cv66 should be '42'; its value is ", cv66
if (cv66 NOT = "42") then
MOVE 0 TO flag
END-IF
DISPLAY "cv99 should be '63'; its value is ", cv99
if (cv99 NOT = "63") then
MOVE 0 TO flag
END-IF
DISPLAY "ROLLBACK WORK;"
* EXEC SQL ROLLBACK WORK;
CALL "SUB19" USING SQLCODE SQLSTATE
MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK
DISPLAY " "
if (flag = 1) then
DISPLAY " *** pass *** "
* EXEC SQL INSERT INTO HU.TESTREPORT
* VALUES('0524','pass','MCO');
CALL "SUB20" USING SQLCODE SQLSTATE
MOVE SQLCODE TO SQL-COD
else
DISPLAY " dml132.sco *** fail *** "
* EXEC SQL INSERT INTO HU.TESTREPORT
* VALUES('0524','fail','MCO');
CALL "SUB21" USING SQLCODE SQLSTATE
MOVE SQLCODE TO SQL-COD
COMPUTE errcnt = errcnt + 1
END-IF
* EXEC SQL COMMIT WORK;
CALL "SUB22" USING SQLCODE SQLSTATE
MOVE SQLCODE TO SQL-COD
DISPLAY "================================================"
******************** END TEST0524 ********************
******************** BEGIN TEST0525 *******************
MOVE 1 TO flag
DISPLAY " TEST0525 "
DISPLAY "FIPS sizing: 15 Table references in SQL
- " statement"
DISPLAY "References:"
DISPLAY " FIPS 16.6 -- Sizing for database constructs"
DISPLAY " - - - - - - - - - - - - - - - - - - -"
COMPUTE SQLCODE = -1
MOVE "xxxxx" TO SQLSTATE
*VS2 counts 3
*VS1 and VSTAFF3 count 2
*All others count 1
DISPLAY "DECLARE SILLY CURSOR FOR"
DISPLAY " SELECT COUNT(*) FROM"
DISPLAY " HU.WORKS T01, HU.PROJ T02, HU.STAFF T03,"
DISPLAY " USIG T04, U_SIG T05, BASE_VS1 T06, VS1 T07,"
DISPLAY " VS2 T08, HU.VSTAFF3 T09, BASE_WCOV T10"
DISPLAY " WHERE T03.EMPNUM > 'E1';"
* EXEC SQL DECLARE SILLY CURSOR FOR
* SELECT COUNT(*) FROM
* HU.WORKS T01, HU.PROJ T02, HU.STAFF T03,
* USIG T04, U_SIG T05, BASE_VS1 T06, VS1 T07,
* VS2 T08, HU.VSTAFF3 T09, BASE_WCOV T10
* WHERE T03.EMPNUM > 'E1' END-EXEC
*Put 1 row in BASE_WCOV
DISPLAY "DELETE FROM BASE_WCOV;"
* EXEC SQL DELETE FROM BASE_WCOV;
CALL "SUB23" USING SQLCODE SQLSTATE
MOVE SQLCODE TO SQL-COD
DISPLAY "INSERT INTO BASE_WCOV VALUES (1);"
* EXEC SQL INSERT INTO BASE_WCOV VALUES (1);
CALL "SUB24" USING SQLCODE SQLSTATE
MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK
DISPLAY " "
*Speed up the query. Only E2 survives.
DISPLAY "DELETE FROM HU.STAFF WHERE EMPNUM > 'E2';"
* EXEC SQL DELETE FROM HU.STAFF WHERE EMPNUM > 'E2';
CALL "SUB25" USING SQLCODE SQLSTATE
MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK
DISPLAY " "
*Rows:
*T01 12
*T02 6
*T03 1
*T04 2
*T05 2
*T06 4
*T07 2
*T08 4
*T09 5
*T10 1
*--------
* 46080
DISPLAY "OPEN SILLY;"
* EXEC SQL OPEN SILLY;
CALL "SUB26" USING SQLCODE SQLSTATE
MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK
DISPLAY " "
COMPUTE int1 = -1
DISPLAY "FETCH SILLY INTO :int1;"
* EXEC SQL FETCH SILLY INTO :int1;
CALL "SUB27" USING SQLCODE SQLSTATE int1
MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK
DISPLAY "int1 should be 46080; its value is ", int1
if (int1 NOT = 46080) then
MOVE 0 TO flag
END-IF
DISPLAY "ROLLBACK WORK;"
* EXEC SQL ROLLBACK WORK;
CALL "SUB28" USING SQLCODE SQLSTATE
MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK
DISPLAY " "
if (flag = 1) then
DISPLAY " *** pass *** "
* EXEC SQL INSERT INTO HU.TESTREPORT
* VALUES('0525','pass','MCO');
CALL "SUB29" USING SQLCODE SQLSTATE
MOVE SQLCODE TO SQL-COD
else
DISPLAY " dml132.sco *** fail *** "
* EXEC SQL INSERT INTO HU.TESTREPORT
* VALUES('0525','fail','MCO');
CALL "SUB30" USING SQLCODE SQLSTATE
MOVE SQLCODE TO SQL-COD
COMPUTE errcnt = errcnt + 1
END-IF
* EXEC SQL COMMIT WORK;
CALL "SUB31" USING SQLCODE SQLSTATE
MOVE SQLCODE TO SQL-COD
DISPLAY "================================================"
******************** END TEST0525 ********************
**** TESTER MAY CHOOSE TO INSERT CODE FOR errcnt > 0
STOP RUN.
* **** Procedures for PERFORM statements
*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 (SQLCODE NOT = 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
PERFORM VARYING 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
GO TO EXIT-NOSUBCLASS
END-IF
MOVE 4 TO norm1
*examining position 4 of char array NORMSQ
*valid characters are 0-9, A-Z
PERFORM VARYING 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
PERFORM VARYING 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.
¤ Dauer der Verarbeitung: 0.47 Sekunden
(vorverarbeitet)
¤
|
Haftungshinweis
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.
|