|
|
1.1 ! root 1: PROGRAM FM328 00010328 ! 2: C DATE***82/08/02*18.33.46 ! 3: C OWNER PRE/850703/TC-85- -410/ /FSTC/278FCVS*F78UBP20/ ! 4: C AUDIT FCVS78 V2.0 ! 5: C 00020328 ! 6: C 00030328 ! 7: C THIS ROUTINE TEST SUBSET LEVEL FEATURES OF 00040328 ! 8: C SUBROUTINE SUBPROGRAMS. TESTS ARE DESIGNED TO CHECK THE 00050328 ! 9: C ASSOCIATION OF ALL PERMISSIBLE FORMS OF ACTUAL ARGUMENTS WITH 00060328 ! 10: C VARIABLE, ARRAY AND PROCEDURE NAME DUMMY ARGUMENTS. THESE 00070328 ! 11: C INCLUDE, 00080328 ! 12: C 00090328 ! 13: C 1) ACTUAL ARGUMENTS ASSOCIATED TO VARIABLE NAME DUMMY 00100328 ! 14: C ARGUMENT INCLUDE, 00110328 ! 15: C 00120328 ! 16: C A) CONSTANT 00130328 ! 17: C B) VARIABLE NAME 00140328 ! 18: C C) ARRAY ELEMENT NAME 00150328 ! 19: C D) EXPRESSION INVOLVING OPERATORS 00160328 ! 20: C E) EXPRESSION ENCLOSED IN PARENTHESES 00170328 ! 21: C F) INTRINSIC FUNCTION REFERENCE 00180328 ! 22: C G) EXTERNAL FUNCTION REFERENCE 00190328 ! 23: C H) STATEMENT FUNCTION REFERENCE 00200328 ! 24: C I) ACTUAL ARGUMENT NAME SAME AS DUMMY ARGUMENT NAME 00210328 ! 25: C 00220328 ! 26: C 2) ACTUAL ARGUMENTS ASSOCIATED TO ARRAY NAME DUMMY 00230328 ! 27: C ARGUMENT INCLUDE, 00240328 ! 28: C 00250328 ! 29: C A) ARRAY NAME 00260328 ! 30: C B) ARRAY ELEMENT NAME 00270328 ! 31: C 00280328 ! 32: C 3) ACTUAL ARGUMENTS ASSOCIATED TO PROCEDURE NAME DUMMY 00290328 ! 33: C ARGUMENT INCLUDE, 00300328 ! 34: C 00310328 ! 35: C A) EXTERNAL FUNCTION NAME 00320328 ! 36: C B) INTRINSIC FUNCTION NAME 00330328 ! 37: C C) SUBROUTINE NAME 00340328 ! 38: C 00350328 ! 39: C ALL DATA PASSED TO THE REFERENCED SUBPROGRAMS ARE PASSED VIA 00360328 ! 40: C ARGUMENT VALUES, WHILE ALL RESULTS RETURNED TO FM328 ARE 00370328 ! 41: C RETURNED VIA VARIABLES IN NAMED COMMON. SUBSET LEVEL ROUTINES 00380328 ! 42: C FM026, FM050 AND FM056 ALSO TEST THE USE OF SUBROUTINES. 00390328 ! 43: C 00400328 ! 44: C REFERENCES. 00410328 ! 45: C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, 00420328 ! 46: C X3.9-1978 00430328 ! 47: C 00440328 ! 48: C SECTION 2.8, DUMMY ARGUMENTS 00450328 ! 49: C SECTION 5.1.2.2, DUMMY ARRAY DECLARATOR 00460328 ! 50: C SECTION 5.5, DUMMY AND ACTUAL ARRAYS 00470328 ! 51: C SECTION 8.1, DIMENSION STATEMENT 00480328 ! 52: C SECTION 8.3, COMMON STATEMENT 00490328 ! 53: C SECTION 8.4, TYPE-STATEMENT 00500328 ! 54: C SECTION 8.7, EXTERNAL STATEMENT 00510328 ! 55: C SECTION 8.8, INTRINSIC STATEMENT 00520328 ! 56: C SECTION 15.2, REFERENCING A FUNCTION 00530328 ! 57: C SECTION 15.3, INTRINSIC FUNCTIONS 00540328 ! 58: C SECTION 15.5, EXTERNAL FUNCTIONS 00550328 ! 59: C SECTION 15.6, SUBROUTINES 00560328 ! 60: C SECTION 15.9, ARGUMENTS AND COMMON BLOCKS 00570328 ! 61: C 00580328 ! 62: C 00590328 ! 63: C ******************************************************************00600328 ! 64: C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE 00610328 ! 65: C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN STANDARD FORTRAN 00620328 ! 66: C X3.9-1978, HAS BEEN DEVELOPED BY THE DEPARTMENT OF THE NAVY. THE 00630328 ! 67: C FORTRAN COMPILER VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT 00640328 ! 68: C ROUTINES, THEIR RELATED DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT00650328 ! 69: C ROUTINE IS A FORTRAN PROGRAM OR SUBPROGRAM WHICH INCLUDES TESTS 00660328 ! 70: C OF SPECIFIC LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING00670328 ! 71: C THE RESULT OF EXECUTING THESE TESTS. 00680328 ! 72: C 00690328 ! 73: C THIS PARTICULAR PROGRAM OR SUBPROGRAM CONTAINS ONLY FEATURES 00700328 ! 74: C FOUND IN THE SUBSET LEVEL OF THE STANDARD. 00710328 ! 75: C 00720328 ! 76: C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO 00730328 ! 77: C DEPARTMENT OF THE NAVY 00740328 ! 78: C FEDERAL COBOL COMPILER TESTING SERVICE 00750328 ! 79: C WASHINGTON, D.C. 20376 00760328 ! 80: C 00770328 ! 81: C ******************************************************************00780328 ! 82: C 00790328 ! 83: C 00800328 ! 84: IMPLICIT LOGICAL (L) 00810328 ! 85: IMPLICIT CHARACTER*14 (C) 00820328 ! 86: C 00830328 ! 87: INTEGER IATN11(2,3) 00840328 ! 88: REAL RATN11(3,4) 00850328 ! 89: INTEGER FF330 00860328 ! 90: DIMENSION IADN11(4), IADN12(4) 00870328 ! 91: DIMENSION RADN11(4), RADN12(4) 00880328 ! 92: DIMENSION LADN11(4) 00890328 ! 93: COMMON /BLK1/IVCN01, RVCN01, LVCN01 00900328 ! 94: COMMON IACN11(6), RACN11(10) 00910328 ! 95: EXTERNAL FF330, FS335 00920328 ! 96: INTRINSIC ABS, IABS, NINT 00930328 ! 97: IFOS01(IDON04) = IDON04 + 1 00940328 ! 98: RFOS01(RDON04) = RDON04 + 1.0 00950328 ! 99: LFOS01(LDON04) = .NOT. LDON04 00960328 ! 100: C 00970328 ! 101: C 00980328 ! 102: C 00990328 ! 103: C INITIALIZATION SECTION. 01000328 ! 104: C 01010328 ! 105: C INITIALIZE CONSTANTS 01020328 ! 106: C ******************** 01030328 ! 107: C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER 01040328 ! 108: I01 = 5 01050328 ! 109: C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER 01060328 ! 110: I02 = 6 01070328 ! 111: C SYSTEM ENVIRONMENT SECTION 01080328 ! 112: C 01090328 ! 113: I01 = 5 01100328 ! 114: C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 01110328 ! 115: C (UNIT NUMBER FOR CARD READER). 01120328 ! 116: CX011 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-011 CONTROL CARD01130328 ! 117: C THE CX011 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 01140328 ! 118: C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX010 ABOVE. 01150328 ! 119: C 01160328 ! 120: I02 = 6 01170328 ! 121: C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02 = 6 01180328 ! 122: C (UNIT NUMBER FOR PRINTER). 01190328 ! 123: CX021 THIS CARD IS PEPLACED BY CONTENTS OF FEXEC X-021 CONTROL CARD.01200328 ! 124: C THE CX021 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 01210328 ! 125: C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX020 ABOVE. 01220328 ! 126: C 01230328 ! 127: IVPASS = 0 01240328 ! 128: IVFAIL = 0 01250328 ! 129: IVDELE = 0 01260328 ! 130: ICZERO = 0 01270328 ! 131: C 01280328 ! 132: C WRITE OUT PAGE HEADERS 01290328 ! 133: C 01300328 ! 134: WRITE (I02,90002) 01310328 ! 135: WRITE (I02,90006) 01320328 ! 136: WRITE (I02,90008) 01330328 ! 137: WRITE (I02,90004) 01340328 ! 138: WRITE (I02,90010) 01350328 ! 139: WRITE (I02,90004) 01360328 ! 140: WRITE (I02,90016) 01370328 ! 141: WRITE (I02,90001) 01380328 ! 142: WRITE (I02,90004) 01390328 ! 143: WRITE (I02,90012) 01400328 ! 144: WRITE (I02,90014) 01410328 ! 145: WRITE (I02,90004) 01420328 ! 146: C 01430328 ! 147: C 01440328 ! 148: C TEST 001 THROUGH TEST 013 ARE DESIGNED TO ASSOCIATE VARIOUS FORMS 01450328 ! 149: C OF ACTUAL ARGUMENTS TO VARIABLE NAMES USED AS SUBROUTINE 01460328 ! 150: C DUMMY ARGUMENTS. INTEGER, REAL AND LOGICAL DUMMY ARGUMENTS ARE 01470328 ! 151: C TESTED. 01480328 ! 152: C 01490328 ! 153: C 01500328 ! 154: C **** FCVS PROGRAM 328 - TEST 001 **** 01510328 ! 155: C 01520328 ! 156: C USE INTEGER, REAL AND LOGICAL CONSTANTS AS ACTUAL ARGUMENTS. 01530328 ! 157: C 01540328 ! 158: IVTNUM = 1 01550328 ! 159: IF (ICZERO) 30010, 0010, 30010 01560328 ! 160: 0010 CONTINUE 01570328 ! 161: CALL FS329(3, 3.0, .FALSE.) 01580328 ! 162: IVCOMP = 1 01590328 ! 163: IF (IVCN01 .EQ. 4) IVCOMP = IVCOMP * 2 01600328 ! 164: IF (RVCN01 .GE. 3.9995 .AND. RVCN01 .LE. 4.0005) IVCOMP = IVCOMP*301610328 ! 165: IF (LVCN01) IVCOMP = IVCOMP * 5 01620328 ! 166: IVCORR = 30 01630328 ! 167: 40010 IF (IVCOMP - 30) 20010, 10010, 20010 01640328 ! 168: 30010 IVDELE = IVDELE + 1 01650328 ! 169: WRITE (I02,80000) IVTNUM 01660328 ! 170: IF (ICZERO) 10010, 0021, 20010 01670328 ! 171: 10010 IVPASS = IVPASS + 1 01680328 ! 172: WRITE (I02,80002) IVTNUM 01690328 ! 173: GO TO 0021 01700328 ! 174: 20010 IVFAIL = IVFAIL + 1 01710328 ! 175: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 01720328 ! 176: 0021 CONTINUE 01730328 ! 177: C 01740328 ! 178: C **** FCVS PROGRAM 328 - TEST 002 **** 01750328 ! 179: C 01760328 ! 180: C USE INTEGER, REAL AND LOGICAL VARIABLES AS ACTUAL ARGUMENTS. 01770328 ! 181: C 01780328 ! 182: IVTNUM = 2 01790328 ! 183: IF (ICZERO) 30020, 0020, 30020 01800328 ! 184: 0020 CONTINUE 01810328 ! 185: IVON01 = 7 01820328 ! 186: RVON01 = 7.0 01830328 ! 187: LVON01 = .TRUE. 01840328 ! 188: CALL FS329(IVON01, RVON01, LVON01) 01850328 ! 189: IVCOMP = 1 01860328 ! 190: IF (IVCN01 .EQ. 8) IVCOMP =IVCOMP * 2 01870328 ! 191: IF (RVCN01 .GE. 7.9995 .AND. RVCN01 .LE. 8.0005) IVCOMP = IVCOMP*301880328 ! 192: IF (.NOT. LVCN01) IVCOMP = IVCOMP * 5 01890328 ! 193: IVCORR = 30 01900328 ! 194: 40020 IF (IVCOMP - 30) 20020, 10020, 20020 01910328 ! 195: 30020 IVDELE = IVDELE + 1 01920328 ! 196: WRITE (I02,80000) IVTNUM 01930328 ! 197: IF (ICZERO) 10020, 0031, 20020 01940328 ! 198: 10020 IVPASS = IVPASS + 1 01950328 ! 199: WRITE (I02,80002) IVTNUM 01960328 ! 200: GO TO 0031 01970328 ! 201: 20020 IVFAIL = IVFAIL + 1 01980328 ! 202: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 01990328 ! 203: 0031 CONTINUE 02000328 ! 204: C 02010328 ! 205: C **** FCVS PROGRAM 328 - TEST 003 **** 02020328 ! 206: C 02030328 ! 207: C USE INTEGER, REAL AND LOGICAL ARRAY ELEMENT NAMES AS ACTUAL 02040328 ! 208: C ARGUMENTS. 02050328 ! 209: C 02060328 ! 210: IVTNUM = 3 02070328 ! 211: IF (ICZERO) 30030, 0030, 30030 02080328 ! 212: 0030 CONTINUE 02090328 ! 213: IADN11(2) = 2 02100328 ! 214: RADN11(4) = 4.0 02110328 ! 215: LADN11(1) = .FALSE. 02120328 ! 216: CALL FS329(IADN11(2), RADN11(4), LADN11(1)) 02130328 ! 217: IVCOMP = 1 02140328 ! 218: IF (IVCN01 .EQ. 3) IVCOMP = IVCOMP * 2 02150328 ! 219: IF (RVCN01 .GE. 4.9995 .AND. RVCN01 .LE. 5.0005) IVCOMP = IVCOMP*302160328 ! 220: IF (LVCN01) IVCOMP = IVCOMP * 5 02170328 ! 221: IVCORR = 30 02180328 ! 222: 40030 IF (IVCOMP - 30) 20030, 10030, 20030 02190328 ! 223: 30030 IVDELE = IVDELE + 1 02200328 ! 224: WRITE (I02,80000) IVTNUM 02210328 ! 225: IF (ICZERO) 10030, 0041, 20030 02220328 ! 226: 10030 IVPASS = IVPASS + 1 02230328 ! 227: WRITE (I02,80002) IVTNUM 02240328 ! 228: GO TO 0041 02250328 ! 229: 20030 IVFAIL = IVFAIL + 1 02260328 ! 230: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 02270328 ! 231: 0041 CONTINUE 02280328 ! 232: C 02290328 ! 233: C **** FCVS PROGRAM 328 - TEST 004 **** 02300328 ! 234: C 02310328 ! 235: C INTEGER AND REAL EXPRESSIONS INVOLVING OPERATORS AS ACTUAL 02320328 ! 236: C ARGUMENTS. 02330328 ! 237: C 02340328 ! 238: IVTNUM = 4 02350328 ! 239: IF (ICZERO) 30040, 0040, 30040 02360328 ! 240: 0040 CONTINUE 02370328 ! 241: IVON02 = 2 02380328 ! 242: IVON03 = 3 02390328 ! 243: RVON02 = 2. 02400328 ! 244: RVON03 = 1.2 02410328 ! 245: CALL FS329(IVON02 + 3 * IVON03 - 7, RVON02 *RVON03 / .6, .TRUE.) 02420328 ! 246: IVCOMP = 1 02430328 ! 247: IF (IVCN01 .EQ. 5) IVCOMP = IVCOMP * 2 02440328 ! 248: IF (RVCN01 .GE. 4.9995 .AND. RVCN01 .LE. 5.0005) IVCOMP = IVCOMP*302450328 ! 249: IVCORR = 6 02460328 ! 250: 40040 IF (IVCOMP - 6) 20040, 10040, 20040 02470328 ! 251: 30040 IVDELE = IVDELE + 1 02480328 ! 252: WRITE (I02,80000) IVTNUM 02490328 ! 253: IF (ICZERO) 10040, 0051, 20040 02500328 ! 254: 10040 IVPASS = IVPASS + 1 02510328 ! 255: WRITE (I02,80002) IVTNUM 02520328 ! 256: GO TO 0051 02530328 ! 257: 20040 IVFAIL = IVFAIL + 1 02540328 ! 258: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 02550328 ! 259: 0051 CONTINUE 02560328 ! 260: C 02570328 ! 261: C **** FCVS PROGRAM 328 - TEST 005 **** 02580328 ! 262: C 02590328 ! 263: C REAL EXPRESSION INVOLVING INTEGER AND REAL PRIMARIES AND OPERATORS02600328 ! 264: C AS ACTUAL ARGUMENT. 02610328 ! 265: C 02620328 ! 266: IVTNUM = 5 02630328 ! 267: IF (ICZERO) 30050, 0050, 30050 02640328 ! 268: 0050 CONTINUE 02650328 ! 269: RVCOMP = 0.0 02660328 ! 270: IVON01 = 2 02670328 ! 271: RADN11(2) = 2.5 02680328 ! 272: CALL FS329(1, IVON01**3 * (RADN11(2) - 1) + 2.0, .TRUE.) 02690328 ! 273: RVCOMP = RVCN01 02700328 ! 274: RVCORR = 15.0 02710328 ! 275: 40050 IF (RVCOMP - 14.995) 20050, 10050, 40051 02720328 ! 276: 40051 IF (RVCOMP - 15.005) 10050, 10050, 20050 02730328 ! 277: 30050 IVDELE = IVDELE + 1 02740328 ! 278: WRITE (I02,80000) IVTNUM 02750328 ! 279: IF (ICZERO) 10050, 0061, 20050 02760328 ! 280: 10050 IVPASS = IVPASS + 1 02770328 ! 281: WRITE (I02,80002) IVTNUM 02780328 ! 282: GO TO 0061 02790328 ! 283: 20050 IVFAIL = IVFAIL + 1 02800328 ! 284: WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 02810328 ! 285: 0061 CONTINUE 02820328 ! 286: C 02830328 ! 287: C **** FCVS PROGRAM 328 - TEST 006 **** 02840328 ! 288: C 02850328 ! 289: C LOGICAL EXPRESSION INVOLVING LOGICAL OPERATOR (.NOT.) AS ACTUAL 02860328 ! 290: C ARGUMENT. 02870328 ! 291: C 02880328 ! 292: IVTNUM = 6 02890328 ! 293: IF (ICZERO) 30060, 0060, 30060 02900328 ! 294: 0060 CONTINUE 02910328 ! 295: LVON01 = .TRUE. 02920328 ! 296: CALL FS329(1, 1.0, .NOT. LVON01) 02930328 ! 297: IVCOMP = 0 02940328 ! 298: IF (LVCN01) IVCOMP = 1 02950328 ! 299: IVCORR = 1 02960328 ! 300: 40060 IF (IVCOMP - 1) 20060, 10060, 20060 02970328 ! 301: 30060 IVDELE = IVDELE + 1 02980328 ! 302: WRITE (I02,80000) IVTNUM 02990328 ! 303: IF (ICZERO) 10060, 0071, 20060 03000328 ! 304: 10060 IVPASS = IVPASS + 1 03010328 ! 305: WRITE (I02,80002) IVTNUM 03020328 ! 306: GO TO 0071 03030328 ! 307: 20060 IVFAIL = IVFAIL + 1 03040328 ! 308: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 03050328 ! 309: 0071 CONTINUE 03060328 ! 310: C 03070328 ! 311: C **** FCVS PROGRAM 328 - TEST 007 **** 03080328 ! 312: C 03090328 ! 313: C LOGICAL EXPRESSION INVOLVING LOGICAL OPERATOR (.OR.) AS ACTIVE 03100328 ! 314: C ARGUMENT. 03110328 ! 315: C 03120328 ! 316: IVTNUM = 7 03130328 ! 317: IF (ICZERO) 30070, 0070, 30070 03140328 ! 318: 0070 CONTINUE 03150328 ! 319: LVON01 = .TRUE. 03160328 ! 320: LVON02 = .FALSE. 03170328 ! 321: CALL FS329(1, 1.0, LVON01 .OR. LVON02) 03180328 ! 322: IVCOMP = 0 03190328 ! 323: IF (.NOT. LVCN01) IVCOMP = 1 03200328 ! 324: IVCORR = 1 03210328 ! 325: 40070 IF (IVCOMP - 1) 20070, 10070, 20070 03220328 ! 326: 30070 IVDELE = IVDELE + 1 03230328 ! 327: WRITE (I02,80000) IVTNUM 03240328 ! 328: IF (ICZERO) 10070, 0081, 20070 03250328 ! 329: 10070 IVPASS = IVPASS + 1 03260328 ! 330: WRITE (I02,80002) IVTNUM 03270328 ! 331: GO TO 0081 03280328 ! 332: 20070 IVFAIL = IVFAIL + 1 03290328 ! 333: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 03300328 ! 334: 0081 CONTINUE 03310328 ! 335: C 03320328 ! 336: C **** FCVS PROGRAM 328 - TEST 008 **** 03330328 ! 337: C 03340328 ! 338: C LOGICAL EXPRESSION INVOLVING LOGICAL OPERATOR (.AND.) AS ACTUAL 03350328 ! 339: C ARGUMENT. 03360328 ! 340: C 03370328 ! 341: IVTNUM = 8 03380328 ! 342: IF (ICZERO) 30080, 0080, 30080 03390328 ! 343: 0080 CONTINUE 03400328 ! 344: LVON01 = .FALSE. 03410328 ! 345: LVON02 = .TRUE. 03420328 ! 346: CALL FS329(1, 1.0, LVON01 .AND. LVON02) 03430328 ! 347: IVCOMP = 0 03440328 ! 348: IF (LVCN01) IVCOMP = 1 03450328 ! 349: IVCORR = 1 03460328 ! 350: 40080 IF (IVCOMP - 1) 20080, 10080, 20080 03470328 ! 351: 30080 IVDELE = IVDELE + 1 03480328 ! 352: WRITE (I02,80000) IVTNUM 03490328 ! 353: IF (ICZERO) 10080, 0091, 20080 03500328 ! 354: 10080 IVPASS = IVPASS + 1 03510328 ! 355: WRITE (I02,80002) IVTNUM 03520328 ! 356: GO TO 0091 03530328 ! 357: 20080 IVFAIL = IVFAIL + 1 03540328 ! 358: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 03550328 ! 359: 0091 CONTINUE 03560328 ! 360: C 03570328 ! 361: C **** FCVS PROGRAM 328 - TEST 009 **** 03580328 ! 362: C 03590328 ! 363: C EXPRESSION ENCLOSED IN PARENTHESES AS ACTUAL ARGUMENT. 03600328 ! 364: C 03610328 ! 365: IVTNUM = 9 03620328 ! 366: IF (ICZERO) 30090, 0090, 30090 03630328 ! 367: 0090 CONTINUE 03640328 ! 368: IVCOMP = 0 03650328 ! 369: IVON01 = 6 03660328 ! 370: CALL FS329((IVON01 + 3), 1.0, .TRUE.) 03670328 ! 371: IVCOMP = IVCN01 03680328 ! 372: IVCORR = 10 03690328 ! 373: 40090 IF (IVCOMP - 10) 20090, 10090, 20090 03700328 ! 374: 30090 IVDELE = IVDELE + 1 03710328 ! 375: WRITE (I02,80000) IVTNUM 03720328 ! 376: IF (ICZERO) 10090, 0101, 20090 03730328 ! 377: 10090 IVPASS = IVPASS + 1 03740328 ! 378: WRITE (I02,80002) IVTNUM 03750328 ! 379: GO TO 0101 03760328 ! 380: 20090 IVFAIL = IVFAIL + 1 03770328 ! 381: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 03780328 ! 382: 0101 CONTINUE 03790328 ! 383: C 03800328 ! 384: C **** FCVS PROGRAM 328 - TEST 010 **** 03810328 ! 385: C 03820328 ! 386: C INTEGER AND REAL INTRINSIC FUNCTION REFERENCES AS ACTUAL ARGUMENTS03830328 ! 387: C 03840328 ! 388: IVTNUM = 10 03850328 ! 389: IF (ICZERO) 30100, 0100, 30100 03860328 ! 390: 0100 CONTINUE 03870328 ! 391: RVON01 = 4.7 03880328 ! 392: RVON02 = -5.2 03890328 ! 393: CALL FS329(NINT(RVON01), ABS(RVON02), .TRUE.) 03900328 ! 394: IVCOMP = 1 03910328 ! 395: IF (IVCN01 .EQ. 6) IVCOMP = IVCOMP * 2 03920328 ! 396: IF (RVCN01 .GE. 6.1995 .AND. RVCN01 .LE. 6.2005) IVCOMP = IVCOMP*303930328 ! 397: IVCORR = 6 03940328 ! 398: 40100 IF (IVCOMP - 6) 20100, 10100, 20100 03950328 ! 399: 30100 IVDELE = IVDELE + 1 03960328 ! 400: WRITE (I02,80000) IVTNUM 03970328 ! 401: IF (ICZERO) 10100, 0111, 20100 03980328 ! 402: 10100 IVPASS = IVPASS + 1 03990328 ! 403: WRITE (I02,80002) IVTNUM 04000328 ! 404: GO TO 0111 04010328 ! 405: 20100 IVFAIL = IVFAIL + 1 04020328 ! 406: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 04030328 ! 407: 0111 CONTINUE 04040328 ! 408: C 04050328 ! 409: C **** FCVS PROGRAM 328 - TEST 011 **** 04060328 ! 410: C 04070328 ! 411: C EXTERNAL FUNCTION REFERENCE AS ACTUAL ARGUMENT. 04080328 ! 412: C 04090328 ! 413: IVTNUM = 11 04100328 ! 414: IF (ICZERO) 30110, 0110, 30110 04110328 ! 415: 0110 CONTINUE 04120328 ! 416: IVCOMP = 0 04130328 ! 417: IVON01 = 4 04140328 ! 418: CALL FS329(FF330(IVON01), 1.0, .TRUE.) 04150328 ! 419: IVCOMP = IVCN01 04160328 ! 420: IVCORR = 6 04170328 ! 421: 40110 IF (IVCOMP - 6) 20110, 10110, 20110 04180328 ! 422: 30110 IVDELE = IVDELE + 1 04190328 ! 423: WRITE (I02,80000) IVTNUM 04200328 ! 424: IF (ICZERO) 10110, 0121, 20110 04210328 ! 425: 10110 IVPASS = IVPASS + 1 04220328 ! 426: WRITE (I02,80002) IVTNUM 04230328 ! 427: GO TO 0121 04240328 ! 428: 20110 IVFAIL = IVFAIL + 1 04250328 ! 429: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 04260328 ! 430: 0121 CONTINUE 04270328 ! 431: C 04280328 ! 432: C **** FCVS PROGRAM 328 - TEST 012 **** 04290328 ! 433: C 04300328 ! 434: C USE ACTUAL ARGUMENT NAMES WHICH ARE IDENTICAL TO THE DUMMY 04310328 ! 435: C ARGUMENT NAMES. 04320328 ! 436: C 04330328 ! 437: IVTNUM = 12 04340328 ! 438: IF (ICZERO) 30120, 0120, 30120 04350328 ! 439: 0120 CONTINUE 04360328 ! 440: IDON01 = 10 04370328 ! 441: RDON01 = 10.0 04380328 ! 442: LDON01 = .FALSE. 04390328 ! 443: CALL FS329(IDON01, RDON01, LDON01) 04400328 ! 444: IVCOMP = 1 04410328 ! 445: IF (IVCN01 .EQ. 11) IVCOMP = IVCOMP * 2 04420328 ! 446: IF (RVCN01 .GE. 10.995 .AND. RVCN01 .LE. 11.005) IVCOMP = IVCOMP*304430328 ! 447: IF (LVCN01) IVCOMP = IVCOMP * 5 04440328 ! 448: IVCORR = 30 04450328 ! 449: 40120 IF (IVCOMP - 30) 20120, 10120, 20120 04460328 ! 450: 30120 IVDELE = IVDELE + 1 04470328 ! 451: WRITE (I02,80000) IVTNUM 04480328 ! 452: IF (ICZERO) 10120, 0131, 20120 04490328 ! 453: 10120 IVPASS = IVPASS + 1 04500328 ! 454: WRITE (I02,80002) IVTNUM 04510328 ! 455: GO TO 0131 04520328 ! 456: 20120 IVFAIL = IVFAIL + 1 04530328 ! 457: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 04540328 ! 458: 0131 CONTINUE 04550328 ! 459: C 04560328 ! 460: C **** FCVS PROGRAM 328 - TEST 013 **** 04570328 ! 461: C 04580328 ! 462: C USE INTEGER, REAL AND LOGICAL STATEMENT FUNCTION REFERENCES AS 04590328 ! 463: C ARGUMENT NAMES. 04600328 ! 464: C 04610328 ! 465: IVTNUM = 13 04620328 ! 466: IF (ICZERO) 30130, 0130, 30130 04630328 ! 467: 0130 CONTINUE 04640328 ! 468: RVON01 = 5.0 04650328 ! 469: CALL FS329(IFOS01(4), RFOS01(RVON01), LFOS01(.TRUE.)) 04660328 ! 470: IVCOMP = 1 04670328 ! 471: IF (IVCN01 .EQ. 6) IVCOMP = IVCOMP * 2 04680328 ! 472: IF (RVCN01 .GE. 6.9995 .AND. RVCN01 .LE. 7.0005) IVCOMP = IVCOMP*304690328 ! 473: IF (LVCN01) IVCOMP = IVCOMP * 5 04700328 ! 474: IVCORR = 30 04710328 ! 475: 40130 IF (IVCOMP - 30) 20130, 10130, 20130 04720328 ! 476: 30130 IVDELE = IVDELE + 1 04730328 ! 477: WRITE (I02,80000) IVTNUM 04740328 ! 478: IF (ICZERO) 10130, 0141, 20130 04750328 ! 479: 10130 IVPASS = IVPASS + 1 04760328 ! 480: WRITE (I02,80002) IVTNUM 04770328 ! 481: GO TO 0141 04780328 ! 482: 20130 IVFAIL = IVFAIL + 1 04790328 ! 483: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 04800328 ! 484: 0141 CONTINUE 04810328 ! 485: C 04820328 ! 486: C TEST 014 THROUGH TEST 019 ARE DESIGNED TO ASSOCIATE VARIOUS FORMS 04830328 ! 487: C OF ACTUAL ARGUMENTS TO ARRAY NAMES USED AS SUBROUTINE DUMMY 04840328 ! 488: C ARGUMENTS. 04850328 ! 489: C 04860328 ! 490: C 04870328 ! 491: C **** FCVS PROGRAM 328 - TEST 014 **** 04880328 ! 492: C 04890328 ! 493: C USE AN ARRAY NAME AS AN ACTUAL ARGUMENT IN WHICH THE ACTUAL 04900328 ! 494: C ARGUMENT ARRAY DECLARATOR IS IDENTICAL TO THE ASSOCIATED DUMMY 04910328 ! 495: C ARGUMENT ARRAY DECLARATOR. 04920328 ! 496: C 04930328 ! 497: IVTNUM = 14 04940328 ! 498: IF (ICZERO) 30140, 0140, 30140 04950328 ! 499: 0140 CONTINUE 04960328 ! 500: IVCOMP = 0 04970328 ! 501: IADN12(1) = 1 04980328 ! 502: IADN12(2) = 10 04990328 ! 503: IADN12(3) = 100 05000328 ! 504: IADN12(4) = 1000 05010328 ! 505: CALL FS331(IADN12) 05020328 ! 506: IVCOMP = IVCN01 05030328 ! 507: IVCORR = 1111 05040328 ! 508: 40140 IF (IVCOMP - 1111) 20140, 10140, 20140 05050328 ! 509: 30140 IVDELE = IVDELE + 1 05060328 ! 510: WRITE (I02,80000) IVTNUM 05070328 ! 511: IF (ICZERO) 10140, 0151, 20140 05080328 ! 512: 10140 IVPASS = IVPASS + 1 05090328 ! 513: WRITE (I02,80002) IVTNUM 05100328 ! 514: GO TO 0151 05110328 ! 515: 20140 IVFAIL = IVFAIL + 1 05120328 ! 516: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 05130328 ! 517: 0151 CONTINUE 05140328 ! 518: C 05150328 ! 519: C **** FCVS PROGRAM 328 - TEST 015 **** 05160328 ! 520: C 05170328 ! 521: C USE AN ARRAY NAME AS AN ACTUAL ARGUMENT IN WHICH THE SIZE OF THE 05180328 ! 522: C ACTUAL ARGUMENT ARRAY IS LARGER THAN THE SIZE OF THE ASSOCIATED 05190328 ! 523: C DUMMY ARGUMENT ARRAY. 05200328 ! 524: C 05210328 ! 525: IVTNUM = 15 05220328 ! 526: IF (ICZERO) 30150, 0150, 30150 05230328 ! 527: 0150 CONTINUE 05240328 ! 528: IVCOMP = 0 05250328 ! 529: IACN11(1) = 1 05260328 ! 530: IACN11(2) = 10 05270328 ! 531: IACN11(3) = 100 05280328 ! 532: IACN11(4) = 1000 05290328 ! 533: IACN11(5) = 10000 05300328 ! 534: CALL FS331(IACN11) 05310328 ! 535: IVCOMP = IVCN01 05320328 ! 536: IVCORR = 1111 05330328 ! 537: 40150 IF (IVCOMP - 1111) 20150, 10150, 20150 05340328 ! 538: 30150 IVDELE = IVDELE + 1 05350328 ! 539: WRITE (I02,80000) IVTNUM 05360328 ! 540: IF (ICZERO) 10150, 0161, 20150 05370328 ! 541: 10150 IVPASS = IVPASS + 1 05380328 ! 542: WRITE (I02,80002) IVTNUM 05390328 ! 543: GO TO 0161 05400328 ! 544: 20150 IVFAIL = IVFAIL + 1 05410328 ! 545: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 05420328 ! 546: 0161 CONTINUE 05430328 ! 547: C 05440328 ! 548: C **** FCVS PROGRAM 328 - TEST 016 **** 05450328 ! 549: C 05460328 ! 550: C USE AN ARRAY NAME AS AN ACTUAL ARGUMENT IN WHICH THE ACTUAL 05470328 ! 551: C ARGUMENT ARRAY DECLARATOR IS LARGER AND HAS MORE SUBSCRIPT 05480328 ! 552: C EXPRESSIONS THAN THE ASSOCIATED DUMMY ARGUMENT ARRAY DECLARATOR. 05490328 ! 553: C 05500328 ! 554: IVTNUM = 16 05510328 ! 555: IF (ICZERO) 30160, 0160, 30160 05520328 ! 556: 0160 CONTINUE 05530328 ! 557: IVCOMP = 0 05540328 ! 558: IATN11(1,1) = 1 05550328 ! 559: IATN11(2,1) = 10 05560328 ! 560: IATN11(1,2) = 100 05570328 ! 561: IATN11(2,2) = 1000 05580328 ! 562: IATN11(1,3) = 10000 05590328 ! 563: CALL FS331(IATN11) 05600328 ! 564: IVCOMP = IVCN01 05610328 ! 565: IVCORR = 1111 05620328 ! 566: 40160 IF (IVCOMP - 1111) 20160, 10160, 20160 05630328 ! 567: 30160 IVDELE = IVDELE + 1 05640328 ! 568: WRITE (I02,80000) IVTNUM 05650328 ! 569: IF (ICZERO) 10160, 0171, 20160 05660328 ! 570: 10160 IVPASS = IVPASS + 1 05670328 ! 571: WRITE (I02,80002) IVTNUM 05680328 ! 572: GO TO 0171 05690328 ! 573: 20160 IVFAIL = IVFAIL + 1 05700328 ! 574: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 05710328 ! 575: 0171 CONTINUE 05720328 ! 576: C 05730328 ! 577: C **** FCVS PROGRAM 328 - TEST 017 **** 05740328 ! 578: C 05750328 ! 579: C USE AN ARRAY ELEMENT NAME AS AN ACTUAL ARGUMENT IN WHICH THE 05760328 ! 580: C ASSOCIATED ACTUAL AND DUMMY ARRAY DECLARATORS ARE IDENTICAL. ALL 05770328 ! 581: C ARRAY ELEMENTS OF THE ACTUAL ARRAY SHOULD BE PASSED TO THE 05780328 ! 582: C DUMMY ARRAY OF THE SUBROUTINE. 05790328 ! 583: C 05800328 ! 584: IVTNUM = 17 05810328 ! 585: IF (ICZERO) 30170, 0170, 30170 05820328 ! 586: 0170 CONTINUE 05830328 ! 587: RVCOMP = 0.0 05840328 ! 588: RADN12(1) = 1. 05850328 ! 589: RADN12(2) = 10. 05860328 ! 590: RADN12(3) = 100. 05870328 ! 591: RADN12(4) = 1000. 05880328 ! 592: CALL FS332(RADN12(1)) 05890328 ! 593: RVCOMP = RVCN01 05900328 ! 594: RVCORR = 1111. 05910328 ! 595: 40170 IF (RVCOMP - 1110.5) 20170, 10170, 40171 05920328 ! 596: 40171 IF (RVCOMP - 1111.5) 10170, 10170, 20170 05930328 ! 597: 30170 IVDELE = IVDELE + 1 05940328 ! 598: WRITE (I02,80000) IVTNUM 05950328 ! 599: IF (ICZERO) 10170, 0181, 20170 05960328 ! 600: 10170 IVPASS = IVPASS + 1 05970328 ! 601: WRITE (I02,80002) IVTNUM 05980328 ! 602: GO TO 0181 05990328 ! 603: 20170 IVFAIL = IVFAIL + 1 06000328 ! 604: WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 06010328 ! 605: 0181 CONTINUE 06020328 ! 606: C 06030328 ! 607: C **** FCVS PROGRAM 328 - TEST 018 **** 06040328 ! 608: C 06050328 ! 609: C USE AN ARRAY ELEMENT NAME AS AN ACTUAL ARGUMENT IN WHICH THE SIZE 06060328 ! 610: C OF THE ACTUAL ARGUMENT ARRAY IS LARGER AND HAS FEWER SUBSCRIPT 06070328 ! 611: C EXPRESSIONS THAN THE ASSOCIATED DUMMY ARRAY. ONLY ACTUAL ARRAY 06080328 ! 612: C ELEMENTS WITH SUBSCRIPT VALUES OF 5, 6, 7 AND 8 ( OUT OF A 06090328 ! 613: C POSSIBLE 10 ELEMENTS) SHOULD BE PASSED TO THE DUMMY ARRAY OF 06100328 ! 614: C THE SUBROUTINE. 06110328 ! 615: C 06120328 ! 616: IVTNUM = 18 06130328 ! 617: IF (ICZERO) 30180, 0180, 30180 06140328 ! 618: 0180 CONTINUE 06150328 ! 619: RVCOMP = 0.0 06160328 ! 620: RACN11(4) = 1. 06170328 ! 621: RACN11(5) = 10. 06180328 ! 622: RACN11(6) = 100. 06190328 ! 623: RACN11(7) = 1000. 06200328 ! 624: RACN11(8) = 10000. 06210328 ! 625: RACN11(9) = 100000. 06220328 ! 626: CALL FS332(RACN11(5)) 06230328 ! 627: RVCOMP = RVCN01 06240328 ! 628: RVCORR = 11110. 06250328 ! 629: 40180 IF (RVCOMP - 11105.) 20180, 10180, 40181 06260328 ! 630: 40181 IF (RVCOMP - 11115.) 10180, 10180, 20180 06270328 ! 631: 30180 IVDELE = IVDELE + 1 06280328 ! 632: WRITE (I02,80000) IVTNUM 06290328 ! 633: IF (ICZERO) 10180, 0191, 20180 06300328 ! 634: 10180 IVPASS = IVPASS + 1 06310328 ! 635: WRITE (I02,80002) IVTNUM 06320328 ! 636: GO TO 0191 06330328 ! 637: 20180 IVFAIL = IVFAIL + 1 06340328 ! 638: WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 06350328 ! 639: 0191 CONTINUE 06360328 ! 640: C 06370328 ! 641: C **** FCVS PROGRAM 328 - TEST 019 **** 06380328 ! 642: C 06390328 ! 643: C USE AN ARRAY ELEMENT NAME AS AN ACTUAL ARGUMENT IN WHICH THE SIZE 06400328 ! 644: C OF THE ACTUAL ARGUMENT ARRAY IS LARGE THAN THE SIZE OF THE 06410328 ! 645: C ASSOCIATED DUMMY ARGUMENT ARRAY. ONLY ACTUAL ARRAY ELEMENTS WITH 06420328 ! 646: C SUBSCRIPT VALUES OF 9, 10, 11 AND 12 (OUT OF A POSSIBLE 12 06430328 ! 647: C ELEMENTS) SHOULD BE PASSED TO THE DUMMY ARRAY OF THE SUBROUTINE. 06440328 ! 648: C 06450328 ! 649: IVTNUM = 19 06460328 ! 650: IF (ICZERO) 30190, 0190, 30190 06470328 ! 651: 0190 CONTINUE 06480328 ! 652: RVCOMP = 0.0 06490328 ! 653: RATN11(2,3) = 1. 06500328 ! 654: RATN11(3,3) = 10. 06510328 ! 655: RATN11(1,4) = 100. 06520328 ! 656: RATN11(2,4) = 1000. 06530328 ! 657: RATN11(3,4) = 10000. 06540328 ! 658: CALL FS332(RATN11(3,3)) 06550328 ! 659: RVCOMP = RVCN01 06560328 ! 660: RVCORR = 11110. 06570328 ! 661: 40190 IF (RVCOMP - 11105.) 20190, 10190, 40191 06580328 ! 662: 40191 IF (RVCOMP - 11115.) 10190, 10190, 20190 06590328 ! 663: 30190 IVDELE = IVDELE + 1 06600328 ! 664: WRITE (I02,80000) IVTNUM 06610328 ! 665: IF (ICZERO) 10190, 0201, 20190 06620328 ! 666: 10190 IVPASS = IVPASS + 1 06630328 ! 667: WRITE (I02,80002) IVTNUM 06640328 ! 668: GO TO 0201 06650328 ! 669: 20190 IVFAIL = IVFAIL + 1 06660328 ! 670: WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 06670328 ! 671: 0201 CONTINUE 06680328 ! 672: C 06690328 ! 673: C TEST 020 THROUGH TEST 022 ARE DESIGNED TO ASSOCIATE VARIOUS FORMS 06700328 ! 674: C OF ACTUAL ARGUMENTS TO PROCEDURES USED AS SUBROUTINE DUMMY 06710328 ! 675: C ARGUMENTS. ACTUAL ARGUMENTS TESTED INCLUDE THE NAMES OF AN 06720328 ! 676: C EXTERNAL FUNCTION, AN INTRINSIC FUNCTION AND A SUBROUTINE. 06730328 ! 677: C 06740328 ! 678: C 06750328 ! 679: C **** FCVS PROGRAM 328 - TEST 020 **** 06760328 ! 680: C 06770328 ! 681: C USE AN EXTERNAL FUNCTION NAME AS AN ACTUAL ARGUMENT. 06780328 ! 682: C 06790328 ! 683: IVTNUM = 20 06800328 ! 684: IF (ICZERO) 30200, 0200, 30200 06810328 ! 685: 0200 CONTINUE 06820328 ! 686: IVCOMP = 0 06830328 ! 687: CALL FS333(FF330, 5) 06840328 ! 688: IVCOMP = IVCN01 06850328 ! 689: IVCORR = 7 06860328 ! 690: 40200 IF (IVCOMP - 7) 20200, 10200, 20200 06870328 ! 691: 30200 IVDELE = IVDELE + 1 06880328 ! 692: WRITE (I02,80000) IVTNUM 06890328 ! 693: IF (ICZERO) 10200, 0211, 20200 06900328 ! 694: 10200 IVPASS = IVPASS + 1 06910328 ! 695: WRITE (I02,80002) IVTNUM 06920328 ! 696: GO TO 0211 06930328 ! 697: 20200 IVFAIL = IVFAIL + 1 06940328 ! 698: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 06950328 ! 699: 0211 CONTINUE 06960328 ! 700: C 06970328 ! 701: C **** FCVS PROGRAM 328 - TEST 021 **** 06980328 ! 702: C 06990328 ! 703: C USE AN INTRINSIC FUNCTION NAME AS AN ACTUAL ARGUMENT. 07000328 ! 704: C 07010328 ! 705: IVTNUM = 21 07020328 ! 706: IF (ICZERO) 30210, 0210, 30210 07030328 ! 707: 0210 CONTINUE 07040328 ! 708: IVCOMP = 0 07050328 ! 709: CALL FS333(IABS, -7) 07060328 ! 710: IVCOMP = IVCN01 07070328 ! 711: IVCORR = 8 07080328 ! 712: 40210 IF (IVCOMP - 8) 20210, 10210, 20210 07090328 ! 713: 30210 IVDELE = IVDELE + 1 07100328 ! 714: WRITE (I02,80000) IVTNUM 07110328 ! 715: IF (ICZERO) 10210, 0221, 20210 07120328 ! 716: 10210 IVPASS = IVPASS + 1 07130328 ! 717: WRITE (I02,80002) IVTNUM 07140328 ! 718: GO TO 0221 07150328 ! 719: 20210 IVFAIL = IVFAIL + 1 07160328 ! 720: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 07170328 ! 721: 0221 CONTINUE 07180328 ! 722: C 07190328 ! 723: C **** FCVS PROGRAM 328 - TEST 022 **** 07200328 ! 724: C 07210328 ! 725: C USE A SUBROUTINE NAME AS AN ACTUAL ARGUMENT. 07220328 ! 726: C 07230328 ! 727: IVTNUM = 22 07240328 ! 728: IF (ICZERO) 30220, 0220, 30220 07250328 ! 729: 0220 CONTINUE 07260328 ! 730: RVCOMP = 0.0 07270328 ! 731: RVON01 = 3.5 07280328 ! 732: CALL FS334(FS335, RVON01) 07290328 ! 733: RVCOMP = RVCN01 07300328 ! 734: RVCORR = 5.5 07310328 ! 735: 40220 IF (RVCOMP - 5.4995) 20220, 10220, 40221 07320328 ! 736: 40221 IF (RVCOMP - 5.5005) 10220, 10220, 20220 07330328 ! 737: 30220 IVDELE = IVDELE + 1 07340328 ! 738: WRITE (I02,80000) IVTNUM 07350328 ! 739: IF (ICZERO) 10220, 0231, 20220 07360328 ! 740: 10220 IVPASS = IVPASS + 1 07370328 ! 741: WRITE (I02,80002) IVTNUM 07380328 ! 742: GO TO 0231 07390328 ! 743: 20220 IVFAIL = IVFAIL + 1 07400328 ! 744: WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 07410328 ! 745: 0231 CONTINUE 07420328 ! 746: C 07430328 ! 747: C 07440328 ! 748: C WRITE OUT TEST SUMMARY 07450328 ! 749: C 07460328 ! 750: WRITE (I02,90004) 07470328 ! 751: WRITE (I02,90014) 07480328 ! 752: WRITE (I02,90004) 07490328 ! 753: WRITE (I02,90000) 07500328 ! 754: WRITE (I02,90004) 07510328 ! 755: WRITE (I02,90020) IVFAIL 07520328 ! 756: WRITE (I02,90022) IVPASS 07530328 ! 757: WRITE (I02,90024) IVDELE 07540328 ! 758: STOP 07550328 ! 759: 90001 FORMAT (1H ,24X,5HFM328) 07560328 ! 760: 90000 FORMAT (1H ,20X,20HEND OF PROGRAM FM328) 07570328 ! 761: C 07580328 ! 762: C FORMATS FOR TEST DETAIL LINES 07590328 ! 763: C 07600328 ! 764: 80000 FORMAT (1H ,4X,I5,6X,7HDELETED) 07610328 ! 765: 80002 FORMAT (1H ,4X,I5,7X,4HPASS) 07620328 ! 766: 80010 FORMAT (1H ,4X,I5,7X,4HFAIL,10X,I6,9X,I6) 07630328 ! 767: 80012 FORMAT (1H ,4X,I5,7X,4HFAIL,4X,E12.5,3X,E12.5) 07640328 ! 768: 80018 FORMAT (1H ,4X,I5,7X,4HFAIL,2X,A14,1X,A14) 07650328 ! 769: C 07660328 ! 770: C FORMAT STATEMENTS FOR PAGE HEADERS 07670328 ! 771: C 07680328 ! 772: 90002 FORMAT (1H1) 07690328 ! 773: 90004 FORMAT (1H ) 07700328 ! 774: 90006 FORMAT (1H ,10X,34HFORTRAN COMPILER VALIDATION SYSTEM) 07710328 ! 775: 90008 FORMAT (1H ,21X,11HVERSION 1.0) 07720328 ! 776: 90010 FORMAT (1H ,8X,38HFOR OFFICIAL USE ONLY - COPYRIGHT 1978) 07730328 ! 777: 90012 FORMAT (1H ,5X,4HTEST,5X,9HPASS/FAIL,5X,8HCOMPUTED,8X,7HCORRECT) 07740328 ! 778: 90014 FORMAT (1H ,5X,46H----------------------------------------------) 07750328 ! 779: 90016 FORMAT (1H ,18X,17HSUBSET LEVEL TEST) 07760328 ! 780: C 07770328 ! 781: C FORMAT STATEMENTS FOR RUN SUMMARY 07780328 ! 782: C 07790328 ! 783: 90020 FORMAT (1H ,19X,I5,13H TESTS FAILED) 07800328 ! 784: 90022 FORMAT (1H ,19X,I5,13H TESTS PASSED) 07810328 ! 785: 90024 FORMAT (1H ,19X,I5,14H TESTS DELETED) 07820328 ! 786: END 07830328 ! 787: SUBROUTINE FS329(IDON01, RDON01, LDON01) 00010329 ! 788: C DATE***82/08/02*18.33.46 ! 789: C OWNER PRE/850703/TC-85- -410/ /FSTC/278FCVS*F78UBP20/ ! 790: C AUDIT FCVS78 V2.0 ! 791: C THIS SUBROUTINE IS USED BY VARIOUS TESTS IN THE MAIN PROGRAM 00020329 ! 792: C FM328 TO TEST THE DIFFERENT FORMS OF INTEGER, REAL AND LOGICAL 00030329 ! 793: C ACTUAL ARGUMENTS THAT CAN BE ASSOCIATED WITH INTEGER, REAL AND 00040329 ! 794: C LOGICAL DUMMY ARGUMENTS. THIS ROUTINE INCREMENTS THE INTEGER 00050329 ! 795: C AND REAL ARGUMENTS BY ONE AND NEGATES THE LOGICAL ARGUMENT. ALL 00060329 ! 796: C RESULTS ARE THEN RETURNED TO FM328 VIA VARIABLES IN NAMED COMMON. 00070329 ! 797: IMPLICIT LOGICAL (L) 00080329 ! 798: COMMON /BLK1/ IVCN01, RVCN01, LVCN01 00090329 ! 799: IVCN01 = IDON01 + 1 00100329 ! 800: RVCN01 = RDON01 + 1.0 00110329 ! 801: LVCN01 = .NOT. LDON01 00120329 ! 802: RETURN 00130329 ! 803: END 00140329 ! 804: INTEGER FUNCTION FF330(IDON02) 00010330 ! 805: C DATE***82/08/02*18.33.46 ! 806: C OWNER PRE/850703/TC-85- -410/ /FSTC/278FCVS*F78UBP20/ ! 807: C AUDIT FCVS78 V2.0 ! 808: C THIS FUNCTION IS USED BY TEST 011 OF THE MAIN PROGRAM FM328 TO00020330 ! 809: C TEST THE USE OF AN EXTERNAL FUNCTION REFERENCE AS AN ACTUAL 00030330 ! 810: C ARGUMENT WHEN THE ASSOCIATED DUMMY ARGUMENT IS A VARIABLE NAME. 00040330 ! 811: C THIS FUNCTION IS ALSO REFERENCED FROM SUBROUTINE FS333 VIA A 00050330 ! 812: C DUMMY PROCEDURE NAME REFERENCE. THIS FUNCTION INCREMENTS THE 00060330 ! 813: C ARGUMENT VALUE BY ONE AND RETURNS THE RESULT AS THE FUNCTION 00070330 ! 814: C VALUE. 00080330 ! 815: FF330 = IDON02 + 1 00090330 ! 816: RETURN 00100330 ! 817: END 00110330 ! 818: SUBROUTINE FS331(IDDN11) 00010331 ! 819: C DATE***82/08/02*18.33.46 ! 820: C OWNER PRE/850703/TC-85- -410/ /FSTC/278FCVS*F78UBP20/ ! 821: C AUDIT FCVS78 V2.0 ! 822: C THIS SUBROUTINE IS USED BY VARIOUS TESTS IN THE MAIN PROGRAM 00020331 ! 823: C FM328 TO TEST THE USE OF AN ARRAY NAME AS AN ACTUAL ARGUMENT WHEN 00030331 ! 824: C THE ASSOCIATED DUMMY ARGUMENT IS AN ARRAY NAME. THIS ROUTINE 00040331 ! 825: C ADDS TOGETHER THE FOUR ELEMENTS IN THE DUMMY ARGUMENT ARRAY AND 00050331 ! 826: C RETURNS THE RESULTS VIA A VARIABLE IN NAMED COMMON. 00060331 ! 827: LOGICAL LVCN01 00070331 ! 828: DIMENSION IDDN11(4) 00080331 ! 829: COMMON /BLK1/IVCN01, RVCN01, LVCN01 00090331 ! 830: IVCN01 = IDDN11(1) + IDDN11(2) + IDDN11(3) + IDDN11(4) 00100331 ! 831: RETURN 00110331 ! 832: END 00120331 ! 833: SUBROUTINE FS332(RDTN21) 00010332 ! 834: C DATE***82/08/02*18.33.46 ! 835: C OWNER PRE/850703/TC-85- -410/ /FSTC/278FCVS*F78UBP20/ ! 836: C AUDIT FCVS78 V2.0 ! 837: C THIS SUBROUTINE IS USED BY VARIOUS TESTS IN THE MAIN PROGRAM 00020332 ! 838: C FM328 TO TEST THE USE OF AN ARRAY ELEMENT NAME AS AN ACTUAL 00030332 ! 839: C ARGUMENT WHEN THE ASSOCIATED DUMMY ARGUMENT IS AN ARRAY NAME. 00040332 ! 840: C THIS ROUTINE ADDS TOGETHER THE FOUR ELEMENTS IN THE DUMMY 00050332 ! 841: C ARGUMENT ARRAY AND RETURNS THE RESULT VIA A VARIABLE IN NAMED 00060332 ! 842: C COMMON. 00070332 ! 843: IMPLICIT LOGICAL (L) 00080332 ! 844: REAL RDTN21(2,2) 00090332 ! 845: COMMON /BLK1/IVCN01, RVCN01, LVCN01 00100332 ! 846: RVCN01 = RDTN21(1,1) + RDTN21(2,1) + RDTN21(1,2) + RDTN21(2,2) 00110332 ! 847: RETURN 00120332 ! 848: END 00130332 ! 849: SUBROUTINE FS333(NINT, IDON03) 00010333 ! 850: C DATE***82/08/02*18.33.46 ! 851: C OWNER PRE/850703/TC-85- -410/ /FSTC/278FCVS*F78UBP20/ ! 852: C AUDIT FCVS78 V2.0 ! 853: C THIS SUBROUTINE IS USED BY TESTS 020 AND 021 OF THE MAIN 00020333 ! 854: C PROGRAM FM328 TO TEST THE USE OF EXTERNAL AND INTRINSIC FUNCTION 00030333 ! 855: C NAMES AS ACTUAL ARGUMENTS WHEN THE ASSOCIATED DUMMY ARGUMENT IS A 00040333 ! 856: C PROCEDURE NAME. THIS SUBROUTINE REFERENCES THE EXTERNAL FUNCTION 00050333 ! 857: C FF330 OR THE INTRINSIC FUNCTION IABS DEPENDING ON THE ACTUAL 00060333 ! 858: C ARGUMENT PASSED TO IT. THE RESULT OF THIS FUNCTION REFERENCE IS 00070333 ! 859: C THEN INCREMENTED BY ONE AND THE RESULT IS RETURNED TO FS328 VIA 00080333 ! 860: C A VARIABLE IN NAMED COMMON. 00090333 ! 861: IMPLICIT LOGICAL (L) 00100333 ! 862: COMMON /BLK1/IVCN01, RVCN01, LVCN01 00110333 ! 863: IVCN01 = NINT(IDON03) + 1 00120333 ! 864: C **** THE NAME NINT IS A DUMMY ARGUMENT NAME 00130333 ! 865: C AND NOT AN INTRINSIC FUNCTION REFERENCE **** 00140333 ! 866: RETURN 00150333 ! 867: END 00160333 ! 868: SUBROUTINE FS334(IDON06, RDON03) 00010334 ! 869: C DATE***82/08/02*18.33.46 ! 870: C OWNER PRE/850703/TC-85- -410/ /FSTC/278FCVS*F78UBP20/ ! 871: C AUDIT FCVS78 V2.0 ! 872: C THIS SUBROUTINE IS USED BY TEST 022 OF THE MAIN PROGRAM 00020334 ! 873: C FM328 TO TEST THE USE OF A SUBROUTINE NAME AS AN ACTUAL ARGUMENT 00030334 ! 874: C WHEN THE ASSOCIATED DUMMY ARGUMENT IS A PROCEDURE NAME. THIS 00040334 ! 875: C SUBROUTINE CALLS THE SUBROUTINE FS335 VIA A DUMMY PROCEDURE NAME 00050334 ! 876: C REFERENCE. THE ARGUMENT VALUE WHICH IS RETURNED FROM THE FS335 00060334 ! 877: C REFERENCE IS THEN INCREMENTED BY ONE AND RETURNED TO FM328 VIA 00070334 ! 878: C A VARIABLE IN NAMED COMMON. 00080334 ! 879: IMPLICIT LOGICAL (L) 00090334 ! 880: COMMON /BLK1/IVCN01, RVCN01, LVCN01 00100334 ! 881: CALL IDON06(RDON03) 00110334 ! 882: RVCN01 = RDON03 + 1.0 00120334 ! 883: RETURN 00130334 ! 884: END 00140334 ! 885: SUBROUTINE FS335(RDON04) 00010335 ! 886: C DATE***82/08/02*18.33.46 ! 887: C OWNER PRE/850703/TC-85- -410/ /FSTC/278FCVS*F78UBP20/ ! 888: C AUDIT FCVS78 V2.0 ! 889: C THIS SUBROUITNE IS USED BY TEST 022 OF THE MAIN PROGRAM FM32800020335 ! 890: C TO TEST THE USE OF A SUBROUTINE NAME AS AN ACTUAL ARGUMENT WHEN 00030335 ! 891: C THE ASSOCIATED DUMMY ARGUMENT IS A PROCEDURE NAME. FS335 IS 00040335 ! 892: C CALLED FROM SUBROUTINE FS334 VIA A DUMMY PROCEDURE NAME REFERENCE.00050335 ! 893: C THIS ROUTINE INCREMENTS THE ARGUMENT VALUE BY ONE. 00060335 ! 894: RDON04 = RDON04 + 1.0 00070335 ! 895: RETURN 00080335 ! 896: END 00090335
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.