blob: 38349f495211d8854e9057d0ef8cbb824e11777a [file] [log] [blame]
PROGRAM FM401 00010401
C 00020401
C 00030401
C THIS ROUTINE TESTS FOR PROPER EDITING OF LOGICAL DATA BY 00040401
C THE L EDIT DESCRIPTOR OF THE FORMAT SPECIFICATION. THE L EDIT 00050401
C DESCRIPTOR IS FIRST TESTED FOR PROPER EDITING ON OUTPUT BY 00060401
C DIRECTING THE EDITED RESULT TO A PRINT FILE. THE RESULTS MUST 00070401
C BE VISUALLY CHECKED FOR CORRECTNESS BY EXAMINING THE EXECUTION 00080401
C REPORT PRODUCED BY THIS ROUTINE. NEXT A NONPRINTER FILE WHICH 00090401
C IS CONNECTED FOR SEQUENTIAL ACCESS IS CREATED WITH LOGICAL DATA 00100401
C FIELDS AND THEN REPOSITIONED TO THE FIRST RECORD IN THE FILE. 00110401
C THE FILE IS THEN READ USING THE SAME EDIT DESCRIPTORS AS WERE 00120401
C USED TO CREATE THE FILE AND THE INTERNAL DATA REPRESENTATION AS A 00130401
C RESULT OF READING THE LOGICAL DATA IS CHECKED. 00140401
C THE FOLLOWING L EDITING TESTS ARE MADE TO SEE THAT 00150401
C 00160401
C (1) THE VALUE T OR F IS PRODUCED ON OUTPUT WHEN THE INTERNAL 00170401
C DATUM IS TRUE AND FALSE RESPECTIVELY, 00180401
C (2) THE VALUE OF THE INPUT LIST ITEM IS TRUE OR FALSE 00190401
C WHEN THE INPUT FIELD IS T AND F RESPECTIVELY, 00200401
C (3) THE VALUES .T, .F, T, F, .TRUE., .FALSE., .T, AND 00210401
C .F ARE ACCEPTABLE FORMS FOR INPUT DATA FIELDS 00220401
C (4) THE INPUT VALUES T OR F MAY BE FOLLOWED BY 00230401
C ADDITIONAL CHARACTERS IN THE FIELD, 00240401
C (5) THE REPEATABLE EDIT DESCRIPTOR FOR L EDITING FUNCTIONS 00250401
C CORRECTLY, 00260401
C (6) THE FIELDS CONTAINING LOGICAL DATA CAN BE WRITTEN 00270401
C USING ONE L EDIT DESCRIPTOR AND READ USING A DIFFERENT 00280401
C FORM OF THE L EDIT DESCRIPTOR. 00290401
C 00300401
C REFERENCES - 00310401
C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, 00320401
C X3.9-1978 00330401
C 00340401
C SECTION 4.7, LOGICAL TYPE 00350401
C SECTION 13.1.1, FORMAT STATEMENT 00360401
C SECTION 13.5.10, L EDITING 00370401
C 00380401
C 00390401
C 00400401
C ******************************************************************00410401
C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE 00420401
C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN STANDARD FORTRAN 00430401
C X3.9-1978, HAS BEEN DEVELOPED BY THE DEPARTMENT OF THE NAVY. THE 00440401
C FORTRAN COMPILER VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT 00450401
C ROUTINES, THEIR RELATED DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT00460401
C ROUTINE IS A FORTRAN PROGRAM OR SUBPROGRAM WHICH INCLUDES TESTS 00470401
C OF SPECIFIC LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING00480401
C THE RESULT OF EXECUTING THESE TESTS. 00490401
C 00500401
C THIS PARTICULAR PROGRAM OR SUBPROGRAM CONTAINS ONLY FEATURES 00510401
C FOUND IN THE SUBSET LEVEL OF THE STANDARD. 00520401
C 00530401
C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO 00540401
C NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY 00550401
C SOFTWARE STANDARDS VALIDATION GROUP 00560401
C BUILDING 225 RM A266 00570401
C GAITHERSBURG, MD 20899 00580401
C ******************************************************************00590401
C 00600401
C 00610401
IMPLICIT LOGICAL (L) 00620401
IMPLICIT CHARACTER*14 (C) 00630401
C 00640401
DIMENSION LAON15(5), LAON12(2) 00650401
DIMENSION IDUMP(132) 00660401
C 00670401
C 00680401
C 00690401
C INITIALIZATION SECTION. 00700401
C 00710401
C INITIALIZE CONSTANTS 00720401
C ******************** 00730401
C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER 00740401
I01 = 5 00750401
C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER 00760401
I02 = 6 00770401
C SYSTEM ENVIRONMENT SECTION 00780401
C 00790401
CX010 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-010 CONTROL CARD.00800401
C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 00810401
C (UNIT NUMBER FOR CARD READER). 00820401
CX011 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-011 CONTROL CARD00830401
C THE CX011 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00840401
C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX010 ABOVE. 00850401
C 00860401
CX020 THIS CARD IS PEPLACED BY CONTENTS OF FEXEC X-020 CONTROL CARD.00870401
C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02 = 6 00880401
C (UNIT NUMBER FOR PRINTER). 00890401
CX021 THIS CARD IS PEPLACED BY CONTENTS OF FEXEC X-021 CONTROL CARD.00900401
C THE CX021 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00910401
C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX020 ABOVE. 00920401
C 00930401
IVPASS = 0 00940401
IVFAIL = 0 00950401
IVDELE = 0 00960401
ICZERO = 0 00970401
C 00980401
C WRITE OUT PAGE HEADERS 00990401
C 01000401
WRITE (I02,90002) 01010401
WRITE (I02,90006) 01020401
WRITE (I02,90008) 01030401
WRITE (I02,90004) 01040401
WRITE (I02,90010) 01050401
WRITE (I02,90004) 01060401
WRITE (I02,90016) 01070401
WRITE (I02,90001) 01080401
WRITE (I02,90004) 01090401
WRITE (I02,90012) 01100401
WRITE (I02,90014) 01110401
WRITE (I02,90004) 01120401
C 01130401
C 01140401
C 01150401
C TEST 001 THROUGH 007 TESTS THE L EDIT DESCRIPTOR FOR PROPER 01160401
C EDITING OF LOGICAL DATUM ON OUTPUT. TO VALIDATE THESE TESTS 01170401
C THE EDITED DATUM IS SENT TO A PRINT FILE AND THEREFORE MUST BE 01180401
C VISUALLY CHECKED FOR CORRECTNESS. ON OUTPUT THE EDITED FIELD 01190401
C CONSISTS OF W-1 (W IS NUMBER OF POSITIONS IN THE FIELD) BLANKS 01200401
C FOLLOWED BY A T OR F AS THE VALUE OF THE DATUM IS TRUE OR FALSE 01210401
C RESPECTIVELY. SEE SECTION 13.5.10 L EDITING. 01220401
C 01230401
C 01240401
80052 FORMAT (" ",4X, "TESTS 001 THROUGH 007 MUST BE VISUALLY VERIFIED.01250401
1") 01260401
80054 FORMAT (" ", "IMMEDIATELY FOLLOWING THIS NARRATIVE IS A REFERENCE01270401
1 LINE") 01280401
80056 FORMAT (" ", "OF THE FORM '123456 ...'. THE REFERENCE LINE IS T01290401
1O") 01300401
80058 FORMAT (" ","AID IN THE VISUAL VERIFICATION OF THE TESTS. FOR" ) 01310401
80062 FORMAT (" ","THE OUTPUT TO BE CORRECT THE DATA VALUES DISPLAYED" )01320401
80064 FORMAT (" ", "IN THE COMPUTED COLUMN MUST MATCH THAT IN THE CORRE01330401
1CT ") 01340401
80066 FORMAT (" ","COLUMN IN BOTH VALUE AND CHARACTER POSITION." ) 01350401
80072 FORMAT (" ","REFERENCE LINE - " ,"1234567890" ,5X, "123401360401
1567890") 01370401
WRITE (I02,80052) 01380401
WRITE (I02,80054) 01390401
WRITE (I02,80056) 01400401
WRITE (I02,80058) 01410401
WRITE (I02,80062) 01420401
WRITE (I02,80064) 01430401
WRITE (I02,80066) 01440401
WRITE (I02,90004) 01450401
WRITE (I02,80072) 01460401
C 01470401
C **** FCVS PROGRAM 401 - TEST 001 **** 01480401
C 01490401
C TEST 001 TESTS FOR PROPER EDITING OF THE L EDIT DESCRIPTOR 01500401
C ON OUTPUT WHERE THE FIELD IS 1 POSITION IN LENGTH, THE 01510401
C VALUE OF THE DATUM IS TRUE AND THE OUTPUT LIST ITEM IS A 01520401
C VARIABLE. 01530401
C 01540401
IVTNUM = 001 01550401
IF (ICZERO) 30010, 0010, 30010 01560401
0010 CONTINUE 01570401
LCON01 = .TRUE. 01580401
0012 FORMAT (" ",4X,I5,26X,L1,14X,"T") 01590401
WRITE (I02, 0012) IVTNUM, LCON01 01600401
GO TO 0021 01610401
30010 IVDELE = IVDELE + 1 01620401
WRITE (I02,80000) IVTNUM 01630401
0021 CONTINUE 01640401
C 01650401
C **** FCVS PROGRAM 401 - TEST 002 **** 01660401
C 01670401
C TEST 002 IS SIMILAR TO TEST 001 EXCEPT THAT THE OUTPUT LIST 01680401
C ITEM IS AN ARRAY ELEMENT. 01690401
C 01700401
IVTNUM = 002 01710401
IF (ICZERO) 30020, 0020, 30020 01720401
0020 CONTINUE 01730401
LAON12(2) = .TRUE. 01740401
0022 FORMAT (" ",4X,I5,26X,L1,14X,"T") 01750401
WRITE (I02, 0022) IVTNUM, LAON12(2) 01760401
GO TO 0031 01770401
30020 IVDELE = IVDELE + 1 01780401
WRITE (I02,80000) IVTNUM 01790401
0031 CONTINUE 01800401
C 01810401
C **** FCVS PROGRAM 401 - TEST 003 **** 01820401
C 01830401
C TEST 003 TESTS TO SEE THAT ON OUTPUT 9 BLANKS PRECEDE THE VALUE01840401
C T WHERE THE L EDIT DESCRIPTOR INDICATES THAT THE FIELD OCCUPIES 01850401
C 10 POSITIONS. THE VALUE OF THE INTERNAL DATUM IS TRUE. 01860401
C 01870401
IVTNUM = 003 01880401
IF (ICZERO) 30030, 0030, 30030 01890401
0030 CONTINUE 01900401
LCON01 = .TRUE. 01910401
0032 FORMAT (" ",4X,I5,17X,L10,5X," T" ) 01920401
WRITE (I02, 0032) IVTNUM, LCON01 01930401
GO TO 0041 01940401
30030 IVDELE = IVDELE + 1 01950401
WRITE (I02, 80000) IVTNUM 01960401
0041 CONTINUE 01970401
C 01980401
C **** FCVS PROGRAM 401 - TEST 004 **** 01990401
C 02000401
C TEST 004 TESTS TO SEE THAT THE VALUE F IS PRODUCED ON OUTPUT 02010401
C WHEN THE VALUE OF THE INTERNAL DATUM IS FALSE AND THE L EDITING 02020401
C FIELD IS 1 POSITION IN LENGTH. 02030401
C 02040401
IVTNUM = 004 02050401
IF (ICZERO) 30040, 0040, 30040 02060401
0040 CONTINUE 02070401
LCON02 = .FALSE. 02080401
0042 FORMAT (" ",4X,I5,26X,L1,14X,"F") 02090401
WRITE (I02, 0042) IVTNUM, LCON02 02100401
GO TO 0051 02110401
30040 IVDELE = IVDELE + 1 02120401
WRITE (I02,80000) IVTNUM 02130401
0051 CONTINUE 02140401
C 02150401
C **** FCVS PROGRAM 401 - TEST 005 **** 02160401
C 02170401
C TEST 005 VERIFIES THAT ON OUTPUT 9 BLANKS PRECEDE THE VALUE F 02180401
C WHERE THE L EDIT DESCRIPTOR IS L10 (FIELD OCCUPIES 10 POSITIONS). 02190401
C THE VALUE OF THE INTERNAL DATUM IS FALSE. 02200401
C 02210401
IVTNUM = 005 02220401
IF (ICZERO) 30050, 0050, 30050 02230401
0050 CONTINUE 02240401
LCON02 = .FALSE. 02250401
0052 FORMAT (" ",4X,I5,17X,L10,5X," F" ) 02260401
WRITE (I02, 0052) IVTNUM, LCON02 02270401
GO TO 0061 02280401
30050 IVDELE = IVDELE + 1 02290401
WRITE (I02, 80000) IVTNUM 02300401
0061 CONTINUE 02310401
C 02320401
C **** FCVS PROGRAM 401 - TEST 006 **** 02330401
C 02340401
C TEST 006 TESTS THE OPTIONAL REPEAT SPECIFICATION OF THE L 02350401
C EDIT DESCRIPTOR WHERE THE FIELD OCCUPIES 1 POSITION (EDIT 02360401
C DESCRIPTOR IS 5L1). 02370401
C 02380401
IVTNUM = 006 02390401
IF (ICZERO) 30060, 0060, 30060 02400401
0060 CONTINUE 02410401
LCON01 = .TRUE. 02420401
LCON02 = .FALSE. 02430401
LCON03 = .FALSE. 02440401
LAON12(1) = .FALSE. 02450401
LAON12(2) = .TRUE. 02460401
0062 FORMAT (" ",4X,I5,17X," ",5L1,5X," TFFFT" ) 02470401
WRITE (I02, 0062) IVTNUM, LCON01, LCON02, LCON03, LAON12(1), 02480401
1LAON12(2) 02490401
GO TO 0071 02500401
30060 IVDELE = IVDELE + 1 02510401
WRITE (I02, 80000) IVTNUM 02520401
0071 CONTINUE 02530401
C 02540401
C *** FCVS PROGRAM 401 - TEST 007 **** 02550401
C 02560401
C TEST 007 TESTS THE OPTIONAL REPEAT SPECIFICATION OF THE L 02570401
C EDIT DESCRIPTOR WHERE THE FIELD OCCUPIES 3 POSITIONS (EDIT 02580401
C DESCRIPTOR IS 3L3). 02590401
C 02600401
IVTNUM = 007 02610401
IF (ICZERO) 30070, 0070, 30070 02620401
0070 CONTINUE 02630401
LCON01 = .TRUE. 02640401
LCON02 = .FALSE. 02650401
LAON12(2) = .TRUE. 02660401
0072 FORMAT (" ",4X,I5,17X," ",3L3,5X," T F T" ) 02670401
WRITE (I02, 0072) IVTNUM, LCON01, LCON02, LAON12(2) 02680401
GO TO 0081 02690401
30070 IVDELE = IVDELE + 1 02700401
WRITE (I02, 80000) IVTNUM 02710401
0081 CONTINUE 02720401
C 02730401
C THE FOLLOWING BLOCK OF SOURCE CODE BEGINNING WITH COMMENT LINE 02740401
C **** CREATE-FILE SECTION AND ENDING WITH THE COMMENT LINE 02750401
C **** END-OF-CREATE-FILE SECTION BUILDS A FILE WHICH IS USED IN 02760401
C TESTING THE L EDIT DESCRIPTOR. THE FILE PROPERTIES ARE 02770401
C 02780401
C FILE IDENTIFIER - I08 (X-NUMBER 08) 02790401
C RECORD SIZE - 80 CHARACTERS 02800401
C ACCESS METHOD - SEQUENTIAL 02810401
C RECORD TYPE - FORMATTED 02820401
C DESIGNATED DEVICE - DISK 02830401
C TYPE OF DATA - LOGICAL (L FORMAT) 02840401
C RECORDS IN FILE - 141 02850401
C 02860401
C THE FIRST 20 POSITIONS OF EACH RECORD IN THE FILE UNIQUELY 02870401
C IDENTIFY THAT RECORD. THE REMAINING POSITONS OF THE RECORD 02880401
C CONTAIN DATA WHICH IS USED IN TESTING THE L EDIT DESCRIPTOR. 02890401
C A DESCRIPTION OF EACH FIELD OF THE 20-CHARACTER PREAMBLE FOLLOWS. 02900401
C 02910401
C VARIABLE NAME IN PROGRAM CHARACTER POSITIONS 02920401
C ----------------------- ------------------- 02930401
C 02940401
C IPROG (ROUTINE NAME) - 1 THRU 3 02950401
C IFILE (LOGICAL/ X-NUMBER) - 4 THRU 5 02960401
C ITOTR (RECORDS IN FILE) - 6 THRU 9 02970401
C IRLGN (CHARACTERS IN RECORD) - 10 THRU 12 02980401
C IRECN (RECORD NUMBER) - 13 THRU 16 02990401
C IEOF (9999 IF LAST RECORD) - 17 THRU 20 03000401
C 03010401
C DEFAULT ASSIGNMENT FOR FILE IS I08 = 07 03020401
I08 = 408 03030401
CX080 THIS CARD IS REPLACED BY THE CONTENTS OF CARD X-080 03040401
CX081 THIS CARD IS REPLACED BY THE CONTENTS OF CARD X-081 03050401
IPROG = 401 03060401
IFILE = I08 03070401
ITOTR = 141 03080401
IRLGN = 80 03090401
IRECN = 0 03100401
IEOF = 0 03110401
C 03120401
C THERE ARE 10 SETS OF 14 RECORDS PER SET PLUS ONE 03130401
C TRAILER RECORD FOR A TOTAL OF 141 DATA RECORDS IN THE FILE. 03140401
C ALTHOUGH ONLY 12 RECORDS ARE USED IN TESTING, THE FILE IS MADE 03150401
C LARGER TO PRECLUDE THE FILE FROM BEING TOTALY STORED IN MEMORY 03160401
C DURING EXECUTION OF THIS ROUTINE. 03170401
C 03180401
C 03190401
C 03200401
C **** CREATE-FILE SECTION 03210401
LCON01 = .TRUE. 03220401
LCON02 = .FALSE. 03230401
70001 FORMAT (I3,I2,I4,I3,2I4,58X,"T","F") 03240401
70002 FORMAT (I3,I2,I4,I3,2I4,40X," T" ," F" ) 03250401
70003 FORMAT (I3,I2,I4,I3,2I4,47X,".TRUE.",".FALSE.") 03260401
70004 FORMAT (I3,I2,I4,I3,2I4,56X,".T",".F") 03270401
70005 FORMAT (I3,I2,I4,I3,2I4,48X," .T"," .F") 03280401
70006 FORMAT (I3,I2,I4,I3,2I4,38X,"THIS IS ALLOWED" ,"FINALLY") 03290401
70007 FORMAT (I3,I2,I4,I3,2I4,48X,"TRUE ","FALSE ") 03300401
70008 FORMAT (I3,I2,I4,I3,2I4,40X," .TIME. " ," .FIELD. " ) 03310401
70009 FORMAT (I3,I2,I4,I3,2I4,07X, "THIS IS VERY LARGE FIELD FOR INPUT 03320401
1OF LOGICAL VALUES.") 03330401
70010 FORMAT (I3,I2,I4,I3,2I4,55X,"TFTFT") 03340401
70011 FORMAT (I3,I2,I4,I3,2I4,44X," T T F F" ) 03350401
70012 FORMAT (I3,I2,I4,I3,2I4,55X,L5) 03360401
70013 FORMAT (I3,I2,I4,I3,2I4,55X,4X,L1) 03370401
70014 FORMAT (I3,I2,I4,I3,2I4,59X," ") 03380401
DO 4012 I=1,10 03390401
IRECN = IRECN + 1 03400401
WRITE (I08, 70001) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF 03410401
IRECN = IRECN + 1 03420401
WRITE (I08, 70002) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF 03430401
IRECN = IRECN + 1 03440401
WRITE (I08, 70003) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF 03450401
IRECN = IRECN + 1 03460401
WRITE (I08, 70004) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF 03470401
IRECN = IRECN + 1 03480401
WRITE (I08, 70005) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF 03490401
IRECN = IRECN + 1 03500401
WRITE (I08, 70006) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF 03510401
IRECN = IRECN + 1 03520401
WRITE (I08, 70007) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF 03530401
IRECN = IRECN + 1 03540401
WRITE (I08, 70008) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF 03550401
IRECN = IRECN + 1 03560401
WRITE (I08, 70009) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF 03570401
IRECN = IRECN + 1 03580401
WRITE (I08, 70010) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF 03590401
IRECN = IRECN + 1 03600401
WRITE (I08, 70011) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF 03610401
IRECN = IRECN + 1 03620401
WRITE (I08, 70012) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, LCON0103630401
IRECN = IRECN + 1 03640401
WRITE (I08, 70012) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, LCON0203650401
IRECN = IRECN + 1 03660401
WRITE (I08, 70013) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, LCON0103670401
4012 CONTINUE 03680401
IRECN = IRECN + 1 03690401
IEOF = 9999 03700401
WRITE (I08, 70014) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF 03710401
ENDFILE I08 03720401
REWIND I08 03730401
WRITE (I02, 90004) 03740401
70015 FORMAT (" FILE I08 HAS BEEN CREATED AND CONTAINS 141 RECORDS" ) 03750401
70016 FORMAT (" ","INCORRECT NUMBER OF RECORDS IN FILE - " , I4 , " RE03760401
1CORDS") 03770401
70017 FORMAT (" ","WRITTEN BUT 141 RECORDS SHOULD HAVE BEEN WRITTEN." ) 03780401
IF (IRECN - 141) 4013, 4014, 4013 03790401
4013 WRITE (I02, 70016) IRECN 03800401
WRITE (I02, 70017) 03810401
GO TO 4015 03820401
4014 WRITE (I02, 70015) 03830401
WRITE (I02, 90004) 03840401
4015 CONTINUE 03850401
C 03860401
C **** END-OF-CREATE-FILE SECTION 03870401
C 03880401
C 03890401
C 03900401
C TEST 8 AND 9 VERIFY THAT ON INPUT THE VALUE T AND F IS TRUE 03910401
C AND FALSE RESPECTIVELY. THE FIELD IS ONE POSITION IN LENGTH AND 03920401
C USES THE EDIT DESCRIPTOR L1. 03930401
C 03940401
C 03950401
LVON01 = .FALSE. 03960401
LVON02 = .TRUE. 03970401
0082 FORMAT (78X,L1,L1) 03980401
READ (I08, 0082) LVON01, LVON02 03990401
C THE ABOVE READ AND ASSOCIATED FORMAT STATEMENT IS FOR TESTS 8 04000401
C AND 9 04010401
C 04020401
C 04030401
C **** FCVS PROGRAM 401 - TEST 008 **** 04040401
C 04050401
C 04060401
C TEST 8 TESTS THE FIELD VALUE T FOR A TRUE CONDITION. 04070401
C 04080401
C 04090401
IVTNUM = 8 04100401
IF (ICZERO) 30080, 0080, 30080 04110401
0080 CONTINUE 04120401
IVCOMP = 0 04130401
IF (LVON01) IVCOMP = 1 04140401
IVCORR = 1 04150401
40080 IF (IVCOMP - 1) 20080, 10080, 20080 04160401
30080 IVDELE = IVDELE + 1 04170401
WRITE (I02,80000) IVTNUM 04180401
IF (ICZERO) 10080, 0091, 20080 04190401
10080 IVPASS = IVPASS + 1 04200401
WRITE (I02,80002) IVTNUM 04210401
GO TO 0091 04220401
20080 IVFAIL = IVFAIL + 1 04230401
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 04240401
0091 CONTINUE 04250401
C 04260401
C **** FCVS PROGRAM 401 - TEST 009 **** 04270401
C 04280401
C 04290401
C TEST 9 TESTS THE VALUE F FOR A FALSE CONDITION 04300401
C 04310401
C 04320401
IVTNUM = 9 04330401
IF (ICZERO) 30090, 0090, 30090 04340401
0090 CONTINUE 04350401
IVCOMP = 1 04360401
IF (.NOT. LVON02) IVCOMP = 0 04370401
IVCORR = 0 04380401
40090 IF (IVCOMP - 0) 20090, 10090, 20090 04390401
30090 IVDELE = IVDELE + 1 04400401
WRITE (I02,80000) IVTNUM 04410401
IF (ICZERO) 10090, 0101, 20090 04420401
10090 IVPASS = IVPASS + 1 04430401
WRITE (I02,80002) IVTNUM 04440401
GO TO 0101 04450401
20090 IVFAIL = IVFAIL + 1 04460401
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 04470401
0101 CONTINUE 04480401
C 04490401
C 04500401
C THE INPUT FIELD MAY CONSIST OF OPTIONAL BLANKS FOLLOWED BY T OR04510401
C F. TEST 10 AND 11 VERIFY THAT THE VALUE T OR F PRECEDED BY BLANKS 04520401
C ON INPUT IS TRUE OR FALSE RESPECTIVELY. THE EDIT DESCRIPTOR BEING04530401
C TESTED IS L10 (INPUT FIELD HAS 10 POSITIONS). 04540401
C 04550401
C 04560401
LVON01 = .FALSE. 04570401
LVON02 = .TRUE. 04580401
0102 FORMAT (60X,L10,L10) 04590401
READ (I08, 0102) LVON01, LVON02 04600401
C THE ABOVE READ AND ASSOCIATED FORMAT STATEMENT IS FOR TESTS 1004610401
C AND 11 04620401
C 04630401
C **** FCVS PROGRAM 401 - TEST 010 **** 04640401
C 04650401
C 04660401
C TEST 10 TESTS A FIELD OF BLANKS FOLLOWED BY A T FOR A TRUE 04670401
C CONDITION. 04680401
C 04690401
C 04700401
IVTNUM = 10 04710401
IF (ICZERO) 30100, 0100, 30100 04720401
0100 CONTINUE 04730401
IVCOMP = 0 04740401
IF (LVON01) IVCOMP = 1 04750401
IVCORR = 1 04760401
40100 IF (IVCOMP - 1) 20100, 10100, 20100 04770401
30100 IVDELE = IVDELE + 1 04780401
WRITE (I02,80000) IVTNUM 04790401
IF (ICZERO) 10100, 0111, 20100 04800401
10100 IVPASS = IVPASS + 1 04810401
WRITE (I02,80002) IVTNUM 04820401
GO TO 0111 04830401
20100 IVFAIL = IVFAIL + 1 04840401
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 04850401
0111 CONTINUE 04860401
C 04870401
C **** FCVS PROGRAM 401 - TEST 011 **** 04880401
C 04890401
C 04900401
C TEST 11 TESTS A FIELD OF BLANKS FOLLOWED BY A F FOR A FALSE 04910401
C CONDITION 04920401
C 04930401
C 04940401
IVTNUM = 11 04950401
IF (ICZERO) 30110, 0110, 30110 04960401
0110 CONTINUE 04970401
IVCOMP = 1 04980401
IF (.NOT. LVON02) IVCOMP = 0 04990401
IVCORR = 0 05000401
40110 IF (IVCOMP - 0) 20110, 10110, 20110 05010401
30110 IVDELE = IVDELE + 1 05020401
WRITE (I02,80000) IVTNUM 05030401
IF (ICZERO) 10110, 0121, 20110 05040401
10110 IVPASS = IVPASS + 1 05050401
WRITE (I02,80002) IVTNUM 05060401
GO TO 0121 05070401
20110 IVFAIL = IVFAIL + 1 05080401
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 05090401
0121 CONTINUE 05100401
C 05110401
C 05120401
C TESTS 12 AND 13 VERIFY THAT THE FIELD CONTENTS .TRUE . OR 05130401
C .FALSE. ARE ACCEPTABLE INPUT FORMS AND THE VALUE OF THE INTERNAL 05140401
C DATUM IS TRUE OR FALSE RESPECTIVELY. 05150401
C 05160401
C 05170401
LVON01 = .FALSE. 05180401
LVON02 = .TRUE. 05190401
0122 FORMAT (67X,L6,L7) 05200401
READ (I08, 0122) LVON01, LVON02 05210401
C THE ABOVE READ AND ASSOCIATED FORMAT STATEMENT IS FOR TESTS 12 05220401
C AND 13 05230401
C 05240401
C **** FCVS PROGRAM 401 - TEST 012 **** 05250401
C 05260401
C 05270401
C TEST 12 TESTS THE INPUT FIELD CONTENTS .TRUE. FOR A TRUE 05280401
C CONDITION. 05290401
C 05300401
C 05310401
IVTNUM = 12 05320401
IF (ICZERO) 30120, 0120, 30120 05330401
0120 CONTINUE 05340401
IVCOMP = 0 05350401
IF (LVON01) IVCOMP = 1 05360401
IVCORR = 1 05370401
40120 IF (IVCOMP - 1) 20120, 10120, 20120 05380401
30120 IVDELE = IVDELE + 1 05390401
WRITE (I02,80000) IVTNUM 05400401
IF (ICZERO) 10120, 0131, 20120 05410401
10120 IVPASS = IVPASS + 1 05420401
WRITE (I02,80002) IVTNUM 05430401
GO TO 0131 05440401
20120 IVFAIL = IVFAIL + 1 05450401
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 05460401
0131 CONTINUE 05470401
C 05480401
C **** FCVS PROGRAM 401 - TEST 013 **** 05490401
C 05500401
C 05510401
C TEST 13 TESTS THE INPUT FIELD CONTENTS .FALSE. FOR A FALSE 05520401
C CONDITION. 05530401
C 05540401
C 05550401
IVTNUM = 13 05560401
IF (ICZERO) 30130, 0130, 30130 05570401
0130 CONTINUE 05580401
IVCOMP = 1 05590401
IF (.NOT. LVON02) IVCOMP = 0 05600401
IVCORR = 0 05610401
40130 IF (IVCOMP - 0) 20130, 10130, 20130 05620401
30130 IVDELE = IVDELE + 1 05630401
WRITE (I02,80000) IVTNUM 05640401
IF (ICZERO) 10130, 0141, 20130 05650401
10130 IVPASS = IVPASS + 1 05660401
WRITE (I02,80002) IVTNUM 05670401
GO TO 0141 05680401
20130 IVFAIL = IVFAIL + 1 05690401
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 05700401
0141 CONTINUE 05710401
C 05720401
C 05730401
C TESTS 14 AND 15 VERIFY THAT VALUE .T OR .F ARE ACCEPTABLE INPUT05740401
C FORMS AND THAT THE VALUE OF THE INTERNAL DATUM IS TRUE OR FALSE 05750401
C RESPECTIVELY. 05760401
C 05770401
C 05780401
LVON01 = .FALSE. 05790401
LVON02 = .TRUE. 05800401
0142 FORMAT (76X,L2,L2) 05810401
READ (I08, 0142) LVON01, LVON02 05820401
C THE ABOVE READ STATEMENT AND ASSOCIATED FORMAT IS FOR TESTS 05830401
C 14 AND 15 05840401
C 05850401
C 05860401
C **** FCVS PROGRAM 401 - TEST 014 **** 05870401
C 05880401
C TEST 14 TESTS THE INPUT FIELD CONTENTS .T FOR A TRUE CONDITION 05890401
C 05900401
C 05910401
IVTNUM = 14 05920401
IF (ICZERO) 30140, 0140, 30140 05930401
0140 CONTINUE 05940401
IVCOMP = 0 05950401
IF (LVON01) IVCOMP = 1 05960401
IVCORR = 1 05970401
40140 IF (IVCOMP - 1) 20140, 10140, 20140 05980401
30140 IVDELE = IVDELE + 1 05990401
WRITE (I02,80000) IVTNUM 06000401
IF (ICZERO) 10140, 0151, 20140 06010401
10140 IVPASS = IVPASS + 1 06020401
WRITE (I02,80002) IVTNUM 06030401
GO TO 0151 06040401
20140 IVFAIL = IVFAIL + 1 06050401
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 06060401
0151 CONTINUE 06070401
C 06080401
C **** FCVS PROGRAM 401 - TEST 015 **** 06090401
C 06100401
C 06110401
C TEST 15 TESTS THE INPUT FIELD CONTENTS .F FOR A FALSE CONDITION06120401
C 06130401
C 06140401
IVTNUM = 15 06150401
IF (ICZERO) 30150, 0150, 30150 06160401
0150 CONTINUE 06170401
IVCOMP = 1 06180401
IF (.NOT. LVON02) IVCOMP = 0 06190401
IVCORR = 0 06200401
40150 IF (IVCOMP - 0) 20150, 10150, 20150 06210401
30150 IVDELE = IVDELE + 1 06220401
WRITE (I02,80000) IVTNUM 06230401
IF (ICZERO) 10150, 0161, 20150 06240401
10150 IVPASS = IVPASS + 1 06250401
WRITE (I02,80002) IVTNUM 06260401
GO TO 0161 06270401
20150 IVFAIL = IVFAIL + 1 06280401
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 06290401
0161 CONTINUE 06300401
C 06310401
C 06320401
C TEST 16 AND 17 VERIFY THAT VALUE .T OR .F PRECEDED BY BLANKS 06330401
C ARE ACCEPTABLE INPUT FORMS AND THE VALUE OF THE INTERNAL DATA 06340401
C AS A RESULT OF THE READ ARE TRUE AND FALSE RESPECTIVELY. 06350401
C 06360401
C 06370401
LVON01 = .FALSE. 06380401
LVON02 = .TRUE. 06390401
0162 FORMAT (68X,L6,L6) 06400401
READ (I08, 0162) LVON01, LVON02 06410401
C THE ABOVE READ AND ASSOCIATED FORMAT STATEMENT ARE FOR TESTS 06420401
C 16 AND 17. 06430401
C 06440401
C 06450401
C **** FCVS PROGRAM 401 - TEST 016 **** 06460401
C 06470401
C TEST 16 TESTS THE INPUT FIELD CONTENTS .T PRECEDED BY 4 BLANKS 06480401
C FOR A TRUE CONDITION. 06490401
C 06500401
C 06510401
IVTNUM = 16 06520401
IF (ICZERO) 30160, 0160, 30160 06530401
0160 CONTINUE 06540401
IVCOMP = 0 06550401
IF (LVON01) IVCOMP = 1 06560401
IVCORR = 1 06570401
40160 IF (IVCOMP - 1) 20160, 10160, 20160 06580401
30160 IVDELE = IVDELE + 1 06590401
WRITE (I02,80000) IVTNUM 06600401
IF (ICZERO) 10160, 0171, 20160 06610401
10160 IVPASS = IVPASS + 1 06620401
WRITE (I02,80002) IVTNUM 06630401
GO TO 0171 06640401
20160 IVFAIL = IVFAIL + 1 06650401
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 06660401
0171 CONTINUE 06670401
C 06680401
C **** FCVS PROGRAM 401 - TEST 017 **** 06690401
C 06700401
C 06710401
C TEST 17 TESTS THE INPUT FIELD CONTENTS .F PRECEDED BY 4 BLANKS 06720401
C FOR A FALSE CONDITION. 06730401
C 06740401
C 06750401
IVTNUM = 17 06760401
IF (ICZERO) 30170, 0170, 30170 06770401
0170 CONTINUE 06780401
IVCOMP = 1 06790401
IF (.NOT. LVON02) IVCOMP = 0 06800401
IVCORR = 0 06810401
40170 IF (IVCOMP - 0) 20170, 10170, 20170 06820401
30170 IVDELE = IVDELE + 1 06830401
WRITE (I02,80000) IVTNUM 06840401
IF (ICZERO) 10170, 0181, 20170 06850401
10170 IVPASS = IVPASS + 1 06860401
WRITE (I02,80002) IVTNUM 06870401
GO TO 0181 06880401
20170 IVFAIL = IVFAIL + 1 06890401
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 06900401
0181 CONTINUE 06910401
C 06920401
C 06930401
C THE INPUT FIELD MAY HAVE T OR F FOLLOWED BY ADDITIONAL 06940401
C CHARACTERS IN THE FIELD. TESTS 18 THROUGH 24 VERIFY THAT T OR F 06950401
C FOLLOWED BY ADDITIONAL CHARACTERS ARE ACCEPTABLE INPUT FORMS AND 06960401
C THE VALUE OF THE LOGICAL ENTITIES AS A RESULT OF THE READ ARE TRUE06970401
C AND FALSE RESPECTIVELY. 06980401
C 06990401
C 07000401
LVON01 = .FALSE. 07010401
LVON02 = .TRUE. 07020401
0182 FORMAT (58X,L15,L7) 07030401
READ (I08, 0182) LVON01, LVON02 07040401
C THE ABOVE READ AND ASSOCIATED FORMAT STATEMENT ARE FOR TESTS 07050401
C 18 AND 19. 07060401
C 07070401
C **** FCVS PROGRAM 401 - TEST 018 **** 07080401
C 07090401
C 07100401
C TEST 18 TESTS THE INPUT FIELD CONTENTS OF 'THIS IS ALLOWED' 07110401
C FOR A TRUE CONDITION. 07120401
C 07130401
C 07140401
IVTNUM = 18 07150401
IF (ICZERO) 30180, 0180, 30180 07160401
0180 CONTINUE 07170401
IVCOMP = 0 07180401
IF (LVON01) IVCOMP = 1 07190401
IVCORR = 1 07200401
40180 IF (IVCOMP - 1) 20180, 10180, 20180 07210401
30180 IVDELE = IVDELE + 1 07220401
WRITE (I02,80000) IVTNUM 07230401
IF (ICZERO) 10180, 0191, 20180 07240401
10180 IVPASS = IVPASS + 1 07250401
WRITE (I02,80002) IVTNUM 07260401
GO TO 0191 07270401
20180 IVFAIL = IVFAIL + 1 07280401
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 07290401
0191 CONTINUE 07300401
C 07310401
C **** FCVS PROGRAM 401 - TEST 019 **** 07320401
C 07330401
C 07340401
C TEST 19 TEST THE INPUT FIELD CONTENTS 'FINALLY' FOR A 07350401
C FALSE CONDITION. 07360401
C 07370401
C 07380401
IVTNUM = 19 07390401
IF (ICZERO) 30190, 0190, 30190 07400401
0190 CONTINUE 07410401
IVCOMP = 1 07420401
IF (.NOT. LVON02) IVCOMP = 0 07430401
IVCORR = 0 07440401
40190 IF (IVCOMP - 0) 20190, 10190, 20190 07450401
30190 IVDELE = IVDELE + 1 07460401
WRITE (I02,80000) IVTNUM 07470401
IF (ICZERO) 10190, 0201, 20190 07480401
10190 IVPASS = IVPASS + 1 07490401
WRITE (I02,80002) IVTNUM 07500401
GO TO 0201 07510401
20190 IVFAIL = IVFAIL + 1 07520401
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 07530401
0201 CONTINUE 07540401
C 07550401
C **** FCVS PROGRAM 401 - TEST 020 **** 07560401
C 07570401
C 07580401
IVTNUM = 20 07590401
IF (ICZERO) 30200, 0200, 30200 07600401
0200 CONTINUE 07610401
LVON01 = .FALSE. 07620401
LVON02 = .TRUE. 07630401
0202 FORMAT (68X,L6,L6) 07640401
READ (I08, 0202) LVON01, LVON02 07650401
C THE ABOVE READ AND ASSOCIATED FORMAT STATEMENTS ARE FOR TESTS 07660401
C 20 AND 21. 07670401
C 07680401
C TEST 20 TESTS THE INPUT FIELD CONTENTS OF 'TRUE ' (T FOLLOWED 07690401
C BY CHARACTERS WHICH INCLUDE SPACES) FOR A TRUE CONDITION. 07700401
C 07710401
IVCOMP = 0 07720401
IF (LVON01) IVCOMP = 1 07730401
IVCORR = 1 07740401
40200 IF (IVCOMP - 1) 20200, 10200, 20200 07750401
30200 IVDELE = IVDELE + 1 07760401
WRITE (I02,80000) IVTNUM 07770401
IF (ICZERO) 10200, 0211, 20200 07780401
10200 IVPASS = IVPASS + 1 07790401
WRITE (I02,80002) IVTNUM 07800401
GO TO 0211 07810401
20200 IVFAIL = IVFAIL + 1 07820401
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 07830401
0211 CONTINUE 07840401
C 07850401
C **** FCVS PROGRAM 401 - TEST 021 **** 07860401
C 07870401
C 07880401
C TEST 21 TESTS THE INPUT FIELD CONTENTS OF 'FALSE ' 07890401
C (F FOLLOWED BY CHARACTERS WHICH INCLUDE SPACES) FOR A FALSE 07900401
C CONDITION. 07910401
C 07920401
C 07930401
IVTNUM = 21 07940401
IF (ICZERO) 30210, 0210, 30210 07950401
0210 CONTINUE 07960401
IVCOMP = 1 07970401
IF (.NOT. LVON02) IVCOMP = 0 07980401
IVCORR = 0 07990401
40210 IF (IVCOMP - 0) 20210, 10210, 20210 08000401
30210 IVDELE = IVDELE + 1 08010401
WRITE (I02,80000) IVTNUM 08020401
IF (ICZERO) 10210, 0221, 20210 08030401
10210 IVPASS = IVPASS + 1 08040401
WRITE (I02,80002) IVTNUM 08050401
GO TO 0221 08060401
20210 IVFAIL = IVFAIL + 1 08070401
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 08080401
0221 CONTINUE 08090401
C 08100401
C **** FCVS PROGRAM 401 - TEST 022 **** 08110401
C 08120401
C 08130401
C 08140401
IVTNUM = 22 08150401
IF (ICZERO) 30220, 0220, 30220 08160401
0220 CONTINUE 08170401
LVON01 = .FALSE. 08180401
LVON02 = .TRUE. 08190401
0222 FORMAT (60X,L10,L10) 08200401
READ (I08, 0222) LVON01, LVON02 08210401
C THE ABOVE READ AND ASSOCIATED FORMAT STATEMENT ARE FOR TESTS 08220401
C 22 AND 23. 08230401
C 08240401
C TEST 22 TESTS THE INPUT FIELD CONTENTS OF ' .TIME. ' (.T 08250401
C FOLLOWED BY CHARACTERS WHICH INCLUDE SPACES AND PERIODS) FOR A 08260401
C TRUE CONDITION. 08270401
C 08280401
IVCOMP = 0 08290401
IF (LVON01) IVCOMP = 1 08300401
IVCORR = 1 08310401
40220 IF (IVCOMP - 1) 20220, 10220, 20220 08320401
30220 IVDELE = IVDELE + 1 08330401
WRITE (I02,80000) IVTNUM 08340401
IF (ICZERO) 10220, 0231, 20220 08350401
10220 IVPASS = IVPASS + 1 08360401
WRITE (I02,80002) IVTNUM 08370401
GO TO 0231 08380401
20220 IVFAIL = IVFAIL + 1 08390401
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 08400401
0231 CONTINUE 08410401
C 08420401
C **** FCVS PROGRAM 401 - TEST 023 **** 08430401
C 08440401
C 08450401
C TEST 23 TESTS THE INPUT FIELD CONTENTS OF ' .FIELD. ' (.F 08460401
C FOLLOWED BY CHARACTERS WHICH INCLUDE SPACES AND PERIODS) FOR A 08470401
C FALSE CONDITION. 08480401
C 08490401
C 08500401
IVTNUM = 23 08510401
IF (ICZERO) 30230, 0230, 30230 08520401
0230 CONTINUE 08530401
IVCOMP = 1 08540401
IF (.NOT. LVON02) IVCOMP = 0 08550401
IVCORR = 0 08560401
40230 IF (IVCOMP - 0) 20230, 10230, 20230 08570401
30230 IVDELE = IVDELE + 1 08580401
WRITE (I02,80000) IVTNUM 08590401
IF (ICZERO) 10230, 0241, 20230 08600401
10230 IVPASS = IVPASS + 1 08610401
WRITE (I02,80002) IVTNUM 08620401
GO TO 0241 08630401
20230 IVFAIL = IVFAIL + 1 08640401
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 08650401
0241 CONTINUE 08660401
C 08670401
C **** FCVS PROGRAM 401 - TEST 024 **** 08680401
C 08690401
C 08700401
C 08710401
IVTNUM = 24 08720401
IF (ICZERO) 30240, 0240, 30240 08730401
0240 CONTINUE 08740401
LVON01 = .FALSE. 08750401
0242 FORMAT (27X,L53) 08760401
READ (I08, 0242) LVON01 08770401
C 08780401
C TEST 24 TESTS USE OF A LARGE INPUT FIELD WITH THE CONTENTS 08790401
C 'THIS IS A VERY LARGE FIELD FOR INPUT OF LOGICAL VALUES. '. THE 08800401
C EDIT DESCRIPTOR IS L53 AND THE VALUE OF THE INTERNAL DATUM AS A 08810401
C RESULT OF THE READ SHOULD GIVE A TRUE CONDITION. 08820401
C 08830401
IVCOMP = 0 08840401
IF (LVON01) IVCOMP = 1 08850401
IVCORR = 1 08860401
40240 IF (IVCOMP - 1) 20240, 10240, 20240 08870401
30240 IVDELE = IVDELE + 1 08880401
WRITE (I02,80000) IVTNUM 08890401
IF (ICZERO) 10240, 0251, 20240 08900401
10240 IVPASS = IVPASS + 1 08910401
WRITE (I02,80002) IVTNUM 08920401
GO TO 0251 08930401
20240 IVFAIL = IVFAIL + 1 08940401
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 08950401
0251 CONTINUE 08960401
C 08970401
C **** FCVS PROGRAM 401 - TEST 025 **** 08980401
C 08990401
C 09000401
C TEST 25 TESTS USE OF THE OPTIONAL REPEAT SPECIFICATION WITH 09010401
C THE L EDIT DESCRIPTOR. THE INPUT FIELD IS 1 POSITION IN LENGTH. 09020401
C 09030401
C 09040401
IVTNUM = 25 09050401
IF (ICZERO) 30250, 0250, 30250 09060401
0250 CONTINUE 09070401
LAON15(1) = .FALSE. 09080401
LAON15(2) = .TRUE. 09090401
LAON15(3) = .FALSE. 09100401
LAON15(4) = .TRUE. 09110401
LAON15(5) = .FALSE. 09120401
0252 FORMAT (75X,5L1) 09130401
READ (I08, 0252) (LAON15(I), I = 1, 5) 09140401
IVCOMP = 1 09150401
IVCORR = 2310 09160401
IF (LAON15(1)) IVCOMP = IVCOMP * 2 09170401
IF (.NOT. LAON15(2)) IVCOMP = IVCOMP * 3 09180401
IF (LAON15(3)) IVCOMP = IVCOMP * 5 09190401
IF (.NOT. LAON15(4)) IVCOMP = IVCOMP * 7 09200401
IF (LAON15(5)) IVCOMP = IVCOMP * 11 09210401
40250 IF (IVCOMP - 2310) 20250, 10250, 20250 09220401
30250 IVDELE = IVDELE + 1 09230401
WRITE (I02,80000) IVTNUM 09240401
IF (ICZERO) 10250, 0261, 20250 09250401
10250 IVPASS = IVPASS + 1 09260401
WRITE (I02,80002) IVTNUM 09270401
GO TO 0261 09280401
20250 IVFAIL = IVFAIL + 1 09290401
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 09300401
0261 CONTINUE 09310401
C 09320401
C **** FCVS PROGRAM 401 - TEST 026 **** 09330401
C 09340401
C 09350401
C TEST 26 IS SIMILAR TO TEST 25 EXCEPT THAT EACH INPUT FIELD 09360401
C CONTAINING LOGICAL DATA IS 4 CHARACTERS IN LENGTH. THE EDIT 09370401
C DESCRIPTOR IS 4L4. 09380401
C 09390401
C 09400401
IVTNUM = 26 09410401
IF (ICZERO) 30260, 0260, 30260 09420401
0260 CONTINUE 09430401
LAON15(1) = .FALSE. 09440401
LAON15(2) = .FALSE. 09450401
LAON15(3) = .TRUE. 09460401
LAON15(4) = .TRUE. 09470401
0262 FORMAT (64X,4L4) 09480401
READ (I08, 0262) (LAON15(I), I = 1, 4) 09490401
IVCOMP = 1 09500401
IVCORR = 210 09510401
IF (LAON15 (1)) IVCOMP = IVCOMP * 2 09520401
IF (LAON15(2)) IVCOMP = IVCOMP * 3 09530401
IF (.NOT. LAON15(3)) IVCOMP = IVCOMP * 5 09540401
IF (.NOT. LAON15(4)) IVCOMP = IVCOMP * 7 09550401
40260 IF (IVCOMP - 210) 20260, 10260, 20260 09560401
30260 IVDELE = IVDELE + 1 09570401
WRITE (I02,80000) IVTNUM 09580401
IF (ICZERO) 10260, 0271, 20260 09590401
10260 IVPASS = IVPASS + 1 09600401
WRITE (I02,80002) IVTNUM 09610401
GO TO 0271 09620401
20260 IVFAIL = IVFAIL + 1 09630401
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 09640401
0271 CONTINUE 09650401
C 09660401
C 09670401
C THE PURPOSE OF TESTS 27 THROUGH 29 IS TO VERIFY THAT RECORDS 09680401
C CAN BE WRITTEN USING ONE EDIT DESCRIPTOR FORM AND READ USING 09690401
C ANOTHER FORM. 09700401
C 09710401
C 09720401
C 09730401
C **** FCVS PROGRAM 401 - TEST 027 **** 09740401
C 09750401
C 09760401
C TEST 27 READS A RECORD WITH THE EDIT DESCRIPTORS 4X,L1. THE 09770401
C RECORD WAS WRITTEN USING THE DESCRIPTOR L5. THE VALUE OF THE 09780401
C LOGICAL ENTITIES AS A RESULT OF THE READ SHOULD BE TRUE. 09790401
C 09800401
C 09810401
IVTNUM = 27 09820401
IF (ICZERO) 30270, 0270, 30270 09830401
0270 CONTINUE 09840401
LVON01 = .FALSE. 09850401
0272 FORMAT (55X,20X,4X,L1) 09860401
READ (I08, 0272) LVON01 09870401
IVCOMP = 0 09880401
IVCORR = 1 09890401
IF (LVON01) IVCOMP = 1 09900401
40270 IF (IVCOMP - 1) 20270, 10270, 20270 09910401
30270 IVDELE = IVDELE + 1 09920401
WRITE (I02,80000) IVTNUM 09930401
IF (ICZERO) 10270, 0281, 20270 09940401
10270 IVPASS = IVPASS + 1 09950401
WRITE (I02,80002) IVTNUM 09960401
GO TO 0281 09970401
20270 IVFAIL = IVFAIL + 1 09980401
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 09990401
0281 CONTINUE 10000401
C 10010401
C **** FCVS PROGRAM 401 - TEST 028 **** 10020401
C 10030401
C TEST 28 READS A RECORD WITH THE EDIT DESCRIPTOR 4X,L1. THE 10040401
C RECORD WAS WRITTEN USING THE EDIT DESCRIPTOR L5. THIS TEST IS 10050401
C SIMILAR TO TEST 27 EXCEPT THE VALUE OF THE LOGICAL ENTITIES AS A 10060401
C RESULT OF THE READ SHOULD BE FALSE. 10070401
C 10080401
C 10090401
IVTNUM = 28 10100401
IF (ICZERO) 30280, 0280, 30280 10110401
0280 CONTINUE 10120401
LVON02 = .TRUE. 10130401
0282 FORMAT (55X,20X,4X,L1) 10140401
READ (I08, 0282) LVON02 10150401
IVCOMP = 1 10160401
IVCORR = 0 10170401
IF (.NOT. LVON02) IVCOMP = 0 10180401
40280 IF (IVCOMP - 0) 20280, 10280, 20280 10190401
30280 IVDELE = IVDELE + 1 10200401
WRITE (I02,80000) IVTNUM 10210401
IF (ICZERO) 10280, 0291, 20280 10220401
10280 IVPASS = IVPASS + 1 10230401
WRITE (I02,80002) IVTNUM 10240401
GO TO 0291 10250401
20280 IVFAIL = IVFAIL + 1 10260401
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 10270401
0291 CONTINUE 10280401
C 10290401
C **** FCVS PROGRAM 401 - TEST 029 **** 10300401
C 10310401
C 10320401
C TEST 29 READS A RECORD WITH THE EDIT DESCRIPTOR L5. THE 10330401
C RECORD WAS WRITTEN USING THE EDIT DESCRIPTORS 4X,L1. THE VALUE 10340401
C OF INTERNAL DATUM AS A RESULT OF THE READ SHOULD BE TRUE. 10350401
C 10360401
C 10370401
IVTNUM = 29 10380401
IF (ICZERO) 30290, 0290, 30290 10390401
0290 CONTINUE 10400401
LVON01 = .FALSE. 10410401
0292 FORMAT (55X,20X,L5) 10420401
READ (I08, 0292) LVON01 10430401
IVCOMP = 0 10440401
IVCORR = 1 10450401
IF (LVON01) IVCOMP = 1 10460401
40290 IF (IVCOMP - 1) 20290, 10290, 20290 10470401
30290 IVDELE = IVDELE + 1 10480401
WRITE (I02,80000) IVTNUM 10490401
IF (ICZERO) 10290, 0301, 20290 10500401
10290 IVPASS = IVPASS + 1 10510401
WRITE (I02,80002) IVTNUM 10520401
GO TO 0301 10530401
20290 IVFAIL = IVFAIL + 1 10540401
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 10550401
0301 CONTINUE 10560401
C 10570401
C 10580401
C 10590401
C THE FOLLOWING SOURCE CODE BRACKETED BY THE COMMENT LINES 10600401
C ***** BEGIN-FILE-DUMP SECTION AND ***** END-FILE-DUMP SECTION 10610401
C MAY OR MAY NOT APPEAR AS COMMENTS IN THE SOURCE PROGRAM. 10620401
C THIS CODE IS OPTIONAL AND BY DEFAULT IT IS AUTOMATICALLY COMMENTED10630401
C OUT BY THE EXECUTIVE ROUTINE. A DUMP OF THE FILE USED BY THIS 10640401
C ROUTINE IS PROVIDED BY USING THE *OPT1 EXECUTIVE ROUTINE CONTROL 10650401
C CARD. IF THE OPTIONAL CODE IS SELECTED THE ROUTINE WILL DUMP 10660401
C THE CONTENTS OF THE FILE TO THE PRINT FILE FOLLOWING THE TEST 10670401
C REPORT AND BEFORE THE TEST REPORT SUMMARY. 10680401
C 10690401
C ***** BEGIN-FILE-DUMP SECTION ***** 10700401
C 10710401
C 10720401
CDB** 10730401
C REWIND I08 10740401
C ITOTR = 141 10750401
C IRNUM = 1 10760401
C ILUN = I08 10770401
C7701 FORMAT (I3,I2,I4,I3,2I4,60A1) 10780401
C7702 FORMAT (" ",I3,I2,I4,I3,2I4,60A1) 10790401
C7703 FORMAT (10X,"FILE ",I2," HAS ",I3," RECORDS - OK" ) 10800401
C7704 FORMAT (10X,"FILE ",I2," HAS ",I3," RECORDS - THERE SHOULD BE " , 10810401
C 1I3,9H RECORDS.) 10820401
C DO 7771 IRNUM = 1, ITOTR 10830401
C READ (ILUN, 7701) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 10840401
C 1 (IDUMP(ICH), ICH = 1,60) 10850401
C WRITE (I02, 7702) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 10860401
C 1 (IDUMP(ICH), ICH = 1,60) 10870401
C IF (IEOF .EQ. 9999) GO TO 7772 10880401
C7771 CONTINUE 10890401
C GO TO 7775 10900401
C7772 IF (IRNUM - ITOTR) 7774, 7773, 7775 10910401
C7773 WRITE (I02, 7703) ILUN, IRNUM 10920401
C GO TO 7779 10930401
C7774 WRITE (I02, 7704) ILUN, IRNUM, ITOTR 10940401
C GO TO 7779 10950401
C7775 DO 7776 I = 1,20 10960401
C READ (ILUN, 7701) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 10970401
C 1 (IDUMP(ICH), ICH = 1,60) 10980401
C WRITE (I02, 7702) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 10990401
C 1 (IDUMP(ICH), ICH = 1,60) 11000401
C IRNUM = IRNUM + 1 11010401
C IF (IEOF .EQ. 9999) GO TO 7777 11020401
C7776 CONTINUE 11030401
C7777 WRITE (I02 , 7704) ILUN, IRNUM, ITOTR 11040401
C7779 CONTINUE 11050401
CDE** * END-FILE-DUMP SECTION * 11060401
C TEST 029 IS THE LAST TEST IN THIS PROGRAM. THE ROUTINE SHOULD11070401
C HAVE MADE 29 EXPLICIT TESTS AND PROCESSED ONE FILE CONNECTED FOR 11080401
C SEQUENTIAL ACCESS 11090401
C 11100401
C 11110401
C 11120401
C WRITE OUT TEST SUMMARY 11130401
C 11140401
WRITE (I02,90004) 11150401
WRITE (I02,90014) 11160401
WRITE (I02,90004) 11170401
WRITE (I02,90000) 11180401
WRITE (I02,90004) 11190401
WRITE (I02,90020) IVFAIL 11200401
WRITE (I02,90022) IVPASS 11210401
WRITE (I02,90024) IVDELE 11220401
STOP 11230401
90001 FORMAT (" ",24X,"FM401") 11240401
90000 FORMAT (" ",20X,"END OF PROGRAM FM401" ) 11250401
C 11260401
C FORMATS FOR TEST DETAIL LINES 11270401
C 11280401
80000 FORMAT (" ",4X,I5,6X,"DELETED") 11290401
80002 FORMAT (" ",4X,I5,7X,"PASS") 11300401
80010 FORMAT (" ",4X,I5,7X,"FAIL",10X,I6,9X,I6) 11310401
80012 FORMAT (" ",4X,I5,7X,"FAIL",4X,E12.5,3X,E12.5) 11320401
80018 FORMAT (" ",4X,I5,7X,"FAIL",2X,A14,1X,A14) 11330401
C 11340401
C FORMAT STATEMENTS FOR PAGE HEADERS 11350401
C 11360401
90002 FORMAT ("1") 11370401
90004 FORMAT (" ") 11380401
90006 FORMAT (" ",10X,"FORTRAN COMPILER VALIDATION SYSTEM" ) 11390401
90008 FORMAT (" ",21X,"VERSION 2.1" ) 11400401
90010 FORMAT (" ",8X,"FOR OFFICIAL USE ONLY - COPYRIGHT 1978" ) 11410401
90012 FORMAT (" ",5X,"TEST",5X,"PASS/FAIL",5X,"COMPUTED",8X,"CORRECT") 11420401
90014 FORMAT (" ",5X,"----------------------------------------------" ) 11430401
90016 FORMAT (" ",18X,"SUBSET LEVEL TEST" ) 11440401
C 11450401
C FORMAT STATEMENTS FOR RUN SUMMARY 11460401
C 11470401
90020 FORMAT (" ",19X,I5," TESTS FAILED" ) 11480401
90022 FORMAT (" ",19X,I5," TESTS PASSED" ) 11490401
90024 FORMAT (" ",19X,I5," TESTS DELETED" ) 11500401
END 11510401