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

1.1       root        1: c     comment section
                      2: c
                      3: c     fm045
                      4: c
                      5: c         this routine tests arithmetic assignments using integer
                      6: c     variables connected by a series of arithmetic operators.
                      7: c     different combinations of parenthetical notation are exercized.
                      8: c
                      9: c
                     10: c      references
                     11: c        american national standard programming language fortran,
                     12: c              x3.9-1978
                     13: c
                     14: c        section 4.3, integer type
                     15: c        section 4.3.1, integer constant
                     16: c        section 6.1, arithmetic expressions
                     17: c        section 6.6, evaluation of expressions
                     18: c        section 10.1, arithmetic assignment statement
                     19: c
                     20: c
                     21: c
                     22: c      **********************************************************
                     23: c
                     24: c         a compiler validation system for the fortran language
                     25: c     based on specifications as defined in american national standard
                     26: c     programming language fortran x3.9-1978, has been developed by the
                     27: c     federal cobol compiler testing service.  the fortran compiler
                     28: c     validation system (fcvs) consists of audit routines, their related
                     29: c     data, and an executive system.  each audit routine is a fortran
                     30: c     program, subprogram or function which includes tests of specific
                     31: c     language elements and supporting procedures indicating the result
                     32: c     of executing these tests.
                     33: c
                     34: c         this particular program/subprogram/function contains features
                     35: c     found only in the subset as defined in x3.9-1978.
                     36: c
                     37: c         suggestions and comments should be forwarded to -
                     38: c
                     39: c                  department of the navy
                     40: c                  federal cobol compiler testing service
                     41: c                  washington, d.c.  20376
                     42: c
                     43: c      **********************************************************
                     44: c
                     45: c
                     46: c
                     47: c     initialization section
                     48: c
                     49: c     initialize constants
                     50: c      **************
                     51: c     i01 contains the logical unit number for the card reader.
                     52:       i01 = 5
                     53: c     i02 contains the logical unit number for the printer.
                     54:       i02 = 6
                     55: c     system environment section
                     56: c
                     57: cx010    this card is replaced by contents of fexec x-010 control card.
                     58: c     the cx010 card is for overriding the program default i01 = 5
                     59: c     (unit number for card reader).
                     60: cx011    this card is replaced by contents of fexec x-011 control card.
                     61: c     the cx011 card is for systems which require additional
                     62: c     fortran statements for files associated with cx010 above.
                     63: c
                     64: cx020    this card is replaced by contents of fexec x-020 control card.
                     65: c     the cx020 card is for overriding the program default i02 = 6
                     66: c     (unit number for printer).
                     67: cx021    this card is replaced by contents of fexec x-021 control card.
                     68: c     the cx021 card is for systems which require additional
                     69: c     fortran statements for files associated with cx020 above.
                     70: c
                     71:       ivpass=0
                     72:       ivfail=0
                     73:       ivdele=0
                     74:       iczero=0
                     75: c
                     76: c     write page headers
                     77:       write (i02,90000)
                     78:       write (i02,90001)
                     79:       write (i02,90002)
                     80:       write (i02, 90002)
                     81:       write (i02,90003)
                     82:       write (i02,90002)
                     83:       write (i02,90004)
                     84:       write (i02,90002)
                     85:       write (i02,90011)
                     86:       write (i02,90002)
                     87:       write (i02,90002)
                     88:       write (i02,90005)
                     89:       write (i02,90006)
                     90:       write (i02,90002)
                     91: c
                     92: c
                     93: c     test section
                     94: c
                     95: c         arithmetic assignment statement
                     96: c
                     97: c
                     98: c     tests 747 through 755 use the same string of variables and
                     99: c     operators, but use different combinations of parenthetical
                    100: c     notation  to alter priorities in order of evaluation.
                    101: c
                    102: c     tests 756 through 759 check the capability to enclose the entire
                    103: c     right hand side of an assignment statement in parentheses or sets
                    104: c     of nested parentheses.
                    105: c
                    106: c
                    107: c
                    108: c
                    109: c
                    110: c
                    111: c
                    112:       ivtnum = 747
                    113: c
                    114: c      ****  test 747  ****
                    115: c
                    116:       if (iczero) 37470, 7470, 37470
                    117:  7470 continue
                    118:       ivon01 = 15
                    119:       ivon02 =  9
                    120:       ivon03 =  4
                    121:       ivon04 = 18
                    122:       ivon05 =  6
                    123:       ivon06 =  2
                    124:       ivcomp = ivon01 + ivon02 - ivon03 * ivon04 / ivon05 ** ivon06
                    125:       go to 47470
                    126: 37470 ivdele = ivdele + 1
                    127:       write (i02,80003) ivtnum
                    128:       if (iczero) 47470, 7481, 47470
                    129: 47470 if (ivcomp - 22) 27470,17470,27470
                    130: 17470 ivpass = ivpass + 1
                    131:       write (i02,80001) ivtnum
                    132:       go to 7481
                    133: 27470 ivfail = ivfail + 1
                    134:       ivcorr = 22
                    135:       write (i02,80004) ivtnum, ivcomp, ivcorr
                    136:  7481 continue
                    137:       ivtnum = 748
                    138: c
                    139: c      ****  test 748  ****
                    140: c
                    141:       if (iczero) 37480, 7480, 37480
                    142:  7480 continue
                    143:       ivon01 = 15
                    144:       ivon02 =  9
                    145:       ivon03 =  4
                    146:       ivon04 = 18
                    147:       ivon05 =  6
                    148:       ivon06 =  2
                    149:       ivcomp = ((((ivon01 + ivon02) - ivon03) * ivon04) / ivon05)
                    150:      *         ** ivon06
                    151:       go to 47480
                    152: 37480 ivdele = ivdele + 1
                    153:       write (i02,80003) ivtnum
                    154:       if (iczero) 47480, 7491, 47480
                    155: 47480 if (ivcomp - 3600) 27480,17480,27480
                    156: 17480 ivpass = ivpass + 1
                    157:       write (i02,80001) ivtnum
                    158:       go to 7491
                    159: 27480 ivfail = ivfail + 1
                    160:       ivcorr = 3600
                    161:       write (i02,80004) ivtnum, ivcomp, ivcorr
                    162:  7491 continue
                    163:       ivtnum = 749
                    164: c
                    165: c      ****  test 749  ****
                    166: c
                    167:       if (iczero) 37490, 7490, 37490
                    168:  7490 continue
                    169:       ivon01 = 15
                    170:       ivon02 =  9
                    171:       ivon03 =  4
                    172:       ivon04 = 36
                    173:       ivon05 =  6
                    174:       ivon06 =  2
                    175:       ivcomp = (ivon01 + ivon02 - ivon03) * (ivon04 / ivon05 ** ivon06)
                    176:       go to 47490
                    177: 37490 ivdele = ivdele + 1
                    178:       write (i02,80003) ivtnum
                    179:       if (iczero) 47490, 7501, 47490
                    180: 47490 if (ivcomp - 20) 27490,17490,27490
                    181: 17490 ivpass = ivpass + 1
                    182:       write (i02,80001) ivtnum
                    183:       go to 7501
                    184: 27490 ivfail = ivfail + 1
                    185:       ivcorr = 20
                    186:       write (i02,80004) ivtnum, ivcomp, ivcorr
                    187:  7501 continue
                    188:       ivtnum = 750
                    189: c
                    190: c      ****  test 750  ****
                    191: c
                    192:       if (iczero) 37500, 7500, 37500
                    193:  7500 continue
                    194:       ivon01 = 15
                    195:       ivon02 =  9
                    196:       ivon03 =  4
                    197:       ivon04 = 36
                    198:       ivon05 =  6
                    199:       ivon06 =  2
                    200:       ivcomp = (ivon01 + ivon02) - (ivon03 * ivon04) / (ivon05 **
                    201:      *         ivon06)
                    202:       go to 47500
                    203: 37500 ivdele = ivdele + 1
                    204:       write (i02,80003) ivtnum
                    205:       if (iczero) 47500, 7511, 47500
                    206: 47500 if (ivcomp - 20) 27500,17500,27500
                    207: 17500 ivpass = ivpass + 1
                    208:       write (i02,80001) ivtnum
                    209:       go to 7511
                    210: 27500 ivfail = ivfail + 1
                    211:       ivcorr = 20
                    212:       write (i02,80004) ivtnum, ivcomp, ivcorr
                    213:  7511 continue
                    214:       ivtnum = 751
                    215: c
                    216: c      ****  test 751  ****
                    217: c
                    218:       if (iczero) 37510, 7510, 37510
                    219:  7510 continue
                    220:       ivon01 = 15
                    221:       ivon02 =  9
                    222:       ivon03 =  4
                    223:       ivon04 = 36
                    224:       ivon05 =  6
                    225:       ivon06 =  2
                    226:       ivcomp = ((ivon01 + ivon02) - (ivon03 * ivon04)) / (ivon05 **
                    227:      *         ivon06)
                    228:       go to 47510
                    229: 37510 ivdele = ivdele + 1
                    230:       write (i02,80003) ivtnum
                    231:       if (iczero)  47510, 7521, 47510
                    232: 47510 if (ivcomp + 3)  27510,17510,27510
                    233: 17510 ivpass = ivpass + 1
                    234:       write (i02,80001) ivtnum
                    235:       go to 7521
                    236: 27510 ivfail = ivfail + 1
                    237:       ivcorr = -3
                    238: c     actual answer is  -3.333333...     truncation is necessary
                    239:       write (i02,80004) ivtnum, ivcomp, ivcorr
                    240:  7521 continue
                    241:       ivtnum = 752
                    242: c
                    243: c      ****  test 752  ****
                    244: c
                    245:       if (iczero) 37520, 7520, 37520
                    246:  7520 continue
                    247:       ivon01 = 15
                    248:       ivon02 =  9
                    249:       ivon03 =  4
                    250:       ivon04 = 36
                    251:       ivon05 =  6
                    252:       ivon06 =  2
                    253:       ivcomp = (ivon01 + ivon02) - (ivon03 * ivon04 / ivon05) ** ivon06
                    254:       go to 47520
                    255: 37520 ivdele = ivdele + 1
                    256:       write (i02,80003) ivtnum
                    257:       if (iczero) 47520, 7531, 47520
                    258: 47520 if (ivcomp + 552) 27520,17520,27520
                    259: 17520 ivpass = ivpass + 1
                    260:       write (i02,80001) ivtnum
                    261:       go to 7531
                    262: 27520 ivfail = ivfail + 1
                    263:       ivcorr = -552
                    264:       write (i02,80004) ivtnum, ivcomp, ivcorr
                    265:  7531 continue
                    266:       ivtnum = 753
                    267: c
                    268: c      ****  test 753  ****
                    269: c
                    270:       if (iczero) 37530, 7530, 37530
                    271:  7530 continue
                    272:       ivon01 = 15
                    273:       ivon02 =  9
                    274:       ivon03 =  4
                    275:       ivon04 = 36
                    276:       ivon05 =  6
                    277:       ivon06 =  2
                    278:       ivcomp = ivon01 + (ivon02 - ivon03 * ivon04) / ivon05 ** ivon06
                    279:       go to 47530
                    280: 37530 ivdele = ivdele + 1
                    281:       write (i02,80003) ivtnum
                    282:       if (iczero) 47530, 7541, 47530
                    283: 47530 if (ivcomp - 12) 27530,17530,27530
                    284: 17530 ivpass = ivpass + 1
                    285:       write (i02,80001) ivtnum
                    286:       go to 7541
                    287: 27530 ivfail = ivfail + 1
                    288:       ivcorr = 12
                    289: c     actual answer is  11.25            truncation is necessary
                    290: c                                        during an intermediate step
                    291:       write (i02,80004) ivtnum, ivcomp, ivcorr
                    292:  7541 continue
                    293:       ivtnum = 754
                    294: c
                    295: c      ****  test 754  ****
                    296: c
                    297:       if (iczero) 37540, 7540, 37540
                    298:  7540 continue
                    299:       ivon01 = 15
                    300:       ivon02 =  9
                    301:       ivon03 =  4
                    302:       ivon04 = 36
                    303:       ivon05 =  6
                    304:       ivon06 =  2
                    305:       ivcomp = ivon01 + (ivon02 - ivon03) * (ivon04 / ivon05) ** ivon06
                    306:       go to 47540
                    307: 37540 ivdele = ivdele + 1
                    308:       write (i02,80003) ivtnum
                    309:       if (iczero) 47540, 7551, 47540
                    310: 47540 if (ivcomp - 195) 27540,17540,27540
                    311: 17540 ivpass = ivpass + 1
                    312:       write (i02,80001) ivtnum
                    313:       go to 7551
                    314: 27540 ivfail = ivfail + 1
                    315:       ivcorr = 195
                    316:       write (i02,80004) ivtnum, ivcomp, ivcorr
                    317:  7551 continue
                    318:       ivtnum = 755
                    319: c
                    320: c      ****  test 755  ****
                    321: c
                    322:       if (iczero) 37550, 7550, 37550
                    323:  7550 continue
                    324:       ivon01 = 15
                    325:       ivon02 =  9
                    326:       ivon03 =  4
                    327:       ivon04 = 36
                    328:       ivon05 =  6
                    329:       ivon06 =  2
                    330:       ivcomp = ((ivon01 + (ivon02 - ivon03) * ivon04) / ivon05) **
                    331:      *         ivon06
                    332:       go to 47550
                    333: 37550 ivdele = ivdele + 1
                    334:       write (i02,80003) ivtnum
                    335:       if (iczero) 47550, 7561, 47550
                    336: 47550 if (ivcomp - 1024)  27550,17550,27550
                    337: 17550 ivpass = ivpass + 1
                    338:       write (i02,80001) ivtnum
                    339:       go to 7561
                    340: 27550 ivfail = ivfail + 1
                    341:       ivcorr = 1024
                    342: c     actual answer is  1056.25         truncation is necessary
                    343: c                                       during an intermediate step
                    344:       write (i02,80004) ivtnum, ivcomp, ivcorr
                    345:  7561 continue
                    346:       ivtnum = 756
                    347: c
                    348: c      ****  test 756  ****
                    349: c          single parentheses
                    350: c
                    351:       if (iczero) 37560, 7560, 37560
                    352:  7560 continue
                    353:       ivon01 = 13
                    354:       ivon02 = 37
                    355:       ivcomp = (ivon01 + ivon02)
                    356:       go to 47560
                    357: 37560 ivdele = ivdele + 1
                    358:       write (i02,80003) ivtnum
                    359:       if (iczero) 47560, 7571, 47560
                    360: 47560 if (ivcomp - 50) 27560,17560,27560
                    361: 17560 ivpass = ivpass + 1
                    362:       write (i02,80001) ivtnum
                    363:       go to 7571
                    364: 27560 ivfail = ivfail + 1
                    365:       ivcorr = 50
                    366:       write (i02,80004) ivtnum, ivcomp, ivcorr
                    367:  7571 continue
                    368:       ivtnum = 757
                    369: c
                    370: c      ****  test 757  ****
                    371: c          nested parentheses (two sets)
                    372: c
                    373:       if (iczero) 37570, 7570, 37570
                    374:  7570 continue
                    375:       ivon01 = 13
                    376:       ivon02 = 37
                    377:       ivcomp = ((ivon01 - ivon02))
                    378:       go to 47570
                    379: 37570 ivdele = ivdele + 1
                    380:       write (i02,80003) ivtnum
                    381:       if (iczero) 47570, 7581, 47570
                    382: 47570 if (ivcomp + 24) 27570,17570,27570
                    383: 17570 ivpass = ivpass + 1
                    384:       write (i02,80001) ivtnum
                    385:       go to 7581
                    386: 27570 ivfail = ivfail + 1
                    387:       ivcorr = -24
                    388:       write (i02,80004) ivtnum, ivcomp, ivcorr
                    389:  7581 continue
                    390:       ivtnum = 758
                    391: c
                    392: c      ****  test 758  ****
                    393: c          nested parentheses (21 sets - same line)
                    394: c
                    395:       if (iczero) 37580, 7580, 37580
                    396:  7580 continue
                    397:       ivon01 = 13
                    398:       ivon02 = 37
                    399:       ivcomp = (((((((((((((((((((((ivon01 * ivon02)))))))))))))))))))))
                    400:       go to 47580
                    401: 37580 ivdele = ivdele + 1
                    402:       write (i02,80003) ivtnum
                    403:       if (iczero) 47580, 7591, 47580
                    404: 47580 if (ivcomp - 481) 27580,17580,27580
                    405: 17580 ivpass = ivpass + 1
                    406:       write (i02,80001) ivtnum
                    407:       go to 7591
                    408: 27580 ivfail = ivfail + 1
                    409:       ivcorr = 481
                    410:       write (i02,80004) ivtnum, ivcomp, ivcorr
                    411:  7591 continue
                    412:       ivtnum = 759
                    413: c
                    414: c      ****  test 759  ****
                    415: c          nested parentheses (57 sets - multiple lines)
                    416: c
                    417:       if (iczero) 37590, 7590, 37590
                    418:  7590 continue
                    419:       ivon01 = 13
                    420:       ivon02 = 37
                    421:       ivcomp = (((((((((((((((((((((((((((((((((((((((((((((((((((((((((
                    422:      *         ivon01 / ivon02
                    423:      *         )))))))))))))))))))))))))))))))))))))))))))))))))))))))))
                    424:       go to 47590
                    425: 37590 ivdele = ivdele + 1
                    426:       write (i02,80003) ivtnum
                    427:       if (iczero) 47590, 7601, 47590
                    428: 47590 if (ivcomp) 27590,17590,27590
                    429: 17590 ivpass = ivpass + 1
                    430:       write (i02,80001) ivtnum
                    431:       go to 7601
                    432: 27590 ivfail = ivfail + 1
                    433:       ivcorr = 0
                    434:       write (i02,80004) ivtnum, ivcomp, ivcorr
                    435:  7601 continue
                    436: c
                    437: c     write page footings and run summaries
                    438: 99999 continue
                    439:       write (i02,90002)
                    440:       write (i02,90006)
                    441:       write (i02,90002)
                    442:       write (i02,90002)
                    443:       write (i02,90007)
                    444:       write (i02,90002)
                    445:       write (i02,90008)  ivfail
                    446:       write (i02,90009) ivpass
                    447:       write (i02,90010) ivdele
                    448: c
                    449: c
                    450: c     terminate routine execution
                    451:       stop
                    452: c
                    453: c     format statements for page headers
                    454: 90000 format (1h1)
                    455: 90002 format (1h )
                    456: 90001 format (1h ,10x,34hfortran compiler validation system)
                    457: 90003 format (1h ,21x,11hversion 1.0)
                    458: 90004 format (1h ,10x,38hfor official use only - copyright 1978)
                    459: 90005 format (1h ,5x,4htest,5x,9hpass/fail, 5x,8hcomputed,8x,7hcorrect)
                    460: 90006 format (1h ,5x,46h----------------------------------------------)
                    461: 90011 format (1h ,18x,17hsubset level test)
                    462: c
                    463: c     format statements for run summaries
                    464: 90008 format (1h ,15x,i5,19h errors encountered)
                    465: 90009 format (1h ,15x,i5,13h tests passed)
                    466: 90010 format (1h ,15x,i5,14h tests deleted)
                    467: c
                    468: c     format statements for test results
                    469: 80001 format (1h ,4x,i5,7x,4hpass)
                    470: 80002 format (1h ,4x,i5,7x,4hfail)
                    471: 80003 format (1h ,4x,i5,7x,7hdeleted)
                    472: 80004 format (1h ,4x,i5,7x,4hfail,10x,i6,9x,i6)
                    473: 80005 format (1h ,4x,i5,7x,4hfail,4x,e12.5,3x,e12.5)
                    474: c
                    475: 90007 format (1h ,20x,20hend of program fm045)
                    476:       end

unix.superglobalmegacorp.com

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