blob: 8f23c98d3267865822f21b5486be08e98e2ac6a3 [file] [log] [blame]
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