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