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

1.1     ! root        1: c
        !             2: c     comment section.
        !             3: c
        !             4: c     fm020
        !             5: c
        !             6: c             this routine tests the fortran in-line statement function
        !             7: c     of type logical and integer.  integer constants, logical constants
        !             8: c     integer variables, logical variables, integer arithmetic express-
        !             9: c     ions are all used to test the statement function definition and
        !            10: c     the value returned for the statement function when it is used
        !            11: c     in the main body of the program.
        !            12: c
        !            13: c      references
        !            14: c        american national standard programming language fortran,
        !            15: c              x3.9-1978
        !            16: c
        !            17: c        section 8.4.1, integer, real, double precision, complex, and
        !            18: c                       logical type-statements
        !            19: c        section 15.3.2, intrinsic function references
        !            20: c        section 15.4, statement functions
        !            21: c        section 15.4.1, forms of a function statement
        !            22: c        section 15.4.2, referencing a statement function
        !            23: c        section 15.5.2, external function references
        !            24: c
        !            25:       logical lftn01, ldtn01
        !            26:       logical lftn02, ldtn02
        !            27:       logical lftn03, ldtn03, lctn03
        !            28:       logical lftn04, ldtn04, lctn04
        !            29:       dimension iadn11(2)
        !            30: c
        !            31: c..... test 553
        !            32:       ifon01(idon01) = 32767
        !            33: c
        !            34: c..... test 554
        !            35:       lftn01(ldtn01) = .true.
        !            36: c
        !            37: c..... test 555
        !            38:       ifon02 ( idon02 ) = idon02
        !            39: c
        !            40: c..... test 556
        !            41:       lftn02( ldtn02 ) = ldtn02
        !            42: c
        !            43: c..... test 557
        !            44:       ifon03 (idon03 )= idon03
        !            45: c
        !            46: c..... test 558
        !            47:       lftn03(ldtn03) = ldtn03
        !            48: c
        !            49: c..... test 559
        !            50:       lftn04(ldtn04) = .not. ldtn04
        !            51: c
        !            52: c..... test 560
        !            53:       ifon04(idon04) = idon04 ** 2
        !            54: c
        !            55: c..... test 561
        !            56:       ifon05(idon05, idon06) = idon05 + idon06
        !            57: c
        !            58: c..... test 562
        !            59:       ifon06(idon07, idon08) = sqrt(float(idon07**2)+float(idon08**2))
        !            60: c
        !            61: c..... test 563
        !            62:       ifon07(idon09) = idon09 ** 2
        !            63:       ifon08(i,j)=sqrt(float(ifon07(i))+float(ifon07(j)))
        !            64: c
        !            65: c..... test 564
        !            66:       ifon09(k,l) = k / l + k ** l - k * l
        !            67: c
        !            68: c
        !            69: c
        !            70: c      **********************************************************
        !            71: c
        !            72: c         a compiler validation system for the fortran language
        !            73: c     based on specifications as defined in american national standard
        !            74: c     programming language fortran x3.9-1978, has been developed by the
        !            75: c     federal cobol compiler testing service.  the fortran compiler
        !            76: c     validation system (fcvs) consists of audit routines, their related
        !            77: c     data, and an executive system.  each audit routine is a fortran
        !            78: c     program, subprogram or function which includes tests of specific
        !            79: c     language elements and supporting procedures indicating the result
        !            80: c     of executing these tests.
        !            81: c
        !            82: c         this particular program/subprogram/function contains features
        !            83: c     found only in the subset as defined in x3.9-1978.
        !            84: c
        !            85: c         suggestions and comments should be forwarded to -
        !            86: c
        !            87: c                  department of the navy
        !            88: c                  federal cobol compiler testing service
        !            89: c                  washington, d.c.  20376
        !            90: c
        !            91: c      **********************************************************
        !            92: c
        !            93: c
        !            94: c
        !            95: c     initialization section
        !            96: c
        !            97: c     initialize constants
        !            98: c      **************
        !            99: c     i01 contains the logical unit number for the card reader.
        !           100:       i01 = 5
        !           101: c     i02 contains the logical unit number for the printer.
        !           102:       i02 = 6
        !           103: c     system environment section
        !           104: c
        !           105: cx010    this card is replaced by contents of fexec x-010 control card.
        !           106: c     the cx010 card is for overriding the program default i01 = 5
        !           107: c     (unit number for card reader).
        !           108: cx011    this card is replaced by contents of fexec x-011 control card.
        !           109: c     the cx011 card is for systems which require additional
        !           110: c     fortran statements for files associated with cx010 above.
        !           111: c
        !           112: cx020    this card is replaced by contents of fexec x-020 control card.
        !           113: c     the cx020 card is for overriding the program default i02 = 6
        !           114: c     (unit number for printer).
        !           115: cx021    this card is replaced by contents of fexec x-021 control card.
        !           116: c     the cx021 card is for systems which require additional
        !           117: c     fortran statements for files associated with cx020 above.
        !           118: c
        !           119:       ivpass=0
        !           120:       ivfail=0
        !           121:       ivdele=0
        !           122:       iczero=0
        !           123: c
        !           124: c     write page headers
        !           125:       write (i02,90000)
        !           126:       write (i02,90001)
        !           127:       write (i02,90002)
        !           128:       write (i02, 90002)
        !           129:       write (i02,90003)
        !           130:       write (i02,90002)
        !           131:       write (i02,90004)
        !           132:       write (i02,90002)
        !           133:       write (i02,90011)
        !           134:       write (i02,90002)
        !           135:       write (i02,90002)
        !           136:       write (i02,90005)
        !           137:       write (i02,90006)
        !           138:       write (i02,90002)
        !           139:       ivtnum = 553
        !           140: c
        !           141: c      ****  test 553  ****
        !           142: c     test 553  -  the value of the integer function is set to a
        !           143: c         constant of 32767 regardless of the value of the arguement
        !           144: c     supplied to the dummy arguement.  test of positive integer
        !           145: c     constants for a statement function.
        !           146: c
        !           147: c
        !           148:       if (iczero) 35530, 5530, 35530
        !           149:  5530 continue
        !           150:       ivcomp = ifon01(3)
        !           151:       go to 45530
        !           152: 35530 ivdele = ivdele + 1
        !           153:       write (i02,80003) ivtnum
        !           154:       if (iczero) 45530, 5541, 45530
        !           155: 45530 if ( ivcomp - 32767 )  25530, 15530, 25530
        !           156: 15530 ivpass = ivpass + 1
        !           157:       write (i02,80001) ivtnum
        !           158:       go to 5541
        !           159: 25530 ivfail = ivfail + 1
        !           160:       ivcorr = 32767
        !           161:       write (i02,80004) ivtnum, ivcomp ,ivcorr
        !           162:  5541 continue
        !           163:       ivtnum = 554
        !           164: c
        !           165: c      ****  test 554  ****
        !           166: c     test 554  -  test of the statement function of type logical
        !           167: c         set to the logical constant .true. regardless of the
        !           168: c     arguement supplied to the dummy arguement.
        !           169: c     a logical    if statement is used in conjunction with the logical
        !           170: c     statement function.  the true path is tested.
        !           171: c
        !           172: c
        !           173:       if (iczero) 35540, 5540, 35540
        !           174:  5540 continue
        !           175:       ivon01 = 0
        !           176:       if ( lftn01(.false.) )  ivon01 = 1
        !           177:       go to 45540
        !           178: 35540 ivdele = ivdele + 1
        !           179:       write (i02,80003) ivtnum
        !           180:       if (iczero) 45540, 5551, 45540
        !           181: 45540 if ( ivon01 - 1 )  25540, 15540, 25540
        !           182: 15540 ivpass = ivpass + 1
        !           183:       write (i02,80001) ivtnum
        !           184:       go to 5551
        !           185: 25540 ivfail = ivfail + 1
        !           186:       ivcomp = ivon01
        !           187:       ivcorr = 1
        !           188:       write (i02,80004) ivtnum, ivcomp ,ivcorr
        !           189:  5551 continue
        !           190:       ivtnum = 555
        !           191: c
        !           192: c      ****  test 555  ****
        !           193: c     test 555  -  the integer statement function is set to the value
        !           194: c         of the argeument supplied.
        !           195: c
        !           196: c
        !           197:       if (iczero) 35550, 5550, 35550
        !           198:  5550 continue
        !           199:       ivcomp = ifon02 ( 32767 )
        !           200:       go to 45550
        !           201: 35550 ivdele = ivdele + 1
        !           202:       write (i02,80003) ivtnum
        !           203:       if (iczero) 45550, 5561, 45550
        !           204: 45550 if ( ivcomp - 32767 )  25550, 15550, 25550
        !           205: 15550 ivpass = ivpass + 1
        !           206:       write (i02,80001) ivtnum
        !           207:       go to 5561
        !           208: 25550 ivfail = ivfail + 1
        !           209:       ivcorr = 32767
        !           210:       write (i02,80004) ivtnum, ivcomp ,ivcorr
        !           211:  5561 continue
        !           212:       ivtnum = 556
        !           213: c
        !           214: c      ****  test 556  ****
        !           215: c     test 556  -  test of a logical statement function set to the
        !           216: c         value of the arguement supplied.  the false path of a logical
        !           217: c            if statement is used in conjunction with the logical
        !           218: c         statement function.
        !           219: c
        !           220: c
        !           221:       if (iczero) 35560, 5560, 35560
        !           222:  5560 continue
        !           223:       ivon01 = 1
        !           224:       if ( lftn02(.false.) )  ivon01 = 0
        !           225:       go to 45560
        !           226: 35560 ivdele = ivdele + 1
        !           227:       write (i02,80003) ivtnum
        !           228:       if (iczero) 45560, 5571, 45560
        !           229: 45560 if ( ivon01 - 1 )  25560, 15560, 25560
        !           230: 15560 ivpass = ivpass + 1
        !           231:       write (i02,80001) ivtnum
        !           232:       go to 5571
        !           233: 25560 ivfail = ivfail + 1
        !           234:       ivcomp = ivon01
        !           235:       ivcorr = 1
        !           236:       write (i02,80004) ivtnum, ivcomp ,ivcorr
        !           237:  5571 continue
        !           238:       ivtnum = 557
        !           239: c
        !           240: c      ****  test 557  ****
        !           241: c     test 557  -  the value of an integer function is set equal to
        !           242: c         value of the arguement supplied.  this value is an integer
        !           243: c         variable set to 32767.
        !           244: c
        !           245: c
        !           246:       if (iczero) 35570, 5570, 35570
        !           247:  5570 continue
        !           248:       icon01 = 32767
        !           249:       ivcomp = ifon03 ( icon01 )
        !           250:       go to 45570
        !           251: 35570 ivdele = ivdele + 1
        !           252:       write (i02,80003) ivtnum
        !           253:       if (iczero) 45570, 5581, 45570
        !           254: 45570 if ( ivcomp - 32767 )  25570, 15570, 25570
        !           255: 15570 ivpass = ivpass + 1
        !           256:       write (i02,80001) ivtnum
        !           257:       go to 5581
        !           258: 25570 ivfail = ivfail + 1
        !           259:       ivcorr = 32767
        !           260:       write (i02,80004) ivtnum, ivcomp ,ivcorr
        !           261:  5581 continue
        !           262:       ivtnum = 558
        !           263: c
        !           264: c      ****  test 558  ****
        !           265: c     test 558 -  a logical statement function is set equal to the
        !           266: c         value of the arguement supplied.  this value is a logical
        !           267: c     variable set to .true.  the true path of a logical if
        !           268: c         statement is used in conjunction with the logical statement
        !           269: c         function.
        !           270: c
        !           271: c
        !           272:       if (iczero) 35580, 5580, 35580
        !           273:  5580 continue
        !           274:       ivon01 = 0
        !           275:       lctn03 = .true.
        !           276:       if ( lftn03(lctn03) )  ivon01 = 1
        !           277:       go to 45580
        !           278: 35580 ivdele = ivdele + 1
        !           279:       write (i02,80003) ivtnum
        !           280:       if (iczero) 45580, 5591, 45580
        !           281: 45580 if ( ivon01 - 1 )  25580, 15580, 25580
        !           282: 15580 ivpass = ivpass + 1
        !           283:       write (i02,80001) ivtnum
        !           284:       go to 5591
        !           285: 25580 ivfail = ivfail + 1
        !           286:       ivcomp = ivon01
        !           287:       ivcorr = 1
        !           288:       write (i02,80004) ivtnum, ivcomp ,ivcorr
        !           289:  5591 continue
        !           290:       ivtnum = 559
        !           291: c
        !           292: c      ****  test 559  ****
        !           293: c     test 559  -  like test 558 only the logical  .not.  is used
        !           294: c         in the logical statement function definition  the false path
        !           295: c         of a logical if statement is used in conjunction with the
        !           296: c         logical statement function.
        !           297: c
        !           298: c
        !           299:       if (iczero) 35590, 5590, 35590
        !           300:  5590 continue
        !           301:       ivon01 = 1
        !           302:       lctn04 = .true.
        !           303:       if ( lftn04(lctn04) )  ivon01 = 0
        !           304:       go to 45590
        !           305: 35590 ivdele = ivdele + 1
        !           306:       write (i02,80003) ivtnum
        !           307:       if (iczero) 45590, 5601, 45590
        !           308: 45590 if ( ivon01 - 1 )  25590, 15590, 25590
        !           309: 15590 ivpass = ivpass + 1
        !           310:       write (i02,80001) ivtnum
        !           311:       go to 5601
        !           312: 25590 ivfail = ivfail + 1
        !           313:       ivcomp = ivon01
        !           314:       ivcorr = 1
        !           315:       write (i02,80004) ivtnum, ivcomp ,ivcorr
        !           316:  5601 continue
        !           317:       ivtnum = 560
        !           318: c
        !           319: c      ****  test 560  ****
        !           320: c     test 560  -  integer exponientiation used in an integer
        !           321: c         statement function.
        !           322: c
        !           323: c
        !           324:       if (iczero) 35600, 5600, 35600
        !           325:  5600 continue
        !           326:       icon04 = 3
        !           327:       ivcomp = ifon04(icon04)
        !           328:       go to 45600
        !           329: 35600 ivdele = ivdele + 1
        !           330:       write (i02,80003) ivtnum
        !           331:       if (iczero) 45600, 5611, 45600
        !           332: 45600 if ( ivcomp - 9 )  25600, 15600, 25600
        !           333: 15600 ivpass = ivpass + 1
        !           334:       write (i02,80001) ivtnum
        !           335:       go to 5611
        !           336: 25600 ivfail = ivfail + 1
        !           337:       ivcorr = 9
        !           338:       write (i02,80004) ivtnum, ivcomp ,ivcorr
        !           339:  5611 continue
        !           340:       ivtnum = 561
        !           341: c
        !           342: c      ****  test 561  ****
        !           343: c     test 561  -  test of integer addition using two (2) dummy
        !           344: c         arguements.
        !           345: c
        !           346: c
        !           347:       if (iczero) 35610, 5610, 35610
        !           348:  5610 continue
        !           349:       icon05 = 9
        !           350:       icon06 = 16
        !           351:       ivcomp = ifon05(icon05, icon06)
        !           352:       go to 45610
        !           353: 35610 ivdele = ivdele + 1
        !           354:       write (i02,80003) ivtnum
        !           355:       if (iczero) 45610, 5621, 45610
        !           356: 45610 if ( ivcomp - 25 )  25610, 15610, 25610
        !           357: 15610 ivpass = ivpass + 1
        !           358:       write (i02,80001) ivtnum
        !           359:       go to 5621
        !           360: 25610 ivfail = ivfail + 1
        !           361:       ivcorr = 25
        !           362:       write (i02,80004) ivtnum, ivcomp ,ivcorr
        !           363:  5621 continue
        !           364:       ivtnum = 562
        !           365: c
        !           366: c      ****  test 562  ****
        !           367: c     test 562  -  this test is the solution of a right triangle
        !           368: c         using integer statement functions which reference the
        !           369: c         intrinsic functions  sqrt  and  float.  this is a 3-4-5
        !           370: c         right triangle.
        !           371: c
        !           372: c
        !           373:       if (iczero) 35620, 5620, 35620
        !           374:  5620 continue
        !           375:       icon07 = 3
        !           376:       icon08 = 4
        !           377:       ivcomp = ifon06(icon07, icon08)
        !           378:       go to 45620
        !           379: 35620 ivdele = ivdele + 1
        !           380:       write (i02,80003) ivtnum
        !           381:       if (iczero) 45620, 5631, 45620
        !           382: 45620 if ( ivcomp - 5 )  5622, 15620, 5622
        !           383:  5622 if ( ivcomp - 4 ) 25620, 15620, 25620
        !           384: 15620 ivpass = ivpass + 1
        !           385:       write (i02,80001) ivtnum
        !           386:       go to 5631
        !           387: 25620 ivfail = ivfail + 1
        !           388:       ivcorr = 5
        !           389:       write (i02,80004) ivtnum, ivcomp ,ivcorr
        !           390:  5631 continue
        !           391:       ivtnum = 563
        !           392: c
        !           393: c      ****  test 563  ****
        !           394: c     test 563  -  solution of a 3-4-5 right triangle like test 562
        !           395: c         except that both intrinsic and previously defined statement
        !           396: c         functions are used.
        !           397: c
        !           398: c
        !           399:       if (iczero) 35630, 5630, 35630
        !           400:  5630 continue
        !           401:       icon09 = 3
        !           402:       icon10 = 4
        !           403:       ivcomp = ifon08(icon09, icon10)
        !           404:       go to 45630
        !           405: 35630 ivdele = ivdele + 1
        !           406:       write (i02,80003) ivtnum
        !           407:       if (iczero) 45630, 5641, 45630
        !           408: 45630 if ( ivcomp - 5 )   5632, 15630, 5632
        !           409:  5632 if ( ivcomp - 4 )  25630, 15630, 25630
        !           410: 15630 ivpass = ivpass + 1
        !           411:       write (i02,80001) ivtnum
        !           412:       go to 5641
        !           413: 25630 ivfail = ivfail + 1
        !           414:       ivcorr = 5
        !           415:       write (i02,80004) ivtnum, ivcomp ,ivcorr
        !           416:  5641 continue
        !           417:       ivtnum = 564
        !           418: c
        !           419: c      ****  test 564  ****
        !           420: c     test 564  -  use  of array elements in an integer statement
        !           421: c         function which uses the operations of + - * /  .
        !           422: c
        !           423: c
        !           424:       if (iczero) 35640, 5640, 35640
        !           425:  5640 continue
        !           426:       iadn11(1) = 2
        !           427:       iadn11(2) = 2
        !           428:       ivcomp = ifon09( iadn11(1), iadn11(2) )
        !           429:       go to 45640
        !           430: 35640 ivdele = ivdele + 1
        !           431:       write (i02,80003) ivtnum
        !           432:       if (iczero) 45640, 5651, 45640
        !           433: 45640 if ( ivcomp - 1 )  25640, 15640, 25640
        !           434: 15640 ivpass = ivpass + 1
        !           435:       write (i02,80001) ivtnum
        !           436:       go to 5651
        !           437: 25640 ivfail = ivfail + 1
        !           438:       ivcorr = 1
        !           439:       write (i02,80004) ivtnum, ivcomp ,ivcorr
        !           440:  5651 continue
        !           441: c
        !           442: c     write page footings and run summaries
        !           443: 99999 continue
        !           444:       write (i02,90002)
        !           445:       write (i02,90006)
        !           446:       write (i02,90002)
        !           447:       write (i02,90002)
        !           448:       write (i02,90007)
        !           449:       write (i02,90002)
        !           450:       write (i02,90008)  ivfail
        !           451:       write (i02,90009) ivpass
        !           452:       write (i02,90010) ivdele
        !           453: c
        !           454: c
        !           455: c     terminate routine execution
        !           456:       stop
        !           457: c
        !           458: c     format statements for page headers
        !           459: 90000 format (1h1)
        !           460: 90002 format (1h )
        !           461: 90001 format (1h ,10x,34hfortran compiler validation system)
        !           462: 90003 format (1h ,21x,11hversion 1.0)
        !           463: 90004 format (1h ,10x,38hfor official use only - copyright 1978)
        !           464: 90005 format (1h ,5x,4htest,5x,9hpass/fail, 5x,8hcomputed,8x,7hcorrect)
        !           465: 90006 format (1h ,5x,46h----------------------------------------------)
        !           466: 90011 format (1h ,18x,17hsubset level test)
        !           467: c
        !           468: c     format statements for run summaries
        !           469: 90008 format (1h ,15x,i5,19h errors encountered)
        !           470: 90009 format (1h ,15x,i5,13h tests passed)
        !           471: 90010 format (1h ,15x,i5,14h tests deleted)
        !           472: c
        !           473: c     format statements for test results
        !           474: 80001 format (1h ,4x,i5,7x,4hpass)
        !           475: 80002 format (1h ,4x,i5,7x,4hfail)
        !           476: 80003 format (1h ,4x,i5,7x,7hdeleted)
        !           477: 80004 format (1h ,4x,i5,7x,4hfail,10x,i6,9x,i6)
        !           478: 80005 format (1h ,4x,i5,7x,4hfail,4x,e12.5,3x,e12.5)
        !           479: c
        !           480: 90007 format (1h ,20x,20hend of program fm020)
        !           481:       end

unix.superglobalmegacorp.com

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