FM517.f Source File


Contents

Source Code


Source Code

      PROGRAM FM517                                                     00010517
C                                                                       00020517
C     THIS PROGRAM TESTS THE RETURN STATEMENT              ANS REF.     00030517
C                       RETURN E                           15.8.1       00040517
C     IN SUBROUTINE SUBPROGRAMS.  E IS AN ARITHMETIC       15.8.3       00050517
C     EXPRESSION WHOSE VALUE INDICATES WHERE CONTROL                    00060517
C     WILL BE RETURNED TO.                                              00070517
C                                                                       00080517
C     THIS ROUTINE USES SUBROUTINE SUBPROGRAMS SN518                    00090517
C     AND SN519                                                         00100517
C                                                                       00110517
CBB** ********************** BBCCOMNT **********************************00120517
C****                                                                   00130517
C****            1978 FORTRAN COMPILER VALIDATION SYSTEM                00140517
C****                          VERSION 2.1                              00150517
C****                                                                   00160517
C****                                                                   00170517
C****           SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO         00180517
C****          NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY           00190517
C****               SOFTWARE STANDARDS VALIDATION GROUP                 00200517
C****                      BUILDING 225  RM A266                        00210517
C****                     GAITHERSBURG, MD  20899                       00220517
C****                                                                   00230517
C****                                                                   00240517
C****                                                                   00250517
CBE** ********************** BBCCOMNT **********************************00260517
           IMPLICIT DOUBLE PRECISION (D), COMPLEX (Z), LOGICAL (L)      00270517
           IMPLICIT CHARACTER*27 (C)                                    00280517
CBB** ********************** BBCINITA **********************************00290517
C**** SPECIFICATION STATEMENTS                                          00300517
C****                                                                   00310517
      CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20,      00320517
     1          ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13      00330517
CBE** ********************** BBCINITA **********************************00340517
C                                                                       00350517
                                                                        00360517
C                                                                       00370517
C                                                                       00380517
CBB** ********************** BBCINITB **********************************00390517
C**** INITIALIZE SECTION                                                00400517
      DATA  ZVERS,                  ZVERSD,             ZDATE           00410517
     1      /'VERSION 2.1  ',  '93/10/21*21.02.00',  '*NO DATE*TIME'/   00420517
      DATA       ZCOMPL,             ZNAME,             ZTAPE           00430517
     1      /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/      00440517
      DATA       ZPROJ,           ZTAPED,         ZPROG                 00450517
     1      /'*NO PROJECT*',   '*NO TAPE DATE',  'XXXXX'/               00460517
      DATA   REMRKS /'                               '/                 00470517
C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED   00480517
C**** FOR IDENTIFYING THE TEST ENVIRONMENT                              00490517
C****                                                                   00500517
CZ01  ZVERS  = 'VERSION OF THE COMPILER VALIDATION SYSTEM'              00510517
CZ02  ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM'   00520517
CZ03  ZPROG  = 'PROGRAM NAME'                                           00530517
CZ04  ZDATE  = 'DATE OF TEST'                                           00540517
CZ05  ZCOMPL = 'COMPILER IDENTIFICATION'                                00550517
CZ06  ZPROJ  = 'PROJECT NUMBER/IDENTIFICATION'                          00560517
CZ07  ZNAME  = 'NAME OF USER'                                           00570517
CZ08  ZTAPE  = 'TAPE OWNER/ID'                                          00580517
CZ09  ZTAPED = 'DATE TAPE COPIED'                                       00590517
C                                                                       00600517
      IVPASS = 0                                                        00610517
      IVFAIL = 0                                                        00620517
      IVDELE = 0                                                        00630517
      IVINSP = 0                                                        00640517
      IVTOTL = 0                                                        00650517
      IVTOTN = 0                                                        00660517
      ICZERO = 0                                                        00670517
C                                                                       00680517
C     I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER.         00690517
      I01 = 05                                                          00700517
C     I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER.             00710517
      I02 = 06                                                          00720517
