products/Sources/formale Sprachen/Cobol/Test-Suite/SQL M image not shown  

Quellcode-Bibliothek

© Kompilation durch diese Firma

[Weder Korrektheit noch Funktionsfähigkeit der Software werden zugesichert.]

Datei: dml132.cob   Sprache: Cobol

       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.39 Sekunden  (vorverarbeitet)  ¤





Download des
Quellennavigators
Download des
sprechenden Kalenders

in der Quellcodebibliothek suchen




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.


Bot Zugriff