IDENTIFICATION DIVISION .
PROGRAM-ID . SUNTAB1.
ENVIRONMENT DIVISION .
CONFIGURATION SECTION .
SOURCE-COMPUTER . xyz.
OBJECT-COMPUTER . xyz.
DATA DIVISION .
WORKING-STORAGE SECTION .
* Standard COBOL (file "SUNTAB1.SCO") calling SQL
* procedures in file "SUNTAB1.MCO"
****************************************************************
*
* COMMENT SECTION
*
* DATE 1989/02/24 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.
*
* SUNTAB1.SCO
* WRITTEN BY: SUN DAJUN
* TRANSLATED AUTOMATICALLY FROM EMBEDDED COBOL BY CHRIS SCHANZLE
*
* This routine initializes the contents of tables:
* STAFF_C, PROJ_M, and STAFF_M
* This routine may be run at any time to re-initialize tables.
*
****************************************************************
* EXEC SQL BEGIN DECLARE SECTION END-EXEC
01 cnt1 PIC S9(9 ) DISPLAY SIGN LEADING SEPARATE .
01 cnt2 PIC S9(9 ) DISPLAY SIGN LEADING SEPARATE .
01 cnt3 PIC S9(9 ) DISPLAY SIGN LEADING SEPARATE .
01 cnt4 PIC S9(9 ) DISPLAY SIGN LEADING SEPARATE .
01 cnt5 PIC S9(9 ) DISPLAY SIGN LEADING SEPARATE .
01 SQLCODE PIC S9(9 ) COMP .
01 errcnt PIC S9(4 ) DISPLAY SIGN LEADING SEPARATE .
* EXEC SQL END DECLARE SECTION END-EXEC
01 uid PIC X(18 ).
01 uidx PIC X(18 ).
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 0 TO errcnt
DISPLAY
"SQL Test Suite, V6.0, Module COBOL, suntab1.sco"
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
*SET NULL foreign key values for tables which
*reference each other or are self-referencing:
* EXEC SQL UPDATE STAFF_M
* SET PRI_WK = NULL END-EXEC
CALL "SUB1" USING SQLCODE
MOVE SQLCODE TO SQL-COD
* EXEC SQL UPDATE PROJ_M
* SET MGR = NULL END-EXEC
CALL "SUB2" USING SQLCODE
MOVE SQLCODE TO SQL-COD
* EXEC SQL DELETE FROM PROJ_M;
CALL "SUB3" USING SQLCODE
MOVE SQLCODE TO SQL-COD
* EXEC SQL DELETE FROM STAFF_M;
CALL "SUB4" USING SQLCODE
MOVE SQLCODE TO SQL-COD
* EXEC SQL UPDATE STAFF_C
* SET MGR = NULL END-EXEC
CALL "SUB5" USING SQLCODE
MOVE SQLCODE TO SQL-COD
* EXEC SQL DELETE FROM STAFF_C;
CALL "SUB6" USING SQLCODE
MOVE SQLCODE TO SQL-COD
* EXEC SQL INSERT INTO STAFF_M
* VALUES('E1','Alice',12,'Deale',NULL) END-EXEC
CALL "SUB7" USING SQLCODE
MOVE SQLCODE TO SQL-COD
* EXEC SQL INSERT INTO STAFF_M
* VALUES('E2','Betty',10,'Vienna',NULL) END-EXEC
CALL "SUB8" USING SQLCODE
MOVE SQLCODE TO SQL-COD
* EXEC SQL INSERT INTO STAFF_M
* VALUES('E3','Carmen',13,'Vienna',NULL) END-EXEC
CALL "SUB9" USING SQLCODE
MOVE SQLCODE TO SQL-COD
* EXEC SQL INSERT INTO STAFF_M
* VALUES('E5','Don',12,'Deale',NULL) END-EXEC
CALL "SUB10" USING SQLCODE
MOVE SQLCODE TO SQL-COD
* EXEC SQL INSERT INTO STAFF_M
* VALUES('E4','Don',12,'Deale',NULL) END-EXEC
CALL "SUB11" USING SQLCODE
MOVE SQLCODE TO SQL-COD
* EXEC SQL INSERT INTO PROJ_M
* VALUES('P1','MXSS','Design',10000,'Deale',NULL) END-EXEC
CALL "SUB12" USING SQLCODE
MOVE SQLCODE TO SQL-COD
* EXEC SQL INSERT INTO PROJ_M
* VALUES('P2','CALM','Code',30000,'Vienna',NULL) END-EXEC
CALL "SUB13" USING SQLCODE
MOVE SQLCODE TO SQL-COD
* EXEC SQL INSERT INTO PROJ_M
* VALUES('P4','SDP','Design',20000,'Deale',NULL) END-EXEC
CALL "SUB14" USING SQLCODE
MOVE SQLCODE TO SQL-COD
* EXEC SQL INSERT INTO PROJ_M
* VALUES('P3','SDP','Test',30000,'Tample',NULL) END-EXEC
CALL "SUB15" USING SQLCODE
MOVE SQLCODE TO SQL-COD
* EXEC SQL INSERT INTO PROJ_M
* VALUES('P5','IRM','Test',10000,'Vienna',NULL) END-EXEC
CALL "SUB16" USING SQLCODE
MOVE SQLCODE TO SQL-COD
* EXEC SQL INSERT INTO PROJ_M
* VALUES('P6','PAYR','Design',50000,'Deale',NULL) END-EXEC
CALL "SUB17" USING SQLCODE
MOVE SQLCODE TO SQL-COD
* EXEC SQL UPDATE STAFF_M
* SET PRI_WK = 'P1'
* WHERE EMPNUM = 'E1' END-EXEC
CALL "SUB18" USING SQLCODE
MOVE SQLCODE TO SQL-COD
* EXEC SQL UPDATE STAFF_M
* SET PRI_WK = 'P1'
* WHERE EMPNUM = 'E2' END-EXEC
CALL "SUB19" USING SQLCODE
MOVE SQLCODE TO SQL-COD
* EXEC SQL UPDATE STAFF_M
* SET PRI_WK = 'P1'
* WHERE EMPNUM = 'E3' END-EXEC
CALL "SUB20" USING SQLCODE
MOVE SQLCODE TO SQL-COD
* EXEC SQL UPDATE STAFF_M
* SET PRI_WK = 'P2'
* WHERE EMPNUM = 'E4' END-EXEC
CALL "SUB21" USING SQLCODE
MOVE SQLCODE TO SQL-COD
* EXEC SQL UPDATE STAFF_M
* SET PRI_WK = 'P4'
* WHERE EMPNUM = 'E5' END-EXEC
CALL "SUB22" USING SQLCODE
MOVE SQLCODE TO SQL-COD
* EXEC SQL UPDATE PROJ_M
* SET MGR = 'E2'
* WHERE PNUM = 'P1' END-EXEC
CALL "SUB23" USING SQLCODE
MOVE SQLCODE TO SQL-COD
* EXEC SQL UPDATE PROJ_M
* SET MGR = 'E2'
* WHERE PNUM = 'P2' END-EXEC
CALL "SUB24" USING SQLCODE
MOVE SQLCODE TO SQL-COD
* EXEC SQL UPDATE PROJ_M
* SET MGR = 'E3'
* WHERE PNUM = 'P3' END-EXEC
CALL "SUB25" USING SQLCODE
MOVE SQLCODE TO SQL-COD
* EXEC SQL UPDATE PROJ_M
* SET MGR = 'E4'
* WHERE PNUM = 'P4' END-EXEC
CALL "SUB26" USING SQLCODE
MOVE SQLCODE TO SQL-COD
* EXEC SQL UPDATE PROJ_M
* SET MGR = 'E4'
* WHERE PNUM = 'P5' END-EXEC
CALL "SUB27" USING SQLCODE
MOVE SQLCODE TO SQL-COD
* EXEC SQL INSERT INTO STAFF_C
* VALUES('E1','Alice',12,'Deale',NULL) END-EXEC
CALL "SUB28" USING SQLCODE
MOVE SQLCODE TO SQL-COD
* EXEC SQL INSERT INTO STAFF_C
* VALUES('E2','Betty',10,'Vienna','E1') END-EXEC
CALL "SUB29" USING SQLCODE
MOVE SQLCODE TO SQL-COD
* EXEC SQL INSERT INTO STAFF_C
* VALUES('E3','Carmen',13,'Vienna','E2') END-EXEC
CALL "SUB30" USING SQLCODE
MOVE SQLCODE TO SQL-COD
* EXEC SQL INSERT INTO STAFF_C
* VALUES('E4','Don',12,'Deale','E2') END-EXEC
CALL "SUB31" USING SQLCODE
MOVE SQLCODE TO SQL-COD
* EXEC SQL INSERT INTO STAFF_C
* VALUES('E5','Don',12,'Deale','E1') END-EXEC
CALL "SUB32" USING SQLCODE
MOVE SQLCODE TO SQL-COD
* EXEC SQL INSERT INTO STAFF_C
* VALUES('E6','Tom',14,'Gettysburg','E5') END-EXEC
CALL "SUB33" USING SQLCODE
MOVE SQLCODE TO SQL-COD
* EXEC SQL INSERT INTO STAFF_C
* VALUES('E7','Kingdom',18,'Gettysburg','E7') END-EXEC
CALL "SUB34" USING SQLCODE
MOVE SQLCODE TO SQL-COD
MOVE 0 TO cnt1
MOVE 0 TO cnt2
MOVE 0 TO cnt3
MOVE 0 TO cnt4
MOVE 0 TO cnt5
* EXEC SQL SELECT COUNT(*) INTO :cnt1
* FROM STAFF_M END-EXEC
CALL "SUB35" USING SQLCODE cnt1
MOVE SQLCODE TO SQL-COD
* EXEC SQL SELECT COUNT(*) INTO :cnt4
* FROM STAFF_M
* WHERE PRI_WK IS NOT NULL END-EXEC
CALL "SUB36" USING SQLCODE cnt4
MOVE SQLCODE TO SQL-COD
* EXEC SQL SELECT COUNT(*) INTO :cnt2
* FROM PROJ_M END-EXEC
CALL "SUB37" USING SQLCODE cnt2
MOVE SQLCODE TO SQL-COD
* EXEC SQL SELECT COUNT(*) INTO :cnt5
* FROM PROJ_M
* WHERE MGR IS NULL END-EXEC
CALL "SUB38" USING SQLCODE cnt5
MOVE SQLCODE TO SQL-COD
* EXEC SQL SELECT COUNT(*) INTO :cnt3
* FROM STAFF_C END-EXEC
CALL "SUB39" USING SQLCODE cnt3
MOVE SQLCODE TO SQL-COD
if (cnt1 = 5 AND cnt2 = 6 AND cnt3 = 7 AND cnt4
= 5 AND cnt5 = 1 ) then
DISPLAY "PROJ_M, STAFF_M, STAFF_C were created
- " successfully!"
else
DISPLAY "*******************************************"
DISPLAY "* PROJ_M, STAFF_M or STAFF_C ERROR !!! *"
DISPLAY "*******************************************"
END-IF
* EXEC SQL COMMIT WORK;
CALL "SUB40" USING SQLCODE
MOVE SQLCODE TO SQL-COD
**** TESTER MAY CHOOSE TO INSERT CODE FOR errcnt > 0
STOP RUN .
* **** Procedures for PERFORM statements
Messung V0.5 in Prozent C=58 H=100 G=81
¤ Dauer der Verarbeitung: 0.10 Sekunden
(vorverarbeitet am 2026-06-09)
¤
*© Formatika GbR, Deutschland