blob: 812d0b64ca5681f2885ad71e220eea1915fa7d9b [file] [log] [blame]
PROGRAM FM028
C COMMENT SECTION 00010028
C 00020028
C FM028 00030028
C 00040028
C THIS ROUTINE CONTAINS THE EXTERNAL FUNCTION REFERENCE TESTS. 00050028
C THE FUNCTION SUBPROGRAM FF029 IS CALLED BY THIS PROGRAM. THE 00060028
C FUNCTION SUBPROGRAM FF029 INCREMENTS THE CALLING ARGUMENT BY 1 00070028
C AND RETURNS TO THE CALLING PROGRAM. 00080028
C 00090028
C EXECUTION OF AN EXTERNAL FUNCTION REFERENCE RESULTS IN AN 00100028
C ASSOCIATION OF ACTUAL ARGUMENTS WITH ALL APPEARANCES OF DUMMY 00110028
C ARGUMENTS IN THE DEFINING SUBPROGRAM. FOLLOWING THESE 00120028
C ASSOCIATIONS, EXECUTION OF THE FIRST EXECUTABLE STATEMENT OF THE 00130028
C DEFINING SUBPROGRAM IS UNDERTAKEN. 00140028
C 00150028
C REFERENCES 00160028
C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, 00170028
C X3.9-1978 00180028
C 00190028
C SECTION 15.5.2, REFERENCING AN EXTERNAL FUNCTION 00200028
C 00210028
INTEGER FF029 00220028
C 00230028
C 00240028
C ********************************************************** 00250028
C 00260028
C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE 00270028
C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN NATIONAL STANDARD 00280028
C PROGRAMMING LANGUAGE FORTRAN X3.9-1978, HAS BEEN DEVELOPED BY THE 00290028
C FEDERAL COBOL COMPILER TESTING SERVICE. THE FORTRAN COMPILER 00300028
C VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT ROUTINES, THEIR RELATED00310028
C DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT ROUTINE IS A FORTRAN 00320028
C PROGRAM, SUBPROGRAM OR FUNCTION WHICH INCLUDES TESTS OF SPECIFIC 00330028
C LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING THE RESULT 00340028
C OF EXECUTING THESE TESTS. 00350028
C 00360028
C THIS PARTICULAR PROGRAM/SUBPROGRAM/FUNCTION CONTAINS FEATURES 00370028
C FOUND ONLY IN THE SUBSET AS DEFINED IN X3.9-1978. 00380028
C 00390028
C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO - 00400028
C 00410028
C NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY 00420028
C SOFTWARE STANDARDS VALIDATION GROUP 00430028
C BUILDING 225 RM A266 00440028
C GAITHERSBURG, MD 20899 00450028
C ********************************************************** 00460028
C 00470028
C 00480028
C 00490028
C INITIALIZATION SECTION 00500028
C 00510028
C INITIALIZE CONSTANTS 00520028
C ************** 00530028
C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. 00540028
I01 = 5 00550028
C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. 00560028
I02 = 6 00570028
C SYSTEM ENVIRONMENT SECTION 00580028
C 00590028
CX010 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-010 CONTROL CARD. 00600028
C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 00610028
C (UNIT NUMBER FOR CARD READER). 00620028
CX011 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-011 CONTROL CARD. 00630028
C THE CX011 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00640028
C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX010 ABOVE. 00650028
C 00660028
CX020 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-020 CONTROL CARD. 00670028
C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02 = 6 00680028
C (UNIT NUMBER FOR PRINTER). 00690028
CX021 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-021 CONTROL CARD. 00700028
C THE CX021 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00710028
C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX020 ABOVE. 00720028
C 00730028
IVPASS=0 00740028
IVFAIL=0 00750028
IVDELE=0 00760028
ICZERO=0 00770028
C 00780028
C WRITE PAGE HEADERS 00790028
WRITE (I02,90000) 00800028
WRITE (I02,90001) 00810028
WRITE (I02,90002) 00820028
WRITE (I02, 90002) 00830028
WRITE (I02,90003) 00840028
WRITE (I02,90002) 00850028
WRITE (I02,90004) 00860028
WRITE (I02,90002) 00870028
WRITE (I02,90011) 00880028
WRITE (I02,90002) 00890028
WRITE (I02,90002) 00900028
WRITE (I02,90005) 00910028
WRITE (I02,90006) 00920028
WRITE (I02,90002) 00930028
C 00940028
C TEST SECTION 00950028
C 00960028
C EXTERNAL FUNCTION REFERENCE 00970028
C 00980028
C EXTERNAL FUNCTION REFERENCE - ARGUMENT NAME SAME AS SUBPROGRAM 00990028
C ARGUMENT NAME. 01000028
6701 CONTINUE 01010028
IVTNUM = 670 01020028
C 01030028
C **** TEST 670 **** 01040028
C 01050028
IF (ICZERO) 36700,6700,36700 01060028
6700 CONTINUE 01070028
IVON01 = 0 01080028
IVCOMP = FF029(IVON01) 01090028
GO TO 46700 01100028
36700 IVDELE = IVDELE + 1 01110028
WRITE (I02,80003) IVTNUM 01120028
IF (ICZERO) 46700,6711,46700 01130028
46700 IF (IVCOMP - 1) 26700,16700,26700 01140028
16700 IVPASS = IVPASS + 1 01150028
WRITE (I02,80001) IVTNUM 01160028
GO TO 6711 01170028
26700 IVFAIL = IVFAIL + 1 01180028
IVCORR = 1 01190028
WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 01200028
6711 CONTINUE 01210028
IVTNUM = 671 01220028
C 01230028
C **** TEST 671 **** 01240028
C 01250028
C EXTERNAL FUNCTION REFERENCE - ARGUMENT NAME SAME AS INTERNAL 01260028
C VARIABLE IN FUNCTION SUBPROGRAM. 01270028
C 01280028
IF (ICZERO) 36710,6710,36710 01290028
6710 CONTINUE 01300028
IVON02 = 2 01310028
IVON01 = 5 01320028
IVCOMP = FF029(IVON02) 01330028
GO TO 46710 01340028
36710 IVDELE = IVDELE + 1 01350028
WRITE (I02,80003) IVTNUM 01360028
IF (ICZERO) 46710,6721,46710 01370028
46710 IF (IVCOMP - 3) 26710,16710,26710 01380028
16710 IVPASS = IVPASS + 1 01390028
WRITE (I02,80001) IVTNUM 01400028
GO TO 6721 01410028
26710 IVFAIL = IVFAIL + 1 01420028
IVCORR = 3 01430028
WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 01440028
6721 CONTINUE 01450028
IVTNUM = 672 01460028
C 01470028
C **** TEST 672 **** 01480028
C 01490028
C EXTERNAL FUNCTION REFERENCE - ARGUMENT NAME DIFFERENT FROM 01500028
C FUNCTION SUBPROGRAM ARGUMENT AND INTERNAL VARIABLE. 01510028
C 01520028
IF (ICZERO) 36720,6720,36720 01530028
6720 CONTINUE 01540028
IVON01 = 7 01550028
IVON03 = -12 01560028
IVCOMP = FF029(IVON03) 01570028
GO TO 46720 01580028
36720 IVDELE = IVDELE + 1 01590028
WRITE (I02,80003) IVTNUM 01600028
IF (ICZERO) 46720,6731,46720 01610028
46720 IF (IVCOMP + 11) 26720,16720,26720 01620028
16720 IVPASS = IVPASS + 1 01630028
WRITE (I02,80001) IVTNUM 01640028
GO TO 6731 01650028
26720 IVFAIL = IVFAIL + 1 01660028
IVCORR = -11 01670028
WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 01680028
6731 CONTINUE 01690028
IVTNUM = 673 01700028
C 01710028
C **** TEST 673 **** 01720028
C 01730028
C REPEATED EXTERNAL FUNCTION REFERENCE IN A DO LOOP. 01740028
C 01750028
IF (ICZERO) 36730,6730,36730 01760028
6730 CONTINUE 01770028
IVON01 = -7 01780028
IVCOMP = 0 01790028
DO 6732 IVON04 = 1,5 01800028
IVCOMP = FF029(IVCOMP) 01810028
6732 CONTINUE 01820028
GO TO 46730 01830028
36730 IVDELE = IVDELE + 1 01840028
WRITE (I02,80003) IVTNUM 01850028
IF (ICZERO) 46730,6741,46730 01860028
46730 IF (IVCOMP - 5) 26730,16730,26730 01870028
16730 IVPASS = IVPASS + 1 01880028
WRITE (I02,80001) IVTNUM 01890028
GO TO 6741 01900028
26730 IVFAIL = IVFAIL + 1 01910028
IVCORR = 5 01920028
WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 01930028
6741 CONTINUE 01940028
C 01950028
C WRITE PAGE FOOTINGS AND RUN SUMMARIES 01960028
99999 CONTINUE 01970028
WRITE (I02,90002) 01980028
WRITE (I02,90006) 01990028
WRITE (I02,90002) 02000028
WRITE (I02,90002) 02010028
WRITE (I02,90007) 02020028
WRITE (I02,90002) 02030028
WRITE (I02,90008) IVFAIL 02040028
WRITE (I02,90009) IVPASS 02050028
WRITE (I02,90010) IVDELE 02060028
C 02070028
C 02080028
C TERMINATE ROUTINE EXECUTION 02090028
STOP 02100028
C 02110028
C FORMAT STATEMENTS FOR PAGE HEADERS 02120028
90000 FORMAT ("1") 02130028
90002 FORMAT (" ") 02140028
90001 FORMAT (" ",10X,"FORTRAN COMPILER VALIDATION SYSTEM" ) 02150028
90003 FORMAT (" ",21X,"VERSION 2.1" ) 02160028
90004 FORMAT (" ",10X,"FOR OFFICIAL USE ONLY - COPYRIGHT 1978" ) 02170028
90005 FORMAT (" ",5X,"TEST",5X,"PASS/FAIL", 5X,"COMPUTED",8X,"CORRECT") 02180028
90006 FORMAT (" ",5X,"----------------------------------------------" ) 02190028
90011 FORMAT (" ",18X,"SUBSET LEVEL TEST" ) 02200028
C 02210028
C FORMAT STATEMENTS FOR RUN SUMMARIES 02220028
90008 FORMAT (" ",15X,I5," ERRORS ENCOUNTERED" ) 02230028
90009 FORMAT (" ",15X,I5," TESTS PASSED" ) 02240028
90010 FORMAT (" ",15X,I5," TESTS DELETED" ) 02250028
C 02260028
C FORMAT STATEMENTS FOR TEST RESULTS 02270028
80001 FORMAT (" ",4X,I5,7X,"PASS") 02280028
80002 FORMAT (" ",4X,I5,7X,"FAIL") 02290028
80003 FORMAT (" ",4X,I5,7X,"DELETED") 02300028
80004 FORMAT (" ",4X,I5,7X,"FAIL",10X,I6,9X,I6) 02310028
80005 FORMAT (" ",4X,I5,7X,"FAIL",4X,E12.5,3X,E12.5) 02320028
C 02330028
90007 FORMAT (" ",20X,"END OF PROGRAM FM028" ) 02340028
END 02350028
INTEGER FUNCTION FF029(IVON01) 00010029
C 00020029
C COMMENT SECTION 00030029
C FF029 00040029
C 00050029
C THIS FUNCTION SUBPROGRAM IS CALLED BY THE MAIN PROGRAM FM028. 00060029
C THE FUNCTION ARGUMENT IS INCREMENTED BY 1 AND CONTROL RETURNED 00070029
C TO THE CALLING PROGRAM. 00080029
C 00090029
C REFERENCES 00100029
C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, 00110029
C X3.9-1978 00120029
C 00130029
C SECTION 15.5.1, DEFINING FUNCTION SUBPROGRAMS AND FUNCTION 00140029
C STATEMENTS 00150029
C SECTION 15.8, RETURN STATEMENT 00160029
C 00170029
C TEST SECTION 00180029
C 00190029
C FUNCTION SUBPROGRAM 00200029
C 00210029
C INCREMENT ARGUMENT BY 1 AND RETURN TO CALLING PROGRAM. 00220029
C 00230029
IVON02 = IVON01 00240029
FF029 = IVON02 + 1 00250029
IVON02 = 500 00260029
RETURN 00270029
END 00280029