C                                                                       00730517
CX010   REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). 00740517
C     THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5      00750517
CX011   REPLACED BY FEXEC X-011 CONTROL CARD.  CX011 IS FOR SYSTEMS     00760517
C     REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010.  00770517
C                                                                       00780517
CX020   REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER).     00790517
C     THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6       00800517
CX021   REPLACED BY FEXEC X-021 CONTROL CARD.  CX021 IS FOR SYSTEMS     00810517
C     REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020.  00820517
C                                                                       00830517
CBE** ********************** BBCINITB **********************************00840517
           ZPROG = 'FM517'                                              00850517
           IVTOTL = 5                                                   00860517
CBB** ********************** BBCHED0A **********************************00870517
C****                                                                   00880517
C**** WRITE REPORT TITLE                                                00890517
C****                                                                   00900517
      WRITE (I02, 90002)                                                00910517
      WRITE (I02, 90006)                                                00920517
      WRITE (I02, 90007)                                                00930517
      WRITE (I02, 90008)  ZVERS, ZVERSD                                 00940517
      WRITE (I02, 90009)  ZPROG, ZPROG                                  00950517
      WRITE (I02, 90010)  ZDATE, ZCOMPL                                 00960517
CBE** ********************** BBCHED0A **********************************00970517
CBB** ********************** BBCHED0B **********************************00980517
C**** WRITE DETAIL REPORT HEADERS                                       00990517
C****                                                                   01000517
      WRITE (I02,90004)                                                 01010517
      WRITE (I02,90004)                                                 01020517
      WRITE (I02,90013)                                                 01030517
      WRITE (I02,90014)                                                 01040517
      WRITE (I02,90015) IVTOTL                                          01050517
CBE** ********************** BBCHED0B **********************************01060517
C     TESTS 1 AND 2 TEST RETURN CONTROL PROCESSING IN THE EXECUTION     01070517
C     OF A SUBROUTINE SUBPROGRAM WHICH PROVIDES ALTERNATE RETURN        01080517
C                                                                       01090517
CT001*  TEST 001   ****  FCVS PROGRAM 517  ****                         01100517
C                                                                       01110517
           IVTNUM = 1                                                   01120517
           IVCOMP = 0                                                   01130517
           IVCORR =     3                                               01140517
      IVN001 = 2                                                        01150517
      CALL SN518(IVN001,*0012,*0013)                                    01160517
      IVCOMP = 1                                                        01170517
      GO TO 0014                                                        01180517
0012  CONTINUE                                                          01190517
      IVCOMP = 2                                                        01200517
      GO TO 0014                                                        01210517
0013  CONTINUE                                                          01220517
      IVCOMP = 3                                                        01230517
0014  CONTINUE                                                          01240517
40010      IF (IVCOMP -     3) 20010, 10010, 20010                      01250517
10010      IVPASS = IVPASS + 1                                          01260517
           WRITE (I02,80002) IVTNUM                                     01270517
           GO TO 0011                                                   01280517
20010      IVFAIL = IVFAIL + 1                                          01290517
           WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR                     01300517
 0011      CONTINUE                                                     01310517
C                                                                       01320517
CT002*  TEST 002   ****  FCVS PROGRAM 517  ****                         01330517
C                                                                       01340517
           IVTNUM = 2                                                   01350517
           IVCOMP = 0                                                   01360517
           IVCORR =     5                                               01370517
      CALL SN519(7,*0022,*0023)                                         01380517
      IVCOMP = 1                                                        01390517
      GO TO 0024                                                        01400517
0022  CONTINUE                                                          01410517
      IVCOMP = 3                                                        01420517
      GO TO 0024                                                        01430517
0023  CONTINUE                                                          01440517
      IVCOMP = 5                                                        01450517
0024  CONTINUE                                                          01460517
40020      IF (IVCOMP -     5) 20020, 10020, 20020                      01470517
10020      IVPASS = IVPASS + 1                                          01480517
           WRITE (I02,80002) IVTNUM                                     01490517
           GO TO 0021                                                   01500517
20020      IVFAIL = IVFAIL + 1                                          01510517
           WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR                     01520517
 0021      CONTINUE                                                     01530517
