IDENTIFICATION DIVISION.
PROGRAM-ID. DML076.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER. xyz.
OBJECT-COMPUTER. xyz.
DATA DIVISION.
WORKING-STORAGE SECTION.
* Embedded SQL COBOL ("DML076.PCO") translated from
* Embedded C on Tue Jul 16 10:05:50 1991.
* EMBEDDED COBOL (file "DML076.PCO")
*********************************************************
*
* COMMENT SECTION
*
* DATE 1991/06/18 EMBEDDED COBOL LANGUAGE
* NIST SQL VALIDATION TEST SUITE V6.0
* DISCLAIMER:
* This program was written by employees of NIST to test SQL
* implementations for conformance to the SQL standards.
* NIST assumes no responsibility for any party's use of
* this program.
*
* DML076.PCO
* WRITTEN BY: YOLANDA HERD
*
* THIS ROUTINE TESTS NULLS AND CURSORS
*
* REFERENCES
* AMERICAN NATIONAL STANDARD database language - SQL
* X3.135-1989
*
* SECTION 4.2
* DATA TYPES, DEFINITION OF NULL
* SECTION 8.10, GR 8
*
*********************************************************
EXEC SQL BEGIN DECLARE SECTION END-EXEC
01 CHARTP PIC X(1).
01 INTTP PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
01 REALTP-SUB PIC S9(6)V99 DISPLAY SIGN LEADING SEPARATE.
01 SMLTP PIC S9(4) DISPLAY SIGN LEADING SEPARATE.
01 NUMTP PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
01 DECTP PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
01 GRDE PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
01 NME1 PIC X(20).
01 NME2 PIC X(20).
01 CITY1 PIC X(15).
01 VAR1 PIC X(3).
01 indic1 PIC S9(4) DISPLAY SIGN LEADING SEPARATE.
01 indic2 PIC S9(4) DISPLAY SIGN LEADING SEPARATE.
01 indic3 PIC S9(4) DISPLAY SIGN LEADING SEPARATE.
01 indic4 PIC S9(4) DISPLAY SIGN LEADING SEPARATE.
01 indic5 PIC S9(4) DISPLAY SIGN LEADING SEPARATE.
01 indic6 PIC S9(4) DISPLAY SIGN LEADING SEPARATE.
01 indic7 PIC S9(4) DISPLAY SIGN LEADING SEPARATE.
01 indic8 PIC S9(4) DISPLAY SIGN LEADING SEPARATE.
01 indic9 PIC S9(4) DISPLAY SIGN LEADING SEPARATE.
01 indicx PIC S9(4) DISPLAY SIGN LEADING SEPARATE.
01 count1 PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
01 count2 PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
01 count3 PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
01 count4 PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
01 count5 PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
01 count6 PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
01 count7 PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
01 count8 PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
01 count9 PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
01 countx PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
01 uid PIC X(18).
01 uidx PIC X(18).
EXEC SQL END DECLARE SECTION END-EXEC
01 SQLCODE PIC S9(9) COMP.
01 errcnt PIC S9(4) DISPLAY SIGN LEADING SEPARATE.
01 flag1 PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
01 flag2 PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
01 flag3 PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
01 i PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
01 SQL-COD PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
01 DISP1 PIC S9(4) DISPLAY SIGN LEADING SEPARATE.
01 DISP2 PIC S9(4) DISPLAY SIGN LEADING SEPARATE.
01 DISP4 PIC S9(4) DISPLAY SIGN LEADING SEPARATE.
01 DISP7 PIC S9(4) DISPLAY SIGN LEADING SEPARATE.
01 DISP8 PIC S9(4) DISPLAY SIGN LEADING SEPARATE.
* date_time declaration *
01 TO-DAY PIC 9(6).
01 THE-TIME PIC 9(8).
PROCEDURE DIVISION.
P0.
MOVE "HU" TO uid
CALL "AUTHID" USING uid
MOVE "not logged in, not" TO uidx
EXEC SQL SELECT
USER INTO :uidx FROM HU.ECCO END-EXEC
if (uid NOT = uidx) then
DISPLAY "ERROR: User " uid " expected."
DISPLAY "User " uidx " connected."
DISPLAY " "
STOP RUN
END-IF
MOVE 0 TO errcnt
DISPLAY
"SQL Test Suite, V6.0, Embedded COBOL, dml076.pco"
DISPLAY " "
DISPLAY
"59-byte ID"
DISPLAY "TEd Version #"
DISPLAY " "
* date_time print *
ACCEPT TO-DAY FROM DATE
ACCEPT THE-TIME FROM TIME
DISPLAY "Date run YYMMDD: " TO-DAY " at hhmmssff: " THE-TIME
********************** BEGIN TEST0410 *********************
*This program tests NULL values in OPEN CURSORS
*
DISPLAY " TEST0410 "
DISPLAY " NULL value in OPEN CURSOR "
DISPLAY " reference X3.135-1989 5.11 GR2 and 5.21 GR2
- " "
DISPLAY "
- " -------------------------------------------------"
MOVE "IRM" TO NME1
MOVE "XXX" TO VAR1
MOVE -1 TO indic1
MOVE 0 TO indic2
MOVE 10000 TO count1
MOVE 0 TO count3
EXEC SQL DECLARE X CURSOR
FOR SELECT PNUM
FROM PROJ
WHERE PNAME = :NME1:indic1 OR BUDGET > :count1:indic2
END-EXEC
EXEC SQL OPEN X END-EXEC
MOVE SQLCODE TO SQL-COD
MOVE 1 TO i
PERFORM P50 UNTIL i > 6
MOVE "MXSS" TO NME1
MOVE "XXXXXX" TO CITY1
MOVE 50000 TO count1
MOVE 0 TO count2
MOVE -1 TO indic1
MOVE 0 TO indic2
EXEC SQL DECLARE Y CURSOR
FOR SELECT CITY
FROM PROJ
WHERE PNAME = :NME1:indic2 OR BUDGET < :count1:indic1
END-EXEC
EXEC SQL OPEN Y END-EXEC
MOVE SQLCODE TO SQL-COD
MOVE 1 TO i
PERFORM P49 UNTIL i > 6
DISPLAY " The correct answers are:"
DISPLAY " count3 = 4 and count2 = 1 "
DISPLAY " "
DISPLAY " Your answers are:"
DISPLAY " count3 = ", count3 " and count2 = ", count2 " "
if ((count3 = 4) AND (count2 = 1)) then
EXEC SQL INSERT INTO TESTREPORT
VALUES('0410','pass','PCO') END-EXEC
MOVE SQLCODE TO SQL-COD
DISPLAY " *** pass *** "
else
EXEC SQL INSERT INTO TESTREPORT
VALUES('0410','fail','PCO') END-EXEC
ADD 1 TO errcnt
MOVE SQLCODE TO SQL-COD
DISPLAY " dml076.pco *** fail *** "
END-IF
DISPLAY
"====================================================="
DISPLAY " "
EXEC SQL COMMIT WORK END-EXEC
MOVE SQLCODE TO SQL-COD
********************** END TEST0410 *********************
********************** BEGIN TEST0435 *********************
*This program tests UPDATES WHERE CURRENT
*
DISPLAY " TEST0435 "
DISPLAY " Host variables in UPDATE WHERE CURRENT"
DISPLAY " reference X3.135-1989 8.11, value expression"
DISPLAY "
- " --------------------------------------------------"
EXEC SQL DECLARE DINO CURSOR
FOR SELECT EMPNUM, CITY
FROM STAFF
WHERE CITY > 'Dino' END-EXEC
EXEC SQL OPEN DINO END-EXEC
MOVE SQLCODE TO SQL-COD
MOVE 0 TO GRDE
MOVE "XXXXX" TO CITY1
MOVE "XXX" TO NME1
MOVE "XXX" TO VAR1
MOVE 1 TO i
PERFORM P48 UNTIL i > 5
MOVE -1 TO GRDE
MOVE "Joan" TO NME1
EXEC SQL SELECT SUM(GRADE) INTO :GRDE
FROM STAFF
WHERE CITY = :CITY1 END-EXEC
MOVE SQLCODE TO SQL-COD
EXEC SQL SELECT EMPNAME INTO :NME1
FROM STAFF
WHERE EMPNAME > 'Ed' END-EXEC
MOVE SQLCODE TO SQL-COD
EXEC SQL ROLLBACK WORK END-EXEC
MOVE SQLCODE TO SQL-COD
DISPLAY " "
DISPLAY " The correct answers are:"
DISPLAY " GRDE = 35 and NME1 = Smith"
DISPLAY " "
DISPLAY " Your answers are:"
DISPLAY " GRDE = ", GRDE " and NME1 = ", NME1
if ((GRDE = 35) AND (NME1 = "Smith
- " ")) then
EXEC SQL INSERT INTO TESTREPORT
VALUES('0435','pass','PCO') END-EXEC
MOVE SQLCODE TO SQL-COD
DISPLAY " *** pass *** "
else
EXEC SQL INSERT INTO TESTREPORT
VALUES('0435','fail','PCO') END-EXEC
ADD 1 TO errcnt
MOVE SQLCODE TO SQL-COD
DISPLAY " dml076.pco *** fail *** "
END-IF
DISPLAY
"====================================================="
DISPLAY " "
EXEC SQL COMMIT WORK END-EXEC
MOVE SQLCODE TO SQL-COD
********************** END TEST0435 *********************
********************** BEGIN TEST0436 *********************
*This program tests the NULL values for various
*SQL Data Types
DISPLAY " TEST0436 "
DISPLAY " NULL values for various SQL Data Types
- " "
DISPLAY " reference X3.135-1989 section 4.2, 8.10 GR 8
- " "
DISPLAY "
- " -------------------------------------------------"
MOVE "X" TO CHARTP
MOVE 0 TO indic1
MOVE 0 TO indic2
MOVE 0 TO indic3
MOVE 0 TO indic4
MOVE 0 TO indic5
MOVE 0 TO indic6
MOVE 0 TO indic7
MOVE 0 TO indic8
MOVE 0 TO count1
MOVE 0 TO count2
MOVE 0 TO count3
MOVE 99999 TO INTTP
MOVE 99 TO SMLTP
MOVE 999 TO NUMTP
MOVE 999 TO DECTP
EXEC SQL INSERT INTO BB VALUES(NULL) END-EXEC
MOVE SQLCODE TO SQL-COD
EXEC SQL INSERT INTO EE VALUES(NULL) END-EXEC
MOVE SQLCODE TO SQL-COD
EXEC SQL INSERT INTO GG VALUES(NULL) END-EXEC
MOVE SQLCODE TO SQL-COD
EXEC SQL INSERT INTO HH VALUES(NULL) END-EXEC
MOVE SQLCODE TO SQL-COD
EXEC SQL INSERT INTO II VALUES(NULL) END-EXEC
MOVE SQLCODE TO SQL-COD
EXEC SQL INSERT INTO JJ VALUES(NULL) END-EXEC
MOVE SQLCODE TO SQL-COD
EXEC SQL INSERT INTO MM VALUES(NULL) END-EXEC
MOVE SQLCODE TO SQL-COD
EXEC SQL INSERT INTO SS VALUES(NULL) END-EXEC
MOVE SQLCODE TO SQL-COD
EXEC SQL SELECT CHARTEST INTO :CHARTP:indic1
FROM BB END-EXEC
MOVE SQLCODE TO SQL-COD
MOVE indic1 TO DISP1
EXEC SQL SELECT INTTEST INTO :INTTP:indic2
FROM EE END-EXEC
MOVE SQLCODE TO SQL-COD
MOVE indic2 TO DISP2
EXEC SQL SELECT COUNT(*) INTO :count1
FROM GG
WHERE REALTEST IS NULL END-EXEC
MOVE SQLCODE TO SQL-COD
EXEC SQL SELECT SMALLTEST INTO :SMLTP:indic4
FROM HH END-EXEC
MOVE SQLCODE TO SQL-COD
MOVE indic4 TO DISP4
EXEC SQL SELECT COUNT(*) INTO :count2
FROM II
WHERE DOUBLETEST IS NULL END-EXEC
MOVE SQLCODE TO SQL-COD
EXEC SQL SELECT COUNT(*) INTO :count3
FROM JJ
WHERE FLOATTEST IS NULL END-EXEC
MOVE SQLCODE TO SQL-COD
EXEC SQL SELECT NUMTEST INTO :NUMTP:indic7
FROM MM END-EXEC
MOVE SQLCODE TO SQL-COD
MOVE indic7 TO DISP7
EXEC SQL SELECT NUMTEST INTO :DECTP:indic8
FROM SS END-EXEC
MOVE SQLCODE TO SQL-COD
MOVE indic8 TO DISP8
EXEC SQL ROLLBACK WORK END-EXEC
MOVE SQLCODE TO SQL-COD
DISPLAY " The correct answers are:"
DISPLAY " All indicator variables should be -1"
DISPLAY " count1, count2, and count3 = 1"
DISPLAY " "
DISPLAY " Your answers are:"
DISPLAY " indic1 = ", DISP1 ", indic2 = ", DISP2
DISPLAY " indic4 = ", DISP4
DISPLAY " indic7 = ", DISP7 ", indic8 = ", DISP8
DISPLAY " count1 = ", count1 ", count2 = ", count2 ",
- " count3 = ", count3
MOVE 0 TO flag1
MOVE 0 TO flag2
if (indic1 NOT = -1 OR indic2 NOT = -1 OR
indic4 NOT = -1) then
MOVE 1 TO flag1
END-IF
if (indic7 NOT = -1 OR indic8 NOT = -1) then
MOVE 1 TO flag1
END-IF
if (count1 NOT = 1 OR count2 NOT = 1 OR count3 NOT
= 1) then
MOVE 1 TO flag2
END-IF
if (flag1 = 0 AND flag2 = 0) then
EXEC SQL INSERT INTO TESTREPORT
VALUES('0436','pass','PCO') END-EXEC
MOVE SQLCODE TO SQL-COD
DISPLAY " *** pass *** "
else
EXEC SQL INSERT INTO TESTREPORT
VALUES('0436','fail','PCO') END-EXEC
ADD 1 TO errcnt
MOVE SQLCODE TO SQL-COD
DISPLAY " dml076.pco *** fail *** "
END-IF
DISPLAY
"====================================================="
DISPLAY " "
EXEC SQL COMMIT WORK END-EXEC
MOVE SQLCODE TO SQL-COD
********************** END TEST0436 *********************
********************** BEGIN TEST0437 *******************
DISPLAY " TEST0437 "
DISPLAY " NULL values for various host variables
- " "
DISPLAY " reference X3.135-1989 section 4.2, 8.7, 5.6 GR
- " 1 or 2 "
DISPLAY "
- " -------------------------------------------------- "
MOVE -1 TO indic1
MOVE -1 TO indic2
MOVE -1 TO indic3
MOVE 0 TO indic4
MOVE 0 TO indic5
MOVE 0 TO indic6
MOVE 0 TO count1
MOVE 0 TO count2
MOVE 0 TO count3
MOVE 0 TO count4
MOVE "2" TO CHARTP
MOVE -23 TO DECTP
MOVE 99 TO REALTP-SUB
EXEC SQL INSERT INTO BB VALUES(:CHARTP :indic1) END-EXEC
MOVE SQLCODE TO SQL-COD
EXEC SQL INSERT INTO SS VALUES(:DECTP :indic2) END-EXEC
MOVE SQLCODE TO SQL-COD
EXEC SQL INSERT INTO GG VALUES(:REALTP-SUB :indic3)
END-EXEC
MOVE SQLCODE TO SQL-COD
MOVE "X" TO CHARTP
MOVE 23 TO DECTP
MOVE 45 TO REALTP-SUB
EXEC SQL INSERT INTO BB VALUES(:CHARTP :indic4) END-EXEC
MOVE SQLCODE TO SQL-COD
EXEC SQL INSERT INTO SS VALUES(:DECTP :indic5) END-EXEC
MOVE SQLCODE TO SQL-COD
EXEC SQL INSERT INTO GG VALUES(:REALTP-SUB :indic6)
END-EXEC
MOVE SQLCODE TO SQL-COD
EXEC SQL INSERT INTO DD SELECT * FROM BB END-EXEC
MOVE SQLCODE TO SQL-COD
EXEC SQL INSERT INTO PP SELECT NUMTEST FROM SS END-EXEC
MOVE SQLCODE TO SQL-COD
EXEC SQL INSERT INTO JJ SELECT REALTEST FROM GG
WHERE REALTEST IS NULL OR REALTEST > 0 END-EXEC
MOVE SQLCODE TO SQL-COD
EXEC SQL SELECT CHARTEST INTO :CHARTP
FROM DD
WHERE CHARTEST IS NOT NULL END-EXEC
MOVE SQLCODE TO SQL-COD
EXEC SQL SELECT NUMTEST INTO :DECTP
FROM PP
WHERE NUMTEST IS NOT NULL END-EXEC
MOVE SQLCODE TO SQL-COD
EXEC SQL SELECT COUNT(*) INTO :REALTP-SUB
FROM JJ
WHERE FLOATTEST BETWEEN 44 AND 46 END-EXEC
MOVE SQLCODE TO SQL-COD
EXEC SQL SELECT COUNT(*) INTO :count1
FROM JJ
WHERE FLOATTEST IS NOT NULL END-EXEC
MOVE SQLCODE TO SQL-COD
EXEC SQL SELECT COUNT(*) INTO :count2
FROM DD
WHERE CHARTEST IS NULL END-EXEC
MOVE SQLCODE TO SQL-COD
EXEC SQL SELECT COUNT(*) INTO :count3
FROM PP
WHERE NUMTEST IS NULL END-EXEC
MOVE SQLCODE TO SQL-COD
EXEC SQL SELECT COUNT(*) INTO :count4
FROM JJ
WHERE FLOATTEST IS NULL END-EXEC
MOVE SQLCODE TO SQL-COD
EXEC SQL ROLLBACK WORK END-EXEC
MOVE SQLCODE TO SQL-COD
DISPLAY " The correct answers are:"
DISPLAY " CHARTP = X, DECTP = 23, REALTP-SUB = 1"
DISPLAY " count1 = 1, count2 = 1"
DISPLAY " count3 = 1, count4 = 1"
DISPLAY " "
DISPLAY " Your answers are:"
DISPLAY " CHARTP = ", CHARTP ", DECTP = ", DECTP ",
- " REALTP-SUB = ", REALTP-SUB
DISPLAY " count1 = ", count1 ", count2 = ", count2
DISPLAY " count3 = ", count3 ", count4 = ", count4
MOVE 0 TO flag1
if ((CHARTP NOT = "X") OR DECTP NOT = 23) then
MOVE 1 TO flag1
END-IF
MOVE 0 TO flag2
if (REALTP-SUB NOT = 1) then
MOVE 1 TO flag2
END-IF
MOVE 0 TO flag3
if (count1 NOT = 1 OR count2 NOT = 1 OR count3 NOT
= 1 OR count4 NOT = 1) then
MOVE 1 TO flag3
END-IF
if (flag1 = 0 AND flag2 = 0 AND flag3 = 0) then
EXEC SQL INSERT INTO TESTREPORT
VALUES('0437','pass','PCO') END-EXEC
MOVE SQLCODE TO SQL-COD
DISPLAY " *** pass *** "
else
EXEC SQL INSERT INTO TESTREPORT
VALUES('0437','fail','PCO') END-EXEC
ADD 1 TO errcnt
MOVE SQLCODE TO SQL-COD
DISPLAY " dml076.pco *** fail *** "
END-IF
EXEC SQL COMMIT WORK END-EXEC
DISPLAY
"====================================================="
DISPLAY " "
********************** END TEST0437 *********************
********************** BEGIN TEST0441 *******************
DISPLAY " TEST0441 "
DISPLAY " NULL values for various predicates"
DISPLAY " reference 5.6 GR 1 or 2"
DISPLAY
"----------------------------------------------------"
MOVE 0 TO count1
MOVE -1 TO count2
MOVE 0 TO count3
MOVE -1 TO count4
MOVE 0 TO count5
MOVE -1 TO count6
MOVE 0 TO count7
MOVE -1 TO count8
MOVE 0 TO count9
MOVE -1 TO countx
MOVE 0 TO indic1
MOVE -1 TO indic2
MOVE 0 TO indic3
MOVE -1 TO indic4
MOVE 0 TO indic5
MOVE -1 TO indic6
MOVE 0 TO indic7
MOVE -1 TO indic8
MOVE 0 TO indic9
MOVE -1 TO indicx
MOVE 11 TO DECTP
MOVE "V___na%" TO CITY1
MOVE "S_P%" TO NME1
EXEC SQL SELECT COUNT(*) INTO :count1
FROM STAFF
WHERE GRADE BETWEEN 9 AND :DECTP :indic1 END-EXEC
MOVE SQLCODE TO SQL-COD
EXEC SQL SELECT COUNT(*) INTO :count2
FROM STAFF
WHERE GRADE BETWEEN 9 AND :DECTP :indic2 END-EXEC
MOVE SQLCODE TO SQL-COD
MOVE 39999 TO DECTP
EXEC SQL SELECT COUNT(*) INTO :count3
FROM PROJ
WHERE BUDGET NOT BETWEEN 9999 AND :DECTP :indic3 END-EXEC
MOVE SQLCODE TO SQL-COD
EXEC SQL SELECT COUNT(*) INTO :count4
FROM PROJ
WHERE BUDGET NOT BETWEEN 999 AND :DECTP :indic4 END-EXEC
MOVE SQLCODE TO SQL-COD
EXEC SQL SELECT COUNT(*) INTO :count5
FROM PROJ
WHERE PNAME LIKE :NME1 :indic5 END-EXEC
MOVE SQLCODE TO SQL-COD
EXEC SQL SELECT COUNT(*) INTO :count6
FROM PROJ
WHERE PNAME LIKE :NME1 :indic6 END-EXEC
MOVE SQLCODE TO SQL-COD
EXEC SQL SELECT COUNT(*) INTO :count7
FROM STAFF
WHERE CITY NOT LIKE :CITY1 :indic7 END-EXEC
MOVE SQLCODE TO SQL-COD
EXEC SQL SELECT COUNT(*) INTO :count8
FROM STAFF
WHERE CITY NOT LIKE :CITY1 :indic8 END-EXEC
MOVE SQLCODE TO SQL-COD
MOVE 20 TO DECTP
EXEC SQL SELECT COUNT(*) INTO :count9
FROM WORKS
WHERE HOURS <> :DECTP :indic9 END-EXEC
MOVE SQLCODE TO SQL-COD
EXEC SQL SELECT COUNT(*) INTO :countx
FROM WORKS
WHERE HOURS <> :DECTP :indicx END-EXEC
MOVE SQLCODE TO SQL-COD
EXEC SQL ROLLBACK WORK END-EXEC
MOVE SQLCODE TO SQL-COD
DISPLAY " The correct answers are:"
DISPLAY " count1 = 1, count2 = 0"
DISPLAY " count3 = 1, count4 = 0"
DISPLAY " count5 = 2, count6 = 0"
DISPLAY " count7 = 3, count8 = 0"
DISPLAY " count9 = 8, countx = 0"
DISPLAY " "
DISPLAY " Your answers are:"
DISPLAY " count1 = ", count1 ", count2 = ", count2
DISPLAY " count3 = ", count3 ", count4 = ", count4
DISPLAY " count5 = ", count5 ", count6 = ", count6
DISPLAY " count7 = ", count7 ", count8 = ", count8
DISPLAY " count9 = ", count9 ", countx = ", countx
MOVE 0 TO flag1
MOVE 0 TO flag2
MOVE 0 TO flag3
if ((count1 NOT = 1) OR (count2 NOT = 0) OR (count3
NOT = 1) OR (count4 NOT = 0)) then
MOVE 1 TO flag1
END-IF
if ((count5 NOT = 2) OR (count6 NOT = 0) OR (count7
NOT = 3) OR (count8 NOT = 0)) then
MOVE 1 TO flag2
END-IF
if ((count9 NOT = 8) OR (countx NOT = 0)) then
MOVE 1 TO flag3
END-IF
if ((flag1 = 0) AND (flag2 = 0) AND (flag3 = 0))
then
EXEC SQL INSERT INTO TESTREPORT
VALUES('0441','pass','PCO') END-EXEC
MOVE SQLCODE TO SQL-COD
DISPLAY " *** pass *** "
else
EXEC SQL INSERT INTO TESTREPORT
VALUES('0441','fail','PCO') END-EXEC
ADD 1 TO errcnt
MOVE SQLCODE TO SQL-COD
DISPLAY " dml076.pco *** fail *** "
END-IF
DISPLAY
"====================================================="
DISPLAY " "
EXEC SQL COMMIT WORK END-EXEC
MOVE SQLCODE TO SQL-COD
********************** END TEST0441 *********************
**** TESTER MAY CHOOSE TO INSERT CODE FOR errcnt > 0
STOP RUN.
* **** Procedures for PERFORM statements
P50.
EXEC SQL FETCH X INTO :VAR1 END-EXEC
MOVE SQLCODE TO SQL-COD
if (SQLCODE = 0) then
COMPUTE count3 = count3 + 1
END-IF
DISPLAY "VAR1 = ", VAR1
ADD 1 TO i
.
P49.
EXEC SQL FETCH Y INTO :CITY1 END-EXEC
MOVE SQLCODE TO SQL-COD
if (SQLCODE = 0) then
COMPUTE count2 = count2 + 1
END-IF
DISPLAY "CITY1 = ", CITY1
ADD 1 TO i
.
P48.
MOVE i TO GRDE
EXEC SQL FETCH DINO INTO :VAR1, :CITY1 END-EXEC
MOVE SQLCODE TO SQL-COD
if (SQLCODE = 0) then
DISPLAY " VAR1 = ", VAR1 ", CITY1 = ", CITY1
MOVE "Dinoville" TO CITY1
EXEC SQL UPDATE STAFF
SET GRADE = :GRDE + 10, CITY = :CITY1
WHERE CURRENT OF DINO END-EXEC
MOVE SQLCODE TO SQL-COD
END-IF
if (i = 2) then
MOVE "Smith" TO NME1
EXEC SQL UPDATE STAFF
SET GRADE = GRADE * :GRDE, EMPNAME = :NME1
WHERE CURRENT OF DINO END-EXEC
MOVE SQLCODE TO SQL-COD
DISPLAY " VAR1 = ", VAR1 ", GRDE = ", GRDE
END-IF
ADD 1 TO i
.
¤ Dauer der Verarbeitung: 0.38 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.
|