Annotation of 43BSDTahoe/usr.bin/f77/testf77/tests/fm024.f, revision 1.1

1.1     ! root        1: c     comment section.
        !             2: c
        !             3: c     fm024
        !             4: c
        !             5: c                  three dimensioned arrays are used in this routine.
        !             6: c         this routine tests arrays with fixed dimension and size limits
        !             7: c     set either in a blank common or dimension statement.  the values
        !             8: c     of the array elements are set in various ways such as simple
        !             9: c     assignment statements, set to the values of other array elements
        !            10: c     (either positive or negative), set by integer to real or real to
        !            11: c     integer conversion, set by arithmetic expressions, or set by
        !            12: c     use of the  equivalence  statement.
        !            13: c
        !            14: c
        !            15: c      references
        !            16: c        american national standard programming language fortran,
        !            17: c              x3.9-1978
        !            18: c
        !            19: c        section 8, specification statements
        !            20: c        section 8.1, dimension statement
        !            21: c        section 8.2, equivalence statement
        !            22: c        section 8.3, common statement
        !            23: c        section 8.4, type-statements
        !            24: c        section 9, data statement
        !            25: c
        !            26:       common icoe01, rcoe01, lcoe01
        !            27:       common iade31(3,3,3), rade31(3,3,3), lade31(3,3,3)
        !            28:       common iadn31(2,2,2), radn31(2,2,2), ladn31(2,2,2)
        !            29: c
        !            30:       dimension iade32(3,3,3), rade32(3,3,3), lade32(3,3,3)
        !            31:       dimension iadn32(2,2,2), iadn21(2,2), iadn11(2)
        !            32:       dimension iade21(2,2), iade11(4)
        !            33: c
        !            34:       equivalence (iade31(1,1,1), iade32(1,1,1) )
        !            35:       equivalence ( rade31(1,1,1), rade32(1,1,1) )
        !            36:       equivalence ( lade31(1,1,1), lade32(1,1,1) )
        !            37:       equivalence ( iade31(1,1,1), iade21(1,1), iade11(1) )
        !            38:       equivalence ( icoe01, icoe02, icoe03 )
        !            39: c
        !            40:       logical lade31, ladn31, lade32, lcoe01
        !            41:       integer radn33(2,2,2), radn21(2,4), radn11(8)
        !            42:       real iadn33(2,2,2), iadn22(2,4), iadn12(8)
        !            43: c
        !            44: c
        !            45: c      **********************************************************
        !            46: c
        !            47: c         a compiler validation system for the fortran language
        !            48: c     based on specifications as defined in american national standard
        !            49: c     programming language fortran x3.9-1978, has been developed by the
        !            50: c     federal cobol compiler testing service.  the fortran compiler
        !            51: c     validation system (fcvs) consists of audit routines, their related
        !            52: c     data, and an executive system.  each audit routine is a fortran
        !            53: c     program, subprogram or function which includes tests of specific
        !            54: c     language elements and supporting procedures indicating the result
        !            55: c     of executing these tests.
        !            56: c
        !            57: c         this particular program/subprogram/function contains features
        !            58: c     found only in the subset as defined in x3.9-1978.
        !            59: c
        !            60: c         suggestions and comments should be forwarded to -
        !            61: c
        !            62: c                  department of the navy
        !            63: c                  federal cobol compiler testing service
        !            64: c                  washington, d.c.  20376
        !            65: c
        !            66: c      **********************************************************
        !            67: c
        !            68: c
        !            69: c
        !            70: c     initialization section
        !            71: c
        !            72: c     initialize constants
        !            73: c      **************
        !            74: c     i01 contains the logical unit number for the card reader.
        !            75:       i01 = 5
        !            76: c     i02 contains the logical unit number for the printer.
        !            77:       i02 = 6
        !            78: c     system environment section
        !            79: c
        !            80: cx010    this card is replaced by contents of fexec x-010 control card.
        !            81: c     the cx010 card is for overriding the program default i01 = 5
        !            82: c     (unit number for card reader).
        !            83: cx011    this card is replaced by contents of fexec x-011 control card.
        !            84: c     the cx011 card is for systems which require additional
        !            85: c     fortran statements for files associated with cx010 above.
        !            86: c
        !            87: cx020    this card is replaced by contents of fexec x-020 control card.
        !            88: c     the cx020 card is for overriding the program default i02 = 6
        !            89: c     (unit number for printer).
        !            90: cx021    this card is replaced by contents of fexec x-021 control card.
        !            91: c     the cx021 card is for systems which require additional
        !            92: c     fortran statements for files associated with cx020 above.
        !            93: c
        !            94:       ivpass=0
        !            95:       ivfail=0
        !            96:       ivdele=0
        !            97:       iczero=0
        !            98: c
        !            99: c     write page headers
        !           100:       write (i02,90000)
        !           101:       write (i02,90001)
        !           102:       write (i02,90002)
        !           103:       write (i02, 90002)
        !           104:       write (i02,90003)
        !           105:       write (i02,90002)
        !           106:       write (i02,90004)
        !           107:       write (i02,90002)
        !           108:       write (i02,90011)
        !           109:       write (i02,90002)
        !           110:       write (i02,90002)
        !           111:       write (i02,90005)
        !           112:       write (i02,90006)
        !           113:       write (i02,90002)
        !           114:       ivtnum = 645
        !           115: c
        !           116: c      ****  test 645  ****
        !           117: c     test 645  -  tests setting a three dimension integer array element
        !           118: c     by a simple integer assignment statement.
        !           119: c
        !           120:       if (iczero) 36450, 6450, 36450
        !           121:  6450 continue
        !           122:       iadn31(2,2,2) = -9999
        !           123:       ivcomp = iadn31(2,2,2)
        !           124:       go to 46450
        !           125: 36450 ivdele = ivdele + 1
        !           126:       write (i02,80003) ivtnum
        !           127:       if (iczero) 46450, 6461, 46450
        !           128: 46450 if ( ivcomp + 9999 )  26450, 16450, 26450
        !           129: 16450 ivpass = ivpass + 1
        !           130:       write (i02,80001) ivtnum
        !           131:       go to 6461
        !           132: 26450 ivfail = ivfail + 1
        !           133:       ivcorr = -9999
        !           134:       write (i02,80004) ivtnum, ivcomp ,ivcorr
        !           135:  6461 continue
        !           136:       ivtnum = 646
        !           137: c
        !           138: c      ****  test 646  ****
        !           139: c     test 646  -  tests setting a three dimension real array element
        !           140: c     by a simple real assignment statement.
        !           141: c
        !           142:       if (iczero) 36460, 6460, 36460
        !           143:  6460 continue
        !           144:       radn31(1,2,1) = 512.
        !           145:       ivcomp = radn31(1,2,1)
        !           146:       go to 46460
        !           147: 36460 ivdele = ivdele + 1
        !           148:       write (i02,80003) ivtnum
        !           149:       if (iczero) 46460, 6471, 46460
        !           150: 46460 if ( ivcomp - 512 )  26460, 16460, 26460
        !           151: 16460 ivpass = ivpass + 1
        !           152:       write (i02,80001) ivtnum
        !           153:       go to 6471
        !           154: 26460 ivfail = ivfail + 1
        !           155:       ivcorr = 512
        !           156:       write (i02,80004) ivtnum, ivcomp ,ivcorr
        !           157:  6471 continue
        !           158:       ivtnum = 647
        !           159: c
        !           160: c      ****  test 647  ****
        !           161: c     test 647  -  tests setting a three dimension logical array element
        !           162: c     by a simple logical assignment statement.
        !           163: c
        !           164:       if (iczero) 36470, 6470, 36470
        !           165:  6470 continue
        !           166:       ladn31(1,2,2) = .true.
        !           167:       icon01 = 0
        !           168:       if ( ladn31(1,2,2) )  icon01 = 1
        !           169:       go to 46470
        !           170: 36470 ivdele = ivdele + 1
        !           171:       write (i02,80003) ivtnum
        !           172:       if (iczero) 46470, 6481, 46470
        !           173: 46470 if ( icon01 - 1 )  26470, 16470, 26470
        !           174: 16470 ivpass = ivpass + 1
        !           175:       write (i02,80001) ivtnum
        !           176:       go to 6481
        !           177: 26470 ivfail = ivfail + 1
        !           178:       ivcomp = icon01
        !           179:       ivcorr = 1
        !           180:       write (i02,80004) ivtnum, ivcomp ,ivcorr
        !           181:  6481 continue
        !           182:       ivtnum = 648
        !           183: c
        !           184: c      ****  test 648  ****
        !           185: c     test 648  -  tests setting a one, two, and three dimension array
        !           186: c     element to a value in arithmetic assignment statements.  all three
        !           187: c     elements are integers.  the integer array elements are then used
        !           188: c     in an arithmetic statement and the result is stored by integer
        !           189: c     to real conversion into a three dimension real array element.
        !           190: c
        !           191:       if (iczero) 36480, 6480, 36480
        !           192:  6480 continue
        !           193:       iadn11(2) = 1
        !           194:       iadn21(2,2) = 2
        !           195:       iadn32(2,2,2) = 3
        !           196:       radn31(2,2,1) = iadn11(2) + iadn21(2,2) + iadn32(2,2,2)
        !           197:       ivcomp = radn31(2,2,1)
        !           198:       go to 46480
        !           199: 36480 ivdele = ivdele + 1
        !           200:       write (i02,80003) ivtnum
        !           201:       if (iczero) 46480, 6491, 46480
        !           202: 46480 if ( ivcomp - 6) 26480, 16480, 26480
        !           203: 16480 ivpass = ivpass + 1
        !           204:       write (i02,80001) ivtnum
        !           205:       go to 6491
        !           206: 26480 ivfail = ivfail + 1
        !           207:       ivcorr = 6
        !           208:       write (i02,80004) ivtnum, ivcomp ,ivcorr
        !           209:  6491 continue
        !           210:       ivtnum = 649
        !           211: c
        !           212: c      ****  test 649  ****
        !           213: c     test 649  -  tests of one, two, and three dimension array elements
        !           214: c     set explicitly integer by the integer type statement.  all element
        !           215: c     values should be zero from real to integer truncation from a value
        !           216: c     of 0.5.  all three elements are used in an arithmetic expression.
        !           217: c     the value of the sum of the elements should be zero.
        !           218: c
        !           219:       if (iczero) 36490, 6490, 36490
        !           220:  6490 continue
        !           221:       radn11(8) = 0000.50000
        !           222:       radn21(2,4) = .50000
        !           223:       radn33(2,2,2) = 00000.5
        !           224:       radn11(1) = radn11(8) + radn21(2,4) + radn33(2,2,2)
        !           225:       ivcomp = radn11(1)
        !           226:       go to 46490
        !           227: 36490 ivdele = ivdele + 1
        !           228:       write (i02,80003) ivtnum
        !           229:       if (iczero) 46490, 6501, 46490
        !           230: 46490 if ( ivcomp - 0 )  26490, 16490, 26490
        !           231: 16490 ivpass = ivpass + 1
        !           232:       write (i02,80001) ivtnum
        !           233:       go to 6501
        !           234: 26490 ivfail = ivfail + 1
        !           235:       ivcorr = 0
        !           236:       write (i02,80004) ivtnum, ivcomp ,ivcorr
        !           237:  6501 continue
        !           238:       ivtnum = 650
        !           239: c
        !           240: c      ****  test 650  ****
        !           241: c     test 650  -  test of the equivalence statement.  a real array
        !           242: c     element is set by an assignment statement.  its equivalent element
        !           243: c     in common is used to set the value of an integer array element
        !           244: c     also in common.  finally the dimensioned equivalent integer
        !           245: c     array element is tested for the value used throughout  32767.
        !           246: c
        !           247:       if (iczero) 36500, 6500, 36500
        !           248:  6500 continue
        !           249:       rade32(2,2,2) = 32767.
        !           250:       iade31(2,2,2) = rade31(2,2,2)
        !           251:       ivcomp = iade32(2,2,2)
        !           252:       go to 46500
        !           253: 36500 ivdele = ivdele + 1
        !           254:       write (i02,80003) ivtnum
        !           255:       if (iczero) 46500, 6511, 46500
        !           256: 46500 if ( ivcomp - 32767 )  26500, 16500, 26500
        !           257: 16500 ivpass = ivpass + 1
        !           258:       write (i02,80001) ivtnum
        !           259:       go to 6511
        !           260: 26500 ivfail = ivfail + 1
        !           261:       ivcorr = 32767
        !           262:       write (i02,80004) ivtnum, ivcomp ,ivcorr
        !           263:  6511 continue
        !           264:       ivtnum = 651
        !           265: c
        !           266: c      ****  test 651  ****
        !           267: c     test 651  -  this is a test of common and dimension as well as a
        !           268: c     test of the equivalence statement using logical array elements
        !           269: c     both in common and dimensioned.  a logical variable in common is
        !           270: c     set to a value of .not. the value used in the equivalenced array
        !           271: c     elements which were set in a logical assignment statement.
        !           272: c
        !           273:       if (iczero) 36510, 6510, 36510
        !           274:  6510 continue
        !           275:       lade31(1,2,3) = .false.
        !           276:       lcoe01 = .not. lade32(1,2,3)
        !           277:       icon01 = 0
        !           278:       if ( lcoe01 )  icon01 = 1
        !           279:       go to 46510
        !           280: 36510 ivdele = ivdele + 1
        !           281:       write (i02,80003) ivtnum
        !           282:       if (iczero) 46510, 6521, 46510
        !           283: 46510 if ( icon01 - 1 )  26510, 16510, 26510
        !           284: 16510 ivpass = ivpass + 1
        !           285:       write (i02,80001) ivtnum
        !           286:       go to 6521
        !           287: 26510 ivfail = ivfail + 1
        !           288:       ivcomp = icon01
        !           289:       ivcorr = 1
        !           290:       write (i02,80004) ivtnum, ivcomp ,ivcorr
        !           291:  6521 continue
        !           292:       ivtnum = 652
        !           293: c
        !           294: c      ****  test 652  ****
        !           295: c     test 652  -  tests of one, two, and three dimension array elements
        !           296: c     set explicitly real by the real type statement.  all element
        !           297: c     values should be 0.5 from the real assignment statement.  the
        !           298: c     array elements are summed and then the sum multiplied by 2.
        !           299: c     finally 0.2 is added to the result and the final result converted
        !           300: c     to an integer  ( ( .5 + .5 + .5 ) * 2. ) + 0.2
        !           301: c
        !           302:       if (iczero) 36520, 6520, 36520
        !           303:  6520 continue
        !           304:       iadn12(5) = 0.5
        !           305:       iadn22(1,3) = 0.5
        !           306:       iadn33(1,2,2) = 0.5
        !           307:       ivcomp = ( ( iadn12(5) + iadn22(1,3) + iadn33(1,2,2) ) * 2. ) + .2
        !           308:       go to 46520
        !           309: 36520 ivdele = ivdele + 1
        !           310:       write (i02,80003) ivtnum
        !           311:       if (iczero) 46520, 6531, 46520
        !           312: 46520 if ( ivcomp - 3 )  26520, 16520, 26520
        !           313: 16520 ivpass = ivpass + 1
        !           314:       write (i02,80001) ivtnum
        !           315:       go to 6531
        !           316: 26520 ivfail = ivfail + 1
        !           317:       ivcorr = 3
        !           318:       write (i02,80004) ivtnum, ivcomp ,ivcorr
        !           319:  6531 continue
        !           320: c
        !           321: c     write page footings and run summaries
        !           322: 99999 continue
        !           323:       write (i02,90002)
        !           324:       write (i02,90006)
        !           325:       write (i02,90002)
        !           326:       write (i02,90002)
        !           327:       write (i02,90007)
        !           328:       write (i02,90002)
        !           329:       write (i02,90008)  ivfail
        !           330:       write (i02,90009) ivpass
        !           331:       write (i02,90010) ivdele
        !           332: c
        !           333: c
        !           334: c     terminate routine execution
        !           335:       stop
        !           336: c
        !           337: c     format statements for page headers
        !           338: 90000 format (1h1)
        !           339: 90002 format (1h )
        !           340: 90001 format (1h ,10x,34hfortran compiler validation system)
        !           341: 90003 format (1h ,21x,11hversion 1.0)
        !           342: 90004 format (1h ,10x,38hfor official use only - copyright 1978)
        !           343: 90005 format (1h ,5x,4htest,5x,9hpass/fail, 5x,8hcomputed,8x,7hcorrect)
        !           344: 90006 format (1h ,5x,46h----------------------------------------------)
        !           345: 90011 format (1h ,18x,17hsubset level test)
        !           346: c
        !           347: c     format statements for run summaries
        !           348: 90008 format (1h ,15x,i5,19h errors encountered)
        !           349: 90009 format (1h ,15x,i5,13h tests passed)
        !           350: 90010 format (1h ,15x,i5,14h tests deleted)
        !           351: c
        !           352: c     format statements for test results
        !           353: 80001 format (1h ,4x,i5,7x,4hpass)
        !           354: 80002 format (1h ,4x,i5,7x,4hfail)
        !           355: 80003 format (1h ,4x,i5,7x,7hdeleted)
        !           356: 80004 format (1h ,4x,i5,7x,4hfail,10x,i6,9x,i6)
        !           357: 80005 format (1h ,4x,i5,7x,4hfail,4x,e12.5,3x,e12.5)
        !           358: c
        !           359: 90007 format (1h ,20x,20hend of program fm024)
        !           360:       end

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.