FM306.f Source File


Contents

Source Code


Source Code

      PROGRAM FM306                                                     00010306
C                                                                       00020306
C                                                                       00030306
C          THIS ROUTINE TESTS THE USE OF THE SUBSET LEVEL FEATURES OF   00040306
C     THE IMPLICIT SPECIFICATION STATEMENT.  THE DEFAULT IMPLIED INTEGER00050306
C     AND REAL TYPING IS EITHER CONFIRMED OR OVERRIDDEN TO SPECIFY      00060306
C     INTEGER, REAL AND LOGICAL TYPING.  ALL 26 ALPHABETIC LETTERS ARE  00070306
C     USED TO INDICATE THE IMPLICIT TYPING.  VARIABLE AND ARRAY         00080306
C     ENTITIES ARE USED TO TEST THE ACTUAL TYPING.  THE SUBSET LEVEL    00090306
C     FEATURES OF THE IMPLICIT STATEMENT ARE ALSO TESTED IN ROUTINES    00100306
C     FM201 AND FM251.                                                  00110306
C                                                                       00120306
C     REFERENCES.                                                       00130306
C        AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN,       00140306
C           X3.9-1978                                                   00150306
C                                                                       00160306
C        SECTION 4.1.2, TYPE RULES FOR DATA AND PROCEDURE IDENTIFIERS.  00170306
C        SECTION 8.5,   IMPLICIT STATEMENT                              00180306
C                                                                       00190306
C                                                                       00200306
C     ******************************************************************00210306
C         A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE         00220306
C     BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN STANDARD FORTRAN   00230306
C     X3.9-1978, HAS BEEN DEVELOPED BY THE DEPARTMENT OF THE NAVY.  THE 00240306
C     FORTRAN COMPILER VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT       00250306
C     ROUTINES, THEIR RELATED DATA, AND AN EXECUTIVE SYSTEM.  EACH AUDIT00260306
C     ROUTINE IS A FORTRAN PROGRAM OR SUBPROGRAM WHICH INCLUDES TESTS   00270306
C     OF SPECIFIC LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING00280306
C     THE RESULT OF EXECUTING THESE TESTS.                              00290306
C                                                                       00300306
C     THIS PARTICULAR PROGRAM OR SUBPROGRAM CONTAINS ONLY FEATURES      00310306
C     FOUND IN THE SUBSET LEVEL OF THE STANDARD.                        00320306
C                                                                       00330306
C           SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO             00340306
C              NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY           00350306
C                   SOFTWARE STANDARDS VALIDATION GROUP                 00360306
C                          BUILDING 225  RM A266                        00370306
C                         GAITHERSBURG, MD  20899                       00380306
C     ******************************************************************00390306
C                                                                       00400306
C                                                                       00410306
      IMPLICIT LOGICAL (L)                                              00420306
      IMPLICIT CHARACTER*14 (C)                                         00430306
C                                                                       00440306
      IMPLICIT INTEGER (A)                                              00450306
      IMPLICIT LOGICAL (B)                                              00460306
      IMPLICIT INTEGER (D,E,F)                                          00470306
      IMPLICIT REAL (G-H)                                               00480306
      IMPLICIT INTEGER (I)                                              00490306
      IMPLICIT REAL (J)                                                 00500306
      IMPLICIT INTEGER (K,O-Q)                                          00510306
      IMPLICIT REAL (M), REAL (N)                                       00520306
      IMPLICIT REAL (R)                                                 00530306
      IMPLICIT REAL (S), INTEGER (T-V)                                  00540306
      IMPLICIT INTEGER (W), REAL (X), LOGICAL (Y), INTEGER (Z)          00550306
      DIMENSION AAIN11(5)                                               00560306
      DIMENSION HAIN11(5)                                               00570306
C                                                                       00580306
C                                                                       00590306
C                                                                       00600306
C     INITIALIZATION SECTION.                                           00610306
C                                                                       00620306
C     INITIALIZE CONSTANTS                                              00630306
C     ********************                                              00640306
C     I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER          00650306
      I01 = 5                                                           00660306
