| PROGRAM FM025 |
| |
| C COMMENT SECTION. 00010025 |
| C 00020025 |
| C FM025 00030025 |
| C 00040025 |
| C THIS ROUTINE TESTS ARRAYS WITH IF STATEMENTS, DO LOOPS, 00050025 |
| C ASSIGNED AND COMPUTED GO TO STATEMENTS IN CONJUNCTION WITH ARRAY 00060025 |
| C ELEMENTS IN COMMON OR DIMENSIONED. ONE, TWO, AND THREE 00070025 |
| C DIMENSIONED ARRAYS ARE USED. THE SUBSCRIPTS ARE INTEGER CONSTANTS00080025 |
| C OR SOMETIMES INTEGER VARIABLES WHEN THE ELEMENTS ARE IN LOOPS 00090025 |
| C AND ALL ARRAYS HAVE FIXED SIZE LIMITS. INTEGER, REAL, AND LOGICAL00100025 |
| C ARRAYS ARE USED WITH THE TYPE SOMETIMES SPECIFIED WITH THE 00110025 |
| C EXPLICIT TYPE STATEMENT. 00120025 |
| C 00130025 |
| C REFERENCES 00140025 |
| C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, 00150025 |
| C X3.9-1978 00160025 |
| C 00170025 |
| C SECTION 8, SPECIFICATION STATEMENTS 00180025 |
| C SECTION 8.1, DIMENSION STATEMENT 00190025 |
| C SECTION 8.3, COMMON STATEMENT 00200025 |
| C SECTION 8.4, TYPE-STATEMENTS 00210025 |
| C SECTION 9, DATA STATEMENT 00220025 |
| C SECTION 11.2, COMPUTED GO TO STATEMENT 00230025 |
| C SECTION 11.3, ASSIGNED GO TO STATEMENT 00240025 |
| C SECTION 11.10, DO STATEMENT 00250025 |
| C 00260025 |
| COMMON IADN31(2,2,2), RADN31(2,2,2), LADN31(2,2,2) 00270025 |
| C 00280025 |
| DIMENSION IADN32(2,2,2), IADN21(2,2), IADN11(2) 00290025 |
| C 00300025 |
| LOGICAL LADN31 00310025 |
| INTEGER RADN33(2,2,2), RADN21(2,4), RADN11(8) 00320025 |
| REAL IADN33(2,2,2), IADN22(2,4), IADN12(8) 00330025 |
| C 00340025 |
| C 00350025 |
| C ********************************************************** 00360025 |
| C 00370025 |
| C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE 00380025 |
| C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN NATIONAL STANDARD 00390025 |
| C PROGRAMMING LANGUAGE FORTRAN X3.9-1978, HAS BEEN DEVELOPED BY THE 00400025 |
| C FEDERAL COBOL COMPILER TESTING SERVICE. THE FORTRAN COMPILER 00410025 |
| C VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT ROUTINES, THEIR RELATED00420025 |
| C DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT ROUTINE IS A FORTRAN 00430025 |
| C PROGRAM, SUBPROGRAM OR FUNCTION WHICH INCLUDES TESTS OF SPECIFIC 00440025 |
| C LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING THE RESULT 00450025 |
| C OF EXECUTING THESE TESTS. 00460025 |
| C 00470025 |
| C THIS PARTICULAR PROGRAM/SUBPROGRAM/FUNCTION CONTAINS FEATURES 00480025 |
| C FOUND ONLY IN THE SUBSET AS DEFINED IN X3.9-1978. 00490025 |
| C 00500025 |
| C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO - 00510025 |
| C 00520025 |
| C NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY 00530025 |
| C SOFTWARE STANDARDS VALIDATION GROUP 00540025 |
| C BUILDING 225 RM A266 00550025 |
| C GAITHERSBURG, MD 20899 00560025 |
| C ********************************************************** 00570025 |
| C 00580025 |
| C 00590025 |
| C 00600025 |
| C INITIALIZATION SECTION 00610025 |
| C 00620025 |
| C INITIALIZE CONSTANTS 00630025 |
| C ************** 00640025 |
| C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. 00650025 |
| I01 = 5 00660025 |
| C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. 00670025 |
| I02 = 6 00680025 |
| C SYSTEM ENVIRONMENT SECTION 00690025 |
| C 00700025 |
| CX010 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-010 CONTROL CARD. 00710025 |
| C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 00720025 |
| C (UNIT NUMBER FOR CARD READER). 00730025 |
| CX011 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-011 CONTROL CARD. 00740025 |
| C THE CX011 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00750025 |
| C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX010 ABOVE. 00760025 |
| C 00770025 |
| CX020 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-020 CONTROL CARD. 00780025 |
| C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02 = 6 00790025 |
| C (UNIT NUMBER FOR PRINTER). 00800025 |
| CX021 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-021 CONTROL CARD. 00810025 |
| C THE CX021 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00820025 |
| C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX020 ABOVE. 00830025 |
| C 00840025 |
| IVPASS=0 00850025 |
| IVFAIL=0 00860025 |
| IVDELE=0 00870025 |
| ICZERO=0 00880025 |
| C 00890025 |
| C WRITE PAGE HEADERS 00900025 |
| WRITE (I02,90000) 00910025 |
| WRITE (I02,90001) 00920025 |
| WRITE (I02,90002) 00930025 |
| WRITE (I02, 90002) 00940025 |
| WRITE (I02,90003) 00950025 |
| WRITE (I02,90002) 00960025 |
| WRITE (I02,90004) 00970025 |
| WRITE (I02,90002) 00980025 |
| WRITE (I02,90011) 00990025 |
| WRITE (I02,90002) 01000025 |
| WRITE (I02,90002) 01010025 |
| WRITE (I02,90005) 01020025 |
| WRITE (I02,90006) 01030025 |
| WRITE (I02,90002) 01040025 |
| IVTNUM = 653 01050025 |
| C 01060025 |
| C **** TEST 653 **** 01070025 |
| C TEST 653 - TEST OF SETTING ALL VALUES OF AN INTEGER ARRAY 01080025 |
| C BY THE INTEGER INDEX OF A DO LOOP. THE ARRAY HAS ONE DIMENSION. 01090025 |
| C 01100025 |
| IF (ICZERO) 36530, 6530, 36530 01110025 |
| 6530 CONTINUE 01120025 |
| DO 6532 I = 1,2,1 01130025 |
| IADN11(I) = I 01140025 |
| 6532 CONTINUE 01150025 |
| IVCOMP = IADN11(1) 01160025 |
| GO TO 46530 01170025 |
| 36530 IVDELE = IVDELE + 1 01180025 |
| WRITE (I02,80003) IVTNUM 01190025 |
| IF (ICZERO) 46530, 6541, 46530 01200025 |
| 46530 IF ( IVCOMP - 1 ) 26530, 16530, 26530 01210025 |
| 16530 IVPASS = IVPASS + 1 01220025 |
| WRITE (I02,80001) IVTNUM 01230025 |
| GO TO 6541 01240025 |
| 26530 IVFAIL = IVFAIL + 1 01250025 |
| IVCORR = 1 01260025 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01270025 |
| 6541 CONTINUE 01280025 |
| IVTNUM = 654 01290025 |
| C 01300025 |
| C **** TEST 654 **** 01310025 |
| C TEST 654 - SEE TEST 653. THIS TEST CHECKS THE SECOND ELEMENT OF01320025 |
| C THE INTEGER ARRAY IADN11(2). 01330025 |
| C 01340025 |
| IF (ICZERO) 36540, 6540, 36540 01350025 |
| 6540 CONTINUE 01360025 |
| IVCOMP = IADN11(2) 01370025 |
| GO TO 46540 01380025 |
| 36540 IVDELE = IVDELE + 1 01390025 |
| WRITE (I02,80003) IVTNUM 01400025 |
| IF (ICZERO) 46540, 6551, 46540 01410025 |
| 46540 IF ( IVCOMP - 2 ) 26540, 16540, 26540 01420025 |
| 16540 IVPASS = IVPASS + 1 01430025 |
| WRITE (I02,80001) IVTNUM 01440025 |
| GO TO 6551 01450025 |
| 26540 IVFAIL = IVFAIL + 1 01460025 |
| IVCORR = 2 01470025 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01480025 |
| 6551 CONTINUE 01490025 |
| IVTNUM = 655 01500025 |
| C 01510025 |
| C **** TEST 655 **** 01520025 |
| C TEST 655 - TEST OF SETTING THE VALUES OF THE COLUMN OF A TWO 01530025 |
| C DIMENSION INTEGER ARRAY BY A DO LOOP. THE VALUES FOR THE ELEMENTS01540025 |
| C IN A COLUMN IS THE NUMBER OF THE COLUMN AS SET BY THE DO LOOP 01550025 |
| C INDEX. ROW NUMBERS ARE INTEGER CONSTANTS. 01560025 |
| C THE VALUES FOR THE ELEMENTS ARE AS FOLLOWS 01570025 |
| C 1 2 01580025 |
| C 1 2 01590025 |
| C 01600025 |
| IF (ICZERO) 36550, 6550, 36550 01610025 |
| 6550 CONTINUE 01620025 |
| DO 6552 J = 1, 2 01630025 |
| IADN21(1,J) = J 01640025 |
| IADN21(2,J) = J 01650025 |
| 6552 CONTINUE 01660025 |
| IVCOMP = IADN21(1,1) 01670025 |
| GO TO 46550 01680025 |
| 36550 IVDELE = IVDELE + 1 01690025 |
| WRITE (I02,80003) IVTNUM 01700025 |
| IF (ICZERO) 46550, 6561, 46550 01710025 |
| 46550 IF ( IVCOMP - 1 ) 26550, 16550, 26550 01720025 |
| 16550 IVPASS = IVPASS + 1 01730025 |
| WRITE (I02,80001) IVTNUM 01740025 |
| GO TO 6561 01750025 |
| 26550 IVFAIL = IVFAIL + 1 01760025 |
| IVCORR = 1 01770025 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01780025 |
| 6561 CONTINUE 01790025 |
| IVTNUM = 656 01800025 |
| C 01810025 |
| C **** TEST 656 **** 01820025 |
| C TEST 656 - SEE TEST 655. THIS TEST CHECKS THE VALUE OF THE 01830025 |
| C INTEGER ARRAY IADN21(2,2) 01840025 |
| C 01850025 |
| IF (ICZERO) 36560, 6560, 36560 01860025 |
| 6560 CONTINUE 01870025 |
| IVCOMP = IADN21(2,2) 01880025 |
| GO TO 46560 01890025 |
| 36560 IVDELE = IVDELE + 1 01900025 |
| WRITE (I02,80003) IVTNUM 01910025 |
| IF (ICZERO) 46560, 6571, 46560 01920025 |
| 46560 IF ( IVCOMP - 2 ) 26560, 16560, 26560 01930025 |
| 16560 IVPASS = IVPASS + 1 01940025 |
| WRITE (I02,80001) IVTNUM 01950025 |
| GO TO 6571 01960025 |
| 26560 IVFAIL = IVFAIL + 1 01970025 |
| IVCORR = 2 01980025 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01990025 |
| 6571 CONTINUE 02000025 |
| IVTNUM = 657 02010025 |
| C 02020025 |
| C **** TEST 657 **** 02030025 |
| C TEST 657 - THIS TESTS SETTING BOTH THE ROW AND COLUMN SUBSCRIPTS02040025 |
| C IN A TWO DIMENSION INTEGER ARRAY WITH A DOUBLE NESTED DO LOOP. 02050025 |
| C THE ELEMENT VALUES ARE SET BY AN INTEGER COUNTER. ELEMENT VALUES 02060025 |
| C ARE AS FOLLOWS 1 2 02070025 |
| C 3 4 02080025 |
| C 02090025 |
| IF (ICZERO) 36570, 6570, 36570 02100025 |
| 6570 CONTINUE 02110025 |
| ICON01 = 0 02120025 |
| DO 6573 I = 1, 2 02130025 |
| DO 6572 J = 1, 2 02140025 |
| ICON01 = ICON01 + 1 02150025 |
| IADN21(I,J) = ICON01 02160025 |
| 6572 CONTINUE 02170025 |
| 6573 CONTINUE 02180025 |
| IVCOMP = IADN21(1,2) 02190025 |
| GO TO 46570 02200025 |
| 36570 IVDELE = IVDELE + 1 02210025 |
| WRITE (I02,80003) IVTNUM 02220025 |
| IF (ICZERO) 46570, 6581, 46570 02230025 |
| 46570 IF ( IVCOMP - 2 ) 26570, 16570, 26570 02240025 |
| 16570 IVPASS = IVPASS + 1 02250025 |
| WRITE (I02,80001) IVTNUM 02260025 |
| GO TO 6581 02270025 |
| 26570 IVFAIL = IVFAIL + 1 02280025 |
| IVCORR = 2 02290025 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02300025 |
| 6581 CONTINUE 02310025 |
| IVTNUM = 658 02320025 |
| C 02330025 |
| C **** TEST 658 **** 02340025 |
| C TEST 658 - SEE TEST 657. THIS TEST CHECKS THE VALUE OF ARRAY 02350025 |
| C ELEMENT IADN21(2,1) = 3 02360025 |
| C 02370025 |
| IF (ICZERO) 36580, 6580, 36580 02380025 |
| 6580 CONTINUE 02390025 |
| IVCOMP = IADN21(2,1) 02400025 |
| GO TO 46580 02410025 |
| 36580 IVDELE = IVDELE + 1 02420025 |
| WRITE (I02,80003) IVTNUM 02430025 |
| IF (ICZERO) 46580, 6591, 46580 02440025 |
| 46580 IF ( IVCOMP - 3 ) 26580, 16580, 26580 02450025 |
| 16580 IVPASS = IVPASS + 1 02460025 |
| WRITE (I02,80001) IVTNUM 02470025 |
| GO TO 6591 02480025 |
| 26580 IVFAIL = IVFAIL + 1 02490025 |
| IVCORR = 3 02500025 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02510025 |
| 6591 CONTINUE 02520025 |
| IVTNUM = 659 02530025 |
| C 02540025 |
| C **** TEST 659 **** 02550025 |
| C TEST 659 - THIS TEST USES A TRIPLE NESTED DO LOOP TO SET THE 02560025 |
| C ELEMENTS IN ALL THREE DIMENSIONS OF AN INTEGER ARRAY THAT IS 02570025 |
| C DIMENSIONED. THE VALUES FOR THE ELEMENTS ARE AS FOLLOWS 02580025 |
| C FOR ELEMENT (I,J,K) = I + J + K 02590025 |
| C SO FOR ELEMENT (1,1,2) = 1 + 1 + 2 = 4 02600025 |
| C 02610025 |
| IF (ICZERO) 36590, 6590, 36590 02620025 |
| 6590 CONTINUE 02630025 |
| DO 6594 I = 1, 2 02640025 |
| DO 6593 J = 1, 2 02650025 |
| DO 6592 K = 1, 2 02660025 |
| IADN32( I, J, K ) = I + J + K 02670025 |
| 6592 CONTINUE 02680025 |
| 6593 CONTINUE 02690025 |
| 6594 CONTINUE 02700025 |
| IVCOMP = IADN32(1,1,2) 02710025 |
| GO TO 46590 02720025 |
| 36590 IVDELE = IVDELE + 1 02730025 |
| WRITE (I02,80003) IVTNUM 02740025 |
| IF (ICZERO) 46590, 6601, 46590 02750025 |
| 46590 IF ( IVCOMP - 4 ) 26590, 16590, 26590 02760025 |
| 16590 IVPASS = IVPASS + 1 02770025 |
| WRITE (I02,80001) IVTNUM 02780025 |
| GO TO 6601 02790025 |
| 26590 IVFAIL = IVFAIL + 1 02800025 |
| IVCORR = 4 02810025 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02820025 |
| 6601 CONTINUE 02830025 |
| IVTNUM = 660 02840025 |
| C 02850025 |
| C **** TEST 660 **** 02860025 |
| C TEST 660 - SEE TEST 659. THIS CHECKS FOR IADN32(2,2,2) = 6 02870025 |
| C 02880025 |
| IF (ICZERO) 36600, 6600, 36600 02890025 |
| 6600 CONTINUE 02900025 |
| IVCOMP = IADN32(2,2,2) 02910025 |
| GO TO 46600 02920025 |
| 36600 IVDELE = IVDELE + 1 02930025 |
| WRITE (I02,80003) IVTNUM 02940025 |
| IF (ICZERO) 46600, 6611, 46600 02950025 |
| 46600 IF ( IVCOMP - 6 ) 26600, 16600, 26600 02960025 |
| 16600 IVPASS = IVPASS + 1 02970025 |
| WRITE (I02,80001) IVTNUM 02980025 |
| GO TO 6611 02990025 |
| 26600 IVFAIL = IVFAIL + 1 03000025 |
| IVCORR = 6 03010025 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03020025 |
| 6611 CONTINUE 03030025 |
| IVTNUM = 661 03040025 |
| C 03050025 |
| C **** TEST 661 **** 03060025 |
| C TEST 661 - THIS TEST SETS THE ELEMENTS OF AN INTEGER ARRAY IN 03070025 |
| C COMMON TO MINUS THE VALUE OF THE INTEGER ARRAY SET IN TEST 659. 03080025 |
| C ELEMENT IADN32(1,1,2) = 4 SO ELEMENT IADN31(1,1,2) = -4 03090025 |
| C THE SAME INTEGER ASSIGNMENT STATEMENT IS USED AS THE TERMINATING 03100025 |
| C STATEMENT FOR ALL THREE DO LOOPS USED TO SET THE ARRAY VALUES 03110025 |
| C OF INTEGER ARRAY IADN31. 03120025 |
| C IF TEST 659 FAILS, THEN THIS TEST SHOULD ALSO FAIL. HOWEVER, THE 03130025 |
| C COMPUTED VALUES SHOULD RELATE IN THAT THE COMPUTED VALUE FOR 03140025 |
| C TEST 661 SHOULD BE MINUS THE COMPUTED VALUE FOR TEST 659. 03150025 |
| C 03160025 |
| IF (ICZERO) 36610, 6610, 36610 03170025 |
| 6610 CONTINUE 03180025 |
| DO 6612 I = 1, 2 03190025 |
| DO 6612 J = 1, 2 03200025 |
| DO 6612 K = 1, 2 03210025 |
| 6612 IADN31(I,J,K) = - IADN32 ( I, J, K ) 03220025 |
| IVCOMP = IADN31(1,1,2) 03230025 |
| GO TO 46610 03240025 |
| 36610 IVDELE = IVDELE + 1 03250025 |
| WRITE (I02,80003) IVTNUM 03260025 |
| IF (ICZERO) 46610, 6621, 46610 03270025 |
| 46610 IF ( IVCOMP + 4 ) 26610, 16610, 26610 03280025 |
| 16610 IVPASS = IVPASS + 1 03290025 |
| WRITE (I02,80001) IVTNUM 03300025 |
| GO TO 6621 03310025 |
| 26610 IVFAIL = IVFAIL + 1 03320025 |
| IVCORR = -4 03330025 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03340025 |
| 6621 CONTINUE 03350025 |
| IVTNUM = 662 03360025 |
| C 03370025 |
| C **** TEST 662 **** 03380025 |
| C TEST 662 - THIS IS A TEST OF A TRIPLE NESTED DO LOOP USED TO 03390025 |
| C SET THE VALUES OF A LOGICAL ARRAY LADN31. UNLIKE THE OTHER TESTS 03400025 |
| C THE THIRD DIMENSION IS SET LAST, THE FIRST DIMENSION IS SET SECOND03410025 |
| C AND THE SECOND DIMENSION IS SET FIRST. ALL ARRAY ELEMENTS ARE SET03420025 |
| C TO THE LOGICAL CONSTANT .FALSE. 03430025 |
| C 03440025 |
| IF (ICZERO) 36620, 6620, 36620 03450025 |
| 6620 CONTINUE 03460025 |
| DO 6622 K = 1, 2 03470025 |
| DO 6622 I = 1, 2 03480025 |
| DO 6622 J = 1, 2 03490025 |
| LADN31( I, J, K ) = .FALSE. 03500025 |
| 6622 CONTINUE 03510025 |
| ICON01 = 1 03520025 |
| IF ( LADN31(2,1,2) ) ICON01 = 0 03530025 |
| GO TO 46620 03540025 |
| 36620 IVDELE = IVDELE + 1 03550025 |
| WRITE (I02,80003) IVTNUM 03560025 |
| IF (ICZERO) 46620, 6631, 46620 03570025 |
| 46620 IF ( ICON01 - 1 ) 26620, 16620, 26620 03580025 |
| 16620 IVPASS = IVPASS + 1 03590025 |
| WRITE (I02,80001) IVTNUM 03600025 |
| GO TO 6631 03610025 |
| 26620 IVFAIL = IVFAIL + 1 03620025 |
| IVCOMP = ICON01 03630025 |
| IVCORR = 1 03640025 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03650025 |
| 6631 CONTINUE 03660025 |
| IVTNUM = 665 04030025 |
| C 04040025 |
| C **** TEST 665 **** 04050025 |
| C TEST 665 - ARRAY ELEMENTS SET TO TYPE REAL BY THE EXPLICIT 04060025 |
| C REAL STATEMENT ARE SET TO THE VALUE 0.5 AND USED TO SET THE VALUE 04070025 |
| C OF AN ARRAY ELEMENT SET TO TYPE INTEGER BY THE INTEGER STATEMENT. 04080025 |
| C THIS LAST INTEGER ELEMENT IS USED IN A LOGICAL IF STATEMENT 04090025 |
| C THAT SHOULD COMPARE TRUE. ( .5 + .5 + .5 ) * 2. .EQ. 3 04100025 |
| C 04110025 |
| IF (ICZERO) 36650, 6650, 36650 04120025 |
| 6650 CONTINUE 04130025 |
| IADN33(2,2,2) = 0.5 04140025 |
| IADN22(2,4) = 0.5 04150025 |
| IADN12(8) = 0.5 04160025 |
| RADN11(8) = ( IADN33(2,2,2) + IADN22(2,4) + IADN12(8) ) * 2. 04170025 |
| ICON01 = 0 04180025 |
| IF ( RADN11(8) .EQ. 3 ) ICON01 = 1 04190025 |
| GO TO 46650 04200025 |
| 36650 IVDELE = IVDELE + 1 04210025 |
| WRITE (I02,80003) IVTNUM 04220025 |
| IF (ICZERO) 46650, 6661, 46650 04230025 |
| 46650 IF ( ICON01 - 1 ) 26650, 16650, 26650 04240025 |
| 16650 IVPASS = IVPASS + 1 04250025 |
| WRITE (I02,80001) IVTNUM 04260025 |
| GO TO 6661 04270025 |
| 26650 IVFAIL = IVFAIL + 1 04280025 |
| IVCOMP = ICON01 04290025 |
| IVCORR = 1 04300025 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04310025 |
| 6661 CONTINUE 04320025 |
| C 04330025 |
| C WRITE PAGE FOOTINGS AND RUN SUMMARIES 04340025 |
| 99999 CONTINUE 04350025 |
| WRITE (I02,90002) 04360025 |
| WRITE (I02,90006) 04370025 |
| WRITE (I02,90002) 04380025 |
| WRITE (I02,90002) 04390025 |
| WRITE (I02,90007) 04400025 |
| WRITE (I02,90002) 04410025 |
| WRITE (I02,90008) IVFAIL 04420025 |
| WRITE (I02,90009) IVPASS 04430025 |
| WRITE (I02,90010) IVDELE 04440025 |
| C 04450025 |
| C 04460025 |
| C TERMINATE ROUTINE EXECUTION 04470025 |
| STOP 04480025 |
| C 04490025 |
| C FORMAT STATEMENTS FOR PAGE HEADERS 04500025 |
| 90000 FORMAT ("1") 04510025 |
| 90002 FORMAT (" ") 04520025 |
| 90001 FORMAT (" ",10X,"FORTRAN COMPILER VALIDATION SYSTEM" ) 04530025 |
| 90003 FORMAT (" ",21X,"VERSION 2.1" ) 04540025 |
| 90004 FORMAT (" ",10X,"FOR OFFICIAL USE ONLY - COPYRIGHT 1978" ) 04550025 |
| 90005 FORMAT (" ",5X,"TEST",5X,"PASS/FAIL", 5X,"COMPUTED",8X,"CORRECT") 04560025 |
| 90006 FORMAT (" ",5X,"----------------------------------------------" ) 04570025 |
| 90011 FORMAT (" ",18X,"SUBSET LEVEL TEST" ) 04580025 |
| C 04590025 |
| C FORMAT STATEMENTS FOR RUN SUMMARIES 04600025 |
| 90008 FORMAT (" ",15X,I5," ERRORS ENCOUNTERED" ) 04610025 |
| 90009 FORMAT (" ",15X,I5," TESTS PASSED" ) 04620025 |
| 90010 FORMAT (" ",15X,I5," TESTS DELETED" ) 04630025 |
| C 04640025 |
| C FORMAT STATEMENTS FOR TEST RESULTS 04650025 |
| 80001 FORMAT (" ",4X,I5,7X,"PASS") 04660025 |
| 80002 FORMAT (" ",4X,I5,7X,"FAIL") 04670025 |
| 80003 FORMAT (" ",4X,I5,7X,"DELETED") 04680025 |
| 80004 FORMAT (" ",4X,I5,7X,"FAIL",10X,I6,9X,I6) 04690025 |
| 80005 FORMAT (" ",4X,I5,7X,"FAIL",4X,E12.5,3X,E12.5) 04700025 |
| C 04710025 |
| 90007 FORMAT (" ",20X,"END OF PROGRAM FM025" ) 04720025 |
| END 04730025 |