C                                                                       01540517
CT003*  TEST 003   ****  FCVS PROGRAM 517  ****                         01550517
C     TEST 003 TESTS THE "RETURN E" STATEMENT WHERE E HAS VALUE         01560517
C     LESS THAN ONE                                                     01570517
C                                                                       01580517
           IVTNUM = 3                                                   01590517
           IVCOMP = 0                                                   01600517
           IVCORR =    -2                                               01610517
      CALL SN518(-3,*0032,*0033)                                        01620517
      IVCOMP = -2                                                       01630517
      GO TO 0034                                                        01640517
0032  CONTINUE                                                          01650517
      IVCOMP = -4                                                       01660517
      GO TO 0034                                                        01670517
0033  CONTINUE                                                          01680517
      IVCOMP = -6                                                       01690517
0034  CONTINUE                                                          01700517
40030      IF (IVCOMP +     2) 20030, 10030, 20030                      01710517
10030      IVPASS = IVPASS + 1                                          01720517
           WRITE (I02,80002) IVTNUM                                     01730517
           GO TO 0031                                                   01740517
20030      IVFAIL = IVFAIL + 1                                          01750517
           WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR                     01760517
 0031      CONTINUE                                                     01770517
C                                                                       01780517
CT004*  TEST 004   ****  FCVS PROGRAM 517  ****                         01790517
C     TEST 004 TESTS THE "RETURN E" STATEMENT WHERE E HAS VALUE         01800517
C     GREATER THAN THE NUMBER OF ASTERISKS IN A SUBROUTINE STATEMENT    01810517
C                                                                       01820517
           IVTNUM = 4                                                   01830517
           IVCOMP = 0                                                   01840517
           IVCORR =     7                                               01850517
      CALL SN518(3,*0042,*0043)                                         01860517
      IVCOMP = 7                                                        01870517
      GO TO 0044                                                        01880517
0042  CONTINUE                                                          01890517
      IVCOMP = 9                                                        01900517
      GO TO 0044                                                        01910517
0043  CONTINUE                                                          01920517
      IVCOMP = 11                                                       01930517
0044  CONTINUE                                                          01940517
40040      IF (IVCOMP -     7) 20040, 10040, 20040                      01950517
10040      IVPASS = IVPASS + 1                                          01960517
           WRITE (I02,80002) IVTNUM                                     01970517
           GO TO 0041                                                   01980517
20040      IVFAIL = IVFAIL + 1                                          01990517
           WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR                     02000517
 0041      CONTINUE                                                     02010517
C                                                                       02020517
CT005*  TEST 005   ****  FCVS PROGRAM 517  ****                         02030517
C     TEST 005 TESTS THE "RETURN E" STATEMENT WHERE E HAS VALUE         02040517
C     GREATER THAN THE NUMBER OF ASTERISKS IN AN ENTRY STATEMENT        02050517
C                                                                       02060517
           IVTNUM = 5                                                   02070517
           IVCOMP = 0                                                   02080517
           IVCORR =   -10                                               02090517
      CALL EN872(9,*0052,*0053)                                         02100517
      IVCOMP = -10                                                      02110517
      GO TO 0054                                                        02120517
0052  CONTINUE                                                          02130517
      IVCOMP = 3                                                        02140517
      GO TO 0054                                                        02150517
0053  CONTINUE                                                          02160517
      IVCOMP = 11                                                       02170517
0054  CONTINUE                                                          02180517
40050      IF (IVCOMP +    10) 20050, 10050, 20050                      02190517
10050      IVPASS = IVPASS + 1                                          02200517
           WRITE (I02,80002) IVTNUM                                     02210517
           GO TO 0051                                                   02220517
20050      IVFAIL = IVFAIL + 1                                          02230517
           WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR                     02240517
 0051      CONTINUE                                                     02250517
