| PROGRAM FM413 00010413 |
| C 00020413 |
| C 00030413 |
| C 00040413 |
| C THIS ROUTINE TESTS FOR PROPER PROCESSING OF UNFORMATTED RECORDS00050413 |
| C IN FILES CONNECTED FOR DIRECT ACCESS. FOR THE SUBSET LANGUAGE A 00060413 |
| C FILE CONNECTED FOR DIRECT ACCESS MUST HAVE UNFORMATTED RECORDS 00070413 |
| C THIS ROUTINE FIRST TESTS SEVERAL SYNTACTICAL VARIATIONS OF THE 00080413 |
| C READ AND WRITE STATEMENTS USED IN CREATING AND ACCESSING 00090413 |
| C RECORDS OF THE FILE. THE OPEN STATEMENT IS USED TO CONNECT 00100413 |
| C THE FILE TO A UNIT AND ESTABLISH ITS CONNECTION FOR DIRECT 00110413 |
| C ACCESS. THE FIRST SERIES OF TESTS CREATE AND ACCESS THE 00120413 |
| C RECORDS OF THE FILE IN RECORD NUMBER SEQUENCE AND THE LAST 00130413 |
| C SERIES OF TESTS CREATE AND ACCESS RECORDS OF THE FILE IN RANDOM 00140413 |
| C ORDER. 00150413 |
| C 00160413 |
| C UNFORMATTED RECORDS MAY HAVE BOTH CHARACTER AND NONCHARACTER 00170413 |
| C DATA AND THIS DATA IS TRANSFERRED WITHOUT EDITING BETWEEN THE 00180413 |
| C CURRENT RECORD AND THE ENTITIES SPECIFIED BY THE INPUT/OUTPUT 00190413 |
| C LIST. THIS ROUTINE BOTH READS AND WRITES RECORDS CONTAINING 00200413 |
| C THE DATA TYPES OF INTEGER ,REAL AND LOGICAL WITH I/O LIST ITEMS 00210413 |
| C REPRESENTED AS VARIABLE NAMES, ARRAY ELEMENT NAMES AND ARRAY 00220413 |
| C NAMES. THIS ROUTINE DOES NOT TEST DATA OF TYPE CHARACTER. 00230413 |
| C 00240413 |
| C ROUTINE FM411 TESTS USE OF UNFORMATTED RECORDS 00250413 |
| C WITH A FILE CONNECTED FOR SEQUENTIAL ACCESS. 00260413 |
| C 00270413 |
| C THIS ROUTINE TESTS 00280413 |
| C 00290413 |
| C (1) THE STATEMENT CONSTRUCTS 00300413 |
| C 00310413 |
| C A. WRITE (U,REC=RN) VARIABLE-NAME,... 00320413 |
| C B. WRITE (U,REC=RN) ARRAY-ELEMENT-NAME,... 00330413 |
| C C. WRITE (U,REC=RN) ARRAY-NAME,... 00340413 |
| C D. WRITE (U,REC=RN) - NO OUTPUT LIST 00350413 |
| C E. WRITE (U,REC=RN) IMPLIED-DO-LIST 00360413 |
| C F. READ (U,REC=RN) VARIABLE-NAME,... 00370413 |
| C G. READ (U,REC=RN) ARRAY-ELEMENT-NAME,... 00380413 |
| C H. READ (U,REC=RN) ARRAY-NAME,... 00390413 |
| C I. READ (U,REC=RN) - NO INPUT LIST 00400413 |
| C J. READ (U,REC=RN) IMPLIED-DO-LIST 00410413 |
| C 00420413 |
| C (2) USE OF A READ STATEMENT WHERE THE NUMBER OF VALUES 00430413 |
| C IN THE INPUT LIST IS LESS THAN OR EQUAL TO THE 00440413 |
| C NUMBER OF VALUES IN THE RECORD. 00450413 |
| C (3) USE OF THE STATEMENT 00460413 |
| C OPEN (U,ACCESS='DIRECT',RECL=RL) 00470413 |
| C FOR CONNECTING A FILE TO THE UNIT. 00480413 |
| C 00490413 |
| C (4) THAT THE RECORDS OF A DIRECT ACCESS FILE NEED NOT BE 00500413 |
| C BE CREATED AND READ IN ORDER OF THEIR RECORD NUMBERS. 00510413 |
| C 00520413 |
| C (5) THAT THE VALUES OF THE RECORD MAY BE CHANGED WHEN 00530413 |
| C THE RECORD IS REWRITTEN. 00540413 |
| C REFERENCES - 00550413 |
| C 00560413 |
| C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, 00570413 |
| C X3.9-1977 00580413 |
| C 00590413 |
| C SECTION 4.1, DATA TYPES 00600413 |
| C SECTION 12.1.2, UNFORMATTED RECORD 00610413 |
| C SECTION 12.2.4, FILE ACCESS 00620413 |
| C SECTION 12.2.4.2, DIRECT ACCESS 00630413 |
| C SECTION 12.3.3, UNIT SPECIFIER AND IDENTIFIER 00640413 |
| C SECTION 12.7.2, END-OF-FILE SPECIFIER 00650413 |
| C SECTION 12.8, READ, WRITE AND PRINT STATEMENTS 00660413 |
| C SECTION 12.8.1, CONTROL INFORMATION LIST 00670413 |
| C SECTION 12.8.2, INPUT/OUTPUT LIST 00680413 |
| C SECTION 12.8.2.1, INPUT LIST ITEMS 00690413 |
| C SECTION 12.8.2.2, OUTPUT LIST ITEMS 00700413 |
| C SECTION 12.8.2.3, IMPLIED-DO LIST 00710413 |
| C SECTION 12.9.5.1, UNFORMATTED DATA TRANSFER 00720413 |
| C SECTION 12.10.1, OPEN STATEMENT 00730413 |
| C 00740413 |
| C 00750413 |
| C 00760413 |
| C ******************************************************************00770413 |
| C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE 00780413 |
| C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN STANDARD FORTRAN 00790413 |
| C X3.9-1978, HAS BEEN DEVELOPED BY THE DEPARTMENT OF THE NAVY. THE 00800413 |
| C FORTRAN COMPILER VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT 00810413 |
| C ROUTINES, THEIR RELATED DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT00820413 |
| C ROUTINE IS A FORTRAN PROGRAM OR SUBPROGRAM WHICH INCLUDES TESTS 00830413 |
| C OF SPECIFIC LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING00840413 |
| C THE RESULT OF EXECUTING THESE TESTS. 00850413 |
| C 00860413 |
| C THIS PARTICULAR PROGRAM OR SUBPROGRAM CONTAINS ONLY FEATURES 00870413 |
| C FOUND IN THE SUBSET LEVEL OF THE STANDARD. 00880413 |
| C 00890413 |
| C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO 00900413 |
| C NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY 00910413 |
| C SOFTWARE STANDARDS VALIDATION GROUP 00920413 |
| C BUILDING 225 RM A266 00930413 |
| C GAITHERSBURG, MD 20899 00940413 |
| C ******************************************************************00950413 |
| C 00960413 |
| C 00970413 |
| IMPLICIT LOGICAL (L) 00980413 |
| IMPLICIT CHARACTER*14 (C) 00990413 |
| C 01000413 |
| LOGICAL LAON11, LAON21, LAON31, LCONT1, LCONF2, LVONT1, LVONF2 01010413 |
| LOGICAL LAON12, LAON22, LAON32, LCONT3, LCONF4, LVONT3, LVONF4 01020413 |
| LOGICAL LCONT5, LCONF6, LCONT7, LCONF8, LVONT5, LVONF6, LVONT7 01030413 |
| LOGICAL LVONF8 01040413 |
| DIMENSION IDUMP(80) 01050413 |
| DIMENSION IAON11(8), IAON21(2,4), IAON31(2,2,2) 01060413 |
| DIMENSION IAON12(8), IAON22(2,4), IAON32(2,2,2) 01070413 |
| DIMENSION RAON11(8), RAON21(2,4), RAON31(2,2,2) 01080413 |
| DIMENSION RAON12(8), RAON22(2,4), RAON32(2,2,2) 01090413 |
| DIMENSION LAON11(8), LAON21(2,4), LAON31(2,2,2) 01100413 |
| DIMENSION LAON12(8), LAON22(2,4), LAON32(2,2,2) 01110413 |
| DATA IAON11 /11, -11, 777, -777, 512, -512, -32767, 32767/ 01120413 |
| DATA IAON21 /11, -11, 777, -777, 512, -512, -32767, 32767/ 01130413 |
| DATA IAON31 /11, -11, 777, -777, 512, -512, -32767, 32767/ 01140413 |
| DATA LAON11 /.TRUE., .FALSE., .TRUE., .FALSE., .TRUE., .FALSE., 01150413 |
| 1 .TRUE., .FALSE./ 01160413 |
| DATA LAON21 /.TRUE., .FALSE., .TRUE., .FALSE., .TRUE., .FALSE., 01170413 |
| 1 .TRUE., .FALSE./ 01180413 |
| DATA LAON31 /.TRUE., .FALSE., .TRUE., .FALSE., .TRUE., .FALSE., 01190413 |
| 1 .TRUE., .FALSE./ 01200413 |
| DATA RAON11 /11., -11., 7.77, -7.77,.512, -.512, -32767., 32767./01210413 |
| DATA RAON21 /11., -11., 7.77, -7.77,.512, -.512, -32767., 32767./01220413 |
| DATA RAON31 /11., -11., 7.77, -7.77,.512, -.512, -32767., 32767./01230413 |
| ICON21 = 11 01240413 |
| ICON22 = -11 01250413 |
| ICON31 = +777 01260413 |
| ICON32 = -777 01270413 |
| ICON33 = 512 01280413 |
| ICON34 = -512 01290413 |
| ICON55 = -32767 01300413 |
| ICON56 = 32767 01310413 |
| RCON21 = 11. 01320413 |
| RCON22 = -11. 01330413 |
| RCON31 = +7.77 01340413 |
| RCON32 = -7.77 01350413 |
| RCON33 = .512 01360413 |
| RCON34 = -.512 01370413 |
| RCON55 = -32767. 01380413 |
| RCON56 = 32767. 01390413 |
| LCONT1 = .TRUE. 01400413 |
| LCONF2 = .FALSE. 01410413 |
| LCONT3 = .TRUE. 01420413 |
| LCONF4 = .FALSE. 01430413 |
| LCONT5 = .TRUE. 01440413 |
| LCONF6 = .FALSE. 01450413 |
| LCONT7 = .TRUE. 01460413 |
| LCONF8 = .FALSE. 01470413 |
| C 01480413 |
| C THE FILE USED IN THIS ROUTINE HAS THE FOLLOWING PROPERTIES 01490413 |
| C 01500413 |
| C FILE IDENTIFIER - I10 (X-NUMBER 10) 01510413 |
| C RECORD SIZE - 80 01520413 |
| C ACCESS METHOD - DIRECT 01530413 |
| C RECORD TYPE - UNFORMATTED 01540413 |
| C DESIGNATED DEVICE - DISK 01550413 |
| C TYPE OF DATA - INTEGER, REAL AND LOGICAL 01560413 |
| C RECORDS IN FILE - 214 01570413 |
| C 01580413 |
| C THE FIRST 6 FIELDS OF EACH RECORD IN THE FILE UNIQUELY IDENT-01590413 |
| C IFIES THAT RECORD. THE REMAINING FIELDS OF THE RECORD CONTAIN 01600413 |
| C DATA WHICH ARE USED IN TESTING. A DESCRIPTION OF EACH FIELD 01610413 |
| C OF THE PREAMBLE FOLLOWS. 01620413 |
| C 01630413 |
| C VARIABLE NAME IN PROGRAM FIELD NUMBER 01640413 |
| C ------------------------ ------------ 01650413 |
| C 01660413 |
| C IPROG (ROUTINE NAME) - 1 01670413 |
| C IFILE (LOGICAL/X-NUMBER) - 2 01680413 |
| C ITOTR (RECORDS IN FILE) - 3 01690413 |
| C IRLGN (LENGTH OF RECORD) - 4 01700413 |
| C IRECN (RECORD NUMBER) - 5 01710413 |
| C IEOF (9999 IF LAST RECORD) - 6 01720413 |
| C 01730413 |
| C 01740413 |
| C 01750413 |
| C 01760413 |
| C INITIALIZATION SECTION. 01770413 |
| C 01780413 |
| C INITIALIZE CONSTANTS 01790413 |
| C ******************** 01800413 |
| C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER 01810413 |
| I01 = 5 01820413 |
| C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER 01830413 |
| I02 = 6 01840413 |
| C SYSTEM ENVIRONMENT SECTION 01850413 |
| C 01860413 |
| CX010 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-010 CONTROL CARD.01870413 |
| C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 01880413 |
| C (UNIT NUMBER FOR CARD READER). 01890413 |
| CX011 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-011 CONTROL CARD01900413 |
| C THE CX011 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 01910413 |
| C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX010 ABOVE. 01920413 |
| C 01930413 |
| CX020 THIS CARD IS PEPLACED BY CONTENTS OF FEXEC X-020 CONTROL CARD.01940413 |
| C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02 = 6 01950413 |
| C (UNIT NUMBER FOR PRINTER). 01960413 |
| CX021 THIS CARD IS PEPLACED BY CONTENTS OF FEXEC X-021 CONTROL CARD.01970413 |
| C THE CX021 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 01980413 |
| C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX020 ABOVE. 01990413 |
| C 02000413 |
| IVPASS = 0 02010413 |
| IVFAIL = 0 02020413 |
| IVDELE = 0 02030413 |
| ICZERO = 0 02040413 |
| C 02050413 |
| C WRITE OUT PAGE HEADERS 02060413 |
| C 02070413 |
| WRITE (I02,90002) 02080413 |
| WRITE (I02,90006) 02090413 |
| WRITE (I02,90008) 02100413 |
| WRITE (I02,90004) 02110413 |
| WRITE (I02,90010) 02120413 |
| WRITE (I02,90004) 02130413 |
| WRITE (I02,90016) 02140413 |
| WRITE (I02,90001) 02150413 |
| WRITE (I02,90004) 02160413 |
| WRITE (I02,90012) 02170413 |
| WRITE (I02,90014) 02180413 |
| WRITE (I02,90004) 02190413 |
| C 02200413 |
| I10 = 422 02210413 |
| C I10 CONTAINS THE LOGICAL UNIT NUMBER FOR A DIRECT ACCESS FILE 02220413 |
| C WITH UNFORMATTED RECORDS 02230413 |
| CX100 THE CARD IS REPLACED BY CONTENTS OF X-100 CARD 02240413 |
| CX101 THE CARD IS REPLACED BY CONTENTS OF X-101 CARD 02250413 |
| IPROG = 413 02260413 |
| IFILE = I10 02270413 |
| ITOTR = 214 02280413 |
| IRLGN = 80 02290413 |
| IRECN = 0 02300413 |
| IEOF = 0 02310413 |
| C 02320413 |
| C 02330413 |
| C 02340413 |
| C TESTS 001 THROUGH 013 OPEN A FILE CONNECTED FOR DIRECT ACCESS 02350413 |
| C AND WRITE 12 RECORDS INTO THE FILE. THESE TESTS TEST USE OF THE 02360413 |
| C ALLOWABLE FORMS OF THE OPEN AND WRITE STATEMENTS ON A FILE 02370413 |
| C CONNECTED FOR DIRECT ACCESS. THE WRITE STATEMENT IS USED WITH 02380413 |
| C THE I/O LIST ITEM AS A VARIABLE, ARRAY ELEMENT AND AN ARRAY. 02390413 |
| C THE PURPOSE OF TESTS 001 THROUGH 013 IS TO CHECK THE COMPILER'S02400413 |
| C ABILITY TO HANDLE THE VARIOUS STATEMENT CONSTRUCTS OF THE OPEN 02410413 |
| C AND WRITE STATEMENTS. LATER TESTS WITHIN THIS ROUTINE READ 02420413 |
| C AND CHECK THE RECORDS WHICH WERE CREATED. 02430413 |
| C THE VALUE IN IVCORR FOR TESTS 002 THROUGH 013 IS THE RECORD 02440413 |
| C NUMBER USED TO WRITE THE RECORD. 02450413 |
| C 02460413 |
| C 02470413 |
| C 02480413 |
| C **** FCVS PROGRAM 413 - TEST 001 **** 02490413 |
| C 02500413 |
| C 02510413 |
| C TEST 001 USES THE OPEN STATEMENT TO CONNECT A FILE FOR DIRECT 02520413 |
| C ACCESS. THIS IS THE FIRST ROUTINE TO USE AN OPEN STATEMENT. 02530413 |
| C 02540413 |
| C 02550413 |
| IVTNUM = 1 02560413 |
| IF (ICZERO) 30010, 0010, 30010 02570413 |
| 0010 CONTINUE 02580413 |
| IVCORR = 1 02590413 |
| IVCOMP = 0 02600413 |
| OPEN ( I10, ACCESS = 'DIRECT', RECL = 80 ) 02610413 |
| IVCOMP = 1 02620413 |
| 40010 IF (IVCOMP - 1) 20010, 10010, 20010 02630413 |
| 30010 IVDELE = IVDELE + 1 02640413 |
| WRITE (I02,80000) IVTNUM 02650413 |
| IF (ICZERO) 10010, 0021, 20010 02660413 |
| 10010 IVPASS = IVPASS + 1 02670413 |
| WRITE (I02,80002) IVTNUM 02680413 |
| GO TO 0021 02690413 |
| 20010 IVFAIL = IVFAIL + 1 02700413 |
| WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 02710413 |
| 0021 CONTINUE 02720413 |
| C 02730413 |
| C **** FCVS PROGRAM 413 - TEST 002 **** 02740413 |
| C 02750413 |
| C 02760413 |
| C TEST 002 USES A WRITE STATEMENT WHERE THE OUTPUT LIST ITEM 02770413 |
| C IS A VARIABLE OF INTEGER TYPE. 02780413 |
| C 02790413 |
| C 02800413 |
| IVTNUM = 2 02810413 |
| IF (ICZERO) 30020, 0020, 30020 02820413 |
| 0020 CONTINUE 02830413 |
| IRECN = 01 02840413 |
| IVCORR = 01 02850413 |
| WRITE (I10,REC=01) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 02860413 |
| 1 ICON21, ICON22, ICON31, ICON32, ICON33, ICON34, ICON55, ICON56 02870413 |
| IVCOMP = IRECN 02880413 |
| 40020 IF (IVCOMP - 01) 20020, 10020, 20020 02890413 |
| 30020 IVDELE = IVDELE + 1 02900413 |
| WRITE (I02,80000) IVTNUM 02910413 |
| IF (ICZERO) 10020, 0031, 20020 02920413 |
| 10020 IVPASS = IVPASS + 1 02930413 |
| WRITE (I02,80002) IVTNUM 02940413 |
| GO TO 0031 02950413 |
| 20020 IVFAIL = IVFAIL + 1 02960413 |
| WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 02970413 |
| 0031 CONTINUE 02980413 |
| C 02990413 |
| C **** FCVS PROGRAM 413 - TEST 003 **** 03000413 |
| C 03010413 |
| C 03020413 |
| C TEST 003 USES A WRITE STATEMENT WHERE THE OUTPUT LIST ITEM 03030413 |
| C IS A VARIABLE OF REAL TYPE. 03040413 |
| C 03050413 |
| C 03060413 |
| IVTNUM = 3 03070413 |
| IF (ICZERO) 30030, 0030, 30030 03080413 |
| 0030 CONTINUE 03090413 |
| IRECN = 02 03100413 |
| IVCORR = 02 03110413 |
| WRITE (I10,REC=02) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 03120413 |
| 1 RCON21, RCON22, RCON31, RCON32, RCON33, RCON34, RCON55, RCON56 03130413 |
| IVCOMP = IRECN 03140413 |
| 40030 IF (IVCOMP - 02) 20030, 10030, 20030 03150413 |
| 30030 IVDELE = IVDELE + 1 03160413 |
| WRITE (I02,80000) IVTNUM 03170413 |
| IF (ICZERO) 10030, 0041, 20030 03180413 |
| 10030 IVPASS = IVPASS + 1 03190413 |
| WRITE (I02,80002) IVTNUM 03200413 |
| GO TO 0041 03210413 |
| 20030 IVFAIL = IVFAIL + 1 03220413 |
| WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 03230413 |
| 0041 CONTINUE 03240413 |
| C 03250413 |
| C **** FCVS PROGRAM 413 - TEST 004 **** 03260413 |
| C 03270413 |
| C 03280413 |
| C TEST 004 USES A WRITE STATEMENT WHERE THE OUTPUT LIST ITEM 03290413 |
| C IS A VARIABLE OF LOGICAL TYPE. 03300413 |
| C 03310413 |
| C 03320413 |
| IVTNUM = 4 03330413 |
| IF (ICZERO) 30040, 0040, 30040 03340413 |
| 0040 CONTINUE 03350413 |
| IRECN = 03 03360413 |
| IVCORR = 03 03370413 |
| WRITE (I10,REC=03) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 03380413 |
| 1 LCONT1, LCONF2, LCONT3, LCONF4, LCONT5, LCONF6, LCONT7, LCONF803390413 |
| IVCOMP = IRECN 03400413 |
| 40040 IF (IVCOMP - 03) 20040, 10040, 20040 03410413 |
| 30040 IVDELE = IVDELE + 1 03420413 |
| WRITE (I02,80000) IVTNUM 03430413 |
| IF (ICZERO) 10040, 0051, 20040 03440413 |
| 10040 IVPASS = IVPASS + 1 03450413 |
| WRITE (I02,80002) IVTNUM 03460413 |
| GO TO 0051 03470413 |
| 20040 IVFAIL = IVFAIL + 1 03480413 |
| WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 03490413 |
| 0051 CONTINUE 03500413 |
| C 03510413 |
| C **** FCVS PROGRAM 413 - TEST 005 **** 03520413 |
| C 03530413 |
| C 03540413 |
| C TEST 005 USES A WRITE STATEMENT WHERE THE OUTPUT LIST ITEM 03550413 |
| C IS AN ARRAY ELEMENT OF INTEGER TYPE. ONE, TWO AND THREE 03560413 |
| C DIMENSION ARRAYS ARE USED. 03570413 |
| C 03580413 |
| C 03590413 |
| IVTNUM = 5 03600413 |
| IF (ICZERO) 30050, 0050, 30050 03610413 |
| 0050 CONTINUE 03620413 |
| IRECN = 04 03630413 |
| IVCORR = 04 03640413 |
| WRITE (I10,REC=04) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 03650413 |
| 1 IAON11(1), IAON11(2), IAON21(1,2), IAON21(2,2), IAON31(1,1,2), 03660413 |
| 2 IAON31(2,1,2), IAON11(7), IAON11(8) 03670413 |
| IVCOMP = IRECN 03680413 |
| 40050 IF (IVCOMP - 04) 20050, 10050, 20050 03690413 |
| 30050 IVDELE = IVDELE + 1 03700413 |
| WRITE (I02,80000) IVTNUM 03710413 |
| IF (ICZERO) 10050, 0061, 20050 03720413 |
| 10050 IVPASS = IVPASS + 1 03730413 |
| WRITE (I02,80002) IVTNUM 03740413 |
| GO TO 0061 03750413 |
| 20050 IVFAIL = IVFAIL + 1 03760413 |
| WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 03770413 |
| 0061 CONTINUE 03780413 |
| C 03790413 |
| C **** FCVS PROGRAM 413 - TEST 006 **** 03800413 |
| C 03810413 |
| C 03820413 |
| C TEST 006 USES A WRITE STATEMENT WHERE THE OUTPUT LIST ITEM 03830413 |
| C IS AN ARRAY ELEMENT OF REAL TYPE. ONE, TWO AND THREE 03840413 |
| C DIMENSION ARRAYS ARE USED. 03850413 |
| C 03860413 |
| C 03870413 |
| IVTNUM = 6 03880413 |
| IF (ICZERO) 30060, 0060, 30060 03890413 |
| 0060 CONTINUE 03900413 |
| IRECN = 05 03910413 |
| IVCORR = 05 03920413 |
| WRITE (I10,REC=05) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 03930413 |
| 1 RAON11(1), RAON11(2), RAON21(1,2), RAON21(2,2), RAON31(1,1,2), 03940413 |
| 2 RAON31(2,1,2), RAON11(7), RAON11(8) 03950413 |
| IVCOMP = IRECN 03960413 |
| 40060 IF (IVCOMP - 05) 20060, 10060, 20060 03970413 |
| 30060 IVDELE = IVDELE + 1 03980413 |
| WRITE (I02,80000) IVTNUM 03990413 |
| IF (ICZERO) 10060, 0071, 20060 04000413 |
| 10060 IVPASS = IVPASS + 1 04010413 |
| WRITE (I02,80002) IVTNUM 04020413 |
| GO TO 0071 04030413 |
| 20060 IVFAIL = IVFAIL + 1 04040413 |
| WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 04050413 |
| 0071 CONTINUE 04060413 |
| C 04070413 |
| C **** FCVS PROGRAM 413 - TEST 007 **** 04080413 |
| C 04090413 |
| C 04100413 |
| C TEST 007 USES A WRITE STATEMENT WHERE THE OUTPUT LIST ITEM 04110413 |
| C IS AN ARRAY ELEMENT OF LOGICAL TYPE. ONE, TWO AND THREE 04120413 |
| C DIMENSION ARRAYS ARE USED. 04130413 |
| C 04140413 |
| C 04150413 |
| IVTNUM = 7 04160413 |
| IF (ICZERO) 30070, 0070, 30070 04170413 |
| 0070 CONTINUE 04180413 |
| IRECN = 06 04190413 |
| IVCORR = 06 04200413 |
| WRITE (I10,REC=06) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 04210413 |
| 1 LAON11(1), LAON11(2), LAON21(1,2), LAON21(2,2), LAON31(1,1,2), 04220413 |
| 2 LAON31(2,1,2), LAON11(7), LAON11(8) 04230413 |
| IVCOMP = IRECN 04240413 |
| 40070 IF (IVCOMP - 06) 20070, 10070, 20070 04250413 |
| 30070 IVDELE = IVDELE + 1 04260413 |
| WRITE (I02,80000) IVTNUM 04270413 |
| IF (ICZERO) 10070, 0081, 20070 04280413 |
| 10070 IVPASS = IVPASS + 1 04290413 |
| WRITE (I02,80002) IVTNUM 04300413 |
| GO TO 0081 04310413 |
| 20070 IVFAIL = IVFAIL + 1 04320413 |
| WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 04330413 |
| 0081 CONTINUE 04340413 |
| C 04350413 |
| C **** FCVS PROGRAM 413 - TEST 008 **** 04360413 |
| C 04370413 |
| C 04380413 |
| C TEST 008 USES A WRITE STATEMENT WHERE THE OUTPUT LIST ITEM 04390413 |
| C IS AN ARRAY OF INTEGER TYPE. 04400413 |
| C 04410413 |
| C 04420413 |
| IVTNUM = 8 04430413 |
| IF (ICZERO) 30080, 0080, 30080 04440413 |
| 0080 CONTINUE 04450413 |
| IRECN = 07 04460413 |
| IVCORR = 07 04470413 |
| WRITE (I10,REC=07) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 04480413 |
| 1 IAON31 04490413 |
| IVCOMP = IRECN 04500413 |
| 40080 IF (IVCOMP - 07) 20080, 10080, 20080 04510413 |
| 30080 IVDELE = IVDELE + 1 04520413 |
| WRITE (I02,80000) IVTNUM 04530413 |
| IF (ICZERO) 10080, 0091, 20080 04540413 |
| 10080 IVPASS = IVPASS + 1 04550413 |
| WRITE (I02,80002) IVTNUM 04560413 |
| GO TO 0091 04570413 |
| 20080 IVFAIL = IVFAIL + 1 04580413 |
| WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 04590413 |
| 0091 CONTINUE 04600413 |
| C 04610413 |
| C **** FCVS PROGRAM 413 - TEST 009 **** 04620413 |
| C 04630413 |
| C 04640413 |
| C TEST 009 USES A WRITE STATEMENT WHERE THE OUTPUT LIST ITEM 04650413 |
| C IS AN ARRAY OF REAL TYPE. 04660413 |
| C 04670413 |
| C 04680413 |
| IVTNUM = 9 04690413 |
| IF (ICZERO) 30090, 0090, 30090 04700413 |
| 0090 CONTINUE 04710413 |
| IRECN = 08 04720413 |
| IVCORR = 08 04730413 |
| WRITE (I10,REC=08) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 04740413 |
| 1 RAON31 04750413 |
| IVCOMP = IRECN 04760413 |
| 40090 IF (IVCOMP - 08) 20090, 10090, 20090 04770413 |
| 30090 IVDELE = IVDELE + 1 04780413 |
| WRITE (I02,80000) IVTNUM 04790413 |
| IF (ICZERO) 10090, 0101, 20090 04800413 |
| 10090 IVPASS = IVPASS + 1 04810413 |
| WRITE (I02,80002) IVTNUM 04820413 |
| GO TO 0101 04830413 |
| 20090 IVFAIL = IVFAIL + 1 04840413 |
| WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 04850413 |
| 0101 CONTINUE 04860413 |
| C 04870413 |
| C **** FCVS PROGRAM 413 - TEST 010 **** 04880413 |
| C 04890413 |
| C 04900413 |
| C TEST 010 USES A WRITE STATEMENT WHERE THE OUTPUT LIST ITEM 04910413 |
| C IS AN ARRAY OF LOGICAL TYPE. 04920413 |
| C 04930413 |
| C 04940413 |
| IVTNUM = 10 04950413 |
| IF (ICZERO) 30100, 0100, 30100 04960413 |
| 0100 CONTINUE 04970413 |
| IRECN = 09 04980413 |
| IVCORR = 09 04990413 |
| WRITE (I10,REC=09) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 05000413 |
| 1 LAON31 05010413 |
| IVCOMP = IRECN 05020413 |
| 40100 IF (IVCOMP - 09) 20100, 10100, 20100 05030413 |
| 30100 IVDELE = IVDELE + 1 05040413 |
| WRITE (I02,80000) IVTNUM 05050413 |
| IF (ICZERO) 10100, 0111, 20100 05060413 |
| 10100 IVPASS = IVPASS + 1 05070413 |
| WRITE (I02,80002) IVTNUM 05080413 |
| GO TO 0111 05090413 |
| 20100 IVFAIL = IVFAIL + 1 05100413 |
| WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 05110413 |
| 0111 CONTINUE 05120413 |
| C 05130413 |
| C **** FCVS PROGRAM 413 - TEST 011 **** 05140413 |
| C 05150413 |
| C 05160413 |
| C TEST 011 USES A WRITE STATEMENT WHERE THE OUTPUT LIST ITEM 05170413 |
| C IS AN IMPLIED-DO WITH AN ITEM OF INTEGER TYPE. 05180413 |
| C THE FIELD VALUES ARE WRITTEN IN MIXED ORDER VIS-A-VIS THE 05190413 |
| C ELEMENT SEQUENCE OF ARRAY IAON31. THE SEQUENCE OF VALUES WRITTEN 05200413 |
| C IN THE RECORD ARE 11, 512, 777, -32767, -11, -512, -777, 32767. 05210413 |
| C 05220413 |
| C 05230413 |
| IVTNUM = 11 05240413 |
| IF (ICZERO) 30110, 0110, 30110 05250413 |
| 0110 CONTINUE 05260413 |
| IRECN = 10 05270413 |
| IVCORR = 10 05280413 |
| WRITE (I10,REC=10) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 05290413 |
| 1 (((IAON31 (J,K,I), I=1,2), K=1,2), J=1,2) 05300413 |
| IVCOMP = IRECN 05310413 |
| 40110 IF (IVCOMP - 10) 20110, 10110, 20110 05320413 |
| 30110 IVDELE = IVDELE + 1 05330413 |
| WRITE (I02,80000) IVTNUM 05340413 |
| IF (ICZERO) 10110, 0121, 20110 05350413 |
| 10110 IVPASS = IVPASS + 1 05360413 |
| WRITE (I02,80002) IVTNUM 05370413 |
| GO TO 0121 05380413 |
| 20110 IVFAIL = IVFAIL + 1 05390413 |
| WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 05400413 |
| 0121 CONTINUE 05410413 |
| C 05420413 |
| C **** FCVS PROGRAM 413 - TEST 012 **** 05430413 |
| C 05440413 |
| C 05450413 |
| C TEST 012 USES A WRITE STATEMENT WHERE THE OUTPUT LIST ITEM 05460413 |
| C IS AN IMPLIED-DO WITH AN ITEM OF REAL TYPE. THE FIELD VALUES 05470413 |
| C (IN FIELD POSITION ORDER) WRITTEN IN THE RECORD ARE 11., -11., 05480413 |
| C 7.77, -7.77, .512, -.512, -32767., 32767. 05490413 |
| C 05500413 |
| C 05510413 |
| IVTNUM = 12 05520413 |
| IF (ICZERO) 30120, 0120, 30120 05530413 |
| 0120 CONTINUE 05540413 |
| IRECN = 11 05550413 |
| IVCORR = 11 05560413 |
| WRITE (I10,REC=11) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 05570413 |
| 1 (((RAON31 (J,K,I), J=1,2), K=1,2), I=1,2) 05580413 |
| IVCOMP = IRECN 05590413 |
| 40120 IF (IVCOMP - 11) 20120, 10120, 20120 05600413 |
| 30120 IVDELE = IVDELE + 1 05610413 |
| WRITE (I02,80000) IVTNUM 05620413 |
| IF (ICZERO) 10120, 0131, 20120 05630413 |
| 10120 IVPASS = IVPASS + 1 05640413 |
| WRITE (I02,80002) IVTNUM 05650413 |
| GO TO 0131 05660413 |
| 20120 IVFAIL = IVFAIL + 1 05670413 |
| WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 05680413 |
| 0131 CONTINUE 05690413 |
| C 05700413 |
| C **** FCVS PROGRAM 413 - TEST 013 **** 05710413 |
| C 05720413 |
| C 05730413 |
| C TEST 013 USES A WRITE STATEMENT WHERE THE OUTPUT LIST ITEM 05740413 |
| C IS AN IMPLIED-DO WITH AN ITEM OF LOGICAL TYPE. 05750413 |
| C THE FIELD VALUES ARE WRITTEN IN MIXED ORDER VIS-A-VIS THE 05760413 |
| C ELEMENT SEQUENCE OF ARRAY LAON31. THE SEQUENCE OF VALUES WRITTEN 05770413 |
| C IN THE RECORD ARE .TRUE., .TRUE., .FALSE., .FALSE., .TRUE., .TRUE.05780413 |
| C .FALSE, .FALSE. 05790413 |
| C 05800413 |
| C 05810413 |
| IVTNUM = 13 05820413 |
| IF (ICZERO) 30130, 0130, 30130 05830413 |
| 0130 CONTINUE 05840413 |
| IRECN = 12 05850413 |
| IVCORR = 12 05860413 |
| WRITE (I10,REC=12) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 05870413 |
| 1 (((LAON31 (J,K,I), K=1,2), J=1,2), I=1,2) 05880413 |
| IVCOMP = IRECN 05890413 |
| 40130 IF (IVCOMP - 12) 20130, 10130, 20130 05900413 |
| 30130 IVDELE = IVDELE + 1 05910413 |
| WRITE (I02,80000) IVTNUM 05920413 |
| IF (ICZERO) 10130, 0141, 20130 05930413 |
| 10130 IVPASS = IVPASS + 1 05940413 |
| WRITE (I02,80002) IVTNUM 05950413 |
| GO TO 0141 05960413 |
| 20130 IVFAIL = IVFAIL + 1 05970413 |
| WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 05980413 |
| 0141 CONTINUE 05990413 |
| C 06000413 |
| C 06010413 |
| C TESTS 14 AND 15 TEST THE WRITE WITHOUT OUTPUT LIST ITEMS. 06020413 |
| C 06030413 |
| C 06040413 |
| C 06050413 |
| C 06060413 |
| C **** FCVS PROGRAM 413 - TEST 014 **** 06070413 |
| C 06080413 |
| C 06090413 |
| C TEST 014 USES A WRITE STATEMENT WITHOUT ANY OUTPUT LIST ITEMS. 06100413 |
| C THE OUTPUT LIST ITEMS ARE OPTIONAL AND THIS TEST USES THIS FORM 06110413 |
| C TO ESTABLISH A RECORD NUMBER FOR A RECORD IN THE FILE. 06120413 |
| C ALSO THE LENGTH OF AN UNFORMATTED RECORD MAY BE ZERO. 06130413 |
| C 06140413 |
| C SEE SECTIONS 12.1.2, UNFORMATTED RECORDS 06150413 |
| C 12.2.4.2 (5) AND (6), DIRECT ACCESS 06160413 |
| C 12.8, READ, WRITE AND PRINT STATEMENTS 06170413 |
| C 06180413 |
| C 06190413 |
| IVTNUM = 14 06200413 |
| IF (ICZERO) 30140, 0140, 30140 06210413 |
| 0140 CONTINUE 06220413 |
| IRECN = 13 06230413 |
| IVCORR = 13 06240413 |
| WRITE (I10,REC=13) 06250413 |
| IVCOMP = IRECN 06260413 |
| 40140 IF (IVCOMP - 13) 20140, 10140, 20140 06270413 |
| 30140 IVDELE = IVDELE + 1 06280413 |
| WRITE (I02,80000) IVTNUM 06290413 |
| IF (ICZERO) 10140, 0151, 20140 06300413 |
| 10140 IVPASS = IVPASS + 1 06310413 |
| WRITE (I02,80002) IVTNUM 06320413 |
| GO TO 0151 06330413 |
| 20140 IVFAIL = IVFAIL + 1 06340413 |
| WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 06350413 |
| 0151 CONTINUE 06360413 |
| C 06370413 |
| C **** FCVS PROGRAM 413 - TEST 015 **** 06380413 |
| C 06390413 |
| C 06400413 |
| C TEST 015 IS SIMILAR TO TEST 014 ABOVE EXCEPT THE RN OF THE 06410413 |
| C RECORD SPECIFIER (REC = RN) IS AN INTEGER VARIABLE. 06420413 |
| C 06430413 |
| C 06440413 |
| IVTNUM = 15 06450413 |
| IF (ICZERO) 30150, 0150, 30150 06460413 |
| 0150 CONTINUE 06470413 |
| IRECN = 14 06480413 |
| IVCORR = 14 06490413 |
| IREC = 14 06500413 |
| WRITE (I10,REC = IREC) 06510413 |
| IVCOMP = IRECN 06520413 |
| 40150 IF (IVCOMP - 14) 20150, 10150, 20150 06530413 |
| 30150 IVDELE = IVDELE + 1 06540413 |
| WRITE (I02,80000) IVTNUM 06550413 |
| IF (ICZERO) 10150, 0161, 20150 06560413 |
| 10150 IVPASS = IVPASS + 1 06570413 |
| WRITE (I02,80002) IVTNUM 06580413 |
| GO TO 0161 06590413 |
| 20150 IVFAIL = IVFAIL + 1 06600413 |
| WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 06610413 |
| 0161 CONTINUE 06620413 |
| C 06630413 |
| C 06640413 |
| C TESTS 16 AND 17 VERIFY THAT RECORDS MAY BE CREATED IN 06650413 |
| C OTHER THAN SEQUENTIAL ORDER. ALSO THAT A VARIABLE MAY BY USED 06660413 |
| C AS THE OPERAND OF THE REC SPECIFIER FOR A WRITE STATEMENT. 06670413 |
| C 06680413 |
| C 06690413 |
| C 06700413 |
| C **** FCVS PROGRAM 413 - TEST 016 **** 06710413 |
| C 06720413 |
| C 06730413 |
| C TEST 016 TESTS USE OF THE REC SPECIFIER WHERE THE OPERAND 06740413 |
| C IS A VARIABLE. THIS TEST IS SIMILAR TO TEST 15 EXCEPT THE WRITE 06750413 |
| C STATEMENT CONTAINS OUTPUT LIST ITEMS. ONE HUNDRED RECORDS ARE 06760413 |
| C WRITTEN BY INCREMENTING THE VARIABLE BY 2 FOR EACH WRITE. TEST 06770413 |
| C 032 READS THE RECORDS WRITTEN BY THIS METHOD. 06780413 |
| C 06790413 |
| C 06800413 |
| IVTNUM = 16 06810413 |
| IF (ICZERO) 30160, 0160, 30160 06820413 |
| 0160 CONTINUE 06830413 |
| IRECN = 13 06840413 |
| IREC = 13 06850413 |
| DO 4132 I = 1,100 06860413 |
| IREC = IREC + 2 06870413 |
| IRECN = IRECN + 2 06880413 |
| WRITE (I10, REC = IREC) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 06890413 |
| 1 ICON21, ICON22, ICON31, ICON32, ICON33, ICON34, ICON55, ICON56 06900413 |
| 4132 CONTINUE 06910413 |
| IVCORR = 100 06920413 |
| IVCOMP = IREC - 113 06930413 |
| 40160 IF (IVCOMP - 100) 20160, 10160, 20160 06940413 |
| 30160 IVDELE = IVDELE + 1 06950413 |
| WRITE (I02,80000) IVTNUM 06960413 |
| IF (ICZERO) 10160, 0171, 20160 06970413 |
| 10160 IVPASS = IVPASS + 1 06980413 |
| WRITE (I02,80002) IVTNUM 06990413 |
| GO TO 0171 07000413 |
| 20160 IVFAIL = IVFAIL + 1 07010413 |
| WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 07020413 |
| 0171 CONTINUE 07030413 |
| C 07040413 |
| C **** FCVS PROGRAM 413 - TEST 017 **** 07050413 |
| C 07060413 |
| C 07070413 |
| C TEST 17 IS SIMILAR TO TEST 16 EXCEPT THE RECORD IS 07080413 |
| C WRITTEN IN REVERSE ORDER OF RECORD NUMBER. ONE HUNDERD RECORDS 07090413 |
| C ARE WRITTEN AND THE VARIABLE OF THE REC SPECIFIER IS DECREMENTED 07100413 |
| C BY TWO FOR EACH WRITE. 07110413 |
| C 07120413 |
| C 07130413 |
| IVTNUM = 17 07140413 |
| IF (ICZERO) 30170, 0170, 30170 07150413 |
| 0170 CONTINUE 07160413 |
| IRECN = 216 07170413 |
| IREC = 216 07180413 |
| IVCOMP = 0 07190413 |
| DO 4133 I=1,100 07200413 |
| IREC = IREC - 2 07210413 |
| IRECN = IRECN - 2 07220413 |
| WRITE (I10, REC = IREC) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 07230413 |
| 1 ICON21, ICON22, ICON31, ICON32, ICON33, ICON34, ICON55, ICON56 07240413 |
| IVCOMP = IVCOMP + 1 07250413 |
| 4133 CONTINUE 07260413 |
| IVCORR = 100 07270413 |
| 40170 IF (IVCOMP - 100) 20170, 10170, 20170 07280413 |
| 30170 IVDELE = IVDELE + 1 07290413 |
| WRITE (I02,80000) IVTNUM 07300413 |
| IF (ICZERO) 10170, 0181, 20170 07310413 |
| 10170 IVPASS = IVPASS + 1 07320413 |
| WRITE (I02,80002) IVTNUM 07330413 |
| GO TO 0181 07340413 |
| 20170 IVFAIL = IVFAIL + 1 07350413 |
| WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 07360413 |
| 0181 CONTINUE 07370413 |
| C 07380413 |
| C 07390413 |
| C TESTS 018 THROUGH 030 READ AND CHECK THE RECORDS CREATED IN 07400413 |
| C TESTS 002 THROUGH 014. EACH OF THE TESTS IN THIS SET IS CHECKING 07410413 |
| C TWO THINGS. FIRST, THAT THE READ STATEMENT CONSTRUCT IS ACCEPTED 07420413 |
| C BY THE COMPILER AND SECOND THAT THE RECORDS CREATED IN TESTS 002 07430413 |
| C THROUGH 013 AND READ IN THESE TESTS CAN GIVE PREDICTIBLE VALUES. 07440413 |
| C THE READ STATEMENT IS USED WITH THE I/O LIST ITEM AS A VARIABLE, 07450413 |
| C AN ARRAY ELEMENT AND AN ARRAY. 07460413 |
| C 07470413 |
| C 07480413 |
| C 07490413 |
| C **** FCVS PROGRAM 413 - TEST 018 **** 07500413 |
| C 07510413 |
| C 07520413 |
| C TEST 018 USES A READ STATEMENT WHERE THE INPUT LIST ITEM IS A 07530413 |
| C VARIABLE OF INTEGER TYPE. 07540413 |
| C 07550413 |
| C 07560413 |
| IVTNUM = 18 07570413 |
| IF (ICZERO) 30180, 0180, 30180 07580413 |
| 0180 CONTINUE 07590413 |
| IVON22 = 0 07600413 |
| IVON56 = 0 07610413 |
| IVCORR = 30 07620413 |
| IVCOMP = 1 07630413 |
| READ (I10, REC = 01) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 07640413 |
| 1 IVON21, IVON22, IVON31, IVON32, IVON33, IVON34, IVON55, IVON56 07650413 |
| IF (IRECN .EQ. 01) IVCOMP = IVCOMP * 2 07660413 |
| IF (IVON22 .EQ. -11) IVCOMP = IVCOMP * 3 07670413 |
| IF (IVON56 .EQ. 32767) IVCOMP = IVCOMP * 5 07680413 |
| 40180 IF (IVCOMP - 30) 20180, 10180, 20180 07690413 |
| 30180 IVDELE = IVDELE + 1 07700413 |
| WRITE (I02,80000) IVTNUM 07710413 |
| IF (ICZERO) 10180, 0191, 20180 07720413 |
| 10180 IVPASS = IVPASS + 1 07730413 |
| WRITE (I02,80002) IVTNUM 07740413 |
| GO TO 0191 07750413 |
| 20180 IVFAIL = IVFAIL + 1 07760413 |
| WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 07770413 |
| 0191 CONTINUE 07780413 |
| C 07790413 |
| C **** FCVS PROGRAM 413 - TEST 019 **** 07800413 |
| C 07810413 |
| C 07820413 |
| C TEST 019 USES A READ STATEMENT WHERE THE INPUT LIST ITEM IS A 07830413 |
| C VARIABLE OF REAL TYPE. 07840413 |
| C 07850413 |
| C 07860413 |
| IVTNUM = 19 07870413 |
| IF (ICZERO) 30190, 0190, 30190 07880413 |
| 0190 CONTINUE 07890413 |
| RVON22 = 0.0 07900413 |
| RVON31 = 0.0 07910413 |
| IVCORR = 30 07920413 |
| IVCOMP = 1 07930413 |
| READ (I10, REC = 02) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 07940413 |
| 1 RVON21, RVON22, RVON31, RVON32, RVON33, RVON34, RVON55, RVON56 07950413 |
| IF (IRECN .EQ. 02) IVCOMP = IVCOMP * 2 07960413 |
| IF (RVON22 .EQ. -11.) IVCOMP = IVCOMP * 3 07970413 |
| IF (RVON31 .EQ. 7.77) IVCOMP = IVCOMP * 5 07980413 |
| 40190 IF (IVCOMP - 30) 20190, 10190, 20190 07990413 |
| 30190 IVDELE = IVDELE + 1 08000413 |
| WRITE (I02,80000) IVTNUM 08010413 |
| IF (ICZERO) 10190, 0201, 20190 08020413 |
| 10190 IVPASS = IVPASS + 1 08030413 |
| WRITE (I02,80002) IVTNUM 08040413 |
| GO TO 0201 08050413 |
| 20190 IVFAIL = IVFAIL + 1 08060413 |
| WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 08070413 |
| 0201 CONTINUE 08080413 |
| C 08090413 |
| C **** FCVS PROGRAM 413 - TEST 020 **** 08100413 |
| C 08110413 |
| C 08120413 |
| C TEST 020 USES A READ STATEMENT WHERE THE INPUT LIST ITEM IS A 08130413 |
| C VARIABLE OF LOGICAL TYPE. 08140413 |
| C 08150413 |
| C 08160413 |
| IVTNUM = 20 08170413 |
| IF (ICZERO) 30200, 0200, 30200 08180413 |
| 0200 CONTINUE 08190413 |
| LVONT1 = .FALSE. 08200413 |
| LVONF6 = .TRUE. 08210413 |
| IVCORR = 30 08220413 |
| IVCOMP = 1 08230413 |
| READ (I10, REC = 03) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 08240413 |
| 1 LVONT1, LVONF2, LVONT3, LVONF4, LVONT5, LVONF6, LVONT7, LVONF808250413 |
| IF (IRECN .EQ. 03) IVCOMP = IVCOMP * 2 08260413 |
| IF (.NOT. LVONF6) IVCOMP = IVCOMP * 3 08270413 |
| IF (LVONT1) IVCOMP = IVCOMP * 5 08280413 |
| 40200 IF (IVCOMP - 30) 20200, 10200, 20200 08290413 |
| 30200 IVDELE = IVDELE + 1 08300413 |
| WRITE (I02,80000) IVTNUM 08310413 |
| IF (ICZERO) 10200, 0211, 20200 08320413 |
| 10200 IVPASS = IVPASS + 1 08330413 |
| WRITE (I02,80002) IVTNUM 08340413 |
| GO TO 0211 08350413 |
| 20200 IVFAIL = IVFAIL + 1 08360413 |
| WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 08370413 |
| 0211 CONTINUE 08380413 |
| C 08390413 |
| C **** FCVS PROGRAM 413 - TEST 021 **** 08400413 |
| C 08410413 |
| C 08420413 |
| C TEST 021 USES A READ STATEMENT WHERE THE INPUT LIST ITEM IS A 08430413 |
| C ARRAY ELEMENT OF INTEGER TYPE. ONE, TWO, AND THREE 08440413 |
| C DIMENSION ARRAYS ARE USED. 08450413 |
| C 08460413 |
| C 08470413 |
| IVTNUM = 21 08480413 |
| IF (ICZERO) 30210, 0210, 30210 08490413 |
| 0210 CONTINUE 08500413 |
| IAON12(2) = 0 08510413 |
| IAON12(8) = 0 08520413 |
| IVCORR = 30 08530413 |
| IVCOMP = 1 08540413 |
| READ (I10, REC = 04) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 08550413 |
| 1 IAON12(1), IAON12(2), IAON22(1,2), IAON22(2,2), IAON32(1,1,2), 08560413 |
| 2 IAON32(2,1,2), IAON12(7), IAON12(8) 08570413 |
| IF (IRECN .EQ. 04) IVCOMP = IVCOMP * 2 08580413 |
| IF (IAON12(2) .EQ. -11) IVCOMP = IVCOMP * 3 08590413 |
| IF (IAON12(8) .EQ. 32767) IVCOMP = IVCOMP * 5 08600413 |
| C 08610413 |
| C THE ABOVE 3 IF STATEMENTS CHECK THE RECORD NUMBER, A NEGATIVE 08620413 |
| C FIELD VALUE AND A POSITIVE FIELD VALUE. 08630413 |
| C 08640413 |
| 40210 IF (IVCOMP - 30) 20210, 10210, 20210 08650413 |
| 30210 IVDELE = IVDELE + 1 08660413 |
| WRITE (I02,80000) IVTNUM 08670413 |
| IF (ICZERO) 10210, 0221, 20210 08680413 |
| 10210 IVPASS = IVPASS + 1 08690413 |
| WRITE (I02,80002) IVTNUM 08700413 |
| GO TO 0221 08710413 |
| 20210 IVFAIL = IVFAIL + 1 08720413 |
| WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 08730413 |
| 0221 CONTINUE 08740413 |
| C 08750413 |
| C **** FCVS PROGRAM 413 - TEST 022 **** 08760413 |
| C 08770413 |
| C 08780413 |
| C TEST 022 USES A READ STATEMENT WHERE THE INPUT LIST ITEM IS A 08790413 |
| C ARRAY ELEMENT OF REAL TYPE. ONE, TWO, AND THREE 08800413 |
| C DIMENSION ARRAYS ARE USED. 08810413 |
| C 08820413 |
| C 08830413 |
| IVTNUM = 22 08840413 |
| IF (ICZERO) 30220, 0220, 30220 08850413 |
| 0220 CONTINUE 08860413 |
| RAON22(2,2) = 0.0 08870413 |
| RAON32(1,1,2) = 0.0 08880413 |
| IVCORR = 30 08890413 |
| IVCOMP = 1 08900413 |
| READ (I10, REC = 05) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 08910413 |
| 1 RAON12(1), RAON12(2), RAON22(1,2), RAON22(2,2), RAON32(1,1,2), 08920413 |
| 2 RAON32(2,1,2), RAON12(7), RAON12(8) 08930413 |
| IF (IRECN .EQ. 05) IVCOMP = IVCOMP * 2 08940413 |
| IF (RAON22(2,2) .EQ. -7.77) IVCOMP = IVCOMP * 3 08950413 |
| IF (RAON32(1,1,2) .EQ. .512 ) IVCOMP = IVCOMP * 5 08960413 |
| C 08970413 |
| C THE ABOVE 3 IF STATEMENTS CHECK THE RECORD NUMBER, A NEGATIVE 08980413 |
| C FIELD VALUE AND A POSITIVE FIELD VALUE. 08990413 |
| C 09000413 |
| 40220 IF (IVCOMP - 30) 20220, 10220, 20220 09010413 |
| 30220 IVDELE = IVDELE + 1 09020413 |
| WRITE (I02,80000) IVTNUM 09030413 |
| IF (ICZERO) 10220, 0231, 20220 09040413 |
| 10220 IVPASS = IVPASS + 1 09050413 |
| WRITE (I02,80002) IVTNUM 09060413 |
| GO TO 0231 09070413 |
| 20220 IVFAIL = IVFAIL + 1 09080413 |
| WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 09090413 |
| 0231 CONTINUE 09100413 |
| C 09110413 |
| C **** FCVS PROGRAM 413 - TEST 023 **** 09120413 |
| C 09130413 |
| C 09140413 |
| C TEST 023 USES A READ STATEMENT WHERE THE INPUT LIST ITEM IS A 09150413 |
| C ARRAY ELEMENT OF LOGICAL TYPE. ONE, TWO, AND THREE 09160413 |
| C DIMENSION ARRAYS ARE USED. 09170413 |
| C 09180413 |
| C 09190413 |
| IVTNUM = 23 09200413 |
| IF (ICZERO) 30230, 0230, 30230 09210413 |
| 0230 CONTINUE 09220413 |
| LAON12(1) = .FALSE. 09230413 |
| LAON32(2,1,2) = .TRUE. 09240413 |
| IVCORR = 30 09250413 |
| IVCOMP = 1 09260413 |
| READ (I10, REC = 06) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 09270413 |
| 1 LAON12(1), LAON12(2), LAON22(1,2), LAON22(2,2), LAON32(1,1,2), 09280413 |
| 2 LAON32(2,1,2), LAON12(7), LAON12(8) 09290413 |
| IF (IRECN .EQ. 06) IVCOMP = IVCOMP * 2 09300413 |
| IF (LAON12(1)) IVCOMP = IVCOMP * 3 09310413 |
| IF (.NOT. LAON32(2,1,2)) IVCOMP = IVCOMP * 5 09320413 |
| 40230 IF (IVCOMP - 30) 20230, 10230, 20230 09330413 |
| 30230 IVDELE = IVDELE + 1 09340413 |
| WRITE (I02,80000) IVTNUM 09350413 |
| IF (ICZERO) 10230, 0241, 20230 09360413 |
| 10230 IVPASS = IVPASS + 1 09370413 |
| WRITE (I02,80002) IVTNUM 09380413 |
| GO TO 0241 09390413 |
| 20230 IVFAIL = IVFAIL + 1 09400413 |
| WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 09410413 |
| 0241 CONTINUE 09420413 |
| C 09430413 |
| C **** FCVS PROGRAM 413 - TEST 024 **** 09440413 |
| C 09450413 |
| C 09460413 |
| C TEST 024 USES A READ STATEMENT WHERE THE INPUT LIST ITEM IS A 09470413 |
| C ARRAY OF INTEGER TYPE. 09480413 |
| C 09490413 |
| C 09500413 |
| IVTNUM = 24 09510413 |
| IF (ICZERO) 30240, 0240, 30240 09520413 |
| 0240 CONTINUE 09530413 |
| IAON32(2,1,1) = 0 09540413 |
| IAON32(2,2,2) = 0 09550413 |
| IVCORR = 30 09560413 |
| IVCOMP = 1 09570413 |
| READ (I10, REC = 07) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 09580413 |
| 1 IAON32 09590413 |
| IF (IRECN .EQ. 07) IVCOMP = IVCOMP * 2 09600413 |
| IF (IAON32(2,1,1) .EQ. -11) IVCOMP = IVCOMP * 3 09610413 |
| IF (IAON32(2,2,2) .EQ. 32767) IVCOMP = IVCOMP * 5 09620413 |
| C 09630413 |
| C THE ABOVE 3 IF STATEMENTS CHECK THE RECORD NUMBER, A NEGATIVE 09640413 |
| C FIELD VALUE AND A POSITIVE FIELD VALUE. 09650413 |
| C 09660413 |
| 40240 IF (IVCOMP - 30) 20240, 10240, 20240 09670413 |
| 30240 IVDELE = IVDELE + 1 09680413 |
| WRITE (I02,80000) IVTNUM 09690413 |
| IF (ICZERO) 10240, 0251, 20240 09700413 |
| 10240 IVPASS = IVPASS + 1 09710413 |
| WRITE (I02,80002) IVTNUM 09720413 |
| GO TO 0251 09730413 |
| 20240 IVFAIL = IVFAIL + 1 09740413 |
| WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 09750413 |
| 0251 CONTINUE 09760413 |
| C 09770413 |
| C **** FCVS PROGRAM 413 - TEST 025 **** 09780413 |
| C 09790413 |
| C 09800413 |
| C TEST 025 USES A READ STATEMENT WHERE THE INPUT LIST ITEM IS A 09810413 |
| C ARRAY OF REAL TYPE. 09820413 |
| C 09830413 |
| C 09840413 |
| IVTNUM = 25 09850413 |
| IF (ICZERO) 30250, 0250, 30250 09860413 |
| 0250 CONTINUE 09870413 |
| RAON32(2,1,1) = 0.0 09880413 |
| RAON32(2,2,2) = 0.0 09890413 |
| IVCORR = 30 09900413 |
| IVCOMP = 1 09910413 |
| READ (I10, REC = 08) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 09920413 |
| 1 RAON32 09930413 |
| IF (IRECN .EQ. 08) IVCOMP = IVCOMP * 2 09940413 |
| IF (RAON32(2,1,1) .EQ. -11.) IVCOMP = IVCOMP * 3 09950413 |
| IF (RAON32(2,2,2) .EQ. 32767.) IVCOMP = IVCOMP * 5 09960413 |
| C 09970413 |
| C THE ABOVE 3 IF STATEMENTS CHECK THE RECORD NUMBER, A NEGATIVE 09980413 |
| C FIELD VALUE AND A POSITIVE FIELD VALUE. 09990413 |
| C 10000413 |
| 40250 IF (IVCOMP - 30) 20250, 10250, 20250 10010413 |
| 30250 IVDELE = IVDELE + 1 10020413 |
| WRITE (I02,80000) IVTNUM 10030413 |
| IF (ICZERO) 10250, 0261, 20250 10040413 |
| 10250 IVPASS = IVPASS + 1 10050413 |
| WRITE (I02,80002) IVTNUM 10060413 |
| GO TO 0261 10070413 |
| 20250 IVFAIL = IVFAIL + 1 10080413 |
| WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 10090413 |
| 0261 CONTINUE 10100413 |
| C 10110413 |
| C **** FCVS PROGRAM 413 - TEST 026 **** 10120413 |
| C 10130413 |
| C 10140413 |
| C TEST 026 USES A READ STATEMENT WHERE THE INPUT LIST ITEM IS A 10150413 |
| C ARRAY OF LOGICAL TYPE. 10160413 |
| C 10170413 |
| C 10180413 |
| IVTNUM = 26 10190413 |
| IF (ICZERO) 30260, 0260, 30260 10200413 |
| 0260 CONTINUE 10210413 |
| LAON32(1,1,1) = .FALSE. 10220413 |
| LAON32(2,2,2) = .TRUE. 10230413 |
| IVCORR = 30 10240413 |
| IVCOMP = 1 10250413 |
| READ (I10, REC = 09) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 10260413 |
| 1 LAON32 10270413 |
| IF (IRECN .EQ. 09) IVCOMP = IVCOMP * 2 10280413 |
| IF (LAON32(1,1,1)) IVCOMP = IVCOMP * 3 10290413 |
| IF (.NOT. LAON32(2,2,2)) IVCOMP = IVCOMP * 5 10300413 |
| 40260 IF (IVCOMP - 30) 20260, 10260, 20260 10310413 |
| 30260 IVDELE = IVDELE + 1 10320413 |
| WRITE (I02,80000) IVTNUM 10330413 |
| IF (ICZERO) 10260, 0271, 20260 10340413 |
| 10260 IVPASS = IVPASS + 1 10350413 |
| WRITE (I02,80002) IVTNUM 10360413 |
| GO TO 0271 10370413 |
| 20260 IVFAIL = IVFAIL + 1 10380413 |
| WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 10390413 |
| 0271 CONTINUE 10400413 |
| C 10410413 |
| C **** FCVS PROGRAM 413 - TEST 027 **** 10420413 |
| C 10430413 |
| C 10440413 |
| C TEST 027 USES A READ STATEMENT WHERE THE INPUT LIST ITEM IS A 10450413 |
| C IMPLIED-DO WITH AN ITEM OF INTEGER TYPE. THE STORAGE VALUES IN 10460413 |
| C THE ARRAY (BY THE IMPLIED-DO DURING THE READ) SHOULD RESULT IN A 10470413 |
| C DIFFERENT STORAGE SEQUENCE IN THE ARRAY THAN FOUND IN THE RECORD 10480413 |
| C OF THE FILE. THIS RECORD IS RECORD NUMBER 10 AND WAS CREATED IN 10490413 |
| C TEST 012 ABOVE. THE FIELD VALUE, FIELD POSITION, POSITION WITHIN 10500413 |
| C ARRAY IAON32 AND SUBSCRIPT VALUE AFTER THE READ IS 10510413 |
| C 10520413 |
| C VALUE 11 777 512 -32767 -11 -777 -512 32767 10530413 |
| C FIELD POS 1 3 2 4 5 7 6 8 10540413 |
| C IAON32 1 2 3 4 5 6 7 8 10550413 |
| 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,210560413 |
| C 10570413 |
| C 10580413 |
| IVTNUM = 27 10590413 |
| IF (ICZERO) 30270, 0270, 30270 10600413 |
| 0270 CONTINUE 10610413 |
| IAON32(2,1,1) = 0 10620413 |
| IAON32(2,2,1) = 0 10630413 |
| IVCORR = 30 10640413 |
| IVCOMP = 1 10650413 |
| READ (I10, REC = 10) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 10660413 |
| 1 (((IAON32 (J,K,I), K=1,2), J=1,2), I=1,2) 10670413 |
| IF (IRECN .EQ. 10) IVCOMP = IVCOMP * 2 10680413 |
| IF (IAON32(2,1,1) .EQ. 777) IVCOMP = IVCOMP * 3 10690413 |
| IF (IAON32(2,2,1) .EQ. -32767) IVCOMP = IVCOMP * 5 10700413 |
| C 10710413 |
| C THE ABOVE 3 IF STATEMENTS CHECK THE RECORD NUMBER, A NEGATIVE 10720413 |
| C FIELD VALUE AND A POSITIVE FIELD VALUE. 10730413 |
| C 10740413 |
| 40270 IF (IVCOMP - 30) 20270, 10270, 20270 10750413 |
| 30270 IVDELE = IVDELE + 1 10760413 |
| WRITE (I02,80000) IVTNUM 10770413 |
| IF (ICZERO) 10270, 0281, 20270 10780413 |
| 10270 IVPASS = IVPASS + 1 10790413 |
| WRITE (I02,80002) IVTNUM 10800413 |
| GO TO 0281 10810413 |
| 20270 IVFAIL = IVFAIL + 1 10820413 |
| WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 10830413 |
| 0281 CONTINUE 10840413 |
| C 10850413 |
| C **** FCVS PROGRAM 413 - TEST 028 **** 10860413 |
| C 10870413 |
| C 10880413 |
| C TEST 028 USES A READ STATEMENT WHERE THE INPUT LIST ITEM IS A 10890413 |
| C IMPLIED-DO WITH AN ITEM OF REAL TYPE. THE STORAGE VALUES IN 10900413 |
| C THE ARRAY (BY THE IMPLIED-DO DURING THE READ) SHOULD RESULT IN A 10910413 |
| C SEQUENCE THE SAME AS FOUND IN THE RECORD OF THE FILE. THIS REC- 10920413 |
| C ORD IS RECORD NUMBER 011 AND WAS CREATED IN TEST 013 ABOVE. 10930413 |
| C THE FIELD VALUE, FIELD POSITION, POSITION WITHIN ARRAY RAON32 AND10940413 |
| C SUBSCRIPT VALUE AFTER THE THE READ IS 10950413 |
| C 10960413 |
| C VALUE 11. -11. 7.77 -7.77 .512 -.512 -32767. 32767.10970413 |
| C FIELD POS 1 2 3 4 5 6 7 8 10980413 |
| C RAON32 1 2 3 4 5 6 7 8 10990413 |
| 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,211000413 |
| C 11010413 |
| C 11020413 |
| IVTNUM = 28 11030413 |
| IF (ICZERO) 30280, 0280, 30280 11040413 |
| 0280 CONTINUE 11050413 |
| RAON32(1,2,1) = 0.0 11060413 |
| RAON32(1,2,2) = 0.0 11070413 |
| IVCORR = 30 11080413 |
| IVCOMP = 1 11090413 |
| READ (I10, REC = 11) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 11100413 |
| 1 (((RAON32 (J,K,I), J=1,2), K=1,2), I=1,2) 11110413 |
| IF (IRECN .EQ. 11) IVCOMP = IVCOMP * 2 11120413 |
| IF (RAON32(1,2,1) .EQ. 7.77) IVCOMP = IVCOMP * 3 11130413 |
| IF (RAON32(1,2,2) .EQ. -32767.) IVCOMP = IVCOMP * 5 11140413 |
| C 11150413 |
| C THE ABOVE 3 IF STATEMENTS CHECK THE RECORD NUMBER, A NEGATIVE 11160413 |
| C FIELD VALUE AND A POSITIVE FIELD VALUE. 11170413 |
| C 11180413 |
| 40280 IF (IVCOMP - 30) 20280, 10280, 20280 11190413 |
| 30280 IVDELE = IVDELE + 1 11200413 |
| WRITE (I02,80000) IVTNUM 11210413 |
| IF (ICZERO) 10280, 0291, 20280 11220413 |
| 10280 IVPASS = IVPASS + 1 11230413 |
| WRITE (I02,80002) IVTNUM 11240413 |
| GO TO 0291 11250413 |
| 20280 IVFAIL = IVFAIL + 1 11260413 |
| WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 11270413 |
| 0291 CONTINUE 11280413 |
| C 11290413 |
| C **** FCVS PROGRAM 413 - TEST 029 **** 11300413 |
| C 11310413 |
| C 11320413 |
| C TEST 029 USES A READ STATEMENT WHERE THE INPUT LIST ITEM IS A 11330413 |
| C IMPLIED-DO WITH AN ITEM OF LOGICAL TYPE. THE STORAGE VALUES IN 11340413 |
| C THE ARRAY (BY THE IMPLIED-DO DURING THE READ) SHOULD RESULT IN A 11350413 |
| C DIFFERENT STORAGE SEQUENCE IN THE ARRAY THAN FOUND IN THE RECORD 11360413 |
| C OF THE FILE. THIS RECORD IS RECORD NUMBER 12 AND WAS CREATED IN 11370413 |
| C TEST 014 ABOVE. THE FIELD VALUE, FIELD POSITION, POSITION WITHIN 11380413 |
| C ARRAY LAON32 AND SUBSCRIPT VALUE AFTER THE READ IS 11390413 |
| C 11400413 |
| C VALUE T T F F T T F F 11410413 |
| C FIELD POS 1 5 3 7 2 6 4 8 11420413 |
| C LAON32 1 2 3 4 5 6 7 8 11430413 |
| 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,211440413 |
| C 11450413 |
| C 11460413 |
| IVTNUM = 29 11470413 |
| IF (ICZERO) 30290, 0290, 30290 11480413 |
| 0290 CONTINUE 11490413 |
| LAON32(1,2,1) = .TRUE. 11500413 |
| LAON32(2,1,1) = .FALSE. 11510413 |
| IVCORR = 30 11520413 |
| IVCOMP = 1 11530413 |
| READ (I10, REC = 12) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 11540413 |
| 1 (((LAON32 (J,K,I), I=1,2), K=1,2), J=1,2) 11550413 |
| IF (IRECN .EQ. 12) IVCOMP = IVCOMP * 2 11560413 |
| IF ( .NOT. LAON32(1,2,1)) IVCOMP = IVCOMP * 3 11570413 |
| IF (LAON32(2,1,1)) IVCOMP = IVCOMP * 5 11580413 |
| 40290 IF (IVCOMP - 30) 20290, 10290, 20290 11590413 |
| 30290 IVDELE = IVDELE + 1 11600413 |
| WRITE (I02,80000) IVTNUM 11610413 |
| IF (ICZERO) 10290, 0301, 20290 11620413 |
| 10290 IVPASS = IVPASS + 1 11630413 |
| WRITE (I02,80002) IVTNUM 11640413 |
| GO TO 0301 11650413 |
| 20290 IVFAIL = IVFAIL + 1 11660413 |
| WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 11670413 |
| 0301 CONTINUE 11680413 |
| C 11690413 |
| C **** FCVS PROGRAM 413 - TEST 030 **** 11700413 |
| C 11710413 |
| C 11720413 |
| C TEST 030 USES A READ STATEMENT WITHOUT ANY INPUT LIST ITEMS 11730413 |
| C (INPUT LIST ITEMS ARE OPTIONAL FOR THE READ STATEMENT). THIS 11740413 |
| C RECORD WAS WRITTEN IN TEST 14 AND SHOULD BE RECORD NUMBER 13. 11750413 |
| C THE PURPOSE OF THIS TEST IS TO SEE THAT THE STATEMENT CONSTRUCT 11760413 |
| C IS ACCEPTABLE TO THE COMPILER. 11770413 |
| C ALSO THE LENGTH OF AN UNFORMATTED RECORD MAY BE ZERO. 11780413 |
| C 11790413 |
| C SEE SECTIONS 12.1.2, UNFORMATTED RECORDS 11800413 |
| C 12.8, READ, WRITE AND PRINT STATEMENTS11810413 |
| C 11820413 |
| C 11830413 |
| IVTNUM = 30 11840413 |
| IF (ICZERO) 30300, 0300, 30300 11850413 |
| 0300 CONTINUE 11860413 |
| IRECN = 13 11870413 |
| IVCORR = 13 11880413 |
| READ (I10, REC = 13) 11890413 |
| IVCOMP = IRECN 11900413 |
| 40300 IF (IVCOMP - 13) 20300, 10300, 20300 11910413 |
| 30300 IVDELE = IVDELE + 1 11920413 |
| WRITE (I02,80000) IVTNUM 11930413 |
| IF (ICZERO) 10300, 0311, 20300 11940413 |
| 10300 IVPASS = IVPASS + 1 11950413 |
| WRITE (I02,80002) IVTNUM 11960413 |
| GO TO 0311 11970413 |
| 20300 IVFAIL = IVFAIL + 1 11980413 |
| WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 11990413 |
| 0311 CONTINUE 12000413 |
| C 12010413 |
| C **** FCVS PROGRAM 413 - TEST 031 **** 12020413 |
| C 12030413 |
| C 12040413 |
| C TEST 031 USES A READ STATEMENT IN WHICH THE NUMBER OF VALUES 12050413 |
| C REQUIRED BY THE INPUT LIST IS LESS THAN THE NUMBER OF VALUES IN 12060413 |
| C THE RECORD. 12070413 |
| C 12080413 |
| C SEE SECTION 12.9.5.1, UNFORMATED DATA TRANSFER 12090413 |
| C 12100413 |
| C 12110413 |
| IVTNUM = 31 12120413 |
| IF (ICZERO) 30310, 0310, 30310 12130413 |
| 0310 CONTINUE 12140413 |
| IVON21 = 0 12150413 |
| IVON22 = 0 12160413 |
| IVON31 = 0 12170413 |
| IVCORR = 0 12180413 |
| IVCOMP = 1 12190413 |
| READ (I10, REC = 01) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 12200413 |
| 1 IVON21, IVON22, IVON31 12210413 |
| IF (IRECN .EQ. 01) IVCOMP = IVCOMP * 2 12220413 |
| IF (IVON21 .EQ. 11) IVCOMP = IVCOMP * 3 12230413 |
| IF (IVON22 .EQ. -11) IVCOMP = IVCOMP * 5 12240413 |
| 40310 IF (IVCOMP - 30) 20310, 10310, 20310 12250413 |
| 30310 IVDELE = IVDELE + 1 12260413 |
| WRITE (I02,80000) IVTNUM 12270413 |
| IF (ICZERO) 10310, 0321, 20310 12280413 |
| 10310 IVPASS = IVPASS + 1 12290413 |
| WRITE (I02,80002) IVTNUM 12300413 |
| GO TO 0321 12310413 |
| 20310 IVFAIL = IVFAIL + 1 12320413 |
| WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 12330413 |
| 0321 CONTINUE 12340413 |
| C 12350413 |
| C 12360413 |
| C TEST 032 AND 033 VERIFIES THAT RECORDS MAY BE READ IN ANY ORDER12370413 |
| C ALSO THAT A VARIABLE MAY BE USED AS THE OPERAND OF THE REC SPEC- 12380413 |
| C IFIER FOR A READ STATEMENT. 12390413 |
| C 12400413 |
| C SEE SECTION 2.2.4.2(1) , DIRECT ACCESS 12410413 |
| C 12420413 |
| C 12430413 |
| C 12440413 |
| C **** FCVS PROGRAM 413 - TEST 032 **** 12450413 |
| C 12460413 |
| C 12470413 |
| C TEST 032 READS THE RECORDS WRITTEN IN TEST 16. EVERY OTHER 12480413 |
| C RECORD IS READ FOR A TOTAL OF 100 RECORDS (THE REC SPECIFIER 12490413 |
| C VARIABLE IS INCREMENTED BY 2). 12500413 |
| C 12510413 |
| C 12520413 |
| IVTNUM = 32 12530413 |
| IF (ICZERO) 30320, 0320, 30320 12540413 |
| 0320 CONTINUE 12550413 |
| IRECCK = 13 12560413 |
| IRECN = 0 12570413 |
| IREC = 13 12580413 |
| IVCOMP = 0 12590413 |
| DO 4134 I = 1,100 12600413 |
| IREC = IREC + 2 12610413 |
| IRECCK = IRECCK + 2 12620413 |
| READ (I10, REC = IREC) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 12630413 |
| 1 IVON21, IVON22, IVON31, IVON32, IVON33, IVON34, IVON55, IVON56 12640413 |
| IF (IRECN .EQ. IRECCK) IVCOMP = IVCOMP + 1 12650413 |
| 4134 CONTINUE 12660413 |
| IVCORR = 100 12670413 |
| 40320 IF (IVCOMP - 100) 20320, 10320, 20320 12680413 |
| 30320 IVDELE = IVDELE + 1 12690413 |
| WRITE (I02,80000) IVTNUM 12700413 |
| IF (ICZERO) 10320, 0331, 20320 12710413 |
| 10320 IVPASS = IVPASS + 1 12720413 |
| WRITE (I02,80002) IVTNUM 12730413 |
| GO TO 0331 12740413 |
| 20320 IVFAIL = IVFAIL + 1 12750413 |
| WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 12760413 |
| 0331 CONTINUE 12770413 |
| C 12780413 |
| C **** FCVS PROGRAM 413 - TEST 033 **** 12790413 |
| C 12800413 |
| C 12810413 |
| C TEST 033 READS THE RECORDS WRITTEN IN TEST 17. THIS TEST IS 12820413 |
| C SIMILAR TO TEST 32 ABOVE EXCEPT THE FILE IS READ IN REVERSE 12830413 |
| C RECORD NUMBER ORDER. 12840413 |
| C 12850413 |
| C 12860413 |
| IVTNUM = 33 12870413 |
| IF (ICZERO) 30330, 0330, 30330 12880413 |
| 0330 CONTINUE 12890413 |
| IRECCK = 216 12900413 |
| IRECN = 0 12910413 |
| IVCOMP = 0 12920413 |
| IREC = 216 12930413 |
| DO 4135 I = 1,100 12940413 |
| IREC = IREC - 2 12950413 |
| IRECCK = IRECCK - 2 12960413 |
| READ (I10, REC = IREC) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 12970413 |
| 1 IVON21, IVON22, IVON31, IVON32, IVON33, IVON34, IVON55, IVON56 12980413 |
| IF (IRECN .EQ. IRECCK) IVCOMP = IVCOMP + 1 12990413 |
| 4135 CONTINUE 13000413 |
| IVCORR = 100 13010413 |
| 40330 IF (IVCOMP - 100) 20330, 10330, 20330 13020413 |
| 30330 IVDELE = IVDELE + 1 13030413 |
| WRITE (I02,80000) IVTNUM 13040413 |
| IF (ICZERO) 10330, 0341, 20330 13050413 |
| 10330 IVPASS = IVPASS + 1 13060413 |
| WRITE (I02,80002) IVTNUM 13070413 |
| GO TO 0341 13080413 |
| 20330 IVFAIL = IVFAIL + 1 13090413 |
| WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 13100413 |
| 0341 CONTINUE 13110413 |
| C 13120413 |
| C **** FCVS PROGRAM 413 - TEST 034 **** 13130413 |
| C 13140413 |
| C 13150413 |
| C TEST 034 VERIFIES THAT THE VALUES OF A RECORD MAY BE CHANGED 13160413 |
| C WHEN THE RECORD IS REWRITTEN. RECORD NUMBER 01 IS USED FOR 13170413 |
| C TESTING. THE RECORD WAS WRITTEN IN TEST 02 AND READ IN TEST 18. 13180413 |
| C A RECORD CANNOT BE DELETED FROM THE FILE BUT IT CAN BE REWRITTEN. 13190413 |
| C 13200413 |
| C SEE SECTION 12.2.4.2 (5), DIRECT ACCESS 13210413 |
| C 13220413 |
| C 13230413 |
| IVTNUM = 34 13240413 |
| IF (ICZERO) 30340, 0340, 30340 13250413 |
| 0340 CONTINUE 13260413 |
| IRECN = 01 13270413 |
| WRITE (I10, REC = 01) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 13280413 |
| 1 ICON31, ICON32, ICON21, ICON22, ICON55, ICON56, ICON33, ICON3413290413 |
| READ (I10, REC=01) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 13300413 |
| 1 IVON61, IVON62, IVON63, IVON64, IVON65,IVON66, IVON67, IVON68 13310413 |
| IVCORR = 210 13320413 |
| IVCOMP = 1 13330413 |
| IF (IRECN .EQ. 01) IVCOMP = IVCOMP * 2 13340413 |
| IF (IVON61 .EQ. 777) IVCOMP = IVCOMP * 3 13350413 |
| IF (IVON62 .EQ. -777) IVCOMP = IVCOMP * 5 13360413 |
| IF (IVON66 .EQ. 32767) IVCOMP = IVCOMP * 7 13370413 |
| 40340 IF (IVCOMP - 210) 20340, 10340, 20340 13380413 |
| 30340 IVDELE = IVDELE + 1 13390413 |
| WRITE (I02,80000) IVTNUM 13400413 |
| IF (ICZERO) 10340, 0351, 20340 13410413 |
| 10340 IVPASS = IVPASS + 1 13420413 |
| WRITE (I02,80002) IVTNUM 13430413 |
| GO TO 0351 13440413 |
| 20340 IVFAIL = IVFAIL + 1 13450413 |
| WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 13460413 |
| 0351 CONTINUE 13470413 |
| C 13480413 |
| C 13490413 |
| C THE FOLLOWING SOURCE CODE BRACKETED BY THE COMMENT LINES 13500413 |
| C ***** BEGIN-FILE-DUMP SECTION AND ***** END-FILE-DUMP SECTION 13510413 |
| C MAY OR MAY NOT APPEAR AS COMMENTS IN THE SOURCE PROGRAM. 13520413 |
| C THIS CODE IS OPTIONAL AND BY DEFAULT IT IS AUTOMATICALLY COMMENTED13530413 |
| C OUT BY THE EXECUTIVE ROUTINE. A DUMP OF THE FILE USED BY THIS 13540413 |
| C ROUTINE IS PROVIDED BY USING THE *OPT1 EXECUTIVE ROUTINE CONTROL 13550413 |
| C CARD. IF THE OPTIONAL CODE IS SELECTED THE ROUTINE WILL DUMP 13560413 |
| C THE CONTENTS OF THE FILE TO THE PRINT FILE FOLLOWING THE TEST 13570413 |
| C REPORT AND BEFORE THE TEST REPORT SUMMARY. 13580413 |
| C 13590413 |
| CDB** BEGIN FILE DUMP CODE 13600413 |
| C ITOTR = 214 13610413 |
| C ILUN = I10 13620413 |
| C IRLGN = 80 13630413 |
| C IRNUM = 1 13640413 |
| C7701 FORMAT (80A1) 13650413 |
| C7702 FORMAT (1X,80A1) 13660413 |
| C7703 FORMAT (10X,"FILE ",I2," HAS ",I3," RECORDS - OK" ) 13670413 |
| C7704 FORMAT (10X,"FILE ",I2," HAS ",I3," RECORDS - THERE SHOULD BE " ,I13680413 |
| C 13,9H RECORDS.) 13690413 |
| C DO 7771 IRNUM = 1, ITOTR 13700413 |
| C READ (ILUN, REC = IRNUM) (IDUMP(ICH), ICH = 1, IRLGN) 13710413 |
| C WRITE (I02, 7702) (IDUMP(ICH), ICH = 1, IRLGN) 13720413 |
| C7771 CONTINUE 13730413 |
| CDE** END OF DUMP CODE 13740413 |
| C TEST 034 IS THE LAST TEST IN THIS PROGRAM. THE ROUTINE SHOULD13750413 |
| C HAVE MADE 34 EXPLICIT TESTS AND PROCESSED ONE FILE CONNECTED FOR 13760413 |
| C DIRECT ACCESS 13770413 |
| C 13780413 |
| C 13790413 |
| C 13800413 |
| C WRITE OUT TEST SUMMARY 13810413 |
| C 13820413 |
| WRITE (I02,90004) 13830413 |
| WRITE (I02,90014) 13840413 |
| WRITE (I02,90004) 13850413 |
| WRITE (I02,90000) 13860413 |
| WRITE (I02,90004) 13870413 |
| WRITE (I02,90020) IVFAIL 13880413 |
| WRITE (I02,90022) IVPASS 13890413 |
| WRITE (I02,90024) IVDELE 13900413 |
| STOP 13910413 |
| 90001 FORMAT (" ",24X,"FM413") 13920413 |
| 90000 FORMAT (" ",20X,"END OF PROGRAM FM413" ) 13930413 |
| C 13940413 |
| C FORMATS FOR TEST DETAIL LINES 13950413 |
| C 13960413 |
| 80000 FORMAT (" ",4X,I5,6X,"DELETED") 13970413 |
| 80002 FORMAT (" ",4X,I5,7X,"PASS") 13980413 |
| 80010 FORMAT (" ",4X,I5,7X,"FAIL",10X,I6,9X,I6) 13990413 |
| 80012 FORMAT (" ",4X,I5,7X,"FAIL",4X,E12.5,3X,E12.5) 14000413 |
| 80018 FORMAT (" ",4X,I5,7X,"FAIL",2X,A14,1X,A14) 14010413 |
| C 14020413 |
| C FORMAT STATEMENTS FOR PAGE HEADERS 14030413 |
| C 14040413 |
| 90002 FORMAT ("1") 14050413 |
| 90004 FORMAT (" ") 14060413 |
| 90006 FORMAT (" ",10X,"FORTRAN COMPILER VALIDATION SYSTEM" ) 14070413 |
| 90008 FORMAT (" ",21X,"VERSION 2.1" ) 14080413 |
| 90010 FORMAT (" ",8X,"FOR OFFICIAL USE ONLY - COPYRIGHT 1978" ) 14090413 |
| 90012 FORMAT (" ",5X,"TEST",5X,"PASS/FAIL",5X,"COMPUTED",8X,"CORRECT") 14100413 |
| 90014 FORMAT (" ",5X,"----------------------------------------------" ) 14110413 |
| 90016 FORMAT (" ",18X,"SUBSET LEVEL TEST" ) 14120413 |
| C 14130413 |
| C FORMAT STATEMENTS FOR RUN SUMMARY 14140413 |
| C 14150413 |
| 90020 FORMAT (" ",19X,I5," TESTS FAILED" ) 14160413 |
| 90022 FORMAT (" ",19X,I5," TESTS PASSED" ) 14170413 |
| 90024 FORMAT (" ",19X,I5," TESTS DELETED" ) 14180413 |
| END 14190413 |