xref: /original-bsd/usr.bin/f77/tests/tests/fm018.f (revision 237fdba6)
1c
2c     comment section.
3c
4c     fm018
5c
6c             this routine continues 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, lctnt2, latn1a(2)
28      dimension iadn11(2)
29c
30c      **********************************************************
31c
32c         a compiler validation system for the fortran language
33c     based on specifications as defined in american national standard
34c     programming language fortran x3.9-1978, has been developed by the
35c     federal cobol compiler testing service.  the fortran compiler
36c     validation system (fcvs) consists of audit routines, their related
37c     data, and an executive system.  each audit routine is a fortran
38c     program, subprogram or function which includes tests of specific
39c     language elements and supporting procedures indicating the result
40c     of executing these tests.
41c
42c         this particular program/subprogram/function contains features
43c     found only in the subset as defined in x3.9-1978.
44c
45c         suggestions and comments should be forwarded to -
46c
47c                  department of the navy
48c                  federal cobol compiler testing service
49c                  washington, d.c.  20376
50c
51c      **********************************************************
52c
53c
54c
55c     initialization section
56c
57c     initialize constants
58c      **************
59c     i01 contains the logical unit number for the card reader.
60      i01 = 5
61c     i02 contains the logical unit number for the printer.
62      i02 = 6
63c     system environment section
64c
65cx010    this card is replaced by contents of fexec x-010 control card.
66c     the cx010 card is for overriding the program default i01 = 5
67c     (unit number for card reader).
68cx011    this card is replaced by contents of fexec x-011 control card.
69c     the cx011 card is for systems which require additional
70c     fortran statements for files associated with cx010 above.
71c
72cx020    this card is replaced by contents of fexec x-020 control card.
73c     the cx020 card is for overriding the program default i02 = 6
74c     (unit number for printer).
75cx021    this card is replaced by contents of fexec x-021 control card.
76c     the cx021 card is for systems which require additional
77c     fortran statements for files associated with cx020 above.
78c
79      ivpass=0
80      ivfail=0
81      ivdele=0
82      iczero=0
83c
84c     write page headers
85      write (i02,90000)
86      write (i02,90001)
87      write (i02,90002)
88      write (i02, 90002)
89      write (i02,90003)
90      write (i02,90002)
91      write (i02,90004)
92      write (i02,90002)
93      write (i02,90011)
94      write (i02,90002)
95      write (i02,90002)
96      write (i02,90005)
97      write (i02,90006)
98      write (i02,90002)
99      ivtnum = 500
100c
101c      ****  test 500  ****
102c     test 500  -  like test 197.  true  .or.  true    true path
103c           test of the fortran inclusive or  (le)  .or.  (lt)
104c
105c
106      if (iczero) 35000, 5000, 35000
107 5000 continue
108      ivon01 = 0
109      lctnt1 = .true.
110      lctnt2 = .true.
111      if ( lctnt1 .or. lctnt2 )  ivon01 = 1
112      go to 45000
11335000 ivdele = ivdele + 1
114      write (i02,80003) ivtnum
115      if (iczero) 45000, 5011, 45000
11645000 if ( ivon01 - 1 )  25000, 15000, 25000
11715000 ivpass = ivpass + 1
118      write (i02,80001) ivtnum
119      go to 5011
12025000 ivfail = ivfail + 1
121      ivcomp = ivon01
122      ivcorr = 1
123      write (i02,80004) ivtnum, ivcomp ,ivcorr
124 5011 continue
125      ivtnum = 501
126c
127c      ****  test 501  ****
128c     test 501  -  test of parentheses around a logical expression
129c           (  (le)  )  .or.  (lt)
130c           uses logical variables set in logical assignment  statements
131c           ( false )  .or.  false    false path
132c
133c
134      if (iczero) 35010, 5010, 35010
135 5010 continue
136      ivon01 = 1
137      lctnt1 = .false.
138      lctnt2 = .false.
139      if ( (lctnt1) .or. lctnt2 )  ivon01 = 0
140      go to 45010
14135010 ivdele = ivdele + 1
142      write (i02,80003) ivtnum
143      if (iczero) 45010, 5021, 45010
14445010 if ( ivon01 - 1 )  25010, 15010, 25010
14515010 ivpass = ivpass + 1
146      write (i02,80001) ivtnum
147      go to 5021
14825010 ivfail = ivfail + 1
149      ivcomp = ivon01
150      ivcorr = 1
151      write (i02,80004) ivtnum, ivcomp ,ivcorr
152 5021 continue
153      ivtnum = 502
154c
155c      ****  test 502  ****
156c     test 502  -  like test 501 except that it it is of the form
157c           (le)  .or.  ( (lt) )        true  .or.  (true)
158c           true path
159c
160c
161      if (iczero) 35020, 5020, 35020
162 5020 continue
163      ivon01 = 0
164      lctnt1 = .true.
165      lctnt2 = .true.
166      if ( lctnt1 .or. ( lctnt2 ) )   ivon01 = 1
167      go to 45020
16835020 ivdele = ivdele + 1
169      write (i02,80003) ivtnum
170      if (iczero) 45020, 5031, 45020
17145020 if ( ivon01 - 1 )  25020, 15020, 25020
17215020 ivpass = ivpass + 1
173      write (i02,80001) ivtnum
174      go to 5031
17525020 ivfail = ivfail + 1
176      ivcomp = ivon01
177      ivcorr = 1
178      write (i02,80004) ivtnum, ivcomp ,ivcorr
179 5031 continue
180      ivtnum = 503
181c
182c      ****  test 503  ****
183c     test 503  -  test of parentheses in logical expressions
184c           (  (le)  )  .or.  (  (lt)  )
185c           (false) .or. (true)    true path
186c
187c
188      if (iczero) 35030, 5030, 35030
189 5030 continue
190      ivon01 = 0
191      lctnt1 = .false.
192      lctnt2 = .true.
193      if ( (lctnt1) .or. (lctnt2) )  ivon01 = 1
194      go to 45030
19535030 ivdele = ivdele + 1
196      write (i02,80003) ivtnum
197      if (iczero) 45030, 5041, 45030
19845030 if ( ivon01 - 1 )  25030, 15030, 25030
19915030 ivpass = ivpass + 1
200      write (i02,80001) ivtnum
201      go to 5041
20225030 ivfail = ivfail + 1
203      ivcomp = ivon01
204      ivcorr = 1
205      write (i02,80004) ivtnum, ivcomp ,ivcorr
206 5041 continue
207      ivtnum = 504
208c
209c      ****  test 504  ****
210c     test 504  -  like test 503 only more parentheses   true path
211c
212c
213      if (iczero) 35040, 5040, 35040
214 5040 continue
215      ivon01 = 0
216      lctnt1 = .true.
217      lctnt2 = .false.
218      if ( ( (lctnt1) .or. (lctnt2) ) )  ivon01 = 1
219      go to 45040
22035040 ivdele = ivdele + 1
221      write (i02,80003) ivtnum
222      if (iczero) 45040, 5051, 45040
22345040 if ( ivon01 - 1 )  25040, 15040, 25040
22415040 ivpass = ivpass + 1
225      write (i02,80001) ivtnum
226      go to 5051
22725040 ivfail = ivfail + 1
228      ivcomp = ivon01
229      ivcorr = 1
230      write (i02,80004) ivtnum, ivcomp ,ivcorr
231 5051 continue
232      ivtnum = 505
233c
234c      ****  test 505  ****
235c     test 505  -  test of parentheses with .and.  false path
236c
237c
238      if (iczero) 35050, 5050, 35050
239 5050 continue
240      ivon01 = 1
241      lctnt1 = .false.
242      lctnt2 = .false.
243      if ( (lctnt1) .and. lctnt2 )  ivon01 = 0
244      go to 45050
24535050 ivdele = ivdele + 1
246      write (i02,80003) ivtnum
247      if (iczero) 45050, 5061, 45050
24845050 if ( ivon01 - 1 )  25050, 15050, 25050
24915050 ivpass = ivpass + 1
250      write (i02,80001) ivtnum
251      go to 5061
25225050 ivfail = ivfail + 1
253      ivcomp = ivon01
254      ivcorr = 1
255      write (i02,80004) ivtnum, ivcomp ,ivcorr
256 5061 continue
257      ivtnum = 506
258c
259c      ****  test 506  ****
260c     test 506  -  like test 505  false path
261c
262c
263      if (iczero) 35060, 5060, 35060
264 5060 continue
265      ivon01 = 1
266      lctnt1 = .false.
267      lctnt2 = .true.
268      if ( lctnt1 .and. (lctnt2) )  ivon01 = 0
269      go to 45060
27035060 ivdele = ivdele + 1
271      write (i02,80003) ivtnum
272      if (iczero) 45060, 5071, 45060
27345060 if ( ivon01 - 1 )  25060, 15060, 25060
27415060 ivpass = ivpass + 1
275      write (i02,80001) ivtnum
276      go to 5071
27725060 ivfail = ivfail + 1
278      ivcomp = ivon01
279      ivcorr = 1
280      write (i02,80004) ivtnum, ivcomp ,ivcorr
281 5071 continue
282      ivtnum = 507
283c
284c      ****  test 507  ****
285c     test 507  -  more parentheses with logical .and.  false path
286c
287c
288      if (iczero) 35070, 5070, 35070
289 5070 continue
290      ivon01 = 1
291      lctnt1 = .true.
292      lctnt2 = .false.
293      if ( (lctnt1) .and. (lctnt2) )  ivon01 = 0
294      go to 45070
29535070 ivdele = ivdele + 1
296      write (i02,80003) ivtnum
297      if (iczero) 45070, 5081, 45070
29845070 if ( ivon01 - 1 )  25070, 15070, 25070
29915070 ivpass = ivpass + 1
300      write (i02,80001) ivtnum
301      go to 5081
30225070 ivfail = ivfail + 1
303      ivcomp = ivon01
304      ivcorr = 1
305      write (i02,80004) ivtnum, ivcomp ,ivcorr
306 5081 continue
307      ivtnum = 508
308c
309c      ****  test 508  ****
310c     test 508  -  test of logical .not. with parentheses around a logic
311c           primary.  for this test a logical array element is used as
312c           the logical primary.  .not. (false)   true path.
313c
314c
315      if (iczero) 35080, 5080, 35080
316 5080 continue
317      ivon01 = 0
318      latn1a(1) = .false.
319      if ( .not. (latn1a(1)) )  ivon01 = 1
320      go to 45080
32135080 ivdele = ivdele + 1
322      write (i02,80003) ivtnum
323      if (iczero) 45080, 5091, 45080
32445080 if ( ivon01 - 1 )  25080, 15080, 25080
32515080 ivpass = ivpass + 1
326      write (i02,80001) ivtnum
327      go to 5091
32825080 ivfail = ivfail + 1
329      ivcomp = ivon01
330      ivcorr = 1
331      write (i02,80004) ivtnum, ivcomp ,ivcorr
332 5091 continue
333      ivtnum = 509
334c
335c      ****  test 509  ****
336c     test 509  -  like test 508 except that the whole expression
337c           is in parentheses.  false path
338c
339c
340      if (iczero) 35090, 5090, 35090
341 5090 continue
342      ivon01 = 1
343      latn1a(2) = .true.
344      if ( ( .not. (latn1a(2)) ) )  ivon01 = 0
345      go to 45090
34635090 ivdele = ivdele + 1
347      write (i02,80003) ivtnum
348      if (iczero) 45090, 5101, 45090
34945090 if ( ivon01 - 1 )  25090, 15090, 25090
35015090 ivpass = ivpass + 1
351      write (i02,80001) ivtnum
352      go to 5101
35325090 ivfail = ivfail + 1
354      ivcomp = ivon01
355      ivcorr = 1
356      write (i02,80004) ivtnum, ivcomp ,ivcorr
357 5101 continue
358      ivtnum = 510
359c
360c      ****  test 510  ****
361c     test 510  -  integer constant exponientation
362c           relational expression using  .eq.  true path
363c
364c
365      if (iczero) 35100, 5100, 35100
366 5100 continue
367      ivon01 = 0
368      if ( 3 ** 3 .eq. 27 )  ivon01 = 1
369      go to 45100
37035100 ivdele = ivdele + 1
371      write (i02,80003) ivtnum
372      if (iczero) 45100, 5111, 45100
37345100 if ( ivon01 - 1 )  25100, 15100, 25100
37415100 ivpass = ivpass + 1
375      write (i02,80001) ivtnum
376      go to 5111
37725100 ivfail = ivfail + 1
378      ivcomp = ivon01
379      ivcorr = 1
380      write (i02,80004) ivtnum, ivcomp ,ivcorr
381 5111 continue
382      ivtnum = 511
383c
384c      ****  test 511  ****
385c     test 511  -  exponientiation using an integer variable
386c           relational expression using  .ne.  false path
387c
388c
389      if (iczero) 35110, 5110, 35110
390 5110 continue
391      ivon01 = 1
392      ivon02 = 3
393      if ( ivon02 ** 3 .ne. 27 )  ivon01 = 0
394      go to 45110
39535110 ivdele = ivdele + 1
396      write (i02,80003) ivtnum
397      if (iczero) 45110, 5121, 45110
39845110 if ( ivon01 - 1 )  25110, 15110, 25110
39915110 ivpass = ivpass + 1
400      write (i02,80001) ivtnum
401      go to 5121
40225110 ivfail = ivfail + 1
403      ivcomp = ivon01
404      ivcorr = 1
405      write (i02,80004) ivtnum, ivcomp ,ivcorr
406 5121 continue
407      ivtnum = 512
408c
409c      ****  test 512  ****
410c     test 512  -  like test 511  uses  .le.  true path
411c
412c
413      if (iczero) 35120, 5120, 35120
414 5120 continue
415      ivon01 = 0
416      ivon02 = 3
417      if ( 3 ** ivon02 .le. 27 )  ivon01 = 1
418      go to 45120
41935120 ivdele = ivdele + 1
420      write (i02,80003) ivtnum
421      if (iczero) 45120, 5131, 45120
42245120 if ( ivon01 - 1 )  25120, 15120, 25120
42315120 ivpass = ivpass + 1
424      write (i02,80001) ivtnum
425      go to 5131
42625120 ivfail = ivfail + 1
427      ivcomp = ivon01
428      ivcorr = 1
429      write (i02,80004) ivtnum, ivcomp ,ivcorr
430 5131 continue
431      ivtnum = 513
432c
433c      ****  test 513  ****
434c     test 513  -  like test 511 but uses all integer variables
435c           relational expression uses  .lt.  false path
436c
437c
438      if (iczero) 35130, 5130, 35130
439 5130 continue
440      ivon01 = 1
441      ivon02 = 3
442      ivon03 = 27
443      if ( ivon02 ** ivon02 .lt. ivon03 )  ivon01 = 0
444      go to 45130
44535130 ivdele = ivdele + 1
446      write (i02,80003) ivtnum
447      if (iczero) 45130, 5141, 45130
44845130 if ( ivon01 - 1 )  25130, 15130, 25130
44915130 ivpass = ivpass + 1
450      write (i02,80001) ivtnum
451      go to 5141
45225130 ivfail = ivfail + 1
453      ivcomp = ivon01
454      ivcorr = 1
455      write (i02,80004) ivtnum, ivcomp ,ivcorr
456 5141 continue
457      ivtnum = 514
458c
459c      ****  test 514  ****
460c     test 514  -  like test 511 but uses integer array elements
461c           relational expression uses .ge.  true path
462c
463c
464      if (iczero) 35140, 5140, 35140
465 5140 continue
466      ivon01 = 0
467      ivon02 = 3
468      iadn11(1) = 3
469      iadn11(2) = 27
470      if ( iadn11(1) ** ivon02 .ge. iadn11(2) )  ivon01 = 1
471      go to 45140
47235140 ivdele = ivdele + 1
473      write (i02,80003) ivtnum
474      if (iczero) 45140, 5151, 45140
47545140 if ( ivon01 - 1 )  25140, 15140, 25140
47615140 ivpass = ivpass + 1
477      write (i02,80001) ivtnum
478      go to 5151
47925140 ivfail = ivfail + 1
480      ivcomp = ivon01
481      ivcorr = 1
482      write (i02,80004) ivtnum, ivcomp ,ivcorr
483 5151 continue
484      ivtnum = 515
485c
486c      ****  test 515  ****
487c     test 515  -  like test 514 but uses all integer array elements
488c           relational expression uses  .gt.  false path
489c
490c
491      if (iczero) 35150, 5150, 35150
492 5150 continue
493      ivon01 = 1
494      iadn11(1) = 3
495      iadn11(2) = 27
496      if ( iadn11(1) ** iadn11(1) .gt. iadn11(2) )  ivon01 = 0
497      go to 45150
49835150 ivdele = ivdele + 1
499      write (i02,80003) ivtnum
500      if (iczero) 45150, 5161, 45150
50145150 if ( ivon01 - 1 )  25150, 15150, 25150
50215150 ivpass = ivpass + 1
503      write (i02,80001) ivtnum
504      go to 5161
50525150 ivfail = ivfail + 1
506      ivcomp = ivon01
507      ivcorr = 1
508      write (i02,80004) ivtnum, ivcomp ,ivcorr
509 5161 continue
510      ivtnum = 516
511c
512c      ****  test 516  ****
513c     test 516  -  test of integer multiplication using integer
514c           constants.  relational expression uses  .lt.  true path
515c
516c
517      if (iczero) 35160, 5160, 35160
518 5160 continue
519      ivon01 = 0
520      ivon02 = 587
521      if ( 3 * 3 .lt. ivon02 )  ivon01 = 1
522      go to 45160
52335160 ivdele = ivdele + 1
524      write (i02,80003) ivtnum
525      if (iczero) 45160, 5171, 45160
52645160 if ( ivon01 - 1 )  25160, 15160, 25160
52715160 ivpass = ivpass + 1
528      write (i02,80001) ivtnum
529      go to 5171
53025160 ivfail = ivfail + 1
531      ivcomp = ivon01
532      ivcorr = 1
533      write (i02,80004) ivtnum, ivcomp ,ivcorr
534 5171 continue
535      ivtnum = 517
536c
537c      ****  test 517  ****
538c     test 517  -  integer multiplication with integer constants,
539c           variables, and array elements.  relational expression uses
540c           .gt.  false path
541c
542c
543      if (iczero) 35170, 5170, 35170
544 5170 continue
545      ivon01 = 1
546      ivon02 = 32767
547      iadn11(1) = 3
548      if ( iadn11(1) * 587 .gt. ivon02 )  ivon01 = 0
549      go to 45170
55035170 ivdele = ivdele + 1
551      write (i02,80003) ivtnum
552      if (iczero) 45170, 5181, 45170
55345170 if ( ivon01 - 1 )  25170, 15170, 25170
55415170 ivpass = ivpass + 1
555      write (i02,80001) ivtnum
556      go to 5181
55725170 ivfail = ivfail + 1
558      ivcomp = ivon01
559      ivcorr = 1
560      write (i02,80004) ivtnum, ivcomp ,ivcorr
561 5181 continue
562      ivtnum = 518
563c
564c      ****  test 518  ****
565c     test 518  -  integer multiplication and exponientation
566c           relational expression uses  .eq.  true path
567c
568c
569      if (iczero) 35180, 5180, 35180
570 5180 continue
571      ivon01 = 0
572      ivon02 = 3
573      ivon03 = 27
574      iadn11(2) = 3
575      if ( iadn11(2) ** 2 * ivon02 .eq. ivon03 )  ivon01 = 1
576      go to 45180
57735180 ivdele = ivdele + 1
578      write (i02,80003) ivtnum
579      if (iczero) 45180, 5191, 45180
58045180 if ( ivon01 - 1 )  25180, 15180, 25180
58115180 ivpass = ivpass + 1
582      write (i02,80001) ivtnum
583      go to 5191
58425180 ivfail = ivfail + 1
585      ivcomp = ivon01
586      ivcorr = 1
587      write (i02,80004) ivtnum, ivcomp ,ivcorr
588 5191 continue
589      ivtnum = 519
590c
591c      ****  test 519  ****
592c     test 519  -  integer division.  relational expression  .ne.
593c           false path
594c
595c
596      if (iczero) 35190, 5190, 35190
597 5190 continue
598      ivon01 = 1
599      ivon02 = 27
600      iadn11(1) = 3
601      if ( ivon02 / 9 .ne. iadn11(1) )  ivon01 = 0
602      go to 45190
60335190 ivdele = ivdele + 1
604      write (i02,80003) ivtnum
605      if (iczero) 45190, 5201, 45190
60645190 if ( ivon01 - 1 )  25190, 15190, 25190
60715190 ivpass = ivpass + 1
608      write (i02,80001) ivtnum
609      go to 5201
61025190 ivfail = ivfail + 1
611      ivcomp = ivon01
612      ivcorr = 1
613      write (i02,80004) ivtnum, ivcomp ,ivcorr
614 5201 continue
615      ivtnum = 520
616c
617c      ****  test 520  ****
618c     test 520  -  integer variable division.  relational expression
619c           uses .ge.  true path
620c
621c
622      if (iczero) 35200, 5200, 35200
623 5200 continue
624      ivon01 = 0
625      ivon02 = 32767
626      ivon03 = 3
627      ivon04 = 9999
628      ivon05 = 587
629      if ( ivon02 / ivon03 .ge. ivon04 / ivon05 )  ivon01 = 1
630      go to 45200
63135200 ivdele = ivdele + 1
632      write (i02,80003) ivtnum
633      if (iczero) 45200, 5211, 45200
63445200 if ( ivon01 - 1 )  25200, 15200, 25200
63515200 ivpass = ivpass + 1
636      write (i02,80001) ivtnum
637      go to 5211
63825200 ivfail = ivfail + 1
639      ivcomp = ivon01
640      ivcorr = 1
641      write (i02,80004) ivtnum, ivcomp ,ivcorr
642 5211 continue
643      ivtnum = 521
644c
645c      ****  test 521  ****
646c     test 521  -  integer division and exponientation
647c           relational expression uses  .lt.  false path
648c
649c
650      if (iczero) 35210, 5210, 35210
651 5210 continue
652      ivon01 = 1
653      ivon02 = 587
654      ivon03 = 3
655      iadn11(2) = 3
656      if ( ivon02 / iadn11(2) ** 3 .lt. 3 ** ivon03 / ivon02 ) ivon01 =0
657      if ( ivon02 / iadn11(2) ** 3 .lt. 3 ** ivon03 / ivon02 )  ivon01=0
658      go to 45210
65935210 ivdele = ivdele + 1
660      write (i02,80003) ivtnum
661      if (iczero) 45210, 5221, 45210
66245210 if ( ivon01 - 1 )  25210, 15210, 25210
66315210 ivpass = ivpass + 1
664      write (i02,80001) ivtnum
665      go to 5221
66625210 ivfail = ivfail + 1
667      ivcomp = ivon01
668      ivcorr = 1
669      write (i02,80004) ivtnum, ivcomp ,ivcorr
670 5221 continue
671      ivtnum = 522
672c
673c      ****  test 522  ****
674c     test 522  -  tests 522 thru 535 are tests of signed terms
675c           +(t)  also  -(t)
676c           relational expression uses .gt.  true path
677c
678c
679      if (iczero) 35220, 5220, 35220
680 5220 continue
681      ivon01 = 0
682      if ( 3 .gt. -3 )  ivon01 = 1
683      go to 45220
68435220 ivdele = ivdele + 1
685      write (i02,80003) ivtnum
686      if (iczero) 45220, 5231, 45220
68745220 if ( ivon01 - 1 )  25220, 15220, 25220
68815220 ivpass = ivpass + 1
689      write (i02,80001) ivtnum
690      go to 5231
69125220 ivfail = ivfail + 1
692      ivcomp = ivon01
693      ivcorr = 1
694      write (i02,80004) ivtnum, ivcomp ,ivcorr
695 5231 continue
696      ivtnum = 523
697c
698c      ****  test 523  ****
699c     test 523  -  test of signed zero  .lt.  false path
700c
701c
702      if (iczero) 35230, 5230, 35230
703 5230 continue
704      ivon01 = 1
705      if ( 0 .lt. -0 )  ivon01 = 0
706      go to 45230
70735230 ivdele = ivdele + 1
708      write (i02,80003) ivtnum
709      if (iczero) 45230, 5241, 45230
71045230 if ( ivon01 - 1 )  25230, 15230, 25230
71115230 ivpass = ivpass + 1
712      write (i02,80001) ivtnum
713      go to 5241
71425230 ivfail = ivfail + 1
715      ivcomp = ivon01
716      ivcorr = 1
717      write (i02,80004) ivtnum, ivcomp ,ivcorr
718 5241 continue
719      ivtnum = 524
720c
721c      ****  test 524  ****
722c     test 524  -  test of signed zero  .le.  true path
723c
724c
725      if (iczero) 35240, 5240, 35240
726 5240 continue
727      ivon01 = 0
728      if ( 0 .le. -0 )  ivon01 = 1
729      go to 45240
73035240 ivdele = ivdele + 1
731      write (i02,80003) ivtnum
732      if (iczero) 45240, 5251, 45240
73345240 if ( ivon01 - 1 )  25240, 15240, 25240
73415240 ivpass = ivpass + 1
735      write (i02,80001) ivtnum
736      go to 5251
73725240 ivfail = ivfail + 1
738      ivcomp = ivon01
739      ivcorr = 1
740      write (i02,80004) ivtnum, ivcomp ,ivcorr
741 5251 continue
742      ivtnum = 525
743c
744c      ****  test 525  ****
745c     test 525  -  test of signed zero  .eq.  true path
746c
747c
748      if (iczero) 35250, 5250, 35250
749 5250 continue
750      ivon01 = 0
751      if ( 0 .eq. -0 )  ivon01 = 1
752      go to 45250
75335250 ivdele = ivdele + 1
754      write (i02,80003) ivtnum
755      if (iczero) 45250, 5261, 45250
75645250 if ( ivon01 - 1 )  25250, 15250, 25250
75715250 ivpass = ivpass + 1
758      write (i02,80001) ivtnum
759      go to 5261
76025250 ivfail = ivfail + 1
761      ivcomp = ivon01
762      ivcorr = 1
763      write (i02,80004) ivtnum, ivcomp ,ivcorr
764 5261 continue
765      ivtnum = 526
766c
767c      ****  test 526  ****
768c     test 526  -  test of signed zero  .ne.  false path
769c
770c
771      if (iczero) 35260, 5260, 35260
772 5260 continue
773      ivon01 = 1
774      if ( 0 .ne. -0 )  ivon01 = 0
775      go to 45260
77635260 ivdele = ivdele + 1
777      write (i02,80003) ivtnum
778      if (iczero) 45260, 5271, 45260
77945260 if ( ivon01 - 1 )  25260, 15260, 25260
78015260 ivpass = ivpass + 1
781      write (i02,80001) ivtnum
782      go to 5271
78325260 ivfail = ivfail + 1
784      ivcomp = ivon01
785      ivcorr = 1
786      write (i02,80004) ivtnum, ivcomp ,ivcorr
787 5271 continue
788      ivtnum = 527
789c
790c      ****  test 527  ****
791c     test 527  -  test of signed zero  .ge.  true path
792c
793c
794      if (iczero) 35270, 5270, 35270
795 5270 continue
796      ivon01 = 0
797      if ( 0 .ge. -0 )  ivon01 = 1
798      go to 45270
79935270 ivdele = ivdele + 1
800      write (i02,80003) ivtnum
801      if (iczero) 45270, 5281, 45270
80245270 if ( ivon01 - 1 )  25270, 15270, 25270
80315270 ivpass = ivpass + 1
804      write (i02,80001) ivtnum
805      go to 5281
80625270 ivfail = ivfail + 1
807      ivcomp = ivon01
808      ivcorr = 1
809      write (i02,80004) ivtnum, ivcomp ,ivcorr
810 5281 continue
811      ivtnum = 528
812c
813c      ****  test 528  ****
814c     test 528  -  test of signed zero  .gt.  false path
815c
816c
817      if (iczero) 35280, 5280, 35280
818 5280 continue
819      ivon01 = 1
820      if ( 0 .gt. -0 )  ivon01 = 0
821      go to 45280
82235280 ivdele = ivdele + 1
823      write (i02,80003) ivtnum
824      if (iczero) 45280, 5291, 45280
82545280 if ( ivon01 - 1 )  25280, 15280, 25280
82615280 ivpass = ivpass + 1
827      write (i02,80001) ivtnum
828      go to 5291
82925280 ivfail = ivfail + 1
830      ivcomp = ivon01
831      ivcorr = 1
832      write (i02,80004) ivtnum, ivcomp ,ivcorr
833 5291 continue
834      ivtnum = 529
835c
836c      ****  test 529  ****
837c     test 529  -  test of 32767 and -32766  .gt.  true path
838c
839c
840      if (iczero) 35290, 5290, 35290
841 5290 continue
842      ivon01 = 0
843      if ( 32767 .gt. -32766 )  ivon01 = 1
844      go to 45290
84535290 ivdele = ivdele + 1
846      write (i02,80003) ivtnum
847      if (iczero) 45290, 5301, 45290
84845290 if ( ivon01 - 1 )  25290, 15290, 25290
84915290 ivpass = ivpass + 1
850      write (i02,80001) ivtnum
851      go to 5301
85225290 ivfail = ivfail + 1
853      ivcomp = ivon01
854      ivcorr = 1
855      write (i02,80004) ivtnum, ivcomp ,ivcorr
856 5301 continue
857c
858c     write page footings and run summaries
85999999 continue
860      write (i02,90002)
861      write (i02,90006)
862      write (i02,90002)
863      write (i02,90002)
864      write (i02,90007)
865      write (i02,90002)
866      write (i02,90008)  ivfail
867      write (i02,90009) ivpass
868      write (i02,90010) ivdele
869c
870c
871c     terminate routine execution
872      stop
873c
874c     format statements for page headers
87590000 format (1h1)
87690002 format (1h )
87790001 format (1h ,10x,34hfortran compiler validation system)
87890003 format (1h ,21x,11hversion 1.0)
87990004 format (1h ,10x,38hfor official use only - copyright 1978)
88090005 format (1h ,5x,4htest,5x,9hpass/fail, 5x,8hcomputed,8x,7hcorrect)
88190006 format (1h ,5x,46h----------------------------------------------)
88290011 format (1h ,18x,17hsubset level test)
883c
884c     format statements for run summaries
88590008 format (1h ,15x,i5,19h errors encountered)
88690009 format (1h ,15x,i5,13h tests passed)
88790010 format (1h ,15x,i5,14h tests deleted)
888c
889c     format statements for test results
89080001 format (1h ,4x,i5,7x,4hpass)
89180002 format (1h ,4x,i5,7x,4hfail)
89280003 format (1h ,4x,i5,7x,7hdeleted)
89380004 format (1h ,4x,i5,7x,4hfail,10x,i6,9x,i6)
89480005 format (1h ,4x,i5,7x,4hfail,4x,e12.5,3x,e12.5)
895c
89690007 format (1h ,20x,20hend of program fm018)
897      end
898