Annotation of 43BSDTahoe/usr.bin/f77/testf77/tests/fm025.f, revision 1.1.1.1

1.1       root        1: c     comment section.
                      2: c
                      3: c     fm025
                      4: c
                      5: c         this routine tests arrays with if statements, do loops,
                      6: c     assigned and computed go to statements in conjunction with array
                      7: c     elements   in common or dimensioned.  one, two, and three
                      8: c     dimensioned arrays are used.  the subscripts are integer constants
                      9: c     or sometimes integer variables when the elements are in loops
                     10: c     and all arrays have fixed size limits.  integer, real, and logical
                     11: c     arrays are used with the type sometimes specified with the
                     12: c     explicit type statement.
                     13: c
                     14: c      references
                     15: c        american national standard programming language fortran,
                     16: c              x3.9-1978
                     17: c
                     18: c        section 8, specification statements
                     19: c        section 8.1, dimension statement
                     20: c        section 8.3, common statement
                     21: c        section 8.4, type-statements
                     22: c        section 9, data statement
                     23: c        section 11.2, computed go to statement
                     24: c        section 11.3, assigned go to statement
                     25: c        section 11.10, do statement
                     26: c
                     27:       common iadn31(2,2,2), radn31(2,2,2), ladn31(2,2,2)
                     28: c
                     29:       dimension iadn32(2,2,2), iadn21(2,2), iadn11(2)
                     30: c
                     31:       logical ladn31
                     32:       integer radn33(2,2,2), radn21(2,4), radn11(8)
                     33:       real iadn33(2,2,2), iadn22(2,4), iadn12(8)
                     34: c
                     35: c
                     36: c      **********************************************************
                     37: c
                     38: c         a compiler validation system for the fortran language
                     39: c     based on specifications as defined in american national standard
                     40: c     programming language fortran x3.9-1978, has been developed by the
                     41: c     federal cobol compiler testing service.  the fortran compiler
                     42: c     validation system (fcvs) consists of audit routines, their related
                     43: c     data, and an executive system.  each audit routine is a fortran
                     44: c     program, subprogram or function which includes tests of specific
                     45: c     language elements and supporting procedures indicating the result
                     46: c     of executing these tests.
                     47: c
                     48: c         this particular program/subprogram/function contains features
                     49: c     found only in the subset as defined in x3.9-1978.
                     50: c
                     51: c         suggestions and comments should be forwarded to -
                     52: c
                     53: c                  department of the navy
                     54: c                  federal cobol compiler testing service
                     55: c                  washington, d.c.  20376
                     56: c
                     57: c      **********************************************************
                     58: c
                     59: c
                     60: c
                     61: c     initialization section
                     62: c
                     63: c     initialize constants
                     64: c      **************
                     65: c     i01 contains the logical unit number for the card reader.
                     66:       i01 = 5
                     67: c     i02 contains the logical unit number for the printer.
                     68:       i02 = 6
                     69: c     system environment section
                     70: c
                     71: cx010    this card is replaced by contents of fexec x-010 control card.
                     72: c     the cx010 card is for overriding the program default i01 = 5
                     73: c     (unit number for card reader).
                     74: cx011    this card is replaced by contents of fexec x-011 control card.
                     75: c     the cx011 card is for systems which require additional
                     76: c     fortran statements for files associated with cx010 above.
                     77: c
                     78: cx020    this card is replaced by contents of fexec x-020 control card.
                     79: c     the cx020 card is for overriding the program default i02 = 6
                     80: c     (unit number for printer).
                     81: cx021    this card is replaced by contents of fexec x-021 control card.
                     82: c     the cx021 card is for systems which require additional
                     83: c     fortran statements for files associated with cx020 above.
                     84: c
                     85:       ivpass=0
                     86:       ivfail=0
                     87:       ivdele=0
                     88:       iczero=0
                     89: c
                     90: c     write page headers
                     91:       write (i02,90000)
                     92:       write (i02,90001)
                     93:       write (i02,90002)
                     94:       write (i02, 90002)
                     95:       write (i02,90003)
                     96:       write (i02,90002)
                     97:       write (i02,90004)
                     98:       write (i02,90002)
                     99:       write (i02,90011)
                    100:       write (i02,90002)
                    101:       write (i02,90002)
                    102:       write (i02,90005)
                    103:       write (i02,90006)
                    104:       write (i02,90002)
                    105:       ivtnum = 653
                    106: c
                    107: c      ****  test 653  ****
                    108: c     test 653  -  test of setting all values of an integer array
                    109: c     by the integer index of a do  loop.  the array has one dimension.
                    110: c
                    111:       if (iczero) 36530, 6530, 36530
                    112:  6530 continue
                    113:       do 6532 i = 1,2,1
                    114:       iadn11(i) = i
                    115:  6532 continue
                    116:       ivcomp = iadn11(1)
                    117:       go to 46530
                    118: 36530 ivdele = ivdele + 1
                    119:       write (i02,80003) ivtnum
                    120:       if (iczero) 46530, 6541, 46530
                    121: 46530 if ( ivcomp - 1 )  26530, 16530, 26530
                    122: 16530 ivpass = ivpass + 1
                    123:       write (i02,80001) ivtnum
                    124:       go to 6541
                    125: 26530 ivfail = ivfail + 1
                    126:       ivcorr = 1
                    127:       write (i02,80004) ivtnum, ivcomp ,ivcorr
                    128:  6541 continue
                    129:       ivtnum = 654
                    130: c
                    131: c      ****  test 654  ****
                    132: c     test 654  -  see test 653.  this test checks the second element of
                    133: c     the integer array iadn11(2).
                    134: c
                    135:       if (iczero) 36540, 6540, 36540
                    136:  6540 continue
                    137:       ivcomp = iadn11(2)
                    138:       go to 46540
                    139: 36540 ivdele = ivdele + 1
                    140:       write (i02,80003) ivtnum
                    141:       if (iczero) 46540, 6551, 46540
                    142: 46540 if ( ivcomp - 2 )  26540, 16540, 26540
                    143: 16540 ivpass = ivpass + 1
                    144:       write (i02,80001) ivtnum
                    145:       go to 6551
                    146: 26540 ivfail = ivfail + 1
                    147:       ivcorr = 2
                    148:       write (i02,80004) ivtnum, ivcomp ,ivcorr
                    149:  6551 continue
                    150:       ivtnum = 655
                    151: c
                    152: c      ****  test 655  ****
                    153: c     test 655  -  test of setting the values of the column of a two
                    154: c     dimension integer array by a do loop.  the values for the elements
                    155: c     in a column is the number of the column as set by the do loop
                    156: c     index.  row numbers are integer constants.
                    157: c     the values for the elements are as follows
                    158: c     1    2
                    159: c     1    2
                    160: c
                    161:       if (iczero) 36550, 6550, 36550
                    162:  6550 continue
                    163:       do 6552 j = 1, 2
                    164:       iadn21(1,j) = j
                    165:       iadn21(2,j) = j
                    166:  6552 continue
                    167:       ivcomp = iadn21(1,1)
                    168:       go to 46550
                    169: 36550 ivdele = ivdele + 1
                    170:       write (i02,80003) ivtnum
                    171:       if (iczero) 46550, 6561, 46550
                    172: 46550 if ( ivcomp - 1 )  26550, 16550, 26550
                    173: 16550 ivpass = ivpass + 1
                    174:       write (i02,80001) ivtnum
                    175:       go to 6561
                    176: 26550 ivfail = ivfail + 1
                    177:       ivcorr = 1
                    178:       write (i02,80004) ivtnum, ivcomp ,ivcorr
                    179:  6561 continue
                    180:       ivtnum = 656
                    181: c
                    182: c      ****  test 656  ****
                    183: c     test 656  -  see test 655.  this test checks the value of the
                    184: c     integer array  iadn21(2,2)
                    185: c
                    186:       if (iczero) 36560, 6560, 36560
                    187:  6560 continue
                    188:       ivcomp = iadn21(2,2)
                    189:       go to 46560
                    190: 36560 ivdele = ivdele + 1
                    191:       write (i02,80003) ivtnum
                    192:       if (iczero) 46560, 6571, 46560
                    193: 46560 if ( ivcomp - 2 )  26560, 16560, 26560
                    194: 16560 ivpass = ivpass + 1
                    195:       write (i02,80001) ivtnum
                    196:       go to 6571
                    197: 26560 ivfail = ivfail + 1
                    198:       ivcorr = 2
                    199:       write (i02,80004) ivtnum, ivcomp ,ivcorr
                    200:  6571 continue
                    201:       ivtnum = 657
                    202: c
                    203: c      ****  test 657  ****
                    204: c     test 657  -  this tests setting both the row and column subscripts
                    205: c     in a two dimension integer array with a double nested do loop.
                    206: c     the element values are set by an integer counter.  element values
                    207: c     are as follows         1   2
                    208: c                            3   4
                    209: c
                    210:       if (iczero) 36570, 6570, 36570
                    211:  6570 continue
                    212:       icon01 = 0
                    213:       do 6573 i = 1, 2
                    214:       do 6572 j = 1, 2
                    215:       icon01 = icon01 + 1
                    216:       iadn21(i,j) = icon01
                    217:  6572 continue
                    218:  6573 continue
                    219:       ivcomp = iadn21(1,2)
                    220:       go to 46570
                    221: 36570 ivdele = ivdele + 1
                    222:       write (i02,80003) ivtnum
                    223:       if (iczero) 46570, 6581, 46570
                    224: 46570 if ( ivcomp - 2 )  26570, 16570, 26570
                    225: 16570 ivpass = ivpass + 1
                    226:       write (i02,80001) ivtnum
                    227:       go to 6581
                    228: 26570 ivfail = ivfail + 1
                    229:       ivcorr = 2
                    230:       write (i02,80004) ivtnum, ivcomp ,ivcorr
                    231:  6581 continue
                    232:       ivtnum = 658
                    233: c
                    234: c      ****  test 658  ****
                    235: c     test 658  -  see test 657.  this test checks the value of array
                    236: c     element iadn21(2,1) = 3
                    237: c
                    238:       if (iczero) 36580, 6580, 36580
                    239:  6580 continue
                    240:       ivcomp = iadn21(2,1)
                    241:       go to 46580
                    242: 36580 ivdele = ivdele + 1
                    243:       write (i02,80003) ivtnum
                    244:       if (iczero) 46580, 6591, 46580
                    245: 46580 if ( ivcomp - 3 )  26580, 16580, 26580
                    246: 16580 ivpass = ivpass + 1
                    247:       write (i02,80001) ivtnum
                    248:       go to 6591
                    249: 26580 ivfail = ivfail + 1
                    250:       ivcorr = 3
                    251:       write (i02,80004) ivtnum, ivcomp ,ivcorr
                    252:  6591 continue
                    253:       ivtnum = 659
                    254: c
                    255: c      ****  test 659  ****
                    256: c     test 659  -  this test uses a triple nested do loop to set the
                    257: c     elements in all three dimensions of an integer array that is
                    258: c     dimensioned.  the values for the elements are as follows
                    259: c     for element (i,j,k) = i + j + k
                    260: c     so for element (1,1,2) = 1 + 1 + 2 = 4
                    261: c
                    262:       if (iczero) 36590, 6590, 36590
                    263:  6590 continue
                    264:       do 6594 i = 1, 2
                    265:       do 6593 j = 1, 2
                    266:       do 6592 k = 1, 2
                    267:       iadn32( i, j, k ) = i + j + k
                    268:  6592 continue
                    269:  6593 continue
                    270:  6594 continue
                    271:       ivcomp = iadn32(1,1,2)
                    272:       go to 46590
                    273: 36590 ivdele = ivdele + 1
                    274:       write (i02,80003) ivtnum
                    275:       if (iczero) 46590, 6601, 46590
                    276: 46590 if ( ivcomp - 4 )  26590, 16590, 26590
                    277: 16590 ivpass = ivpass + 1
                    278:       write (i02,80001) ivtnum
                    279:       go to 6601
                    280: 26590 ivfail = ivfail + 1
                    281:       ivcorr = 4
                    282:       write (i02,80004) ivtnum, ivcomp ,ivcorr
                    283:  6601 continue
                    284:       ivtnum = 660
                    285: c
                    286: c      ****  test 660  ****
                    287: c     test 660  -  see test 659.  this checks for iadn32(2,2,2) = 6
                    288: c
                    289:       if (iczero) 36600, 6600, 36600
                    290:  6600 continue
                    291:       ivcomp = iadn32(2,2,2)
                    292:       go to 46600
                    293: 36600 ivdele = ivdele + 1
                    294:       write (i02,80003) ivtnum
                    295:       if (iczero) 46600, 6611, 46600
                    296: 46600 if ( ivcomp - 6 )  26600, 16600, 26600
                    297: 16600 ivpass = ivpass + 1
                    298:       write (i02,80001) ivtnum
                    299:       go to 6611
                    300: 26600 ivfail = ivfail + 1
                    301:       ivcorr = 6
                    302:       write (i02,80004) ivtnum, ivcomp ,ivcorr
                    303:  6611 continue
                    304:       ivtnum = 661
                    305: c
                    306: c      ****  test 661  ****
                    307: c     test 661  -  this test sets the elements of an integer array in
                    308: c     common to minus the value of the integer array set in test 659.
                    309: c     element iadn32(1,1,2) = 4  so element iadn31(1,1,2) = -4
                    310: c     the same integer assignment statement is used as the terminating
                    311: c     statement for all three do loops used to set the array values
                    312: c     of integer array iadn31.
                    313: c     if test 659 fails, then this test should also fail.  however, the
                    314: c     computed values should relate in that the computed value for
                    315: c     test 661 should be minus the computed value for test 659.
                    316: c
                    317:       if (iczero) 36610, 6610, 36610
                    318:  6610 continue
                    319:       do 6612 i = 1, 2
                    320:       do 6612 j = 1, 2
                    321:       do 6612 k = 1, 2
                    322:  6612 iadn31(i,j,k) = - iadn32 ( i, j, k )
                    323:       ivcomp = iadn31(1,1,2)
                    324:       go to 46610
                    325: 36610 ivdele = ivdele + 1
                    326:       write (i02,80003) ivtnum
                    327:       if (iczero) 46610, 6621, 46610
                    328: 46610 if ( ivcomp + 4 )  26610, 16610, 26610
                    329: 16610 ivpass = ivpass + 1
                    330:       write (i02,80001) ivtnum
                    331:       go to 6621
                    332: 26610 ivfail = ivfail + 1
                    333:       ivcorr = -4
                    334:       write (i02,80004) ivtnum, ivcomp ,ivcorr
                    335:  6621 continue
                    336:       ivtnum = 662
                    337: c
                    338: c      ****  test 662  ****
                    339: c     test 662  -  this is a test of a triple nested do loop used to
                    340: c     set the values of a logical array ladn31.  unlike the other tests
                    341: c     the third dimension is set last, the first dimension is set second
                    342: c     and the second dimension is set first.  all array elements are set
                    343: c     to the logical constant .false.
                    344: c
                    345:       if (iczero) 36620, 6620, 36620
                    346:  6620 continue
                    347:       do 6622 k = 1, 2
                    348:       do 6622 i = 1, 2
                    349:       do 6622 j = 1, 2
                    350:       ladn31( i, j, k ) = .false.
                    351:  6622 continue
                    352:       icon01 = 1
                    353:       if ( ladn31(2,1,2) )  icon01 = 0
                    354:       go to 46620
                    355: 36620 ivdele = ivdele + 1
                    356:       write (i02,80003) ivtnum
                    357:       if (iczero) 46620, 6631, 46620
                    358: 46620 if ( icon01 - 1 )  26620, 16620, 26620
                    359: 16620 ivpass = ivpass + 1
                    360:       write (i02,80001) ivtnum
                    361:       go to 6631
                    362: 26620 ivfail = ivfail + 1
                    363:       ivcomp = icon01
                    364:       ivcorr = 1
                    365:       write (i02,80004) ivtnum, ivcomp ,ivcorr
                    366:  6631 continue
                    367:       ivtnum = 663
                    368: c
                    369: c     note ****  test 663 was deleted by fccts.
                    370: c
                    371:       if (iczero) 36630, 6630, 36630
                    372:  6630 continue
                    373: 36630 ivdele = ivdele + 1
                    374:       write (i02,80003) ivtnum
                    375:       if (iczero) 46630, 6641, 46630
                    376: 46630 if ( icon01 - 6633 )  26630, 16630, 26630
                    377: 16630 ivpass = ivpass + 1
                    378:       write (i02,80001) ivtnum
                    379:       go to 6641
                    380: 26630 ivfail = ivfail + 1
                    381:       ivcomp = icon01
                    382:       ivcorr = 6633
                    383:       write (i02,80004) ivtnum, ivcomp ,ivcorr
                    384:  6641 continue
                    385:       ivtnum = 664
                    386: c
                    387: c     note ****  test 664 was deleted by fccts.
                    388: c
                    389:       if (iczero) 36640, 6640, 36640
                    390:  6640 continue
                    391: 36640 ivdele = ivdele + 1
                    392:       write (i02,80003) ivtnum
                    393:       if (iczero) 46640, 6651, 46640
                    394: 46640 if ( icon01 - 6643 )  26640, 16640, 26640
                    395: 16640 ivpass = ivpass + 1
                    396:       write (i02,80001) ivtnum
                    397:       go to 6651
                    398: 26640 ivfail = ivfail + 1
                    399:       ivcomp = icon01
                    400:       ivcorr = 6443
                    401:       write (i02,80004) ivtnum, ivcomp ,ivcorr
                    402:  6651 continue
                    403:       ivtnum = 665
                    404: c
                    405: c      ****  test 665  ****
                    406: c     test 665  -  array elements set to type real by the explicit
                    407: c     real statement are set to the value 0.5 and used to set the value
                    408: c     of an array element set to type integer by the integer statement.
                    409: c     this last integer element is used in a logical if statement
                    410: c     that should compare true.  ( .5 + .5 + .5 ) * 2. .eq. 3
                    411: c
                    412:       if (iczero) 36650, 6650, 36650
                    413:  6650 continue
                    414:       iadn33(2,2,2) = 0.5
                    415:       iadn22(2,4) = 0.5
                    416:       iadn12(8) = 0.5
                    417:       radn11(8) = ( iadn33(2,2,2) + iadn22(2,4) + iadn12(8) ) * 2.
                    418:       icon01 = 0
                    419:       if ( radn11(8) .eq. 3 )  icon01 = 1
                    420:       go to 46650
                    421: 36650 ivdele = ivdele + 1
                    422:       write (i02,80003) ivtnum
                    423:       if (iczero) 46650, 6661, 46650
                    424: 46650 if ( icon01 - 1 )  26650, 16650, 26650
                    425: 16650 ivpass = ivpass + 1
                    426:       write (i02,80001) ivtnum
                    427:       go to 6661
                    428: 26650 ivfail = ivfail + 1
                    429:       ivcomp = icon01
                    430:       ivcorr = 1
                    431:       write (i02,80004) ivtnum, ivcomp ,ivcorr
                    432:  6661 continue
                    433: c
                    434: c     write page footings and run summaries
                    435: 99999 continue
                    436:       write (i02,90002)
                    437:       write (i02,90006)
                    438:       write (i02,90002)
                    439:       write (i02,90002)
                    440:       write (i02,90007)
                    441:       write (i02,90002)
                    442:       write (i02,90008)  ivfail
                    443:       write (i02,90009) ivpass
                    444:       write (i02,90010) ivdele
                    445: c
                    446: c
                    447: c     terminate routine execution
                    448:       stop
                    449: c
                    450: c     format statements for page headers
                    451: 90000 format (1h1)
                    452: 90002 format (1h )
                    453: 90001 format (1h ,10x,34hfortran compiler validation system)
                    454: 90003 format (1h ,21x,11hversion 1.0)
                    455: 90004 format (1h ,10x,38hfor official use only - copyright 1978)
                    456: 90005 format (1h ,5x,4htest,5x,9hpass/fail, 5x,8hcomputed,8x,7hcorrect)
                    457: 90006 format (1h ,5x,46h----------------------------------------------)
                    458: 90011 format (1h ,18x,17hsubset level test)
                    459: c
                    460: c     format statements for run summaries
                    461: 90008 format (1h ,15x,i5,19h errors encountered)
                    462: 90009 format (1h ,15x,i5,13h tests passed)
                    463: 90010 format (1h ,15x,i5,14h tests deleted)
                    464: c
                    465: c     format statements for test results
                    466: 80001 format (1h ,4x,i5,7x,4hpass)
                    467: 80002 format (1h ,4x,i5,7x,4hfail)
                    468: 80003 format (1h ,4x,i5,7x,7hdeleted)
                    469: 80004 format (1h ,4x,i5,7x,4hfail,10x,i6,9x,i6)
                    470: 80005 format (1h ,4x,i5,7x,4hfail,4x,e12.5,3x,e12.5)
                    471: c
                    472: 90007 format (1h ,20x,20hend of program fm025)
                    473:       end

unix.superglobalmegacorp.com

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