C     I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER              00670306
      I02 = 6                                                           00680306
C     SYSTEM ENVIRONMENT SECTION                                        00690306
C                                                                       00700306
CX010     THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-010 CONTROL CARD.00710306
C     THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5      00720306
C     (UNIT NUMBER FOR CARD READER).                                    00730306
CX011      THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-011 CONTROL CARD00740306
C     THE CX011 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL            00750306
C     FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX010 ABOVE.         00760306
C                                                                       00770306
CX020     THIS CARD IS PEPLACED BY CONTENTS OF FEXEC X-020 CONTROL CARD.00780306
C     THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02 = 6      00790306
C     (UNIT NUMBER FOR PRINTER).                                        00800306
CX021     THIS CARD IS PEPLACED BY CONTENTS OF FEXEC X-021 CONTROL CARD.00810306
C     THE CX021 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL            00820306
C     FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX020 ABOVE.         00830306
C                                                                       00840306
      IVPASS = 0                                                        00850306
      IVFAIL = 0                                                        00860306
      IVDELE = 0                                                        00870306
      ICZERO = 0                                                        00880306
C                                                                       00890306
C     WRITE OUT PAGE HEADERS                                            00900306
C                                                                       00910306
      WRITE (I02,90002)                                                 00920306
      WRITE (I02,90006)                                                 00930306
      WRITE (I02,90008)                                                 00940306
      WRITE (I02,90004)                                                 00950306
      WRITE (I02,90010)                                                 00960306
      WRITE (I02,90004)                                                 00970306
      WRITE (I02,90016)                                                 00980306
      WRITE (I02,90001)                                                 00990306
      WRITE (I02,90004)                                                 01000306
      WRITE (I02,90012)                                                 01010306
      WRITE (I02,90014)                                                 01020306
      WRITE (I02,90004)                                                 01030306
C                                                                       01040306
C                                                                       01050306
C     ****  FCVS PROGRAM 306  -  TEST 001  ****                         01060306
C                                                                       01070306
C     TEST 001 IS DESIGNED TO CONFIRM IMPLICIT INTEGER TYPING.          01080306
C                                                                       01090306
      IVTNUM =   1                                                      01100306
      IF (ICZERO) 30010, 0010, 30010                                    01110306
 0010 CONTINUE                                                          01120306
      RVCOMP = 10.0                                                     01130306
      IVIN01 = 4                                                        01140306
      RVCOMP = IVIN01 / 5                                               01150306
      RVCORR = 0.0                                                      01160306
40010 IF (RVCOMP) 20010, 10010, 20010                                   01170306
30010 IVDELE = IVDELE + 1                                               01180306
      WRITE (I02,80000) IVTNUM                                          01190306
      IF (ICZERO) 10010, 0021, 20010                                    01200306
10010 IVPASS = IVPASS + 1                                               01210306
      WRITE (I02,80002) IVTNUM                                          01220306
      GO TO 0021                                                        01230306
20010 IVFAIL = IVFAIL + 1                                               01240306
      WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR                          01250306
 0021 CONTINUE                                                          01260306
C                                                                       01270306
C     ****  FCVS PROGRAM 306  -  TEST 002  ****                         01280306
C                                                                       01290306
C     TEST 002 IS DESIGNED TO CONFIRM IMPLICIT REAL TYPING.             01300306
C                                                                       01310306
      IVTNUM =   2                                                      01320306
      IF (ICZERO) 30020, 0020, 30020                                    01330306
 0020 CONTINUE                                                          01340306
      RVCOMP = 10.0                                                     01350306
      RVIN01 = 4                                                        01360306
      RVCOMP = RVIN01/5                                                 01370306
      RVCORR = .8                                                       01380306
40020 IF (RVCOMP - .79995) 20020, 10020, 40021                          01390306
40021 IF (RVCOMP - .80005) 10020, 10020, 20020                          01400306
30020 IVDELE = IVDELE + 1                                               01410306
      WRITE (I02,80000) IVTNUM                                          01420306
      IF (ICZERO) 10020, 0031, 20020                                    01430306
