+c comment section
+c
+c fm002
+c
+c this routine checks that comment lines which have valid
+c fortran statements do not affect the execution of the program
+c in any way.
+c
+c references
+c american national standard programming language fortran,
+c x3.9-1978
+c
+c section 3.2.1, comment line
+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
+ 41 continue
+ ivtnum=4
+c
+c **** test 004 ****
+c test 004 - blank comment line
+c
+ if (iczero) 30040,40,30040
+ 40 continue
+ ivon01=4
+c
+ go to 40040
+30040 ivdele=ivdele+1
+ write (i02,80003) ivtnum
+ if (iczero) 40040, 51, 40040
+40040 if (ivon01 - 4) 20040, 10040, 20040
+10040 ivpass=ivpass+1
+ write (i02,80001) ivtnum
+ go to 51
+20040 ivfail=ivfail+1
+ ivcomp=ivon01
+ ivcorr=4
+ write (i02,80004) ivtnum,ivcomp,ivcorr
+ 51 continue
+ ivtnum=5
+c
+c **** test 005 ****
+c test 005 - go to in comment line
+c
+ if (iczero) 30050, 50, 30050
+ 50 continue
+ ivon01 = 3
+c go to 20050
+ ivon01=5
+ go to 40050
+30050 ivdele=ivdele+1
+ write (i02,80003) ivtnum
+ if (iczero) 40050, 61, 40050
+40050 if (ivon01 - 5) 20050,10050,20050
+10050 ivpass=ivpass+1
+ write (i02,80001) ivtnum
+ go to 61
+20050 ivfail=ivfail+1
+ ivcomp=ivon01
+ ivcorr=5
+ write (i02,80004) ivtnum,ivcomp,ivcorr
+ 61 continue
+ ivtnum=6
+c
+c **** test 006 ****
+c test 006 - integer assignment statement in comment line
+c
+ if (iczero) 30060,60,30060
+ 60 continue
+ ivon01=6
+c ivon01=1
+ go to 40060
+30060 ivdele=ivdele+1
+ write (i02,80003) ivtnum
+ if (iczero) 40060,71,40060
+40060 if (ivon01-6) 20060,10060,20060
+10060 ivpass=ivpass+1
+ write (i02,80001) ivtnum
+ go to 71
+20060 ivfail=ivfail+1
+ ivcomp=ivon01
+ ivcorr=6
+ write (i02,80004) ivtnum,ivcomp,ivcorr
+ 71 continue
+ ivtnum=7
+c
+c **** test 007 ****
+c test 007 - integer assignment statement in comment line
+c integer expression to right of =
+c
+ if (iczero) 30070,70,30070
+ 70 continue
+ ivon02=6
+ ivon01=7
+c ivon01= 3*ivon02
+ go to 40070
+30070 ivdele=ivdele+1
+ write (i02,80003) ivtnum
+ if (iczero) 40070,81,40070
+40070 if (ivon01-7) 20070,10070,20070
+10070 ivpass=ivpass+1
+ write (i02,80001) ivtnum
+ go to 81
+20070 ivfail=ivfail+1
+ ivcomp=ivon01
+ ivcorr=7
+ write (i02,80004) ivtnum,ivcomp,ivcorr
+ 81 continue
+ ivtnum=8
+c
+c **** test 008 ****
+c test 008 - if statement in comment line
+c
+ if (iczero) 30080,80,30080
+ 80 continue
+ ivon01=300
+c if (ivon01) 20080,20080,20080
+ ivon01=8
+ go to 40080
+30080 ivdele=ivdele+1
+ write (i02,80003) ivtnum
+ if (iczero) 40080,91,40080
+40080 if (ivon01-8) 20080,10080,20080
+10080 ivpass=ivpass+1
+ write (i02,80001) ivtnum
+ go to 91
+20080 ivfail=ivfail+1
+ ivcomp=ivon01
+ ivcorr=8
+ write (i02,80004) ivtnum,ivcomp,ivcorr
+ 91 continue
+ ivtnum=9
+c
+c **** test 009 ****
+c test 009 - write statement in a comment line
+c
+ if (iczero) 30090,90,30090
+ 90 continue
+ ivon01=200
+c 92 write (i02,80002) ivtnum
+ ivon01=9
+ go to 40090
+30090 ivdele=ivdele+1
+ write (i02,80003) ivtnum
+ if (iczero) 40090,101,40090
+40090 if (ivon01-9) 20090,10090,20090
+10090 ivpass=ivpass+1
+ write (i02,80001) ivtnum
+ go to 101
+20090 ivfail=ivfail+1
+ ivcomp=ivon01
+ ivcorr=9
+ write (i02,80004) ivtnum,ivcomp,ivcorr
+ 101 ivtnum=10
+c
+c **** test 010 ****
+c test 010 - statement label in comment line
+c
+ if (iczero) 30100,100,30100
+ 100 continue
+ go to 102
+c 102 write (i02,80002)
+c go to 111
+ 102 ivon01=10
+ go to 40100
+30100 ivdele=ivdele+1
+ write (i02,80003) ivtnum
+ if (iczero) 40100,111,40100
+40100 if (ivon01-10) 20100,10100,20100
+10100 ivpass=ivpass+1
+ write (i02,80001) ivtnum
+ go to 111
+20100 ivfail=ivfail+1
+ ivcomp=ivon01
+ ivcorr=10
+ write (i02,80004) ivtnum,ivcomp,ivcorr
+ 111 continue
+ ivtnum=11
+c
+c **** test 011 ****
+c test 011 - continue in comment line
+c followed by integer assignment statement in comment
+c
+ if (iczero) 30110,110,30110
+ 110 ivon01=11
+c continue
+c ivon01=7000
+ go to 40110
+30110 ivdele=ivdele+1
+ write (i02,80003) ivtnum
+ if (iczero) 40110,121,40110
+40110 if (ivon01 -11) 20110,10110,20110
+10110 ivpass=ivpass+1
+ write (i02,80001) ivtnum
+ go to 121
+20110 ivfail=ivfail+1
+ ivcomp=ivon01
+ ivcorr=11
+ write (i02,80004) ivtnum,ivcomp,ivcorr
+ 121 continue
+ ivtnum=12
+c
+c **** test 012 ****
+c test 012 - integer assignment statement in comment line
+c
+ if (iczero) 30120,120,30120
+ 120 continue
+ ivon01=12
+c ivon01=ivon01+1
+ go to 40120
+30120 ivdele=ivdele+1
+ write (i02,80003) ivtnum
+ if (iczero) 40120,99999,40120
+40120 if (ivon01 - 12) 20120,10120,20120
+10120 ivpass=ivpass+1
+ write (i02,80001) ivtnum
+ go to 99999
+20120 ivfail=ivfail+1
+ ivcomp=ivon01
+ ivcorr=12
+ write (i02,80004) ivtnum,ivcomp,ivcorr
+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 fm002)
+c comment line before end statement
+ end