xref: /original-bsd/usr.bin/f77/tests/tests/fm060.f (revision 9acaf688)
1c     comment section
2c
3c     fm060
4c
5c         this routine contains basic arithmetic if statement tests for
6c     the format
7c
8c                   if (e) k1,k2,k3
9c
10c     where e is a simple real expression of the form
11c
12c            real variable
13c            real variable - real constant
14c            real variable + real constant
15c
16c     and k1, k2 and k3 are statement labels.
17c
18c         this routine also tests arithmetic assignment statements of
19c     the form
20c                  real variable = real constant
21c                  real variable = real variable
22c                  real variable = -real variable
23c
24c     the real constants and real variables contain both positive and
25c     negative values.
26c
27c         a real datum is a processor approximation to the value of a
28c     real number.  it may assume positive, negative and zero values.
29c
30c         a basic real constant is written as an integer part, a decimal
31c     point, and a decimal fraction part in that order.  both the
32c     integer part and the decimal part are strings of digits; either
33c     one of these strings may be empty but not both.  the constant is
34c     an approximation to the digit string interpreted as a decimal
35c     numeral.
36c
37c         a decimal exponent is written as the letter e, followed by an
38c     optionally signed integer constant.
39c
40c         a real constant is indicated by writing a basic real constant,
41c     a basic real constant followed by a decimal exponent, or an
42c     integer constant followed by a decimal exponent.
43c
44c      references
45c        american national standard programming language fortran,
46c              x3.9-1978
47c
48c        section 4.4, real type
49c        section 4.4.1, real constant
50c        section 6.1, arithmetic expressions
51c        section 10.1, arithmetic assignment statement
52c        section 11.4, arithmetic if statement
53c
54c      **********************************************************
55c
56c         a compiler validation system for the fortran language
57c     based on specifications as defined in american national standard
58c     programming language fortran x3.9-1978, has been developed by the
59c     federal cobol compiler testing service.  the fortran compiler
60c     validation system (fcvs) consists of audit routines, their related
61c     data, and an executive system.  each audit routine is a fortran
62c     program, subprogram or function which includes tests of specific
63c     language elements and supporting procedures indicating the result
64c     of executing these tests.
65c
66c         this particular program/subprogram/function contains features
67c     found only in the subset as defined in x3.9-1978.
68c
69c         suggestions and comments should be forwarded to -
70c
71c                  department of the navy
72c                  federal cobol compiler testing service
73c                  washington, d.c.  20376
74c
75c      **********************************************************
76c
77c
78c
79c     initialization section
80c
81c     initialize constants
82c      **************
83c     i01 contains the logical unit number for the card reader.
84      i01 = 5
85c     i02 contains the logical unit number for the printer.
86      i02 = 6
87c     system environment section
88c
89cx010    this card is replaced by contents of fexec x-010 control card.
90c     the cx010 card is for overriding the program default i01 = 5
91c     (unit number for card reader).
92cx011    this card is replaced by contents of fexec x-011 control card.
93c     the cx011 card is for systems which require additional
94c     fortran statements for files associated with cx010 above.
95c
96cx020    this card is replaced by contents of fexec x-020 control card.
97c     the cx020 card is for overriding the program default i02 = 6
98c     (unit number for printer).
99cx021    this card is replaced by contents of fexec x-021 control card.
100c     the cx021 card is for systems which require additional
101c     fortran statements for files associated with cx020 above.
102c
103      ivpass=0
104      ivfail=0
105      ivdele=0
106      iczero=0
107c
108c     write page headers
109      write (i02,90000)
110      write (i02,90001)
111      write (i02,90002)
112      write (i02, 90002)
113      write (i02,90003)
114      write (i02,90002)
115      write (i02,90004)
116      write (i02,90002)
117      write (i02,90011)
118      write (i02,90002)
119      write (i02,90002)
120      write (i02,90005)
121      write (i02,90006)
122      write (i02,90002)
123c
124c     test section
125c
126c         arithmetic if statement
127c
128c     test 1 through test 3 contain basic arithmetic if statement tests
129c     with a real variable as arithmetic expression.
130c
131   11 continue
132      ivtnum =   1
133c
134c      ****  test   1  ****
135c         test 001  - less than zero branch expected
136c
137      if (iczero) 30010,   10, 30010
138   10 continue
139      rvcomp = 0.0
140      rvon01 = -1.0
141      if (rvon01)  12,40010, 40010
142   12 rvcomp = rvon01
143      go to 40010
14430010 ivdele = ivdele + 1
145      write (i02,80003) ivtnum
146      if (iczero) 40010,   21, 40010
14740010 if (rvcomp) 10010,20010,20010
14810010 ivpass = ivpass + 1
149      write (i02,80001) ivtnum
150      go to   21
15120010 ivfail = ivfail + 1
152      rvcorr = -1.0
153      write (i02,80005) ivtnum, rvcomp, rvcorr
154   21 continue
155      ivtnum =   2
156c
157c      ****  test   2  ****
158c         test 002  -  equal to zero branch expected
159c
160      if (iczero) 30020,   20, 30020
161   20 continue
162      rvcomp = 1.0
163      rvon01 = 0.0
164      if (rvon01) 40020,22,40020
165   22 rvcomp = rvon01
166      go to 40020
16730020 ivdele = ivdele + 1
168      write (i02,80003) ivtnum
169      if (iczero) 40020,   31, 40020
17040020 if (rvcomp)  20020,10020,20020
17110020 ivpass = ivpass + 1
172      write (i02,80001) ivtnum
173      go to   31
17420020 ivfail = ivfail + 1
175      rvcorr = 0.0
176      write (i02,80005) ivtnum, rvcomp, rvcorr
177   31 continue
178      ivtnum =   3
179c
180c      ****  test   3  ****
181c         test 003  -  greater than zero branch expected
182c
183      if (iczero) 30030,   30, 30030
184   30 continue
185      rvcomp = 0.0
186      rvon01 = 1.0
187      if (rvon01) 40030,40030,32
188   32 rvcomp = rvon01
189      go to 40030
19030030 ivdele = ivdele + 1
191      write (i02,80003) ivtnum
192      if (iczero) 40030,   41, 40030
19340030 if (rvcomp)  20030,20030,10030
19410030 ivpass = ivpass + 1
195      write (i02,80001) ivtnum
196      go to   41
19720030 ivfail = ivfail + 1
198      rvcorr = 1.0
199      write (i02,80005) ivtnum, rvcomp, rvcorr
200   41 continue
201      ivtnum =   4
202c
203c      ****  test   4  ****
204c     test 004  - basic if statements test
205c           these if statements are used in real variable test
206c           verification.  the arithmetic expressions are of the form
207c                   real variable - real constant
208c
209      if (iczero) 30040,   40, 30040
210   40 continue
211      rvcomp = 4.0
212      rvon01 = 1.0
213      if (rvon01 - .99995) 40040,42,42
214   42 if (rvon01 - 1.0005) 43,43,40040
215   43 rvcomp = 0.0
216      go to 40040
21730040 ivdele = ivdele + 1
218      write (i02,80003) ivtnum
219      if (iczero) 40040,   51, 40040
22040040 if (rvcomp) 20040,10040,20040
22110040 ivpass = ivpass + 1
222      write (i02,80001) ivtnum
223      go to   51
22420040 ivfail = ivfail + 1
225      rvcorr = 0.0
226      write (i02,80005) ivtnum, rvcomp, rvcorr
227   51 continue
228      ivtnum =   5
229c
230c      ****  test   5  ****
231c     test 005  -  basic if statements test
232c           these if statements are used in real variable test
233c           verification.  the arithmetic expressions are of the form
234c                   real variable + real constant
235c
236      if (iczero) 30050,   50, 30050
237   50 continue
238      rvcomp = -1.0
239      rvon01 = -1.0
240      if (rvon01 + 1.0005) 40050,52,52
241   52 if (rvon01 + .99995) 53,53,40050
242   53 rvcomp = 0.0
243      go to 40050
24430050 ivdele = ivdele + 1
245      write (i02,80003) ivtnum
246      if (iczero) 40050,   61, 40050
24740050 if (rvcomp) 20050,10050,20050
24810050 ivpass = ivpass + 1
249      write (i02,80001) ivtnum
250      go to   61
25120050 ivfail = ivfail + 1
252      rvcorr = 0.0
253      write (i02,80005) ivtnum, rvcomp, rvcorr
254c
255c        arithmetic assignment statement
256c
257c
258c     test 006 through test 025 contain arithmetic assignment
259c     statements of the form
260c              real variable = real constant
261c
262c          the three types of real constants are tested with positive
263c     and negative values for the constants, and positive and negative
264c     exponents.
265c
266c     test 006 through test 011 - constant is basic real constant
267c
268   61 continue
269      ivtnum =   6
270c
271c      ****  test   6  ****
272c
273      if (iczero) 30060,   60, 30060
274   60 continue
275      rvcomp = 2.0
276      go to 40060
27730060 ivdele = ivdele + 1
278      write (i02,80003) ivtnum
279      if (iczero) 40060,   71, 40060
28040060 if (rvcomp - 1.9995) 20060,10060,40061
28140061 if (rvcomp - 2.0005) 10060,10060,20060
28210060 ivpass = ivpass + 1
283      write (i02,80001) ivtnum
284      go to   71
28520060 ivfail = ivfail + 1
286      rvcorr = 2.0
287      write (i02,80005) ivtnum, rvcomp, rvcorr
288   71 continue
289      ivtnum =   7
290c
291c      ****  test   7  ****
292c
293      if (iczero) 30070,   70, 30070
294   70 continue
295      rvcomp = 44.5
296      go to 40070
29730070 ivdele = ivdele + 1
298      write (i02,80003) ivtnum
299      if (iczero) 40070,   81, 40070
30040070 if (rvcomp - 44.495) 20070,10070,40071
30140071 if (rvcomp - 45.505) 10070,10070,20070
30210070 ivpass = ivpass + 1
303      write (i02,80001) ivtnum
304      go to   81
30520070 ivfail = ivfail + 1
306      rvcorr = 44.5
307      write (i02,80005) ivtnum, rvcomp, rvcorr
308   81 continue
309      ivtnum =   8
310c
311c      ****  test   8  ****
312c
313      if (iczero) 30080,   80, 30080
314   80 continue
315      rvcomp = -2.0
316      go to 40080
31730080 ivdele = ivdele + 1
318      write (i02,80003) ivtnum
319      if (iczero) 40080,   91, 40080
32040080 if (rvcomp + 2.0005) 20080,10080,40081
32140081 if (rvcomp + 1.9995) 10080,10080,20080
32210080 ivpass = ivpass + 1
323      write (i02,80001) ivtnum
324      go to   91
32520080 ivfail = ivfail + 1
326      rvcorr = -2.0
327      write (i02,80005) ivtnum, rvcomp, rvcorr
328   91 continue
329      ivtnum =   9
330c
331c      ****  test   9  ****
332c
333      if (iczero) 30090,   90, 30090
334   90 continue
335      rvcomp = 65001.
336      go to 40090
33730090 ivdele = ivdele + 1
338      write (i02,80003) ivtnum
339      if (iczero) 40090,  101, 40090
34040090 if (rvcomp - 64996.) 20090,10090,40091
34140091 if (rvcomp - 65006.) 10090,10090,20090
34210090 ivpass = ivpass + 1
343      write (i02,80001) ivtnum
344      go to  101
34520090 ivfail = ivfail + 1
346      rvcorr = 65001.
347      write (i02,80005) ivtnum, rvcomp, rvcorr
348  101 continue
349      ivtnum =  10
350c
351c      ****  test  10  ****
352c
353      if (iczero) 30100,  100, 30100
354  100 continue
355      rvcomp = .65001
356      go to 40100
35730100 ivdele = ivdele + 1
358      write (i02,80003) ivtnum
359      if (iczero) 40100,  111, 40100
36040100 if (rvcomp - .64996) 20100,10100,40101
36140101 if (rvcomp - .65006) 10100,10100,20100
36210100 ivpass = ivpass + 1
363      write (i02,80001) ivtnum
364      go to  111
36520100 ivfail = ivfail + 1
366      rvcorr = .65001
367      write (i02,80005) ivtnum, rvcomp, rvcorr
368  111 continue
369      ivtnum =  11
370c
371c      ****  test  11  ****
372c
373      if (iczero) 30110,  110, 30110
374  110 continue
375      rvcomp = -.33333
376      go to 40110
37730110 ivdele = ivdele + 1
378      write (i02,80003) ivtnum
379      if (iczero) 40110,  121, 40110
38040110 if (rvcomp + .33338) 20110,10110,40111
38140111 if (rvcomp + .33328) 10110,10110,20110
38210110 ivpass = ivpass + 1
383      write (i02,80001) ivtnum
384      go to  121
38520110 ivfail = ivfail + 1
386      rvcorr = -.33333
387      write (i02,80005) ivtnum, rvcomp, rvcorr
388c
389c     test 012 through test 19 - real constant is basic real constant
390c                              - followed by decimal exponent
391c
392  121 continue
393      ivtnum =  12
394c
395c      ****  test  12  ****
396c
397      if (iczero) 30120,  120, 30120
398  120 continue
399      rvcomp = .2e+1
400      go to 40120
40130120 ivdele = ivdele + 1
402      write (i02,80003) ivtnum
403      if (iczero) 40120,  131, 40120
40440120 if (rvcomp - 1.9995) 20120,10120,40121
40540121 if (rvcomp - 2.0005) 10120,10120,20120
40610120 ivpass = ivpass + 1
407      write (i02,80001) ivtnum
408      go to  131
40920120 ivfail = ivfail + 1
410      rvcorr = 2.0
411      write (i02,80005) ivtnum, rvcomp, rvcorr
412  131 continue
413      ivtnum =  13
414c
415c      ****  test  13  ****
416c
417      if (iczero) 30130,  130, 30130
418  130 continue
419      rvcomp = 2.0e+0
420      go to 40130
42130130 ivdele = ivdele + 1
422      write (i02,80003) ivtnum
423      if (iczero) 40130,  141, 40130
42440130 if (rvcomp - 1.9995) 20130,10130,40131
42540131 if (rvcomp - 2.0005) 10130,10130,20130
42610130 ivpass = ivpass + 1
427      write (i02,80001) ivtnum
428      go to  141
42920130 ivfail = ivfail + 1
430      rvcorr = 2.0
431      write (i02,80005) ivtnum, rvcomp, rvcorr
432  141 continue
433      ivtnum =  14
434c
435c      ****  test  14  ****
436c
437      if (iczero) 30140,  140, 30140
438  140 continue
439      rvcomp = 445.0e-01
440      go to 40140
44130140 ivdele = ivdele + 1
442      write (i02,80003) ivtnum
443      if (iczero) 40140,  151, 40140
44440140 if (rvcomp - 44.495) 20140,10140,40141
44540141 if (rvcomp - 44.505) 10140,10140,20140
44610140 ivpass = ivpass + 1
447      write (i02,80001) ivtnum
448      go to  151
44920140 ivfail = ivfail + 1
450      rvcorr = 44.5
451      write (i02,80005) ivtnum, rvcomp, rvcorr
452  151 continue
453      ivtnum =  15
454c
455c      ****  test  15  ****
456c
457      if (iczero) 30150,  150, 30150
458  150 continue
459      rvcomp = 4.450e1
460      go to 40150
46130150 ivdele = ivdele + 1
462      write (i02,80003) ivtnum
463      if (iczero) 40150,  161, 40150
46440150 if (rvcomp - 44.495) 20150,10150,40151
46540151 if (rvcomp - 44.505) 10150,10150,20150
46610150 ivpass = ivpass + 1
467      write (i02,80001) ivtnum
468      go to  161
46920150 ivfail = ivfail + 1
470      rvcorr = 44.5
471      write (i02,80005) ivtnum, rvcomp, rvcorr
472  161 continue
473      ivtnum =  16
474c
475c      ****  test  16  ****
476c
477      if (iczero) 30160,  160, 30160
478  160 continue
479      rvcomp = 2.e+15
480      go to 40160
48130160 ivdele = ivdele + 1
482      write (i02,80003) ivtnum
483      if (iczero) 40160,  171, 40160
48440160 if (rvcomp - 1.9995e+15) 20160,10160,40161
48540161 if (rvcomp - 2.0005e+15) 10160,10160,20160
48610160 ivpass = ivpass + 1
487      write (i02,80001) ivtnum
488      go to  171
48920160 ivfail = ivfail + 1
490      rvcorr = 2.0e+15
491      write (i02,80005) ivtnum, rvcomp, rvcorr
492  171 continue
493      ivtnum =  17
494c
495c      ****  test  17  ****
496c
497      if (iczero) 30170,  170, 30170
498  170 continue
499      rvcomp = 44.5e-15
500      go to 40170
50130170 ivdele = ivdele + 1
502      write (i02,80003) ivtnum
503      if (iczero) 40170,  181, 40170
50440170 if (rvcomp - 44.495e-15) 20170,10170,40171
50540171 if (rvcomp - 44.505e-15) 10170,10170,20170
50610170 ivpass = ivpass + 1
507      write (i02,80001) ivtnum
508      go to  181
50920170 ivfail = ivfail + 1
510      rvcorr = 44.5e-15
511      write (i02,80005) ivtnum, rvcomp, rvcorr
512  181 continue
513      ivtnum =  18
514c
515c      ****  test  18  ****
516c
517      if (iczero) 30180,  180, 30180
518  180 continue
519      rvcomp = -4.45e0
520      go to 40180
52130180 ivdele = ivdele + 1
522      write (i02,80003) ivtnum
523      if (iczero) 40180,  191, 40180
52440180 if (rvcomp + 4.4505) 20180,10180,40181
52540181 if (rvcomp + 4.4495) 10180,10180,20180
52610180 ivpass = ivpass + 1
527      write (i02,80001) ivtnum
528      go to  191
52920180 ivfail = ivfail + 1
530      rvcorr = -4.45
531      write (i02,80005) ivtnum, rvcomp, rvcorr
532  191 continue
533      ivtnum =  19
534c
535c      ****  test  19  ****
536c
537      if (iczero) 30190,  190, 30190
538  190 continue
539      rvcomp = -6511.8e-0
540      go to 40190
54130190 ivdele = ivdele + 1
542      write (i02,80003) ivtnum
543      if (iczero) 40190,  201, 40190
54440190 if (rvcomp + 6512.3) 20190,10190,40191
54540191 if (rvcomp + 6511.3) 10190,10190,20190
54610190 ivpass = ivpass + 1
547      write (i02,80001) ivtnum
548      go to  201
54920190 ivfail = ivfail + 1
550      rvcorr = -6511.8
551      write (i02,80005) ivtnum, rvcomp, rvcorr
552c
553c     test 020 through test 025 - integer constant followed
554c                               - by a decimal exponent
555c
556  201 continue
557      ivtnum =  20
558c
559c      ****  test  20  ****
560c
561      if (iczero) 30200,  200, 30200
562  200 continue
563      rvcomp = 2e+1
564      go to 40200
56530200 ivdele = ivdele + 1
566      write (i02,80003) ivtnum
567      if (iczero) 40200,  211, 40200
56840200 if (rvcomp - 19.995) 20200,10200,40201
56940201 if (rvcomp - 20.005) 10200,10200,20200
57010200 ivpass = ivpass + 1
571      write (i02,80001) ivtnum
572      go to  211
57320200 ivfail = ivfail + 1
574      rvcorr = 20.0
575      write (i02,80005) ivtnum, rvcomp, rvcorr
576  211 continue
577      ivtnum =  21
578c
579c      ****  test  21  ****
580c
581      if (iczero) 30210,  210, 30210
582  210 continue
583      rvcomp = 445e-02
584      go to 40210
58530210 ivdele = ivdele + 1
586      write (i02,80003) ivtnum
587      if (iczero) 40210,  221, 40210
58840210 if (rvcomp - 4.4495) 20210,10210,40211
58940211 if (rvcomp - 4.4505) 10210,10210,20210
59010210 ivpass = ivpass + 1
591      write (i02,80001) ivtnum
592      go to  221
59320210 ivfail = ivfail + 1
594      rvcorr = 4.45
595      write (i02,80005) ivtnum, rvcomp, rvcorr
596  221 continue
597      ivtnum =  22
598c
599c      ****  test  22  ****
600c
601      if (iczero) 30220,  220, 30220
602  220 continue
603      rvcomp = 7e3
604      go to 40220
60530220 ivdele = ivdele + 1
606      write (i02,80003) ivtnum
607      if (iczero) 40220,  231, 40220
60840220 if (rvcomp - 6999.0) 20220,10220,40221
60940221 if (rvcomp - 7001.0) 10220,10220,20220
61010220 ivpass = ivpass + 1
611      write (i02,80001) ivtnum
612      go to  231
61320220 ivfail = ivfail + 1
614      rvcorr = 7000.0
615      write (i02,80005) ivtnum, rvcomp, rvcorr
616  231 continue
617      ivtnum =  23
618c
619c      ****  test  23  ****
620c
621      if (iczero) 30230,  230, 30230
622  230 continue
623      rvcomp = 214 e 0
624      go to 40230
62530230 ivdele = ivdele + 1
626      write (i02,80003) ivtnum
627      if (iczero) 40230,  241, 40230
62840230 if (rvcomp - 213.95) 20230,10230,40231
62940231 if (rvcomp - 214.05) 10230,10230,20230
63010230 ivpass = ivpass + 1
631      write (i02,80001) ivtnum
632      go to  241
63320230 ivfail = ivfail + 1
634      rvcorr = 214.0
635      write (i02,80005) ivtnum, rvcomp, rvcorr
636  241 continue
637      ivtnum =  24
638c
639c      ****  test  24  ****
640c
641      if (iczero) 30240,  240, 30240
642  240 continue
643      rvcomp = -3276e+6
644      go to 40240
64530240 ivdele = ivdele + 1
646      write (i02,80003) ivtnum
647      if (iczero) 40240,  251, 40240
64840240 if (rvcomp + .32765e+10) 20240,10240,40241
64940241 if (rvcomp + .32755e+10) 10240,10240,20240
65010240 ivpass = ivpass + 1
651      write (i02,80001) ivtnum
652      go to  251
65320240 ivfail = ivfail + 1
654      rvcorr = -3276e+6
655      write (i02,80005) ivtnum, rvcomp, rvcorr
656  251 continue
657      ivtnum =  25
658c
659c      ****  test  25  ****
660c
661      if (iczero) 30250,  250, 30250
662  250 continue
663      rvcomp = -7e3
664      go to 40250
66530250 ivdele = ivdele + 1
666      write (i02,80003) ivtnum
667      if (iczero) 40250,  261, 40250
66840250 if (rvcomp + 7001.)  20250,10250,40251
66940251 if (rvcomp + 6999.) 10250,10250,20250
67010250 ivpass = ivpass + 1
671      write (i02,80001) ivtnum
672      go to  261
67320250 ivfail = ivfail + 1
674      rvcorr = -7000.0
675      write (i02,80005) ivtnum, rvcomp, rvcorr
676c
677c     test 026 through test 028 contain arithmetic assignment statement
678c     of the form            real variable = real variable
679c
680  261 continue
681      ivtnum =  26
682c
683c      ****  test  26  ****
684c
685      if (iczero) 30260,  260, 30260
686  260 continue
687      rvon01 = .2e+1
688      rvcomp = rvon01
689      go to 40260
69030260 ivdele = ivdele + 1
691      write (i02,80003) ivtnum
692      if (iczero) 40260,  271, 40260
69340260 if (rvcomp - 1.9995) 20260,10260,40261
69440261 if (rvcomp - 2.0005) 10260,10260,20260
69510260 ivpass = ivpass + 1
696      write (i02,80001) ivtnum
697      go to  271
69820260 ivfail = ivfail + 1
699      rvcorr = 20.0
700      write (i02,80005) ivtnum, rvcomp, rvcorr
701  271 continue
702      ivtnum =  27
703c
704c      ****  test  27  ****
705c
706      if (iczero) 30270,  270, 30270
707  270 continue
708      rvon01 = -445.e-01
709      rvcomp = rvon01
710      go to 40270
71130270 ivdele = ivdele + 1
712      write (i02,80003) ivtnum
713      if (iczero) 40270,  281, 40270
71440270 if (rvcomp + 44.505) 20270,10270,40271
71540271 if (rvcomp + 44.495) 10270,10270,20270
71610270 ivpass = ivpass + 1
717      write (i02,80001) ivtnum
718      go to  281
71920270 ivfail = ivfail + 1
720      rvcorr = -44.5
721      write (i02,80005) ivtnum, rvcomp, rvcorr
722  281 continue
723      ivtnum =  28
724c
725c      ****  test  28  ****
726c
727      if (iczero) 30280,  280, 30280
728  280 continue
729      rvon01 = 7e3
730      rvcomp = rvon01
731      go to 40280
73230280 ivdele = ivdele + 1
733      write (i02,80003) ivtnum
734      if (iczero) 40280,  291, 40280
73540280 if (rvcomp - 6999.0) 20280,10280,40281
73640281 if (rvcomp-7001.0) 10280,10280,20280
73710280 ivpass = ivpass + 1
738      write (i02,80001) ivtnum
739      go to  291
74020280 ivfail = ivfail + 1
741      rvcorr = 7000.0
742c
743c     test 029 through test 031 contain arithmetic assignment statement
744c     of the form            real variable = - real variable
745c
746      write (i02,80005) ivtnum, rvcomp, rvcorr
747  291 continue
748      ivtnum =  29
749c
750c      ****  test  29  ****
751c
752      if (iczero) 30290,  290, 30290
753  290 continue
754      rvon01 = .2e+1
755      rvcomp = -rvon01
756      go to 40290
75730290 ivdele = ivdele + 1
758      write (i02,80003) ivtnum
759      if (iczero) 40290,  301, 40290
76040290 if (rvcomp + 2.0005) 20290,10290,40291
76140291 if (rvcomp + 1.9995) 10290,10290,20290
76210290 ivpass = ivpass + 1
763      write (i02,80001) ivtnum
764      go to  301
76520290 ivfail = ivfail + 1
766      rvcorr = -2.0
767      write (i02,80005) ivtnum, rvcomp, rvcorr
768  301 continue
769      ivtnum =  30
770c
771c      ****  test  30  ****
772c
773      if (iczero) 30300,  300, 30300
774  300 continue
775      rvon01 = -445.e-01
776      rvcomp = -rvon01
777      go to 40300
77830300 ivdele = ivdele + 1
779      write (i02,80003) ivtnum
780      if (iczero) 40300,  311, 40300
78140300 if (rvcomp - 44.495) 20300,10300,40301
78240301 if (rvcomp - 44.505) 10300,10300,20300
78310300 ivpass = ivpass + 1
784      write (i02,80001) ivtnum
785      go to  311
78620300 ivfail = ivfail + 1
787      rvcorr = 44.5
788      write (i02,80005) ivtnum, rvcomp, rvcorr
789  311 continue
790      ivtnum =  31
791c
792c      ****  test  31  ****
793c
794      if (iczero) 30310,  310, 30310
795  310 continue
796      rvon01 = -.44559e1
797      rvcomp = -rvon01
798      go to 40310
79930310 ivdele = ivdele + 1
800      write (i02,80003) ivtnum
801      if (iczero) 40310,  321, 40310
80240310 if (rvcomp - 4.4554) 20310,10310,40311
80340311 if (rvcomp - 4.4564) 10310,10310,20310
80410310 ivpass = ivpass + 1
805      write (i02,80001) ivtnum
806      go to  321
80720310 ivfail = ivfail + 1
808      rvcorr = 4.4559
809      write (i02,80005) ivtnum, rvcomp, rvcorr
810c      ****    end of tests    ****
811  321 continue
812c
813c     write page footings and run summaries
81499999 continue
815      write (i02,90002)
816      write (i02,90006)
817      write (i02,90002)
818      write (i02,90002)
819      write (i02,90007)
820      write (i02,90002)
821      write (i02,90008)  ivfail
822      write (i02,90009) ivpass
823      write (i02,90010) ivdele
824c
825c
826c     terminate routine execution
827      stop
828c
829c     format statements for page headers
83090000 format (1h1)
83190002 format (1h )
83290001 format (1h ,10x,34hfortran compiler validation system)
83390003 format (1h ,21x,11hversion 1.0)
83490004 format (1h ,10x,38hfor official use only - copyright 1978)
83590005 format (1h ,5x,4htest,5x,9hpass/fail, 5x,8hcomputed,8x,7hcorrect)
83690006 format (1h ,5x,46h----------------------------------------------)
83790011 format (1h ,18x,17hsubset level test)
838c
839c     format statements for run summaries
84090008 format (1h ,15x,i5,19h errors encountered)
84190009 format (1h ,15x,i5,13h tests passed)
84290010 format (1h ,15x,i5,14h tests deleted)
843c
844c     format statements for test results
84580001 format (1h ,4x,i5,7x,4hpass)
84680002 format (1h ,4x,i5,7x,4hfail)
84780003 format (1h ,4x,i5,7x,7hdeleted)
84880004 format (1h ,4x,i5,7x,4hfail,10x,i6,9x,i6)
84980005 format (1h ,4x,i5,7x,4hfail,4x,e12.5,3x,e12.5)
850c
85190007 format (1h ,20x,20hend of program fm060)
852      end
853