|
|
BSD 4.3tahoe
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
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.