xref: /original-bsd/usr.bin/f77/tests/tests/fm016.f (revision e59fb703)
1c
2c     comment section.
3c
4c     fm016
5c
6c             this routine begins a series of tests  of the fortran
7c     logical    if statement in all of the various forms.    the
8c     following logical operands are used for this routine - logical
9c     constants, logical variables, logical array elements, and
10c     arithmetic expressions with various relational operators.  both
11c     the true and false branches are tested in the series of tests.
12c
13c      references
14c        american national standard programming language fortran,
15c              x3.9-1978
16c
17c        section 4.7.1, logical constant
18c        section 6, expressions
19c        section 6.1, arithmetic expressions
20c        section 6.3, relational expressions
21c        section 6.4, logical expressions
22c        section 6.6, evaluation of expressions
23c        section 10, assignment statements
24c        section 10.2, logical assignment statement
25c        section 11.5, logical if statement
26c
27      logical  lctnt1, lctnf1, lvtntf, lvtnft, latn1a(2)
28      logical  ladn1d, ladn1b
29      dimension  ladn1d(2), ladn1b(2)
30      data  ladn1d/.true., .false./
31c
32c      **********************************************************
33c
34c         a compiler validation system for the fortran language
35c     based on specifications as defined in american national standard
36c     programming language fortran x3.9-1978, has been developed by the
37c     federal cobol compiler testing service.  the fortran compiler
38c     validation system (fcvs) consists of audit routines, their related
39c     data, and an executive system.  each audit routine is a fortran
40c     program, subprogram or function which includes tests of specific
41c     language elements and supporting procedures indicating the result
42c     of executing these tests.
43c
44c         this particular program/subprogram/function contains features
45c     found only in the subset as defined in x3.9-1978.
46c
47c         suggestions and comments should be forwarded to -
48c
49c                  department of the navy
50c                  federal cobol compiler testing service
51c                  washington, d.c.  20376
52c
53c      **********************************************************
54c
55c
56c
57c     initialization section
58c
59c     initialize constants
60c      **************
61c     i01 contains the logical unit number for the card reader.
62      i01 = 5
63c     i02 contains the logical unit number for the printer.
64      i02 = 6
65c     system environment section
66c
67cx010    this card is replaced by contents of fexec x-010 control card.
68c     the cx010 card is for overriding the program default i01 = 5
69c     (unit number for card reader).
70cx011    this card is replaced by contents of fexec x-011 control card.
71c     the cx011 card is for systems which require additional
72c     fortran statements for files associated with cx010 above.
73c
74cx020    this card is replaced by contents of fexec x-020 control card.
75c     the cx020 card is for overriding the program default i02 = 6
76c     (unit number for printer).
77cx021    this card is replaced by contents of fexec x-021 control card.
78c     the cx021 card is for systems which require additional
79c     fortran statements for files associated with cx020 above.
80c
81      ivpass=0
82      ivfail=0
83      ivdele=0
84      iczero=0
85c
86c     write page headers
87      write (i02,90000)
88      write (i02,90001)
89      write (i02,90002)
90      write (i02, 90002)
91      write (i02,90003)
92      write (i02,90002)
93      write (i02,90004)
94      write (i02,90002)
95      write (i02,90011)
96      write (i02,90002)
97      write (i02,90002)
98      write (i02,90005)
99      write (i02,90006)
100      write (i02,90002)
101      ivtnum = 139
102c     test 139  -  this tests the logical constant  .true.
103c
104      if (iczero) 31390, 1390, 31390
105 1390 continue
106      ivon01=0
107      if ( .true. ) ivon01 = 1
108      go to 41390
10931390 ivdele = ivdele + 1
110      write (i02,80003) ivtnum
111      if (iczero) 41390, 1401, 41390
11241390 if ( ivon01 - 1 )  21390, 11390, 21390
11311390 ivpass = ivpass + 1
114      write (i02,80001) ivtnum
115      go to 1401
11621390 ivfail = ivfail + 1
117      ivcomp=ivon01
118      ivcorr=1
119      write (i02,80004) ivtnum, ivcomp ,ivcorr
120 1401 continue
121      ivtnum = 140
122c     test 140  -  this tests the logical constant  .false.
123c
124      if (iczero) 31400, 1400, 31400
125 1400 continue
126      ivon01=1
127      if ( .false. ) ivon01=0
128      go to 41400
12931400 ivdele = ivdele + 1
130      write (i02,80003) ivtnum
131      if (iczero) 41400, 1411, 41400
13241400 if ( ivon01 - 1 )  21400, 11400, 21400
13311400 ivpass = ivpass + 1
134      write (i02,80001) ivtnum
135      go to 1411
13621400 ivfail = ivfail + 1
137      ivcomp=ivon01
138      ivcorr=1
139      write (i02,80004) ivtnum, ivcomp ,ivcorr
140 1411 continue
141      ivtnum = 141
142c     test 141  -  this tests the logical variable = .true.
143c
144      if (iczero) 31410, 1410, 31410
145 1410 continue
146      lctnt1=.true.
147      ivon01 = 0
148      if ( lctnt1 )  ivon01 = 1
149      go to 41410
15031410 ivdele = ivdele + 1
151      write (i02,80003) ivtnum
152      if (iczero) 41410, 1421, 41410
15341410 if ( ivon01 - 1 )  21410, 11410, 21410
15411410 ivpass = ivpass + 1
155      write (i02,80001) ivtnum
156      go to 1421
15721410 ivfail = ivfail + 1
158      ivcomp=ivon01
159      ivcorr=1
160      write (i02,80004) ivtnum, ivcomp ,ivcorr
161 1421 continue
162      ivtnum = 142
163c     test 142  -  this tests the logical variable =  .false.
164c
165      if (iczero) 31420, 1420, 31420
166 1420 continue
167      ivon01=1
168      lctnf1=.false.
169      if ( lctnf1 )  ivon01=0
170      go to 41420
17131420 ivdele = ivdele + 1
172      write (i02,80003) ivtnum
173      if (iczero) 41420, 1431, 41420
17441420 if ( ivon01 - 1 )  21420, 11420, 21420
17511420 ivpass = ivpass + 1
176      write (i02,80001) ivtnum
177      go to 1431
17821420 ivfail = ivfail + 1
179      ivcomp=ivon01
180      ivcorr=1
181      write (i02,80004) ivtnum, ivcomp ,ivcorr
182 1431 continue
183      ivtnum = 143
184c     test 143  -  this tests changing the value of a logical variable
185c           from .true.  to  .false.
186c
187      if (iczero) 31430, 1430, 31430
188 1430 continue
189      lvtntf=.true.
190      lvtntf=.false.
191      ivon01 = 1
192      if ( lvtntf )  ivon01 = 0
193      go to 41430
19431430 ivdele = ivdele + 1
195      write (i02,80003) ivtnum
196      if (iczero) 41430, 1441, 41430
19741430 if ( ivon01 - 1 )  21430, 11430, 21430
19811430 ivpass = ivpass + 1
199      write (i02,80001) ivtnum
200      go to 1441
20121430 ivfail = ivfail + 1
202      ivcomp=ivon01
203      ivcorr=1
204      write (i02,80004) ivtnum, ivcomp ,ivcorr
205 1441 continue
206      ivtnum = 144
207c     test 144  -  this tests changing the value of a logical variable
208c           from  .false.  to  .true.
209c
210      if (iczero) 31440, 1440, 31440
211 1440 continue
212      lvtnft=.false.
213      lvtnft=.true.
214      ivon01=0
215      if ( lvtnft )  ivon01=1
216      go to 41440
21731440 ivdele = ivdele + 1
218      write (i02,80003) ivtnum
219      if (iczero) 41440, 1451, 41440
22041440 if ( ivon01 - 1 )  21440, 11440, 21440
22111440 ivpass = ivpass + 1
222      write (i02,80001) ivtnum
223      go to 1451
22421440 ivfail = ivfail + 1
225      ivcomp=ivon01
226      ivcorr=1
227      write (i02,80004) ivtnum, ivcomp ,ivcorr
228 1451 continue
229      ivtnum = 145
230c     test 145  -  test of a logical array element set to  .true.
231c
232      if (iczero) 31450, 1450, 31450
233 1450 continue
234      latn1a(1)=.true.
235      ivon01=0
236      if ( latn1a(1) )  ivon01=1
237      go to 41450
23831450 ivdele = ivdele + 1
239      write (i02,80003) ivtnum
240      if (iczero) 41450, 1461, 41450
24141450 if ( ivon01 - 1 )  21450, 11450, 21450
24211450 ivpass = ivpass + 1
243      write (i02,80001) ivtnum
244      go to 1461
24521450 ivfail = ivfail + 1
246      ivcomp=ivon01
247      ivcorr=1
248      write (i02,80004) ivtnum, ivcomp ,ivcorr
249 1461 continue
250      ivtnum = 146
251c     test 146  -  test of a logical array element set to  .false.
252c
253      if (iczero) 31460, 1460, 31460
254 1460 continue
255      latn1a(2) = .false.
256      ivon01=1
257      if ( latn1a(2) )  ivon01=0
258      go to 41460
25931460 ivdele = ivdele + 1
260      write (i02,80003) ivtnum
261      if (iczero) 41460, 1471, 41460
26241460 if ( ivon01 - 1 )  21460, 11460, 21460
26311460 ivpass = ivpass + 1
264      write (i02,80001) ivtnum
265      go to 1471
26621460 ivfail = ivfail + 1
267      ivcomp=ivon01
268      ivcorr=1
269      write (i02,80004) ivtnum, ivcomp ,ivcorr
270 1471 continue
271      ivtnum = 147
272c     test 147  -  test of a logical array element set  .true.
273c           in a data initialization statement.
274c
275      if (iczero) 31470, 1470, 31470
276 1470 continue
277      ivon01=0
278      if ( ladn1d(1) )  ivon01=1
279      go to 41470
28031470 ivdele = ivdele + 1
281      write (i02,80003) ivtnum
282      if (iczero) 41470, 1481, 41470
28341470 if ( ivon01 - 1 )  21470, 11470, 21470
28411470 ivpass = ivpass + 1
285      write (i02,80001) ivtnum
286      go to 1481
28721470 ivfail = ivfail + 1
288      ivcomp=ivon01
289      ivcorr=1
290      write (i02,80004) ivtnum, ivcomp ,ivcorr
291 1481 continue
292      ivtnum = 148
293c     test 148  -  test of a logical array element set  .false.
294c           in a data initialization statement.
295c
296      if (iczero) 31480, 1480, 31480
297 1480 continue
298      ivon01=1
299      if ( ladn1d(2) )  ivon01=0
300      go to 41480
30131480 ivdele = ivdele + 1
302      write (i02,80003) ivtnum
303      if (iczero) 41480, 1491, 41480
30441480 if ( ivon01 - 1 )  21480, 11480, 21480
30511480 ivpass = ivpass + 1
306      write (i02,80001) ivtnum
307      go to 1491
30821480 ivfail = ivfail + 1
309      ivcomp=ivon01
310      ivcorr=1
311      write (i02,80004) ivtnum, ivcomp ,ivcorr
312 1491 continue
313      ivtnum = 149
314c     test 149  -  like test 145 except that the array declaration was
315c           in a dimension statement rather than in the type statement.
316c
317      if (iczero) 31490, 1490, 31490
318 1490 continue
319      ladn1b(1)=.true.
320      ivon01=0
321      if ( ladn1b(1) )  ivon01=1
322      go to 41490
32331490 ivdele = ivdele + 1
324      write (i02,80003) ivtnum
325      if (iczero) 41490, 1501, 41490
32641490 if ( ivon01 - 1 )  21490, 11490, 21490
32711490 ivpass = ivpass + 1
328      write (i02,80001) ivtnum
329      go to 1501
33021490 ivfail = ivfail + 1
331      ivcomp=ivon01
332      ivcorr=1
333      write (i02,80004) ivtnum, ivcomp ,ivcorr
334c
335c           for tests 150 thru 156  the true path is used..
336c
337 1501 continue
338      ivtnum = 150
339c     test 150  -  relational expression with integer constants  .lt.
340c
341      if (iczero) 31500, 1500, 31500
342 1500 continue
343      ivon01=0
344      if ( 3 .lt. 76 )  ivon01=1
345      go to 41500
34631500 ivdele = ivdele + 1
347      write (i02,80003) ivtnum
348      if (iczero) 41500, 1511, 41500
34941500 if ( ivon01 - 1 )  21500, 11500, 21500
35011500 ivpass = ivpass + 1
351      write (i02,80001) ivtnum
352      go to 1511
35321500 ivfail = ivfail + 1
354      ivcomp=ivon01
355      ivcorr=1
356      write (i02,80004) ivtnum, ivcomp ,ivcorr
357 1511 continue
358      ivtnum = 151
359c     test 151  -  test with relational expression  .le.
360c
361      if (iczero) 31510, 1510, 31510
362 1510 continue
363      ivon01=0
364      if ( 587 .le. 587 )  ivon01=1
365      go to 41510
36631510 ivdele = ivdele + 1
367      write (i02,80003) ivtnum
368      if (iczero) 41510, 1521, 41510
36941510 if ( ivon01 - 1 )  21510, 11510, 21510
37011510 ivpass = ivpass + 1
371      write (i02,80001) ivtnum
372      go to 1521
37321510 ivfail = ivfail + 1
374      ivcomp=ivon01
375      ivcorr=1
376      write (i02,80004) ivtnum, ivcomp ,ivcorr
377 1521 continue
378      ivtnum = 152
379c     test 152  -  test of relational expression with integer constants
380c           relational operator is  .eq.
381c
382      if (iczero) 31520, 1520, 31520
383 1520 continue
384      ivon01=0
385      if ( 9999 .eq. 9999 )  ivon01=1
386      go to 41520
38731520 ivdele = ivdele + 1
388      write (i02,80003) ivtnum
389      if (iczero) 41520, 1531, 41520
39041520 if ( ivon01 - 1 )  21520, 11520, 21520
39111520 ivpass = ivpass + 1
392      write (i02,80001) ivtnum
393      go to 1531
39421520 ivfail = ivfail + 1
395      ivcomp=ivon01
396      ivcorr=1
397      write (i02,80004) ivtnum, ivcomp ,ivcorr
398 1531 continue
399      ivtnum = 153
400c     test 153  -  test of relational expression with integer constants
401c           relational operator is  .ne.
402c
403      if (iczero) 31530, 1530, 31530
404 1530 continue
405      ivon01=0
406      if ( 0 .ne. 32767 )  ivon01=1
407      go to 41530
40831530 ivdele = ivdele + 1
409      write (i02,80003) ivtnum
410      if (iczero) 41530, 1541, 41530
41141530 if ( ivon01 - 1 )  21530, 11530, 21530
41211530 ivpass = ivpass + 1
413      write (i02,80001) ivtnum
414      go to 1541
41521530 ivfail = ivfail + 1
416      ivcomp=ivon01
417      ivcorr=1
418      write (i02,80004) ivtnum, ivcomp ,ivcorr
419 1541 continue
420      ivtnum = 154
421c     test 154  -  test of relational expression with integer constants
422c           relational operator is  .gt.
423c
424      if (iczero) 31540, 1540, 31540
425 1540 continue
426      ivon01=0
427      if ( 32767 .gt. 76 )  ivon01=1
428      go to 41540
42931540 ivdele = ivdele + 1
430      write (i02,80003) ivtnum
431      if (iczero) 41540, 1551, 41540
43241540 if ( ivon01 - 1 )  21540, 11540, 21540
43311540 ivpass = ivpass + 1
434      write (i02,80001) ivtnum
435      go to 1551
43621540 ivfail = ivfail + 1
437      ivcomp=ivon01
438      ivcorr=1
439      write (i02,80004) ivtnum, ivcomp ,ivcorr
440 1551 continue
441      ivtnum = 155
442c     test 155  -  test of relational expression with integer constants
443c           relational operator is  .ge.
444c
445      if (iczero) 31550, 1550, 31550
446 1550 continue
447      ivon01=0
448      if ( 32767 .ge. 76 )  ivon01=1
449      go to 41550
45031550 ivdele = ivdele + 1
451      write (i02,80003) ivtnum
452      if (iczero) 41550, 1561, 41550
45341550 if ( ivon01 - 1 )  21550, 11550, 21550
45411550 ivpass = ivpass + 1
455      write (i02,80001) ivtnum
456      go to 1561
45721550 ivfail = ivfail + 1
458      ivcomp=ivon01
459      ivcorr=1
460      write (i02,80004) ivtnum, ivcomp ,ivcorr
461 1561 continue
462      ivtnum = 156
463c     test 156  -  test of relational expression with integer constants
464c           relational operator is  .ge.
465c
466      if (iczero) 31560, 1560, 31560
467 1560 continue
468      ivon01=0
469      if ( 32767 .ge. 32767 )  ivon01=1
470      go to 41560
47131560 ivdele = ivdele + 1
472      write (i02,80003) ivtnum
473      if (iczero) 41560, 1571, 41560
47441560 if ( ivon01 - 1 )  21560, 11560, 21560
47511560 ivpass = ivpass + 1
476      write (i02,80001) ivtnum
477      go to 1571
47821560 ivfail = ivfail + 1
479      ivcomp=ivon01
480      ivcorr=1
481      write (i02,80004) ivtnum, ivcomp ,ivcorr
482c
483c           for tests 157 thru 162 the false path is used..
484c
485 1571 continue
486      ivtnum = 157
487c     test 157  -  relational expression integer constants false path
488c           relational operator is  .lt.
489c
490      if (iczero) 31570, 1570, 31570
491 1570 continue
492      ivon01=1
493      if ( 76 .lt. 3 )  ivon01=0
494      go to 41570
49531570 ivdele = ivdele + 1
496      write (i02,80003) ivtnum
497      if (iczero) 41570, 1581, 41570
49841570 if ( ivon01 - 1 )  21570, 11570, 21570
49911570 ivpass = ivpass + 1
500      write (i02,80001) ivtnum
501      go to 1581
50221570 ivfail = ivfail + 1
503      ivcomp=ivon01
504      ivcorr=1
505      write (i02,80004) ivtnum, ivcomp ,ivcorr
506 1581 continue
507      ivtnum = 158
508c     test 158  -  relational expression integer constants false path
509c           relational operator is  .le.
510c
511      if (iczero) 31580, 1580, 31580
512 1580 continue
513      ivon01=1
514      if ( 76 .le. 3 )  ivon01=0
515      go to 41580
51631580 ivdele = ivdele + 1
517      write (i02,80003) ivtnum
518      if (iczero) 41580, 1591, 41580
51941580 if ( ivon01 - 1 )  21580, 11580, 21580
52011580 ivpass = ivpass + 1
521      write (i02,80001) ivtnum
522      go to 1591
52321580 ivfail = ivfail + 1
524      ivcomp=ivon01
525      ivcorr=1
526      write (i02,80004) ivtnum, ivcomp ,ivcorr
527 1591 continue
528      ivtnum = 159
529c     test 159  -  relational expression integer constants false path
530c           relational operator is  .eq.
531c
532      if (iczero) 31590, 1590, 31590
533 1590 continue
534      ivon01=1
535      if (  9999 .eq. 587 ) ivon01=0
536      go to 41590
53731590 ivdele = ivdele + 1
538      write (i02,80003) ivtnum
539      if (iczero) 41590, 1601, 41590
54041590 if ( ivon01 - 1 )  21590, 11590, 21590
54111590 ivpass = ivpass + 1
542      write (i02,80001) ivtnum
543      go to 1601
54421590 ivfail = ivfail + 1
545      ivcomp=ivon01
546      ivcorr=1
547      write (i02,80004) ivtnum, ivcomp ,ivcorr
548 1601 continue
549      ivtnum = 160
550c     test 160  -  relational expression integer constants false path
551c           relational operator is  .ne.
552c
553      if (iczero) 31600, 1600, 31600
554 1600 continue
555      ivon01=1
556      if (  3 .ne. 3 )  ivon01=0
557      go to 41600
55831600 ivdele = ivdele + 1
559      write (i02,80003) ivtnum
560      if (iczero) 41600, 1611, 41600
56141600 if ( ivon01 - 1 )  21600, 11600, 21600
56211600 ivpass = ivpass + 1
563      write (i02,80001) ivtnum
564      go to 1611
56521600 ivfail = ivfail + 1
566      ivcomp=ivon01
567      ivcorr=1
568      write (i02,80004) ivtnum, ivcomp ,ivcorr
569 1611 continue
570      ivtnum=161
571c
572c     test 161  -  relational expression integer constants false path
573c           relational operator is  .gt.
574c
575      if ( iczero )  31610, 1610, 31610
576 1610 continue
577      ivon01=1
578      if ( 76 .gt. 32767 )  ivon01=0
579      go to 41610
58031610 ivdele = ivdele + 1
581      write (i02,80003) ivtnum
582      if ( iczero )  41610, 1621, 41610
58341610 if ( ivon01 - 1 )  21610, 11610, 21610
58411610 ivpass = ivpass+ 1
585      write (i02,80001) ivtnum
586      go to 1621
58721610 ivfail = ivfail + 1
588      ivcomp=ivon01
589      ivcorr=1
590      write (i02,80004) ivtnum, ivcomp, ivcorr
591 1621 continue
592      ivtnum = 162
593c
594c
595c      ****  test 162  ****
596c
597c     test 162  -  relational expression integer constants false path
598c           relational operator is  .ge.
599c
600      if (iczero) 31620, 1620, 31620
601 1620 continue
602      ivon01=1
603      if ( 76 .ge. 32767 )  ivon01 = 0
604      go to 41620
60531620 ivdele = ivdele + 1
606      write (i02,80003) ivtnum
607      if (iczero) 41620, 1631, 41620
60841620 if ( ivon01 - 1 )  21620, 11620, 21620
60911620 ivpass = ivpass + 1
610      write (i02,80001) ivtnum
611      go to 1631
61221620 ivfail = ivfail + 1
613      ivcomp=ivon01
614      ivcorr=1
615      write (i02,80004) ivtnum, ivcomp ,ivcorr
616 1631 continue
617      ivtnum = 163
618c
619c      ****  test 163  ****
620c     test 163  -  relational expression with integer variable
621c           references  (ic)  (ro)  (ivr).   true path.  use  .lt.
622c
623c
624      if (iczero) 31630, 1630, 31630
625 1630 continue
626      ivon01 = 76
627      ivon02 = 0
628      if ( 3 .lt. ivon01 )  ivon02 = 1
629      go to 41630
63031630 ivdele = ivdele + 1
631      write (i02,80003) ivtnum
632      if (iczero) 41630, 1641, 41630
63341630 if ( ivon02 - 1 )  21630, 11630, 21630
63411630 ivpass = ivpass + 1
635      write (i02,80001) ivtnum
636      go to 1641
63721630 ivfail = ivfail + 1
638      ivcomp = ivon02
639      ivcorr = 1
640      write (i02,80004) ivtnum, ivcomp ,ivcorr
641 1641 continue
642      ivtnum = 164
643c
644c      ****  test 164  ****
645c     test 164  -  relational expression.  integer variable references.
646c           true path.  .le.
647c
648c
649      if (iczero) 31640, 1640, 31640
650 1640 continue
651      ivon01 = 587
652      ivon02 = 0
653      if ( 587 .le. ivon01 )  ivon02 = 1
654      go to 41640
65531640 ivdele = ivdele + 1
656      write (i02,80003) ivtnum
657      if (iczero) 41640, 1651, 41640
65841640 if ( ivon02 - 1 )  21640, 11640, 21640
65911640 ivpass = ivpass + 1
660      write (i02,80001) ivtnum
661      go to 1651
66221640 ivfail = ivfail + 1
663      ivcomp = ivon02
664      ivcorr = 1
665      write (i02,80004) ivtnum, ivcomp ,ivcorr
666 1651 continue
667      ivtnum = 165
668c
669c      ****  test 165  ****
670c     test 165  -  relational expression.  integer variable reference.
671c           true path.  .eq.
672c
673c
674      if (iczero) 31650, 1650, 31650
675 1650 continue
676      ivon01 = 9999
677      ivon02 = 0
678      if ( 9999 .eq. ivon01 )  ivon02 = 1
679      go to 41650
68031650 ivdele = ivdele + 1
681      write (i02,80003) ivtnum
682      if (iczero) 41650, 1661, 41650
68341650 if ( ivon02 - 1 )  21650, 11650, 21650
68411650 ivpass = ivpass + 1
685      write (i02,80001) ivtnum
686      go to 1661
68721650 ivfail = ivfail + 1
688      ivcomp = ivon02
689      ivcorr = 1
690      write (i02,80004) ivtnum, ivcomp ,ivcorr
691 1661 continue
692      ivtnum = 166
693c
694c      ****  test 166  ****
695c     test 166  -  relational expression.  integer variable reference.
696c           true path.  .ne.
697c
698c
699      if (iczero) 31660, 1660, 31660
700 1660 continue
701      ivon01 = 32767
702      ivon02 = 0
703      if ( 0 .ne. ivon01 )  ivon02 = 1
704      go to 41660
70531660 ivdele = ivdele + 1
706      write (i02,80003) ivtnum
707      if (iczero) 41660, 1671, 41660
70841660 if ( ivon02 - 1 )  21660, 11660, 21660
70911660 ivpass = ivpass + 1
710      write (i02,80001) ivtnum
711      go to 1671
71221660 ivfail = ivfail + 1
713      ivcomp = ivon02
714      ivcorr = 1
715      write (i02,80004) ivtnum, ivcomp ,ivcorr
716 1671 continue
717      ivtnum = 167
718c
719c      ****  test 167  ****
720c     test 167  -  relational expression.  integer variable reference.
721c           true path.  .gt.
722c
723c
724      if (iczero) 31670, 1670, 31670
725 1670 continue
726      ivon01 = 76
727      ivon02 = 0
728      if ( 32767 .gt. ivon01 )  ivon02 = 1
729      go to 41670
73031670 ivdele = ivdele + 1
731      write (i02,80003) ivtnum
732      if (iczero) 41670, 1681, 41670
73341670 if ( ivon02 - 1 )  21670, 11670, 21670
73411670 ivpass = ivpass + 1
735      write (i02,80001) ivtnum
736      go to 1681
73721670 ivfail = ivfail + 1
738      ivcomp = ivon02
739      ivcorr = 1
740      write (i02,80004) ivtnum, ivcomp ,ivcorr
741 1681 continue
742      ivtnum = 168
743c
744c      ****  test 168  ****
745c     test 168  -  relational expression.  integer variable reference.
746c           true path.  .ge.
747c
748c
749      if (iczero) 31680, 1680, 31680
750 1680 continue
751      ivon01 = 76
752      ivon02 = 0
753      if ( 32767 .ge. ivon01 )  ivon02 = 1
754      go to 41680
75531680 ivdele = ivdele + 1
756      write (i02,80003) ivtnum
757      if (iczero) 41680, 1691, 41680
75841680 if ( ivon02 - 1 )  21680, 11680, 21680
75911680 ivpass = ivpass + 1
760      write (i02,80001) ivtnum
761      go to 1691
76221680 ivfail = ivfail + 1
763      ivcomp = ivon02
764      ivcorr = 1
765      write (i02,80004) ivtnum, ivcomp ,ivcorr
766 1691 continue
767      ivtnum = 169
768c
769c      ****  test 169  ****
770c     test 169  -  relational expression.  integer variable reference.
771c           true path.  .eq.
772c
773c
774      if (iczero) 31690, 1690, 31690
775 1690 continue
776      ivon01 = 32767
777      ivon02 = 0
778      if ( 32767 .eq. ivon01 )  ivon02 = 1
779      go to 41690
78031690 ivdele = ivdele + 1
781      write (i02,80003) ivtnum
782      if (iczero) 41690, 1701, 41690
78341690 if ( ivon02 - 1 )  21690, 11690, 21690
78411690 ivpass = ivpass + 1
785      write (i02,80001) ivtnum
786      go to 1701
78721690 ivfail = ivfail + 1
788      ivcomp = ivon02
789      ivcorr = 1
790      write (i02,80004) ivtnum, ivcomp ,ivcorr
791 1701 continue
792c
793c     write page footings and run summaries
79499999 continue
795      write (i02,90002)
796      write (i02,90006)
797      write (i02,90002)
798      write (i02,90002)
799      write (i02,90007)
800      write (i02,90002)
801      write (i02,90008)  ivfail
802      write (i02,90009) ivpass
803      write (i02,90010) ivdele
804c
805c
806c     terminate routine execution
807      stop
808c
809c     format statements for page headers
81090000 format (1h1)
81190002 format (1h )
81290001 format (1h ,10x,34hfortran compiler validation system)
81390003 format (1h ,21x,11hversion 1.0)
81490004 format (1h ,10x,38hfor official use only - copyright 1978)
81590005 format (1h ,5x,4htest,5x,9hpass/fail, 5x,8hcomputed,8x,7hcorrect)
81690006 format (1h ,5x,46h----------------------------------------------)
81790011 format (1h ,18x,17hsubset level test)
818c
819c     format statements for run summaries
82090008 format (1h ,15x,i5,19h errors encountered)
82190009 format (1h ,15x,i5,13h tests passed)
82290010 format (1h ,15x,i5,14h tests deleted)
823c
824c     format statements for test results
82580001 format (1h ,4x,i5,7x,4hpass)
82680002 format (1h ,4x,i5,7x,4hfail)
82780003 format (1h ,4x,i5,7x,7hdeleted)
82880004 format (1h ,4x,i5,7x,4hfail,10x,i6,9x,i6)
82980005 format (1h ,4x,i5,7x,4hfail,4x,e12.5,3x,e12.5)
830c
83190007 format (1h ,20x,20hend of program fm016)
832      end
833