blob: 9ef722dd4dcb0430487debc5d772f464662f91ec [file] [log] [blame]
PROGRAM FM026
C COMMENT SECTION 00010026
C 00020026
C FM026 00030026
C 00040026
C THIS ROUTINE CONTAINS THE BASIC SUBROUTINE REFERENCE TESTS. 00050026
C THE SUBROUTINE FS027 IS CALLED BY THIS PROGRAM. THE SUBROUTINE 00060026
C FS027 INCREMENTS THE CALLING ARGUMENT BY 1 AND RETURNS TO THE 00070026
C CALLING PROGRAM. 00080026
C 00090026
C EXECUTION OF A SUBROUTINE REFERENCE RESULTS IN AN ASSOCIATION 00100026
C OF ACTUAL ARGUMENTS WITH ALL APPEARANCES OF DUMMY ARGUMENTS IN 00110026
C THE DEFINING SUBPROGRAM. FOLLOWING THESE ASSOCIATIONS, EXECUTION 00120026
C OF THE FIRST EXECUTABLE STATEMENT OF THE DEFINING SUBPROGRAM 00130026
C IS UNDERTAKEN. 00140026
C 00150026
C REFERENCES 00160026
C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, 00170026
C X3.9-1978 00180026
C 00190026
C SECTION 15.6.2, SUBROUTINE REFERENCE 00200026
C 00210026
C ********************************************************** 00220026
C 00230026
C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE 00240026
C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN NATIONAL STANDARD 00250026
C PROGRAMMING LANGUAGE FORTRAN X3.9-1978, HAS BEEN DEVELOPED BY THE 00260026
C FEDERAL COBOL COMPILER TESTING SERVICE. THE FORTRAN COMPILER 00270026
C VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT ROUTINES, THEIR RELATED00280026
C DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT ROUTINE IS A FORTRAN 00290026
C PROGRAM, SUBPROGRAM OR FUNCTION WHICH INCLUDES TESTS OF SPECIFIC 00300026
C LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING THE RESULT 00310026
C OF EXECUTING THESE TESTS. 00320026
C 00330026
C THIS PARTICULAR PROGRAM/SUBPROGRAM/FUNCTION CONTAINS FEATURES 00340026
C FOUND ONLY IN THE SUBSET AS DEFINED IN X3.9-1978. 00350026
C 00360026
C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO - 00370026
C 00380026
C NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY 00390026
C SOFTWARE STANDARDS VALIDATION GROUP 00400026
C BUILDING 225 RM A266 00410026
C GAITHERSBURG, MD 20899 00420026
C ********************************************************** 00430026
C 00440026
C 00450026
C 00460026
C INITIALIZATION SECTION 00470026
C 00480026
C INITIALIZE CONSTANTS 00490026
C ************** 00500026
C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. 00510026
I01 = 5 00520026
C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. 00530026
I02 = 6 00540026
C SYSTEM ENVIRONMENT SECTION 00550026
C 00560026
CX010 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-010 CONTROL CARD. 00570026
C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 00580026
C (UNIT NUMBER FOR CARD READER). 00590026
CX011 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-011 CONTROL CARD. 00600026
C THE CX011 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00610026
C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX010 ABOVE. 00620026
C 00630026
CX020 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-020 CONTROL CARD. 00640026
C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02 = 6 00650026
C (UNIT NUMBER FOR PRINTER). 00660026
CX021 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-021 CONTROL CARD. 00670026
C THE CX021 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00680026
C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX020 ABOVE. 00690026
C 00700026
IVPASS=0 00710026
IVFAIL=0 00720026
IVDELE=0 00730026
ICZERO=0 00740026
C 00750026
C WRITE PAGE HEADERS 00760026
WRITE (I02,90000) 00770026
WRITE (I02,90001) 00780026
WRITE (I02,90002) 00790026
WRITE (I02, 90002) 00800026
WRITE (I02,90003) 00810026
WRITE (I02,90002) 00820026
WRITE (I02,90004) 00830026
WRITE (I02,90002) 00840026
WRITE (I02,90011) 00850026
WRITE (I02,90002) 00860026
WRITE (I02,90002) 00870026
WRITE (I02,90005) 00880026
WRITE (I02,90006) 00890026
WRITE (I02,90002) 00900026
C 00910026
C TEST SECTION 00920026
C 00930026
C SUBROUTINE REFERENCE - CALL 00940026
C 00950026
IVTNUM = 666 00960026
C 00970026
C **** TEST 666 **** 00980026
C SUBROUTINE CALL - ARGUMENT NAME SAME AS SUBROUTINE ARGUMENT NAME. 00990026
C 01000026
IF (ICZERO) 36660, 6660, 36660 01010026
6660 CONTINUE 01020026
IVON01 = 0 01030026
CALL FS027(IVON01) 01040026
IVCOMP = IVON01 01050026
GO TO 46660 01060026
36660 IVDELE = IVDELE + 1 01070026
WRITE (I02,80003) IVTNUM 01080026
IF (ICZERO) 46660, 6671, 46660 01090026
46660 IF (IVCOMP - 1) 26660,16660,26660 01100026
16660 IVPASS = IVPASS + 1 01110026
WRITE (I02,80001) IVTNUM 01120026
GO TO 6671 01130026
26660 IVFAIL = IVFAIL + 1 01140026
IVCORR = 1 01150026
WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01160026
6671 CONTINUE 01170026
IVTNUM = 667 01180026
C 01190026
C **** TEST 667 **** 01200026
C SUBROUTINE CALL - ARGUMENT NAME SAME AS INTERNAL VARIABLE IN 01210026
C SUBROUTINE. 01220026
C 01230026
IF (ICZERO) 36670, 6670, 36670 01240026
6670 CONTINUE 01250026
IVON02 = 2 01260026
CALL FS027(IVON02) 01270026
IVCOMP = IVON02 01280026
GO TO 46670 01290026
36670 IVDELE = IVDELE + 1 01300026
WRITE (I02,80003) IVTNUM 01310026
IF (ICZERO) 46670, 6681, 46670 01320026
46670 IF (IVCOMP - 3) 26670,16670,26670 01330026
16670 IVPASS = IVPASS + 1 01340026
WRITE (I02,80001) IVTNUM 01350026
GO TO 6681 01360026
26670 IVFAIL = IVFAIL + 1 01370026
IVCORR = 3 01380026
WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01390026
6681 CONTINUE 01400026
IVTNUM = 668 01410026
C 01420026
C **** TEST 668 **** 01430026
C SUBROUTINE CALL - ARGUMENT NAME DIFFERENT FROM SUBROUTINE ARGUMENT01440026
C AND INTERNAL VARIABLE. 01450026
C 01460026
IF (ICZERO) 36680, 6680, 36680 01470026
6680 CONTINUE 01480026
IVON01 = 7 01490026
IVON03 = -12 01500026
CALL FS027(IVON03) 01510026
IVCOMP = IVON03 01520026
GO TO 46680 01530026
36680 IVDELE = IVDELE + 1 01540026
WRITE (I02,80003) IVTNUM 01550026
IF (ICZERO) 46680, 6691, 46680 01560026
46680 IF (IVCOMP + 11 ) 26680,16680,26680 01570026
16680 IVPASS = IVPASS + 1 01580026
WRITE (I02,80001) IVTNUM 01590026
GO TO 6691 01600026
26680 IVFAIL = IVFAIL + 1 01610026
IVCORR = -11 01620026
WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01630026
6691 CONTINUE 01640026
IVTNUM = 669 01650026
C 01660026
C **** TEST 669 **** 01670026
C REPEATED SUBROUTINE CALLS IN A DO LOOP. 01680026
C 01690026
IF (ICZERO) 36690, 6690, 36690 01700026
6690 CONTINUE 01710026
IVCOMP = 0 01720026
DO 6692 IVON04 = 1,5 01730026
CALL FS027 (IVCOMP) 01740026
6692 CONTINUE 01750026
GO TO 46690 01760026
36690 IVDELE = IVDELE + 1 01770026
WRITE (I02,80003) IVTNUM 01780026
IF (ICZERO) 46690, 6701, 46690 01790026
46690 IF (IVCOMP - 5) 26690,16690,26690 01800026
16690 IVPASS = IVPASS + 1 01810026
WRITE (I02,80001) IVTNUM 01820026
GO TO 6701 01830026
26690 IVFAIL = IVFAIL + 1 01840026
IVCORR = 5 01850026
WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01860026
C **** END OF TESTS **** 01870026
6701 CONTINUE 01880026
C 01890026
C WRITE PAGE FOOTINGS AND RUN SUMMARIES 01900026
99999 CONTINUE 01910026
WRITE (I02,90002) 01920026
WRITE (I02,90006) 01930026
WRITE (I02,90002) 01940026
WRITE (I02,90002) 01950026
WRITE (I02,90007) 01960026
WRITE (I02,90002) 01970026
WRITE (I02,90008) IVFAIL 01980026
WRITE (I02,90009) IVPASS 01990026
WRITE (I02,90010) IVDELE 02000026
C 02010026
C 02020026
C TERMINATE ROUTINE EXECUTION 02030026
STOP 02040026
C 02050026
C FORMAT STATEMENTS FOR PAGE HEADERS 02060026
90000 FORMAT ("1") 02070026
90002 FORMAT (" ") 02080026
90001 FORMAT (" ",10X,"FORTRAN COMPILER VALIDATION SYSTEM" ) 02090026
90003 FORMAT (" ",21X,"VERSION 2.1" ) 02100026
90004 FORMAT (" ",10X,"FOR OFFICIAL USE ONLY - COPYRIGHT 1978" ) 02110026
90005 FORMAT (" ",5X,"TEST",5X,"PASS/FAIL", 5X,"COMPUTED",8X,"CORRECT") 02120026
90006 FORMAT (" ",5X,"----------------------------------------------" ) 02130026
90011 FORMAT (" ",18X,"SUBSET LEVEL TEST" ) 02140026
C 02150026
C FORMAT STATEMENTS FOR RUN SUMMARIES 02160026
90008 FORMAT (" ",15X,I5," ERRORS ENCOUNTERED" ) 02170026
90009 FORMAT (" ",15X,I5," TESTS PASSED" ) 02180026
90010 FORMAT (" ",15X,I5," TESTS DELETED" ) 02190026
C 02200026
C FORMAT STATEMENTS FOR TEST RESULTS 02210026
80001 FORMAT (" ",4X,I5,7X,"PASS") 02220026
80002 FORMAT (" ",4X,I5,7X,"FAIL") 02230026
80003 FORMAT (" ",4X,I5,7X,"DELETED") 02240026
80004 FORMAT (" ",4X,I5,7X,"FAIL",10X,I6,9X,I6) 02250026
80005 FORMAT (" ",4X,I5,7X,"FAIL",4X,E12.5,3X,E12.5) 02260026
C 02270026
90007 FORMAT (" ",20X,"END OF PROGRAM FM026" ) 02280026
END 02290026
SUBROUTINE FS027(IVON01) 00010027
C COMMENT SECTION 00020027
C 00030027
C FS027 00040027
C 00050027
C THIS SUBROUTINE IS CALLED BY THE MAIN PROGRAM FM026. THE 00060027
C SUBROUTINE ARGUMENT IS INCREMENTED BY 1 AND CONTROL RETURNED 00070027
C TO THE CALLING PROGRAM. 00080027
C 00090027
C REFERENCES 00100027
C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, 00110027
C X3.9-1978 00120027
C 00130027
C SECTION 15.6, SUBROUTINES 00140027
C SECTION 15.8, RETURN STATEMENT 00150027
C 00160027
C TEST SECTION 00170027
C 00180027
C SUBROUTINE SUBPROGRAM 00190027
C 00200027
C INCREMENT ARGUMENT BY 1 AND RETURN TO CALLING PROGRAM. 00210027
C 00220027
IVON02 = IVON01 00230027
IVON02 = IVON02 + 1 00240027
IVON01 = IVON02 00250027
IVON02 = 300 00260027
RETURN 00270027
END 00280027