blob: 5fb397db978556c5fcda2ea25f4f6b547ecfd1c9 [file] [log] [blame]
PROGRAM FM402 00010402
C 00020402
C 00030402
C 00040402
C THIS ROUTINE TESTS THE A(W) (W IS SIZE OF FIELD IN CHARACTERS)00050402
C EDIT DESCRIPTOR OF THE FORMAT SPECIFICATION BOTH WITH AND WITHOUT 00060402
C THE OPTIONAL W. THE A EDIT DESCRIPTOR IS USED WITH AN INPUT/ 00070402
C OUTPUT LIST ITEM OF TYPE CHARACTER. IF A FIELD WIDTH W IS SPECI- 00080402
C FIED WITH THE A EDIT DESCRIPTOR THE FIELD CONSISTS OF W CHARAC- 00090402
C TERS. IF A FIELD WIDTH W IS NOT SPECIFIED WITH THE A EDIT DES- 00100402
C CRIPTOR, THE NUMBER OF CHARACTERS IN THE FIELD IS THE LENGTH OF 00110402
C THE CHARACTER INPUT/OUTPUT LIST ITEM. THIS ROUTINE FIRST 00120402
C TESTS FOR PROPER EDITING OF CHARACTER DATA ON OUTPUT BY DIRECTING00130402
C THE EDITED RESULT TO A PRINT FILE. RESULTS OF THIS SET OF 00140402
C TESTS MUST BE VISUALLY CHECKED FOR CORRECTNESS. NEXT AN EXTERNAL 00150402
C FILE CONNECTED FOR SEQUENTIAL ACCESS IS CREATED WITH CHARACTER 00160402
C DATA. FINALLY THE FILE IS REWOUND AND READ WITH THE A(W) EDIT 00170402
C DESCRIPTOR AND CHECKED FOR PROPER EDITING ON INPUT. 00180402
C 00190402
C THIS ROUTINE TESTS FOR PROPER EDITING BY 00200402
C 00210402
C (1) THE A EDIT DESCRIPTOR WITHOUT THE OPTIONAL W ON BOTH INPUT00220402
C AND OUTPUT, 00230402
C 00240402
C (2) THE AW EDIT DESCRIPTOR WHEN THE LENGTH OF THE INPUT/OUTPUT00250402
C LIST ITEM IS LESS THAN THE WIDTH W, 00260402
C 00270402
C (3) THE AW EDIT DESCRIPTOR WHEN THE LENGTH OF THE INPUT/OUTPUT00280402
C LIST ITEM IS BOTH EQUAL TO AND GREATER THAN THE WIDTH W, 00290402
C 00300402
C (4) THE A EDIT DESCRIPTOR WHEN USED WITH THE OPTIONAL REPEAT 00310402
C SPECIFICATION. 00320402
C 00330402
C REFERENCES - 00340402
C 00350402
C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, 00360402
C X3.9-1978 00370402
C 00380402
C SECTION 3.1, FORTRAN CHARACTER SET 00390402
C SECTION 4.8, CHARACTER TYPE 00400402
C SECTION 8.4.2, CHARACTER TYPE-STATEMENT 00410402
C SECTION 10.4, CHARACTER ASSIGNMENT STATEMENT 00420402
C SECTION 13.5.11, A EDITING 00430402
C 00440402
C 00450402
C 00460402
C 00470402
C ******************************************************************00480402
C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE 00490402
C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN STANDARD FORTRAN 00500402
C X3.9-1978, HAS BEEN DEVELOPED BY THE DEPARTMENT OF THE NAVY. THE 00510402
C FORTRAN COMPILER VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT 00520402
C ROUTINES, THEIR RELATED DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT00530402
C ROUTINE IS A FORTRAN PROGRAM OR SUBPROGRAM WHICH INCLUDES TESTS 00540402
C OF SPECIFIC LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING00550402
C THE RESULT OF EXECUTING THESE TESTS. 00560402
C 00570402
C THIS PARTICULAR PROGRAM OR SUBPROGRAM CONTAINS ONLY FEATURES 00580402
C FOUND IN THE SUBSET LEVEL OF THE STANDARD. 00590402
C 00600402
C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO 00610402
C NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY 00620402
C SOFTWARE STANDARDS VALIDATION GROUP 00630402
C BUILDING 225 RM A266 00640402
C GAITHERSBURG, MD 20899 00650402
C ******************************************************************00660402
C 00670402
C 00680402
IMPLICIT LOGICAL (L) 00690402
IMPLICIT CHARACTER*14 (C) 00700402
C 00710402
DIMENSION IDUMP (80) 00720402
DIMENSION CATN11(46), CATN12(5), CATN31(2,3,2), CATN14(46) 00730402
CHARACTER CATN11*1, CVTN11*1, CATN12*5, CATN31*1 00740402
CHARACTER CVTN12*10, CVTN13*2, CATN14*1, CCTN15*50, CVTN15*50 00750402
CHARACTER CVTN01*1 00760402
00770402
DATA CATN14 /46*' '/ 00780402
DATA CCTN15 /'ABCDEFG HIJKLMN OPQRSTUVWXYZ 0123456789'/00790402
DATA CATN11 / '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 00800402
1'=', '+', '-','*', '/', '(', ')', ',', '.', '''','A', 'B', 'C', 00810402
2'D', 'E', 'F','G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 00820402
3'Q', 'R', 'S','T', 'U', 'V', 'W', 'X', 'Y', 'Z'/ 00830402
DATA CATN12 /'ABMYZ', '01589', '=+-()','A5+Z.' ,'1''A,4'/ 00840402
00850402
C 00860402
C 00870402
C 00880402
C INITIALIZATION SECTION. 00890402
C 00900402
C INITIALIZE CONSTANTS 00910402
C ******************** 00920402
C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER 00930402
I01 = 5 00940402
C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER 00950402
I02 = 6 00960402
C SYSTEM ENVIRONMENT SECTION 00970402
C 00980402
CX010 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-010 CONTROL CARD.00990402
C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 01000402
C (UNIT NUMBER FOR CARD READER). 01010402
CX011 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-011 CONTROL CARD01020402
C THE CX011 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 01030402
C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX010 ABOVE. 01040402
C 01050402
CX020 THIS CARD IS PEPLACED BY CONTENTS OF FEXEC X-020 CONTROL CARD.01060402
C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02 = 6 01070402
C (UNIT NUMBER FOR PRINTER). 01080402
CX021 THIS CARD IS PEPLACED BY CONTENTS OF FEXEC X-021 CONTROL CARD.01090402
C THE CX021 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 01100402
C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX020 ABOVE. 01110402
C 01120402
IVPASS = 0 01130402
IVFAIL = 0 01140402
IVDELE = 0 01150402
ICZERO = 0 01160402
C 01170402
C WRITE OUT PAGE HEADERS 01180402
C 01190402
WRITE (I02,90002) 01200402
WRITE (I02,90006) 01210402
WRITE (I02,90008) 01220402
WRITE (I02,90004) 01230402
WRITE (I02,90010) 01240402
WRITE (I02,90004) 01250402
WRITE (I02,90016) 01260402
WRITE (I02,90001) 01270402
WRITE (I02,90004) 01280402
WRITE (I02,90012) 01290402
WRITE (I02,90014) 01300402
WRITE (I02,90004) 01310402
C 01320402
C 01330402
C 01340402
C TEST 001 THROUGH 014 TESTS THE EDIT DESCRIPTOR FOR PROPER 01350402
C EDITING OF CHARACTER DATA ON OUTPUT. TO VALIDATE THESE TESTS 01360402
C THE EDITED DATA IS SENT TO A PRINT FILE AND THEREFORE MUST BE 01370402
C VISUALLY CHECKED FOR CORRECTNESS. ON OUTPUT THE EDITED FIELD 01380402
C SIZE IS AW WHERE W IS NUMBER OF POSITIONS IN THE FIELD OR 01390402
C IS THE SIZE OF THE OUTPUT DATUM ITEM. SEE SECTION 13.5.11 A 01400402
C EDITING 01410402
C 01420402
C 01430402
80052 FORMAT (" ",4X, "TESTS 001 THROUGH 014 MUST BE VISUALLY VERIFIED.01440402
1") 01450402
80054 FORMAT (" ", "IMMEDIATELY FOLLOWING THIS NARRATIVE IS A REFERENCE01460402
1 LINE") 01470402
80056 FORMAT (" ", "OF THE FORM '123456 ...'. THE REFERENCE LINE IS T01480402
1O") 01490402
80058 FORMAT (" ","AID IN THE VISUAL VERIFICATION OF THE TESTS. FOR" ) 01500402
80062 FORMAT (" ","THE OUTPUT TO BE CORRECT THE DATA VALUES DISPLAYED" 01510402
1) 01520402
80064 FORMAT (" ", "IN THE COMPUTED COLUMN MUST MATCH THAT IN THE CORRE01530402
1CT ") 01540402
80066 FORMAT (" ","COLUMN IN BOTH VALUE AND CHARACTER POSITION." ) 01550402
80072 FORMAT (" ","REFERENCE LINE - " ,"1234567890" ,5X, "123401560402
1567890") 01570402
WRITE (I02,80052) 01580402
WRITE (I02,80054) 01590402
WRITE (I02,80056) 01600402
WRITE (I02,80058) 01610402
WRITE (I02,80062) 01620402
WRITE (I02,80064) 01630402
WRITE (I02,80066) 01640402
WRITE (I02,90004) 01650402
WRITE (I02,80072) 01660402
C 01670402
C **** FCVS PROGRAM 402 - TEST 001 **** 01680402
C 01690402
C TEST 001 TESTS FOR PROPER EDITING OF THE A EDIT DESCRIPTOR 01700402
C ON OUTPUT WHERE THE FIELD IS 1 POSITION IN LENGTH, THE 01710402
C VALUE OF THE DATUM IS LETTERS AND THE OUTPUT LIST ITEM IS A 01720402
C VARIABLE. 01730402
C 01740402
IVTNUM = 001 01750402
IF (ICZERO) 30010, 0010, 30010 01760402
0010 CONTINUE 01770402
CVTN01 = 'A' 01780402
0012 FORMAT (" ",4X,I5,26X,A,14X,"A") 01790402
WRITE (I02, 0012) IVTNUM, CVTN01 01800402
GO TO 0021 01810402
30010 IVDELE = IVDELE + 1 01820402
WRITE (I02,80000) IVTNUM 01830402
0021 CONTINUE 01840402
C 01850402
C **** FCVS PROGRAM 402 - TEST 002 **** 01860402
C 01870402
C TEST 002 IS SIMILAR TO TEST 001 EXCEPT THAT THE OUTPUT LIST 01880402
C ITEM IS AN ARRAY ELEMENT. 01890402
C 01900402
IVTNUM = 002 01910402
IF (ICZERO) 30020, 0020, 30020 01920402
0020 CONTINUE 01930402
CATN31 (1,2,1) = 'Z' 01940402
0022 FORMAT (" ",4X,I5,26X,A,14X,"Z") 01950402
WRITE (I02, 0022) IVTNUM, CATN31 (1,2,1) 01960402
GO TO 0031 01970402
30020 IVDELE = IVDELE + 1 01980402
WRITE (I02,80000) IVTNUM 01990402
0031 CONTINUE 02000402
C 02010402
C *** FCVS PROGRAM 402 - TEST 003 **** 02020402
C 02030402
C TEST 003 VERIFIES THAT THE A EDIT DESCRIPTOR (WITHOUT THE 02040402
C W OPTION) CAN PROPERLY EDIT SPECIAL CHARACTERS ON OUTPUT. THE 02050402
C SPECIAL CHARACTER / (SLASH) IS USED FOR THIS TEST AND IS STORED 02060402
C IN AN OUTPUT LIST ITEM 1 POSITION IN LENGTH. 02070402
C 02080402
IVTNUM = 003 02090402
IF (ICZERO) 30030, 0030, 30030 02100402
0030 CONTINUE 02110402
CVTN11 = '/' 02120402
0032 FORMAT (" ",4X,I5,26X,A,14X,"/") 02130402
WRITE (I02, 0032) IVTNUM, CVTN11 02140402
GO TO 0041 02150402
30030 IVDELE = IVDELE + 1 02160402
WRITE (I02, 80000) IVTNUM 02170402
0041 CONTINUE 02180402
C 02190402
C *** FCVS PROGRAM 402 - TEST 004 *** 02200402
C 02210402
C TEST 004 IS SIMILAR TO TEST 003 EXCEPT THAT THE DATA BEING 02220402
C EDITED IS NUMERIC. 02230402
C 02240402
IVTNUM = 004 02250402
IF (ICZERO) 30040, 0040, 30040 02260402
0040 CONTINUE 02270402
CVTN11 = '9' 02280402
0042 FORMAT (" ",4X,I5,26X,A,14X,"9") 02290402
WRITE (I02, 0042) IVTNUM, CVTN11 02300402
GO TO 0051 02310402
30040 IVDELE = IVDELE + 1 02320402
WRITE (I02, 80000) IVTNUM 02330402
0051 CONTINUE 02340402
C 02350402
C *** FCVS PROGRAM 402 - TEST 005 *** 02360402
C 02370402
C TEST 005 IS SIMILAR TO TEST 003 EXCEPT THAT IT USES THE SPECIAL02380402
C CHARACTER QUOTE. 02390402
C 02400402
IVTNUM = 005 02410402
IF (ICZERO) 30050, 0050, 30050 02420402
0050 CONTINUE 02430402
CVTN11 = '''' 02440402
0052 FORMAT (" ",4X,I5,26X,A,14X,"'") 02450402
WRITE (I02, 0052) IVTNUM, CVTN11 02460402
GO TO 0061 02470402
30050 IVDELE = IVDELE + 1 02480402
WRITE (I02, 80000) IVTNUM 02490402
C 02500402
C 02510402
C TESTS 006 THROUGH TEST 011 TESTS THE A EDIT DESCRIPTOR 02520402
C WITHOUT THE FIELD WIDTH SPECIFICATION (W OPTION) WHERE THE SIZE 02530402
C OF THE OUTPUT DATA ITEM IS 05 CHARACTERS IN LENGTH. 02540402
C 02550402
C 02560402
0061 CONTINUE 02570402
C 02580402
C **** FCVS PROGRAM 402 - TEST 006 **** 02590402
C 02600402
C TEST 006 TESTS USE OF THE A EDIT DESCRIPTOR WITH LETTERS 02610402
C 02620402
IVTNUM = 006 02630402
IF (ICZERO) 30060, 0060, 30060 02640402
0060 CONTINUE 02650402
CATN12(1) = 'ABMYZ' 02660402
0062 FORMAT(" ",4X,I5,17X," ",A,5X," ABMYZ" ) 02670402
WRITE (I02, 0062) IVTNUM, CATN12(1) 02680402
GO TO 0071 02690402
30060 IVDELE = IVDELE + 1 02700402
WRITE (I02, 80000) IVTNUM 02710402
0071 CONTINUE 02720402
C 02730402
C **** FCVS PROGRAM 402 - TEST 007 **** 02740402
C 02750402
C TEST 007 TESTS USE OF THE A EDIT DESCRIPTOR WITH DIGITS 02760402
C 02770402
IVTNUM = 007 02780402
IF (ICZERO) 30070, 0070, 30070 02790402
0070 CONTINUE 02800402
CATN12(2) = '01589' 02810402
0072 FORMAT(" ",4X,I5,17X," ",A,5X," 01589" ) 02820402
WRITE (I02, 0072) IVTNUM, CATN12(2) 02830402
GO TO 0081 02840402
30070 IVDELE = IVDELE + 1 02850402
WRITE (I02, 80000) IVTNUM 02860402
0081 CONTINUE 02870402
C 02880402
C **** FCVS PROGRAM 402 - TEST 008 **** 02890402
C 02900402
C TEST 008 TESTS USE OF THE A EDIT DESCRIPTOR WITH SPECIAL 02910402
C CHARACTERS. 02920402
C 02930402
IVTNUM = 008 02940402
IF (ICZERO) 30080, 0080, 30080 02950402
0080 CONTINUE 02960402
CATN12(3) = '=+-()' 02970402
0082 FORMAT(" ",4X,I5,17X," ",A,5X," =+-()" ) 02980402
WRITE (I02, 0082) IVTNUM, CATN12(3) 02990402
GO TO 0091 03000402
30080 IVDELE = IVDELE + 1 03010402
WRITE (I02, 80000) IVTNUM 03020402
0091 CONTINUE 03030402
C 03040402
C **** FCVS PROGRAM FM402 - TEST 009 **** 03050402
C 03060402
C TEST 009 TESTS USE OF THE A EDIT DESCRIPTOR WITH A MIX 03070402
C OF LETTERS, DIGITS AND SPECIAL CHARACTERS 03080402
C 03090402
IVTNUM = 009 03100402
IF (ICZERO) 30090, 0090, 30090 03110402
0090 CONTINUE 03120402
CATN12(4) = 'A5+.Z' 03130402
0092 FORMAT(" ",4X,I5,17X," ",A,5X," A5+.Z" ) 03140402
WRITE (I02, 0092) IVTNUM, CATN12(4) 03150402
GO TO 0101 03160402
30090 IVDELE = IVDELE + 1 03170402
WRITE (I02, 80000) IVTNUM 03180402
0101 CONTINUE 03190402
C 03200402
C **** FCVS PROGRAM FM402 - TEST 010 **** 03210402
C 03220402
C TEST 010 TESTS USE OF THE A EDIT DESCRIPTOR WITH A MIX 03230402
C OF LETTERS, DIGITS AND SPECIAL CHARACTERS INCLUDING APOSTROPES 03240402
C 03250402
IVTNUM = 010 03260402
IF (ICZERO) 30100, 0100, 30100 03270402
0100 CONTINUE 03280402
CATN12(5) = '1''A,4' 03290402
0102 FORMAT(" ",4X,I5,17X," ",A,5X," 1'A,4" ) 03300402
WRITE (I02, 0102) IVTNUM, CATN12(5) 03310402
GO TO 0111 03320402
30100 IVDELE = IVDELE + 1 03330402
WRITE (I02, 80000) IVTNUM 03340402
C 03350402
0111 CONTINUE 03360402
C **** FCVS PROGRAM FM402 - TEST 11 **** 03370402
C 03380402
C TEST 011 USES THE A EDIT DESCRIPTOR (WITHOUT THE OPTIONAL 03390402
C FIELD WIDTH SPECIFIED) WITH THE OPTIONAL REPEAT SPECIFICATION. 03400402
C EACH OUTPUT LIST ITEM WILL BE ONE CHARACTER IN LENGTH. 03410402
C 03420402
IVTNUM = 011 03430402
IF (ICZERO) 30110, 0110, 30110 03440402
0110 CONTINUE 03450402
0112 FORMAT (" ",4X,I5,17X,10A,5X,"059=+PQUVY" ) 03460402
WRITE (I02, 0112) IVTNUM, CATN11(1), CATN11(6), CATN11(10), 03470402
1CATN11(11), CATN11(12), CATN11(36), CATN11(37), CATN11(41), 03480402
2CATN11(42), CATN11(45) 03490402
GO TO 0121 03500402
30110 IVDELE = IVDELE + 1 03510402
WRITE (I02, 80000) IVTNUM 03520402
0121 CONTINUE 03530402
C 03540402
C **** FCVS PROGRAM FM402 - TEST 12 **** 03550402
C 03560402
C TEST 012 IS SIMILAR TO 011 IN THAT THE A DESCRIPTOR IS USED 03570402
C WITH THE OPTIONAL REPEAT SPECIFICATION E. G., 3A HOWEVER, EACH 03580402
C OUTPUT LIST ITEM HAS A DIFFERENT NUMBER OF CHARACTERS IN THE ITEM 03590402
C E. G., THE FIRST I/O LIST ITEM HAS 5 CHARACTERS, THE SECOND 03600402
C ITEM HAS 2 CHARACTERS AND THE THIRD ITEM HAS 1 CHARACTER. 03610402
C 03620402
IVTNUM = 012 03630402
IF (ICZERO) 30120, 0120, 30120 03640402
0120 CONTINUE 03650402
CVTN13 = 'YZ' 03660402
CVTN11 = ')' 03670402
CATN12(2) = '(12AB' 03680402
0122 FORMAT (" ",4X,I5,17X,"*",3A,"*",5X,"*(12ABYZ)*" ) 03690402
WRITE (I02, 0122) IVTNUM, CATN12(2), CVTN13, CVTN11 03700402
GO TO 0131 03710402
30120 IVDELE = IVDELE + 1 03720402
WRITE (I02, 80000) IVTNUM 03730402
0131 CONTINUE 03740402
C 03750402
C **** FCVS PROGRAM FM402 - TEST 13 *** 03760402
C 03770402
C TEST 013 TESTS FOR PROPER EDITING OF THE A EDIT DESCRIPTOR 03780402
C (WITH THE FIELD WIDTH SPECIFIED) WHEN THE OUTPUT LIST ITEM 03790402
C HAS FEWER CHARACTERS THAN SPECIFIED BY THE EDIT DESCRIPTOR. THE 03800402
C OUTPUT FIELD SHOULD CONSISTS OF BLANKS FOLLOWED BY CHARACTERS 03810402
C FROM THE INTERNAL REPRESENTATION. 03820402
C 03830402
IVTNUM = 013 03840402
IF (ICZERO) 30130, 0130, 30130 03850402
0130 CONTINUE 03860402
CATN12(1) = 'ABMYZ' 03870402
0132 FORMAT (" ",4X,I5,17X,A10,5X," ABMYZ" ) 03880402
WRITE (I02, 0132) IVTNUM, CATN12(1) 03890402
GO TO 0141 03900402
30130 IVDELE = IVDELE + 1 03910402
WRITE (I02, 80000) IVTNUM 03920402
0141 CONTINUE 03930402
C 03940402
C **** FCVS PROGRAM FM402 - TEST 14 **** 03950402
C 03960402
C TEST 014 TESTS FOR PROPER EDITING OF THE A EDIT DESCRIPTOR 03970402
C (WITH THE FIELD WIDTH SPECIFIED) WHEN THE OUTPUT LIST ITEM 03980402
C IS GREATER THAN THAT SPECIFIED BY THE EDIT DESCRIPTOR. THE OUTPUT03990402
C FIELD SHOULD CONSIST OF THE LEFTMOST CHARACTERS FROM THE INTERNAL 04000402
C REPRESENTATION. 04010402
C 04020402
IVTNUM = 014 04030402
IF (ICZERO) 30140, 0140, 30140 04040402
0140 CONTINUE 04050402
CVTN12 = '12345ABCDE' 04060402
0142 FORMAT (" ",4X,I5,17X," ",A5,5X," 12345" ) 04070402
WRITE (I02, 0142) IVTNUM, CVTN12 04080402
GO TO 0151 04090402
30140 IVDELE = IVDELE + 1 04100402
WRITE (I02, 80000) IVTNUM 04110402
0151 CONTINUE 04120402
C 04130402
C THE FOLLOWING BLOCK OF SOURCE CODE BEGINNING WITH COMMENT LINE 04140402
C **** CREATE-FILE SECTION AND ENDING WITH THE COMMENT LINE 04150402
C **** END-OF-CREATE-FILE SECTION BUILDS A FILE WHICH IS USED IN 04160402
C TESTING THE A EDIT DESCRIPTOR. THE FILE PROPERTIES ARE: 04170402
C 04180402
C FILE IDENTIFIER - I09 (X-NUMBER 09) 04190402
C RECORD SIZE - 80 CHARACTERS 04200402
C ACCESS METHOD - SEQUENTIAL 04210402
C RECORD TYPE - FORMATTED 04220402
C DESIGNATED DEVICE - DISK 04230402
C TYPE OF DATA - CHARACTER (A FORMAT) 04240402
C RECORDS IN FILE - 143 PLUS THE ENDFILE RECORD 04250402
C 04260402
C THE FIRST 20 POSITIONS OF EACH RECORD IN THE FILE UNIQUELY 04270402
C IDENTIFIES THAT RECORD. THE REMAINING POSITONS OF THE RECORD 04280402
C CONTAIN DATA WHICH IS USED IN TESTING THE A EDIT DESCRIPTOR. 04290402
C A DESCRIPTION OF EACH FIELD OF THE 20-CHARACTER PREAMBLE FOLLOWS. 04300402
C 04310402
C VARIABLE NAME IN PROGRAM CHARACTER POSITIONS 04320402
C -------- ---- -- ------- --------- --------- 04330402
C 04340402
C IPROG (ROUTINE NAME) - 1 THRU 3 04350402
C IFILE (LOGICAL/ X-NUMBER) - 4 THRU 5 04360402
C ITOTR (RECORDS IN FILE) - 6 THRU 9 04370402
C IRLGN (CHARACTERS IN RECORD) - 10 THRU 12 04380402
C IRECN (RECORD NUMBER) - 13 THRU 16 04390402
C IEOF (9999 IF LAST RECORD) - 17 THRU 20 04400402
C 04410402
C DEFAULT ASSIGNMENT FOR FILE IS I09 = 07 04420402
I09 = 409 04430402
CX090 THIS CARD IS REPLACED BY THE CONTENTS OF CARD X-090 04440402
CX091 THIS CARD IS REPLACED BY THE CONTENTS OF CARD X-091 04450402
IPROG = 402 04460402
IFILE = I09 04470402
ITOTR = 143 04480402
IRLGN = 80 04490402
IRECN = 0 04500402
IEOF = 0 04510402
C 04520402
C 04530402
C ***** CREATE-FILE SECTION ***** 04540402
C 04550402
C 04560402
C **** FCVS PROGRAM 402 - TEST 015 **** 04570402
C 04580402
C 04590402
C TEST 15 WRITES RECORDS USING THE A EDIT DESCRIPTOR WITHOUT THE04600402
C OPTIONAL FIELD WIDTH SPECIFICATION. EACH CHARACTER OF THE 04610402
C FORTRAN SET IS WRITTEN WITH AN A EDIT DESCRIPTOR FROM 04620402
C THE INTERNAL REPRESENTATION WHICH IS ONE CHARACTER IN LENGTH. 04630402
C TEN DIFFERENT CHARACTERS ARE WRITTEN IN EACH RECORD UNTIL THE 04640402
C FULL CHARACTER SET IS EXHAUSTED. THIS SEQUENCE IS REPEATED UNTIL04650402
C 50 RECORDS HAVE BEEN WRITTEN (5 RECORDS PER SET AND 10 SETS). 04660402
C THE RECORDS ARE WRITTEN TO A MASS STORAGE FILE. 04670402
C 04680402
C 04690402
IVTNUM = 15 04700402
IF (ICZERO) 30150, 0150, 30150 04710402
0150 CONTINUE 04720402
70003 FORMAT (I3,I2,I4,I3,2I4,50X,10A) 04730402
70004 FORMAT (I3,I2,I4,I3,2I4,54X,6A) 04740402
IRECN = 0 04750402
DO 4023 I=1,10 04760402
IRECN = IRECN + 1 04770402
WRITE (I09, 70003) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 04780402
1 (CATN11 (J), J = 1,10) 04790402
C CHARACTERS 0 THROUGH 9 ARE CONTAINED IN THIS RECORD 04800402
IRECN = IRECN + 1 04810402
WRITE (I09, 70003) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 04820402
1 (CATN11(J), J = 11,20) 04830402
C CHARACTERS =,+,-,*,/,(,),,,. AND ' ARE IN THIS RECORD. 04840402
IRECN = IRECN + 1 04850402
WRITE (I09, 70003) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 04860402
1 (CATN11(J), J = 21,30) 04870402
C CHARACTERS A THROUGH J ARE IN THIS RECORD 04880402
IRECN = IRECN + 1 04890402
WRITE (I09, 70003) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 04900402
1 (CATN11(J), J = 31,40) 04910402
C CHARACTERS K THROUGH T ARE IN THIS RECORD 04920402
IRECN = IRECN + 1 04930402
WRITE (I09, 70004) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 04940402
1 (CATN11(J), J = 41,46) 04950402
C CHARACTERS U THROUGH Z ARE IN THIS RECORD 04960402
4023 CONTINUE 04970402
IVCOMP = IRECN 04980402
IVCORR = 050 04990402
IVON01 = 50 05000402
40150 IF (IVON01 - IRECN ) 20150, 10150, 20150 05010402
C VALUE IN IVCOMP IS THE NUMBER OF RECORDS WRITTEN 05020402
30150 IVDELE = IVDELE + 1 05030402
WRITE (I02,80000) IVTNUM 05040402
IF (ICZERO) 10150, 0161, 20150 05050402
10150 IVPASS = IVPASS + 1 05060402
WRITE (I02,80002) IVTNUM 05070402
GO TO 0161 05080402
20150 IVFAIL = IVFAIL + 1 05090402
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 05100402
0161 CONTINUE 05110402
C 05120402
C **** FCVS PROGRAM 402 - TEST 016 **** 05130402
C 05140402
C 05150402
C TEST 16 IS THE SAME AS TEST 15 EXCEPT THAT THE 50 RECORDS 05160402
C WRITTEN USE THE A EDIT DESCRIPTOR WITH THE OPTIONAL FIELD WIDTH05170402
C SPECIFIED. 05180402
C 05190402
C 05200402
IVTNUM = 16 05210402
IF (ICZERO) 30160, 0160, 30160 05220402
0160 CONTINUE 05230402
70005 FORMAT (I3,I2,I4,I3,2I4,50X,10A1) 05240402
70006 FORMAT (I3,I2,I4,I3,2I4,54X,6A1) 05250402
IRECN = 50 05260402
DO 4024 I=1,10 05270402
IRECN = IRECN + 1 05280402
WRITE (I09, 70005) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 05290402
1 (CATN11(J), J = 1,10) 05300402
C CHARACTERS 0 THROUGH 9 ARE CONTAINED IN THIS RECORD 05310402
IRECN = IRECN + 1 05320402
WRITE (I09, 70005) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 05330402
1 (CATN11(J), J = 11,20) 05340402
C CHARACTERS =,+,-,*,/,(,),,,. AND ' ARE IN THIS RECORD 05350402
IRECN = IRECN + 1 05360402
WRITE (I09, 70005) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 05370402
1 (CATN11(J), J = 21,30) 05380402
C CHARACTERS A THROUGH J ARE IN THIS RECORD 05390402
IRECN = IRECN + 1 05400402
WRITE (I09, 70005) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 05410402
1 (CATN11(J), J = 31,40) 05420402
C CHARACTERS K THROUGH T ARE IN THIS RECORD 05430402
IRECN = IRECN + 1 05440402
WRITE (I09, 70006) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 05450402
1 (CATN11(J), J = 41,46) 05460402
C CHARACTERS U THROUGH Z ARE IN THIS RECORD 05470402
4024 CONTINUE 05480402
IVCOMP = IRECN - 50 05490402
IVCORR = 50 05500402
IVON01 = 100 05510402
40160 IF (IVON01 - IRECN) 20160, 10160, 20160 05520402
30160 IVDELE = IVDELE + 1 05530402
WRITE (I02,80000) IVTNUM 05540402
IF (ICZERO) 10160, 0171, 20160 05550402
10160 IVPASS = IVPASS + 1 05560402
WRITE (I02,80002) IVTNUM 05570402
GO TO 0171 05580402
20160 IVFAIL = IVFAIL + 1 05590402
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 05600402
0171 CONTINUE 05610402
C 05620402
C **** FCVS PROGRAM 402 - TEST 017 **** 05630402
C 05640402
C 05650402
C TEST 17 WRITES 40 RECORDS CONTAINING CHARACTER DATA WHICH IS 05660402
C USED FOR LATER TESTS. THE FILE SHOULD CONTAIN 140 RECORDS 05670402
C FOLLOWING EXECUTION OF THIS TEST. 05680402
C 05690402
C 05700402
IVTNUM = 17 05710402
IF (ICZERO) 30170, 0170, 30170 05720402
0170 CONTINUE 05730402
70007 FORMAT (I3,I2,I4,I3,2I4, "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 05740402
1 ") 05750402
70008 FORMAT (I3,I2,I4,I3,2I4, "=+-*/(),'.ABMYZ01589=+-()A5+Z.1'A,4 05760402
1 ") 05770402
IRECN = 100 05780402
DO 4025 I = 1,20 05790402
IRECN = IRECN + 1 05800402
WRITE (I09, 70007) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF 05810402
C CHARACTERS 0 THROUGH 9 AND A THROUGH Z ARE IN THIS RECORD 05820402
IRECN = IRECN + 1 05830402
WRITE (I09, 70008) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF 05840402
C SPECIAL CHARACTERS ARE IN THIS RECORD 05850402
4025 CONTINUE 05860402
IVCOMP = IRECN - 100 05870402
IVCORR = 40 05880402
IVON01 = 140 05890402
40170 IF (IVON01 - IRECN) 20170, 10170, 20170 05900402
30170 IVDELE = IVDELE + 1 05910402
WRITE (I02,80000) IVTNUM 05920402
IF (ICZERO) 10170, 0181, 20170 05930402
10170 IVPASS = IVPASS + 1 05940402
WRITE (I02,80002) IVTNUM 05950402
GO TO 0181 05960402
20170 IVFAIL = IVFAIL + 1 05970402
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 05980402
0181 CONTINUE 05990402
C 06000402
C **** FCVS PROGRAM 402 - TEST 018 **** 06010402
C 06020402
C 06030402
C TEST 18 WRITES A RECORD WHICH CONTAINS A LONG FIELD (50 CHAR- 06040402
C ACTERS) USING AN A EDIT DESCRIPTOR WITHOUT THE OPTIONAL FIELD 06050402
C WIDTH SPECIFICATION. 06060402
C 06070402
C 06080402
IVTNUM = 18 06090402
IF (ICZERO) 30180, 0180, 30180 06100402
0180 CONTINUE 06110402
IRECN = 141 06120402
70009 FORMAT (I3,I2,I4,I3,2I4,10X,A) 06130402
WRITE (I09, 70009) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, CCTN1506140402
IVCOMP = IRECN - 140 06150402
IVCORR = 1 06160402
IVON01 = 141 06170402
40180 IF (IVON01 - IRECN) 20180, 10180, 20180 06180402
30180 IVDELE = IVDELE + 1 06190402
WRITE (I02,80000) IVTNUM 06200402
IF (ICZERO) 10180, 0191, 20180 06210402
10180 IVPASS = IVPASS + 1 06220402
WRITE (I02,80002) IVTNUM 06230402
GO TO 0191 06240402
20180 IVFAIL = IVFAIL + 1 06250402
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 06260402
0191 CONTINUE 06270402
C 06280402
C **** FCVS PROGRAM 402 - TEST 019 **** 06290402
C 06300402
C 06310402
C TEST 19 WRITES A LONG FIELD (50 CHARACTERS) 06320402
C USING AN A EDIT DESCRIPTOR WITH THE OPTIONAL FIELD WIDTH 06330402
C SPECIFICATION. 06340402
C 06350402
C 06360402
IVTNUM = 19 06370402
IF (ICZERO) 30190, 0190, 30190 06380402
0190 CONTINUE 06390402
IRECN = 142 06400402
70010 FORMAT (I3,I2,I4,I3,2I4,10X,A50) 06410402
WRITE (I09, 70010) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, CCTN1506420402
IVCOMP = IRECN - 141 06430402
IVCORR = 1 06440402
IVON01 = 142 06450402
40190 IF (IVON01 - IRECN) 20190, 10190, 20190 06460402
30190 IVDELE = IVDELE + 1 06470402
WRITE (I02,80000) IVTNUM 06480402
IF (ICZERO) 10190, 0201, 20190 06490402
10190 IVPASS = IVPASS + 1 06500402
WRITE (I02,80002) IVTNUM 06510402
GO TO 0201 06520402
20190 IVFAIL = IVFAIL + 1 06530402
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 06540402
0201 CONTINUE 06550402
C 06560402
C **** FCVS PROGRAM 402 - TEST 020 **** 06570402
C 06580402
C 06590402
IVTNUM = 20 06600402
IF (ICZERO) 30200, 0200, 30200 06610402
0200 CONTINUE 06620402
IRECN = IRECN + 1 06630402
IEOF = 9999 06640402
70011 FORMAT (I3,I2,I4,I3,2I4,59X," ") 06650402
WRITE (I09, 70011) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF 06660402
ENDFILE I09 06670402
REWIND I09 06680402
WRITE (I02, 90004) 06690402
70012 FORMAT (" FILE I09 HAS BEEN CREATED AND CONTAINS 143 RECORDS" ) 06700402
70013 FORMAT (" INCORRECT NUMBER OF RECORDS IN FILE - " , I5 , " RECO06710402
1RDS") 06720402
70014 FORMAT (" WRITTEN BUT 143 RECORDS SHOULD HAVE BEEN WRITTEN." ) 06730402
IF (IRECN - 143) 4020, 4021, 4020 06740402
4020 WRITE (I02, 70013) IRECN 06750402
WRITE (I02, 70014) 06760402
GO TO 4022 06770402
4021 WRITE (I02, 70012) 06780402
WRITE (I02, 90004) 06790402
C 06800402
C **** END-OF-CREATE-FILE SECTION **** 06810402
C 06820402
4022 CONTINUE 06830402
C 06840402
C TESTS 20 THROUGH 24 READ 5 OF THE FIRST 50 RECORDS USING THE 06850402
C A EDIT DESCRIPTOR WITHOUT THE OPTIONAL FIELD WIDTH SPECIFICATION. 06860402
C EACH CHARACTER IS CHECKED FOR PROPER EDITING. THE FIELDS ARE 06870402
C WRITTEN AND READ WITH THE SAME A EDIT DESCRIPTOR FORM. THE 06880402
C RESULTING NUMBER FROM EACH TEST IN IVCOMP AND IVCORR IS 06890402
C THE NUMBER OF CORRECT CHARACTERS FOUND AS A RESULT OF THE READ. 06900402
C 06910402
C 06920402
C TEST 20 READS AND CHECKS THE CHARACTERS 0 THROUGH 9. THE 06930402
C VALUE RESULTING FROM THE TEST IN IVCOMP AND IVCORR REFLECTS THE 06940402
C NUMBER OF CORRECT CHARACTERS FOUND AS A RESULT OF THE READ. 06950402
C 06960402
IVCOMP = 0 06970402
IVCORR = 10 06980402
0202 FORMAT (70X,10A) 06990402
READ (I09, 0202) (CATN14(J), J = 1,10) 07000402
DO 0203 I=1,10 07010402
IF (CATN14(I) .EQ. CATN11(I)) IVCOMP = IVCOMP + 1 07020402
0203 CONTINUE 07030402
40200 IF (IVCOMP - 10) 20200, 10200, 20200 07040402
30200 IVDELE = IVDELE + 1 07050402
WRITE (I02,80000) IVTNUM 07060402
IF (ICZERO) 10200, 0211, 20200 07070402
10200 IVPASS = IVPASS + 1 07080402
WRITE (I02,80002) IVTNUM 07090402
GO TO 0211 07100402
20200 IVFAIL = IVFAIL + 1 07110402
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 07120402
0211 CONTINUE 07130402
C 07140402
C **** FCVS PROGRAM 402 - TEST 021 **** 07150402
C 07160402
C 07170402
C TEST 21 READS AND CHECKS THE CHARACTERS =,+,-,*,/,(,),,,., AND07180402
C '. THE NUMBER RESULTING FROM THE TEST IN IVCOMP AND IVCORR 07190402
C REFLECTS THE NUMBER OF CORRECT CHARACTERS FOUND AS A RESULT OF 07200402
C THE READ. 07210402
C 07220402
C 07230402
IVTNUM = 21 07240402
IF (ICZERO) 30210, 0210, 30210 07250402
0210 CONTINUE 07260402
IVCOMP = 0 07270402
IVCORR = 10 07280402
0212 FORMAT (70X,10A) 07290402
READ (I09, 0212) (CATN14(J), J = 11,20) 07300402
DO 0213 I = 11,20 07310402
IF (CATN14(I) .EQ. CATN11(I)) IVCOMP = IVCOMP + 1 07320402
0213 CONTINUE 07330402
40210 IF (IVCOMP - 10) 20210, 10210, 20210 07340402
30210 IVDELE = IVDELE + 1 07350402
WRITE (I02,80000) IVTNUM 07360402
IF (ICZERO) 10210, 0221, 20210 07370402
10210 IVPASS = IVPASS + 1 07380402
WRITE (I02,80002) IVTNUM 07390402
GO TO 0221 07400402
20210 IVFAIL = IVFAIL + 1 07410402
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 07420402
0221 CONTINUE 07430402
C 07440402
C **** FCVS PROGRAM 402 - TEST 022 **** 07450402
C 07460402
C 07470402
C TEST 22 READS AND CHECKS THE CHARACTERS A THROUGH J. 07480402
C 07490402
C 07500402
IVTNUM = 22 07510402
IF (ICZERO) 30220, 0220, 30220 07520402
0220 CONTINUE 07530402
IVCOMP = 0 07540402
IVCORR = 10 07550402
0222 FORMAT (70X,10A) 07560402
READ (I09, 0222) (CATN14(J), J = 21,30) 07570402
DO 0223 I = 21,30 07580402
IF (CATN14(I) .EQ. CATN11(I)) IVCOMP = IVCOMP + 1 07590402
0223 CONTINUE 07600402
40220 IF (IVCOMP - 10) 20220, 10220, 20220 07610402
30220 IVDELE = IVDELE + 1 07620402
WRITE (I02,80000) IVTNUM 07630402
IF (ICZERO) 10220, 0231, 20220 07640402
10220 IVPASS = IVPASS + 1 07650402
WRITE (I02,80002) IVTNUM 07660402
GO TO 0231 07670402
20220 IVFAIL = IVFAIL + 1 07680402
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 07690402
0231 CONTINUE 07700402
C 07710402
C **** FCVS PROGRAM 402 - TEST 023 **** 07720402
C 07730402
C 07740402
C TEST 23 READS AND CHECKS THE CHARACTERS K THROUGH T. 07750402
C 07760402
C 07770402
IVTNUM = 23 07780402
IF (ICZERO) 30230, 0230, 30230 07790402
0230 CONTINUE 07800402
IVCOMP = 0 07810402
IVCORR = 10 07820402
0232 FORMAT (70X,10A) 07830402
READ (I09, 0232) (CATN14(J), J = 31,40) 07840402
DO 0233 I = 31,40 07850402
IF (CATN14(I) .EQ. CATN11(I)) IVCOMP = IVCOMP + 1 07860402
0233 CONTINUE 07870402
40230 IF (IVCOMP - 10) 20230, 10230, 20230 07880402
30230 IVDELE = IVDELE + 1 07890402
WRITE (I02,80000) IVTNUM 07900402
IF (ICZERO) 10230, 0241, 20230 07910402
10230 IVPASS = IVPASS + 1 07920402
WRITE (I02,80002) IVTNUM 07930402
GO TO 0241 07940402
20230 IVFAIL = IVFAIL + 1 07950402
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 07960402
0241 CONTINUE 07970402
C 07980402
C **** FCVS PROGRAM 402 - TEST 024 **** 07990402
C 08000402
C 08010402
C TEST 24 READS AND CHECKS THE CHARACTERS U THROUGH Z. 08020402
C 08030402
C 08040402
IVTNUM = 24 08050402
IF (ICZERO) 30240, 0240, 30240 08060402
0240 CONTINUE 08070402
IVCOMP = 0 08080402
IVCORR = 06 08090402
0242 FORMAT (74X,6A) 08100402
READ (I09, 0242) (CATN14(J), J = 41,46) 08110402
DO 0243 I = 41,46 08120402
IF (CATN14(I) .EQ. CATN11(I)) IVCOMP = IVCOMP + 1 08130402
0243 CONTINUE 08140402
40240 IF (IVCOMP - 6) 20240, 10240, 20240 08150402
30240 IVDELE = IVDELE + 1 08160402
WRITE (I02,80000) IVTNUM 08170402
IF (ICZERO) 10240, 0251, 20240 08180402
10240 IVPASS = IVPASS + 1 08190402
WRITE (I02,80002) IVTNUM 08200402
GO TO 0251 08210402
20240 IVFAIL = IVFAIL + 1 08220402
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 08230402
0251 CONTINUE 08240402
C 08250402
C 08260402
C TESTS 25 THROUGH 29 READ RECORD NUMBERS 56 THROUGH 60 USING 08270402
C THE A EDIT DESCRIPTOR WITH THE OPTIONAL FIELD WIDTH SPECIFIED. 08280402
C EACH FIELD IS 1 CHARACTER IN LENGTH AND IS CHECKED FOR PROPER 08290402
C EDITING. THE FIELDS ARE WRITTEN AND READ WITH THE SAME EDIT 08300402
C DESCRIPTOR. THE NUMBER RESULTING FROM EACH TEST IN IVCOMP AND 08310402
C IVCORR IS THE THE NUMBER OF CORRECT CHARACTERS FOUND AS A RESULT 08320402
C OF THE READ. 08330402
C 08340402
C 08350402
70020 FORMAT (12X,2I4,59X,A1) 08360402
REWIND I09 08370402
DO 4026 I = 1, 150 08380402
READ (I09, 70020, END = 4027) IRECN, IEOF 08390402
IF (IRECN .EQ. 55) GO TO 4027 08400402
4026 CONTINUE 08410402
4027 IF (IRECN - 55) 4028, 4029, 4028 08420402
C 08430402
C THE CODE IMMEDIATELY PRECEDING POSITIONS THE FILE TO RECORD 08440402
C NUMBER 55 FOR TESTS 25 THROUGH 29. 08450402
C 08460402
70021 FORMAT ( " THE INITIAL RECORD FOR TESTS 25 THROUGH 29 COULD NOT 08470402
1BE FOUND,") 08480402
70022 FORMAT (" THEREFORE TESTS 25 THROUGH 29 ARE DELETED." ) 08490402
4028 WRITE (I02, 70021) 08500402
WRITE (I02, 70022) 08510402
GO TO 301 08520402
4029 CONTINUE 08530402
DO 4030 I = 1,46 08540402
CATN14(I) = ' ' 08550402
4030 CONTINUE 08560402
C 08570402
C THE ABOVE DO LOOP INITIALIZES THE ARRAY CATN14 TO BLANKS. 08580402
C 08590402
C 08600402
C **** FCVS PROGRAM 402 - TEST 025 **** 08610402
C 08620402
C 08630402
C TEST 25 READS AND CHECKS THE CHARACTERS 0 THROUGH 9. 08640402
C 08650402
C 08660402
IVTNUM = 25 08670402
IF (ICZERO) 30250, 0250, 30250 08680402
0250 CONTINUE 08690402
IVCOMP = 0 08700402
IVCORR = 10 08710402
0252 FORMAT (70X,10A1) 08720402
READ (I09, 0252) (CATN14(J), J = 1, 10) 08730402
DO 0253 I = 1,10 08740402
IF (CATN14(I) .EQ. CATN11(I)) IVCOMP = IVCOMP + 1 08750402
0253 CONTINUE 08760402
40250 IF (IVCOMP - 10) 20250, 10250, 20250 08770402
30250 IVDELE = IVDELE + 1 08780402
WRITE (I02,80000) IVTNUM 08790402
IF (ICZERO) 10250, 0261, 20250 08800402
10250 IVPASS = IVPASS + 1 08810402
WRITE (I02,80002) IVTNUM 08820402
GO TO 0261 08830402
20250 IVFAIL = IVFAIL + 1 08840402
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 08850402
0261 CONTINUE 08860402
C 08870402
C **** FCVS PROGRAM 402 - TEST 026 **** 08880402
C 08890402
C 08900402
C TEST 26 READS AND CHECKS THE CHARACTERS =,+,-,*,/,(,),,,., AND08910402
C '. 08920402
C 08930402
C 08940402
IVTNUM = 26 08950402
IF (ICZERO) 30260, 0260, 30260 08960402
0260 CONTINUE 08970402
IVCOMP = 0 08980402
IVCORR = 10 08990402
0262 FORMAT (70X,10A1) 09000402
READ (I09, 0262) (CATN14(J), J = 11, 20) 09010402
DO 0263 I = 11,20 09020402
IF (CATN14(I) .EQ. CATN11(I)) IVCOMP = IVCOMP + 1 09030402
0263 CONTINUE 09040402
40260 IF (IVCOMP -10) 20260, 10260, 20260 09050402
30260 IVDELE = IVDELE + 1 09060402
WRITE (I02,80000) IVTNUM 09070402
IF (ICZERO) 10260, 0271, 20260 09080402
10260 IVPASS = IVPASS + 1 09090402
WRITE (I02,80002) IVTNUM 09100402
GO TO 0271 09110402
20260 IVFAIL = IVFAIL + 1 09120402
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 09130402
0271 CONTINUE 09140402
C 09150402
C **** FCVS PROGRAM 402 - TEST 027 **** 09160402
C 09170402
C 09180402
C TEST 27 READS AND CHECKS THE CHARACTERS A THROUGH J. 09190402
C 09200402
C 09210402
IVTNUM = 27 09220402
IF (ICZERO) 30270, 0270, 30270 09230402
0270 CONTINUE 09240402
IVCOMP = 0 09250402
IVCORR = 10 09260402
0272 FORMAT (70X,10A1) 09270402
READ (I09, 0272) (CATN14(J), J = 21,30) 09280402
DO 0273 I = 21,30 09290402
IF (CATN14(I) .EQ. CATN11(I)) IVCOMP = IVCOMP + 1 09300402
0273 CONTINUE 09310402
40270 IF (IVCOMP - 10) 20270, 10270, 20270 09320402
30270 IVDELE = IVDELE + 1 09330402
WRITE (I02,80000) IVTNUM 09340402
IF (ICZERO) 10270, 0281, 20270 09350402
10270 IVPASS = IVPASS + 1 09360402
WRITE (I02,80002) IVTNUM 09370402
GO TO 0281 09380402
20270 IVFAIL = IVFAIL + 1 09390402
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 09400402
0281 CONTINUE 09410402
C 09420402
C **** FCVS PROGRAM 402 - TEST 028 **** 09430402
C 09440402
C 09450402
C TEST 28 READS AND CHECKS THE CHARACTERS K THROUGH T. 09460402
C 09470402
C 09480402
IVTNUM = 28 09490402
IF (ICZERO) 30280, 0280, 30280 09500402
0280 CONTINUE 09510402
IVCOMP = 0 09520402
IVCORR = 10 09530402
0282 FORMAT (70X,10A1) 09540402
READ (I09, 0282) (CATN14(J), J = 31,40) 09550402
DO 0283 I = 31, 40 09560402
IF (CATN14(I) .EQ. CATN11(I)) IVCOMP = IVCOMP + 1 09570402
0283 CONTINUE 09580402
40280 IF (IVCOMP - 10) 20280, 10280, 20280 09590402
30280 IVDELE = IVDELE + 1 09600402
WRITE (I02,80000) IVTNUM 09610402
IF (ICZERO) 10280, 0291, 20280 09620402
10280 IVPASS = IVPASS + 1 09630402
WRITE (I02,80002) IVTNUM 09640402
GO TO 0291 09650402
20280 IVFAIL = IVFAIL + 1 09660402
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 09670402
0291 CONTINUE 09680402
C 09690402
C **** FCVS PROGRAM 402 - TEST 029 **** 09700402
C 09710402
C 09720402
C TEST 29 READS AND CHECKS THE CHARACTERS U THROUGH Z. 09730402
C 09740402
C 09750402
IVTNUM = 29 09760402
IF (ICZERO) 30290, 0290, 30290 09770402
0290 CONTINUE 09780402
IVCOMP = 0 09790402
IVCORR = 6 09800402
0292 FORMAT (74X,6A1) 09810402
READ (I09, 0292) (CATN14(J), J = 41,46) 09820402
DO 0293 I = 41,46 09830402
IF (CATN14(I) .EQ. CATN11(I)) IVCOMP = IVCOMP + 1 09840402
0293 CONTINUE 09850402
40290 IF (IVCOMP - 6) 20290, 10290, 20290 09860402
30290 IVDELE = IVDELE + 1 09870402
WRITE (I02,80000) IVTNUM 09880402
IF (ICZERO) 10290, 0301, 20290 09890402
10290 IVPASS = IVPASS + 1 09900402
WRITE (I02,80002) IVTNUM 09910402
GO TO 0301 09920402
20290 IVFAIL = IVFAIL + 1 09930402
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 09940402
0301 CONTINUE 09950402
C 09960402
C 09970402
C TESTS 30 THROUGH 32 READ RECORD NUMBERS 101 THROUGH 103. THESE09980402
C TESTS TEST FOR PROPER EDITING ON INPUT WHERE THE INPUT FIELD 09990402
C AND THE INPUT LIST ITEM ARE OF DIFFERENT SIZES. 10000402
C 10010402
C 10020402
70031 FORMAT (12X,2I4,59X,A1) 10030402
REWIND I09 10040402
DO 4031 I = 1,150 10050402
READ (I09, 70031, END = 4032) IRECN, IEOF 10060402
IF (IRECN .EQ. 100) GO TO 4032 10070402
4031 CONTINUE 10080402
4032 IF (IRECN - 100) 4033, 4034, 4033 10090402
70032 FORMAT ( " THE START RECORD FOR TESTS 30 THROUGH 32 COULD NOT 10100402
1BE FOUND,") 10110402
70033 FORMAT (" THEREFORE TESTS 30 THROUGH 32 ARE DELETED." ) 10120402
4033 WRITE (I02, 70032) 10130402
WRITE (I02, 70033) 10140402
GO TO 331 10150402
4034 CONTINUE 10160402
C 10170402
C **** FCVS PROGRAM 402 - TEST 030 **** 10180402
C 10190402
C 10200402
C TEST 30 TESTS THE A EDIT DESCRIPTOR WITH THE OPTIONAL REPEAT 10210402
C SPECIFICATION. THE A EDIT DESCRIPTOR DOES NOT HAVE THE OPTIONAL 10220402
C FIELD WIDTH SPECIFICATION AND THE INPUT LIST ITEMS VARY IN SIZE 10230402
C FROM 1 TO 10 CHARACTERS. RECORD NUMBER 101 IS READ AND WAS 10240402
C CREATED IN TEST 17 WITH THE FORMAT STATEMENT 10250402
C 10260402
C FORMAT (I3,I2,I4,I3,2I4,60HABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 10270402
C 1 ) 10280402
C 10290402
C 10300402
IVTNUM = 30 10310402
IF (ICZERO) 30300, 0300, 30300 10320402
0300 CONTINUE 10330402
IVCOMP = 1 10340402
IVCORR = 210 10350402
CATN14(1) = ' ' 10360402
CVTN13 = ' ' 10370402
CATN12(3) = ' ' 10380402
CVTN12 = ' ' 10390402
0302 FORMAT (20X,4A,42X,A1) 10400402
READ (I09, 0302, END = 0303) CATN14(1), CVTN13, CATN12(3), CVTN1210410402
0303 IF (CATN14(1) .EQ. 'A') IVCOMP = IVCOMP * 2 10420402
IF (CVTN13 .EQ. 'BC') IVCOMP = IVCOMP * 3 10430402
IF (CATN12(3) .EQ. 'DEFGH') IVCOMP = IVCOMP * 5 10440402
IF (CVTN12 .EQ. 'IJKLMNOPQR') IVCOMP = IVCOMP * 7 10450402
40300 IF (IVCOMP - 210) 20300, 10300, 20300 10460402
30300 IVDELE = IVDELE + 1 10470402
WRITE (I02,80000) IVTNUM 10480402
IF (ICZERO) 10300, 0311, 20300 10490402
10300 IVPASS = IVPASS + 1 10500402
WRITE (I02,80002) IVTNUM 10510402
GO TO 0311 10520402
20300 IVFAIL = IVFAIL + 1 10530402
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 10540402
0311 CONTINUE 10550402
C 10560402
C **** FCVS PROGRAM 402 - TEST 031 **** 10570402
C 10580402
C 10590402
C TEST 31 TESTS FOR PROPER EDITING OF THE A EDIT DESCRIPTOR WHEN10600402
C THE SPECIFIED WIDTH OF THE DESCRIPTOR IS LESS THAN THE INTERNAL 10610402
C REPRESENTATION OF THE INPUT LIST ITEM. THE CHARACTERS SHOULD 10620402
C APPEAR LEFT-JUSTIFIED WITH TRAILING BLANKS IN THE INTERNAL 10630402
C REPRESENTATION. RECORD NUMBER 102 IS READ AND WAS CREATED 10640402
C IN TEST 17 WITH THE FORMAT STATEMENT 10650402
C 10660402
C FORMAT (I3,I2,I4,I3,2I4,60H=+-*/(),'.ABMYZ01589=+-()A5+Z.1'A,4 10670402
C 1 ) 10680402
C 10690402
C 10700402
C 10710402
IVTNUM = 31 10720402
IF (ICZERO) 30310, 0310, 30310 10730402
0310 CONTINUE 10740402
CVTN12 = '9999999999' 10750402
IVCOMP = 0 10760402
IVCORR = 1 10770402
0312 FORMAT (20X,10X,A5,40X) 10780402
READ (I09, 0312, END = 0313) CVTN12 10790402
0313 IF (CVTN12 .EQ. 'ABMYZ ') IVCOMP = 1 10800402
40310 IF (IVCOMP - 1) 20310, 10310, 20310 10810402
30310 IVDELE = IVDELE + 1 10820402
WRITE (I02,80000) IVTNUM 10830402
IF (ICZERO) 10310, 0321, 20310 10840402
10310 IVPASS = IVPASS + 1 10850402
WRITE (I02,80002) IVTNUM 10860402
GO TO 0321 10870402
20310 IVFAIL = IVFAIL + 1 10880402
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 10890402
0321 CONTINUE 10900402
C 10910402
C **** FCVS PROGRAM 402 - TEST 032 **** 10920402
C 10930402
C 10940402
C TEST 32 TESTS FOR PROPER EDITING OF THE A EDIT 10950402
C DESCRIPTOR WHEN THE WIDTH OF THE DESCRIPTOR IS GREATER THAN THE 10960402
C INTERNAL REPRESENTATION OF THE INPUT LIST ITEM. THE RIGHTMOST 10970402
C CHARACTERS SHOULD BE TAKEN FROM THE INPUT FIELD. RECORD NUMBER 10980402
C 103 IS EXPECTED TO BE READ. THE RECORD WAS CREATED IN TEST 17 10990402
C WITH THE FORMAT STATEMENT 11000402
C 11010402
C FORMAT (I3,I2,I4,I3,2I4,60HABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 11020402
C 1 ) 11030402
C 11040402
C 11050402
C 11060402
IVTNUM = 32 11070402
IF (ICZERO) 30320, 0320, 30320 11080402
0320 CONTINUE 11090402
CATN12 (5) = 'AAAAA' 11100402
IVCOMP = 0 11110402
IVCORR = 1 11120402
0322 FORMAT (20X,10X,A10,35X) 11130402
READ (I09, 0322, END = 0323) CATN12 (5) 11140402
0323 IF (CATN12(5) .EQ. 'PQRST') IVCOMP = 1 11150402
40320 IF (IVCOMP - 1) 20320, 10320, 20320 11160402
30320 IVDELE = IVDELE + 1 11170402
WRITE (I02,80000) IVTNUM 11180402
IF (ICZERO) 10320, 0331, 20320 11190402
10320 IVPASS = IVPASS + 1 11200402
WRITE (I02,80002) IVTNUM 11210402
GO TO 0331 11220402
20320 IVFAIL = IVFAIL + 1 11230402
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 11240402
0331 CONTINUE 11250402
C 11260402
C 11270402
C TESTS 33 AND 34 READ A LONG INPUT FIELD (50 CHARACTERS) AND 11280402
C CHECK RESULTING INTERNAL REPRESENTATION. THE RECORD IS READ 11290402
C WITH THE SAME A EDIT DESCRIPTOR AS WAS USED TO WRITE THE RECORD. 11300402
C 11310402
C 11320402
70034 FORMAT (12X,2I4,60X) 11330402
REWIND I09 11340402
DO 4035 I = 1,150 11350402
READ (I09, 70034, END = 4036) IRECN, IEOF 11360402
IF (IRECN .EQ. 140) GO TO 4036 11370402
4035 CONTINUE 11380402
4036 IF (IRECN - 140) 4037, 4038, 4037 11390402
C THE ABOVE CODE POSITIONS THE FILE TO RECORD NUMBER 140 FOR 11400402
C TESTS 33 AND 34. 11410402
C 11420402
70035 FORMAT ( " THE START RECORD FOR TESTS 33 AND 34 COULD NOT BE 11430402
1FOUND,") 11440402
70036 FORMAT (" THEREFORE TESTS 33 AND 34 ARE DELETED." ) 11450402
4037 WRITE (I02, 70035) 11460402
WRITE (I02, 70036) 11470402
GO TO 351 11480402
4038 CONTINUE 11490402
C 11500402
C **** FCVS PROGRAM 402 - TEST 033 **** 11510402
C 11520402
C 11530402
C TEST 33 READS A LONG FIELD WITH THE WIDTH SPECIFIED ON THE A 11540402
C EDIT DESCRIPTOR. RECORD NUMBER 141 IS READ. THE RECORD WAS 11550402
C CREATED IN TEST 18 AND CONTAINS FIELD DATA OF 11560402
C 11570402
C 'ABCDEFG HIJKLMN OPQRSTUVWXYZ 0123456789' 11580402
C 11590402
C WITHOUT THE SURROUNDING APOSTROPHES. 11600402
C 11610402
C 11620402
C 11630402
IVTNUM = 33 11640402
IF (ICZERO) 30330, 0330, 30330 11650402
0330 CONTINUE 11660402
CVTN15 = ' ' 11670402
IVCOMP = 0 11680402
IVCORR = 1 11690402
0332 FORMAT (20X,10X,A50) 11700402
READ (I09, 0332) CVTN15 11710402
IF (CVTN15 .EQ. 'ABCDEFG HIJKLMN OPQRSTUVWXYZ 01234567811720402
19') IVCOMP = 1 11730402
40330 IF (IVCOMP -1 ) 20330, 10330, 20330 11740402
30330 IVDELE = IVDELE + 1 11750402
WRITE (I02,80000) IVTNUM 11760402
IF (ICZERO) 10330, 0341, 20330 11770402
10330 IVPASS = IVPASS + 1 11780402
WRITE (I02,80002) IVTNUM 11790402
GO TO 0341 11800402
20330 IVFAIL = IVFAIL + 1 11810402
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 11820402
0341 CONTINUE 11830402
C 11840402
C **** FCVS PROGRAM 402 - TEST 034 **** 11850402
C 11860402
C 11870402
C TEST 34 READS A LONG FIELD USING THE A EDIT DESCRIPTOR 11880402
C WITHOUT THE OPTIONAL WIDTH SPECIFIED. RECORD NUMBER 142 IS READ. 11890402
C THE RECORD WAS CREATED IN TEST 19 AND CONTAINS THE FIELD DATA 11900402
C 11910402
C 'ABCDEFG HIJKLMN OPQRSTUVWXYZ 0123456789' 11920402
C 11930402
C WITHOUT THE SURROUNDING APOSTROPHES. 11940402
C 11950402
C 11960402
IVTNUM = 34 11970402
IF (ICZERO) 30340, 0340, 30340 11980402
0340 CONTINUE 11990402
CVTN15 = ' ' 12000402
IVCOMP = 0 12010402
IVCORR = 1 12020402
0342 FORMAT (20X,10X,A) 12030402
READ (I09, 0342) CVTN15 12040402
IF (CVTN15 .EQ. 'ABCDEFG HIJKLMN OPQRSTUVWXYZ 01234567812050402
19') IVCOMP = 1 12060402
40340 IF (IVCOMP - 1) 20340, 10340, 20340 12070402
30340 IVDELE = IVDELE + 1 12080402
WRITE (I02,80000) IVTNUM 12090402
IF (ICZERO) 10340, 0351, 20340 12100402
10340 IVPASS = IVPASS + 1 12110402
WRITE (I02,80002) IVTNUM 12120402
GO TO 0351 12130402
20340 IVFAIL = IVFAIL + 1 12140402
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 12150402
0351 CONTINUE 12160402
C 12170402
C 12180402
C 12190402
C THE FOLLOWING SOURCE CODE BRACKETED BY THE COMMENT LINES 12200402
C ***** BEGIN-FILE-DUMP SECTION AND ***** END-FILE-DUMP SECTION 12210402
C MAY OR MAY NOT APPEAR AS COMMENTS IN THE SOURCE PROGRAM. 12220402
C THIS CODE IS OPTIONAL AND BY DEFAULT IT IS AUTOMATICALLY COMMENTED12230402
C OUT BY THE EXECUTIVE ROUTINE. A DUMP OF THE FILE USED BY THIS 12240402
C ROUTINE IS PROVIDED BY USING THE *OPT1 EXECUTIVE ROUTINE CONTROL 12250402
C CARD. IF THE OPTIONAL CODE IS SELECTED THE ROUTINE WILL DUMP 12260402
C THE CONTENTS OF THE FILE TO THE PRINT FILE FOLLOWING THE TEST 12270402
C REPORT AND BEFORE THE TEST REPORT SUMMARY. 12280402
C 12290402
CDB** BEGIN FILE DUMP CODE 12300402
C REWIND I09 12310402
C IRNUM = 1 12320402
C IRLGN = 80 12330402
C ILUN = I09 12340402
C7701 FORMAT (I3,I2,I4,I3,2I4,60A1) 12350402
C7702 FORMAT (" ",I3,I2,I4,I3,2I4,60A1) 12360402
C7703 FORMAT (10X,"FILE ",I2," HAS ",I3," RECORDS - OK" ) 12370402
C7704 FORMAT (10X,"FILE ",I2," HAS ",I3," RECORDS - THERE SHOULD BE " , 12380402
C 1I3,9H RECORDS.) 12390402
C DO 7771 IRNUM = 1, ITOTR 12400402
C READ (ILUN, 7701) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 12410402
C 1 (IDUMP(ICH), ICH = 1,60) 12420402
C WRITE (I02, 7702) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 12430402
C 1 (IDUMP(ICH), ICH = 1,60) 12440402
C IF (IEOF .EQ. 9999) GO TO 7772 12450402
C7771 CONTINUE 12460402
C GO TO 7775 12470402
C7772 IF (IRNUM - ITOTR) 7774, 7773, 7775 12480402
C7773 WRITE (I02, 7703) ILUN, IRNUM 12490402
C GO TO 7779 12500402
C7774 WRITE (I02, 7704) ILUN, IRNUM, ITOTR 12510402
C GO TO 7779 12520402
C7775 DO 7776 I = 1,20 12530402
C READ (ILUN, 7701) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 12540402
C 1 (IDUMP(ICH), ICH = 1,60) 12550402
C WRITE (I02, 7702) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 12560402
C 1 (IDUMP(ICH), ICH = 1,60) 12570402
C IRNUM = IRNUM + 1 12580402
C IF (IEOF .EQ. 9999) GO TO 7777 12590402
C7776 CONTINUE 12600402
C7777 WRITE (I02, 7704) ILUN, IRNUM, ITOTR 12610402
C7779 CONTINUE 12620402
CDE** END OF DUMP CODE 12630402
C 12640402
C THERE SHOULD BE 34 TESTS IN THIS ROUTINE 12650402
C 12660402
C 12670402
C 12680402
C 12690402
C WRITE OUT TEST SUMMARY 12700402
C 12710402
WRITE (I02,90004) 12720402
WRITE (I02,90014) 12730402
WRITE (I02,90004) 12740402
WRITE (I02,90000) 12750402
WRITE (I02,90004) 12760402
WRITE (I02,90020) IVFAIL 12770402
WRITE (I02,90022) IVPASS 12780402
WRITE (I02,90024) IVDELE 12790402
STOP 12800402
90001 FORMAT (" ",24X,"FM402") 12810402
90000 FORMAT (" ",20X,"END OF PROGRAM FM402" ) 12820402
C 12830402
C FORMATS FOR TEST DETAIL LINES 12840402
C 12850402
80000 FORMAT (" ",4X,I5,6X,"DELETED") 12860402
80002 FORMAT (" ",4X,I5,7X,"PASS") 12870402
80010 FORMAT (" ",4X,I5,7X,"FAIL",10X,I6,9X,I6) 12880402
80012 FORMAT (" ",4X,I5,7X,"FAIL",4X,E12.5,3X,E12.5) 12890402
80018 FORMAT (" ",4X,I5,7X,"FAIL",2X,A14,1X,A14) 12900402
C 12910402
C FORMAT STATEMENTS FOR PAGE HEADERS 12920402
C 12930402
90002 FORMAT ("1") 12940402
90004 FORMAT (" ") 12950402
90006 FORMAT (" ",10X,"FORTRAN COMPILER VALIDATION SYSTEM" ) 12960402
90008 FORMAT (" ",21X,"VERSION 2.1" ) 12970402
90010 FORMAT (" ",8X,"FOR OFFICIAL USE ONLY - COPYRIGHT 1978" ) 12980402
90012 FORMAT (" ",5X,"TEST",5X,"PASS/FAIL",5X,"COMPUTED",8X,"CORRECT") 12990402
90014 FORMAT (" ",5X,"----------------------------------------------" ) 13000402
90016 FORMAT (" ",18X,"SUBSET LEVEL TEST" ) 13010402
C 13020402
C FORMAT STATEMENTS FOR RUN SUMMARY 13030402
C 13040402
90020 FORMAT (" ",19X,I5," TESTS FAILED" ) 13050402
90022 FORMAT (" ",19X,I5," TESTS PASSED" ) 13060402
90024 FORMAT (" ",19X,I5," TESTS DELETED" ) 13070402
END 13080402