IDENTIFICATION DIVISION .
PROGRAM-ID . CDR026.
ENVIRONMENT DIVISION .
CONFIGURATION SECTION .
SOURCE-COMPUTER . xyz.
OBJECT-COMPUTER . xyz.
DATA DIVISION .
WORKING-STORAGE SECTION .
* Embedded SQL COBOL ("CDR026.PCO") translated from
* Embedded C on Thu Jul 25 10:46:17 1991.
*EMBEDDED COBOL (file "CDR026.PCO")
************************************************************
*
* COMMENT SECTION
*
* DATE 1991/06/20 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.
*
* CDR026.PCO
* WRITTEN BY: YOLANDA HERD
*
* THIS ROUTINE TESTS PARTIAL NULL FOREIGN KEYS
*
* REFERENCES
* AMERICAN NATIONAL STANDARD database language - SQL
* X3.135-1989
*
* SECTION 6.7, GR1 Referential Constraint Definition
*
*
************************************************************
EXEC SQL BEGIN DECLARE SECTION END-EXEC
01 DNME PIC X(20 ).
01 ENME PIC X(20 ).
01 NME PIC X(20 ).
01 DTE PIC S9(9 ) DISPLAY SIGN LEADING SEPARATE .
01 count1 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 code1 PIC S9(9 ) DISPLAY SIGN LEADING SEPARATE .
01 code2 PIC S9(9 ) DISPLAY SIGN LEADING SEPARATE .
01 code3 PIC S9(9 ) DISPLAY SIGN LEADING SEPARATE .
01 code4 PIC S9(9 ) DISPLAY SIGN LEADING SEPARATE .
01 code5 PIC S9(9 ) DISPLAY SIGN LEADING SEPARATE .
01 code6 PIC S9(9 ) DISPLAY SIGN LEADING SEPARATE .
01 flag1 PIC S9(9 ) DISPLAY SIGN LEADING SEPARATE .
01 SQL-COD PIC S9(9 ) DISPLAY SIGN LEADING SEPARATE .
* date_time declaration *
01 TO-DAY PIC 9 (6 ).
01 THE-TIME PIC 9 (8 ).
PROCEDURE DIVISION .
P0.
MOVE "SUN" TO uid
CALL "AUTHID" USING uid
MOVE "not logged in, not" TO uidx
EXEC SQL SELECT
USER INTO :uidx FROM SUN.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, cdr026.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 TEST0438 *********************
* This program tests the Partial - NULL F.K.
* feature supported for insert F.k.
DISPLAY " TEST0438 "
DISPLAY " partial-NULL F.K. INSERT supported "
DISPLAY " reference Section 6.7 GR 1a, 1b "
DISPLAY "--------------------------------------------"
MOVE -1001 TO code1
MOVE 0 TO count1
MOVE 0 TO DTE
MOVE "XXXXXXXXXXXXXXXXXXXX" TO NME
EXEC SQL DELETE FROM EXPERIENCE
WHERE DESCR = 'Car Mechanic' END-EXEC
MOVE SQLCODE TO SQL-COD
EXEC SQL INSERT INTO EXPERIENCE
VALUES('Tom' ,NULL ,NULL ,'Car Mechanic' ) END-EXEC
MOVE SQLCODE TO SQL-COD
EXEC SQL INSERT INTO EXPERIENCE
VALUES('Yolanda' ,NULL ,NULL ,'Car Mechanic' ) END-EXEC
MOVE SQLCODE TO SQL-COD
EXEC SQL INSERT INTO EXPERIENCE
VALUES(NULL ,112156 ,NULL ,'Car Mechanic' ) END-EXEC
MOVE SQLCODE TO SQL-COD
EXEC SQL INSERT INTO EXPERIENCE
VALUES(NULL ,062068 ,NULL ,'Car Mechanic' ) END-EXEC
MOVE SQLCODE TO SQL-COD
EXEC SQL INSERT INTO EXPERIENCE
VALUES(NULL ,NULL ,NULL ,'Car Mechanic' ) END-EXEC
MOVE SQLCODE TO SQL-COD
EXEC SQL INSERT INTO EXPERIENCE
VALUES('Tom' ,052744 ,NULL ,'Car Mechanic' ) END-EXEC
MOVE SQLCODE TO SQL-COD
EXEC SQL INSERT INTO EXPERIENCE
VALUES('Yolanda' ,040523 ,NULL ,'Car Mechanic' ) END-EXEC
MOVE SQLCODE TO SQL-COD
EXEC SQL INSERT INTO EXPERIENCE
VALUES('Yolanda' ,062968 ,NULL ,'Car Mechanic' ) END-EXEC
MOVE SQLCODE TO SQL-COD
EXEC SQL INSERT INTO EXPERIENCE
VALUES('Lilian' ,112156 ,NULL ,'Car Mechanic' ) END-EXEC
MOVE SQLCODE TO SQL-COD
EXEC SQL SELECT EXP_NAME, BTH_DATE INTO :NME, :DTE
FROM EXPERIENCE
WHERE EXP_NAME IS NOT NULL AND BTH_DATE IS NOT NULL
AND DESCR = 'Car Mechanic' END-EXEC
MOVE SQLCODE TO SQL-COD
MOVE SQLCODE TO code1
EXEC SQL SELECT COUNT (*) INTO :count1 FROM EXPERIENCE
WHERE DESCR = 'Car Mechanic' END-EXEC
MOVE SQLCODE TO SQL-COD
EXEC SQL ROLLBACK WORK END-EXEC
MOVE SQLCODE TO SQL-COD
DISPLAY " The correct answers are:"
DISPLAY " code1 = 0 and count1 = 6"
DISPLAY " "
DISPLAY " Your answers are:"
DISPLAY " code1 = " , code1 " and count1 = " , count1
if (code1 = 0 AND count1 = 6 ) then
EXEC SQL INSERT INTO TESTREPORT
VALUES('0438' ,'pass' ,'PCO' ) END-EXEC
MOVE SQLCODE TO SQL-COD
DISPLAY " *** pass *** "
else
EXEC SQL INSERT INTO TESTREPORT
VALUES('0438' ,'fail' ,'PCO' ) END-EXEC
ADD 1 TO errcnt
MOVE SQLCODE TO SQL-COD
DISPLAY " cdr026.pco *** fail *** "
END-IF
DISPLAY
"==================================================="
DISPLAY " "
EXEC SQL COMMIT WORK END-EXEC
MOVE SQLCODE TO SQL-COD
********************* END TEST0438 ******************
**************** BEGIN TEST0439 *********************
*This program tests partial-NULL F.K. feature
*support for update F.K.
DISPLAY " TEST0439 "
DISPLAY " partial-NULL F.K. UPDATE support "
DISPLAY " ------------------------------------------ "
MOVE 0 TO code1
MOVE 0 TO code2
MOVE 0 TO code3
MOVE 0 TO code4
MOVE 0 TO code5
MOVE 0 TO code6
MOVE 0 TO flag1
EXEC SQL INSERT INTO EXPERIENCE
VALUES('Lilian' ,NULL ,NULL ,'Soccer Player' ) END-EXEC
MOVE SQLCODE TO SQL-COD
EXEC SQL INSERT INTO EXPERIENCE
VALUES('David' ,NULL ,NULL ,'Monk' ) END-EXEC
MOVE SQLCODE TO SQL-COD
EXEC SQL INSERT INTO EXPERIENCE
VALUES(NULL ,NULL ,NULL ,'Fireman' ) END-EXEC
MOVE SQLCODE TO SQL-COD
EXEC SQL INSERT INTO EXPERIENCE
VALUES(NULL ,NULL ,NULL ,'Artist' ) END-EXEC
MOVE SQLCODE TO SQL-COD
EXEC SQL UPDATE EXPERIENCE
SET BTH_DATE = 040523
WHERE EXP_NAME = 'Lilian' AND DESCR = 'Soccer Player'
END-EXEC
MOVE SQLCODE TO SQL-COD
MOVE SQLCODE TO code1
if (code1 NOT < 0 ) then
MOVE 1 TO flag1
END-IF
EXEC SQL UPDATE EXPERIENCE
SET EXP_NAME = NULL
WHERE DESCR = 'Photographer' END-EXEC
MOVE SQLCODE TO SQL-COD
MOVE SQLCODE TO code2
if (code2 NOT = 0 ) then
MOVE 1 TO flag1
END-IF
EXEC SQL UPDATE EXPERIENCE
SET EXP_NAME = NULL ,BTH_DATE = NULL
WHERE DESCR = 'Fashion Model' END-EXEC
MOVE SQLCODE TO SQL-COD
MOVE SQLCODE TO code3
if (code3 NOT = 0 ) then
MOVE 1 TO flag1
END-IF
EXEC SQL UPDATE EXPERIENCE
SET BTH_DATE = 101024
WHERE EXP_NAME = 'David' AND DESCR = 'Monk' END-EXEC
MOVE SQLCODE TO SQL-COD
MOVE SQLCODE TO code4
if (code4 NOT = 0 ) then
MOVE 1 TO flag1
END-IF
EXEC SQL UPDATE EXPERIENCE
SET EXP_NAME = 'Mary' , BTH_DATE = 121245
WHERE DESCR = 'Fireman' END-EXEC
MOVE SQLCODE TO SQL-COD
MOVE SQLCODE TO code5
if (code5 NOT = 0 ) then
MOVE 1 TO flag1
END-IF
EXEC SQL UPDATE EXPERIENCE
SET EXP_NAME = 'Dick' , BTH_DATE = 020454
WHERE DESCR = 'Artist' END-EXEC
MOVE SQLCODE TO SQL-COD
MOVE SQLCODE TO code6
if (code6 NOT < 0 ) then
MOVE 1 TO flag1
END-IF
DISPLAY "The correct results are:"
DISPLAY " code1 < 0"
DISPLAY " code2 = 0"
DISPLAY " code3 = 0"
DISPLAY " code4 = 0"
DISPLAY " code5 = 0"
DISPLAY " code6 < 0"
DISPLAY " "
DISPLAY " Your answers are:"
DISPLAY " code1 = " , code1
DISPLAY " code2 = " , code2
DISPLAY " code3 = " , code3
DISPLAY " code4 = " , code4
DISPLAY " code5 = " , code5
DISPLAY " code6 = " , code6
EXEC SQL ROLLBACK WORK END-EXEC
MOVE SQLCODE TO SQL-COD
if (flag1 = 0 ) then
EXEC SQL INSERT INTO TESTREPORT
VALUES('0439' ,'pass' ,'PCO' ) END-EXEC
MOVE SQLCODE TO SQL-COD
DISPLAY " *** pass *** "
else
EXEC SQL INSERT INTO TESTREPORT
VALUES('0439' ,'fail' ,'PCO' ) END-EXEC
ADD 1 TO errcnt
MOVE SQLCODE TO SQL-COD
DISPLAY " cdr026.pco *** fail *** "
END-IF
DISPLAY
"==================================================="
DISPLAY " "
EXEC SQL COMMIT WORK END-EXEC
MOVE SQLCODE TO SQL-COD
********************* END TEST0439 ******************
**************** BEGIN TEST0440 *********************
*This program tests partial-NULL F.K. no restrict
*P.K. update/delete
DISPLAY " TEST0440 "
DISPLAY " partial-NULL F.K. no restrict P.K.
- " update/delete "
DISPLAY " -------------------------------------------"
MOVE "XXXXXXXXXXXXXXXXXXXX" TO ENME
MOVE "XXXXXXXXXXXXXXXXXXXX" TO DNME
EXEC SQL DELETE FROM EXPERIENCE
WHERE EXP_NAME = 'Joseph' OR EXP_NAME = 'John' END-EXEC
MOVE SQLCODE TO SQL-COD
EXEC SQL INSERT INTO EXPERIENCE
VALUES('John' ,NULL ,NULL ,'Gardener' ) END-EXEC
MOVE SQLCODE TO SQL-COD
EXEC SQL INSERT INTO EXPERIENCE
VALUES('Joseph' ,NULL ,NULL ,'Snake Charmer' ) END-EXEC
MOVE SQLCODE TO SQL-COD
EXEC SQL DELETE FROM EMP
WHERE ENAME = 'Joseph' END-EXEC
MOVE SQLCODE TO SQL-COD
EXEC SQL UPDATE EMP
SET ENAME = 'Joan'
WHERE EDESC = 'Fraction' END-EXEC
MOVE SQLCODE TO SQL-COD
MOVE 0 TO code1
EXEC SQL SELECT ENAME INTO :ENME
FROM EMP
WHERE DNAME = 'Education' END-EXEC
MOVE SQLCODE TO SQL-COD
MOVE SQLCODE TO code1
EXEC SQL SELECT DNAME INTO :DNME
FROM EMP
WHERE ENAME = 'Joan' END-EXEC
MOVE SQLCODE TO SQL-COD
DISPLAY " The correct results are:"
DISPLAY " ENME = XXXXXXXXXXXXXXXXXXXX"
DISPLAY " DNME = Physics"
DISPLAY " "
DISPLAY " Your answers are:"
DISPLAY " ENME = " , ENME
DISPLAY " DNME = " , DNME
EXEC SQL ROLLBACK WORK END-EXEC
MOVE SQLCODE TO SQL-COD
MOVE 0 TO flag1
if (ENME NOT = "XXXXXXXXXXXXXXXXXXXX" ) then
MOVE 1 TO flag1
END-IF
if (DNME NOT = "Physics" ) then
MOVE 1 TO flag1
END-IF
if (flag1 = 0 AND code1 = 100 ) then
EXEC SQL INSERT INTO TESTREPORT
VALUES('0440' ,'pass' ,'PCO' ) END-EXEC
MOVE SQLCODE TO SQL-COD
DISPLAY " *** pass *** "
else
EXEC SQL INSERT INTO TESTREPORT
VALUES('0440' ,'fail' ,'PCO' ) END-EXEC
ADD 1 TO errcnt
MOVE SQLCODE TO SQL-COD
DISPLAY " cdr026.pco *** fail *** "
END-IF
DISPLAY
"==================================================="
DISPLAY " "
EXEC SQL COMMIT WORK END-EXEC
MOVE SQLCODE TO SQL-COD
********************* END TEST0440 ******************
**** TESTER MAY CHOOSE TO INSERT CODE FOR errcnt > 0
STOP RUN .
* **** Procedures for PERFORM statements
Messung V0.5 in Prozent C=90 H=100 G=95
¤ Dauer der Verarbeitung: 0.12 Sekunden
(vorverarbeitet am 2026-06-08)
¤
*© Formatika GbR, Deutschland