| PROGRAM FM023 |
| |
| C COMMENT SECTION. 00010023 |
| C 00020023 |
| C FM023 00030023 |
| C 00040023 |
| C TWO DIMENSIONED ARRAYS ARE USED IN THIS ROUTINE. 00050023 |
| C THIS ROUTINE TESTS ARRAYS WITH FIXED DIMENSION AND SIZE LIMITS00060023 |
| C SET EITHER IN A BLANK COMMON OR DIMENSION STATEMENT. THE VALUES 00070023 |
| C OF THE ARRAY ELEMENTS ARE SET IN VARIOUS WAYS SUCH AS SIMPLE 00080023 |
| C ASSIGNMENT STATEMENTS, SET TO THE VALUES OF OTHER ARRAY ELEMENTS 00090023 |
| C (EITHER POSITIVE OR NEGATIVE), SET BY INTEGER TO REAL OR REAL TO 00100023 |
| C INTEGER CONVERSION, SET BY ARITHMETIC EXPRESSIONS, OR SET BY 00110023 |
| C USE OF THE EQUIVALENCE STATEMENT. 00120023 |
| C 00130023 |
| C 00140023 |
| C REFERENCES 00150023 |
| C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, 00160023 |
| C X3.9-1978 00170023 |
| C 00180023 |
| C SECTION 8, SPECIFICATION STATEMENTS 00190023 |
| C SECTION 8.1, DIMENSION STATEMENT 00200023 |
| C SECTION 8.2, EQUIVALENCE STATEMENT 00210023 |
| C SECTION 8.3, COMMON STATEMENT 00220023 |
| C SECTION 8.4, TYPE-STATEMENTS 00230023 |
| C SECTION 9, DATA STATEMENT 00240023 |
| C 00250023 |
| COMMON IADN22(2,2), RADN22(2,2), ICOE01, RCOE01 00260023 |
| DIMENSION IADN21(2,2), RADN21(2,2) 00270023 |
| DIMENSION IADE23(2,2), IADE24(2,2), RADE23(2,2), RADE24(2,2) 00280023 |
| EQUIVALENCE (IADE23(2,2),IADN22(2,2),IADE24(2,2)) 00290023 |
| EQUIVALENCE (RADE23(2,2),RADN22(2,2),RADE24(2,2)) 00300023 |
| EQUIVALENCE (ICOE01,ICOE02,ICOE03,ICOE04), (RCOE01,RCOE02,RCOE03) 00310023 |
| INTEGER RADN11(2), RADN25(2,2) 00320023 |
| LOGICAL LADN21(2,2) 00330023 |
| DATA RADN21(2,2)/-512./ 00340023 |
| DATA LADN21/4*.TRUE./ 00350023 |
| C 00360023 |
| C ********************************************************** 00370023 |
| C 00380023 |
| C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE 00390023 |
| C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN NATIONAL STANDARD 00400023 |
| C PROGRAMMING LANGUAGE FORTRAN X3.9-1978, HAS BEEN DEVELOPED BY THE 00410023 |
| C FEDERAL COBOL COMPILER TESTING SERVICE. THE FORTRAN COMPILER 00420023 |
| C VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT ROUTINES, THEIR RELATED00430023 |
| C DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT ROUTINE IS A FORTRAN 00440023 |
| C PROGRAM, SUBPROGRAM OR FUNCTION WHICH INCLUDES TESTS OF SPECIFIC 00450023 |
| C LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING THE RESULT 00460023 |
| C OF EXECUTING THESE TESTS. 00470023 |
| C 00480023 |
| C THIS PARTICULAR PROGRAM/SUBPROGRAM/FUNCTION CONTAINS FEATURES 00490023 |
| C FOUND ONLY IN THE SUBSET AS DEFINED IN X3.9-1978. 00500023 |
| C 00510023 |
| C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO - 00520023 |
| C 00530023 |
| C NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY 00540023 |
| C SOFTWARE STANDARDS VALIDATION GROUP 00550023 |
| C BUILDING 225 RM A266 00560023 |
| C GAITHERSBURG, MD 20899 00570023 |
| C ********************************************************** 00580023 |
| C 00590023 |
| C 00600023 |
| C 00610023 |
| C INITIALIZATION SECTION 00620023 |
| C 00630023 |
| C INITIALIZE CONSTANTS 00640023 |
| C ************** 00650023 |
| C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. 00660023 |
| I01 = 5 00670023 |
| C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. 00680023 |
| I02 = 6 00690023 |
| C SYSTEM ENVIRONMENT SECTION 00700023 |
| C 00710023 |
| CX010 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-010 CONTROL CARD. 00720023 |
| C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 00730023 |
| C (UNIT NUMBER FOR CARD READER). 00740023 |
| CX011 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-011 CONTROL CARD. 00750023 |
| C THE CX011 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00760023 |
| C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX010 ABOVE. 00770023 |
| C 00780023 |
| CX020 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-020 CONTROL CARD. 00790023 |
| C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02 = 6 00800023 |
| C (UNIT NUMBER FOR PRINTER). 00810023 |
| CX021 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-021 CONTROL CARD. 00820023 |
| C THE CX021 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00830023 |
| C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX020 ABOVE. 00840023 |
| C 00850023 |
| IVPASS=0 00860023 |
| IVFAIL=0 00870023 |
| IVDELE=0 00880023 |
| ICZERO=0 00890023 |
| C 00900023 |
| C WRITE PAGE HEADERS 00910023 |
| WRITE (I02,90000) 00920023 |
| WRITE (I02,90001) 00930023 |
| WRITE (I02,90002) 00940023 |
| WRITE (I02, 90002) 00950023 |
| WRITE (I02,90003) 00960023 |
| WRITE (I02,90002) 00970023 |
| WRITE (I02,90004) 00980023 |
| WRITE (I02,90002) 00990023 |
| WRITE (I02,90011) 01000023 |
| WRITE (I02,90002) 01010023 |
| WRITE (I02,90002) 01020023 |
| WRITE (I02,90005) 01030023 |
| WRITE (I02,90006) 01040023 |
| WRITE (I02,90002) 01050023 |
| IVTNUM = 632 01060023 |
| C 01070023 |
| C **** TEST 632 **** 01080023 |
| C TEST 632 - TESTS SETTING AN INTEGER ARRAY ELEMENT BY A 01090023 |
| C SIMPLE ASSIGNMENT STATEMENT TO THE VALUE 9999. 01100023 |
| C 01110023 |
| IF (ICZERO) 36320, 6320, 36320 01120023 |
| 6320 CONTINUE 01130023 |
| IADN21(1,1) = 9999 01140023 |
| IVCOMP = IADN21(1,1) 01150023 |
| GO TO 46320 01160023 |
| 36320 IVDELE = IVDELE + 1 01170023 |
| WRITE (I02,80003) IVTNUM 01180023 |
| IF (ICZERO) 46320, 6331, 46320 01190023 |
| 46320 IF ( IVCOMP - 9999 ) 26320, 16320, 26320 01200023 |
| 16320 IVPASS = IVPASS + 1 01210023 |
| WRITE (I02,80001) IVTNUM 01220023 |
| GO TO 6331 01230023 |
| 26320 IVFAIL = IVFAIL + 1 01240023 |
| IVCORR = 9999 01250023 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01260023 |
| 6331 CONTINUE 01270023 |
| IVTNUM = 633 01280023 |
| C 01290023 |
| C **** TEST 633 **** 01300023 |
| C TEST 633 - TESTS SETTING A REAL ARRAY ELEMENT BY A SIMPLE 01310023 |
| C ASSIGNMENT STATEMENT TO THE VALUE -32766. 01320023 |
| C 01330023 |
| IF (ICZERO) 36330, 6330, 36330 01340023 |
| 6330 CONTINUE 01350023 |
| RADN21(1,2) = -32766. 01360023 |
| IVCOMP = RADN21(1,2) 01370023 |
| GO TO 46330 01380023 |
| 36330 IVDELE = IVDELE + 1 01390023 |
| WRITE (I02,80003) IVTNUM 01400023 |
| IF (ICZERO) 46330, 6341, 46330 01410023 |
| 46330 IF ( IVCOMP + 32766 ) 26330, 16330, 26330 01420023 |
| 16330 IVPASS = IVPASS + 1 01430023 |
| WRITE (I02,80001) IVTNUM 01440023 |
| GO TO 6341 01450023 |
| 26330 IVFAIL = IVFAIL + 1 01460023 |
| IVCORR = -32766 01470023 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01480023 |
| 6341 CONTINUE 01490023 |
| IVTNUM = 634 01500023 |
| C 01510023 |
| C **** TEST 634 **** 01520023 |
| C TEST 634 - TEST OF THE DATA INITIALIZATION STATEMENT AND SETTING01530023 |
| C AN INTEGER ARRAY ELEMENT EQUAL TO THE VALUE OF A REAL ARRAY 01540023 |
| C ELEMENT. THE VALUE USED IS -512. 01550023 |
| C 01560023 |
| IF (ICZERO) 36340, 6340, 36340 01570023 |
| 6340 CONTINUE 01580023 |
| IADN21(2,2) = RADN21(2,2) 01590023 |
| IVCOMP = IADN21(2,2) 01600023 |
| GO TO 46340 01610023 |
| 36340 IVDELE = IVDELE + 1 01620023 |
| WRITE (I02,80003) IVTNUM 01630023 |
| IF (ICZERO) 46340, 6351, 46340 01640023 |
| 46340 IF ( IVCOMP + 512 ) 26340, 16340, 26340 01650023 |
| 16340 IVPASS = IVPASS + 1 01660023 |
| WRITE (I02,80001) IVTNUM 01670023 |
| GO TO 6351 01680023 |
| 26340 IVFAIL = IVFAIL + 1 01690023 |
| IVCORR = -512 01700023 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01710023 |
| 6351 CONTINUE 01720023 |
| IVTNUM = 635 01730023 |
| C 01740023 |
| C **** TEST 635 **** 01750023 |
| C TEST 635 - TEST OF SETTING A TWO DIMENSIONED ARRAY ELEMENT 01760023 |
| C EQUAL TO THE VALUE OF A ONE DIMENSIONED ARRAY ELEMENT. 01770023 |
| C BOTH ARRAYS ARE SET INTEGER BY THE TYPE STATEMENT AND THE TWO 01780023 |
| C DIMENSIONED ARRAY ELEMENT IS MINUS THE VALUE OF THE ONE DIMENSION 01790023 |
| C ELEMENT. THE VALUE USED IS 3. 01800023 |
| C 01810023 |
| IF (ICZERO) 36350, 6350, 36350 01820023 |
| 6350 CONTINUE 01830023 |
| RADN11(1) = 3 01840023 |
| RADN25(2,2) = - RADN11(1) 01850023 |
| IVCOMP = RADN25(2,2) 01860023 |
| GO TO 46350 01870023 |
| 36350 IVDELE = IVDELE + 1 01880023 |
| WRITE (I02,80003) IVTNUM 01890023 |
| IF (ICZERO) 46350, 6361, 46350 01900023 |
| 46350 IF ( IVCOMP + 3 ) 26350, 16350, 26350 01910023 |
| 16350 IVPASS = IVPASS + 1 01920023 |
| WRITE (I02,80001) IVTNUM 01930023 |
| GO TO 6361 01940023 |
| 26350 IVFAIL = IVFAIL + 1 01950023 |
| IVCORR = -3 01960023 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01970023 |
| 6361 CONTINUE 01980023 |
| IVTNUM = 636 01990023 |
| C 02000023 |
| C **** TEST 636 **** 02010023 |
| C TEST 636 - TEST OF LOGICAL ARRAY ELEMENTS SET BY DATA STATEMENTS02020023 |
| C 02030023 |
| IF (ICZERO) 36360, 6360, 36360 02040023 |
| 6360 CONTINUE 02050023 |
| ICON01 = 0 02060023 |
| IF ( LADN21(2,1) ) ICON01 = 1 02070023 |
| GO TO 46360 02080023 |
| 36360 IVDELE = IVDELE + 1 02090023 |
| WRITE (I02,80003) IVTNUM 02100023 |
| IF (ICZERO) 46360, 6371, 46360 02110023 |
| 46360 IF ( ICON01 - 1 ) 26360, 16360, 26360 02120023 |
| 16360 IVPASS = IVPASS + 1 02130023 |
| WRITE (I02,80001) IVTNUM 02140023 |
| GO TO 6371 02150023 |
| 26360 IVFAIL = IVFAIL + 1 02160023 |
| IVCOMP = ICON01 02170023 |
| IVCORR = 1 02180023 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02190023 |
| 6371 CONTINUE 02200023 |
| IVTNUM = 637 02210023 |
| C 02220023 |
| C **** TEST 637 **** 02230023 |
| C TEST 637 - TEST OF REAL TO INTEGER CONVERSION AND SETTING 02240023 |
| C INTEGER ARRAY ELEMENTS TO THE VALUE OBTAINED IN AN ARITHMETIC 02250023 |
| C EXPRESSION USING REAL ARRAY ELEMENTS. .5 + .5 = 1 02260023 |
| C 02270023 |
| IF (ICZERO) 36370, 6370, 36370 02280023 |
| 6370 CONTINUE 02290023 |
| RADN21(1,2) = 00000.5 02300023 |
| RADN21(2,1) = .500000 02310023 |
| IADN21(2,1) = RADN21(1,2) + RADN21(2,1) 02320023 |
| IVCOMP = IADN21(2,1) 02330023 |
| GO TO 46370 02340023 |
| 36370 IVDELE = IVDELE + 1 02350023 |
| WRITE (I02,80003) IVTNUM 02360023 |
| IF (ICZERO) 46370, 6381, 46370 02370023 |
| 46370 IF ( IVCOMP - 1 ) 26370, 16370, 26370 02380023 |
| 16370 IVPASS = IVPASS + 1 02390023 |
| WRITE (I02,80001) IVTNUM 02400023 |
| GO TO 6381 02410023 |
| 26370 IVFAIL = IVFAIL + 1 02420023 |
| IVCORR = 1 02430023 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02440023 |
| 6381 CONTINUE 02450023 |
| IVTNUM = 638 02460023 |
| C 02470023 |
| C **** TEST 638 **** 02480023 |
| C TEST 638 - TEST OF EQUIVALENCE OF THREE INTEGER ARRAYS ONE OF 02490023 |
| C WHICH IS IN COMMON. 02500023 |
| C 02510023 |
| IF (ICZERO) 36380, 6380, 36380 02520023 |
| 6380 CONTINUE 02530023 |
| IADN22(2,1) = -9999 02540023 |
| IVCOMP = IADE23(2,1) 02550023 |
| GO TO 46380 02560023 |
| 36380 IVDELE = IVDELE + 1 02570023 |
| WRITE (I02,80003) IVTNUM 02580023 |
| IF (ICZERO) 46380, 6391, 46380 02590023 |
| 46380 IF ( IVCOMP + 9999 ) 26380, 16380, 26380 02600023 |
| 16380 IVPASS = IVPASS + 1 02610023 |
| WRITE (I02,80001) IVTNUM 02620023 |
| GO TO 6391 02630023 |
| 26380 IVFAIL = IVFAIL + 1 02640023 |
| IVCORR = -9999 02650023 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02660023 |
| 6391 CONTINUE 02670023 |
| IVTNUM = 639 02680023 |
| C 02690023 |
| C **** TEST 639 **** 02700023 |
| C TEST 639 - LIKE TEST 638 ONLY THE OTHER EQUIVALENCED ARRAY IS 02710023 |
| C TESTED FOR THE VALUE -9999. 02720023 |
| C 02730023 |
| IF (ICZERO) 36390, 6390, 36390 02740023 |
| 6390 CONTINUE 02750023 |
| IADE23(2,1) = -9999 02760023 |
| IVCOMP = IADE24(2,1) 02770023 |
| GO TO 46390 02780023 |
| 36390 IVDELE = IVDELE + 1 02790023 |
| WRITE (I02,80003) IVTNUM 02800023 |
| IF (ICZERO) 46390, 6401, 46390 02810023 |
| 46390 IF ( IVCOMP + 9999 ) 26390, 16390, 26390 02820023 |
| 16390 IVPASS = IVPASS + 1 02830023 |
| WRITE (I02,80001) IVTNUM 02840023 |
| GO TO 6401 02850023 |
| 26390 IVFAIL = IVFAIL + 1 02860023 |
| IVCORR = -9999 02870023 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02880023 |
| 6401 CONTINUE 02890023 |
| IVTNUM = 640 02900023 |
| C 02910023 |
| C **** TEST 640 **** 02920023 |
| C TEST 640 - TEST OF THREE REAL ARRAYS THAT ARE EQUIVALENCED. 02930023 |
| C ONE OF THE ARRAYS IS IN COMMON. THE VALUE 512 IS SET INTO ONE OF 02940023 |
| C THE DIMENSIONED ARRAY ELEMENTS BY AN INTEGER TO REAL CONVERSION 02950023 |
| C ASSIGNMENT STATEMENT. 02960023 |
| C 02970023 |
| IF (ICZERO) 36400, 6400, 36400 02980023 |
| 6400 CONTINUE 02990023 |
| RADE24(2,2) = 512 03000023 |
| IVCOMP = RADN22(2,2) 03010023 |
| GO TO 46400 03020023 |
| 36400 IVDELE = IVDELE + 1 03030023 |
| WRITE (I02,80003) IVTNUM 03040023 |
| IF (ICZERO) 46400, 6411, 46400 03050023 |
| 46400 IF ( IVCOMP - 512 ) 26400, 16400, 26400 03060023 |
| 16400 IVPASS = IVPASS + 1 03070023 |
| WRITE (I02,80001) IVTNUM 03080023 |
| GO TO 6411 03090023 |
| 26400 IVFAIL = IVFAIL + 1 03100023 |
| IVCORR = 512 03110023 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03120023 |
| 6411 CONTINUE 03130023 |
| IVTNUM = 641 03140023 |
| C 03150023 |
| C **** TEST 641 **** 03160023 |
| C TEST 641 - LIKE TEST 640 ONLY THE OTHER EQUIVALENCED ARRAY IS 03170023 |
| C TESTED FOR THE VALUE 512. 03180023 |
| C 03190023 |
| IF (ICZERO) 36410, 6410, 36410 03200023 |
| 6410 CONTINUE 03210023 |
| RADN22(2,2) = 512 03220023 |
| IVCOMP = RADE23(2,2) 03230023 |
| GO TO 46410 03240023 |
| 36410 IVDELE = IVDELE + 1 03250023 |
| WRITE (I02,80003) IVTNUM 03260023 |
| IF (ICZERO) 46410, 6421, 46410 03270023 |
| 46410 IF ( IVCOMP - 512 ) 26410, 16410, 26410 03280023 |
| 16410 IVPASS = IVPASS + 1 03290023 |
| WRITE (I02,80001) IVTNUM 03300023 |
| GO TO 6421 03310023 |
| 26410 IVFAIL = IVFAIL + 1 03320023 |
| IVCORR = 512 03330023 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03340023 |
| 6421 CONTINUE 03350023 |
| IVTNUM = 642 03360023 |
| C 03370023 |
| C **** TEST 642 **** 03380023 |
| C TEST 642 - TEST OF FOUR INTEGER VARIABLES THAT ARE EQUIVALENCED.03390023 |
| C ONE OF THE INTEGER VARIABLES IS IN BLANK COMMON. THE VALUE USED 03400023 |
| C IS 3 SET BY AN ASSIGNMENT STATEMENT. 03410023 |
| C 03420023 |
| IF (ICZERO) 36420, 6420, 36420 03430023 |
| 6420 CONTINUE 03440023 |
| ICOE03 = 3 03450023 |
| IVCOMP = ICOE01 03460023 |
| GO TO 46420 03470023 |
| 36420 IVDELE = IVDELE + 1 03480023 |
| WRITE (I02,80003) IVTNUM 03490023 |
| IF (ICZERO) 46420, 6431, 46420 03500023 |
| 46420 IF ( IVCOMP - 3 ) 26420, 16420, 26420 03510023 |
| 16420 IVPASS = IVPASS + 1 03520023 |
| WRITE (I02,80001) IVTNUM 03530023 |
| GO TO 6431 03540023 |
| 26420 IVFAIL = IVFAIL + 1 03550023 |
| IVCORR = 3 03560023 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03570023 |
| 6431 CONTINUE 03580023 |
| IVTNUM = 643 03590023 |
| C 03600023 |
| C **** TEST 643 **** 03610023 |
| C TEST 643 - LIKE TEST 642 BUT ANOTHER OF THE ELEMENTS IS TESTED 03620023 |
| C BY AN ARITHMETIC EXPRESSION USING THE EQUIVALENCED ELEMENTS. 03630023 |
| C THE VALUE OF ALL OF THE ELEMENTS SHOULD INITITIALLY BE 3 SINCE 03640023 |
| C THEY ALL SHOULD SHARE THE SAME STORAGE LOCATION. ICOE04 = 3+3+3+3 03650023 |
| C ICOE04 = 12 THEN THE ELEMENT ICOE02 IS TESTED FOR THE VALUE 12. 03660023 |
| C 03670023 |
| IF (ICZERO) 36430, 6430, 36430 03680023 |
| 6430 CONTINUE 03690023 |
| ICOE01 = 3 03700023 |
| ICOE04 = ICOE01 + ICOE02 + ICOE03 + ICOE04 03710023 |
| IVCOMP = ICOE02 03720023 |
| GO TO 46430 03730023 |
| 36430 IVDELE = IVDELE + 1 03740023 |
| WRITE (I02,80003) IVTNUM 03750023 |
| IF (ICZERO) 46430, 6441, 46430 03760023 |
| 46430 IF ( IVCOMP - 12 ) 26430, 16430, 26430 03770023 |
| 16430 IVPASS = IVPASS + 1 03780023 |
| WRITE (I02,80001) IVTNUM 03790023 |
| GO TO 6441 03800023 |
| 26430 IVFAIL = IVFAIL + 1 03810023 |
| IVCORR = 12 03820023 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03830023 |
| 6441 CONTINUE 03840023 |
| IVTNUM = 644 03850023 |
| C 03860023 |
| C **** TEST 644 **** 03870023 |
| C TEST 644 - TEST OF EQUIVALENCE WITH THREE REAL VARIABLES ONE 03880023 |
| C OF WHICH IS IN BLANK COMMON. THE ELEMENTS ARE SET INITIALLY TO .503890023 |
| C THEN ALL OF THE ELEMENTS ARE USED IN AN ARITHMETIC EXPRESSION 03900023 |
| C RCOE01 =(.5 + .5 + .5) * 2. SO RCOE01 = 3. ELEMENT RCOE02 03910023 |
| C IS TESTED FOR THE VALUE 3. 03920023 |
| C 03930023 |
| IF (ICZERO) 36440, 6440, 36440 03940023 |
| 6440 CONTINUE 03950023 |
| RCOE02 = 0.5 03960023 |
| RCOE01 = ( RCOE01 + RCOE02 + RCOE03 ) * 2. 03970023 |
| IVCOMP = RCOE02 03980023 |
| GO TO 46440 03990023 |
| 36440 IVDELE = IVDELE + 1 04000023 |
| WRITE (I02,80003) IVTNUM 04010023 |
| IF (ICZERO) 46440, 6451, 46440 04020023 |
| 46440 IF ( IVCOMP - 3 ) 26440, 16440, 26440 04030023 |
| 16440 IVPASS = IVPASS + 1 04040023 |
| WRITE (I02,80001) IVTNUM 04050023 |
| GO TO 6451 04060023 |
| 26440 IVFAIL = IVFAIL + 1 04070023 |
| IVCORR = 3 04080023 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04090023 |
| 6451 CONTINUE 04100023 |
| C 04110023 |
| C WRITE PAGE FOOTINGS AND RUN SUMMARIES 04120023 |
| 99999 CONTINUE 04130023 |
| WRITE (I02,90002) 04140023 |
| WRITE (I02,90006) 04150023 |
| WRITE (I02,90002) 04160023 |
| WRITE (I02,90002) 04170023 |
| WRITE (I02,90007) 04180023 |
| WRITE (I02,90002) 04190023 |
| WRITE (I02,90008) IVFAIL 04200023 |
| WRITE (I02,90009) IVPASS 04210023 |
| WRITE (I02,90010) IVDELE 04220023 |
| C 04230023 |
| C 04240023 |
| C TERMINATE ROUTINE EXECUTION 04250023 |
| STOP 04260023 |
| C 04270023 |
| C FORMAT STATEMENTS FOR PAGE HEADERS 04280023 |
| 90000 FORMAT ("1") 04290023 |
| 90002 FORMAT (" ") 04300023 |
| 90001 FORMAT (" ",10X,"FORTRAN COMPILER VALIDATION SYSTEM" ) 04310023 |
| 90003 FORMAT (" ",21X,"VERSION 2.1" ) 04320023 |
| 90004 FORMAT (" ",10X,"FOR OFFICIAL USE ONLY - COPYRIGHT 1978" ) 04330023 |
| 90005 FORMAT (" ",5X,"TEST",5X,"PASS/FAIL", 5X,"COMPUTED",8X,"CORRECT") 04340023 |
| 90006 FORMAT (" ",5X,"----------------------------------------------" ) 04350023 |
| 90011 FORMAT (" ",18X,"SUBSET LEVEL TEST" ) 04360023 |
| C 04370023 |
| C FORMAT STATEMENTS FOR RUN SUMMARIES 04380023 |
| 90008 FORMAT (" ",15X,I5," ERRORS ENCOUNTERED" ) 04390023 |
| 90009 FORMAT (" ",15X,I5," TESTS PASSED" ) 04400023 |
| 90010 FORMAT (" ",15X,I5," TESTS DELETED" ) 04410023 |
| C 04420023 |
| C FORMAT STATEMENTS FOR TEST RESULTS 04430023 |
| 80001 FORMAT (" ",4X,I5,7X,"PASS") 04440023 |
| 80002 FORMAT (" ",4X,I5,7X,"FAIL") 04450023 |
| 80003 FORMAT (" ",4X,I5,7X,"DELETED") 04460023 |
| 80004 FORMAT (" ",4X,I5,7X,"FAIL",10X,I6,9X,I6) 04470023 |
| 80005 FORMAT (" ",4X,I5,7X,"FAIL",4X,E12.5,3X,E12.5) 04480023 |
| C 04490023 |
| 90007 FORMAT (" ",20X,"END OF PROGRAM FM023" ) 04500023 |
| END 04510023 |