| PROGRAM FM034 |
| |
| C COMMENT SECTION 00010034 |
| C 00020034 |
| C FM034 00030034 |
| C 00040034 |
| C THIS ROUTINE TESTS ARITHMETIC ASSIGNMENT STATEMENTS OF THE 00050034 |
| C FORM 00060034 |
| C INTEGER VARIABLE = ARITHMETIC EXPRESSION 00070034 |
| C WHERE THE ARITHMETIC EXPRESSION IS FORMED WITH THE ARITHMETIC 00080034 |
| C OPERATOR *, INTEGER VARIABLE AND INTEGER CONSTANT. SOME OF THE 00090034 |
| C TESTS USE PARENTHESES TO GROUP ELEMENTS IN THE EXPRESSION AND TO 00100034 |
| C ALLOW THE USE OF NEGATIVE CONSTANTS FOLLOWING THE * OPERATOR. 00110034 |
| C THE INTEGER VARIABLES CONTAIN POSITIVE AND NEGATIVE VALUES. 00120034 |
| C 00130034 |
| C THERE ARE TESTS WHERE THE ARITHMETIC EXPRESSION CONTAINS 00140034 |
| C (1) INTEGER VARIABLE * INTEGER CONSTANT 00150034 |
| C INTEGER CONSTANT * INTEGER VARIABLE 00160034 |
| C (2) INTEGER CONSTANT * INTEGER VARIABLE * INTEGER CONSTANT 00170034 |
| C (3) SAME AS (2) BUT WITH PARENS TO GROUP ELEMENTS. 00180034 |
| C 00190034 |
| C REFERENCES 00200034 |
| C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, 00210034 |
| C X3.9-1978 00220034 |
| C 00230034 |
| C SECTION 4.3, INTEGER TYPE 00240034 |
| C SECTION 4.3.1, INTEGER CONSTANT 00250034 |
| C SECTION 6.1, ARITHMETIC EXPRESSIONS 00260034 |
| C SECTION 10.1, ARITHMETIC ASSIGNMENT STATEMENT 00270034 |
| C 00280034 |
| C ********************************************************** 00290034 |
| C 00300034 |
| C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE 00310034 |
| C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN NATIONAL STANDARD 00320034 |
| C PROGRAMMING LANGUAGE FORTRAN X3.9-1978, HAS BEEN DEVELOPED BY THE 00330034 |
| C FEDERAL COBOL COMPILER TESTING SERVICE. THE FORTRAN COMPILER 00340034 |
| C VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT ROUTINES, THEIR RELATED00350034 |
| C DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT ROUTINE IS A FORTRAN 00360034 |
| C PROGRAM, SUBPROGRAM OR FUNCTION WHICH INCLUDES TESTS OF SPECIFIC 00370034 |
| C LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING THE RESULT 00380034 |
| C OF EXECUTING THESE TESTS. 00390034 |
| C 00400034 |
| C THIS PARTICULAR PROGRAM/SUBPROGRAM/FUNCTION CONTAINS FEATURES 00410034 |
| C FOUND ONLY IN THE SUBSET AS DEFINED IN X3.9-1978. 00420034 |
| C 00430034 |
| C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO - 00440034 |
| C 00450034 |
| C NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY 00460034 |
| C SOFTWARE STANDARDS VALIDATION GROUP 00470034 |
| C BUILDING 225 RM A266 00480034 |
| C GAITHERSBURG, MD 20899 00490034 |
| C ********************************************************** 00500034 |
| C 00510034 |
| C 00520034 |
| C 00530034 |
| C INITIALIZATION SECTION 00540034 |
| C 00550034 |
| C INITIALIZE CONSTANTS 00560034 |
| C ************** 00570034 |
| C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. 00580034 |
| I01 = 5 00590034 |
| C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. 00600034 |
| I02 = 6 00610034 |
| C SYSTEM ENVIRONMENT SECTION 00620034 |
| C 00630034 |
| CX010 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-010 CONTROL CARD. 00640034 |
| C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 00650034 |
| C (UNIT NUMBER FOR CARD READER). 00660034 |
| CX011 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-011 CONTROL CARD. 00670034 |
| C THE CX011 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00680034 |
| C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX010 ABOVE. 00690034 |
| C 00700034 |
| CX020 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-020 CONTROL CARD. 00710034 |
| C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02 = 6 00720034 |
| C (UNIT NUMBER FOR PRINTER). 00730034 |
| CX021 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-021 CONTROL CARD. 00740034 |
| C THE CX021 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00750034 |
| C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX020 ABOVE. 00760034 |
| C 00770034 |
| IVPASS=0 00780034 |
| IVFAIL=0 00790034 |
| IVDELE=0 00800034 |
| ICZERO=0 00810034 |
| C 00820034 |
| C WRITE PAGE HEADERS 00830034 |
| WRITE (I02,90000) 00840034 |
| WRITE (I02,90001) 00850034 |
| WRITE (I02,90002) 00860034 |
| WRITE (I02, 90002) 00870034 |
| WRITE (I02,90003) 00880034 |
| WRITE (I02,90002) 00890034 |
| WRITE (I02,90004) 00900034 |
| WRITE (I02,90002) 00910034 |
| WRITE (I02,90011) 00920034 |
| WRITE (I02,90002) 00930034 |
| WRITE (I02,90002) 00940034 |
| WRITE (I02,90005) 00950034 |
| WRITE (I02,90006) 00960034 |
| WRITE (I02,90002) 00970034 |
| C 00980034 |
| C TEST SECTION 00990034 |
| C 01000034 |
| C ARITHMETIC ASSIGNMENT STATEMENT 01010034 |
| C 01020034 |
| C TEST 395 THROUGH TEST 414 CONTAIN AN INTEGER VARIABLE, AN INTEGER 01030034 |
| C CONSTANT, AND OPERATOR * IN AN ARITHMETIC EXPRESSION. 01040034 |
| C 01050034 |
| C TEST 395 THROUGH TEST 406 - IV= IV * IC 01060034 |
| C 01070034 |
| C TEST 395 THROUGH TEST 398 01080034 |
| C POSITIVE INTEGER VARIABLE, POSITIVE INTEGER CONSTANT 01090034 |
| C 01100034 |
| 3951 CONTINUE 01110034 |
| IVTNUM = 395 01120034 |
| C 01130034 |
| C **** TEST 395 **** 01140034 |
| C 01150034 |
| IF (ICZERO) 33950, 3950, 33950 01160034 |
| 3950 CONTINUE 01170034 |
| IVON01 = 2 01180034 |
| IVCOMP = IVON01 * 3 01190034 |
| GO TO 43950 01200034 |
| 33950 IVDELE = IVDELE + 1 01210034 |
| WRITE (I02,80003) IVTNUM 01220034 |
| IF (ICZERO) 43950, 3961, 43950 01230034 |
| 43950 IF (IVCOMP -6) 23950,13950,23950 01240034 |
| 13950 IVPASS = IVPASS + 1 01250034 |
| WRITE (I02,80001) IVTNUM 01260034 |
| GO TO 3961 01270034 |
| 23950 IVFAIL = IVFAIL + 1 01280034 |
| IVCORR =6 01290034 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01300034 |
| 3961 CONTINUE 01310034 |
| IVTNUM = 396 01320034 |
| C 01330034 |
| C **** TEST 396 **** 01340034 |
| C 01350034 |
| IF (ICZERO) 33960, 3960, 33960 01360034 |
| 3960 CONTINUE 01370034 |
| IVON01 = 13 01380034 |
| IVCOMP = IVON01 * 11 01390034 |
| GO TO 43960 01400034 |
| 33960 IVDELE = IVDELE + 1 01410034 |
| WRITE (I02,80003) IVTNUM 01420034 |
| IF (ICZERO) 43960, 3971, 43960 01430034 |
| 43960 IF (IVCOMP - 143) 23960,13960,23960 01440034 |
| 13960 IVPASS = IVPASS + 1 01450034 |
| WRITE (I02,80001) IVTNUM 01460034 |
| GO TO 3971 01470034 |
| 23960 IVFAIL = IVFAIL + 1 01480034 |
| IVCORR = 143 01490034 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01500034 |
| 3971 CONTINUE 01510034 |
| IVTNUM = 397 01520034 |
| C 01530034 |
| C **** TEST 397 **** 01540034 |
| C 01550034 |
| IF (ICZERO) 33970, 3970, 33970 01560034 |
| 3970 CONTINUE 01570034 |
| IVON01 = 223 01580034 |
| IVCOMP = IVON01 * 99 01590034 |
| GO TO 43970 01600034 |
| 33970 IVDELE = IVDELE + 1 01610034 |
| WRITE (I02,80003) IVTNUM 01620034 |
| IF (ICZERO) 43970, 3981, 43970 01630034 |
| 43970 IF (IVCOMP - 22077) 23970,13970,23970 01640034 |
| 13970 IVPASS = IVPASS + 1 01650034 |
| WRITE (I02,80001) IVTNUM 01660034 |
| GO TO 3981 01670034 |
| 23970 IVFAIL = IVFAIL + 1 01680034 |
| IVCORR = 22077 01690034 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01700034 |
| 3981 CONTINUE 01710034 |
| IVTNUM = 398 01720034 |
| C 01730034 |
| C **** TEST 398 **** 01740034 |
| C 01750034 |
| IF (ICZERO) 33980, 3980, 33980 01760034 |
| 3980 CONTINUE 01770034 |
| IVON01 = 11235 01780034 |
| IVCOMP = IVON01 * 2 01790034 |
| GO TO 43980 01800034 |
| 33980 IVDELE = IVDELE + 1 01810034 |
| WRITE (I02,80003) IVTNUM 01820034 |
| IF (ICZERO) 43980, 3991, 43980 01830034 |
| 43980 IF (IVCOMP - 22470) 23980,13980,23980 01840034 |
| 13980 IVPASS = IVPASS + 1 01850034 |
| WRITE (I02,80001) IVTNUM 01860034 |
| GO TO 3991 01870034 |
| 23980 IVFAIL = IVFAIL + 1 01880034 |
| IVCORR = 22470 01890034 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01900034 |
| C 01910034 |
| C TEST 399 THROUGH TEST 402 01920034 |
| C NEGATIVE INTEGER VARIABLE, POSITIVE INTEGER CONSTANT 01930034 |
| C 01940034 |
| 3991 CONTINUE 01950034 |
| IVTNUM = 399 01960034 |
| C 01970034 |
| C **** TEST 399 **** 01980034 |
| C 01990034 |
| IF (ICZERO) 33990, 3990, 33990 02000034 |
| 3990 CONTINUE 02010034 |
| IVON01 = -2 02020034 |
| IVCOMP = IVON01 * 3 02030034 |
| GO TO 43990 02040034 |
| 33990 IVDELE = IVDELE + 1 02050034 |
| WRITE (I02,80003) IVTNUM 02060034 |
| IF (ICZERO) 43990, 4001, 43990 02070034 |
| 43990 IF (IVCOMP +6) 23990,13990,23990 02080034 |
| 13990 IVPASS = IVPASS + 1 02090034 |
| WRITE (I02,80001) IVTNUM 02100034 |
| GO TO 4001 02110034 |
| 23990 IVFAIL = IVFAIL + 1 02120034 |
| IVCORR = -6 02130034 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02140034 |
| 4001 CONTINUE 02150034 |
| IVTNUM = 400 02160034 |
| C 02170034 |
| C **** TEST 400 **** 02180034 |
| C 02190034 |
| IF (ICZERO) 34000, 4000, 34000 02200034 |
| 4000 CONTINUE 02210034 |
| IVON01 = -13 02220034 |
| IVCOMP =IVON01*11 02230034 |
| GO TO 44000 02240034 |
| 34000 IVDELE = IVDELE + 1 02250034 |
| WRITE (I02,80003) IVTNUM 02260034 |
| IF (ICZERO) 44000, 4011, 44000 02270034 |
| 44000 IF (IVCOMP +143) 24000,14000,24000 02280034 |
| 14000 IVPASS = IVPASS + 1 02290034 |
| WRITE (I02,80001) IVTNUM 02300034 |
| GO TO 4011 02310034 |
| 24000 IVFAIL = IVFAIL + 1 02320034 |
| IVCORR = -143 02330034 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02340034 |
| 4011 CONTINUE 02350034 |
| IVTNUM = 401 02360034 |
| C 02370034 |
| C **** TEST 401 **** 02380034 |
| C 02390034 |
| IF (ICZERO) 34010, 4010, 34010 02400034 |
| 4010 CONTINUE 02410034 |
| IVON01 = -223 02420034 |
| IVCOMP = IVON01*99 02430034 |
| GO TO 44010 02440034 |
| 34010 IVDELE = IVDELE + 1 02450034 |
| WRITE (I02,80003) IVTNUM 02460034 |
| IF (ICZERO) 44010, 4021, 44010 02470034 |
| 44010 IF (IVCOMP + 22077) 24010,14010,24010 02480034 |
| 14010 IVPASS = IVPASS + 1 02490034 |
| WRITE (I02,80001) IVTNUM 02500034 |
| GO TO 4021 02510034 |
| 24010 IVFAIL = IVFAIL + 1 02520034 |
| IVCORR = -22077 02530034 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02540034 |
| 4021 CONTINUE 02550034 |
| IVTNUM = 402 02560034 |
| C 02570034 |
| C **** TEST 402 **** 02580034 |
| C 02590034 |
| IF (ICZERO) 34020, 4020, 34020 02600034 |
| 4020 CONTINUE 02610034 |
| IVON01 = -11235 02620034 |
| IVCOMP = IVON01*2 02630034 |
| GO TO 44020 02640034 |
| 34020 IVDELE = IVDELE + 1 02650034 |
| WRITE (I02,80003) IVTNUM 02660034 |
| IF (ICZERO) 44020, 4031, 44020 02670034 |
| 44020 IF (IVCOMP+22470) 24020,14020,24020 02680034 |
| 14020 IVPASS = IVPASS + 1 02690034 |
| WRITE (I02,80001) IVTNUM 02700034 |
| GO TO 4031 02710034 |
| 24020 IVFAIL = IVFAIL + 1 02720034 |
| IVCORR = -22470 02730034 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02740034 |
| C 02750034 |
| C TEST 403 AND TEST 404 02760034 |
| C NEGATIVE INTEGER VARIABLE, NEGATIVE INTEGER CONSTANT 02770034 |
| C 02780034 |
| 4031 CONTINUE 02790034 |
| IVTNUM = 403 02800034 |
| C 02810034 |
| C **** TEST 403 **** 02820034 |
| C 02830034 |
| IF (ICZERO) 34030, 4030, 34030 02840034 |
| 4030 CONTINUE 02850034 |
| IVON01=-2 02860034 |
| IVCOMP = IVON01*(-3) 02870034 |
| GO TO 44030 02880034 |
| 34030 IVDELE = IVDELE + 1 02890034 |
| WRITE (I02,80003) IVTNUM 02900034 |
| IF (ICZERO) 44030, 4041, 44030 02910034 |
| 44030 IF (IVCOMP -6) 24030,14030,24030 02920034 |
| 14030 IVPASS = IVPASS + 1 02930034 |
| WRITE (I02,80001) IVTNUM 02940034 |
| GO TO 4041 02950034 |
| 24030 IVFAIL = IVFAIL + 1 02960034 |
| IVCORR =6 02970034 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02980034 |
| 4041 CONTINUE 02990034 |
| IVTNUM = 404 03000034 |
| C 03010034 |
| C **** TEST 404 **** 03020034 |
| C 03030034 |
| IF (ICZERO) 34040, 4040, 34040 03040034 |
| 4040 CONTINUE 03050034 |
| IVON01 = -13 03060034 |
| IVCOMP = IVON01 * (-11) 03070034 |
| GO TO 44040 03080034 |
| 34040 IVDELE = IVDELE + 1 03090034 |
| WRITE (I02,80003) IVTNUM 03100034 |
| IF (ICZERO) 44040, 4051, 44040 03110034 |
| 44040 IF (IVCOMP -143) 24040,14040,24040 03120034 |
| 14040 IVPASS = IVPASS + 1 03130034 |
| WRITE (I02,80001) IVTNUM 03140034 |
| GO TO 4051 03150034 |
| 24040 IVFAIL = IVFAIL + 1 03160034 |
| IVCORR = 143 03170034 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03180034 |
| C 03190034 |
| C TEST 405 AND TEST 406 03200034 |
| C POSITIVE INTEGER VARIABLE, NEGATIVE INTEGER CONSTANT 03210034 |
| C 03220034 |
| 4051 CONTINUE 03230034 |
| IVTNUM = 405 03240034 |
| C 03250034 |
| C **** TEST 405 **** 03260034 |
| C 03270034 |
| IF (ICZERO) 34050, 4050, 34050 03280034 |
| 4050 CONTINUE 03290034 |
| IVON01 = 223 03300034 |
| IVCOMP = IVON01 * (-99) 03310034 |
| GO TO 44050 03320034 |
| 34050 IVDELE = IVDELE + 1 03330034 |
| WRITE (I02,80003) IVTNUM 03340034 |
| IF (ICZERO) 44050, 4061, 44050 03350034 |
| 44050 IF (IVCOMP + 22077) 24050,14050,24050 03360034 |
| 14050 IVPASS = IVPASS + 1 03370034 |
| WRITE (I02,80001) IVTNUM 03380034 |
| GO TO 4061 03390034 |
| 24050 IVFAIL = IVFAIL + 1 03400034 |
| IVCORR = -22077 03410034 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03420034 |
| 4061 CONTINUE 03430034 |
| IVTNUM = 406 03440034 |
| C 03450034 |
| C **** TEST 406 **** 03460034 |
| C 03470034 |
| IF (ICZERO) 34060, 4060, 34060 03480034 |
| 4060 CONTINUE 03490034 |
| IVON01 = 11235 03500034 |
| IVCOMP = IVON01 * (-2) 03510034 |
| GO TO 44060 03520034 |
| 34060 IVDELE = IVDELE + 1 03530034 |
| WRITE (I02,80003) IVTNUM 03540034 |
| IF (ICZERO) 44060, 4071, 44060 03550034 |
| 44060 IF (IVCOMP + 22470) 24060,14060,24060 03560034 |
| 14060 IVPASS = IVPASS + 1 03570034 |
| WRITE (I02,80001) IVTNUM 03580034 |
| GO TO 4071 03590034 |
| 24060 IVFAIL = IVFAIL + 1 03600034 |
| IVCORR = -22470 03610034 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03620034 |
| C 03630034 |
| C TEST 407 THROUGH TEST 414 - IV = IC * IV 03640034 |
| C 03650034 |
| C TEST 407 AND TEST 408 03660034 |
| C POSITIVE INTEGER CONSTANT, POSITIVE INTEGER VARIABLE 03670034 |
| C 03680034 |
| 4071 CONTINUE 03690034 |
| IVTNUM = 407 03700034 |
| C 03710034 |
| C **** TEST 407 **** 03720034 |
| C 03730034 |
| IF (ICZERO) 34070, 4070, 34070 03740034 |
| 4070 CONTINUE 03750034 |
| IVON02 = 11 03760034 |
| IVCOMP = 13*IVON02 03770034 |
| GO TO 44070 03780034 |
| 34070 IVDELE = IVDELE + 1 03790034 |
| WRITE (I02,80003) IVTNUM 03800034 |
| IF (ICZERO) 44070, 4081, 44070 03810034 |
| 44070 IF (IVCOMP - 143) 24070,14070,24070 03820034 |
| 14070 IVPASS = IVPASS + 1 03830034 |
| WRITE (I02,80001) IVTNUM 03840034 |
| GO TO 4081 03850034 |
| 24070 IVFAIL = IVFAIL + 1 03860034 |
| IVCORR = 143 03870034 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03880034 |
| 4081 CONTINUE 03890034 |
| IVTNUM = 408 03900034 |
| C 03910034 |
| C **** TEST 408 **** 03920034 |
| C 03930034 |
| IF (ICZERO) 34080, 4080, 34080 03940034 |
| 4080 CONTINUE 03950034 |
| IVON02 = +11 03960034 |
| IVCOMP = +13 * IVON02 03970034 |
| GO TO 44080 03980034 |
| 34080 IVDELE = IVDELE + 1 03990034 |
| WRITE (I02,80003) IVTNUM 04000034 |
| IF (ICZERO) 44080, 4091, 44080 04010034 |
| 44080 IF (IVCOMP - 143) 24080,14080,24080 04020034 |
| 14080 IVPASS = IVPASS + 1 04030034 |
| WRITE (I02,80001) IVTNUM 04040034 |
| GO TO 4091 04050034 |
| 24080 IVFAIL = IVFAIL + 1 04060034 |
| IVCORR = 143 04070034 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04080034 |
| C 04090034 |
| C TEST 409 AND TEST 410 04100034 |
| C POSITIVE INTEGER CONSTANT, NEGATIVE INTEGER VARIABLE 04110034 |
| C 04120034 |
| 4091 CONTINUE 04130034 |
| IVTNUM = 409 04140034 |
| C 04150034 |
| C **** TEST 409 **** 04160034 |
| C 04170034 |
| IF (ICZERO) 34090, 4090, 34090 04180034 |
| 4090 CONTINUE 04190034 |
| IVON02 = -99 04200034 |
| IVCOMP = 223 * IVON02 04210034 |
| GO TO 44090 04220034 |
| 34090 IVDELE = IVDELE + 1 04230034 |
| WRITE (I02,80003) IVTNUM 04240034 |
| IF (ICZERO) 44090, 4101, 44090 04250034 |
| 44090 IF (IVCOMP + 22077) 24090,14090,24090 04260034 |
| 14090 IVPASS = IVPASS + 1 04270034 |
| WRITE (I02,80001) IVTNUM 04280034 |
| GO TO 4101 04290034 |
| 24090 IVFAIL = IVFAIL + 1 04300034 |
| IVCORR =-22077 04310034 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04320034 |
| 4101 CONTINUE 04330034 |
| IVTNUM = 410 04340034 |
| C 04350034 |
| C **** TEST 410 **** 04360034 |
| C 04370034 |
| IF (ICZERO) 34100, 4100, 34100 04380034 |
| 4100 CONTINUE 04390034 |
| IVON02 = -99 04400034 |
| IVCOMP = +223*IVON02 04410034 |
| GO TO 44100 04420034 |
| 34100 IVDELE = IVDELE + 1 04430034 |
| WRITE (I02,80003) IVTNUM 04440034 |
| IF (ICZERO) 44100, 4111, 44100 04450034 |
| 44100 IF (IVCOMP + 22077) 24100,14100,24100 04460034 |
| 14100 IVPASS = IVPASS + 1 04470034 |
| WRITE (I02,80001) IVTNUM 04480034 |
| GO TO 4111 04490034 |
| 24100 IVFAIL = IVFAIL + 1 04500034 |
| IVCORR = -22077 04510034 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04520034 |
| C 04530034 |
| C TEST 411 AND TEST 412 04540034 |
| C NEGATIVE INTEGER CONSTANT, POSITIVE INTEGER VARIABLE 04550034 |
| C 04560034 |
| 4111 CONTINUE 04570034 |
| IVTNUM = 411 04580034 |
| C 04590034 |
| C **** TEST 411 **** 04600034 |
| C 04610034 |
| IF (ICZERO) 34110, 4110, 34110 04620034 |
| 4110 CONTINUE 04630034 |
| IVON02 = 2 04640034 |
| IVCOMP = (-11235) * IVON02 04650034 |
| GO TO 44110 04660034 |
| 34110 IVDELE = IVDELE + 1 04670034 |
| WRITE (I02,80003) IVTNUM 04680034 |
| IF (ICZERO) 44110, 4121, 44110 04690034 |
| 44110 IF (IVCOMP + 22470) 24110,14110,24110 04700034 |
| 14110 IVPASS = IVPASS + 1 04710034 |
| WRITE (I02,80001) IVTNUM 04720034 |
| GO TO 4121 04730034 |
| 24110 IVFAIL = IVFAIL + 1 04740034 |
| IVCORR = -22470 04750034 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04760034 |
| 4121 CONTINUE 04770034 |
| IVTNUM = 412 04780034 |
| C 04790034 |
| C **** TEST 412 **** 04800034 |
| C 04810034 |
| IF (ICZERO) 34120, 4120, 34120 04820034 |
| 4120 CONTINUE 04830034 |
| IVON02 = +2 04840034 |
| IVCOMP = -11235 * IVON02 04850034 |
| GO TO 44120 04860034 |
| 34120 IVDELE = IVDELE + 1 04870034 |
| WRITE (I02,80003) IVTNUM 04880034 |
| IF (ICZERO) 44120, 4131, 44120 04890034 |
| 44120 IF (IVCOMP + 22470) 24120,14120,24120 04900034 |
| 14120 IVPASS=IVPASS + 1 04910034 |
| WRITE (I02,80001) IVTNUM 04920034 |
| GO TO 4131 04930034 |
| 24120 IVFAIL = IVFAIL + 1 04940034 |
| IVCORR = -22470 04950034 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04960034 |
| C 04970034 |
| C TEST 413 AND TEST 414 04980034 |
| C NEGATIVE INTEGER CONSTANT, NEGATIVE INTEGER VARIABLE 04990034 |
| C 05000034 |
| 4131 CONTINUE 05010034 |
| IVTNUM = 413 05020034 |
| C 05030034 |
| C **** TEST 413 **** 05040034 |
| C 05050034 |
| IF (ICZERO) 34130, 4130, 34130 05060034 |
| 4130 CONTINUE 05070034 |
| IVON02 = -3 05080034 |
| IVCOMP = (-2) * IVON02 05090034 |
| GO TO 44130 05100034 |
| 34130 IVDELE = IVDELE + 1 05110034 |
| WRITE (I02,80003) IVTNUM 05120034 |
| IF (ICZERO) 44130, 4141, 44130 05130034 |
| 44130 IF (IVCOMP - 6) 24130,14130,24130 05140034 |
| 14130 IVPASS = IVPASS + 1 05150034 |
| WRITE (I02,80001) IVTNUM 05160034 |
| GO TO 4141 05170034 |
| 24130 IVFAIL = IVFAIL + 1 05180034 |
| IVCORR = 6 05190034 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05200034 |
| 4141 CONTINUE 05210034 |
| IVTNUM = 414 05220034 |
| C 05230034 |
| C **** TEST 414 **** 05240034 |
| C 05250034 |
| IF (ICZERO) 34140, 4140, 34140 05260034 |
| 4140 CONTINUE 05270034 |
| IVON02 = -3 05280034 |
| IVCOMP = -2 * IVON02 05290034 |
| GO TO 44140 05300034 |
| 34140 IVDELE = IVDELE + 1 05310034 |
| WRITE (I02,80003) IVTNUM 05320034 |
| IF (ICZERO) 44140, 4151, 44140 05330034 |
| 44140 IF (IVCOMP - 6) 24140,14140,24140 05340034 |
| 14140 IVPASS = IVPASS + 1 05350034 |
| WRITE (I02,80001) IVTNUM 05360034 |
| GO TO 4151 05370034 |
| 24140 IVFAIL = IVFAIL + 1 05380034 |
| IVCORR = 6 05390034 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05400034 |
| C 05410034 |
| C TEST 415 THROUGH TEST 429 CONTAIN TWO INTEGER CONSTANTS, 05420034 |
| C ONE INTEGER VARIABLE AND OPERATOR * IN ARITHMETIC EXPRESSION. 05430034 |
| C 05440034 |
| 4151 CONTINUE 05450034 |
| IVTNUM = 415 05460034 |
| C 05470034 |
| C **** TEST 415 **** 05480034 |
| C 05490034 |
| IF (ICZERO) 34150, 4150, 34150 05500034 |
| 4150 CONTINUE 05510034 |
| IVON01 = 2 05520034 |
| IVCOMP = IVON01 * 3 * 4 05530034 |
| GO TO 44150 05540034 |
| 34150 IVDELE = IVDELE + 1 05550034 |
| WRITE (I02,80003) IVTNUM 05560034 |
| IF (ICZERO) 44150, 4161, 44150 05570034 |
| 44150 IF (IVCOMP - 24) 24150,14150,24150 05580034 |
| 14150 IVPASS = IVPASS + 1 05590034 |
| WRITE (I02,80001) IVTNUM 05600034 |
| GO TO 4161 05610034 |
| 24150 IVFAIL = IVFAIL + 1 05620034 |
| IVCORR = 24 05630034 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05640034 |
| 4161 CONTINUE 05650034 |
| IVTNUM = 416 05660034 |
| C 05670034 |
| C **** TEST 416 **** 05680034 |
| C 05690034 |
| IF (ICZERO) 34160, 4160, 34160 05700034 |
| 4160 CONTINUE 05710034 |
| IVON01 = -2 05720034 |
| IVCOMP = IVON01 *3*4 05730034 |
| GO TO 44160 05740034 |
| 34160 IVDELE = IVDELE + 1 05750034 |
| WRITE (I02,80003) IVTNUM 05760034 |
| IF (ICZERO) 44160, 4171, 44160 05770034 |
| 44160 IF (IVCOMP +24) 24160,14160,24160 05780034 |
| 14160 IVPASS = IVPASS + 1 05790034 |
| WRITE (I02,80001) IVTNUM 05800034 |
| GO TO 4171 05810034 |
| 24160 IVFAIL = IVFAIL + 1 05820034 |
| IVCORR = -24 05830034 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05840034 |
| 4171 CONTINUE 05850034 |
| IVTNUM = 417 05860034 |
| C 05870034 |
| C **** TEST 417 **** 05880034 |
| C 05890034 |
| IF (ICZERO) 34170, 4170, 34170 05900034 |
| 4170 CONTINUE 05910034 |
| IVON01 = -2 05920034 |
| IVCOMP = IVON01*3*(-4) 05930034 |
| GO TO 44170 05940034 |
| 34170 IVDELE = IVDELE + 1 05950034 |
| WRITE (I02,80003) IVTNUM 05960034 |
| IF (ICZERO) 44170, 4181, 44170 05970034 |
| 44170 IF (IVCOMP -24) 24170,14170,24170 05980034 |
| 14170 IVPASS = IVPASS + 1 05990034 |
| WRITE (I02,80001) IVTNUM 06000034 |
| GO TO 4181 06010034 |
| 24170 IVFAIL = IVFAIL + 1 06020034 |
| IVCORR = 24 06030034 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06040034 |
| 4181 CONTINUE 06050034 |
| IVTNUM = 418 06060034 |
| C 06070034 |
| C **** TEST 418 **** 06080034 |
| C 06090034 |
| IF (ICZERO) 34180, 4180, 34180 06100034 |
| 4180 CONTINUE 06110034 |
| IVON01 = -2 06120034 |
| IVCOMP = IVON01*(-3)*(-4) 06130034 |
| GO TO 44180 06140034 |
| 34180 IVDELE = IVDELE + 1 06150034 |
| WRITE (I02,80003) IVTNUM 06160034 |
| IF (ICZERO) 44180, 4191, 44180 06170034 |
| 44180 IF (IVCOMP +24) 24180,14180,24180 06180034 |
| 14180 IVPASS = IVPASS + 1 06190034 |
| WRITE (I02,80001) IVTNUM 06200034 |
| GO TO 4191 06210034 |
| 24180 IVFAIL = IVFAIL + 1 06220034 |
| IVCORR = -24 06230034 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06240034 |
| 4191 CONTINUE 06250034 |
| IVTNUM = 419 06260034 |
| C 06270034 |
| C **** TEST 419 **** 06280034 |
| C 06290034 |
| IF (ICZERO) 34190, 4190, 34190 06300034 |
| 4190 CONTINUE 06310034 |
| IVON02 = 51 06320034 |
| IVCOMP = 23*IVON02*13 06330034 |
| GO TO 44190 06340034 |
| 34190 IVDELE = IVDELE + 1 06350034 |
| WRITE (I02,80003) IVTNUM 06360034 |
| IF (ICZERO) 44190, 4201, 44190 06370034 |
| 44190 IF (IVCOMP-15249) 24190,14190,24190 06380034 |
| 14190 IVPASS = IVPASS + 1 06390034 |
| WRITE (I02,80001) IVTNUM 06400034 |
| GO TO 4201 06410034 |
| 24190 IVFAIL = IVFAIL + 1 06420034 |
| IVCORR = 15249 06430034 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06440034 |
| 4201 CONTINUE 06450034 |
| IVTNUM = 420 06460034 |
| C 06470034 |
| C **** TEST 420 **** 06480034 |
| C 06490034 |
| IF (ICZERO) 34200, 4200, 34200 06500034 |
| 4200 CONTINUE 06510034 |
| IVON02 = -51 06520034 |
| IVCOMP = 23*IVON02*(-13) 06530034 |
| GO TO 44200 06540034 |
| 34200 IVDELE = IVDELE + 1 06550034 |
| WRITE (I02,80003) IVTNUM 06560034 |
| IF (ICZERO) 44200, 4211, 44200 06570034 |
| 44200 IF (IVCOMP - 15249) 24200,14200,24200 06580034 |
| 14200 IVPASS = IVPASS + 1 06590034 |
| WRITE (I02,80001) IVTNUM 06600034 |
| GO TO 4211 06610034 |
| 24200 IVFAIL = IVFAIL + 1 06620034 |
| IVCORR = 15249 06630034 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06640034 |
| 4211 CONTINUE 06650034 |
| IVTNUM = 421 06660034 |
| C 06670034 |
| C **** TEST 421 **** 06680034 |
| C 06690034 |
| IF (ICZERO) 34210, 4210, 34210 06700034 |
| 4210 CONTINUE 06710034 |
| IVON02 = -51 06720034 |
| IVCOMP = 23*IVON02*13 06730034 |
| GO TO 44210 06740034 |
| 34210 IVDELE = IVDELE + 1 06750034 |
| WRITE (I02,80003) IVTNUM 06760034 |
| IF (ICZERO) 44210, 4221, 44210 06770034 |
| 44210 IF (IVCOMP+15249) 24210,14210,24210 06780034 |
| 14210 IVPASS = IVPASS + 1 06790034 |
| WRITE (I02,80001) IVTNUM 06800034 |
| GO TO 4221 06810034 |
| 24210 IVFAIL = IVFAIL + 1 06820034 |
| IVCORR = -15249 06830034 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06840034 |
| 4221 CONTINUE 06850034 |
| IVTNUM = 422 06860034 |
| C 06870034 |
| C **** TEST 422 **** 06880034 |
| C 06890034 |
| IF (ICZERO) 34220, 4220, 34220 06900034 |
| 4220 CONTINUE 06910034 |
| IVON02 = -51 06920034 |
| IVCOMP =(-23)*IVON02*(-13) 06930034 |
| GO TO 44220 06940034 |
| 34220 IVDELE = IVDELE + 1 06950034 |
| WRITE (I02,80003) IVTNUM 06960034 |
| IF (ICZERO) 44220, 4231, 44220 06970034 |
| 44220 IF (IVCOMP+15249) 24220,14220,24220 06980034 |
| 14220 IVPASS = IVPASS + 1 06990034 |
| WRITE (I02,80001) IVTNUM 07000034 |
| GO TO 4231 07010034 |
| 24220 IVFAIL = IVFAIL + 1 07020034 |
| IVCORR = -15249 07030034 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 07040034 |
| 4231 CONTINUE 07050034 |
| IVTNUM = 423 07060034 |
| C 07070034 |
| C **** TEST 423 **** 07080034 |
| C 07090034 |
| IF (ICZERO) 34230, 4230, 34230 07100034 |
| 4230 CONTINUE 07110034 |
| IVON03 = 5461 07120034 |
| IVCOMP = 2*3*IVON03 07130034 |
| GO TO 44230 07140034 |
| 34230 IVDELE = IVDELE + 1 07150034 |
| WRITE (I02,80003) IVTNUM 07160034 |
| IF (ICZERO) 44230, 4241, 44230 07170034 |
| 44230 IF (IVCOMP - 32766) 24230,14230,24230 07180034 |
| 14230 IVPASS = IVPASS + 1 07190034 |
| WRITE (I02,80001) IVTNUM 07200034 |
| GO TO 4241 07210034 |
| 24230 IVFAIL = IVFAIL + 1 07220034 |
| IVCORR = 32766 07230034 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 07240034 |
| 4241 CONTINUE 07250034 |
| IVTNUM = 424 07260034 |
| C 07270034 |
| C **** TEST 424 **** 07280034 |
| C 07290034 |
| IF (ICZERO) 34240, 4240, 34240 07300034 |
| 4240 CONTINUE 07310034 |
| IVON03 = -5461 07320034 |
| IVCOMP = 2*3*IVON03 07330034 |
| GO TO 44240 07340034 |
| 34240 IVDELE = IVDELE + 1 07350034 |
| WRITE (I02,80003) IVTNUM 07360034 |
| IF (ICZERO) 44240, 4251, 44240 07370034 |
| 44240 IF (IVCOMP +32766) 24240,14240,24240 07380034 |
| 14240 IVPASS = IVPASS + 1 07390034 |
| WRITE (I02,80001) IVTNUM 07400034 |
| GO TO 4251 07410034 |
| 24240 IVFAIL = IVFAIL + 1 07420034 |
| IVCORR = -32766 07430034 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 07440034 |
| 4251 CONTINUE 07450034 |
| IVTNUM = 425 07460034 |
| C 07470034 |
| C **** TEST 425 **** 07480034 |
| C 07490034 |
| IF (ICZERO) 34250, 4250, 34250 07500034 |
| 4250 CONTINUE 07510034 |
| IVON03 = -5461 07520034 |
| IVCOMP = -2*3*IVON03 07530034 |
| GO TO 44250 07540034 |
| 34250 IVDELE = IVDELE + 1 07550034 |
| WRITE (I02,80003) IVTNUM 07560034 |
| IF (ICZERO) 44250, 4261, 44250 07570034 |
| 44250 IF (IVCOMP - 32766) 24250,14250,24250 07580034 |
| 14250 IVPASS = IVPASS + 1 07590034 |
| WRITE (I02,80001) IVTNUM 07600034 |
| GO TO 4261 07610034 |
| 24250 IVFAIL = IVFAIL + 1 07620034 |
| IVCORR = 32766 07630034 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 07640034 |
| C 07650034 |
| C TEST 426 THROUGH TEST 429 USE PARENTHESES TO GROUP ELEMENTS 07660034 |
| C IN ARITHMETIC EXPRESSION. 07670034 |
| C 07680034 |
| 4261 CONTINUE 07690034 |
| IVTNUM = 426 07700034 |
| C 07710034 |
| C **** TEST 426 **** 07720034 |
| C 07730034 |
| IF (ICZERO) 34260, 4260, 34260 07740034 |
| 4260 CONTINUE 07750034 |
| IVON02 = 51 07760034 |
| IVCOMP = (23*IVON02)*13 07770034 |
| GO TO 44260 07780034 |
| 34260 IVDELE = IVDELE + 1 07790034 |
| WRITE (I02,80003) IVTNUM 07800034 |
| IF (ICZERO) 44260, 4271, 44260 07810034 |
| 44260 IF (IVCOMP -15249) 24260,14260,24260 07820034 |
| 14260 IVPASS = IVPASS + 1 07830034 |
| WRITE (I02,80001) IVTNUM 07840034 |
| GO TO 4271 07850034 |
| 24260 IVFAIL = IVFAIL + 1 07860034 |
| IVCORR = 15249 07870034 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 07880034 |
| 4271 CONTINUE 07890034 |
| IVTNUM = 427 07900034 |
| C 07910034 |
| C **** TEST 427 **** 07920034 |
| C 07930034 |
| IF (ICZERO) 34270, 4270, 34270 07940034 |
| 4270 CONTINUE 07950034 |
| IVON02 = 51 07960034 |
| IVCOMP = 23*(IVON02*13) 07970034 |
| GO TO 44270 07980034 |
| 34270 IVDELE = IVDELE + 1 07990034 |
| WRITE (I02,80003) IVTNUM 08000034 |
| IF (ICZERO) 44270, 4281, 44270 08010034 |
| 44270 IF (IVCOMP-15249) 24270,14270,24270 08020034 |
| 14270 IVPASS = IVPASS + 1 08030034 |
| WRITE (I02,80001) IVTNUM 08040034 |
| GO TO 4281 08050034 |
| 24270 IVFAIL = IVFAIL + 1 08060034 |
| IVCORR = 15249 08070034 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 08080034 |
| 4281 CONTINUE 08090034 |
| IVTNUM = 428 08100034 |
| C 08110034 |
| C **** TEST 428 **** 08120034 |
| C 08130034 |
| IF (ICZERO) 34280, 4280, 34280 08140034 |
| 4280 CONTINUE 08150034 |
| IVON02 = -51 08160034 |
| IVCOMP = -23 * (IVON02*(+13)) 08170034 |
| GO TO 44280 08180034 |
| 34280 IVDELE = IVDELE + 1 08190034 |
| WRITE (I02,80003) IVTNUM 08200034 |
| IF (ICZERO) 44280, 4291, 44280 08210034 |
| 44280 IF (IVCOMP - 15249)24280,14280,24280 08220034 |
| 14280 IVPASS = IVPASS + 1 08230034 |
| WRITE (I02,80001) IVTNUM 08240034 |
| GO TO 4291 08250034 |
| 24280 IVFAIL = IVFAIL + 1 08260034 |
| IVCORR = 15249 08270034 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 08280034 |
| 4291 CONTINUE 08290034 |
| IVTNUM = 429 08300034 |
| C 08310034 |
| C **** TEST 429 **** 08320034 |
| C 08330034 |
| IF (ICZERO) 34290, 4290, 34290 08340034 |
| 4290 CONTINUE 08350034 |
| IVON02 = -51 08360034 |
| IVCOMP = (-23)*(IVON02*(-13)) 08370034 |
| GO TO 44290 08380034 |
| 34290 IVDELE = IVDELE + 1 08390034 |
| WRITE (I02,80003) IVTNUM 08400034 |
| IF (ICZERO) 44290, 4301, 44290 08410034 |
| 44290 IF (IVCOMP + 15249) 24290,14290,24290 08420034 |
| 14290 IVPASS = IVPASS + 1 08430034 |
| WRITE (I02,80001) IVTNUM 08440034 |
| GO TO 4301 08450034 |
| 24290 IVFAIL = IVFAIL + 1 08460034 |
| IVCORR = -15249 08470034 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 08480034 |
| C **** END OF TESTS **** 08490034 |
| 4301 CONTINUE 08500034 |
| C 08510034 |
| C WRITE PAGE FOOTINGS AND RUN SUMMARIES 08520034 |
| 99999 CONTINUE 08530034 |
| WRITE (I02,90002) 08540034 |
| WRITE (I02,90006) 08550034 |
| WRITE (I02,90002) 08560034 |
| WRITE (I02,90002) 08570034 |
| WRITE (I02,90007) 08580034 |
| WRITE (I02,90002) 08590034 |
| WRITE (I02,90008) IVFAIL 08600034 |
| WRITE (I02,90009) IVPASS 08610034 |
| WRITE (I02,90010) IVDELE 08620034 |
| C 08630034 |
| C 08640034 |
| C TERMINATE ROUTINE EXECUTION 08650034 |
| STOP 08660034 |
| C 08670034 |
| C FORMAT STATEMENTS FOR PAGE HEADERS 08680034 |
| 90000 FORMAT ("1") 08690034 |
| 90002 FORMAT (" ") 08700034 |
| 90001 FORMAT (" ",10X,"FORTRAN COMPILER VALIDATION SYSTEM" ) 08710034 |
| 90003 FORMAT (" ",21X,"VERSION 2.1" ) 08720034 |
| 90004 FORMAT (" ",10X,"FOR OFFICIAL USE ONLY - COPYRIGHT 1978" ) 08730034 |
| 90005 FORMAT (" ",5X,"TEST",5X,"PASS/FAIL", 5X,"COMPUTED",8X,"CORRECT") 08740034 |
| 90006 FORMAT (" ",5X,"----------------------------------------------" ) 08750034 |
| 90011 FORMAT (" ",18X,"SUBSET LEVEL TEST" ) 08760034 |
| C 08770034 |
| C FORMAT STATEMENTS FOR RUN SUMMARIES 08780034 |
| 90008 FORMAT (" ",15X,I5," ERRORS ENCOUNTERED" ) 08790034 |
| 90009 FORMAT (" ",15X,I5," TESTS PASSED" ) 08800034 |
| 90010 FORMAT (" ",15X,I5," TESTS DELETED" ) 08810034 |
| C 08820034 |
| C FORMAT STATEMENTS FOR TEST RESULTS 08830034 |
| 80001 FORMAT (" ",4X,I5,7X,"PASS") 08840034 |
| 80002 FORMAT (" ",4X,I5,7X,"FAIL") 08850034 |
| 80003 FORMAT (" ",4X,I5,7X,"DELETED") 08860034 |
| 80004 FORMAT (" ",4X,I5,7X,"FAIL",10X,I6,9X,I6) 08870034 |
| 80005 FORMAT (" ",4X,I5,7X,"FAIL",4X,E12.5,3X,E12.5) 08880034 |
| C 08890034 |
| 90007 FORMAT (" ",20X,"END OF PROGRAM FM034" ) 08900034 |
| END 08910034 |