C COMMENT SECTION. C C FM010 C C THIS ROUTINE TESTS REFERENCE FORMAT OF FORTRAN STATEMENTS C AND STATEMENT NUMBERS. THE USE OF THE BLANK CHARACTER IS TESTED C BOTH WITHIN THE STATEMENT NUMBER FIELD AND WITHIN THE FORTRAN C STATEMENTS THEMSELVES. LEADING ZERO IS TESTED FOR STATEMENTS AND C INTEGER CONSTANTS. VARIABLE NAMES WHICH LOOK VERY MUCH LIKE C FORTRAN RESERVED WORDS ARE TESTED IN ARITHMETIC ASSIGNMENT C STATEMENTS. NAMING CONVENTIONS USED THROUGHOUT THE FCVS ARE C TESTED ALSO IN ARITHMETIC ASSIGNMENT STATEMENTS. C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 2.5, VARIABLES C SECTION 3.1.6, BLANK CHARACTER C SECTION 3.2.2, INITIAL LINES C SECTION 3.4, STATEMENT LABELS C 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) 1001 CONTINUE IVTNUM = 100 C C **** TEST 100 **** C C TEST 100 - TO CHECK THE VARIOUS COMBINATIONS OF FORMING VARIABLE C NAMES. THESE ARE ACTUALLY SYMBOLIC NAMES (ANSI X3.9-1978 C SECTION 2.2). THIS IS BASICALLY A SYNTAX CHECK USING A C COMBINATION OF FROM ONE TO SIX ALPHANUMERIC CHARACTERS WITH C THE FIRST CHARACTER ALWAYS ALPHABETIC. REFERENCE FORMAT IS C ALSO CHECKED BY HAVING EACH ASSIGNMENT STATEMENT AN INITIAL C LINE (SECTION 3.2.2). THIS MEANS ZERO MAY APPEAR IN COLUMN C SIX WITHOUT EFFECT, THAT LINES MAY BEGIN ANYWHERE FROM C COLUMN SEVEN TO COLUMN 72, AND BLANKS MAY BE USED FREELY C WITHOUT MEANING (3.1.6 BLANK CHARACTERS). C IF (ICZERO) 31000, 1000, 31000 1000 CONTINUE A=1. B =2. C =3. D =4. E =5. F =6. 0G = 7. H=8. I=9 J = 10 K = 11 L = 12 0M=13 N=14 O=15. P=16. Q=17. R=18. S=19. T=20. U=21. V=22. W=23. X=24. Y=25. Z=26. AAAAAA=27. BBBBB=28. CCCC=29. DDD=30 EE=31. F0=32. G12=33. H345 = 34. I6789 = 35 J01234 = 36 K 5 6 78 9=37 L 2 L 2 L 2 =38 M 3 M 3 M3 = 39 N 40 = 4 0 0 OMY = 4 1. I PM H = 4 2 GO TO 1 = 4 3. IF 3 = 44 DO 3 = 53. CALL FL =62. TYPE I = 63. TRUE =71. FALSE = 72. GO TO 41000 31000 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41000, 1011, 41000 41000 IF (IPMH - 42) 21000,11000,21000 11000 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1011 21000 IVFAIL = IVFAIL + 1 IVCOMP = IPMH IVCORR = 42 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1011 CONTINUE IVTNUM = 101 C C **** TEST 101 **** C TEST 101 - CHECKS THE FCVS NAMING CONVENTIONS FOR INTEGER AND C REAL VARIABLES IN ASSIGNMENT STATEMENTS: VARIABLE = CONSTANT C BASICALLY A SYNTAX CHECK ON SIX CHARACTER VARIABLE NAMES. C IF (ICZERO) 31010, 1010, 31010 1010 CONTINUE IACE11 = 1 IACE21 = 2 IACE31 = 3 IACN11 = 4 IADN11 = 5 IATE31 = 6 RACE11 = 7. RACE21 = 8. RACN31 = 9. RADE31 = 10. IVTE69 = 11 IVON78 = 12 RVTNAZ = 13. RVOEZ9 = 14. ICTE96 = 15 ICON84 = 16 RCON48 = 17. RCTE54 = 18. IDONY4 = 19 IDOEB6 = 20 RDON46 = 21. IFONS3 = 22 RFON77 = 23. GO TO 41010 31010 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41010, 1021, 41010 41010 IF (IVTE69 - 11) 21010,11010,21010 11010 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1021 21010 IVFAIL = IVFAIL + 1 IVCOMP = IVTE69 IVCORR = 11 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1021 CONTINUE IVTNUM = 102 C C **** TEST 102 **** C TEST 102 - REFERENCE FORMAT CHECK ON STATEMENT LABELS (SECTION C 3.4). THESE ARE NON-ZERO INTEGERS, FROM 1 TO 5 DIGITS, C MAY BEGIN ANYWHERE FROM COLS. 1 TO 5, AND LEADING ZEROS ARE C NOT SIGNIFICANT. BLANKS WILL BE IMBEDDED IN SOME OF THE C STATEMENT LABELS AND THESE SHOULD HAVE NO EFFECT. THE C CONTINUE STATEMENT (SECTION 11.11) IS USED FOR THIS TEST. C A BASIC FCVS ASSUMPTION IS THAT THE LOGIC WILL FALL THRU A C SERIES OF CONTINUE STATEMENTS (NORMAL EXECUTION SEQUENCE). C IF (ICZERO) 31020, 1020, 31020 1020 CONTINUE 1 CONTINUE 2 CONTINUE 3 CONTINUE 4 CONTINUE 5 CONTINUE 06 CONTINUE 007 CONTINUE 0008 CONTINUE 00009 CONTINUE 010 CONTINUE 1 1 CONTINUE 0 12 CONTINUE 0 1 3 CONTINUE 00 14 CONTINUE 0 15 CONTINUE 0 016 CONTINUE 100 CONTINUE 1 0 1 CONTINUE 10 2 IVON01 = 1 1 03 CONTINUE 1 04 CONTINUE 01 05 CONTINUE 010 6 CONTINUE 0107 CONTINUE 00108 CONTINUE 1 1 1 CONTINUE 1 111 CONTINUE 99 CONTINUE 9 9 9 CONTINUE 99 99 CONTINUE GO TO 41020 31020 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41020, 1031, 41020 41020 IF (IVON01 - 1) 21020,11020,21020 11020 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1031 21020 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1031 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 FM010) END