FM413.f Source File


Contents

Source Code


Source Code

      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 = 9                                                           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