C COMMENT SECTION C C FM007 C C THIS ROUTINE TESTS THE USE OF DATA INITIALIZATION STATEMENTS. C DATA INITIALIZATION STATEMENTS ARE USED TO DEFINE INITIAL VALUES C OF INTEGER VARIABLES. THE DATA STATEMENTS CONTAIN UNSIGNED, C POSITIVE SIGNED AND NEGATIVE SIGNED INTEGER CONSTANTS. THE LAST C DATA STATEMENT CONTAINS THE FORM C J*INTEGER CONSTANT C WHICH INDICATES THE CONSTANT IS TO BE SPECIFIED J TIMES. C C THE TESTS IN THIS ROUTINE CHECK THE INTEGER VARIABLES IN THE C DATA STATEMENT FOR THE ASSIGNED INITIAL VALUES. C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 4.3, INTEGER TYPE C SECTION 4.3.1, INTEGER CONSTANT C SECTION 9, DATA STATEMENT C C C DATA INITIALIZATION STATEMENTS C DATA IVON01,IVON02,IVON03,IVON04,IVON05/3,76,587,9999,21111/ DATA IVON06,IVON07,IVON08,IVON09,IVON10/+3,+76,+587,+9999,+21111/ DATA IVON11,IVON12,IVON13,IVON14,IVON15/-3,-76,-587,-9999,-21111/ DATA IVON16,IVON17,IVON18,IVON19,IVON20/ 2*119, 2*7, -427/ C C C ********************************************************** C C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN NATIONAL STANDARD C PROGRAMMING LANGUAGE FORTRAN X3.9-1978, HAS BEEN DEVELOPED BY THE C FEDERAL COBOL COMPILER TESTING SERVICE. THE FORTRAN COMPILER C VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT ROUTINES, THEIR RELATED C DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT ROUTINE IS A FORTRAN C PROGRAM, SUBPROGRAM OR FUNCTION WHICH INCLUDES TESTS OF SPECIFIC C LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING THE RESULT C OF EXECUTING THESE TESTS. C C THIS PARTICULAR PROGRAM/SUBPROGRAM/FUNCTION CONTAINS FEATURES C FOUND ONLY IN THE SUBSET AS DEFINED IN X3.9-1978. C C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO - C C DEPARTMENT OF THE NAVY C FEDERAL COBOL COMPILER TESTING SERVICE C WASHINGTON, D.C. 20376 C C ********************************************************** C C C C INITIALIZATION SECTION C C INITIALIZE CONSTANTS C ************** C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 5 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 6 C SYSTEM ENVIRONMENT SECTION C CX010 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-010 CONTROL CARD. C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 C (UNIT NUMBER FOR CARD READER). CX011 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-011 CONTROL CARD. C THE CX011 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX010 ABOVE. C CX020 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-020 CONTROL CARD. C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02 = 6 C (UNIT NUMBER FOR PRINTER). CX021 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-021 CONTROL CARD. C THE CX021 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX020 ABOVE. C IVPASS=0 IVFAIL=0 IVDELE=0 ICZERO=0 C C WRITE PAGE HEADERS WRITE (I02,90000) WRITE (I02,90001) WRITE (I02,90002) WRITE (I02, 90002) WRITE (I02,90003) WRITE (I02,90002) WRITE (I02,90004) WRITE (I02,90002) WRITE (I02,90011) WRITE (I02,90002) WRITE (I02,90002) WRITE (I02,90005) WRITE (I02,90006) WRITE (I02,90002) C TEST SECTION C C TESTS 80 THROUGH 84 CHECK THE VALUES INITIALIZED BY THE DATA C STATEMENT CONTAINING IVON01,..., IVON05. C 801 CONTINUE IVTNUM = 80 C C **** TEST 80 **** C IF (ICZERO) 30800, 800, 30800 800 CONTINUE IVCOMP = IVON01 GO TO 40800 30800 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40800, 811, 40800 40800 IF (IVCOMP - 3) 20800, 10800,20800 10800 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 811 20800 IVFAIL = IVFAIL + 1 IVCORR = 3 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 811 CONTINUE IVTNUM = 81 C C **** TEST 81 **** C IF (ICZERO) 30810, 810, 30810 810 CONTINUE IVCOMP = IVON02 GO TO 40810 30810 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40810, 821, 40810 40810 IF (IVCOMP - 76) 20810, 10810, 20810 10810 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 821 20810 IVFAIL = IVFAIL + 1 IVCORR = 76 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 821 CONTINUE IVTNUM = 82 C C **** TEST 82 **** C IF (ICZERO) 30820, 820, 30820 820 CONTINUE IVCOMP = IVON03 GO TO 40820 30820 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40820, 831, 40820 40820 IF (IVCOMP - 587) 20820, 10820, 20820 10820 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 831 20820 IVFAIL = IVFAIL + 1 IVCORR = 587 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 831 CONTINUE IVTNUM = 83 C C **** TEST 83 **** C IF (ICZERO) 30830, 830, 30830 830 CONTINUE IVCOMP =IVON04 GO TO 40830 30830 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40830, 841, 40830 40830 IF (IVCOMP - 9999) 20830, 10830, 20830 10830 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 841 20830 IVFAIL = IVFAIL + 1 IVCORR = 9999 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 841 CONTINUE IVTNUM = 84 C C **** TEST 84 **** C IF (ICZERO) 30840, 840, 30840 840 CONTINUE IVCOMP = IVON05 GO TO 40840 30840 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40840, 851, 40840 40840 IF (IVCOMP - 21111) 20840, 10840, 20840 10840 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 851 20840 IVFAIL = IVFAIL + 1 IVCORR = 21111 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TESTS 85 THROUGH 89 CHECK THE VALUES INITIALIZED BY THE DATA C STATEMENT CONTAINING IVON06,...,IVON10. C 851 CONTINUE IVTNUM = 85 C C **** TEST 85 **** C IF (ICZERO) 30850, 850, 30850 850 CONTINUE IVCOMP=IVON06 GO TO 40850 30850 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40850, 861, 40850 40850 IF (IVCOMP - 3) 20850, 10850, 20850 10850 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 861 20850 IVFAIL = IVFAIL + 1 IVCORR = 3 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 861 CONTINUE IVTNUM = 86 C C **** TEST 86 **** C IF (ICZERO) 30860, 860, 30860 860 CONTINUE IVCOMP = IVON07 GO TO 40860 30860 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40860, 871, 40860 40860 IF (IVCOMP - 76) 20860, 10860, 20860 10860 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 871 20860 IVFAIL = IVFAIL + 1 IVCORR = 76 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 871 CONTINUE IVTNUM = 87 C C **** TEST 87 **** C IF (ICZERO) 30870, 870, 30870 870 CONTINUE IVCOMP = IVON08 GO TO 40870 30870 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40870, 881, 40870 40870 IF (IVCOMP - 587) 20870, 10870, 20870 10870 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 881 20870 IVFAIL = IVFAIL + 1 IVCORR = 587 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 881 CONTINUE IVTNUM = 88 C C **** TEST 88 **** C IF (ICZERO) 30880, 880, 30880 880 CONTINUE IVCOMP = IVON09 GO TO 40880 30880 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40880, 891, 40880 40880 IF (IVCOMP - 9999) 20880, 10880, 20880 10880 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 891 20880 IVFAIL = IVFAIL + 1 IVCORR = 9999 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 891 CONTINUE IVTNUM = 89 C C **** TEST 89 **** C IF (ICZERO) 30890, 890, 30890 890 CONTINUE IVCOMP = IVON10 GO TO 40890 30890 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40890, 901, 40890 40890 IF (IVCOMP - 21111) 20890, 10890, 20890 10890 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 901 20890 IVFAIL = IVFAIL + 1 IVCORR= 21111 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TESTS 90 THROUGH 94 CHECK THE VALUES INITIALIZED BY THE DATA C STATEMENT CONTAINING IVON11,...,IVON15. C 901 CONTINUE IVTNUM = 90 C C **** TEST 90 **** C IF (ICZERO) 30900, 900, 30900 900 CONTINUE IVCOMP = IVON11 GO TO 40900 30900 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40900, 911, 40900 40900 IF (IVCOMP + 3) 20900, 10900, 20900 10900 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 911 20900 IVFAIL = IVFAIL + 1 IVCORR = -3 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 911 CONTINUE IVTNUM = 91 C C **** TEST 91 **** C IF (ICZERO) 30910, 910, 30910 910 CONTINUE IVCOMP = IVON12 GO TO 40910 30910 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40910, 921, 40910 40910 IF (IVCOMP + 76) 20910, 10910, 20910 10910 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 921 20910 IVFAIL = IVFAIL + 1 IVCORR = -76 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 921 CONTINUE IVTNUM = 92 C C **** TEST 92 **** C IF (ICZERO) 30920, 920, 30920 920 CONTINUE IVCOMP= IVON13 GO TO 40920 30920 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40920, 931, 40920 40920 IF (IVCOMP + 587) 20920, 10920, 20920 10920 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 931 20920 IVFAIL = IVFAIL + 1 IVCORR = -587 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 931 CONTINUE IVTNUM = 93 C C **** TEST 93 **** C IF (ICZERO) 30930, 930, 30930 930 CONTINUE IVCOMP = IVON14 GO TO 40930 30930 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40930, 941, 40930 40930 IF (IVCOMP + 9999) 20930, 10930, 20930 10930 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 941 20930 IVFAIL = IVFAIL + 1 IVCORR = -9999 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 941 CONTINUE IVTNUM = 94 C C **** TEST 94 **** C IF (ICZERO) 30940, 940, 30940 940 CONTINUE IVCOMP = IVON15 GO TO 40940 30940 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40940, 951, 40940 40940 IF (IVCOMP + 21111) 20940, 10940, 20940 10940 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 951 20940 IVFAIL = IVFAIL + 1 IVCORR = -21111 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TESTS 95 THROUGH 99 CHECK THE VALUES INITIALIZED BY THE DATA C STATEMENT CONTAINING IVON16,...,IVON20. C 951 CONTINUE IVTNUM = 95 C C **** TEST 95 **** C IF (ICZERO) 30950, 950, 30950 950 CONTINUE IVCOMP =IVON16 GO TO 40950 30950 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40950, 961, 40950 40950 IF (IVCOMP - 119) 20950, 10950, 20950 10950 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 961 20950 IVFAIL = IVFAIL + 1 IVCORR = 119 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 961 CONTINUE IVTNUM = 96 C C **** TEST 96 **** C IF (ICZERO) 30960, 960, 30960 960 CONTINUE IVCOMP=IVON17 GO TO 40960 30960 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40960, 971, 40960 40960 IF (IVCOMP - 119) 20960, 10960, 20960 10960 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 971 20960 IVFAIL = IVFAIL + 1 IVCORR = 119 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 971 CONTINUE IVTNUM = 97 C C **** TEST 97 **** C IF (ICZERO) 30970, 970, 30970 970 CONTINUE IVCOMP = IVON18 GO TO 40970 30970 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40970, 981, 40970 40970 IF (IVCOMP - 7) 20970, 10970, 20970 10970 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 981 20970 IVFAIL = IVFAIL + 1 IVCORR = 7 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 981 CONTINUE IVTNUM = 98 C C **** TEST 98 **** C IF (ICZERO) 30980, 980, 30980 980 CONTINUE IVCOMP = IVON19 GO TO 40980 30980 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40980, 991, 40980 40980 IF (IVCOMP - 7) 20980, 10980, 20980 10980 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 991 20980 IVFAIL = IVFAIL + 1 IVCORR = 7 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 991 CONTINUE IVTNUM = 99 C C **** TEST 99 **** C IF (ICZERO) 30990, 990, 30990 990 CONTINUE IVCOMP = IVON20 GO TO 40990 30990 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40990, 1001, 40990 40990 IF (IVCOMP + 427) 20990,10990,20990 10990 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1001 20990 IVFAIL = IVFAIL + 1 IVCORR = -427 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1001 CONTINUE C C WRITE PAGE FOOTINGS AND RUN SUMMARIES 99999 CONTINUE WRITE (I02,90002) WRITE (I02,90006) WRITE (I02,90002) WRITE (I02,90002) WRITE (I02,90007) WRITE (I02,90002) WRITE (I02,90008) IVFAIL WRITE (I02,90009) IVPASS WRITE (I02,90010) IVDELE C C C TERMINATE ROUTINE EXECUTION STOP C C FORMAT STATEMENTS FOR PAGE HEADERS 90000 FORMAT (1H1) 90002 FORMAT (1H ) 90001 FORMAT (1H ,10X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90003 FORMAT (1H ,21X,11HVERSION 1.0) 90004 FORMAT (1H ,10X,38HFOR OFFICIAL USE ONLY - COPYRIGHT 1978) 90005 FORMAT (1H ,5X,4HTEST,5X,9HPASS/FAIL, 5X,8HCOMPUTED,8X,7HCORRECT) 90006 FORMAT (1H ,5X,46H----------------------------------------------) 90011 FORMAT (1H ,18X,17HSUBSET LEVEL TEST) C C FORMAT STATEMENTS FOR RUN SUMMARIES 90008 FORMAT (1H ,15X,I5,19H ERRORS ENCOUNTERED) 90009 FORMAT (1H ,15X,I5,13H TESTS PASSED) 90010 FORMAT (1H ,15X,I5,14H TESTS DELETED) C C FORMAT STATEMENTS FOR TEST RESULTS 80001 FORMAT (1H ,4X,I5,7X,4HPASS) 80002 FORMAT (1H ,4X,I5,7X,4HFAIL) 80003 FORMAT (1H ,4X,I5,7X,7HDELETED) 80004 FORMAT (1H ,4X,I5,7X,4HFAIL,10X,I6,9X,I6) 80005 FORMAT (1H ,4X,I5,7X,4HFAIL,4X,E12.5,3X,E12.5) C 90007 FORMAT (1H ,20X,20HEND OF PROGRAM FM007) END