C COMMENT SECTION C C FM026 C C THIS ROUTINE CONTAINS THE BASIC SUBROUTINE REFERENCE TESTS. C THE SUBROUTINE FS027 IS CALLED BY THIS PROGRAM. THE SUBROUTINE C FS027 INCREMENTS THE CALLING ARGUMENT BY 1 AND RETURNS TO THE C CALLING PROGRAM. C C EXECUTION OF A SUBROUTINE REFERENCE RESULTS IN AN ASSOCIATION C OF ACTUAL ARGUMENTS WITH ALL APPEARANCES OF DUMMY ARGUMENTS IN C THE DEFINING SUBPROGRAM. FOLLOWING THESE ASSOCIATIONS, EXECUTION C OF THE FIRST EXECUTABLE STATEMENT OF THE DEFINING SUBPROGRAM C IS UNDERTAKEN. C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 15.6.2, SUBROUTINE REFERENCE C C ********************************************************** C C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN NATIONAL STANDARD C PROGRAMMING LANGUAGE FORTRAN X3.9-1978, HAS BEEN DEVELOPED BY THE C FEDERAL COBOL COMPILER TESTING SERVICE. THE FORTRAN COMPILER C VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT ROUTINES, THEIR RELATED C DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT ROUTINE IS A FORTRAN C PROGRAM, SUBPROGRAM OR FUNCTION WHICH INCLUDES TESTS OF SPECIFIC C LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING THE RESULT C OF EXECUTING THESE TESTS. C C THIS PARTICULAR PROGRAM/SUBPROGRAM/FUNCTION CONTAINS FEATURES C FOUND ONLY IN THE SUBSET AS DEFINED IN X3.9-1978. C C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO - C C DEPARTMENT OF THE NAVY C FEDERAL COBOL COMPILER TESTING SERVICE C WASHINGTON, D.C. 20376 C C ********************************************************** C C C C INITIALIZATION SECTION C C INITIALIZE CONSTANTS C ************** C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 5 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 6 C SYSTEM ENVIRONMENT SECTION C CX010 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-010 CONTROL CARD. C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 C (UNIT NUMBER FOR CARD READER). CX011 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-011 CONTROL CARD. C THE CX011 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX010 ABOVE. C CX020 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-020 CONTROL CARD. C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02 = 6 C (UNIT NUMBER FOR PRINTER). CX021 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-021 CONTROL CARD. C THE CX021 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX020 ABOVE. C IVPASS=0 IVFAIL=0 IVDELE=0 ICZERO=0 C C WRITE PAGE HEADERS WRITE (I02,90000) WRITE (I02,90001) WRITE (I02,90002) WRITE (I02, 90002) WRITE (I02,90003) WRITE (I02,90002) WRITE (I02,90004) WRITE (I02,90002) WRITE (I02,90011) WRITE (I02,90002) WRITE (I02,90002) WRITE (I02,90005) WRITE (I02,90006) WRITE (I02,90002) C C TEST SECTION C C SUBROUTINE REFERENCE - CALL C IVTNUM = 666 C C **** TEST 666 **** C SUBROUTINE CALL - ARGUMENT NAME SAME AS SUBROUTINE ARGUMENT NAME. C IF (ICZERO) 36660, 6660, 36660 6660 CONTINUE IVON01 = 0 CALL FS027(IVON01) IVCOMP = IVON01 GO TO 46660 36660 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46660, 6671, 46660 46660 IF (IVCOMP - 1) 26660,16660,26660 16660 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6671 26660 IVFAIL = IVFAIL + 1 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6671 CONTINUE IVTNUM = 667 C C **** TEST 667 **** C SUBROUTINE CALL - ARGUMENT NAME SAME AS INTERNAL VARIABLE IN C SUBROUTINE. C IF (ICZERO) 36670, 6670, 36670 6670 CONTINUE IVON02 = 2 CALL FS027(IVON02) IVCOMP = IVON02 GO TO 46670 36670 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46670, 6681, 46670 46670 IF (IVCOMP - 3) 26670,16670,26670 16670 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6681 26670 IVFAIL = IVFAIL + 1 IVCORR = 3 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6681 CONTINUE IVTNUM = 668 C C **** TEST 668 **** C SUBROUTINE CALL - ARGUMENT NAME DIFFERENT FROM SUBROUTINE ARGUMENT C AND INTERNAL VARIABLE. C IF (ICZERO) 36680, 6680, 36680 6680 CONTINUE IVON01 = 7 IVON03 = -12 CALL FS027(IVON03) IVCOMP = IVON03 GO TO 46680 36680 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46680, 6691, 46680 46680 IF (IVCOMP + 11 ) 26680,16680,26680 16680 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6691 26680 IVFAIL = IVFAIL + 1 IVCORR = -11 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6691 CONTINUE IVTNUM = 669 C C **** TEST 669 **** C REPEATED SUBROUTINE CALLS IN A DO LOOP. C IF (ICZERO) 36690, 6690, 36690 6690 CONTINUE IVCOMP = 0 DO 6692 IVON04 = 1,5 CALL FS027 (IVCOMP) 6692 CONTINUE GO TO 46690 36690 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46690, 6701, 46690 46690 IF (IVCOMP - 5) 26690,16690,26690 16690 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6701 26690 IVFAIL = IVFAIL + 1 IVCORR = 5 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C **** END OF TESTS **** 6701 CONTINUE C C WRITE PAGE FOOTINGS AND RUN SUMMARIES 99999 CONTINUE WRITE (I02,90002) WRITE (I02,90006) WRITE (I02,90002) WRITE (I02,90002) WRITE (I02,90007) WRITE (I02,90002) WRITE (I02,90008) IVFAIL WRITE (I02,90009) IVPASS WRITE (I02,90010) IVDELE C C C TERMINATE ROUTINE EXECUTION STOP C C FORMAT STATEMENTS FOR PAGE HEADERS 90000 FORMAT (1H1) 90002 FORMAT (1H ) 90001 FORMAT (1H ,10X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90003 FORMAT (1H ,21X,11HVERSION 1.0) 90004 FORMAT (1H ,10X,38HFOR OFFICIAL USE ONLY - COPYRIGHT 1978) 90005 FORMAT (1H ,5X,4HTEST,5X,9HPASS/FAIL, 5X,8HCOMPUTED,8X,7HCORRECT) 90006 FORMAT (1H ,5X,46H----------------------------------------------) 90011 FORMAT (1H ,18X,17HSUBSET LEVEL TEST) C C FORMAT STATEMENTS FOR RUN SUMMARIES 90008 FORMAT (1H ,15X,I5,19H ERRORS ENCOUNTERED) 90009 FORMAT (1H ,15X,I5,13H TESTS PASSED) 90010 FORMAT (1H ,15X,I5,14H TESTS DELETED) C C FORMAT STATEMENTS FOR TEST RESULTS 80001 FORMAT (1H ,4X,I5,7X,4HPASS) 80002 FORMAT (1H ,4X,I5,7X,4HFAIL) 80003 FORMAT (1H ,4X,I5,7X,7HDELETED) 80004 FORMAT (1H ,4X,I5,7X,4HFAIL,10X,I6,9X,I6) 80005 FORMAT (1H ,4X,I5,7X,4HFAIL,4X,E12.5,3X,E12.5) C 90007 FORMAT (1H ,20X,20HEND OF PROGRAM FM026) END SUBROUTINE FS027(IVON01) C COMMENT SECTION C C FS027 C C THIS SUBROUTINE IS CALLED BY THE MAIN PROGRAM FM026. THE C SUBROUTINE ARGUMENT IS INCREMENTED BY 1 AND CONTROL RETURNED C TO THE CALLING PROGRAM. C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 15.6, SUBROUTINES C SECTION 15.8, RETURN STATEMENT C C TEST SECTION C C SUBROUTINE SUBPROGRAM C C INCREMENT ARGUMENT BY 1 AND RETURN TO CALLING PROGRAM. C IVON02 = IVON01 IVON02 = IVON02 + 1 IVON01 = IVON02 IVON02 = 300 RETURN END