10020 IVPASS = IVPASS + 1                                               01440306
      WRITE (I02,80002) IVTNUM                                          01450306
      GO TO 0031                                                        01460306
20020 IVFAIL = IVFAIL + 1                                               01470306
      WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR                          01480306
 0031 CONTINUE                                                          01490306
C                                                                       01500306
C     ****  FCVS PROGRAM 306  -  TEST 003  ****                         01510306
C                                                                       01520306
C     TEST 003 IS DESIGNED TO OVERRIDE IMPLICIT DEFAULT TYPING OF       01530306
C     INTEGER WITH IMPLICIT TYPING OF REAL.                             01540306
C                                                                       01550306
      IVTNUM =   3                                                      01560306
      IF (ICZERO) 30030, 0030, 30030                                    01570306
 0030 CONTINUE                                                          01580306
      RVCOMP = 10.0                                                     01590306
      JVIN01 = 4                                                        01600306
      RVCOMP = JVIN01/5                                                 01610306
      RVCORR = .8                                                       01620306
40030 IF (RVCOMP - .79995) 20030, 10030, 40031                          01630306
40031 IF (RVCOMP - .80005) 10030, 10030, 20030                          01640306
30030 IVDELE = IVDELE + 1                                               01650306
      WRITE (I02,80000) IVTNUM                                          01660306
      IF (ICZERO) 10030, 0041, 20030                                    01670306
10030 IVPASS = IVPASS + 1                                               01680306
      WRITE (I02,80002) IVTNUM                                          01690306
      GO TO 0041                                                        01700306
20030 IVFAIL = IVFAIL + 1                                               01710306
      WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR                          01720306
 0041 CONTINUE                                                          01730306
C                                                                       01740306
C     ****  FCVS PROGRAM 306  -  TEST 004  ****                         01750306
C                                                                       01760306
C     TEST 004 IS DESIGNED TO OVERRIDE IMPLICIT DEFAULT TYPING OF       01770306
C     INTEGER WITH IMPLICIT TYPING OF LOGICAL.                          01780306
C                                                                       01790306
      IVTNUM =   4                                                      01800306
      IF (ICZERO) 30040, 0040, 30040                                    01810306
 0040 CONTINUE                                                          01820306
      LVIN01 = .TRUE.                                                   01830306
      IVCORR = 1                                                        01840306
      IVCOMP = 0                                                        01850306
      IF (LVIN01) IVCOMP = 1                                            01860306
40040 IF (IVCOMP - 1) 20040, 10040, 20040                               01870306
30040 IVDELE = IVDELE + 1                                               01880306
      WRITE (I02,80000) IVTNUM                                          01890306
      IF (ICZERO) 10040, 0051, 20040                                    01900306
10040 IVPASS = IVPASS + 1                                               01910306
      WRITE (I02,80002) IVTNUM                                          01920306
      GO TO 0051                                                        01930306
20040 IVFAIL = IVFAIL + 1                                               01940306
      WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR                          01950306
 0051 CONTINUE                                                          01960306
C                                                                       01970306
C     ****  FCVS PROGRAM 306  -  TEST 005  ****                         01980306
C                                                                       01990306
C     TEST 005 IS DESIGNED TO OVERRIDE IMPLICIT DEFAULT TYPING OF       02000306
C     REAL WITH IMPLICIT TYPING OF INTEGER.                             02010306
C                                                                       02020306
      IVTNUM =   5                                                      02030306
      IF (ICZERO) 30050, 0050, 30050                                    02040306
 0050 CONTINUE                                                          02050306
      RVCOMP = 10.0                                                     02060306
      AAIN11(2) = 4                                                     02070306
      RVCOMP = AAIN11(2)/5                                              02080306
      RVCORR = 0.0                                                      02090306
40050 IF (RVCOMP) 20050, 10050, 20050                                   02100306
30050 IVDELE = IVDELE + 1                                               02110306
      WRITE (I02,80000) IVTNUM                                          02120306
      IF (ICZERO) 10050, 0061, 20050                                    02130306
10050 IVPASS = IVPASS + 1                                               02140306
      WRITE (I02,80002) IVTNUM                                          02150306
      GO TO 0061                                                        02160306
