| PROGRAM FM031 |
| |
| C COMMENT SECTION 00010031 |
| C 00020031 |
| C FM031 00030031 |
| C 00040031 |
| C THIS ROUTINE TESTS ARITHMETIC ASSIGNMENT STATEMENTS OF THE 00050031 |
| C FORM 00060031 |
| C INTEGER VARIABLE = ARITHMETIC EXPRESSION 00070031 |
| C WHERE THE ARITHMETIC EXPRESSION IS FORMED WITH THE ARITHMETIC 00080031 |
| C OPERATOR -, INTEGER CONSTANTS AND INTEGER VARIABLES. SOME OF THE 00090031 |
| C TESTS USE PARENTHESES TO GROUP ELEMENTS IN AN ARITHMETIC 00100031 |
| C EXPRESSION. 00110031 |
| C 00120031 |
| C THERE ARE TESTS WHERE THE ARITHMETIC EXPRESSION CONTAINS 00130031 |
| C (1) INTEGER CONSTANT-INTEGER CONSTANT-INTEGER VARIABLE 00140031 |
| C INTEGER CONSTANT-INTEGER VARIABLE-INTEGER CONSTANT 00150031 |
| C INTEGER VARIABLE-INTEGER CONSTANT-INTEGER CONSTANT 00160031 |
| C (2) SAME AS (1) BUT WITH PARENTHESES TO GROUP ELEMENTS 00170031 |
| C IN ARITHMETIC EXPRESSION. 00180031 |
| C (3) INTEGER VARIABLE - INTEGER VARIABLE 00190031 |
| C 00200031 |
| C REFERENCES 00210031 |
| C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, 00220031 |
| C X3.9-1978 00230031 |
| C 00240031 |
| C SECTION 4.3, INTEGER TYPE 00250031 |
| C SECTION 4.3.1, INTEGER CONSTANT 00260031 |
| C SECTION 6.1, ARITHMETIC EXPRESSIONS 00270031 |
| C SECTION 10.1, ARITHMETIC ASSIGNMENT STATEMENT 00280031 |
| C 00290031 |
| C ********************************************************** 00300031 |
| C 00310031 |
| C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE 00320031 |
| C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN NATIONAL STANDARD 00330031 |
| C PROGRAMMING LANGUAGE FORTRAN X3.9-1978, HAS BEEN DEVELOPED BY THE 00340031 |
| C FEDERAL COBOL COMPILER TESTING SERVICE. THE FORTRAN COMPILER 00350031 |
| C VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT ROUTINES, THEIR RELATED00360031 |
| C DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT ROUTINE IS A FORTRAN 00370031 |
| C PROGRAM, SUBPROGRAM OR FUNCTION WHICH INCLUDES TESTS OF SPECIFIC 00380031 |
| C LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING THE RESULT 00390031 |
| C OF EXECUTING THESE TESTS. 00400031 |
| C 00410031 |
| C THIS PARTICULAR PROGRAM/SUBPROGRAM/FUNCTION CONTAINS FEATURES 00420031 |
| C FOUND ONLY IN THE SUBSET AS DEFINED IN X3.9-1978. 00430031 |
| C 00440031 |
| C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO - 00450031 |
| C 00460031 |
| C NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY 00470031 |
| C SOFTWARE STANDARDS VALIDATION GROUP 00480031 |
| C BUILDING 225 RM A266 00490031 |
| C GAITHERSBURG, MD 20899 00500031 |
| C ********************************************************** 00510031 |
| C 00520031 |
| C 00530031 |
| C 00540031 |
| C INITIALIZATION SECTION 00550031 |
| C 00560031 |
| C INITIALIZE CONSTANTS 00570031 |
| C ************** 00580031 |
| C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. 00590031 |
| I01 = 5 00600031 |
| C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. 00610031 |
| I02 = 6 00620031 |
| C SYSTEM ENVIRONMENT SECTION 00630031 |
| C 00640031 |
| CX010 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-010 CONTROL CARD. 00650031 |
| C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 00660031 |
| C (UNIT NUMBER FOR CARD READER). 00670031 |
| CX011 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-011 CONTROL CARD. 00680031 |
| C THE CX011 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00690031 |
| C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX010 ABOVE. 00700031 |
| C 00710031 |
| CX020 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-020 CONTROL CARD. 00720031 |
| C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02 = 6 00730031 |
| C (UNIT NUMBER FOR PRINTER). 00740031 |
| CX021 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-021 CONTROL CARD. 00750031 |
| C THE CX021 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00760031 |
| C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX020 ABOVE. 00770031 |
| C 00780031 |
| IVPASS=0 00790031 |
| IVFAIL=0 00800031 |
| IVDELE=0 00810031 |
| ICZERO=0 00820031 |
| C 00830031 |
| C WRITE PAGE HEADERS 00840031 |
| WRITE (I02,90000) 00850031 |
| WRITE (I02,90001) 00860031 |
| WRITE (I02,90002) 00870031 |
| WRITE (I02, 90002) 00880031 |
| WRITE (I02,90003) 00890031 |
| WRITE (I02,90002) 00900031 |
| WRITE (I02,90004) 00910031 |
| WRITE (I02,90002) 00920031 |
| WRITE (I02,90011) 00930031 |
| WRITE (I02,90002) 00940031 |
| WRITE (I02,90002) 00950031 |
| WRITE (I02,90005) 00960031 |
| WRITE (I02,90006) 00970031 |
| WRITE (I02,90002) 00980031 |
| C 00990031 |
| C TEST SECTION 01000031 |
| C 01010031 |
| C TEST 300 THROUGH TEST 309 CONTAIN 2 INTEGER CONSTANTS, AN INTEGER 01020031 |
| C VARIABLE AND OPERATOR - IN AN ARITHMETIC EXPRESSION. 01030031 |
| C 01040031 |
| 3001 CONTINUE 01050031 |
| IVTNUM = 300 01060031 |
| C 01070031 |
| C **** TEST 300 **** 01080031 |
| C 01090031 |
| IF (ICZERO) 33000, 3000, 33000 01100031 |
| 3000 CONTINUE 01110031 |
| IVON01 = 9 01120031 |
| IVCOMP =IVON01 -3 -4 01130031 |
| GO TO 43000 01140031 |
| 33000 IVDELE = IVDELE + 1 01150031 |
| WRITE (I02,80003) IVTNUM 01160031 |
| IF (ICZERO) 43000, 3011, 43000 01170031 |
| 43000 IF (IVCOMP-2) 23000,13000,23000 01180031 |
| 13000 IVPASS = IVPASS + 1 01190031 |
| WRITE (I02,80001) IVTNUM 01200031 |
| GO TO 3011 01210031 |
| 23000 IVFAIL = IVFAIL + 1 01220031 |
| IVCORR =2 01230031 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01240031 |
| 3011 CONTINUE 01250031 |
| IVTNUM = 301 01260031 |
| C 01270031 |
| C **** TEST 301 **** 01280031 |
| C 01290031 |
| IF (ICZERO) 33010, 3010, 33010 01300031 |
| 3010 CONTINUE 01310031 |
| IVON02 =3 01320031 |
| IVCOMP =9-IVON02-4 01330031 |
| GO TO 43010 01340031 |
| 33010 IVDELE = IVDELE + 1 01350031 |
| WRITE (I02,80003) IVTNUM 01360031 |
| IF (ICZERO) 43010, 3021, 43010 01370031 |
| 43010 IF (IVCOMP-2) 23010,13010,23010 01380031 |
| 13010 IVPASS = IVPASS + 1 01390031 |
| WRITE (I02,80001) IVTNUM 01400031 |
| GO TO 3021 01410031 |
| 23010 IVFAIL = IVFAIL + 1 01420031 |
| IVCORR =2 01430031 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01440031 |
| 3021 CONTINUE 01450031 |
| IVTNUM = 302 01460031 |
| C 01470031 |
| C **** TEST 302 **** 01480031 |
| C 01490031 |
| IF (ICZERO) 33020, 3020, 33020 01500031 |
| 3020 CONTINUE 01510031 |
| IVON03 = 4 01520031 |
| IVCOMP = 9-3-IVON03 01530031 |
| GO TO 43020 01540031 |
| 33020 IVDELE = IVDELE + 1 01550031 |
| WRITE (I02,80003) IVTNUM 01560031 |
| IF (ICZERO) 43020, 3031, 43020 01570031 |
| 43020 IF (IVCOMP-2) 23020,13020,23020 01580031 |
| 13020 IVPASS = IVPASS + 1 01590031 |
| WRITE (I02,80001) IVTNUM 01600031 |
| GO TO 3031 01610031 |
| 23020 IVFAIL = IVFAIL + 1 01620031 |
| IVCORR =2 01630031 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01640031 |
| 3031 CONTINUE 01650031 |
| IVTNUM = 303 01660031 |
| C 01670031 |
| C **** TEST 303 **** 01680031 |
| C 01690031 |
| IF (ICZERO) 33030, 3030, 33030 01700031 |
| 3030 CONTINUE 01710031 |
| IVON01 = 57 01720031 |
| IVCOMP = IVON01 -25-22 01730031 |
| GO TO 43030 01740031 |
| 33030 IVDELE = IVDELE + 1 01750031 |
| WRITE (I02,80003) IVTNUM 01760031 |
| IF (ICZERO) 43030, 3041, 43030 01770031 |
| 43030 IF (IVCOMP-10) 23030,13030,23030 01780031 |
| 13030 IVPASS = IVPASS + 1 01790031 |
| WRITE (I02,80001) IVTNUM 01800031 |
| GO TO 3041 01810031 |
| 23030 IVFAIL = IVFAIL + 1 01820031 |
| IVCORR = 10 01830031 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01840031 |
| 3041 CONTINUE 01850031 |
| IVTNUM = 304 01860031 |
| C 01870031 |
| C **** TEST 304 **** 01880031 |
| C 01890031 |
| IF (ICZERO) 33040, 3040, 33040 01900031 |
| 3040 CONTINUE 01910031 |
| IVON02 =683 01920031 |
| IVCOMP = 101-IVON02-156 01930031 |
| GO TO 43040 01940031 |
| 33040 IVDELE = IVDELE + 1 01950031 |
| WRITE (I02,80003) IVTNUM 01960031 |
| IF (ICZERO) 43040, 3051, 43040 01970031 |
| 43040 IF (IVCOMP+738) 23040,13040,23040 01980031 |
| 13040 IVPASS = IVPASS + 1 01990031 |
| WRITE (I02,80001) IVTNUM 02000031 |
| GO TO 3051 02010031 |
| 23040 IVFAIL = IVFAIL + 1 02020031 |
| IVCORR = -738 02030031 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02040031 |
| 3051 CONTINUE 02050031 |
| IVTNUM = 305 02060031 |
| C 02070031 |
| C **** TEST 305 **** 02080031 |
| C 02090031 |
| IF (ICZERO) 33050, 3050, 33050 02100031 |
| 3050 CONTINUE 02110031 |
| IVON03 = 1289 02120031 |
| IVCOMP = 8542-1122-IVON03 02130031 |
| GO TO 43050 02140031 |
| 33050 IVDELE = IVDELE + 1 02150031 |
| WRITE (I02,80003) IVTNUM 02160031 |
| IF (ICZERO) 43050, 3061, 43050 02170031 |
| 43050 IF (IVCOMP-6131) 23050,13050,23050 02180031 |
| 13050 IVPASS = IVPASS + 1 02190031 |
| WRITE (I02,80001) IVTNUM 02200031 |
| GO TO 3061 02210031 |
| 23050 IVFAIL = IVFAIL + 1 02220031 |
| IVCORR = 6131 02230031 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02240031 |
| 3061 CONTINUE 02250031 |
| IVTNUM = 306 02260031 |
| C 02270031 |
| C **** TEST 306 **** 02280031 |
| C 02290031 |
| IF (ICZERO) 33060, 3060, 33060 02300031 |
| 3060 CONTINUE 02310031 |
| IVON03 = 11111 02320031 |
| IVCOMP = 32333-11111-IVON03 02330031 |
| GO TO 43060 02340031 |
| 33060 IVDELE = IVDELE + 1 02350031 |
| WRITE (I02,80003) IVTNUM 02360031 |
| IF (ICZERO) 43060, 3071, 43060 02370031 |
| 43060 IF (IVCOMP-10111) 23060,13060,23060 02380031 |
| 13060 IVPASS = IVPASS + 1 02390031 |
| WRITE (I02,80001) IVTNUM 02400031 |
| GO TO 3071 02410031 |
| 23060 IVFAIL = IVFAIL + 1 02420031 |
| IVCORR =10111 02430031 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02440031 |
| 3071 CONTINUE 02450031 |
| IVTNUM = 307 02460031 |
| C 02470031 |
| C **** TEST 307 **** 02480031 |
| C 02490031 |
| IF (ICZERO) 33070, 3070, 33070 02500031 |
| 3070 CONTINUE 02510031 |
| IVON01 = -3 02520031 |
| IVCOMP = IVON01-2-4 02530031 |
| GO TO 43070 02540031 |
| 33070 IVDELE = IVDELE + 1 02550031 |
| WRITE (I02,80003) IVTNUM 02560031 |
| IF (ICZERO) 43070, 3081, 43070 02570031 |
| 43070 IF (IVCOMP +9) 23070,13070,23070 02580031 |
| 13070 IVPASS = IVPASS + 1 02590031 |
| WRITE (I02,80001) IVTNUM 02600031 |
| GO TO 3081 02610031 |
| 23070 IVFAIL = IVFAIL + 1 02620031 |
| IVCORR =-9 02630031 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02640031 |
| 3081 CONTINUE 02650031 |
| IVTNUM = 308 02660031 |
| C 02670031 |
| C **** TEST 308 **** 02680031 |
| C 02690031 |
| IF (ICZERO) 33080, 3080, 33080 02700031 |
| 3080 CONTINUE 02710031 |
| IVON02 =-9 02720031 |
| IVCOMP =1-IVON02-4 02730031 |
| GO TO 43080 02740031 |
| 33080 IVDELE = IVDELE + 1 02750031 |
| WRITE (I02,80003) IVTNUM 02760031 |
| IF (ICZERO) 43080, 3091, 43080 02770031 |
| 43080 IF (IVCOMP-6) 23080,13080,23080 02780031 |
| 13080 IVPASS = IVPASS + 1 02790031 |
| WRITE (I02,80001) IVTNUM 02800031 |
| GO TO 3091 02810031 |
| 23080 IVFAIL = IVFAIL + 1 02820031 |
| IVCORR = 6 02830031 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02840031 |
| 3091 CONTINUE 02850031 |
| IVTNUM = 309 02860031 |
| C 02870031 |
| C **** TEST 309 **** 02880031 |
| C 02890031 |
| IF (ICZERO) 33090, 3090, 33090 02900031 |
| 3090 CONTINUE 02910031 |
| IVON03 = -8542 02920031 |
| IVCOMP = 100-3-IVON03 02930031 |
| GO TO 43090 02940031 |
| 33090 IVDELE = IVDELE + 1 02950031 |
| WRITE (I02,80003) IVTNUM 02960031 |
| IF (ICZERO) 43090, 3101, 43090 02970031 |
| 43090 IF (IVCOMP-8639) 23090,13090,23090 02980031 |
| 13090 IVPASS = IVPASS + 1 02990031 |
| WRITE (I02,80001) IVTNUM 03000031 |
| GO TO 3101 03010031 |
| 23090 IVFAIL = IVFAIL + 1 03020031 |
| IVCORR = 8639 03030031 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03040031 |
| C 03050031 |
| C TEST 310 THROUGH TEST 319 CONTAIN 2 INTEGER CONSTANTS, AN INTEGER 03060031 |
| C VARIABLE AND OPERATOR - IN AN ARITHMETIC EXPRESSION. PARENTHESES 03070031 |
| C ARE USED TO GROUP ELEMENTS IN THE ARITHMETIC EXPRESSION. 03080031 |
| C 03090031 |
| 3101 CONTINUE 03100031 |
| IVTNUM = 310 03110031 |
| C 03120031 |
| C **** TEST 310 **** 03130031 |
| C 03140031 |
| IF (ICZERO) 33100, 3100, 33100 03150031 |
| 3100 CONTINUE 03160031 |
| IVON01 =9 03170031 |
| IVCOMP = IVON01-(3-4) 03180031 |
| GO TO 43100 03190031 |
| 33100 IVDELE = IVDELE + 1 03200031 |
| WRITE (I02,80003) IVTNUM 03210031 |
| IF (ICZERO) 43100, 3111, 43100 03220031 |
| 43100 IF (IVCOMP-10) 23100,13100,23100 03230031 |
| 13100 IVPASS = IVPASS + 1 03240031 |
| WRITE (I02,80001) IVTNUM 03250031 |
| GO TO 3111 03260031 |
| 23100 IVFAIL = IVFAIL + 1 03270031 |
| IVCORR=10 03280031 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03290031 |
| 3111 CONTINUE 03300031 |
| IVTNUM = 311 03310031 |
| C 03320031 |
| C **** TEST 311 **** 03330031 |
| C 03340031 |
| IF (ICZERO) 33110, 3110, 33110 03350031 |
| 3110 CONTINUE 03360031 |
| IVON01=9 03370031 |
| IVCOMP=(IVON01-3)-4 03380031 |
| GO TO 43110 03390031 |
| 33110 IVDELE = IVDELE + 1 03400031 |
| WRITE (I02,80003) IVTNUM 03410031 |
| IF (ICZERO) 43110, 3121, 43110 03420031 |
| 43110 IF (IVCOMP-2) 23110,13110,23110 03430031 |
| 13110 IVPASS = IVPASS + 1 03440031 |
| WRITE (I02,80001) IVTNUM 03450031 |
| GO TO 3121 03460031 |
| 23110 IVFAIL = IVFAIL + 1 03470031 |
| IVCORR =2 03480031 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03490031 |
| 3121 CONTINUE 03500031 |
| IVTNUM = 312 03510031 |
| C 03520031 |
| C **** TEST 312 **** 03530031 |
| C 03540031 |
| IF (ICZERO) 33120, 3120, 33120 03550031 |
| 3120 CONTINUE 03560031 |
| IVON02 = 3 03570031 |
| IVCOMP = 9-(IVON02-4) 03580031 |
| GO TO 43120 03590031 |
| 33120 IVDELE = IVDELE + 1 03600031 |
| WRITE (I02,80003) IVTNUM 03610031 |
| IF (ICZERO) 43120, 3131, 43120 03620031 |
| 43120 IF (IVCOMP-10) 23120,13120,23120 03630031 |
| 13120 IVPASS = IVPASS + 1 03640031 |
| WRITE (I02,80001) IVTNUM 03650031 |
| GO TO 3131 03660031 |
| 23120 IVFAIL = IVFAIL + 1 03670031 |
| IVCORR = 10 03680031 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03690031 |
| 3131 CONTINUE 03700031 |
| IVTNUM = 313 03710031 |
| C 03720031 |
| C **** TEST 313 **** 03730031 |
| C 03740031 |
| IF (ICZERO) 33130, 3130, 33130 03750031 |
| 3130 CONTINUE 03760031 |
| IVON02 = 3 03770031 |
| IVCOMP = (9-IVON02) -4 03780031 |
| GO TO 43130 03790031 |
| 33130 IVDELE = IVDELE + 1 03800031 |
| WRITE (I02,80003) IVTNUM 03810031 |
| IF (ICZERO) 43130, 3141, 43130 03820031 |
| 43130 IF (IVCOMP-2) 23130,13130,23130 03830031 |
| 13130 IVPASS = IVPASS + 1 03840031 |
| WRITE (I02,80001) IVTNUM 03850031 |
| GO TO 3141 03860031 |
| 23130 IVFAIL = IVFAIL + 1 03870031 |
| IVCORR = 2 03880031 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03890031 |
| 3141 CONTINUE 03900031 |
| IVTNUM = 314 03910031 |
| C 03920031 |
| C **** TEST 314 **** 03930031 |
| C 03940031 |
| IF (ICZERO) 33140, 3140, 33140 03950031 |
| 3140 CONTINUE 03960031 |
| IVON03 = 4 03970031 |
| IVCOMP = 9 -(3-IVON03) 03980031 |
| GO TO 43140 03990031 |
| 33140 IVDELE = IVDELE + 1 04000031 |
| WRITE (I02,80003) IVTNUM 04010031 |
| IF (ICZERO) 43140, 3151, 43140 04020031 |
| 43140 IF (IVCOMP-10) 23140,13140,23140 04030031 |
| 13140 IVPASS = IVPASS + 1 04040031 |
| WRITE (I02,80001) IVTNUM 04050031 |
| GO TO 3151 04060031 |
| 23140 IVFAIL = IVFAIL + 1 04070031 |
| IVCORR = 10 04080031 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04090031 |
| 3151 CONTINUE 04100031 |
| IVTNUM = 315 04110031 |
| C 04120031 |
| C **** TEST 315 **** 04130031 |
| C 04140031 |
| IF (ICZERO) 33150, 3150, 33150 04150031 |
| 3150 CONTINUE 04160031 |
| IVON03 = 4 04170031 |
| IVCOMP = (9-3)-IVON03 04180031 |
| GO TO 43150 04190031 |
| 33150 IVDELE = IVDELE + 1 04200031 |
| WRITE (I02,80003) IVTNUM 04210031 |
| IF (ICZERO) 43150, 3161, 43150 04220031 |
| 43150 IF (IVCOMP-2) 23150,13150,23150 04230031 |
| 13150 IVPASS = IVPASS + 1 04240031 |
| WRITE (I02,80001) IVTNUM 04250031 |
| GO TO 3161 04260031 |
| 23150 IVFAIL = IVFAIL + 1 04270031 |
| IVCORR = 2 04280031 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04290031 |
| 3161 CONTINUE 04300031 |
| IVTNUM = 316 04310031 |
| C 04320031 |
| C **** TEST 316 **** 04330031 |
| C 04340031 |
| IF (ICZERO) 33160, 3160, 33160 04350031 |
| 3160 CONTINUE 04360031 |
| IVON01 = -9 04370031 |
| IVCOMP = (IVON01-3)-4 04380031 |
| GO TO 43160 04390031 |
| 33160 IVDELE = IVDELE + 1 04400031 |
| WRITE (I02,80003) IVTNUM 04410031 |
| IF (ICZERO) 43160, 3171, 43160 04420031 |
| 43160 IF (IVCOMP +16) 23160,13160,23160 04430031 |
| 13160 IVPASS = IVPASS + 1 04440031 |
| WRITE (I02,80001) IVTNUM 04450031 |
| GO TO 3171 04460031 |
| 23160 IVFAIL = IVFAIL + 1 04470031 |
| IVCORR = -16 04480031 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04490031 |
| 3171 CONTINUE 04500031 |
| IVTNUM = 317 04510031 |
| C 04520031 |
| C **** TEST 317 **** 04530031 |
| C 04540031 |
| IF (ICZERO) 33170, 3170, 33170 04550031 |
| 3170 CONTINUE 04560031 |
| IVON02 = -3 04570031 |
| IVCOMP = 9-(IVON02-4) 04580031 |
| GO TO 43170 04590031 |
| 33170 IVDELE = IVDELE + 1 04600031 |
| WRITE (I02,80003) IVTNUM 04610031 |
| IF (ICZERO) 43170, 3181, 43170 04620031 |
| 43170 IF (IVCOMP-16) 23170,13170,23170 04630031 |
| 13170 IVPASS = IVPASS + 1 04640031 |
| WRITE (I02,80001) IVTNUM 04650031 |
| GO TO 3181 04660031 |
| 23170 IVFAIL = IVFAIL + 1 04670031 |
| IVCORR = 16 04680031 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04690031 |
| 3181 CONTINUE 04700031 |
| IVTNUM = 318 04710031 |
| C 04720031 |
| C **** TEST 318 **** 04730031 |
| C 04740031 |
| IF (ICZERO) 33180, 3180, 33180 04750031 |
| 3180 CONTINUE 04760031 |
| IVON03 = +4 04770031 |
| IVCOMP = 9 - (3 - IVON03) 04780031 |
| GO TO 43180 04790031 |
| 33180 IVDELE = IVDELE + 1 04800031 |
| WRITE (I02,80003) IVTNUM 04810031 |
| IF (ICZERO) 43180, 3191, 43180 04820031 |
| 43180 IF (IVCOMP - 10) 23180,13180,23180 04830031 |
| 13180 IVPASS = IVPASS + 1 04840031 |
| WRITE (I02,80001) IVTNUM 04850031 |
| GO TO 3191 04860031 |
| 23180 IVFAIL = IVFAIL + 1 04870031 |
| IVCORR= 10 04880031 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04890031 |
| 3191 CONTINUE 04900031 |
| IVTNUM = 319 04910031 |
| C 04920031 |
| C **** TEST 319 **** 04930031 |
| C 04940031 |
| IF (ICZERO) 33190, 3190, 33190 04950031 |
| 3190 CONTINUE 04960031 |
| IVON02 = 11111 04970031 |
| IVCOMP = (32333-IVON02) -11111 04980031 |
| GO TO 43190 04990031 |
| 33190 IVDELE = IVDELE + 1 05000031 |
| WRITE (I02,80003) IVTNUM 05010031 |
| IF (ICZERO) 43190, 3201, 43190 05020031 |
| 43190 IF (IVCOMP - 10111) 23190,13190,23190 05030031 |
| 13190 IVPASS = IVPASS + 1 05040031 |
| WRITE (I02,80001) IVTNUM 05050031 |
| GO TO 3201 05060031 |
| 23190 IVFAIL = IVFAIL + 1 05070031 |
| IVCORR = 10111 05080031 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05090031 |
| C 05100031 |
| C TEST 320 THROUGH TEST 329 CONTAIN 2 INTEGER VARIABLES AND 05110031 |
| C OPERATOR - IN AN ARITHMETIC EXPRESSION. THE INTEGER VARIABLES 05120031 |
| C CONTAIN POSITIVE AND NEGATIVE VALUES. 05130031 |
| C 05140031 |
| 3201 CONTINUE 05150031 |
| IVTNUM = 320 05160031 |
| C 05170031 |
| C **** TEST 320 **** 05180031 |
| C 05190031 |
| IF (ICZERO) 33200, 3200, 33200 05200031 |
| 3200 CONTINUE 05210031 |
| IVON01 = 3 05220031 |
| IVON02 = 2 05230031 |
| IVCOMP = IVON01 - IVON02 05240031 |
| GO TO 43200 05250031 |
| 33200 IVDELE = IVDELE + 1 05260031 |
| WRITE (I02,80003) IVTNUM 05270031 |
| IF (ICZERO) 43200, 3211, 43200 05280031 |
| 43200 IF (IVCOMP - 1) 23200,13200,23200 05290031 |
| 13200 IVPASS = IVPASS + 1 05300031 |
| WRITE (I02,80001) IVTNUM 05310031 |
| GO TO 3211 05320031 |
| 23200 IVFAIL = IVFAIL + 1 05330031 |
| IVCORR = 1 05340031 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05350031 |
| 3211 CONTINUE 05360031 |
| IVTNUM = 321 05370031 |
| C 05380031 |
| C **** TEST 321 **** 05390031 |
| C 05400031 |
| IF (ICZERO) 33210, 3210, 33210 05410031 |
| 3210 CONTINUE 05420031 |
| IVON01 =2 05430031 |
| IVON02 =3 05440031 |
| IVCOMP = IVON01 - IVON02 05450031 |
| GO TO 43210 05460031 |
| 33210 IVDELE = IVDELE + 1 05470031 |
| WRITE (I02,80003) IVTNUM 05480031 |
| IF (ICZERO) 43210, 3221, 43210 05490031 |
| 43210 IF (IVCOMP +1) 23210,13210,23210 05500031 |
| 13210 IVPASS = IVPASS + 1 05510031 |
| WRITE (I02,80001) IVTNUM 05520031 |
| GO TO 3221 05530031 |
| 23210 IVFAIL = IVFAIL + 1 05540031 |
| IVCORR = -1 05550031 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05560031 |
| 3221 CONTINUE 05570031 |
| IVTNUM = 322 05580031 |
| C 05590031 |
| C **** TEST 322 **** 05600031 |
| C 05610031 |
| IF (ICZERO) 33220, 3220, 33220 05620031 |
| 3220 CONTINUE 05630031 |
| IVON01 = -2 05640031 |
| IVON02 = 3 05650031 |
| IVCOMP = IVON01 - IVON02 05660031 |
| GO TO 43220 05670031 |
| 33220 IVDELE = IVDELE + 1 05680031 |
| WRITE (I02,80003) IVTNUM 05690031 |
| IF (ICZERO) 43220, 3231, 43220 05700031 |
| 43220 IF (IVCOMP +5) 23220,13220,23220 05710031 |
| 13220 IVPASS = IVPASS + 1 05720031 |
| WRITE (I02,80001) IVTNUM 05730031 |
| GO TO 3231 05740031 |
| 23220 IVFAIL = IVFAIL + 1 05750031 |
| IVCORR =-5 05760031 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05770031 |
| 3231 CONTINUE 05780031 |
| IVTNUM = 323 05790031 |
| C 05800031 |
| C **** TEST 323 **** 05810031 |
| C 05820031 |
| IF (ICZERO) 33230, 3230, 33230 05830031 |
| 3230 CONTINUE 05840031 |
| IVON01 = -2 05850031 |
| IVON02 = -3 05860031 |
| IVCOMP = IVON01 - IVON02 05870031 |
| GO TO 43230 05880031 |
| 33230 IVDELE = IVDELE + 1 05890031 |
| WRITE (I02,80003) IVTNUM 05900031 |
| IF (ICZERO) 43230, 3241, 43230 05910031 |
| 43230 IF (IVCOMP -1) 23230,13230,23230 05920031 |
| 13230 IVPASS = IVPASS + 1 05930031 |
| WRITE (I02,80001) IVTNUM 05940031 |
| GO TO 3241 05950031 |
| 23230 IVFAIL = IVFAIL + 1 05960031 |
| IVCORR = 1 05970031 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05980031 |
| 3241 CONTINUE 05990031 |
| IVTNUM = 324 06000031 |
| C 06010031 |
| C **** TEST 324 **** 06020031 |
| C 06030031 |
| IF (ICZERO) 33240, 3240, 33240 06040031 |
| 3240 CONTINUE 06050031 |
| IVON01 = 51 06060031 |
| IVON02 = 52 06070031 |
| IVCOMP = IVON01 - IVON02 06080031 |
| GO TO 43240 06090031 |
| 33240 IVDELE = IVDELE + 1 06100031 |
| WRITE (I02,80003) IVTNUM 06110031 |
| IF (ICZERO) 43240, 3251, 43240 06120031 |
| 43240 IF (IVCOMP + 1) 23240,13240,23240 06130031 |
| 13240 IVPASS = IVPASS + 1 06140031 |
| WRITE (I02,80001) IVTNUM 06150031 |
| GO TO 3251 06160031 |
| 23240 IVFAIL = IVFAIL + 1 06170031 |
| IVCORR = -1 06180031 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06190031 |
| 3251 CONTINUE 06200031 |
| IVTNUM = 325 06210031 |
| C 06220031 |
| C **** TEST 325 **** 06230031 |
| C 06240031 |
| IF (ICZERO) 33250, 3250, 33250 06250031 |
| 3250 CONTINUE 06260031 |
| IVON01 = 676 06270031 |
| IVON02 =-189 06280031 |
| IVCOMP = IVON01 - IVON02 06290031 |
| GO TO 43250 06300031 |
| 33250 IVDELE = IVDELE + 1 06310031 |
| WRITE (I02,80003) IVTNUM 06320031 |
| IF (ICZERO) 43250, 3261, 43250 06330031 |
| 43250 IF (IVCOMP - 865) 23250,13250,23250 06340031 |
| 13250 IVPASS = IVPASS + 1 06350031 |
| WRITE (I02,80001) IVTNUM 06360031 |
| GO TO 3261 06370031 |
| 23250 IVFAIL = IVFAIL + 1 06380031 |
| IVCORR = 865 06390031 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06400031 |
| 3261 CONTINUE 06410031 |
| IVTNUM = 326 06420031 |
| C 06430031 |
| C **** TEST 326 **** 06440031 |
| C 06450031 |
| IF (ICZERO) 33260, 3260, 33260 06460031 |
| 3260 CONTINUE 06470031 |
| IVON01 = 1358 06480031 |
| IVON02 = -8001 06490031 |
| IVCOMP = IVON01 - IVON02 06500031 |
| GO TO 43260 06510031 |
| 33260 IVDELE = IVDELE + 1 06520031 |
| WRITE (I02,80003) IVTNUM 06530031 |
| IF (ICZERO) 43260, 3271, 43260 06540031 |
| 43260 IF (IVCOMP - 9359) 23260,13260,23260 06550031 |
| 13260 IVPASS = IVPASS + 1 06560031 |
| WRITE (I02,80001) IVTNUM 06570031 |
| GO TO 3271 06580031 |
| 23260 IVFAIL = IVFAIL + 1 06590031 |
| IVCORR = 9359 06600031 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06610031 |
| 3271 CONTINUE 06620031 |
| IVTNUM = 327 06630031 |
| C 06640031 |
| C **** TEST 327 **** 06650031 |
| C 06660031 |
| IF (ICZERO) 33270, 3270, 33270 06670031 |
| 3270 CONTINUE 06680031 |
| IVON01 =-16383 06690031 |
| IVON02 = 16383 06700031 |
| IVCOMP = IVON01 - IVON02 06710031 |
| GO TO 43270 06720031 |
| 33270 IVDELE = IVDELE + 1 06730031 |
| WRITE (I02,80003) IVTNUM 06740031 |
| IF (ICZERO) 43270, 3281, 43270 06750031 |
| 43270 IF (IVCOMP + 32766) 23270,13270,23270 06760031 |
| 13270 IVPASS = IVPASS + 1 06770031 |
| WRITE (I02,80001) IVTNUM 06780031 |
| GO TO 3281 06790031 |
| 23270 IVFAIL = IVFAIL + 1 06800031 |
| IVCORR = -32766 06810031 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06820031 |
| 3281 CONTINUE 06830031 |
| IVTNUM = 328 06840031 |
| C 06850031 |
| C **** TEST 328 **** 06860031 |
| C 06870031 |
| IF (ICZERO) 33280, 3280, 33280 06880031 |
| 3280 CONTINUE 06890031 |
| IVON01 = 9876 06900031 |
| IVON02 = 189 06910031 |
| IVCOMP = IVON01 - IVON02 06920031 |
| GO TO 43280 06930031 |
| 33280 IVDELE = IVDELE + 1 06940031 |
| WRITE (I02,80003) IVTNUM 06950031 |
| IF (ICZERO) 43280, 3291, 43280 06960031 |
| 43280 IF (IVCOMP - 9687) 23280,13280,23280 06970031 |
| 13280 IVPASS = IVPASS + 1 06980031 |
| WRITE (I02,80001) IVTNUM 06990031 |
| GO TO 3291 07000031 |
| 23280 IVFAIL = IVFAIL + 1 07010031 |
| IVCORR = 9687 07020031 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 07030031 |
| 3291 CONTINUE 07040031 |
| IVTNUM = 329 07050031 |
| C 07060031 |
| C **** TEST 329 **** 07070031 |
| C 07080031 |
| IF (ICZERO) 33290, 3290, 33290 07090031 |
| 3290 CONTINUE 07100031 |
| IVON01 = 11112 07110031 |
| IVON02 = 11112 07120031 |
| IVCOMP = IVON01 - IVON02 07130031 |
| GO TO 43290 07140031 |
| 33290 IVDELE = IVDELE + 1 07150031 |
| WRITE (I02,80003) IVTNUM 07160031 |
| IF (ICZERO) 43290, 3301, 43290 07170031 |
| 43290 IF (IVCOMP) 23290,13290,23290 07180031 |
| 13290 IVPASS = IVPASS + 1 07190031 |
| WRITE (I02,80001) IVTNUM 07200031 |
| GO TO 3301 07210031 |
| 23290 IVFAIL = IVFAIL + 1 07220031 |
| IVCORR = 0 07230031 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 07240031 |
| C 07250031 |
| C **** END OF TESTS **** 07260031 |
| 3301 CONTINUE 07270031 |
| C 07280031 |
| C WRITE PAGE FOOTINGS AND RUN SUMMARIES 07290031 |
| 99999 CONTINUE 07300031 |
| WRITE (I02,90002) 07310031 |
| WRITE (I02,90006) 07320031 |
| WRITE (I02,90002) 07330031 |
| WRITE (I02,90002) 07340031 |
| WRITE (I02,90007) 07350031 |
| WRITE (I02,90002) 07360031 |
| WRITE (I02,90008) IVFAIL 07370031 |
| WRITE (I02,90009) IVPASS 07380031 |
| WRITE (I02,90010) IVDELE 07390031 |
| C 07400031 |
| C 07410031 |
| C TERMINATE ROUTINE EXECUTION 07420031 |
| STOP 07430031 |
| C 07440031 |
| C FORMAT STATEMENTS FOR PAGE HEADERS 07450031 |
| 90000 FORMAT ("1") 07460031 |
| 90002 FORMAT (" ") 07470031 |
| 90001 FORMAT (" ",10X,"FORTRAN COMPILER VALIDATION SYSTEM" ) 07480031 |
| 90003 FORMAT (" ",21X,"VERSION 2.1" ) 07490031 |
| 90004 FORMAT (" ",10X,"FOR OFFICIAL USE ONLY - COPYRIGHT 1978" ) 07500031 |
| 90005 FORMAT (" ",5X,"TEST",5X,"PASS/FAIL", 5X,"COMPUTED",8X,"CORRECT") 07510031 |
| 90006 FORMAT (" ",5X,"----------------------------------------------" ) 07520031 |
| 90011 FORMAT (" ",18X,"SUBSET LEVEL TEST" ) 07530031 |
| C 07540031 |
| C FORMAT STATEMENTS FOR RUN SUMMARIES 07550031 |
| 90008 FORMAT (" ",15X,I5," ERRORS ENCOUNTERED" ) 07560031 |
| 90009 FORMAT (" ",15X,I5," TESTS PASSED" ) 07570031 |
| 90010 FORMAT (" ",15X,I5," TESTS DELETED" ) 07580031 |
| C 07590031 |
| C FORMAT STATEMENTS FOR TEST RESULTS 07600031 |
| 80001 FORMAT (" ",4X,I5,7X,"PASS") 07610031 |
| 80002 FORMAT (" ",4X,I5,7X,"FAIL") 07620031 |
| 80003 FORMAT (" ",4X,I5,7X,"DELETED") 07630031 |
| 80004 FORMAT (" ",4X,I5,7X,"FAIL",10X,I6,9X,I6) 07640031 |
| 80005 FORMAT (" ",4X,I5,7X,"FAIL",4X,E12.5,3X,E12.5) 07650031 |
| C 07660031 |
| 90007 FORMAT (" ",20X,"END OF PROGRAM FM031" ) 07670031 |
| END 07680031 |