PROGRAM FM411 00010411 C 00020411 C 00030411 C 00040411 C THIS ROUTINE TESTS FOR PROPER PROCESSING OF UNFORMATTED RECORDS00050411 C WITH A FILE CONNECTED FOR SEQUENTIAL ACCESS. UNFORMATTED RECORDS00060411 C MAY BE READ OR WRITTEN ONLY BY UNFORMATTED INPUT/OUTPUT STATE- 00070411 C MENTS. THIS ROUTINE TESTS SEVERAL SYNTACTICAL VARIATIONS OF THE 00080411 C UNFORMATTED READ AND WRITE STATEMENTS AS WELL AS THE FILE 00090411 C POSITIONING STATEMENTS BACKSPACE, ENDFILE AND REWIND. IN 00100411 C ADDITION UNFORMATTED RECORDS MAY HAVE BOTH CHARACTER AND 00110411 C NONCHARACTER DATA. THIS DATA IS TRANSFERRED WITHOUT EDITING 00120411 C BETWEEN THE CURRENT RECORD AND ENTITIES SPECIFIED BY THE INPUT/ 00130411 C OUTPUT LIST ITEMS. THIS ROUTINE BOTH READS AND WRITES 00140411 C RECORDS CONTAINING DATA OF LOGICAL, REAL AND INTEGER TYPE WITH 00150411 C I/O LIST ITEMS REPRESENTED AS VARIABLE NAMES, ARRAY ELEMENT 00160411 C NAMES AND ARRAY NAMES. THIS ROUTINE DOES NOT TEST DATA OF TYPE 00170411 C CHARACTER. 00180411 C ROUTINE FM413 TESTS USE OF UNFORMATTED RECORDS WITH A FILE 00190411 C CONNECTED FOR DIRECT ACCESS. 00200411 C 00210411 C THIS ROUTINE TESTS 00220411 C 00230411 C (1) THE STATEMENT CONSTRUCTS 00240411 C 00250411 C A. WRITE (U) VARIABLE-NAME,... 00260411 C B. WRITE (U) ARRAY-ELEMENT-NAME,... 00270411 C C. WRITE (U) ARRAY-NAME,... 00280411 C D. WRITE (U) - NO OUTPUT LIST 00290411 C E. WRITE (U) IMPLIED-DO-LIST 00300411 C F. READ (U) VARIABLE-NAME,... 00310411 C G. READ (U) ARRAY-ELEMENT-NAME,... 00320411 C H. READ (U) ARRAY-NAME,... 00330411 C I. READ (U,END=S) - NO INPUT LIST 00340411 C J. READ (U,END=S) VARIABLE-NAME 00350411 C K. READ (U) IMPLIED-DO-LIST 00360411 C 00370411 C (2) USE OF A READ STATEMENT WHERE THE NUMBER OF VALUES 00380411 C IN THE INPUT LIST IS LESS THAN OR EQUAL TO THE 00390411 C NUMBER OF VALUES IN THE RECORD. 00400411 C 00410411 C (3) USE OF THE BACKSPACE, REWIND AND ENDFILE STATEMENT 00420411 C ON A FILE CONTAINING UNFORMATTED RECORDS. 00430411 C 00440411 C (4) USE OF A REWIND STATEMENT ON A FILE THAT IS CONNECTED 00450411 C BUT DOES NOT EXIST. 00460411 C 00470411 C (5) USE OF AN ENDFILE STATEMENT TO CREATE A FILE THAT 00480411 C DOES NOT EXIST 00490411 C 00500411 C REFERENCES - 00510411 C 00520411 C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, 00530411 C X3.9-1977 00540411 C 00550411 C SECTION 4.1, DATA TYPES 00560411 C SECTION 12.1.2, UNFORMATTED RECORDS 00570411 C SECTION 12.2.1, FILE EXISTENCE 00580411 C SECTION 12.2.4, FILE ACCESS 00590411 C SECTION 12.2.4.1, SEQUENTIAL ACCESS 00600411 C SECTION 12.3.3, UNIT SPECIFIER AND IDENTIFIER 00610411 C SECTION 12.7.2, END-OF-FILE SPECIFIER 00620411 C SECTION 12.8, READ, WRITE AND PRINT STATEMENTS 00630411 C SECTION 12.8.1, CONTROL INFORMATION LIST 00640411 C SECTION 12.8.2, INPUT/OUTPUT LIST 00650411 C SECTION 12.8.2.1, INPUT LIST ITEMS 00660411 C SECTION 12.8.2.2, OUTPUT LIST ITEMS 00670411 C SECTION 12.8.2.3, IMPLIED-DO LIST 00680411 C SECTION 12.9.5.1, UNFORMATTED DATA TRANSFER 00690411 C SECTION 12.10.4, FILE POSITIONING STATEMENTS 00700411 C SECTION 12.10.4.1 BACKSPACE STATEMENT 00710411 C SECTION 12.10.4.2, ENDFILE STATEMENT 00720411 C SECTION 12.10.4.3, REWIND STATEMENT 00730411 C 00740411 C 00750411 C 00760411 C ******************************************************************00770411 C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE 00780411 C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN STANDARD FORTRAN 00790411 C X3.9-1978, HAS BEEN DEVELOPED BY THE DEPARTMENT OF THE NAVY. THE 00800411 C FORTRAN COMPILER VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT 00810411 C ROUTINES, THEIR RELATED DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT00820411 C ROUTINE IS A FORTRAN PROGRAM OR SUBPROGRAM WHICH INCLUDES TESTS 00830411 C OF SPECIFIC LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING00840411 C THE RESULT OF EXECUTING THESE TESTS. 00850411 C 00860411 C THIS PARTICULAR PROGRAM OR SUBPROGRAM CONTAINS ONLY FEATURES 00870411 C FOUND IN THE SUBSET LEVEL OF THE STANDARD. 00880411 C 00890411 C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO 00900411 C NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY 00910411 C SOFTWARE STANDARDS VALIDATION GROUP 00920411 C BUILDING 225 RM A266 00930411 C GAITHERSBURG, MD 20899 00940411 C ******************************************************************00950411 C 00960411 C 00970411 IMPLICIT LOGICAL (L) 00980411 IMPLICIT CHARACTER*14 (C) 00990411 C 01000411 LOGICAL LAON11, LAON21, LAON31, LCONT1, LCONF2, LVONT1, LVONF2 01010411 LOGICAL LAON12, LAON22, LAON32, LCONT3, LCONF4, LVONT3, LVONF4 01020411 LOGICAL LCONT5, LCONF6, LCONT7, LCONF8, LVONT5, LVONF6, LVONT7 01030411 LOGICAL LVONF8 01040411 DIMENSION IDUMP(80) 01050411 DIMENSION IAON11(8), IAON21(2,4), IAON31(2,2,2) 01060411 DIMENSION IAON12(8), IAON22(2,4), IAON32(2,2,2) 01070411 DIMENSION RAON11(8), RAON21(2,4), RAON31(2,2,2) 01080411 DIMENSION RAON12(8), RAON22(2,4), RAON32(2,2,2) 01090411 DIMENSION LAON11(8), LAON21(2,4), LAON31(2,2,2) 01100411 DIMENSION LAON12(8), LAON22(2,4), LAON32(2,2,2) 01110411 DATA IAON11 /11, -11, 777, -777, 512, -512, -32767, 32767/ 01120411 DATA IAON21 /11, -11, 777, -777, 512, -512, -32767, 32767/ 01130411 DATA IAON31 /11, -11, 777, -777, 512, -512, -32767, 32767/ 01140411 DATA LAON11 /.TRUE., .FALSE., .TRUE., .FALSE., .TRUE., .FALSE., 01150411 1 .TRUE., .FALSE./ 01160411 DATA LAON21 /.TRUE., .FALSE., .TRUE., .FALSE., .TRUE., .FALSE., 01170411 1 .TRUE., .FALSE./ 01180411 DATA LAON31 /.TRUE., .FALSE., .TRUE., .FALSE., .TRUE., .FALSE., 01190411 1 .TRUE., .FALSE./ 01200411 DATA RAON11 /11., -11., 7.77, -7.77,.512, -.512, -32767., 32767./01210411 DATA RAON21 /11., -11., 7.77, -7.77,.512, -.512, -32767., 32767./01220411 DATA RAON31 /11., -11., 7.77, -7.77,.512, -.512, -32767., 32767./01230411 ICON21 = 11 01240411 ICON22 = -11 01250411 ICON31 = +777 01260411 ICON32 = -777 01270411 ICON33 = 512 01280411 ICON34 = -512 01290411 ICON55 = -32767 01300411 ICON56 = 32767 01310411 RCON21 = 11. 01320411 RCON22 = -11. 01330411 RCON31 = +7.77 01340411 RCON32 = -7.77 01350411 RCON33 = .512 01360411 RCON34 = -.512 01370411 RCON55 = -32767. 01380411 RCON56 = 32767. 01390411 LCONT1 = .TRUE. 01400411 LCONF2 = .FALSE. 01410411 LCONT3 = .TRUE. 01420411 LCONF4 = .FALSE. 01430411 LCONT5 = .TRUE. 01440411 LCONF6 = .FALSE. 01450411 LCONT7 = .TRUE. 01460411 LCONF8 = .FALSE. 01470411 C 01480411 C THE FILE USED IN THIS ROUTINE HAS THE FOLLOWING PROPERTIES 01490411 C 01500411 C FILE IDENTIFIER - I04 (X-NUMBER 04) 01510411 C RECORD SIZE - 80 01520411 C ACCESS METHOD - SEQUENTIAL 01530411 C RECORD TYPE - UNFORMATTED 01540411 C DESIGNATED DEVICE - DISK 01550411 C TYPE OF DATA - INTEGER, REAL AND LOGICAL 01560411 C RECORDS IN FILE - 142 PLUS ENDFILE RECORD 01570411 C 01580411 C THE FIRST 6 FIELDS OF EACH RECORD IN THE FILE UNIQUELY IDENT-01590411 C IFIES THAT RECORD. THE REMAINING FIELDS OF THE RECORD CONTAIN 01600411 C DATA WHICH ARE USED IN TESTING. A DESCRIPTION OF EACH FIELD 01610411 C OF THE PREAMBLE FOLLOWS. 01620411 C 01630411 C VARIABLE NAME IN PROGRAM FIELD NUMBER 01640411 C ------------------------ ------------ 01650411 C 01660411 C IPROG (ROUTINE NAME) - 1 01670411 C IFILE (LOGICAL/X-NUMBER) - 2 01680411 C ITOTR (RECORDS IN FILE) - 3 01690411 C IRLGN (LENGTH OF RECORD) - 4 01700411 C IRECN (RECORD NUMBER) - 5 01710411 C IEOF (9999 IF LAST RECORD) - 6 01720411 C 01730411 C 01740411 C 01750411 C 01760411 C INITIALIZATION SECTION. 01770411 C 01780411 C INITIALIZE CONSTANTS 01790411 C ******************** 01800411 C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER 01810411 I01 = 5 01820411 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER 01830411 I02 = 6 01840411 C SYSTEM ENVIRONMENT SECTION 01850411 C 01860411 CX010 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-010 CONTROL CARD.01870411 C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 01880411 C (UNIT NUMBER FOR CARD READER). 01890411 CX011 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-011 CONTROL CARD01900411 C THE CX011 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 01910411 C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX010 ABOVE. 01920411 C 01930411 CX020 THIS CARD IS PEPLACED BY CONTENTS OF FEXEC X-020 CONTROL CARD.01940411 C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02 = 6 01950411 C (UNIT NUMBER FOR PRINTER). 01960411 CX021 THIS CARD IS PEPLACED BY CONTENTS OF FEXEC X-021 CONTROL CARD.01970411 C THE CX021 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 01980411 C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX020 ABOVE. 01990411 C 02000411 IVPASS = 0 02010411 IVFAIL = 0 02020411 IVDELE = 0 02030411 ICZERO = 0 02040411 C 02050411 C WRITE OUT PAGE HEADERS 02060411 C 02070411 WRITE (I02,90002) 02080411 WRITE (I02,90006) 02090411 WRITE (I02,90008) 02100411 WRITE (I02,90004) 02110411 WRITE (I02,90010) 02120411 WRITE (I02,90004) 02130411 WRITE (I02,90016) 02140411 WRITE (I02,90001) 02150411 WRITE (I02,90004) 02160411 WRITE (I02,90012) 02170411 WRITE (I02,90014) 02180411 WRITE (I02,90004) 02190411 C 02200411 I04 = 8 02210411 C I04 CONTAINS THE LOGICAL UNIT NUMBER FOR A SEQUENTIAL ACCESS FILE02220411 CX040 THIS CARD IS REPLACED BY CONTENTS OF X-040 CARD 02230411 CX041 THIS CARD IS REPLACED BY CONTENTS OF X-041 CARD 02240411 IPROG = 411 02250411 IFILE = I04 02260411 ITOTR = 142 02270411 IRLGN = 80 02280411 IRECN = 0 02290411 IEOF = 0 02300411 C 02310411 C **** FCVS PROGRAM 411 - TEST 001 **** 02320411 C 02330411 C 02340411 C TEST 001 USES THE REWIND STATEMENT ON A FILE THAT IS CONNECTED 02350411 C BUT DOES NOT EXIST. THERE SHOULD BE NO EFFECT ON THE FILE WHEN 02360411 C THIS STATEMENT IS EXECUTED. CONNECTION OF THE FILE TO A UNIT 02370411 C IS ASSUMED TO BE DONE BY PRECONNECTION. 02380411 C 02390411 C SEE SECTION 12.10.4.3, REWIND STATEMENT 02400411 C 02410411 C 02420411 IVTNUM = 1 02430411 IF (ICZERO) 30010, 0010, 30010 02440411 0010 CONTINUE 02450411 IVCORR = 1 02460411 IVCOMP = 0 02470411 REWIND I04 02480411 IVCOMP = 1 02490411 40010 IF (IVCOMP - 1) 20010, 10010, 20010 02500411 30010 IVDELE = IVDELE + 1 02510411 WRITE (I02,80000) IVTNUM 02520411 IF (ICZERO) 10010, 0021, 20010 02530411 10010 IVPASS = IVPASS + 1 02540411 WRITE (I02,80002) IVTNUM 02550411 GO TO 0021 02560411 20010 IVFAIL = IVFAIL + 1 02570411 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 02580411 0021 CONTINUE 02590411 C 02600411 C **** FCVS PROGRAM 411 - TEST 002 **** 02610411 C 02620411 C 02630411 C TEST 002 USES THE ENDFILE STATEMENT TO CREATE A FILE THAT IS 02640411 C CONNECTED BUT DOES NOT EXIST. NO RECORDS HAVE BEEN WRITTEN TO 02650411 C THE FILE BEFORE THE ENDFILE STATEMENT IS EXECUTED. AS IN THE 02660411 C PRECEDING TEST, IT IS ASSUMED THAT CONNECTION OF THE FILE TO A 02670411 C UNIT IS DONE BY PRECONNECTION. 02680411 C 02690411 C SEE SECTIONS 12.2.1, FILE EXISTENCE 02700411 C 12.10.4.2, ENDFILE STATEMENT 02710411 C 02720411 C 02730411 IVTNUM = 2 02740411 IF (ICZERO) 30020, 0020, 30020 02750411 0020 CONTINUE 02760411 IVCORR = 1 02770411 IVCOMP = 0 02780411 ENDFILE I04 02790411 REWIND I04 02800411 READ (I04, END = 0023) IVON01 02810411 C 02820411 C TO TEST CREATION OF A FILE VIA A ENDFILE STATEMENT THE FILE 02830411 C IS REWOUND AND READ. AN END-OF-FILE CONDITION IS EXPECTED TO 02840411 C OCCUR ON THE FIRST READ SINCE THE ONLY RECORD WRITTEN TO THE 02850411 C FILE WAS THE ENDFILE RECORD. 02860411 C 02870411 IVCOMP = 0 02880411 GO TO 40020 02890411 0023 IVCOMP = 1 02900411 40020 IF (IVCOMP - 1) 20020, 10020, 20020 02910411 30020 IVDELE = IVDELE + 1 02920411 WRITE (I02,80000) IVTNUM 02930411 IF (ICZERO) 10020, 0031, 20020 02940411 10020 IVPASS = IVPASS + 1 02950411 WRITE (I02,80002) IVTNUM 02960411 GO TO 0031 02970411 20020 IVFAIL = IVFAIL + 1 02980411 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 02990411 0031 CONTINUE 03000411 C 03010411 C 03020411 C TESTS 003 THROUGH 019 USE A PRECONNECTED FILE FOR SEQUENTIAL 03030411 C ACCESS TO WRITE 141 RECORDS TO THE FILE. THESE TESTS TEST USE OF 03040411 C THE ALLOWABLE FORMS OF THE WRITE STATEMENT ON A FILE CONNECTED 03050411 C FOR SEQUENTIAL ACCESS. THE WRITE STATEMENT IS USED WITH 03060411 C THE I/O LIST ITEM AS A VARIABLE, ARRAY ELEMENT AND AN ARRAY. 03070411 C THE PURPOSE OF TESTS 003 THROUGH 019 IS TO CHECK THE COMPILER'S03080411 C ABILITY TO HANDLE THE VARIOUS STATEMENT CONSTRUCTS OF THE 03090411 C WRITE STATEMENT. LATER TESTS WITHIN THIS ROUINE READ AND 03100411 C CHECK THE RECORDS WHICH ARE CREATED. 03110411 C THE VALUE IN IVCORR FOR TESTS 002 THROUGH 013 IS THE RECORD 03120411 C NUMBER FOR THE RECORD. 03130411 C 03140411 C 03150411 C 03160411 C **** FCVS PROGRAM 411 - TEST 003 **** 03170411 C 03180411 C 03190411 IVTNUM = 3 03200411 IF (ICZERO) 30030, 0030, 30030 03210411 0030 CONTINUE 03220411 REWIND I04 03230411 C REPOSITION TO BEGINNING OF FILE 03240411 C 03250411 C TEST 003 USES A WRITE STATEMENT WHERE THE OUTPUT LIST ITEM 03260411 C IS A VARIABLE OF INTEGER TYPE. 03270411 C 03280411 IRECN = 01 03290411 IVCORR = 01 03300411 WRITE (I04) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 03310411 1 ICON21, ICON22, ICON31, ICON32, ICON33, ICON34, ICON55, ICON56 03320411 IVCOMP = IRECN 03330411 40030 IF (IVCOMP - 01) 20030, 10030, 20030 03340411 30030 IVDELE = IVDELE + 1 03350411 WRITE (I02,80000) IVTNUM 03360411 IF (ICZERO) 10030, 0041, 20030 03370411 10030 IVPASS = IVPASS + 1 03380411 WRITE (I02,80002) IVTNUM 03390411 GO TO 0041 03400411 20030 IVFAIL = IVFAIL + 1 03410411 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 03420411 0041 CONTINUE 03430411 C 03440411 C **** FCVS PROGRAM 411 - TEST 004 **** 03450411 C 03460411 C 03470411 C TEST 004 USES A WRITE STATEMENT WHERE THE OUTPUT LIST ITEM 03480411 C IS A VARIABLE OF REAL TYPE. 03490411 C 03500411 C 03510411 IVTNUM = 4 03520411 IF (ICZERO) 30040, 0040, 30040 03530411 0040 CONTINUE 03540411 IRECN = 02 03550411 IVCORR = 02 03560411 WRITE (I04) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 03570411 1 RCON21, RCON22, RCON31, RCON32, RCON33, RCON34, RCON55, RCON56 03580411 IVCOMP = IRECN 03590411 40040 IF (IVCOMP - 02) 20040, 10040, 20040 03600411 30040 IVDELE = IVDELE + 1 03610411 WRITE (I02,80000) IVTNUM 03620411 IF (ICZERO) 10040, 0051, 20040 03630411 10040 IVPASS = IVPASS + 1 03640411 WRITE (I02,80002) IVTNUM 03650411 GO TO 0051 03660411 20040 IVFAIL = IVFAIL + 1 03670411 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 03680411 0051 CONTINUE 03690411 C 03700411 C **** FCVS PROGRAM 411 - TEST 005 **** 03710411 C 03720411 C 03730411 C TEST 005 USES A WRITE STATEMENT WHERE THE OUTPUT LIST ITEM 03740411 C IS A VARIABLE OF LOGICAL TYPE. 03750411 C 03760411 C 03770411 IVTNUM = 5 03780411 IF (ICZERO) 30050, 0050, 30050 03790411 0050 CONTINUE 03800411 IRECN = 03 03810411 IVCORR = 03 03820411 WRITE (I04) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 03830411 1 LCONT1, LCONF2, LCONT3, LCONF4, LCONT5, LCONF6, LCONT7, LCONF803840411 IVCOMP = IRECN 03850411 40050 IF (IVCOMP - 03) 20050, 10050, 20050 03860411 30050 IVDELE = IVDELE + 1 03870411 WRITE (I02,80000) IVTNUM 03880411 IF (ICZERO) 10050, 0061, 20050 03890411 10050 IVPASS = IVPASS + 1 03900411 WRITE (I02,80002) IVTNUM 03910411 GO TO 0061 03920411 20050 IVFAIL = IVFAIL + 1 03930411 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 03940411 0061 CONTINUE 03950411 C 03960411 C **** FCVS PROGRAM 411 - TEST 006 **** 03970411 C 03980411 C 03990411 C TEST 006 USES A WRITE STATEMENT WHERE THE OUTPUT LIST ITEM 04000411 C IS AN ARRAY ELEMENT OF INTEGER TYPE. ONE, TWO AND THREE 04010411 C DIMENSION ARRAYS ARE USED. 04020411 C 04030411 C 04040411 IVTNUM = 6 04050411 IF (ICZERO) 30060, 0060, 30060 04060411 0060 CONTINUE 04070411 IRECN = 04 04080411 IVCORR = 04 04090411 WRITE (I04) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 04100411 1 IAON11(1), IAON11(2), IAON21(1,2), IAON21(2,2), IAON31(1,1,2), 04110411 2 IAON31(2,1,2), IAON11(7), IAON11(8) 04120411 IVCOMP = IRECN 04130411 40060 IF (IVCOMP - 04) 20060, 10060, 20060 04140411 30060 IVDELE = IVDELE + 1 04150411 WRITE (I02,80000) IVTNUM 04160411 IF (ICZERO) 10060, 0071, 20060 04170411 10060 IVPASS = IVPASS + 1 04180411 WRITE (I02,80002) IVTNUM 04190411 GO TO 0071 04200411 20060 IVFAIL = IVFAIL + 1 04210411 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 04220411 0071 CONTINUE 04230411 C 04240411 C **** FCVS PROGRAM 411 - TEST 007 **** 04250411 C 04260411 C 04270411 C TEST 007 USES A WRITE STATEMENT WHERE THE OUTPUT LIST ITEM 04280411 C IS AN ARRAY ELEMENT OF REAL TYPE. ONE, TWO AND THREE 04290411 C DIMENSION ARRAYS ARE USED. 04300411 C 04310411 C 04320411 IVTNUM = 7 04330411 IF (ICZERO) 30070, 0070, 30070 04340411 0070 CONTINUE 04350411 IRECN = 05 04360411 IVCORR = 05 04370411 WRITE (I04) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 04380411 1 RAON11(1), RAON11(2), RAON21(1,2), RAON21(2,2), RAON31(1,1,2), 04390411 2RAON31(2,1,2), RAON11(7), RAON11 (8) 04400411 IVCOMP = IRECN 04410411 40070 IF (IVCOMP - 05) 20070, 10070, 20070 04420411 30070 IVDELE = IVDELE + 1 04430411 WRITE (I02,80000) IVTNUM 04440411 IF (ICZERO) 10070, 0081, 20070 04450411 10070 IVPASS = IVPASS + 1 04460411 WRITE (I02,80002) IVTNUM 04470411 GO TO 0081 04480411 20070 IVFAIL = IVFAIL + 1 04490411 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 04500411 0081 CONTINUE 04510411 C 04520411 C **** FCVS PROGRAM 411 - TEST 008 **** 04530411 C 04540411 C 04550411 C 04560411 IVTNUM = 8 04570411 IF (ICZERO) 30080, 0080, 30080 04580411 0080 CONTINUE 04590411 IRECN = 06 04600411 IVCORR = 06 04610411 WRITE (I04) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 04620411 1 LAON11(1), LAON11(2), LAON21(1,2), LAON21(2,2), LAON31(1,1,2), 04630411 2 LAON31(2,1,2), LAON11(7), LAON11(8) 04640411 IVCOMP = IRECN 04650411 40080 IF (IVCOMP - 06) 20080, 10080, 20080 04660411 30080 IVDELE = IVDELE + 1 04670411 WRITE (I02,80000) IVTNUM 04680411 IF (ICZERO) 10080, 0091, 20080 04690411 10080 IVPASS = IVPASS + 1 04700411 WRITE (I02,80002) IVTNUM 04710411 GO TO 0091 04720411 20080 IVFAIL = IVFAIL + 1 04730411 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 04740411 0091 CONTINUE 04750411 C 04760411 C **** FCVS PROGRAM 411 - TEST 009 **** 04770411 C 04780411 C 04790411 C TEST 009 USES A WRITE STATEMENT WHERE THE OUTPUT LIST ITEM 04800411 C IS AN ARRAY OF INTEGER TYPE. 04810411 C 04820411 C 04830411 IVTNUM = 9 04840411 IF (ICZERO) 30090, 0090, 30090 04850411 0090 CONTINUE 04860411 IRECN = 07 04870411 IVCORR = 07 04880411 WRITE (I04) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 04890411 1 IAON31 04900411 IVCOMP = IRECN 04910411 40090 IF (IVCOMP - 07) 20090, 10090, 20090 04920411 30090 IVDELE = IVDELE + 1 04930411 WRITE (I02,80000) IVTNUM 04940411 IF (ICZERO) 10090, 0101, 20090 04950411 10090 IVPASS = IVPASS + 1 04960411 WRITE (I02,80002) IVTNUM 04970411 GO TO 0101 04980411 20090 IVFAIL = IVFAIL + 1 04990411 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 05000411 0101 CONTINUE 05010411 C 05020411 C **** FCVS PROGRAM 411 - TEST 010 **** 05030411 C 05040411 C 05050411 C TEST 010 USES A WRITE STATEMENT WHERE THE OUTPUT LIST ITEM 05060411 C IS AN ARRAY OF REAL TYPE. 05070411 C 05080411 C 05090411 IVTNUM = 10 05100411 IF (ICZERO) 30100, 0100, 30100 05110411 0100 CONTINUE 05120411 IRECN = 08 05130411 IVCORR = 08 05140411 WRITE (I04) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 05150411 1 RAON31 05160411 IVCOMP = IRECN 05170411 40100 IF (IVCOMP - 08) 20100, 10100, 20100 05180411 30100 IVDELE = IVDELE + 1 05190411 WRITE (I02,80000) IVTNUM 05200411 IF (ICZERO) 10100, 0111, 20100 05210411 10100 IVPASS = IVPASS + 1 05220411 WRITE (I02,80002) IVTNUM 05230411 GO TO 0111 05240411 20100 IVFAIL = IVFAIL + 1 05250411 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 05260411 0111 CONTINUE 05270411 C 05280411 C **** FCVS PROGRAM 411 - TEST 011 **** 05290411 C 05300411 C 05310411 C TEST 011 USES A WRITE STATEMENT WHERE THE OUTPUT LIST ITEM 05320411 C IS AN ARRAY OF LOGICAL TYPE. 05330411 C 05340411 C 05350411 IVTNUM = 11 05360411 IF (ICZERO) 30110, 0110, 30110 05370411 0110 CONTINUE 05380411 IRECN = 09 05390411 IVCORR = 09 05400411 WRITE (I04) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 05410411 1 LAON31 05420411 IVCOMP = IRECN 05430411 40110 IF (IVCOMP - 09) 20110, 10110, 20110 05440411 30110 IVDELE = IVDELE + 1 05450411 WRITE (I02,80000) IVTNUM 05460411 IF (ICZERO) 10110, 0121, 20110 05470411 10110 IVPASS = IVPASS + 1 05480411 WRITE (I02,80002) IVTNUM 05490411 GO TO 0121 05500411 20110 IVFAIL = IVFAIL + 1 05510411 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 05520411 0121 CONTINUE 05530411 C 05540411 C **** FCVS PROGRAM 411 - TEST 012 **** 05550411 C 05560411 C 05570411 C TEST 012 USES A WRITE STATEMENT WHERE THE OUTPUT LIST ITEM 05580411 C IS AN IMPLIED-DO WITH AN ITEM OF INTEGER TYPE. 05590411 C THE FIELD VALUES ARE WRITTEN IN MIXED ORDER VIS-A-VIS THE 05600411 C ELEMENT SEQUENCE OF ARRAY IAON31. THE SEQUENCE OF VALUES WRITTEN 05610411 C IN THE RECORD ARE 11, 512, 777, -32767, -11, -512, -777, 32767. 05620411 C 05630411 C 05640411 IVTNUM = 12 05650411 IF (ICZERO) 30120, 0120, 30120 05660411 0120 CONTINUE 05670411 IRECN = 10 05680411 IVCORR = 10 05690411 WRITE (I04) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 05700411 1 (((IAON31 (J,K,I), I=1,2), K=1,2), J=1,2) 05710411 IVCOMP = IRECN 05720411 40120 IF (IVCOMP - 10) 20120, 10120, 20120 05730411 30120 IVDELE = IVDELE + 1 05740411 WRITE (I02,80000) IVTNUM 05750411 IF (ICZERO) 10120, 0131, 20120 05760411 10120 IVPASS = IVPASS + 1 05770411 WRITE (I02,80002) IVTNUM 05780411 GO TO 0131 05790411 20120 IVFAIL = IVFAIL + 1 05800411 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 05810411 0131 CONTINUE 05820411 C 05830411 C **** FCVS PROGRAM 411 - TEST 013 **** 05840411 C 05850411 C 05860411 C TEST 013 USES A WRITE STATEMENT WHERE THE OUTPUT LIST ITEM 05870411 C IS AN IMPLIED-DO WITH AN ITEM OF REAL TYPE. THE FIELD VALUES 05880411 C (IN FIELD POSITION ORDER) WRITTEN IN THE RECORD ARE 11., -11., 05890411 C 7.77, -7.77, .512, -.512, -32767., 32767. 05900411 C 05910411 C 05920411 IVTNUM = 13 05930411 IF (ICZERO) 30130, 0130, 30130 05940411 0130 CONTINUE 05950411 IRECN = 11 05960411 IVCORR = 11 05970411 WRITE (I04) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 05980411 1 (((RAON31 (J,K,I), J=1,2), K=1,2), I=1,2) 05990411 IVCOMP = IRECN 06000411 40130 IF (IVCOMP - 11) 20130, 10130, 20130 06010411 30130 IVDELE = IVDELE + 1 06020411 WRITE (I02,80000) IVTNUM 06030411 IF (ICZERO) 10130, 0141, 20130 06040411 10130 IVPASS = IVPASS + 1 06050411 WRITE (I02,80002) IVTNUM 06060411 GO TO 0141 06070411 20130 IVFAIL = IVFAIL + 1 06080411 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 06090411 0141 CONTINUE 06100411 C 06110411 C **** FCVS PROGRAM 411 - TEST 014 **** 06120411 C 06130411 C 06140411 C TEST 014 USES A WRITE STATEMENT WHERE THE OUTPUT LIST ITEM 06150411 C IS AN IMPLIED-DO WITH AN ITEM OF LOGICAL TYPE. 06160411 C THE FIELD VALUES ARE WRITTEN IN MIXED ORDER (AN ORDER 06170411 C DIFFERENT THAN TEST 012 ABOVE) VIS-A-VIS THE 06180411 C ELEMENT SEQUENCE OF ARRAY LAON31. THE SEQUENCE OF VALUES WRITTEN 06190411 C IN THE RECORD ARE .TRUE., .TRUE., .FALSE., .FALSE., .TRUE., .TRUE.06200411 C .FALSE, .FALSE. 06210411 C 06220411 C 06230411 IVTNUM = 14 06240411 IF (ICZERO) 30140, 0140, 30140 06250411 0140 CONTINUE 06260411 IRECN = 12 06270411 IVCORR = 12 06280411 WRITE (I04) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 06290411 1 (((LAON31 (J,K,I), K=1,2), J=1,2), I=1,2) 06300411 IVCOMP = IRECN 06310411 40140 IF (IVCOMP - 12) 20140, 10140, 20140 06320411 30140 IVDELE = IVDELE + 1 06330411 WRITE (I02,80000) IVTNUM 06340411 IF (ICZERO) 10140, 0151, 20140 06350411 10140 IVPASS = IVPASS + 1 06360411 WRITE (I02,80002) IVTNUM 06370411 GO TO 0151 06380411 20140 IVFAIL = IVFAIL + 1 06390411 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 06400411 0151 CONTINUE 06410411 C 06420411 C **** FCVS PROGRAM 411 - TEST 015 **** 06430411 C 06440411 C 06450411 C TEST 015 USES A WRITE STATEMENT WITHOUT ANY OUTPUT LIST ITEMS. 06460411 C THE OUTPUT LIST ITEMS ARE OPTIONAL. 06470411 C ALSO THE LENGTH OF AN UNFORMATTED RECORD MAY BE ZERO. 06480411 C 06490411 C SEE SECTIONS 12.1.2, UNFORMATTED RECORDS 06500411 C 12.8, READ, WRITE AND PRINT STATEMENTS 06510411 C 06520411 C 06530411 IVTNUM = 15 06540411 IF (ICZERO) 30150, 0150, 30150 06550411 0150 CONTINUE 06560411 IRECN = 13 06570411 IVCORR = 13 06580411 WRITE (I04) 06590411 IVCOMP = IRECN 06600411 40150 IF (IVCOMP - 13) 20150, 10150, 20150 06610411 30150 IVDELE = IVDELE + 1 06620411 WRITE (I02,80000) IVTNUM 06630411 IF (ICZERO) 10150, 0161, 20150 06640411 10150 IVPASS = IVPASS + 1 06650411 WRITE (I02,80002) IVTNUM 06660411 GO TO 0161 06670411 20150 IVFAIL = IVFAIL + 1 06680411 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 06690411 0161 CONTINUE 06700411 C 06710411 C **** FCVS PROGRAM 411 - TEST 016 **** 06720411 C 06730411 C 06740411 C TEST 016 IS SIMILAR TO THE PREVIOUS TEST EXCEPT THE WRITE 06750411 C STATEMENT CONTAINS OUTPUT LIST ITEMS. ONE HUNDRED RECORDS ARE 06760411 C WRITTEN. 06770411 C 06780411 C 06790411 IVTNUM = 16 06800411 IF (ICZERO) 30160, 0160, 30160 06810411 0160 CONTINUE 06820411 IRECN = 13 06830411 DO 4132 I = 1,100 06840411 IRECN = IRECN + 1 06850411 WRITE (I04) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 06860411 1 ICON21, ICON22, ICON31, ICON32, ICON33, ICON34, ICON55, ICON56 06870411 4132 CONTINUE 06880411 IVCORR = 100 06890411 IVCOMP = IRECN - 13 06900411 40160 IF (IVCOMP - 100) 20160, 10160, 20160 06910411 30160 IVDELE = IVDELE + 1 06920411 WRITE (I02,80000) IVTNUM 06930411 IF (ICZERO) 10160, 0171, 20160 06940411 10160 IVPASS = IVPASS + 1 06950411 WRITE (I02,80002) IVTNUM 06960411 GO TO 0171 06970411 20160 IVFAIL = IVFAIL + 1 06980411 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 06990411 0171 CONTINUE 07000411 C 07010411 C 07020411 C THE NEXT THREE TESTS TEST USE OF THE BACKSPACE AND ENDFILE 07030411 C STATEMENTS 07040411 C 07050411 C 07060411 C 07070411 C **** FCVS PROGRAM 411 - TEST 017 **** 07080411 C 07090411 C TEST 017 USES AN ENDFILE STATEMENT TO WRITE AN ENDFILE 07100411 C RECORD TO A FILE WITH UNFORMATTED RECORDS. AFTER EXECUTION 07110411 C OF THIS STATEMENT THE FILE SHOULD BE POSITION AFTER THE ENDFILE 07120411 C RECORD. 07130411 C 07140411 C 07150411 IVTNUM = 17 07160411 IF (ICZERO) 30170, 0170, 30170 07170411 0170 CONTINUE 07180411 IVCORR = 1 07190411 IVCOMP = 0 07200411 0172 ENDFILE I04 07210411 IVCOMP = 1 07220411 40170 IF (IVCOMP - 1) 20170, 10170, 20170 07230411 C 07240411 30170 IVDELE = IVDELE + 1 07250411 WRITE (I02,80000) IVTNUM 07260411 IF (ICZERO) 10170, 0181, 20170 07270411 10170 IVPASS = IVPASS + 1 07280411 WRITE (I02,80002) IVTNUM 07290411 GO TO 0181 07300411 20170 IVFAIL = IVFAIL + 1 07310411 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 07320411 0181 CONTINUE 07330411 C 07340411 C **** FCVS PROGRAM 411 - TEST 018 **** 07350411 C 07360411 C 07370411 C TEST 018 USES THE BACKSPACE STATEMENT TO REPOSITION THE FILE 07380411 C BEFORE THE ENDFILE RECORD. 07390411 C 07400411 C SEE SECTIONS 12.10.4.1, BACKSPACE STATEMENT 07410411 C 12.10.4.2, ENDFILE STATEMENT 07420411 C 07430411 C 07440411 IVTNUM = 18 07450411 IF (ICZERO) 30180, 0180, 30180 07460411 0180 CONTINUE 07470411 IVCORR = 1 07480411 IVCOMP = 0 07490411 BACKSPACE I04 07500411 IVCOMP = 1 07510411 40180 IF (IVCOMP - 1) 20180, 10180, 20180 07520411 30180 IVDELE = IVDELE + 1 07530411 WRITE (I02,80000) IVTNUM 07540411 IF (ICZERO) 10180, 0191, 20180 07550411 10180 IVPASS = IVPASS + 1 07560411 WRITE (I02,80002) IVTNUM 07570411 GO TO 0191 07580411 20180 IVFAIL = IVFAIL + 1 07590411 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 07600411 0191 CONTINUE 07610411 C 07620411 C **** FCVS PROGRAM 411 - TEST 019 **** 07630411 C 07640411 C 07650411 C TEST 019 IS A CONTINUATION OF THE ENDFILE AND BACKSPACE TESTS 07660411 C (TWO PREVIOUS TESTS). THIS TEST CONTINUES WRITTING RECORDS TO THE07670411 C FILE OVER THE ENDFILE RECORD PREVIOUSLY WRITTEN IN TEST 017. 07680411 C TWENTY EIGHT RECORDS ARE WRITTEN TO THE FILE FOLLOWED BY AN 07690411 C ENDFILE. 07700411 C 07710411 C 07720411 IVTNUM = 19 07730411 IF (ICZERO) 30190, 0190, 30190 07740411 0190 CONTINUE 07750411 IVCOMP = 0 07760411 IRECN = 113 07770411 DO 4112 I = 1,28 07780411 IRECN = IRECN + 1 07790411 WRITE (I04) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 07800411 1 ICON21, ICON22, ICON31, ICON32, ICON33, ICON34, ICON55, ICON56 07810411 IVCOMP = IVCOMP + 1 07820411 4112 CONTINUE 07830411 IVCORR = 29 07840411 IEOF = 9999 07850411 IRECN = IRECN + 1 07860411 WRITE (I04) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF 07870411 IVCOMP = IVCOMP + 1 07880411 ENDFILE I04 07890411 C 07900411 C THERE SHOULD BE A TOTAL OF 142 RECORDS PLUS AN ENDFILE RECORD 07910411 C IN THE FILE AFTER EXECUTION OF THIS TEST. 07920411 C 07930411 40190 IF (IVCOMP - 29) 20190, 10190, 20190 07940411 30190 IVDELE = IVDELE + 1 07950411 WRITE (I02,80000) IVTNUM 07960411 IF (ICZERO) 10190, 0201, 20190 07970411 10190 IVPASS = IVPASS + 1 07980411 WRITE (I02,80002) IVTNUM 07990411 GO TO 0201 08000411 20190 IVFAIL = IVFAIL + 1 08010411 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 08020411 0201 CONTINUE 08030411 C 08040411 C 08050411 C THE NEXT SERIES OF TESTS READ AND CHECK THE RECORDS CREATED IN 08060411 C TESTS 03 THROUGH 019. EACH OF THE TESTS IN THIS SET IS CHECKING 08070411 C TWO THINGS. FIRST, THAT THE READ STATEMENT CONSTRUCT IS ACCEPTED 08080411 C BY THE COMPILER AND SECOND THAT THE RECORDS CREATED IN TESTS 003 08090411 C THROUGH 019 AND READ IN THESE TESTS CAN GIVE PREDICTIBLE VALUES. 08100411 C THE READ STATEMENT IS USED WITH THE I/O LIST ITEMS AS A VARIABLE, 08110411 C AN ARRAY ELEMENT AND AN ARRAY. 08120411 C 08130411 C 08140411 C 08150411 C **** FCVS PROGRAM 411 - TEST 020 **** 08160411 C 08170411 C 08180411 C TEST 020 USES A READ STATEMENT WHERE THE INPUT LIST ITEM IS A 08190411 C VARIABLE OF INTEGER TYPE. 08200411 C 08210411 C 08220411 IVTNUM = 20 08230411 IF (ICZERO) 30200, 0200, 30200 08240411 0200 CONTINUE 08250411 REWIND I04 08260411 C REPOSITION THE FILE TO THE FIRST RECORD 08270411 IVON22 = 0 08280411 IVON56 = 0 08290411 IVCORR = 30 08300411 IVCOMP = 1 08310411 READ (I04) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 08320411 1 IVON21, IVON22, IVON31, IVON32, IVON33, IVON34, IVON55, IVON56 08330411 IF (IRECN .EQ. 01) IVCOMP = IVCOMP * 2 08340411 IF (IVON22 .EQ. -11) IVCOMP = IVCOMP * 3 08350411 IF (IVON56 .EQ. 32767) IVCOMP = IVCOMP * 5 08360411 40200 IF (IVCOMP - 30) 20200, 10200, 20200 08370411 30200 IVDELE = IVDELE + 1 08380411 WRITE (I02,80000) IVTNUM 08390411 IF (ICZERO) 10200, 0211, 20200 08400411 10200 IVPASS = IVPASS + 1 08410411 WRITE (I02,80002) IVTNUM 08420411 GO TO 0211 08430411 20200 IVFAIL = IVFAIL + 1 08440411 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 08450411 0211 CONTINUE 08460411 C 08470411 C **** FCVS PROGRAM 411 - TEST 021 **** 08480411 C 08490411 C 08500411 C TEST 021 USES A READ STATEMENT WHERE THE INPUT LIST ITEM IS A 08510411 C VARIABLE OF REAL TYPE. 08520411 C 08530411 C 08540411 IVTNUM = 21 08550411 IF (ICZERO) 30210, 0210, 30210 08560411 0210 CONTINUE 08570411 RVON22 = 0.0 08580411 RVON31 = 0.0 08590411 IVCORR = 30 08600411 IVCOMP = 1 08610411 READ (I04) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 08620411 1 RVON21, RVON22, RVON31, RVON32, RVON33, RVON34, RVON55, RVON56 08630411 IF (IRECN .EQ. 02) IVCOMP = IVCOMP * 2 08640411 IF (RVON22 .EQ. -11.) IVCOMP = IVCOMP * 3 08650411 IF (RVON31 .EQ. 7.77) IVCOMP = IVCOMP * 5 08660411 40210 IF (IVCOMP - 30) 20210, 10210, 20210 08670411 30210 IVDELE = IVDELE + 1 08680411 WRITE (I02,80000) IVTNUM 08690411 IF (ICZERO) 10210, 0221, 20210 08700411 10210 IVPASS = IVPASS + 1 08710411 WRITE (I02,80002) IVTNUM 08720411 GO TO 0221 08730411 20210 IVFAIL = IVFAIL + 1 08740411 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 08750411 0221 CONTINUE 08760411 C 08770411 C **** FCVS PROGRAM 411 - TEST 022 **** 08780411 C 08790411 C 08800411 C TEST 022 USES A READ STATEMENT WHERE THE INPUT LIST ITEM IS A 08810411 C VARIABLE OF LOGICAL TYPE. 08820411 C 08830411 C 08840411 IVTNUM = 22 08850411 IF (ICZERO) 30220, 0220, 30220 08860411 0220 CONTINUE 08870411 LVONT1 = .FALSE. 08880411 LVONF6 = .TRUE. 08890411 IVCORR = 30 08900411 IVCOMP = 1 08910411 READ (I04) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 08920411 1 LVONT1, LVONF2, LVONT3, LVONF4, LVONT5, LVONF6, LVONT7, LVONF808930411 IF (IRECN .EQ. 03) IVCOMP = IVCOMP * 2 08940411 IF (.NOT. LVONF6) IVCOMP = IVCOMP * 3 08950411 IF (LVONT1) IVCOMP = IVCOMP * 5 08960411 40220 IF (IVCOMP - 30) 20220, 10220, 20220 08970411 30220 IVDELE = IVDELE + 1 08980411 WRITE (I02,80000) IVTNUM 08990411 IF (ICZERO) 10220, 0231, 20220 09000411 10220 IVPASS = IVPASS + 1 09010411 WRITE (I02,80002) IVTNUM 09020411 GO TO 0231 09030411 20220 IVFAIL = IVFAIL + 1 09040411 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 09050411 0231 CONTINUE 09060411 C 09070411 C **** FCVS PROGRAM 411 - TEST 023 **** 09080411 C 09090411 C 09100411 C TEST 023 USES A READ STATEMENT WHERE THE INPUT LIST ITEM IS A 09110411 C ARRAY ELEMENT OF INTEGER TYPE. ONE, TWO, AND THREE 09120411 C DIMENSION ARRAYS ARE USED. 09130411 C 09140411 C 09150411 IVTNUM = 23 09160411 IF (ICZERO) 30230, 0230, 30230 09170411 0230 CONTINUE 09180411 IAON12(2) = 0 09190411 IAON12(8) = 0 09200411 IVCORR = 30 09210411 IVCOMP = 1 09220411 READ (I04) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 09230411 1 IAON12(1), IAON12(2), IAON22(1,2), IAON22(2,2), IAON32(1,1,2), 09240411 2 IAON32(2,1,2), IAON12(7), IAON12(8) 09250411 IF (IRECN .EQ. 04) IVCOMP = IVCOMP * 2 09260411 IF (IAON12(2) .EQ. -11) IVCOMP = IVCOMP * 3 09270411 IF (IAON12(8) .EQ. 32767) IVCOMP = IVCOMP * 5 09280411 C 09290411 C THE ABOVE 3 IF STATEMENTS CHECK THE RECORD NUMBER, A NEGATIVE 09300411 C FIELD VALUE AND A POSITIVE FIELD VALUE. 09310411 C 09320411 40230 IF (IVCOMP - 30) 20230, 10230, 20230 09330411 30230 IVDELE = IVDELE + 1 09340411 WRITE (I02,80000) IVTNUM 09350411 IF (ICZERO) 10230, 0241, 20230 09360411 10230 IVPASS = IVPASS + 1 09370411 WRITE (I02,80002) IVTNUM 09380411 GO TO 0241 09390411 20230 IVFAIL = IVFAIL + 1 09400411 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 09410411 0241 CONTINUE 09420411 C 09430411 C **** FCVS PROGRAM 411 - TEST 024 **** 09440411 C 09450411 C 09460411 C TEST 024 USES A READ STATEMENT WHERE THE INPUT LIST ITEM IS A 09470411 C ARRAY ELEMENT OF REAL TYPE. ONE, TWO, AND THREE 09480411 C DIMENSION ARRAYS ARE USED. 09490411 C 09500411 C 09510411 IVTNUM = 24 09520411 IF (ICZERO) 30240, 0240, 30240 09530411 0240 CONTINUE 09540411 RAON22(2,2) = 0.0 09550411 RAON32(1,1,2) = 0.0 09560411 IVCORR = 30 09570411 IVCOMP = 1 09580411 READ (I04) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 09590411 1 RAON12(1), RAON12(2), RAON22(1,2), RAON22(2,2), RAON32(1,1,2), 09600411 2 RAON32(2,1,2), RAON12(7), RAON12(8) 09610411 IF (IRECN .EQ. 05) IVCOMP = IVCOMP * 2 09620411 IF (RAON22(2,2) .EQ. -7.77) IVCOMP = IVCOMP * 3 09630411 IF (RAON32(1,1,2) .EQ. .512 ) IVCOMP = IVCOMP * 5 09640411 C 09650411 C THE ABOVE 3 IF STATEMENTS CHECK THE RECORD NUMBER, A NEGATIVE 09660411 C FIELD VALUE AND A POSITIVE FIELD VALUE. 09670411 C 09680411 40240 IF (IVCOMP - 30) 20240, 10240, 20240 09690411 30240 IVDELE = IVDELE + 1 09700411 WRITE (I02,80000) IVTNUM 09710411 IF (ICZERO) 10240, 0251, 20240 09720411 10240 IVPASS = IVPASS + 1 09730411 WRITE (I02,80002) IVTNUM 09740411 GO TO 0251 09750411 20240 IVFAIL = IVFAIL + 1 09760411 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 09770411 0251 CONTINUE 09780411 C 09790411 C **** FCVS PROGRAM 411 - TEST 025 **** 09800411 C 09810411 C 09820411 C TEST 025 USES A READ STATEMENT WHERE THE INPUT LIST ITEM IS A 09830411 C ARRAY ELEMENT OF LOGICAL TYPE. ONE, TWO, AND THREE 09840411 C DIMENSION ARRAYS ARE USED. 09850411 C 09860411 C 09870411 C 09880411 IVTNUM = 25 09890411 IF (ICZERO) 30250, 0250, 30250 09900411 0250 CONTINUE 09910411 LAON12(1) = .FALSE. 09920411 LAON32(2,1,2) = .TRUE. 09930411 IVCORR = 30 09940411 IVCOMP = 1 09950411 READ (I04) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 09960411 1 LAON12(1), LAON12(2), LAON22(1,2), LAON22(2,2), LAON32(1,1,2), 09970411 2 LAON32(2,1,2), LAON12(7), LAON12(8) 09980411 IF (IRECN .EQ. 06) IVCOMP = IVCOMP * 2 09990411 IF (LAON12(1)) IVCOMP = IVCOMP * 3 10000411 IF (.NOT. LAON32(2,1,2)) IVCOMP = IVCOMP * 5 10010411 40250 IF (IVCOMP - 30) 20250, 10250, 20250 10020411 30250 IVDELE = IVDELE + 1 10030411 WRITE (I02,80000) IVTNUM 10040411 IF (ICZERO) 10250, 0261, 20250 10050411 10250 IVPASS = IVPASS + 1 10060411 WRITE (I02,80002) IVTNUM 10070411 GO TO 0261 10080411 20250 IVFAIL = IVFAIL + 1 10090411 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 10100411 0261 CONTINUE 10110411 C 10120411 C **** FCVS PROGRAM 411 - TEST 026 **** 10130411 C 10140411 C 10150411 C TEST 026 USES A READ STATEMENT WHERE THE INPUT LIST ITEM IS A 10160411 C ARRAY OF INTEGER TYPE. 10170411 C 10180411 C 10190411 IVTNUM = 26 10200411 IF (ICZERO) 30260, 0260, 30260 10210411 0260 CONTINUE 10220411 IAON32(2,1,1) = 0 10230411 IAON32(2,2,2) = 0 10240411 IVCORR = 30 10250411 IVCOMP = 1 10260411 READ (I04) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 10270411 1 IAON32 10280411 IF (IRECN .EQ. 07) IVCOMP = IVCOMP * 2 10290411 IF (IAON32(2,1,1) .EQ. -11) IVCOMP = IVCOMP * 3 10300411 IF (IAON32(2,2,2) .EQ. 32767) IVCOMP = IVCOMP * 5 10310411 C 10320411 C THE ABOVE 3 IF STATEMENTS CHECK THE RECORD NUMBER, A NEGATIVE 10330411 C FIELD VALUE AND A POSITIVE FIELD VALUE. 10340411 C 10350411 40260 IF (IVCOMP - 30) 20260, 10260, 20260 10360411 30260 IVDELE = IVDELE + 1 10370411 WRITE (I02,80000) IVTNUM 10380411 IF (ICZERO) 10260, 0271, 20260 10390411 10260 IVPASS = IVPASS + 1 10400411 WRITE (I02,80002) IVTNUM 10410411 GO TO 0271 10420411 20260 IVFAIL = IVFAIL + 1 10430411 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 10440411 0271 CONTINUE 10450411 C 10460411 C **** FCVS PROGRAM 411 - TEST 027 **** 10470411 C 10480411 C 10490411 C TEST 027 USES A READ STATEMENT WHERE THE INPUT LIST ITEM IS A 10500411 C ARRAY OF REAL TYPE. 10510411 C 10520411 C 10530411 IVTNUM = 27 10540411 IF (ICZERO) 30270, 0270, 30270 10550411 0270 CONTINUE 10560411 RAON32(2,1,1) = 0.0 10570411 RAON32(2,2,2) = 0.0 10580411 IVCORR = 30 10590411 IVCOMP = 1 10600411 READ (I04) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 10610411 1 RAON32 10620411 IF (IRECN .EQ. 08) IVCOMP = IVCOMP * 2 10630411 IF (RAON32(2,1,1) .EQ. -11.) IVCOMP = IVCOMP * 3 10640411 IF (RAON32(2,2,2) .EQ. 32767.) IVCOMP = IVCOMP * 5 10650411 C 10660411 C THE ABOVE 3 IF STATEMENTS CHECK THE RECORD NUMBER, A NEGATIVE 10670411 C FIELD VALUE AND A POSITIVE FIELD VALUE. 10680411 C 10690411 40270 IF (IVCOMP - 30) 20270, 10270, 20270 10700411 30270 IVDELE = IVDELE + 1 10710411 WRITE (I02,80000) IVTNUM 10720411 IF (ICZERO) 10270, 0281, 20270 10730411 10270 IVPASS = IVPASS + 1 10740411 WRITE (I02,80002) IVTNUM 10750411 GO TO 0281 10760411 20270 IVFAIL = IVFAIL + 1 10770411 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 10780411 0281 CONTINUE 10790411 C 10800411 C **** FCVS PROGRAM 411 - TEST 028 **** 10810411 C 10820411 C 10830411 C TEST 028 USES A READ STATEMENT WHERE THE INPUT LIST ITEM IS A 10840411 C ARRAY OF LOGICAL TYPE. 10850411 C 10860411 C 10870411 IVTNUM = 28 10880411 IF (ICZERO) 30280, 0280, 30280 10890411 0280 CONTINUE 10900411 LAON32(1,1,1) = .FALSE. 10910411 LAON32(2,2,2) = .TRUE. 10920411 IVCORR = 30 10930411 IVCOMP = 1 10940411 READ (I04) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 10950411 1 LAON32 10960411 IF (IRECN .EQ. 09) IVCOMP = IVCOMP * 2 10970411 IF (LAON32(1,1,1)) IVCOMP = IVCOMP * 3 10980411 IF (.NOT. LAON32(2,2,2)) IVCOMP = IVCOMP * 5 10990411 40280 IF (IVCOMP - 30) 20280, 10280, 20280 11000411 30280 IVDELE = IVDELE + 1 11010411 WRITE (I02,80000) IVTNUM 11020411 IF (ICZERO) 10280, 0291, 20280 11030411 10280 IVPASS = IVPASS + 1 11040411 WRITE (I02,80002) IVTNUM 11050411 GO TO 0291 11060411 20280 IVFAIL = IVFAIL + 1 11070411 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 11080411 0291 CONTINUE 11090411 C 11100411 C **** FCVS PROGRAM 411 - TEST 029 **** 11110411 C 11120411 C 11130411 C TEST 029 USES A READ STATEMENT WHERE THE INPUT LIST ITEM IS A 11140411 C IMPLIED-DO WITH AN ITEM OF INTEGER TYPE. THE STORAGE VALUES IN 11150411 C THE ARRAY (BY THE IMPLIED-DO DURING THE READ) SHOULD RESULT IN A 11160411 C DIFFERENT STORAGE SEQUENCE IN THE ARRAY THAN FOUND IN THE RECORD 11170411 C OF THE FILE. THIS RECORD IS RECORD NUMBER 10 AND WAS CREATED IN 11180411 C TEST 012 ABOVE. THE FIELD VALUE, FIELD POSITION, POSITION WITHIN 11190411 C ARRAY IAON32 AND SUBSCRIPT VALUE AFTER THE READ IS 11200411 C 11210411 C VALUE 11 777 512 -32767 -11 -777 -512 32767 11220411 C FIELD POS 1 3 2 4 5 7 6 8 11230411 C IAON32 1 2 3 4 5 6 7 8 11240411 C SUBSCRIPT 1,1,1 2,1,1 1,2,1 2,2,1 1,1,2 2,1,2 1,2,2 2,2,211250411 C 11260411 C 11270411 IVTNUM = 29 11280411 IF (ICZERO) 30290, 0290, 30290 11290411 0290 CONTINUE 11300411 IAON32(2,1,1) = 0 11310411 IAON32(2,2,1) = 0 11320411 IVCORR = 30 11330411 IVCOMP = 1 11340411 READ (I04) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 11350411 1 (((IAON32 (J,K,I), K=1,2), J=1,2), I=1,2) 11360411 IF (IRECN .EQ. 10) IVCOMP = IVCOMP * 2 11370411 IF (IAON32(2,1,1) .EQ. 777) IVCOMP = IVCOMP * 3 11380411 IF (IAON32(2,2,1) .EQ. -32767) IVCOMP = IVCOMP * 5 11390411 C 11400411 C THE ABOVE 3 IF STATEMENTS CHECK THE RECORD NUMBER, A NEGATIVE 11410411 C FIELD VALUE AND A POSITIVE FIELD VALUE. 11420411 C 11430411 40290 IF (IVCOMP - 30) 20290, 10290, 20290 11440411 30290 IVDELE = IVDELE + 1 11450411 WRITE (I02,80000) IVTNUM 11460411 IF (ICZERO) 10290, 0301, 20290 11470411 10290 IVPASS = IVPASS + 1 11480411 WRITE (I02,80002) IVTNUM 11490411 GO TO 0301 11500411 20290 IVFAIL = IVFAIL + 1 11510411 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 11520411 0301 CONTINUE 11530411 C 11540411 C **** FCVS PROGRAM 411 - TEST 030 **** 11550411 C 11560411 C 11570411 C TEST 030 USES A READ STATEMENT WHERE THE INPUT LIST ITEM IS A 11580411 C IMPLIED-DO WITH AN ITEM OF REAL TYPE. THE STORAGE VALUES IN 11590411 C THE ARRAY (BY THE IMPLIED-DO DURING THE READ) SHOULD RESULT IN A 11600411 C SEQUENCE THE SAME AS FOUND IN THE RECORD OF THE FILE. THIS REC- 11610411 C ORD IS RECORD NUMBER 011 AND WAS CREATED IN TEST 013 ABOVE. 11620411 C THE FIELD VALUE, FIELD POSITION, POSITION WITHIN ARRAY RAON32 AND11630411 C SUBSCRIPT VALUE AFTER THE THE READ IS 11640411 C 11650411 C VALUE 11. -11. 7.77 -7.77 .512 -.512 -32767. 32767.11660411 C FIELD POS 1 2 3 4 5 6 7 8 11670411 C RAON32 1 2 3 4 5 6 7 8 11680411 C SUBSCRIPT 1,1,1 2,1,1 1,2,1 2,2,1 1,1,2 2,1,2 1,2,2 2,2,211690411 C 11700411 C 11710411 IVTNUM = 30 11720411 IF (ICZERO) 30300, 0300, 30300 11730411 0300 CONTINUE 11740411 RAON32(1,2,1) = 0.0 11750411 RAON32(1,2,2) = 0.0 11760411 IVCORR = 30 11770411 IVCOMP = 1 11780411 READ (I04) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 11790411 1 (((RAON32 (J,K,I), J=1,2), K=1,2), I=1,2) 11800411 IF (IRECN .EQ. 11) IVCOMP = IVCOMP * 2 11810411 IF (RAON32(1,2,1) .EQ. 7.77) IVCOMP = IVCOMP * 3 11820411 IF (RAON32(1,2,2) .EQ. -32767.) IVCOMP = IVCOMP * 5 11830411 C 11840411 C THE ABOVE 3 IF STATEMENTS CHECK THE RECORD NUMBER, A NEGATIVE 11850411 C FIELD VALUE AND A POSITIVE FIELD VALUE. 11860411 C 11870411 40300 IF (IVCOMP - 30) 20300, 10300, 20300 11880411 30300 IVDELE = IVDELE + 1 11890411 WRITE (I02,80000) IVTNUM 11900411 IF (ICZERO) 10300, 0311, 20300 11910411 10300 IVPASS = IVPASS + 1 11920411 WRITE (I02,80002) IVTNUM 11930411 GO TO 0311 11940411 20300 IVFAIL = IVFAIL + 1 11950411 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 11960411 0311 CONTINUE 11970411 C 11980411 C **** FCVS PROGRAM 411 - TEST 031 **** 11990411 C 12000411 C 12010411 C TEST 031 USES A READ STATEMENT WHERE THE INPUT LIST ITEM IS A 12020411 C IMPLIED-DO WITH AN ITEM OF LOGICAL TYPE. THE STORAGE VALUES IN 12030411 C THE ARRAY (BY THE IMPLIED-DO DURING THE READ) SHOULD RESULT IN A 12040411 C DIFFERENT STORAGE SEQUENCE IN THE ARRAY THAN FOUND IN THE RECORD 12050411 C OF THE FILE. THIS RECORD IS RECORD NUMBER 12 AND WAS CREATED IN 12060411 C TEST 014 ABOVE. THE FIELD VALUE, FIELD POSITION, POSITION WITHIN 12070411 C ARRAY LAON32 AND SUBSCRIPT VALUE AFTER THE READ IS 12080411 C 12090411 C VALUE T T F F T T F F 12100411 C FIELD POS 1 5 3 7 2 6 4 8 12110411 C LAON32 1 2 3 4 5 6 7 8 12120411 C SUBSCRIPT 1,1,1 2,1,1 1,2,1 2,2,1 1,1,2 2,1,2 1,2,2 2,2,212130411 C 12140411 C 12150411 IVTNUM = 31 12160411 IF (ICZERO) 30310, 0310, 30310 12170411 0310 CONTINUE 12180411 LAON32(1,2,1) = .TRUE. 12190411 LAON32(2,1,1) = .FALSE. 12200411 IVCORR = 30 12210411 IVCOMP = 1 12220411 READ (I04) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 12230411 1 (((LAON32 (J,K,I), I=1,2), K=1,2), J=1,2) 12240411 IF (IRECN .EQ. 12) IVCOMP = IVCOMP * 2 12250411 IF ( .NOT. LAON32(1,2,1)) IVCOMP = IVCOMP * 3 12260411 IF (LAON32(2,1,1)) IVCOMP = IVCOMP * 5 12270411 40310 IF (IVCOMP - 30) 20310, 10310, 20310 12280411 30310 IVDELE = IVDELE + 1 12290411 WRITE (I02,80000) IVTNUM 12300411 IF (ICZERO) 10310, 0321, 20310 12310411 10310 IVPASS = IVPASS + 1 12320411 WRITE (I02,80002) IVTNUM 12330411 GO TO 0321 12340411 20310 IVFAIL = IVFAIL + 1 12350411 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 12360411 0321 CONTINUE 12370411 C 12380411 C **** FCVS PROGRAM 411 - TEST 032 **** 12390411 C 12400411 C 12410411 C TEST 032 USES A READ STATEMENT WITHOUT ANY INPUT LIST ITEMS 12420411 C (INPUT LIST ITEMS ARE OPTIONAL FOR THE READ STATEMENT). THIS 12430411 C RECORD WAS WRITTEN IN TEST 15 AND SHOULD BE RECORD NUMBER 13. 12440411 C THE PURPOSE OF THIS TEST IS TO SEE THAT THE STATEMENT CONSTRUCT 12450411 C IS ACCEPTABLE TO THE COMPILER. 12460411 C ALSO THE LENGTH OF AN UNFORMATTED RECORD MAY BE ZERO. 12470411 C 12480411 C SEE SECTIONS 12.1.2, UNFORMATTED RECORDS 12490411 C 12.8, READ, WRITE AND PRINT STATEMENTS12500411 C 12510411 C 12520411 IVTNUM = 32 12530411 IF (ICZERO) 30320, 0320, 30320 12540411 0320 CONTINUE 12550411 IRECN = 13 12560411 IVCORR = 13 12570411 READ (I04) 12580411 IVCOMP = IRECN 12590411 40320 IF (IVCOMP - 13) 20320, 10320, 20320 12600411 30320 IVDELE = IVDELE + 1 12610411 WRITE (I02,80000) IVTNUM 12620411 IF (ICZERO) 10320, 0331, 20320 12630411 10320 IVPASS = IVPASS + 1 12640411 WRITE (I02,80002) IVTNUM 12650411 GO TO 0331 12660411 20320 IVFAIL = IVFAIL + 1 12670411 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 12680411 0331 CONTINUE 12690411 C 12700411 C **** FCVS PROGRAM 411 - TEST 033 **** 12710411 C 12720411 C 12730411 C TEST 033 USES A READ STATEMENT IN WHICH THE NUMBER OF VALUES 12740411 C REQUIRED BY THE INPUT LIST IS LESS THAN THE NUMBER OF VALUES IN 12750411 C THE RECORD. THIS TEST READS RECORD NUMBER 14 WHICH WAS CREATED 12760411 C IN TEST 016. 12770411 C 12780411 C SEE SECTION 12.9.5.1, UNFORMATED DATA TRANSFER 12790411 C 12800411 C 12810411 IVTNUM = 33 12820411 IF (ICZERO) 30330, 0330, 30330 12830411 0330 CONTINUE 12840411 IVON21 = 0 12850411 IVON22 = 0 12860411 IVON31 = 0 12870411 IVCORR = 0 12880411 IVCOMP = 1 12890411 READ (I04) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 12900411 1 IVON21, IVON22, IVON31 12910411 IF (IRECN .EQ. 14) IVCOMP = IVCOMP * 2 12920411 IF (IVON21 .EQ. 11) IVCOMP = IVCOMP * 3 12930411 IF (IVON22 .EQ. -11) IVCOMP = IVCOMP * 5 12940411 40330 IF (IVCOMP - 30) 20330, 10330, 20330 12950411 30330 IVDELE = IVDELE + 1 12960411 WRITE (I02,80000) IVTNUM 12970411 IF (ICZERO) 10330, 0341, 20330 12980411 10330 IVPASS = IVPASS + 1 12990411 WRITE (I02,80002) IVTNUM 13000411 GO TO 0341 13010411 20330 IVFAIL = IVFAIL + 1 13020411 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 13030411 0341 CONTINUE 13040411 C 13050411 C 13060411 C THE FOLLOWING TWO TESTS USE THE READ STATEMENT WITH THE 13070411 C END SPECIFIER. 13080411 C 13090411 C 13100411 C 13110411 C **** FCVS PROGRAM 411 - TEST 034 **** 13120411 C 13130411 C 13140411 C TEST 034 USES THE READ STATEMENT WITHOUT ANY I/O LIST ITEMS. 13150411 C THE FILE IS READ UNTIL AN END-OF-FILE CONDITION OCCURS. 13160411 C 13170411 IVTNUM = 34 13180411 IF (ICZERO) 30340, 0340, 30340 13190411 0340 CONTINUE 13200411 REWIND I04 13210411 C 13220411 IVCOMP = 1 13230411 IVON01 = 0 13240411 IVCORR = 6 13250411 DO 0342 I=1,150 13260411 READ (I04, END = 0343) 13270411 IVON01 = IVON01 + 1 13280411 IF (IVON01 .GT. 150) GO TO 40340 13290411 0342 CONTINUE 13300411 GO TO 40340 13310411 0343 IVCOMP = IVCOMP * 2 13320411 IF (IVON01 .EQ. 142) IVCOMP = IVCOMP * 3 13330411 40340 IF (IVCOMP - 6) 20340, 10340, 20340 13340411 30340 IVDELE = IVDELE + 1 13350411 WRITE (I02,80000) IVTNUM 13360411 IF (ICZERO) 10340, 0351, 20340 13370411 10340 IVPASS = IVPASS + 1 13380411 WRITE (I02,80002) IVTNUM 13390411 GO TO 0351 13400411 20340 IVFAIL = IVFAIL + 1 13410411 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 13420411 0351 CONTINUE 13430411 C 13440411 C **** FCVS PROGRAM 411 - TEST 035 **** 13450411 C 13460411 C 13470411 C TEST 035 USES THE READ STATEMENT WITH INPUT LIST ITEMS. 13480411 C THE FILE IS READ UNTIL AN END-OF-FILE CONDITION OCCURS. 13490411 C 13500411 C 13510411 IVTNUM = 35 13520411 IF (ICZERO) 30350, 0350, 30350 13530411 0350 CONTINUE 13540411 REWIND I04 13550411 IVCOMP = 1 13560411 IVCORR = 6 13570411 IVON01 = 0 13580411 IRECCK = 0 13590411 DO 0352 I = 1,150 13600411 IRECCK = IRECCK + 1 13610411 IF (IRECCK .EQ. 13) GO TO 0353 13620411 C TEST 015 WROTE A RECORD WITHOUT ANY I/O LIST ITEMS THEREFORE 13630411 C THE RECORD IS READ WITHOUT ANY I/O LIST ITEMS. 13640411 READ (I04, END = 0354) IPROG, IFILE, ITOTR, IRLGN, IRECN,IEOF 13650411 GO TO 0355 13660411 0353 READ (I04) 13670411 IVON01 = IVON01 + 1 13680411 0355 IF (IRECN .EQ. IRECCK) IVON01 = IVON01 + 1 13690411 0352 CONTINUE 13700411 GO TO 40350 13710411 0354 IVCOMP = IVCOMP * 2 13720411 IF (IVON01 .EQ. 142) IVCOMP = IVCOMP * 3 13730411 40350 IF (IVCOMP - 6) 20350, 10350, 20350 13740411 30350 IVDELE = IVDELE + 1 13750411 WRITE (I02,80000) IVTNUM 13760411 IF (ICZERO) 10350, 0361, 20350 13770411 10350 IVPASS = IVPASS + 1 13780411 WRITE (I02,80002) IVTNUM 13790411 GO TO 0361 13800411 20350 IVFAIL = IVFAIL + 1 13810411 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 13820411 0361 CONTINUE 13830411 C 13840411 C 13850411 C THE FOLLOWING SOURCE CODE BRACKETED BY THE COMMENT LINES 13860411 C ***** BEGIN-FILE-DUMP SECTION AND ***** END-FILE-DUMP SECTION 13870411 C MAY OR MAY NOT APPEAR AS COMMENTS IN THE SOURCE PROGRAM. 13880411 C THIS CODE IS OPTIONAL AND BY DEFAULT IT IS AUTOMATICALLY COMMENTED13890411 C OUT BY THE EXECUTIVE ROUTINE. A DUMP OF THE FILE USED BY THIS 13900411 C ROUTINE IS PROVIDED BY USING THE *OPT1 EXECUTIVE ROUTINE CONTROL 13910411 C CARD. IF THE OPTIONAL CODE IS SELECTED THE ROUTINE WILL DUMP 13920411 C THE CONTENTS OF THE FILE TO THE PRINT FILE FOLLOWING THE TEST 13930411 C REPORT AND BEFORE THE TEST REPORT SUMMARY. 13940411 CDB** BEGIN FILE DUMP CODE 13950411 C REWIND I04 13960411 C ITOTR = 142 13970411 C ILUN = I04 13980411 C IRLGN = 80 13990411 C IRNUM = 1 14000411 C7701 FORMAT (80A1) 14010411 C7702 FORMAT (1X,80A1) 14020411 C7703 FORMAT (10X,"FILE ",I2," HAS ",I3," RECORDS - OK" ) 14030411 C7704 FORMAT (10X,"FILE ",I2," HAS ",I3," RECORDS - THERE SHOULD BE " ,I14040411 C 13,9H RECORDS.) 14050411 C DO 7771 IRNUM = 1, ITOTR 14060411 C READ (ILUN, END = 7772) (IDUMP(ICH), ICH = 1, IRLGN) 14070411 C WRITE (I02,7702) (IDUMP(ICH), ICH = 1, IRLGN) 14080411 C7771 CONTINUE 14090411 C7772 CONTINUE 14100411 CDE** END OF DUMP CODE 14110411 C TEST 035 IS THE LAST TEST IN THIS PROGRAM. THE ROUTINE SHOULD14120411 C HAVE MADE 35 EXPLICIT TESTS AND PROCESSED ONE FILE CONNECTED FOR 14130411 C SEQUENTIAL ACCESS 14140411 C 14150411 C 14160411 C 14170411 C WRITE OUT TEST SUMMARY 14180411 C 14190411 WRITE (I02,90004) 14200411 WRITE (I02,90014) 14210411 WRITE (I02,90004) 14220411 WRITE (I02,90000) 14230411 WRITE (I02,90004) 14240411 WRITE (I02,90020) IVFAIL 14250411 WRITE (I02,90022) IVPASS 14260411 WRITE (I02,90024) IVDELE 14270411 STOP 14280411 90001 FORMAT (" ",24X,"FM411") 14290411 90000 FORMAT (" ",20X,"END OF PROGRAM FM411" ) 14300411 C 14310411 C FORMATS FOR TEST DETAIL LINES 14320411 C 14330411 80000 FORMAT (" ",4X,I5,6X,"DELETED") 14340411 80002 FORMAT (" ",4X,I5,7X,"PASS") 14350411 80010 FORMAT (" ",4X,I5,7X,"FAIL",10X,I6,9X,I6) 14360411 80012 FORMAT (" ",4X,I5,7X,"FAIL",4X,E12.5,3X,E12.5) 14370411 80018 FORMAT (" ",4X,I5,7X,"FAIL",2X,A14,1X,A14) 14380411 C 14390411 C FORMAT STATEMENTS FOR PAGE HEADERS 14400411 C 14410411 90002 FORMAT ("1") 14420411 90004 FORMAT (" ") 14430411 90006 FORMAT (" ",10X,"FORTRAN COMPILER VALIDATION SYSTEM" ) 14440411 90008 FORMAT (" ",21X,"VERSION 2.1" ) 14450411 90010 FORMAT (" ",8X,"FOR OFFICIAL USE ONLY - COPYRIGHT 1978" ) 14460411 90012 FORMAT (" ",5X,"TEST",5X,"PASS/FAIL",5X,"COMPUTED",8X,"CORRECT") 14470411 90014 FORMAT (" ",5X,"----------------------------------------------" ) 14480411 90016 FORMAT (" ",18X,"SUBSET LEVEL TEST" ) 14490411 C 14500411 C FORMAT STATEMENTS FOR RUN SUMMARY 14510411 C 14520411 90020 FORMAT (" ",19X,I5," TESTS FAILED" ) 14530411 90022 FORMAT (" ",19X,I5," TESTS PASSED" ) 14540411 90024 FORMAT (" ",19X,I5," TESTS DELETED" ) 14550411 END 14560411