20050 IVFAIL = IVFAIL + 1                                               02170306
      WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR                          02180306
 0061 CONTINUE                                                          02190306
C                                                                       02200306
C     ****  FCVS PROGRAM 306  -  TEST 006  ****                         02210306
C                                                                       02220306
C     TEST 006 IS DESIGNED TO OVERRIDE IMPLICIT DEFAULT TYPING OF REAL  02230306
C     WITH IMPLICIT TYPING OF LOGICAL.                                  02240306
C                                                                       02250306
      IVTNUM =   6                                                      02260306
      IF (ICZERO) 30060, 0060, 30060                                    02270306
 0060 CONTINUE                                                          02280306
      BVIN01 = .TRUE.                                                   02290306
      IVCORR = 1                                                        02300306
      IVCOMP = 0                                                        02310306
      IF (BVIN01) IVCOMP = 1                                            02320306
40060 IF (IVCOMP - 1) 20060, 10060, 20060                               02330306
30060 IVDELE = IVDELE + 1                                               02340306
      WRITE (I02,80000) IVTNUM                                          02350306
      IF (ICZERO) 10060, 0071, 20060                                    02360306
10060 IVPASS = IVPASS + 1                                               02370306
      WRITE (I02,80002) IVTNUM                                          02380306
      GO TO 0071                                                        02390306
20060 IVFAIL = IVFAIL + 1                                               02400306
      WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR                          02410306
 0071 CONTINUE                                                          02420306
C                                                                       02430306
C     TESTS 007 THROUGH 012 ARE DESIGNED TO TEST VARIOUS SYNTACTICAL    02440306
C     CONSTRUCTS OF THE IMPLICIT STATEMENT.                             02450306
C                                                                       02460306
C                                                                       02470306
C     ****  FCVS PROGRAM 306  -  TEST 007  ****                         02480306
C                                                                       02490306
C     TEST 007 TESTS THE SPECIFYING OF MORE THAN ONE ALPHABETIC         02500306
C     CHARACTER IN AN IMPLICIT STATEMENT.                               02510306
C                                                                       02520306
      IVTNUM =   7                                                      02530306
      IF (ICZERO) 30070, 0070, 30070                                    02540306
 0070 CONTINUE                                                          02550306
      DVIN01 = 4                                                        02560306
      EVIN01 = 4                                                        02570306
      FVIN01 = 4                                                        02580306
      RVCMP1 = DVIN01/5                                                 02590306
      RVCMP2 = EVIN01/5                                                 02600306
      RVCMP3 = FVIN01/5                                                 02610306
      IVCOMP = 1                                                        02620306
      IF (RVCMP1 .EQ. 0.0) IVCOMP = IVCOMP * 2                          02630306
      IF (RVCMP2 .EQ. 0.0) IVCOMP = IVCOMP * 3                          02640306
      IF (RVCMP3 .EQ. 0.0) IVCOMP = IVCOMP * 5                          02650306
      IVCORR = 30                                                       02660306
C     30 = 2 * 3 * 5                                                    02670306
40070 IF (IVCOMP -    30) 20070, 10070, 20070                           02680306
30070 IVDELE = IVDELE + 1                                               02690306
      WRITE (I02,80000) IVTNUM                                          02700306
      IF (ICZERO) 10070, 0081, 20070                                    02710306
10070 IVPASS = IVPASS + 1                                               02720306
      WRITE (I02,80002) IVTNUM                                          02730306
      GO TO 0081                                                        02740306
20070 IVFAIL = IVFAIL + 1                                               02750306
      WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR                          02760306
 0081 CONTINUE                                                          02770306
