| PROGRAM FM251 00010251 |
| C 00020251 |
| C 00030251 |
| C 00040251 |
| C THIS ROUTINE TESTS THE IMPLICIT STATEMENT FOR DECLARING 00050251 |
| C VARIABLES AS TYPE LOGICAL. THE TYPE OF A VARIABLE ( LOGICAL, 00060251 |
| C INTEGER, OR REAL ) IS SET BY BOTH IMPLICIT STATEMENTS AND ALSO 00070251 |
| C BY EXPLICIT TYPE STATEMENTS. TESTS ARE MADE TO CHECK THAT 00080251 |
| C EXPLICIT TYPE STATEMENTS OVERIDE THE TYPE SET BY AN IMPLICIT 00090251 |
| C STATEMENT FOR THE VARIABLES LISTED. 00100251 |
| C 00110251 |
| C REFERENCES 00120251 |
| C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, 00130251 |
| C X3.9-1977 00140251 |
| C SECTION 4.7, LOGICAL TYPE 00150251 |
| C SECTION 8.4.1, LOGICAL TYPE STAEMENT 00160251 |
| C SECTION 8.5, IMPLICIT STATEMENT 00170251 |
| C SECTION 11.5, LOGICAL IF STATEMENT 00180251 |
| C 00190251 |
| C 00200251 |
| C FM016 - TESTS LOGICAL TYPE STATEMENTS WITH VARIOUS FORMS OF 00210251 |
| C LOGICAL CONSTANTS AND VARIABLES. 00220251 |
| C 00230251 |
| C 00240251 |
| C 00250251 |
| C 00260251 |
| C ******************************************************************00270251 |
| C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE 00280251 |
| C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN STANDARD FORTRAN 00290251 |
| C X3.9-1978, HAS BEEN DEVELOPED BY THE DEPARTMENT OF THE NAVY. THE 00300251 |
| C FORTRAN COMPILER VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT 00310251 |
| C ROUTINES, THEIR RELATED DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT00320251 |
| C ROUTINE IS A FORTRAN PROGRAM OR SUBPROGRAM WHICH INCLUDES TESTS 00330251 |
| C OF SPECIFIC LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING00340251 |
| C THE RESULT OF EXECUTING THESE TESTS. 00350251 |
| C 00360251 |
| C THIS PARTICULAR PROGRAM OR SUBPROGRAM CONTAINS ONLY FEATURES 00370251 |
| C FOUND IN THE SUBSET LEVEL OF THE STANDARD. 00380251 |
| C 00390251 |
| C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO 00400251 |
| C NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY 00410251 |
| C SOFTWARE STANDARDS VALIDATION GROUP 00420251 |
| C BUILDING 225 RM A266 00430251 |
| C GAITHERSBURG, MD 20899 00440251 |
| C ******************************************************************00450251 |
| C 00460251 |
| C 00470251 |
| IMPLICIT LOGICAL (L) 00480251 |
| IMPLICIT CHARACTER*14 (C) 00490251 |
| C 00500251 |
| IMPLICIT LOGICAL (M,N) 00510251 |
| IMPLICIT LOGICAL ( E-H, O, P-Q, S-T, X-Y ), INTEGER ( U-W ) 00520251 |
| IMPLICIT INTEGER (A, B), REAL (I, J) 00530251 |
| INTEGER IVCOMP, IVPASS, IVCORR, IVTNUM, IVDELE, IVFAIL, I01, I02 00540251 |
| INTEGER ICZERO 00550251 |
| INTEGER MVTN01 00560251 |
| REAL NVTN01 00570251 |
| LOGICAL MVTN02, NVTN02, MATN21(3,3) 00580251 |
| LOGICAL AVTN01 00590251 |
| LOGICAL IVTN01 00600251 |
| C 00610251 |
| C 00620251 |
| C 00630251 |
| C INITIALIZATION SECTION. 00640251 |
| C 00650251 |
| C INITIALIZE CONSTANTS 00660251 |
| C ******************** 00670251 |
| C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER 00680251 |
| I01 = 5 00690251 |
| C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER 00700251 |
| I02 = 6 00710251 |
| C SYSTEM ENVIRONMENT SECTION 00720251 |
| C 00730251 |
| CX010 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-010 CONTROL CARD.00740251 |
| C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 00750251 |
| C (UNIT NUMBER FOR CARD READER). 00760251 |
| CX011 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-011 CONTROL CARD00770251 |
| C THE CX011 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00780251 |
| C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX010 ABOVE. 00790251 |
| C 00800251 |
| CX020 THIS CARD IS PEPLACED BY CONTENTS OF FEXEC X-020 CONTROL CARD.00810251 |
| C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02 = 6 00820251 |
| C (UNIT NUMBER FOR PRINTER). 00830251 |
| CX021 THIS CARD IS PEPLACED BY CONTENTS OF FEXEC X-021 CONTROL CARD.00840251 |
| C THE CX021 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00850251 |
| C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX020 ABOVE. 00860251 |
| C 00870251 |
| IVPASS = 0 00880251 |
| IVFAIL = 0 00890251 |
| IVDELE = 0 00900251 |
| ICZERO = 0 00910251 |
| C 00920251 |
| C WRITE OUT PAGE HEADERS 00930251 |
| C 00940251 |
| WRITE (I02,90002) 00950251 |
| WRITE (I02,90006) 00960251 |
| WRITE (I02,90008) 00970251 |
| WRITE (I02,90004) 00980251 |
| WRITE (I02,90010) 00990251 |
| WRITE (I02,90004) 01000251 |
| WRITE (I02,90016) 01010251 |
| WRITE (I02,90001) 01020251 |
| WRITE (I02,90004) 01030251 |
| WRITE (I02,90012) 01040251 |
| WRITE (I02,90014) 01050251 |
| WRITE (I02,90004) 01060251 |
| C 01070251 |
| C 01080251 |
| C **** FCVS PROGRAM 251 - TEST 001 **** 01090251 |
| C 01100251 |
| C TEST 001 ASSIGNS A LOGICAL VALUE OF .TRUE. TO MVIN01 WHICH WAS 01110251 |
| C SPECIFIED AS TYPE LOGICAL IN AN IMPLICIT STATEMENT. 01120251 |
| C IMPLICIT LOGICAL (M,N) 01130251 |
| C 01140251 |
| IVTNUM = 1 01150251 |
| IF (ICZERO) 30010, 0010, 30010 01160251 |
| 0010 CONTINUE 01170251 |
| IVCOMP = 0 01180251 |
| MVIN01 = .TRUE. 01190251 |
| IF ( MVIN01 ) IVCOMP = 1 01200251 |
| IVCORR = 1 01210251 |
| 40010 IF ( IVCOMP - 1 ) 20010, 10010, 20010 01220251 |
| 30010 IVDELE = IVDELE + 1 01230251 |
| WRITE (I02,80000) IVTNUM 01240251 |
| IF (ICZERO) 10010, 0021, 20010 01250251 |
| 10010 IVPASS = IVPASS + 1 01260251 |
| WRITE (I02,80002) IVTNUM 01270251 |
| GO TO 0021 01280251 |
| 20010 IVFAIL = IVFAIL + 1 01290251 |
| WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 01300251 |
| 0021 CONTINUE 01310251 |
| C 01320251 |
| C **** FCVS PROGRAM 251 - TEST 002 **** 01330251 |
| C 01340251 |
| C TEST 002 ASSIGNS A LOGICAL VALUE OF .FALSE. TO NVIN01 WHICH 01350251 |
| C WAS SPECIFIED AS TYPE LOGICAL IN AN IMPLICIT STATEMENT. 01360251 |
| C IMPLICIT LOGICAL (M,N) 01370251 |
| C 01380251 |
| IVTNUM = 2 01390251 |
| IF (ICZERO) 30020, 0020, 30020 01400251 |
| 0020 CONTINUE 01410251 |
| IVCOMP = 1 01420251 |
| LCON01 = .FALSE. 01430251 |
| NVIN01 = LCON01 01440251 |
| IF ( NVIN01 ) IVCOMP = 0 01450251 |
| IVCORR = 1 01460251 |
| 40020 IF ( IVCOMP - 1 ) 20020, 10020, 20020 01470251 |
| 30020 IVDELE = IVDELE + 1 01480251 |
| WRITE (I02,80000) IVTNUM 01490251 |
| IF (ICZERO) 10020, 0031, 20020 01500251 |
| 10020 IVPASS = IVPASS + 1 01510251 |
| WRITE (I02,80002) IVTNUM 01520251 |
| GO TO 0031 01530251 |
| 20020 IVFAIL = IVFAIL + 1 01540251 |
| WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 01550251 |
| 0031 CONTINUE 01560251 |
| C 01570251 |
| C **** FCVS PROGRAM 251 - TEST 003 **** 01580251 |
| C 01590251 |
| C TEST 003 ASSIGNS AN INTEGER VALUE OF 4 TO MVTN01 WHICH 01600251 |
| C WAS SPECIFIED AS TYPE INTEGER EXPLICITLY IN A TYPE STATEMENT. 01610251 |
| C INTEGER MVTN01 01620251 |
| C THIS TEST IS TO DETERMINE WHETHER AN EXPLICIT INTEGER TYPE 01630251 |
| C STATEMENT CAN OVERRIDE THE IMPLICIT STATEMENT WHICH WOULD 01640251 |
| C SET THE TYPE AS LOGICAL. 01650251 |
| C IMPLICIT LOGICAL (M,N) 01660251 |
| C 01670251 |
| IVTNUM = 3 01680251 |
| IF (ICZERO) 30030, 0030, 30030 01690251 |
| 0030 CONTINUE 01700251 |
| RVCOMP = 10.0 01710251 |
| MVTN01 = 4 01720251 |
| RVCOMP = MVTN01/5 01730251 |
| RVCORR = 0.0 01740251 |
| 40030 IF ( RVCOMP ) 20030, 10030, 20030 01750251 |
| 30030 IVDELE = IVDELE + 1 01760251 |
| WRITE (I02,80000) IVTNUM 01770251 |
| IF (ICZERO) 10030, 0041, 20030 01780251 |
| 10030 IVPASS = IVPASS + 1 01790251 |
| WRITE (I02,80002) IVTNUM 01800251 |
| GO TO 0041 01810251 |
| 20030 IVFAIL = IVFAIL + 1 01820251 |
| WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 01830251 |
| 0041 CONTINUE 01840251 |
| C 01850251 |
| C **** FCVS PROGRAM 251 - TEST 004 **** 01860251 |
| C 01870251 |
| C TEST 004 ASSIGNS A REAL VALUE OF 4.0 TO NVTN01 WHICH 01880251 |
| C WAS SPECIFIED AS TYPE REAL EXPLICITLY IN A TYPE STATEMENT. 01890251 |
| C REAL NVTN01 01900251 |
| C THIS TEST IS TO DETERMINE WHETHER AN EXPLICIT REAL TYPE 01910251 |
| C STATEMENT CAN OVERRIDE THE IMPLICIT STATEMENT WHICH WOULD 01920251 |
| C SET THE TYPE AS LOGICAL. 01930251 |
| C IMPLICIT LOGICAL (M,N) 01940251 |
| C 01950251 |
| IVTNUM = 4 01960251 |
| IF (ICZERO) 30040, 0040, 30040 01970251 |
| 0040 CONTINUE 01980251 |
| RVCOMP = 10.0 01990251 |
| NVTN01 = 4.0 02000251 |
| RVCOMP = NVTN01/5 02010251 |
| RVCORR = 0.8 02020251 |
| 40040 IF ( RVCOMP - 0.79995 ) 20040, 10040, 40041 02030251 |
| 40041 IF ( RVCOMP - 0.80005 ) 10040, 10040, 20040 02040251 |
| 30040 IVDELE = IVDELE + 1 02050251 |
| WRITE (I02,80000) IVTNUM 02060251 |
| IF (ICZERO) 10040, 0051, 20040 02070251 |
| 10040 IVPASS = IVPASS + 1 02080251 |
| WRITE (I02,80002) IVTNUM 02090251 |
| GO TO 0051 02100251 |
| 20040 IVFAIL = IVFAIL + 1 02110251 |
| WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 02120251 |
| 0051 CONTINUE 02130251 |
| C 02140251 |
| C **** FCVS PROGRAM 251 - TEST 005 **** 02150251 |
| C 02160251 |
| C TEST 005 ASSIGNS A LOGICAL VALUE OF .TRUE. TO MVTN02 WHICH WAS 02170251 |
| C SPECIFIED AS TYPE LOGICAL IN AN EXPLICIT TYPE STATEMENT AFTER ALSO02180251 |
| C HAVING ITS FIRST LETTER M SPECIFIED AS TYPE LOGICAL IN AN 02190251 |
| C IMPLICIT STATEMENT. 02200251 |
| C IMPLICIT LOGICAL (M,N) 02210251 |
| C LOGICAL MVTN02 02220251 |
| C 02230251 |
| IVTNUM = 5 02240251 |
| IF (ICZERO) 30050, 0050, 30050 02250251 |
| 0050 CONTINUE 02260251 |
| IVCOMP = 0 02270251 |
| LCON02 = .TRUE. 02280251 |
| MVTN02 = LCON02 02290251 |
| IF ( MVTN02 ) IVCOMP = 1 02300251 |
| IVCORR = 1 02310251 |
| 40050 IF ( IVCOMP - 1 ) 20050, 10050, 20050 02320251 |
| 30050 IVDELE = IVDELE + 1 02330251 |
| WRITE (I02,80000) IVTNUM 02340251 |
| IF (ICZERO) 10050, 0061, 20050 02350251 |
| 10050 IVPASS = IVPASS + 1 02360251 |
| WRITE (I02,80002) IVTNUM 02370251 |
| GO TO 0061 02380251 |
| 20050 IVFAIL = IVFAIL + 1 02390251 |
| WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 02400251 |
| 0061 CONTINUE 02410251 |
| C 02420251 |
| C **** FCVS PROGRAM 251 - TEST 006 **** 02430251 |
| C 02440251 |
| C TEST 006 ASSIGNS A LOGICAL VALUE OF .FALSE. TO NVTN02 WHICH WAS02450251 |
| C SPECIFIED AS TYPE LOGICAL IN AN EXPLICIT TYPE STATEMENT AFTER ALSO02460251 |
| C HAVING ITS FIRST LETTER N SPECIFIED AS TYPE LOGICAL IN AN 02470251 |
| C IMPLICIT STATEMENT. 02480251 |
| C IMPLICIT LOGICAL (M,N) 02490251 |
| C LOGICAL NVTN02 02500251 |
| C 02510251 |
| IVTNUM = 6 02520251 |
| IF (ICZERO) 30060, 0060, 30060 02530251 |
| 0060 CONTINUE 02540251 |
| IVCOMP = 1 02550251 |
| NVTN02 = .FALSE. 02560251 |
| IF ( NVTN02 ) IVCOMP = 0 02570251 |
| IVCORR = 1 02580251 |
| 40060 IF ( IVCOMP - 1 ) 20060, 10060, 20060 02590251 |
| 30060 IVDELE = IVDELE + 1 02600251 |
| WRITE (I02,80000) IVTNUM 02610251 |
| IF (ICZERO) 10060, 0071, 20060 02620251 |
| 10060 IVPASS = IVPASS + 1 02630251 |
| WRITE (I02,80002) IVTNUM 02640251 |
| GO TO 0071 02650251 |
| 20060 IVFAIL = IVFAIL + 1 02660251 |
| WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 02670251 |
| 0071 CONTINUE 02680251 |
| C 02690251 |
| C **** FCVS PROGRAM 251 - TEST 007 **** 02700251 |
| C 02710251 |
| C TEST 007 ASSIGNS A LOGICAL VALUE OF .TRUE. TO THE ARRAY ELEMENT02720251 |
| C MATN21(1,1) WHICH WAS SPECIFIED AS TYPE LOGICAL IN AN EXPLICIT 02730251 |
| C TYPE STATEMENT AFTER ALSO HAVING ITS FIRST LETTER M SPECIFIED AS 02740251 |
| C TYPE LOGICAL IN AN IMPLICIT STATEMENT. 02750251 |
| C IMPLICIT LOGICAL (M,N) 02760251 |
| C LOGICAL MATN21(3,3) 02770251 |
| C 02780251 |
| IVTNUM = 7 02790251 |
| IF (ICZERO) 30070, 0070, 30070 02800251 |
| 0070 CONTINUE 02810251 |
| IVCOMP = 0 02820251 |
| MATN21(1,1) = .TRUE. 02830251 |
| IF ( MATN21(1,1) ) IVCOMP = 1 02840251 |
| IVCORR = 1 02850251 |
| 40070 IF ( IVCOMP - 1 ) 20070, 10070, 20070 02860251 |
| 30070 IVDELE = IVDELE + 1 02870251 |
| WRITE (I02,80000) IVTNUM 02880251 |
| IF (ICZERO) 10070, 0081, 20070 02890251 |
| 10070 IVPASS = IVPASS + 1 02900251 |
| WRITE (I02,80002) IVTNUM 02910251 |
| GO TO 0081 02920251 |
| 20070 IVFAIL = IVFAIL + 1 02930251 |
| WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 02940251 |
| 0081 CONTINUE 02950251 |
| C 02960251 |
| C **** FCVS PROGRAM 251 - TEST 008 **** 02970251 |
| C 02980251 |
| C TEST 008 ASSIGNS AN INTEGER VALUE OF 4 TO AVIN01 WHICH WAS 02990251 |
| C SPECIFIED AS TYPE INTEGER IN AN IMPLICIT STATEMENT. 03000251 |
| C IMPLICIT INTEGER (A,B) 03010251 |
| C 03020251 |
| IVTNUM = 8 03030251 |
| IF (ICZERO) 30080, 0080, 30080 03040251 |
| 0080 CONTINUE 03050251 |
| RVCOMP = 10.0 03060251 |
| AVIN01 = 4 03070251 |
| RVCOMP = AVIN01/5 03080251 |
| RVCORR = 0.0 03090251 |
| 40080 IF ( RVCOMP ) 20080, 10080, 20080 03100251 |
| 30080 IVDELE = IVDELE + 1 03110251 |
| WRITE (I02,80000) IVTNUM 03120251 |
| IF (ICZERO) 10080, 0091, 20080 03130251 |
| 10080 IVPASS = IVPASS + 1 03140251 |
| WRITE (I02,80002) IVTNUM 03150251 |
| GO TO 0091 03160251 |
| 20080 IVFAIL = IVFAIL + 1 03170251 |
| WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 03180251 |
| 0091 CONTINUE 03190251 |
| C 03200251 |
| C **** FCVS PROGRAM 251 - TEST 009 **** 03210251 |
| C 03220251 |
| C TEST 009 ASSIGNS A LOGICAL VALUE OF .TRUE. TO AVTN01 WHICH WAS 03230251 |
| C SPECIFIED AS TYPE LOGICAL EXPLICITLY IN A TYPE STATEMENT. 03240251 |
| C LOGICAL AVTN01 03250251 |
| C THIS TEST IS TO DETERMINE WHETHER AN EXPLICIT LOGICAL TYPE 03260251 |
| C STATEMENT CAN OVERRIDE THE IMPLICIT STATEMENT WHICH WOULD 03270251 |
| C SET THE TYPE AS INTEGER. 03280251 |
| C IMPLICIT INTEGER (A,B) 03290251 |
| C 03300251 |
| IVTNUM = 9 03310251 |
| IF (ICZERO) 30090, 0090, 30090 03320251 |
| 0090 CONTINUE 03330251 |
| IVCOMP = 0 03340251 |
| AVTN01 = .TRUE. 03350251 |
| IF ( AVTN01 ) IVCOMP = 1 03360251 |
| IVCORR = 1 03370251 |
| 40090 IF ( IVCOMP - 1 ) 20090, 10090, 20090 03380251 |
| 30090 IVDELE = IVDELE + 1 03390251 |
| WRITE (I02,80000) IVTNUM 03400251 |
| IF (ICZERO) 10090, 0101, 20090 03410251 |
| 10090 IVPASS = IVPASS + 1 03420251 |
| WRITE (I02,80002) IVTNUM 03430251 |
| GO TO 0101 03440251 |
| 20090 IVFAIL = IVFAIL + 1 03450251 |
| WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 03460251 |
| 0101 CONTINUE 03470251 |
| C 03480251 |
| C **** FCVS PROGRAM 251 - TEST 010 **** 03490251 |
| C 03500251 |
| C TEST 010 ASSIGNS A REAL VALUE OF 4.0 TO IVIN01 WHICH WAS 03510251 |
| C SPECIFIED AS REAL IMPLICITLY IN AN IMPLICIT STATEMENT. 03520251 |
| C IMPLICIT REAL (I,J) 03530251 |
| C 03540251 |
| IVTNUM = 10 03550251 |
| IF (ICZERO) 30100, 0100, 30100 03560251 |
| 0100 CONTINUE 03570251 |
| RVCOMP = 10.0 03580251 |
| IVIN01 = 4.0 03590251 |
| RVCOMP = IVIN01/5 03600251 |
| RVCORR = 0.8 03610251 |
| 40100 IF ( RVCOMP - 0.79995 ) 20100, 10100, 40101 03620251 |
| 40101 IF ( RVCOMP - 0.80005 ) 10100, 10100, 20100 03630251 |
| 30100 IVDELE = IVDELE + 1 03640251 |
| WRITE (I02,80000) IVTNUM 03650251 |
| IF (ICZERO) 10100, 0111, 20100 03660251 |
| 10100 IVPASS = IVPASS + 1 03670251 |
| WRITE (I02,80002) IVTNUM 03680251 |
| GO TO 0111 03690251 |
| 20100 IVFAIL = IVFAIL + 1 03700251 |
| WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 03710251 |
| 0111 CONTINUE 03720251 |
| C 03730251 |
| C **** FCVS PROGRAM 251 - TEST 011 **** 03740251 |
| C 03750251 |
| C TEST 011 ASSIGNS A LOGICAL VALUE OF .FALSE. TO IVTN01 WHICH WAS03760251 |
| C SPECIFIED AS TYPE LOGICAL IN AN EXPLICIT TYPE STATEMENT. 03770251 |
| C LOGICAL IVTN01 03780251 |
| C THIS TEST IS TO DETERMINE WHETHER AN EXPLICIT TYPE STATEMENT 03790251 |
| C CAN OVERRIDE THE IMPLICIT STATEMENT WHICH WOULD SET THE TYPE 03800251 |
| C AS REAL. 03810251 |
| C IMPLICIT REAL (I,J) 03820251 |
| C 03830251 |
| IVTNUM = 11 03840251 |
| IF (ICZERO) 30110, 0110, 30110 03850251 |
| 0110 CONTINUE 03860251 |
| IVCOMP = 1 03870251 |
| IVTN01 = .FALSE. 03880251 |
| IF ( IVTN01 ) IVCOMP = 0 03890251 |
| IVCORR = 1 03900251 |
| 40110 IF ( IVCOMP - 1 ) 20110, 10110, 20110 03910251 |
| 30110 IVDELE = IVDELE + 1 03920251 |
| WRITE (I02,80000) IVTNUM 03930251 |
| IF (ICZERO) 10110, 0121, 20110 03940251 |
| 10110 IVPASS = IVPASS + 1 03950251 |
| WRITE (I02,80002) IVTNUM 03960251 |
| GO TO 0121 03970251 |
| 20110 IVFAIL = IVFAIL + 1 03980251 |
| WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 03990251 |
| 0121 CONTINUE 04000251 |
| C 04010251 |
| C 04020251 |
| C THE NEXT TWO TESTS CHECK THE RANGE OF LETTERS THAT 04030251 |
| C ARE SET BY THE IMPLICIT STATEMENT AS FOLLOWS - 04040251 |
| C IMPLICIT LOGICAL ( E-H, O, P-Q, S-T, X-Y ), INTEGER ( U-W ) 04050251 |
| C 04060251 |
| C 04070251 |
| C 04080251 |
| C **** FCVS PROGRAM 251 - TEST 012 **** 04090251 |
| C 04100251 |
| C TEST 012 ASSIGNS A LOGICAL VALUE OF .TRUE. TO A SERIES OF 04110251 |
| C VARIABLES THAT BEGIN WITH THE FOLLOWING LETTERS - 04120251 |
| C 04130251 |
| C E F G H O P Q S T X Y 04140251 |
| C 04150251 |
| C VARIABLES THAT BEGIN WITH THESE LETTERS SHOULD BE IMPLICITLY TYPED04160251 |
| C LOGICAL BECAUSE OF THE IMPLICIT STATEMENT USING BOTH THE RANGE AND04170251 |
| C SINGLE LETTER SPECIFICATION FOR TYPE LOGICAL. THE VARIABLE XVIN0104180251 |
| C IS FIRST USED IN A LOGICAL IF STATEMENT. THE TRUE BRANCH SHOULD 04190251 |
| C BE TAKEN TO SET IVCOMP = 1. THEN EACH OF THE VARIABLES SET TO 04200251 |
| C .TRUE. ARE USED IN A SECOND LOGICAL IF STATEMENT WHICH IS ONE 04210251 |
| C LARGE LOGICAL CONJUNCTION ( VARIABLE .AND. VARIABLE .AND. ... ). 04220251 |
| C THE TRUE BRANCH SHOULD BE TAKEN TO INCREMENT THE VALUE OF IVCOMP 04230251 |
| C TO A FINAL VALUE OF THREE (3). 04240251 |
| C 04250251 |
| C 04260251 |
| IVTNUM = 12 04270251 |
| IF (ICZERO) 30120, 0120, 30120 04280251 |
| 0120 CONTINUE 04290251 |
| IVCOMP = 0 04300251 |
| IVCORR = 3 04310251 |
| EVIN01 = .TRUE. 04320251 |
| FVIN01 = .TRUE. 04330251 |
| GVIN01 = .TRUE. 04340251 |
| HVIN01 = .TRUE. 04350251 |
| OVIN01 = .TRUE. 04360251 |
| PVIN01 = .TRUE. 04370251 |
| QVIN01 = .TRUE. 04380251 |
| SVIN01 = .TRUE. 04390251 |
| TVIN01 = .TRUE. 04400251 |
| XVIN01 = .TRUE. 04410251 |
| YVIN01 = .TRUE. 04420251 |
| IF ( XVIN01 ) IVCOMP = 1 04430251 |
| IF ( EVIN01 .AND. FVIN01 .AND. GVIN01 .AND. HVIN01 .AND. OVIN01 04440251 |
| 1.AND. PVIN01 .AND. QVIN01 .AND. SVIN01 .AND. TVIN01 .AND. XVIN01 04450251 |
| 2.AND. YVIN01 ) IVCOMP = IVCOMP + 2 04460251 |
| 40120 IF ( IVCOMP - 3 ) 20120, 10120, 20120 04470251 |
| 30120 IVDELE = IVDELE + 1 04480251 |
| WRITE (I02,80000) IVTNUM 04490251 |
| IF (ICZERO) 10120, 0131, 20120 04500251 |
| 10120 IVPASS = IVPASS + 1 04510251 |
| WRITE (I02,80002) IVTNUM 04520251 |
| GO TO 0131 04530251 |
| 20120 IVFAIL = IVFAIL + 1 04540251 |
| WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 04550251 |
| 0131 CONTINUE 04560251 |
| C 04570251 |
| C **** FCVS PROGRAM 251 - TEST 013 **** 04580251 |
| C 04590251 |
| C TEST 013 ASSIGNS AN INTEGER VALUE OF 4 TO VVIN01 WHICH 04600251 |
| C WAS SPECIFIED AS TYPE INTEGER IMPLICITLY USING THE RANGE OF 04610251 |
| C LETTERS U-W IN THE IMPLICIT INTEGER SPECIFICATION STATEMENT. 04620251 |
| C DIVISION IS USED TO DETERMINE WHETHER VVIN01 IS TYPE INTEGER. 04630251 |
| C 04640251 |
| C 04650251 |
| IVTNUM = 13 04660251 |
| IF (ICZERO) 30130, 0130, 30130 04670251 |
| 0130 CONTINUE 04680251 |
| RVCOMP = 10.0 04690251 |
| VVIN01 = 4 04700251 |
| RVCOMP = VVIN01/5 04710251 |
| RVCORR = 0.0 04720251 |
| 40130 IF ( RVCOMP ) 20130, 10130, 20130 04730251 |
| 30130 IVDELE = IVDELE + 1 04740251 |
| WRITE (I02,80000) IVTNUM 04750251 |
| IF (ICZERO) 10130, 0141, 20130 04760251 |
| 10130 IVPASS = IVPASS + 1 04770251 |
| WRITE (I02,80002) IVTNUM 04780251 |
| GO TO 0141 04790251 |
| 20130 IVFAIL = IVFAIL + 1 04800251 |
| WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 04810251 |
| 0141 CONTINUE 04820251 |
| C 04830251 |
| C 04840251 |
| C WRITE OUT TEST SUMMARY 04850251 |
| C 04860251 |
| WRITE (I02,90004) 04870251 |
| WRITE (I02,90014) 04880251 |
| WRITE (I02,90004) 04890251 |
| WRITE (I02,90000) 04900251 |
| WRITE (I02,90004) 04910251 |
| WRITE (I02,90020) IVFAIL 04920251 |
| WRITE (I02,90022) IVPASS 04930251 |
| WRITE (I02,90024) IVDELE 04940251 |
| STOP 04950251 |
| 90001 FORMAT (" ",24X,"FM251") 04960251 |
| 90000 FORMAT (" ",20X,"END OF PROGRAM FM251" ) 04970251 |
| C 04980251 |
| C FORMATS FOR TEST DETAIL LINES 04990251 |
| C 05000251 |
| 80000 FORMAT (" ",4X,I5,6X,"DELETED") 05010251 |
| 80002 FORMAT (" ",4X,I5,7X,"PASS") 05020251 |
| 80010 FORMAT (" ",4X,I5,7X,"FAIL",10X,I6,9X,I6) 05030251 |
| 80012 FORMAT (" ",4X,I5,7X,"FAIL",4X,E12.5,3X,E12.5) 05040251 |
| 80018 FORMAT (" ",4X,I5,7X,"FAIL",2X,A14,1X,A14) 05050251 |
| C 05060251 |
| C FORMAT STATEMENTS FOR PAGE HEADERS 05070251 |
| C 05080251 |
| 90002 FORMAT ("1") 05090251 |
| 90004 FORMAT (" ") 05100251 |
| 90006 FORMAT (" ",10X,"FORTRAN COMPILER VALIDATION SYSTEM" ) 05110251 |
| 90008 FORMAT (" ",21X,"VERSION 2.1" ) 05120251 |
| 90010 FORMAT (" ",8X,"FOR OFFICIAL USE ONLY - COPYRIGHT 1978" ) 05130251 |
| 90012 FORMAT (" ",5X,"TEST",5X,"PASS/FAIL",5X,"COMPUTED",8X,"CORRECT") 05140251 |
| 90014 FORMAT (" ",5X,"----------------------------------------------" ) 05150251 |
| 90016 FORMAT (" ",18X,"SUBSET LEVEL TEST" ) 05160251 |
| C 05170251 |
| C FORMAT STATEMENTS FOR RUN SUMMARY 05180251 |
| C 05190251 |
| 90020 FORMAT (" ",19X,I5," TESTS FAILED" ) 05200251 |
| 90022 FORMAT (" ",19X,I5," TESTS PASSED" ) 05210251 |
| 90024 FORMAT (" ",19X,I5," TESTS DELETED" ) 05220251 |
| END 05230251 |