C                                                                       02260517
CBB** ********************** BBCSUM0  **********************************02270517
C**** WRITE OUT TEST SUMMARY                                            02280517
C****                                                                   02290517
      IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP                        02300517
      WRITE (I02, 90004)                                                02310517
      WRITE (I02, 90014)                                                02320517
      WRITE (I02, 90004)                                                02330517
      WRITE (I02, 90020) IVPASS                                         02340517
      WRITE (I02, 90022) IVFAIL                                         02350517
      WRITE (I02, 90024) IVDELE                                         02360517
      WRITE (I02, 90026) IVINSP                                         02370517
      WRITE (I02, 90028) IVTOTN, IVTOTL                                 02380517
CBE** ********************** BBCSUM0  **********************************02390517
CBB** ********************** BBCFOOT0 **********************************02400517
C**** WRITE OUT REPORT FOOTINGS                                         02410517
C****                                                                   02420517
      WRITE (I02,90016) ZPROG, ZPROG                                    02430517
      WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED                     02440517
      WRITE (I02,90019)                                                 02450517
CBE** ********************** BBCFOOT0 **********************************02460517
90001 FORMAT (" ",56X,"FM517")                                          02470517
90000 FORMAT (" ",50X,"END OF PROGRAM FM517" )                          02480517
CBB** ********************** BBCFMT0A **********************************02490517
C**** FORMATS FOR TEST DETAIL LINES                                     02500517
C****                                                                   02510517
80000 FORMAT (" ",2X,I3,4X,"DELETED",32X,A31)                           02520517
80002 FORMAT (" ",2X,I3,4X," PASS  ",32X,A31)                           02530517
80004 FORMAT (" ",2X,I3,4X,"INSPECT",32X,A31)                           02540517
80008 FORMAT (" ",2X,I3,4X," FAIL  ",32X,A31)                           02550517
80010 FORMAT (" ",2X,I3,4X," FAIL  ",/," ",15X,"COMPUTED= " ,           02560517
     1I6,/," ",15X,"CORRECT=  " ,I6)                                    02570517
80012 FORMAT (" ",2X,I3,4X," FAIL  ",/," ",16X,"COMPUTED= " ,           02580517
     1E12.5,/," ",16X,"CORRECT=  " ,E12.5)                              02590517
80018 FORMAT (" ",2X,I3,4X," FAIL  ",/," ",16X,"COMPUTED= " ,           02600517
     1A21,/," ",16X,"CORRECT=  " ,A21)                                  02610517
80020 FORMAT (" ",16X,"COMPUTED= " ,A21,1X,A31)                         02620517
80022 FORMAT (" ",16X,"CORRECT=  " ,A21,1X,A31)                         02630517
80024 FORMAT (" ",16X,"COMPUTED= " ,I6,16X,A31)                         02640517
80026 FORMAT (" ",16X,"CORRECT=  " ,I6,16X,A31)                         02650517
80028 FORMAT (" ",16X,"COMPUTED= " ,E12.5,10X,A31)                      02660517
80030 FORMAT (" ",16X,"CORRECT=  " ,E12.5,10X,A31)                      02670517
80050 FORMAT (" ",48X,A31)                                              02680517
CBE** ********************** BBCFMT0A **********************************02690517
CBB** ********************** BBCFMAT1 **********************************02700517
C**** FORMATS FOR TEST DETAIL LINES - FULL LANGUAGE                     02710517
C****                                                                   02720517
80031 FORMAT (" ",2X,I3,4X," FAIL  ",/," ",16X,"COMPUTED= " ,           02730517
     1D17.10,/," ",16X,"CORRECT=  " ,D17.10)                            02740517
80033 FORMAT (" ",16X,"COMPUTED= " ,D17.10,10X,A31)                     02750517
80035 FORMAT (" ",16X,"CORRECT=  " ,D17.10,10X,A31)                     02760517
80037 FORMAT (" ",16X,"COMPUTED= " ,"(",E12.5,", ",E12.5,")",6X,A31)    02770517
80039 FORMAT (" ",16X,"CORRECT=  " ,"(",E12.5,", ",E12.5,")",6X,A31)    02780517
80041 FORMAT (" ",16X,"COMPUTED= " ,"(",F12.5,", ",F12.5,")",6X,A31)    02790517
80043 FORMAT (" ",16X,"CORRECT=  " ,"(",F12.5,", ",F12.5,")",6X,A31)    02800517
80045 FORMAT (" ",2X,I3,4X," FAIL  ",/," ",16X,"COMPUTED= " ,           02810517
     1"(",F12.5,", ",F12.5,")"/," ",16X,"CORRECT=  " ,                  02820517
     2"(",F12.5,", ",F12.5,")")                                         02830517