C                                                                       02780306
C     ****  FCVS PROGRAM 306  -  TEST 008  ****                         02790306
C                                                                       02800306
C     TEST 008 TESTS THE SPECIFYING A RANGE OF SINGLE LETTERS IN        02810306
C     ALPHABETIC ORDER IN AN IMPLICIT STATEMENT.                        02820306
C                                                                       02830306
      IVTNUM =   8                                                      02840306
      IF (ICZERO) 30080, 0080, 30080                                    02850306
 0080 CONTINUE                                                          02860306
      GVIN01 = 4                                                        02870306
      HAIN11(4) = 4                                                     02880306
      RVCMP1 = GVIN01/5                                                 02890306
      RVCMP2 = HAIN11(4)/5                                              02900306
      IVCOMP = 1                                                        02910306
      IF (RVCMP1 .GE. .79995 .AND. RVCMP1 .LE. .80005) IVCOMP=IVCOMP*2  02920306
      IF (RVCMP2 .GE. .79995 .AND. RVCMP2 .LE. .80005) IVCOMP=IVCOMP*3  02930306
      IVCORR = 6                                                        02940306
C     6 = 2 * 3                                                         02950306
40080 IF (IVCOMP - 6) 20080, 10080, 20080                               02960306
30080 IVDELE = IVDELE + 1                                               02970306
      WRITE (I02,80000) IVTNUM                                          02980306
      IF (ICZERO) 10080, 0091, 20080                                    02990306
10080 IVPASS = IVPASS + 1                                               03000306
      WRITE (I02,80002) IVTNUM                                          03010306
      GO TO 0091                                                        03020306
20080 IVFAIL = IVFAIL + 1                                               03030306
      WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR                          03040306
 0091 CONTINUE                                                          03050306
C                                                                       03060306
C     ****  FCVS PROGRAM 306  -  TEST 009  ****                         03070306
C                                                                       03080306
C     TEST 009 TESTS THE SPECIFYING A SINGLE LETTER AND A RANGE OF      03090306
C     SINGLE LETTERS IN ALPHABETIC ORDER IN AN IMPLICIT STATEMENT.      03100306
C                                                                       03110306
      IVTNUM =   9                                                      03120306
      IF (ICZERO) 30090, 0090, 30090                                    03130306
 0090 CONTINUE                                                          03140306
      KVIN01 = 4                                                        03150306
      OVIN01 = 4                                                        03160306
      PVIN01 = 4                                                        03170306
      QVIN01 = 4                                                        03180306
      RVCMP1 = KVIN01/5                                                 03190306
      RVCMP2 = OVIN01/5                                                 03200306
      RVCMP3 = PVIN01/5                                                 03210306
      RVCMP4 = QVIN01/5                                                 03220306
      IVCOMP = 1                                                        03230306
      IF (RVCMP1 .EQ. 0.0) IVCOMP = IVCOMP * 2                          03240306
      IF (RVCMP2 .EQ. 0.0) IVCOMP = IVCOMP * 3                          03250306
      IF (RVCMP3 .EQ. 0.0) IVCOMP = IVCOMP * 5                          03260306
      IF (RVCMP4 .EQ. 0.0) IVCOMP = IVCOMP * 7                          03270306
      IVCORR = 210                                                      03280306
C     210 = 2 * 3 * 5 * 7                                               03290306
40090 IF (IVCOMP - 210) 20090, 10090, 20090                             03300306
30090 IVDELE = IVDELE + 1                                               03310306
      WRITE (I02,80000) IVTNUM                                          03320306
      IF (ICZERO) 10090, 0101, 20090                                    03330306
10090 IVPASS = IVPASS + 1                                               03340306
      WRITE (I02,80002) IVTNUM                                          03350306
      GO TO 0101                                                        03360306
20090 IVFAIL = IVFAIL + 1                                               03370306
      WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR                          03380306
 0101 CONTINUE                                                          03390306
