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 <value specification> 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
.
Messung V0.5 in Prozent C=94 H=100 G=96
¤ Dauer der Verarbeitung: 0.15 Sekunden
(vorverarbeitet am 2026-06-10)
¤
*© Formatika GbR, Deutschland