CBE** ********************** BBCFMAT1 **********************************02840517
CBB** ********************** BBCFMT0B **********************************02850517
C**** FORMAT STATEMENTS FOR PAGE HEADERS                                02860517
C****                                                                   02870517
90002 FORMAT ("1")                                                      02880517
90004 FORMAT (" ")                                                      02890517
90006 FORMAT (" ",20X,"NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY" )02900517
90007 FORMAT (" ",19X,"FORTRAN COMPILER VALIDATION SYSTEM" )            02910517
90008 FORMAT (" ",21X,A13,A17)                                          02920517
90009 FORMAT (" ",/," *",A5,"BEGIN*",12X,"TEST RESULTS - " ,A5,/)       02930517
90010 FORMAT (" ",8X,"TEST DATE*TIME= " ,A17,"  -  COMPILER= " ,A20)    02940517
90013 FORMAT (" "," TEST   ","PASS/FAIL " ,6X,"DISPLAYED RESULTS" ,     02950517
     1       7X,"REMARKS",24X)                                          02960517
90014 FORMAT (" ","----------------------------------------------" ,    02970517
     1        "---------------------------------" )                     02980517
90015 FORMAT (" ",48X,"THIS PROGRAM HAS " ,I3," TESTS",/)               02990517
C****                                                                   03000517
C**** FORMAT STATEMENTS FOR REPORT FOOTINGS                             03010517
C****                                                                   03020517
90016 FORMAT (" ",/," *",A5,"END*",14X,"END OF TEST - " ,A5,/)          03030517
90018 FORMAT (" ",A13,13X,A20,"   *   ",A10,"/",                        03040517
     1        A13)                                                      03050517
90019 FORMAT (" ","FOR OFFICIAL USE ONLY     " ,35X,"COPYRIGHT  1982" ) 03060517
C****                                                                   03070517
C**** FORMAT STATEMENTS FOR RUN SUMMARY                                 03080517
C****                                                                   03090517
90020 FORMAT (" ",21X,I5," TESTS PASSED" )                              03100517
90022 FORMAT (" ",21X,I5," TESTS FAILED" )                              03110517
90024 FORMAT (" ",21X,I5," TESTS DELETED" )                             03120517
90026 FORMAT (" ",21X,I5," TESTS REQUIRE INSPECTION" )                  03130517
90028 FORMAT (" ",21X,I5," OF ",I3," TESTS EXECUTED" )                  03140517
CBE** ********************** BBCFMT0B **********************************03150517
      STOP                                                              03160517
      END                                                               03170517

C                                                                       00010518
C     THIS ROUTINE IS TO BE RUN WITH ROUTINE 517                        00020518
C                                                                       00030518
C     THIS SUBROUTINE TESTS THE USE OF THE "RETURN E" STATEMENT         00040518
C     WHERE E IS AN INTEGER VARIABLE                                    00050518
C                                                                       00060518
      SUBROUTINE SN518(IVD001,*,*)                                      00070518
      RETURN IVD001                                                     00080518
      END                                                               00090518

C                                                                       00010519
C     THIS ROUTINE IS TO BE RUN WITH ROUTINE 517                        00020519
C                                                                       00030519
C     THIS SUBROUTINE TESTS THE USE OF THE "RETURN E" STATEMENT         00040519
C     WHERE E IS AN INTEGER EXPRESSION                                  00050519
C                                                                       00060519
      SUBROUTINE SN519(IVD001,*,*)                                      00070519
      RETURN (IVD001 - 2*(IVD001/2) + 1)                                00080519
      ENTRY EN872(IVD002,*,*)                                           00090519
      RETURN (IVD002 - 3)                                               00100519
      END                                                               00110519