C                                                                       03400306
C     ****  FCVS PROGRAM 306  -  TEST 010  ****                         03410306
C                                                                       03420306
C     TEST 010 TESTS THE SPECIFYING OF MORE THAN ONE TYPING IN ONE      03430306
C     IMPLICIT STATEMENT.                                               03440306
C                                                                       03450306
      IVTNUM =  10                                                      03460306
      IF (ICZERO) 30100, 0100, 30100                                    03470306
 0100 CONTINUE                                                          03480306
      SVIN01 = 4                                                        03490306
      TVIN01 = 4                                                        03500306
      UVIN01 = 4                                                        03510306
      VVIN01 = 4                                                        03520306
      RVCMP1 = SVIN01/5                                                 03530306
      RVCMP2 = TVIN01/5                                                 03540306
      RVCMP3 = UVIN01/5                                                 03550306
      RVCMP4 = VVIN01/5                                                 03560306
      IVCOMP = 1                                                        03570306
      IF (RVCMP1 .GE. .79995 .AND. RVCMP1 .LE. .80005) IVCOMP=IVCOMP*2  03580306
      IF (RVCMP2 .EQ. 0.0) IVCOMP = IVCOMP * 3                          03590306
      IF (RVCMP3 .EQ. 0.0) IVCOMP = IVCOMP * 5                          03600306
      IF (RVCMP4 .EQ. 0.0) IVCOMP = IVCOMP * 7                          03610306
      IVCORR = 210                                                      03620306
C     210 = 2 * 3 * 5 * 7                                               03630306
      IF (IVCOMP - 210) 20100, 10100, 20100                             03640306
30100 IVDELE = IVDELE + 1                                               03650306
      WRITE (I02,80000) IVTNUM                                          03660306
      IF (ICZERO) 10100, 0111, 20100                                    03670306
10100 IVPASS = IVPASS + 1                                               03680306
      WRITE (I02,80002) IVTNUM                                          03690306
      GO TO 0111                                                        03700306
20100 IVFAIL = IVFAIL + 1                                               03710306
      WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR                          03720306
 0111 CONTINUE                                                          03730306
C                                                                       03740306
C     ****  FCVS PROGRAM 306  -  TEST 011  ****                         03750306
C                                                                       03760306
C     TEST 011 TESTS THE SPECIFYING OF INTEGER, REAL, AND LOGICAL       03770306
C     TYPING IN ONE IMPLICIT STATEMENT.  IN THIS TEST INTEGER TYPING    03780306
C     IS REPEATED A SECOND TIME.                                        03790306
C                                                                       03800306
      IVTNUM =  11                                                      03810306
      IF (ICZERO) 30110, 0110, 30110                                    03820306
 0110 CONTINUE                                                          03830306
      WVIN01 = 4                                                        03840306
      XVIN01 = 4                                                        03850306
      YVIN01 = .TRUE.                                                   03860306
      ZVIN01 = 4                                                        03870306
      RVCMP1 = WVIN01/5                                                 03880306
      RVCMP2 = XVIN01/5                                                 03890306
      LVCOMP = YVIN01                                                   03900306
      RVCMP3 = ZVIN01/5                                                 03910306
      IVCOMP = 1                                                        03920306
      IF (RVCMP1 .EQ. 0.0) IVCOMP = IVCOMP * 2                          03930306
      IF (RVCMP2 .GE. .79995 .AND. RVCMP2 .LE. .80005) IVCOMP=IVCOMP*3  03940306
      IF (LVCOMP) IVCOMP = IVCOMP * 5                                   03950306
      IF (RVCMP3 .EQ. 0.0) IVCOMP = IVCOMP * 7                          03960306
      IVCORR = 210                                                      03970306
C     210 = 2 * 3 * 5 * 7                                               03980306
40110 IF (IVCOMP - 210) 20110, 10110, 20110                             03990306
30110 IVDELE = IVDELE + 1                                               04000306
      WRITE (I02,80000) IVTNUM                                          04010306
      IF (ICZERO) 10110, 0121, 20110                                    04020306
10110 IVPASS = IVPASS + 1                                               04030306
      WRITE (I02,80002) IVTNUM                                          04040306
      GO TO 0121                                                        04050306
20110 IVFAIL = IVFAIL + 1                                               04060306
      WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR                          04070306
 0121 CONTINUE                                                          04080306
