xref: /original-bsd/usr.bin/f77/tests/tests/fm001.f (revision faf3fd95)
1c     comment section
2c
3c     fm001
4c
5c         this routine contains the boilerplate source coding which
6c     is used to print the report headings and run summaries for each
7c     of the elementary routines.
8c
9c         three tests are included which contain the procedures for
10c         testing the language features and deleting tests.
11c
12c         test 1 checks the pass procedure
13c         test 2 checks the fail procedure
14c         test 3 checks the delete procedure
15c
16c         if this routine does not execute correctly, then no other
17c     routines will be run.  there is no use in trying to validate a
18c     fortran compiler which cannot handle such basic statements.
19c
20c      **********************************************************
21c
22c         a compiler validation system for the fortran language
23c     based on specifications as defined in american national standard
24c     programming language fortran x3.9-1978, has been developed by the
25c     federal cobol compiler testing service.  the fortran compiler
26c     validation system (fcvs) consists of audit routines, their related
27c     data, and an executive system.  each audit routine is a fortran
28c     program, subprogram or function which includes tests of specific
29c     language elements and supporting procedures indicating the result
30c     of executing these tests.
31c
32c         this particular program/subprogram/function contains features
33c     found only in the subset as defined in x3.9-1978.
34c
35c         suggestions and comments should be forwarded to -
36c
37c                  department of the navy
38c                  federal cobol compiler testing service
39c                  washington, d.c.  20376
40c
41c      **********************************************************
42c
43c
44c
45c     initialization section
46c
47c     initialize constants
48c      **************
49c     i01 contains the logical unit number for the card reader.
50      i01 = 5
51c     i02 contains the logical unit number for the printer.
52      i02 = 6
53c     system environment section
54c
55cx010    this card is replaced by contents of fexec x-010 control card.
56c     the cx010 card is for overriding the program default i01 = 5
57c     (unit number for card reader).
58cx011    this card is replaced by contents of fexec x-011 control card.
59c     the cx011 card is for systems which require additional
60c     fortran statements for files associated with cx010 above.
61c
62cx020    this card is replaced by contents of fexec x-020 control card.
63c     the cx020 card is for overriding the program default i02 = 6
64c     (unit number for printer).
65cx021    this card is replaced by contents of fexec x-021 control card.
66c     the cx021 card is for systems which require additional
67c     fortran statements for files associated with cx020 above.
68c
69      ivpass=0
70      ivfail=0
71      ivdele=0
72      iczero=0
73c
74c     write page headers
75      write (i02,90000)
76      write (i02,90001)
77      write (i02,90002)
78      write (i02, 90002)
79      write (i02,90003)
80      write (i02,90002)
81      write (i02,90004)
82      write (i02,90002)
83      write (i02,90011)
84      write (i02,90002)
85      write (i02,90002)
86      write (i02,90005)
87      write (i02,90006)
88      write (i02,90002)
89c     test section
90c
91   11 continue
92c
93c      ****  test 001  ****
94c     test 001  -  basic procedure for coding tests
95c           also checks continue statement which should not have
96c           any affect on execution sequence
97c
98      if (iczero) 30010, 10, 30010
99   10 continue
100      ivtnum=1
101      go to 40010
10230010 ivdele=ivdele+1
103      write (i02,80003) ivtnum
104      if (iczero) 40010, 21, 40010
10540010 if (ivtnum - 1) 20010, 10010, 20010
10610010 ivpass=ivpass+1
107      write (i02,80001) ivtnum
108      go to 21
10920010 ivfail=ivfail+1
110      ivcomp=ivtnum
111      ivcorr=1
112      write (i02,80004) ivtnum, ivcomp, ivcorr
113   21 continue
114c
115c      ****  test 002  ****
116c     test - 002    force fail code to be executed
117c
118      if (iczero) 30020,20,30020
119   20 continue
120      ivtnum=2
121      go to 40020
12230020 ivdele=ivdele+1
123      write (i02,80003) ivtnum
124      if (iczero) 40020,31,40020
12540020 if (ivtnum-1) 20020, 10020, 20020
12610020 ivpass=ivpass+1
127      write (i02,80001) ivtnum
128      go to 31
12920020 ivfail=ivfail+1
130      ivcomp=ivtnum
131      ivcorr=2
132      write (i02,80004) ivtnum, ivcomp, ivcorr
133   31 continue
134c
135c      ****  test 003  ****
136c     test 003 - delete procedure tested
137c
138      if (iczero) 30030,30,30030
139   30 continue
140c     ivtnum=5000
141c     go to 40030
14230030 ivdele=ivdele+1
143      ivtnum=3
144      write (i02,80003) ivtnum
145      if (iczero) 40030,99999,40030
14640030 if (ivtnum - 5000) 20030,10030,20030
14710030 ivpass=ivpass +1
148      write (i02,80001) ivtnum
149      go to 99999
15020030 ivfail=ivfail+1
151      ivcomp=ivtnum
152      ivcorr=5000
153      write (i02,80004) ivtnum, ivcomp, ivcorr
154c
155c     write page footings and run summaries
15699999 continue
157      write (i02,90002)
158      write (i02,90006)
159      write (i02,90002)
160      write (i02,90002)
161      write (i02,90007)
162      write (i02,90002)
163      write (i02,90008)  ivfail
164      write (i02,90009) ivpass
165      write (i02,90010) ivdele
166c
167c
168c     special output statements for this routine
169      write (i02,90000)
170      write (i02,90002)
171      write (i02,80031)
172      write (i02,90002)
173      write (i02,80010)
174      write (i02,80020)
175      write (i02,80030)
176      write (i02,80032)
177c
178c     terminate routine execution
179      stop
180c
181c     format statements for page headers
18290000 format (1h1)
18390002 format (1h )
18490001 format (1h ,10x,34hfortran compiler validation system)
18590003 format (1h ,21x,11hversion 1.0)
18690004 format (1h ,10x,38hfor official use only - copyright 1978)
18790005 format (1h ,5x,4htest,5x,9hpass/fail, 5x,8hcomputed,8x,7hcorrect)
18890006 format (1h ,5x,46h----------------------------------------------)
18990011 format (1h ,18x,17hsubset level test)
190c
191c     format statements for run summaries
19290008 format (1h ,15x,i5,19h errors encountered)
19390009 format (1h ,15x,i5,13h tests passed)
19490010 format (1h ,15x,i5,14h tests deleted)
195c
196c     format statements for test results
19780001 format (1h ,4x,i5,7x,4hpass)
19880002 format (1h ,4x,i5,7x,4hfail)
19980003 format (1h ,4x,i5,7x,7hdeleted)
20080004 format (1h ,4x,i5,7x,4hfail,10x,i6,9x,i6)
20180005 format (1h ,4x,i5,7x,4hfail,4x,e12.5,3x,e12.5)
202c
203c     formats for current routine
20480031 format (1h ,10x,39hthe program fm001 executed correctly if)
20580010 format (1h ,15x,13htest 1 passed)
20680020 format (1h ,15x,42htest 2 failed with computed and correct =2)
20780030 format (1h ,15x,18htest 3 was deleted)
20880032 format (1h ,15x,34hthe run summary totals all equal 1)
20990007 format (1h ,20x,20hend of program fm001)
210      end
211