C                                                                       04090306
C     ****  FCVS PROGRAM 306  -  TEST 012  ****                         04100306
C                                                                       04110306
C     TEST 012 TESTS THE SPECIFYING OF REAL TYPING TWICE IN ONE         04120306
C     IMPLICIT STATEMENT.                                               04130306
C                                                                       04140306
      IVTNUM =  12                                                      04150306
      IF (ICZERO) 30120, 0120, 30120                                    04160306
 0120 CONTINUE                                                          04170306
      MVIN01 = 4                                                        04180306
      NVIN01 = 4                                                        04190306
      RVCMP1 = MVIN01/5                                                 04200306
      RVCMP2 = NVIN01/5                                                 04210306
      IVCOMP = 1                                                        04220306
      IF (RVCMP1 .GE. .79995 .AND. RVCMP1 .LE. .80005) IVCOMP=IVCOMP*2  04230306
      IF (RVCMP2 .GE. .79995 .AND. RVCMP2 .LE. .80005) IVCOMP=IVCOMP*3  04240306
      IVCORR = 6                                                        04250306
C     6 = 2 * 3                                                         04260306
      IF (IVCOMP - 6) 20120, 10120, 20120                               04270306
30120 IVDELE = IVDELE + 1                                               04280306
      WRITE (I02,80000) IVTNUM                                          04290306
      IF (ICZERO) 10120, 0131, 20120                                    04300306
10120 IVPASS = IVPASS + 1                                               04310306
      WRITE (I02,80002) IVTNUM                                          04320306
      GO TO 0131                                                        04330306
20120 IVFAIL = IVFAIL + 1                                               04340306
      WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR                          04350306
 0131 CONTINUE                                                          04360306
C                                                                       04370306
C                                                                       04380306
C     WRITE OUT TEST SUMMARY                                            04390306
C                                                                       04400306
      WRITE (I02,90004)                                                 04410306
      WRITE (I02,90014)                                                 04420306
      WRITE (I02,90004)                                                 04430306
      WRITE (I02,90000)                                                 04440306
      WRITE (I02,90004)                                                 04450306
      WRITE (I02,90020) IVFAIL                                          04460306
      WRITE (I02,90022) IVPASS                                          04470306
      WRITE (I02,90024) IVDELE                                          04480306
      STOP                                                              04490306
90001 FORMAT (" ",24X,"FM306")                                          04500306
90000 FORMAT (" ",20X,"END OF PROGRAM FM306" )                          04510306
C                                                                       04520306
C     FORMATS FOR TEST DETAIL LINES                                     04530306
C                                                                       04540306
80000 FORMAT (" ",4X,I5,6X,"DELETED")                                   04550306
80002 FORMAT (" ",4X,I5,7X,"PASS")                                      04560306
80010 FORMAT (" ",4X,I5,7X,"FAIL",10X,I6,9X,I6)                         04570306
80012 FORMAT (" ",4X,I5,7X,"FAIL",4X,E12.5,3X,E12.5)                    04580306
80018 FORMAT (" ",4X,I5,7X,"FAIL",2X,A14,1X,A14)                        04590306
C                                                                       04600306
C     FORMAT STATEMENTS FOR PAGE HEADERS                                04610306
C                                                                       04620306
90002 FORMAT ("1")                                                      04630306
90004 FORMAT (" ")                                                      04640306
90006 FORMAT (" ",10X,"FORTRAN COMPILER VALIDATION SYSTEM" )            04650306
90008 FORMAT (" ",21X,"VERSION 2.1" )                                   04660306
90010 FORMAT (" ",8X,"FOR OFFICIAL USE ONLY - COPYRIGHT 1978" )         04670306
90012 FORMAT (" ",5X,"TEST",5X,"PASS/FAIL",5X,"COMPUTED",8X,"CORRECT")  04680306
90014 FORMAT (" ",5X,"----------------------------------------------" ) 04690306
90016 FORMAT (" ",18X,"SUBSET LEVEL TEST" )                             04700306
C                                                                       04710306
C     FORMAT STATEMENTS FOR RUN SUMMARY                                 04720306
C                                                                       04730306
90020 FORMAT (" ",19X,I5," TESTS FAILED" )                              04740306
90022 FORMAT (" ",19X,I5," TESTS PASSED" )                              04750306
90024 FORMAT (" ",19X,I5," TESTS DELETED" )                             04760306
      END                                                               04770306