|
|
1.1 root 1: PROGRAM FM413 00010413
2: C DATE***82/08/02*18.33.46
3: C OWNER PRE/850703/TC-85- -410/ /FSTC/278FCVS*F78UBP20/
4: C AUDIT FCVS78 V2.0
5: C 00020413
6: C 00030413
7: C 00040413
8: C THIS ROUTINE TESTS FOR PROPER PROCESSING OF UNFORMATTED RECORDS00050413
9: C IN FILES CONNECTED FOR DIRECT ACCESS. FOR THE SUBSET LANGUAGE A 00060413
10: C FILE CONNECTED FOR DIRECT ACCESS MUST HAVE UNFORMATTED RECORDS 00070413
11: C THIS ROUTINE FIRST TESTS SEVERAL SYNTACTICAL VARIATIONS OF THE 00080413
12: C READ AND WRITE STATEMENTS USED IN CREATING AND ACCESSING 00090413
13: C RECORDS OF THE FILE. THE OPEN STATEMENT IS USED TO CONNECT 00100413
14: C THE FILE TO A UNIT AND ESTABLISH ITS CONNECTION FOR DIRECT 00110413
15: C ACCESS. THE FIRST SERIES OF TESTS CREATE AND ACCESS THE 00120413
16: C RECORDS OF THE FILE IN RECORD NUMBER SEQUENCE AND THE LAST 00130413
17: C SERIES OF TESTS CREATE AND ACCESS RECORDS OF THE FILE IN RANDOM 00140413
18: C ORDER. 00150413
19: C 00160413
20: C UNFORMATTED RECORDS MAY HAVE BOTH CHARACTER AND NONCHARACTER 00170413
21: C DATA AND THIS DATA IS TRANSFERRED WITHOUT EDITING BETWEEN THE 00180413
22: C CURRENT RECORD AND THE ENTITIES SPECIFIED BY THE INPUT/OUTPUT 00190413
23: C LIST. THIS ROUTINE BOTH READS AND WRITES RECORDS CONTAINING 00200413
24: C THE DATA TYPES OF INTEGER ,REAL AND LOGICAL WITH I/O LIST ITEMS 00210413
25: C REPRESENTED AS VARIABLE NAMES, ARRAY ELEMENT NAMES AND ARRAY 00220413
26: C NAMES. THIS ROUTINE DOES NOT TEST DATA OF TYPE CHARACTER. 00230413
27: C 00240413
28: C ROUTINE FM411 TESTS USE OF UNFORMATTED RECORDS 00250413
29: C WITH A FILE CONNECTED FOR SEQUENTIAL ACCESS. 00260413
30: C 00270413
31: C THIS ROUTINE TESTS 00280413
32: C 00290413
33: C (1) THE STATEMENT CONSTRUCTS 00300413
34: C 00310413
35: C A. WRITE (U,REC=RN) VARIABLE-NAME,... 00320413
36: C B. WRITE (U,REC=RN) ARRAY-ELEMENT-NAME,... 00330413
37: C C. WRITE (U,REC=RN) ARRAY-NAME,... 00340413
38: C D. WRITE (U,REC=RN) - NO OUTPUT LIST 00350413
39: C E. WRITE (U,REC=RN) IMPLIED-DO-LIST 00360413
40: C F. READ (U,REC=RN) VARIABLE-NAME,... 00370413
41: C G. READ (U,REC=RN) ARRAY-ELEMENT-NAME,... 00380413
42: C H. READ (U,REC=RN) ARRAY-NAME,... 00390413
43: C I. READ (U,REC=RN) - NO INPUT LIST 00400413
44: C J. READ (U,REC=RN) IMPLIED-DO-LIST 00410413
45: C 00420413
46: C (2) USE OF A READ STATEMENT WHERE THE NUMBER OF VALUES 00430413
47: C IN THE INPUT LIST IS LESS THAN OR EQUAL TO THE 00440413
48: C NUMBER OF VALUES IN THE RECORD. 00450413
49: C (3) USE OF THE STATEMENT 00460413
50: C OPEN (U,ACCESS='DIRECT',RECL=RL) 00470413
51: C FOR CONNECTING A FILE TO THE UNIT. 00480413
52: C 00490413
53: C (4) THAT THE RECORDS OF A DIRECT ACCESS FILE NEED NOT BE 00500413
54: C BE CREATED AND READ IN ORDER OF THEIR RECORD NUMBERS. 00510413
55: C 00520413
56: C (5) THAT THE VALUES OF THE RECORD MAY BE CHANGED WHEN 00530413
57: C THE RECORD IS REWRITTEN. 00540413
58: C REFERENCES - 00550413
59: C 00560413
60: C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, 00570413
61: C X3.9-1977 00580413
62: C 00590413
63: C SECTION 4.1, DATA TYPES 00600413
64: C SECTION 12.1.2, UNFORMATTED RECORD 00610413
65: C SECTION 12.2.4, FILE ACCESS 00620413
66: C SECTION 12.2.4.2, DIRECT ACCESS 00630413
67: C SECTION 12.3.3, UNIT SPECIFIER AND IDENTIFIER 00640413
68: C SECTION 12.7.2, END-OF-FILE SPECIFIER 00650413
69: C SECTION 12.8, READ, WRITE AND PRINT STATEMENTS 00660413
70: C SECTION 12.8.1, CONTROL INFORMATION LIST 00670413
71: C SECTION 12.8.2, INPUT/OUTPUT LIST 00680413
72: C SECTION 12.8.2.1, INPUT LIST ITEMS 00690413
73: C SECTION 12.8.2.2, OUTPUT LIST ITEMS 00700413
74: C SECTION 12.8.2.3, IMPLIED-DO LIST 00710413
75: C SECTION 12.9.5.1, UNFORMATTED DATA TRANSFER 00720413
76: C SECTION 12.10.1, OPEN STATEMENT 00730413
77: C 00740413
78: C 00750413
79: C 00760413
80: C ******************************************************************00770413
81: C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE 00780413
82: C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN STANDARD FORTRAN 00790413
83: C X3.9-1978, HAS BEEN DEVELOPED BY THE DEPARTMENT OF THE NAVY. THE 00800413
84: C FORTRAN COMPILER VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT 00810413
85: C ROUTINES, THEIR RELATED DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT00820413
86: C ROUTINE IS A FORTRAN PROGRAM OR SUBPROGRAM WHICH INCLUDES TESTS 00830413
87: C OF SPECIFIC LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING00840413
88: C THE RESULT OF EXECUTING THESE TESTS. 00850413
89: C 00860413
90: C THIS PARTICULAR PROGRAM OR SUBPROGRAM CONTAINS ONLY FEATURES 00870413
91: C FOUND IN THE SUBSET LEVEL OF THE STANDARD. 00880413
92: C 00890413
93: C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO 00900413
94: C DEPARTMENT OF THE NAVY 00910413
95: C FEDERAL COBOL COMPILER TESTING SERVICE 00920413
96: C WASHINGTON, D.C. 20376 00930413
97: C 00940413
98: C ******************************************************************00950413
99: C 00960413
100: C 00970413
101: IMPLICIT LOGICAL (L) 00980413
102: IMPLICIT CHARACTER*14 (C) 00990413
103: C 01000413
104: LOGICAL LAON11, LAON21, LAON31, LCONT1, LCONF2, LVONT1, LVONF2 01010413
105: LOGICAL LAON12, LAON22, LAON32, LCONT3, LCONF4, LVONT3, LVONF4 01020413
106: LOGICAL LCONT5, LCONF6, LCONT7, LCONF8, LVONT5, LVONF6, LVONT7 01030413
107: LOGICAL LVONF8 01040413
108: DIMENSION IDUMP(80) 01050413
109: DIMENSION IAON11(8), IAON21(2,4), IAON31(2,2,2) 01060413
110: DIMENSION IAON12(8), IAON22(2,4), IAON32(2,2,2) 01070413
111: DIMENSION RAON11(8), RAON21(2,4), RAON31(2,2,2) 01080413
112: DIMENSION RAON12(8), RAON22(2,4), RAON32(2,2,2) 01090413
113: DIMENSION LAON11(8), LAON21(2,4), LAON31(2,2,2) 01100413
114: DIMENSION LAON12(8), LAON22(2,4), LAON32(2,2,2) 01110413
115: DATA IAON11 /11, -11, 777, -777, 512, -512, -32767, 32767/ 01120413
116: DATA IAON21 /11, -11, 777, -777, 512, -512, -32767, 32767/ 01130413
117: DATA IAON31 /11, -11, 777, -777, 512, -512, -32767, 32767/ 01140413
118: DATA LAON11 /.TRUE., .FALSE., .TRUE., .FALSE., .TRUE., .FALSE., 01150413
119: 1 .TRUE., .FALSE./ 01160413
120: DATA LAON21 /.TRUE., .FALSE., .TRUE., .FALSE., .TRUE., .FALSE., 01170413
121: 1 .TRUE., .FALSE./ 01180413
122: DATA LAON31 /.TRUE., .FALSE., .TRUE., .FALSE., .TRUE., .FALSE., 01190413
123: 1 .TRUE., .FALSE./ 01200413
124: DATA RAON11 /11., -11., 7.77, -7.77,.512, -.512, -32767., 32767./01210413
125: DATA RAON21 /11., -11., 7.77, -7.77,.512, -.512, -32767., 32767./01220413
126: DATA RAON31 /11., -11., 7.77, -7.77,.512, -.512, -32767., 32767./01230413
127: ICON21 = 11 01240413
128: ICON22 = -11 01250413
129: ICON31 = +777 01260413
130: ICON32 = -777 01270413
131: ICON33 = 512 01280413
132: ICON34 = -512 01290413
133: ICON55 = -32767 01300413
134: ICON56 = 32767 01310413
135: RCON21 = 11. 01320413
136: RCON22 = -11. 01330413
137: RCON31 = +7.77 01340413
138: RCON32 = -7.77 01350413
139: RCON33 = .512 01360413
140: RCON34 = -.512 01370413
141: RCON55 = -32767. 01380413
142: RCON56 = 32767. 01390413
143: LCONT1 = .TRUE. 01400413
144: LCONF2 = .FALSE. 01410413
145: LCONT3 = .TRUE. 01420413
146: LCONF4 = .FALSE. 01430413
147: LCONT5 = .TRUE. 01440413
148: LCONF6 = .FALSE. 01450413
149: LCONT7 = .TRUE. 01460413
150: LCONF8 = .FALSE. 01470413
151: C 01480413
152: C THE FILE USED IN THIS ROUTINE HAS THE FOLLOWING PROPERTIES 01490413
153: C 01500413
154: C FILE IDENTIFIER - I10 (X-NUMBER 10) 01510413
155: C RECORD SIZE - 80 01520413
156: C ACCESS METHOD - DIRECT 01530413
157: C RECORD TYPE - UNFORMATTED 01540413
158: C DESIGNATED DEVICE - DISK 01550413
159: C TYPE OF DATA - INTEGER, REAL AND LOGICAL 01560413
160: C RECORDS IN FILE - 214 01570413
161: C 01580413
162: C THE FIRST 6 FIELDS OF EACH RECORD IN THE FILE UNIQUELY IDENT-01590413
163: C IFIES THAT RECORD. THE REMAINING FIELDS OF THE RECORD CONTAIN 01600413
164: C DATA WHICH ARE USED IN TESTING. A DESCRIPTION OF EACH FIELD 01610413
165: C OF THE PREAMBLE FOLLOWS. 01620413
166: C 01630413
167: C VARIABLE NAME IN PROGRAM FIELD NUMBER 01640413
168: C ------------------------ ------------ 01650413
169: C 01660413
170: C IPROG (ROUTINE NAME) - 1 01670413
171: C IFILE (LOGICAL/X-NUMBER) - 2 01680413
172: C ITOTR (RECORDS IN FILE) - 3 01690413
173: C IRLGN (LENGTH OF RECORD) - 4 01700413
174: C IRECN (RECORD NUMBER) - 5 01710413
175: C IEOF (9999 IF LAST RECORD) - 6 01720413
176: C 01730413
177: C 01740413
178: C 01750413
179: C 01760413
180: C INITIALIZATION SECTION. 01770413
181: C 01780413
182: C INITIALIZE CONSTANTS 01790413
183: C ******************** 01800413
184: C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER 01810413
185: I01 = 5 01820413
186: C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER 01830413
187: I02 = 6 01840413
188: C SYSTEM ENVIRONMENT SECTION 01850413
189: C 01860413
190: I01 = 5 01870413
191: C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 01880413
192: C (UNIT NUMBER FOR CARD READER). 01890413
193: CX011 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-011 CONTROL CARD01900413
194: C THE CX011 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 01910413
195: C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX010 ABOVE. 01920413
196: C 01930413
197: I02 = 6 01940413
198: C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02 = 6 01950413
199: C (UNIT NUMBER FOR PRINTER). 01960413
200: CX021 THIS CARD IS PEPLACED BY CONTENTS OF FEXEC X-021 CONTROL CARD.01970413
201: C THE CX021 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 01980413
202: C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX020 ABOVE. 01990413
203: C 02000413
204: IVPASS = 0 02010413
205: IVFAIL = 0 02020413
206: IVDELE = 0 02030413
207: ICZERO = 0 02040413
208: C 02050413
209: C WRITE OUT PAGE HEADERS 02060413
210: C 02070413
211: WRITE (I02,90002) 02080413
212: WRITE (I02,90006) 02090413
213: WRITE (I02,90008) 02100413
214: WRITE (I02,90004) 02110413
215: WRITE (I02,90010) 02120413
216: WRITE (I02,90004) 02130413
217: WRITE (I02,90016) 02140413
218: WRITE (I02,90001) 02150413
219: WRITE (I02,90004) 02160413
220: WRITE (I02,90012) 02170413
221: WRITE (I02,90014) 02180413
222: WRITE (I02,90004) 02190413
223: C 02200413
224: I10 = 9 02210413
225: C I10 CONTAINS THE LOGICAL UNIT NUMBER FOR A DIRECT ACCESS FILE 02220413
226: C WITH UNFORMATTED RECORDS 02230413
227: OPEN(UNIT=I10,ACCESS='DIRECT',FORM='UNFORMATTED',RECL=80) 02240413
228: CX101 THE CARD IS REPLACED BY CONTENTS OF X-101 CARD 02250413
229: IPROG = 413 02260413
230: IFILE = I10 02270413
231: ITOTR = 214 02280413
232: IRLGN = 80 02290413
233: IRECN = 0 02300413
234: IEOF = 0 02310413
235: C 02320413
236: C 02330413
237: C 02340413
238: C TESTS 001 THROUGH 013 OPEN A FILE CONNECTED FOR DIRECT ACCESS 02350413
239: C AND WRITE 12 RECORDS INTO THE FILE. THESE TESTS TEST USE OF THE 02360413
240: C ALLOWABLE FORMS OF THE OPEN AND WRITE STATEMENTS ON A FILE 02370413
241: C CONNECTED FOR DIRECT ACCESS. THE WRITE STATEMENT IS USED WITH 02380413
242: C THE I/O LIST ITEM AS A VARIABLE, ARRAY ELEMENT AND AN ARRAY. 02390413
243: C THE PURPOSE OF TESTS 001 THROUGH 013 IS TO CHECK THE COMPILER'S02400413
244: C ABILITY TO HANDLE THE VARIOUS STATEMENT CONSTRUCTS OF THE OPEN 02410413
245: C AND WRITE STATEMENTS. LATER TESTS WITHIN THIS ROUTINE READ 02420413
246: C AND CHECK THE RECORDS WHICH WERE CREATED. 02430413
247: C THE VALUE IN IVCORR FOR TESTS 002 THROUGH 013 IS THE RECORD 02440413
248: C NUMBER USED TO WRITE THE RECORD. 02450413
249: C 02460413
250: C 02470413
251: C 02480413
252: C **** FCVS PROGRAM 413 - TEST 001 **** 02490413
253: C 02500413
254: C 02510413
255: C TEST 001 USES THE OPEN STATEMENT TO CONNECT A FILE FOR DIRECT 02520413
256: C ACCESS. THIS IS THE FIRST ROUTINE TO USE AN OPEN STATEMENT. 02530413
257: C 02540413
258: C 02550413
259: IVTNUM = 1 02560413
260: IF (ICZERO) 30010, 0010, 30010 02570413
261: 0010 CONTINUE 02580413
262: IVCORR = 1 02590413
263: IVCOMP = 0 02600413
264: OPEN ( I10, ACCESS = 'DIRECT', RECL = 80 ) 02610413
265: IVCOMP = 1 02620413
266: 40010 IF (IVCOMP - 1) 20010, 10010, 20010 02630413
267: 30010 IVDELE = IVDELE + 1 02640413
268: WRITE (I02,80000) IVTNUM 02650413
269: IF (ICZERO) 10010, 0021, 20010 02660413
270: 10010 IVPASS = IVPASS + 1 02670413
271: WRITE (I02,80002) IVTNUM 02680413
272: GO TO 0021 02690413
273: 20010 IVFAIL = IVFAIL + 1 02700413
274: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 02710413
275: 0021 CONTINUE 02720413
276: C 02730413
277: C **** FCVS PROGRAM 413 - TEST 002 **** 02740413
278: C 02750413
279: C 02760413
280: C TEST 002 USES A WRITE STATEMENT WHERE THE OUTPUT LIST ITEM 02770413
281: C IS A VARIABLE OF INTEGER TYPE. 02780413
282: C 02790413
283: C 02800413
284: IVTNUM = 2 02810413
285: IF (ICZERO) 30020, 0020, 30020 02820413
286: 0020 CONTINUE 02830413
287: IRECN = 01 02840413
288: IVCORR = 01 02850413
289: WRITE (I10,REC=01) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 02860413
290: 1 ICON21, ICON22, ICON31, ICON32, ICON33, ICON34, ICON55, ICON56 02870413
291: IVCOMP = IRECN 02880413
292: 40020 IF (IVCOMP - 01) 20020, 10020, 20020 02890413
293: 30020 IVDELE = IVDELE + 1 02900413
294: WRITE (I02,80000) IVTNUM 02910413
295: IF (ICZERO) 10020, 0031, 20020 02920413
296: 10020 IVPASS = IVPASS + 1 02930413
297: WRITE (I02,80002) IVTNUM 02940413
298: GO TO 0031 02950413
299: 20020 IVFAIL = IVFAIL + 1 02960413
300: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 02970413
301: 0031 CONTINUE 02980413
302: C 02990413
303: C **** FCVS PROGRAM 413 - TEST 003 **** 03000413
304: C 03010413
305: C 03020413
306: C TEST 003 USES A WRITE STATEMENT WHERE THE OUTPUT LIST ITEM 03030413
307: C IS A VARIABLE OF REAL TYPE. 03040413
308: C 03050413
309: C 03060413
310: IVTNUM = 3 03070413
311: IF (ICZERO) 30030, 0030, 30030 03080413
312: 0030 CONTINUE 03090413
313: IRECN = 02 03100413
314: IVCORR = 02 03110413
315: WRITE (I10,REC=02) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 03120413
316: 1 RCON21, RCON22, RCON31, RCON32, RCON33, RCON34, RCON55, RCON56 03130413
317: IVCOMP = IRECN 03140413
318: 40030 IF (IVCOMP - 02) 20030, 10030, 20030 03150413
319: 30030 IVDELE = IVDELE + 1 03160413
320: WRITE (I02,80000) IVTNUM 03170413
321: IF (ICZERO) 10030, 0041, 20030 03180413
322: 10030 IVPASS = IVPASS + 1 03190413
323: WRITE (I02,80002) IVTNUM 03200413
324: GO TO 0041 03210413
325: 20030 IVFAIL = IVFAIL + 1 03220413
326: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 03230413
327: 0041 CONTINUE 03240413
328: C 03250413
329: C **** FCVS PROGRAM 413 - TEST 004 **** 03260413
330: C 03270413
331: C 03280413
332: C TEST 004 USES A WRITE STATEMENT WHERE THE OUTPUT LIST ITEM 03290413
333: C IS A VARIABLE OF LOGICAL TYPE. 03300413
334: C 03310413
335: C 03320413
336: IVTNUM = 4 03330413
337: IF (ICZERO) 30040, 0040, 30040 03340413
338: 0040 CONTINUE 03350413
339: IRECN = 03 03360413
340: IVCORR = 03 03370413
341: WRITE (I10,REC=03) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 03380413
342: 1 LCONT1, LCONF2, LCONT3, LCONF4, LCONT5, LCONF6, LCONT7, LCONF803390413
343: IVCOMP = IRECN 03400413
344: 40040 IF (IVCOMP - 03) 20040, 10040, 20040 03410413
345: 30040 IVDELE = IVDELE + 1 03420413
346: WRITE (I02,80000) IVTNUM 03430413
347: IF (ICZERO) 10040, 0051, 20040 03440413
348: 10040 IVPASS = IVPASS + 1 03450413
349: WRITE (I02,80002) IVTNUM 03460413
350: GO TO 0051 03470413
351: 20040 IVFAIL = IVFAIL + 1 03480413
352: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 03490413
353: 0051 CONTINUE 03500413
354: C 03510413
355: C **** FCVS PROGRAM 413 - TEST 005 **** 03520413
356: C 03530413
357: C 03540413
358: C TEST 005 USES A WRITE STATEMENT WHERE THE OUTPUT LIST ITEM 03550413
359: C IS AN ARRAY ELEMENT OF INTEGER TYPE. ONE, TWO AND THREE 03560413
360: C DIMENSION ARRAYS ARE USED. 03570413
361: C 03580413
362: C 03590413
363: IVTNUM = 5 03600413
364: IF (ICZERO) 30050, 0050, 30050 03610413
365: 0050 CONTINUE 03620413
366: IRECN = 04 03630413
367: IVCORR = 04 03640413
368: WRITE (I10,REC=04) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 03650413
369: 1 IAON11(1), IAON11(2), IAON21(1,2), IAON21(2,2), IAON31(1,1,2), 03660413
370: 2 IAON31(2,1,2), IAON11(7), IAON11(8) 03670413
371: IVCOMP = IRECN 03680413
372: 40050 IF (IVCOMP - 04) 20050, 10050, 20050 03690413
373: 30050 IVDELE = IVDELE + 1 03700413
374: WRITE (I02,80000) IVTNUM 03710413
375: IF (ICZERO) 10050, 0061, 20050 03720413
376: 10050 IVPASS = IVPASS + 1 03730413
377: WRITE (I02,80002) IVTNUM 03740413
378: GO TO 0061 03750413
379: 20050 IVFAIL = IVFAIL + 1 03760413
380: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 03770413
381: 0061 CONTINUE 03780413
382: C 03790413
383: C **** FCVS PROGRAM 413 - TEST 006 **** 03800413
384: C 03810413
385: C 03820413
386: C TEST 006 USES A WRITE STATEMENT WHERE THE OUTPUT LIST ITEM 03830413
387: C IS AN ARRAY ELEMENT OF REAL TYPE. ONE, TWO AND THREE 03840413
388: C DIMENSION ARRAYS ARE USED. 03850413
389: C 03860413
390: C 03870413
391: IVTNUM = 6 03880413
392: IF (ICZERO) 30060, 0060, 30060 03890413
393: 0060 CONTINUE 03900413
394: IRECN = 05 03910413
395: IVCORR = 05 03920413
396: WRITE (I10,REC=05) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 03930413
397: 1 RAON11(1), RAON11(2), RAON21(1,2), RAON21(2,2), RAON31(1,1,2), 03940413
398: 2 RAON31(2,1,2), RAON11(7), RAON11(8) 03950413
399: IVCOMP = IRECN 03960413
400: 40060 IF (IVCOMP - 05) 20060, 10060, 20060 03970413
401: 30060 IVDELE = IVDELE + 1 03980413
402: WRITE (I02,80000) IVTNUM 03990413
403: IF (ICZERO) 10060, 0071, 20060 04000413
404: 10060 IVPASS = IVPASS + 1 04010413
405: WRITE (I02,80002) IVTNUM 04020413
406: GO TO 0071 04030413
407: 20060 IVFAIL = IVFAIL + 1 04040413
408: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 04050413
409: 0071 CONTINUE 04060413
410: C 04070413
411: C **** FCVS PROGRAM 413 - TEST 007 **** 04080413
412: C 04090413
413: C 04100413
414: C TEST 007 USES A WRITE STATEMENT WHERE THE OUTPUT LIST ITEM 04110413
415: C IS AN ARRAY ELEMENT OF LOGICAL TYPE. ONE, TWO AND THREE 04120413
416: C DIMENSION ARRAYS ARE USED. 04130413
417: C 04140413
418: C 04150413
419: IVTNUM = 7 04160413
420: IF (ICZERO) 30070, 0070, 30070 04170413
421: 0070 CONTINUE 04180413
422: IRECN = 06 04190413
423: IVCORR = 06 04200413
424: WRITE (I10,REC=06) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 04210413
425: 1 LAON11(1), LAON11(2), LAON21(1,2), LAON21(2,2), LAON31(1,1,2), 04220413
426: 2 LAON31(2,1,2), LAON11(7), LAON11(8) 04230413
427: IVCOMP = IRECN 04240413
428: 40070 IF (IVCOMP - 06) 20070, 10070, 20070 04250413
429: 30070 IVDELE = IVDELE + 1 04260413
430: WRITE (I02,80000) IVTNUM 04270413
431: IF (ICZERO) 10070, 0081, 20070 04280413
432: 10070 IVPASS = IVPASS + 1 04290413
433: WRITE (I02,80002) IVTNUM 04300413
434: GO TO 0081 04310413
435: 20070 IVFAIL = IVFAIL + 1 04320413
436: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 04330413
437: 0081 CONTINUE 04340413
438: C 04350413
439: C **** FCVS PROGRAM 413 - TEST 008 **** 04360413
440: C 04370413
441: C 04380413
442: C TEST 008 USES A WRITE STATEMENT WHERE THE OUTPUT LIST ITEM 04390413
443: C IS AN ARRAY OF INTEGER TYPE. 04400413
444: C 04410413
445: C 04420413
446: IVTNUM = 8 04430413
447: IF (ICZERO) 30080, 0080, 30080 04440413
448: 0080 CONTINUE 04450413
449: IRECN = 07 04460413
450: IVCORR = 07 04470413
451: WRITE (I10,REC=07) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 04480413
452: 1 IAON31 04490413
453: IVCOMP = IRECN 04500413
454: 40080 IF (IVCOMP - 07) 20080, 10080, 20080 04510413
455: 30080 IVDELE = IVDELE + 1 04520413
456: WRITE (I02,80000) IVTNUM 04530413
457: IF (ICZERO) 10080, 0091, 20080 04540413
458: 10080 IVPASS = IVPASS + 1 04550413
459: WRITE (I02,80002) IVTNUM 04560413
460: GO TO 0091 04570413
461: 20080 IVFAIL = IVFAIL + 1 04580413
462: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 04590413
463: 0091 CONTINUE 04600413
464: C 04610413
465: C **** FCVS PROGRAM 413 - TEST 009 **** 04620413
466: C 04630413
467: C 04640413
468: C TEST 009 USES A WRITE STATEMENT WHERE THE OUTPUT LIST ITEM 04650413
469: C IS AN ARRAY OF REAL TYPE. 04660413
470: C 04670413
471: C 04680413
472: IVTNUM = 9 04690413
473: IF (ICZERO) 30090, 0090, 30090 04700413
474: 0090 CONTINUE 04710413
475: IRECN = 08 04720413
476: IVCORR = 08 04730413
477: WRITE (I10,REC=08) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 04740413
478: 1 RAON31 04750413
479: IVCOMP = IRECN 04760413
480: 40090 IF (IVCOMP - 08) 20090, 10090, 20090 04770413
481: 30090 IVDELE = IVDELE + 1 04780413
482: WRITE (I02,80000) IVTNUM 04790413
483: IF (ICZERO) 10090, 0101, 20090 04800413
484: 10090 IVPASS = IVPASS + 1 04810413
485: WRITE (I02,80002) IVTNUM 04820413
486: GO TO 0101 04830413
487: 20090 IVFAIL = IVFAIL + 1 04840413
488: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 04850413
489: 0101 CONTINUE 04860413
490: C 04870413
491: C **** FCVS PROGRAM 413 - TEST 010 **** 04880413
492: C 04890413
493: C 04900413
494: C TEST 010 USES A WRITE STATEMENT WHERE THE OUTPUT LIST ITEM 04910413
495: C IS AN ARRAY OF LOGICAL TYPE. 04920413
496: C 04930413
497: C 04940413
498: IVTNUM = 10 04950413
499: IF (ICZERO) 30100, 0100, 30100 04960413
500: 0100 CONTINUE 04970413
501: IRECN = 09 04980413
502: IVCORR = 09 04990413
503: WRITE (I10,REC=09) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 05000413
504: 1 LAON31 05010413
505: IVCOMP = IRECN 05020413
506: 40100 IF (IVCOMP - 09) 20100, 10100, 20100 05030413
507: 30100 IVDELE = IVDELE + 1 05040413
508: WRITE (I02,80000) IVTNUM 05050413
509: IF (ICZERO) 10100, 0111, 20100 05060413
510: 10100 IVPASS = IVPASS + 1 05070413
511: WRITE (I02,80002) IVTNUM 05080413
512: GO TO 0111 05090413
513: 20100 IVFAIL = IVFAIL + 1 05100413
514: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 05110413
515: 0111 CONTINUE 05120413
516: C 05130413
517: C **** FCVS PROGRAM 413 - TEST 011 **** 05140413
518: C 05150413
519: C 05160413
520: C TEST 011 USES A WRITE STATEMENT WHERE THE OUTPUT LIST ITEM 05170413
521: C IS AN IMPLIED-DO WITH AN ITEM OF INTEGER TYPE. 05180413
522: C THE FIELD VALUES ARE WRITTEN IN MIXED ORDER VIS-A-VIS THE 05190413
523: C ELEMENT SEQUENCE OF ARRAY IAON31. THE SEQUENCE OF VALUES WRITTEN 05200413
524: C IN THE RECORD ARE 11, 512, 777, -32767, -11, -512, -777, 32767. 05210413
525: C 05220413
526: C 05230413
527: IVTNUM = 11 05240413
528: IF (ICZERO) 30110, 0110, 30110 05250413
529: 0110 CONTINUE 05260413
530: IRECN = 10 05270413
531: IVCORR = 10 05280413
532: WRITE (I10,REC=10) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 05290413
533: 1 (((IAON31 (J,K,I), I=1,2), K=1,2), J=1,2) 05300413
534: IVCOMP = IRECN 05310413
535: 40110 IF (IVCOMP - 10) 20110, 10110, 20110 05320413
536: 30110 IVDELE = IVDELE + 1 05330413
537: WRITE (I02,80000) IVTNUM 05340413
538: IF (ICZERO) 10110, 0121, 20110 05350413
539: 10110 IVPASS = IVPASS + 1 05360413
540: WRITE (I02,80002) IVTNUM 05370413
541: GO TO 0121 05380413
542: 20110 IVFAIL = IVFAIL + 1 05390413
543: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 05400413
544: 0121 CONTINUE 05410413
545: C 05420413
546: C **** FCVS PROGRAM 413 - TEST 012 **** 05430413
547: C 05440413
548: C 05450413
549: C TEST 012 USES A WRITE STATEMENT WHERE THE OUTPUT LIST ITEM 05460413
550: C IS AN IMPLIED-DO WITH AN ITEM OF REAL TYPE. THE FIELD VALUES 05470413
551: C (IN FIELD POSITION ORDER) WRITTEN IN THE RECORD ARE 11., -11., 05480413
552: C 7.77, -7.77, .512, -.512, -32767., 32767. 05490413
553: C 05500413
554: C 05510413
555: IVTNUM = 12 05520413
556: IF (ICZERO) 30120, 0120, 30120 05530413
557: 0120 CONTINUE 05540413
558: IRECN = 11 05550413
559: IVCORR = 11 05560413
560: WRITE (I10,REC=11) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 05570413
561: 1 (((RAON31 (J,K,I), J=1,2), K=1,2), I=1,2) 05580413
562: IVCOMP = IRECN 05590413
563: 40120 IF (IVCOMP - 11) 20120, 10120, 20120 05600413
564: 30120 IVDELE = IVDELE + 1 05610413
565: WRITE (I02,80000) IVTNUM 05620413
566: IF (ICZERO) 10120, 0131, 20120 05630413
567: 10120 IVPASS = IVPASS + 1 05640413
568: WRITE (I02,80002) IVTNUM 05650413
569: GO TO 0131 05660413
570: 20120 IVFAIL = IVFAIL + 1 05670413
571: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 05680413
572: 0131 CONTINUE 05690413
573: C 05700413
574: C **** FCVS PROGRAM 413 - TEST 013 **** 05710413
575: C 05720413
576: C 05730413
577: C TEST 013 USES A WRITE STATEMENT WHERE THE OUTPUT LIST ITEM 05740413
578: C IS AN IMPLIED-DO WITH AN ITEM OF LOGICAL TYPE. 05750413
579: C THE FIELD VALUES ARE WRITTEN IN MIXED ORDER VIS-A-VIS THE 05760413
580: C ELEMENT SEQUENCE OF ARRAY LAON31. THE SEQUENCE OF VALUES WRITTEN 05770413
581: C IN THE RECORD ARE .TRUE., .TRUE., .FALSE., .FALSE., .TRUE., .TRUE.05780413
582: C .FALSE, .FALSE. 05790413
583: C 05800413
584: C 05810413
585: IVTNUM = 13 05820413
586: IF (ICZERO) 30130, 0130, 30130 05830413
587: 0130 CONTINUE 05840413
588: IRECN = 12 05850413
589: IVCORR = 12 05860413
590: WRITE (I10,REC=12) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 05870413
591: 1 (((LAON31 (J,K,I), K=1,2), J=1,2), I=1,2) 05880413
592: IVCOMP = IRECN 05890413
593: 40130 IF (IVCOMP - 12) 20130, 10130, 20130 05900413
594: 30130 IVDELE = IVDELE + 1 05910413
595: WRITE (I02,80000) IVTNUM 05920413
596: IF (ICZERO) 10130, 0141, 20130 05930413
597: 10130 IVPASS = IVPASS + 1 05940413
598: WRITE (I02,80002) IVTNUM 05950413
599: GO TO 0141 05960413
600: 20130 IVFAIL = IVFAIL + 1 05970413
601: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 05980413
602: 0141 CONTINUE 05990413
603: C 06000413
604: C 06010413
605: C TESTS 14 AND 15 TEST THE WRITE WITHOUT OUTPUT LIST ITEMS. 06020413
606: C 06030413
607: C 06040413
608: C 06050413
609: C 06060413
610: C **** FCVS PROGRAM 413 - TEST 014 **** 06070413
611: C 06080413
612: C 06090413
613: C TEST 014 USES A WRITE STATEMENT WITHOUT ANY OUTPUT LIST ITEMS. 06100413
614: C THE OUTPUT LIST ITEMS ARE OPTIONAL AND THIS TEST USES THIS FORM 06110413
615: C TO ESTABLISH A RECORD NUMBER FOR A RECORD IN THE FILE. 06120413
616: C ALSO THE LENGTH OF AN UNFORMATTED RECORD MAY BE ZERO. 06130413
617: C 06140413
618: C SEE SECTIONS 12.1.2, UNFORMATTED RECORDS 06150413
619: C 12.2.4.2 (5) AND (6), DIRECT ACCESS 06160413
620: C 12.8, READ, WRITE AND PRINT STATEMENTS 06170413
621: C 06180413
622: C 06190413
623: IVTNUM = 14 06200413
624: IF (ICZERO) 30140, 0140, 30140 06210413
625: 0140 CONTINUE 06220413
626: IRECN = 13 06230413
627: IVCORR = 13 06240413
628: WRITE (I10,REC=13) 06250413
629: IVCOMP = IRECN 06260413
630: 40140 IF (IVCOMP - 13) 20140, 10140, 20140 06270413
631: 30140 IVDELE = IVDELE + 1 06280413
632: WRITE (I02,80000) IVTNUM 06290413
633: IF (ICZERO) 10140, 0151, 20140 06300413
634: 10140 IVPASS = IVPASS + 1 06310413
635: WRITE (I02,80002) IVTNUM 06320413
636: GO TO 0151 06330413
637: 20140 IVFAIL = IVFAIL + 1 06340413
638: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 06350413
639: 0151 CONTINUE 06360413
640: C 06370413
641: C **** FCVS PROGRAM 413 - TEST 015 **** 06380413
642: C 06390413
643: C 06400413
644: C TEST 015 IS SIMILAR TO TEST 014 ABOVE EXCEPT THE RN OF THE 06410413
645: C RECORD SPECIFIER (REC = RN) IS AN INTEGER VARIABLE. 06420413
646: C 06430413
647: C 06440413
648: IVTNUM = 15 06450413
649: IF (ICZERO) 30150, 0150, 30150 06460413
650: 0150 CONTINUE 06470413
651: IRECN = 14 06480413
652: IVCORR = 14 06490413
653: IREC = 14 06500413
654: WRITE (I10,REC = IREC) 06510413
655: IVCOMP = IRECN 06520413
656: 40150 IF (IVCOMP - 14) 20150, 10150, 20150 06530413
657: 30150 IVDELE = IVDELE + 1 06540413
658: WRITE (I02,80000) IVTNUM 06550413
659: IF (ICZERO) 10150, 0161, 20150 06560413
660: 10150 IVPASS = IVPASS + 1 06570413
661: WRITE (I02,80002) IVTNUM 06580413
662: GO TO 0161 06590413
663: 20150 IVFAIL = IVFAIL + 1 06600413
664: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 06610413
665: 0161 CONTINUE 06620413
666: C 06630413
667: C 06640413
668: C TESTS 16 AND 17 VERIFY THAT RECORDS MAY BE CREATED IN 06650413
669: C OTHER THAN SEQUENTIAL ORDER. ALSO THAT A VARIABLE MAY BY USED 06660413
670: C AS THE OPERAND OF THE REC SPECIFIER FOR A WRITE STATEMENT. 06670413
671: C 06680413
672: C 06690413
673: C 06700413
674: C **** FCVS PROGRAM 413 - TEST 016 **** 06710413
675: C 06720413
676: C 06730413
677: C TEST 016 TESTS USE OF THE REC SPECIFIER WHERE THE OPERAND 06740413
678: C IS A VARIABLE. THIS TEST IS SIMILAR TO TEST 15 EXCEPT THE WRITE 06750413
679: C STATEMENT CONTAINS OUTPUT LIST ITEMS. ONE HUNDRED RECORDS ARE 06760413
680: C WRITTEN BY INCREMENTING THE VARIABLE BY 2 FOR EACH WRITE. TEST 06770413
681: C 032 READS THE RECORDS WRITTEN BY THIS METHOD. 06780413
682: C 06790413
683: C 06800413
684: IVTNUM = 16 06810413
685: IF (ICZERO) 30160, 0160, 30160 06820413
686: 0160 CONTINUE 06830413
687: IRECN = 13 06840413
688: IREC = 13 06850413
689: DO 4132 I = 1,100 06860413
690: IREC = IREC + 2 06870413
691: IRECN = IRECN + 2 06880413
692: WRITE (I10, REC = IREC) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 06890413
693: 1 ICON21, ICON22, ICON31, ICON32, ICON33, ICON34, ICON55, ICON56 06900413
694: 4132 CONTINUE 06910413
695: IVCORR = 100 06920413
696: IVCOMP = IREC - 113 06930413
697: 40160 IF (IVCOMP - 100) 20160, 10160, 20160 06940413
698: 30160 IVDELE = IVDELE + 1 06950413
699: WRITE (I02,80000) IVTNUM 06960413
700: IF (ICZERO) 10160, 0171, 20160 06970413
701: 10160 IVPASS = IVPASS + 1 06980413
702: WRITE (I02,80002) IVTNUM 06990413
703: GO TO 0171 07000413
704: 20160 IVFAIL = IVFAIL + 1 07010413
705: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 07020413
706: 0171 CONTINUE 07030413
707: C 07040413
708: C **** FCVS PROGRAM 413 - TEST 017 **** 07050413
709: C 07060413
710: C 07070413
711: C TEST 17 IS SIMILAR TO TEST 16 EXCEPT THE RECORD IS 07080413
712: C WRITTEN IN REVERSE ORDER OF RECORD NUMBER. ONE HUNDERD RECORDS 07090413
713: C ARE WRITTEN AND THE VARIABLE OF THE REC SPECIFIER IS DECREMENTED 07100413
714: C BY TWO FOR EACH WRITE. 07110413
715: C 07120413
716: C 07130413
717: IVTNUM = 17 07140413
718: IF (ICZERO) 30170, 0170, 30170 07150413
719: 0170 CONTINUE 07160413
720: IRECN = 216 07170413
721: IREC = 216 07180413
722: IVCOMP = 0 07190413
723: DO 4133 I=1,100 07200413
724: IREC = IREC - 2 07210413
725: IRECN = IRECN - 2 07220413
726: WRITE (I10, REC = IREC) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 07230413
727: 1 ICON21, ICON22, ICON31, ICON32, ICON33, ICON34, ICON55, ICON56 07240413
728: IVCOMP = IVCOMP + 1 07250413
729: 4133 CONTINUE 07260413
730: IVCORR = 100 07270413
731: 40170 IF (IVCOMP - 100) 20170, 10170, 20170 07280413
732: 30170 IVDELE = IVDELE + 1 07290413
733: WRITE (I02,80000) IVTNUM 07300413
734: IF (ICZERO) 10170, 0181, 20170 07310413
735: 10170 IVPASS = IVPASS + 1 07320413
736: WRITE (I02,80002) IVTNUM 07330413
737: GO TO 0181 07340413
738: 20170 IVFAIL = IVFAIL + 1 07350413
739: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 07360413
740: 0181 CONTINUE 07370413
741: C 07380413
742: C 07390413
743: C TESTS 018 THROUGH 030 READ AND CHECK THE RECORDS CREATED IN 07400413
744: C TESTS 002 THROUGH 014. EACH OF THE TESTS IN THIS SET IS CHECKING 07410413
745: C TWO THINGS. FIRST, THAT THE READ STATEMENT CONSTRUCT IS ACCEPTED 07420413
746: C BY THE COMPILER AND SECOND THAT THE RECORDS CREATED IN TESTS 002 07430413
747: C THROUGH 013 AND READ IN THESE TESTS CAN GIVE PREDICTIBLE VALUES. 07440413
748: C THE READ STATEMENT IS USED WITH THE I/O LIST ITEM AS A VARIABLE, 07450413
749: C AN ARRAY ELEMENT AND AN ARRAY. 07460413
750: C 07470413
751: C 07480413
752: C 07490413
753: C **** FCVS PROGRAM 413 - TEST 018 **** 07500413
754: C 07510413
755: C 07520413
756: C TEST 018 USES A READ STATEMENT WHERE THE INPUT LIST ITEM IS A 07530413
757: C VARIABLE OF INTEGER TYPE. 07540413
758: C 07550413
759: C 07560413
760: IVTNUM = 18 07570413
761: IF (ICZERO) 30180, 0180, 30180 07580413
762: 0180 CONTINUE 07590413
763: IVON22 = 0 07600413
764: IVON56 = 0 07610413
765: IVCORR = 30 07620413
766: IVCOMP = 1 07630413
767: READ (I10, REC = 01) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 07640413
768: 1 IVON21, IVON22, IVON31, IVON32, IVON33, IVON34, IVON55, IVON56 07650413
769: IF (IRECN .EQ. 01) IVCOMP = IVCOMP * 2 07660413
770: IF (IVON22 .EQ. -11) IVCOMP = IVCOMP * 3 07670413
771: IF (IVON56 .EQ. 32767) IVCOMP = IVCOMP * 5 07680413
772: 40180 IF (IVCOMP - 30) 20180, 10180, 20180 07690413
773: 30180 IVDELE = IVDELE + 1 07700413
774: WRITE (I02,80000) IVTNUM 07710413
775: IF (ICZERO) 10180, 0191, 20180 07720413
776: 10180 IVPASS = IVPASS + 1 07730413
777: WRITE (I02,80002) IVTNUM 07740413
778: GO TO 0191 07750413
779: 20180 IVFAIL = IVFAIL + 1 07760413
780: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 07770413
781: 0191 CONTINUE 07780413
782: C 07790413
783: C **** FCVS PROGRAM 413 - TEST 019 **** 07800413
784: C 07810413
785: C 07820413
786: C TEST 019 USES A READ STATEMENT WHERE THE INPUT LIST ITEM IS A 07830413
787: C VARIABLE OF REAL TYPE. 07840413
788: C 07850413
789: C 07860413
790: IVTNUM = 19 07870413
791: IF (ICZERO) 30190, 0190, 30190 07880413
792: 0190 CONTINUE 07890413
793: RVON22 = 0.0 07900413
794: RVON31 = 0.0 07910413
795: IVCORR = 30 07920413
796: IVCOMP = 1 07930413
797: READ (I10, REC = 02) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 07940413
798: 1 RVON21, RVON22, RVON31, RVON32, RVON33, RVON34, RVON55, RVON56 07950413
799: IF (IRECN .EQ. 02) IVCOMP = IVCOMP * 2 07960413
800: IF (RVON22 .EQ. -11.) IVCOMP = IVCOMP * 3 07970413
801: IF (RVON31 .EQ. 7.77) IVCOMP = IVCOMP * 5 07980413
802: 40190 IF (IVCOMP - 30) 20190, 10190, 20190 07990413
803: 30190 IVDELE = IVDELE + 1 08000413
804: WRITE (I02,80000) IVTNUM 08010413
805: IF (ICZERO) 10190, 0201, 20190 08020413
806: 10190 IVPASS = IVPASS + 1 08030413
807: WRITE (I02,80002) IVTNUM 08040413
808: GO TO 0201 08050413
809: 20190 IVFAIL = IVFAIL + 1 08060413
810: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 08070413
811: 0201 CONTINUE 08080413
812: C 08090413
813: C **** FCVS PROGRAM 413 - TEST 020 **** 08100413
814: C 08110413
815: C 08120413
816: C TEST 020 USES A READ STATEMENT WHERE THE INPUT LIST ITEM IS A 08130413
817: C VARIABLE OF LOGICAL TYPE. 08140413
818: C 08150413
819: C 08160413
820: IVTNUM = 20 08170413
821: IF (ICZERO) 30200, 0200, 30200 08180413
822: 0200 CONTINUE 08190413
823: LVONT1 = .FALSE. 08200413
824: LVONF6 = .TRUE. 08210413
825: IVCORR = 30 08220413
826: IVCOMP = 1 08230413
827: READ (I10, REC = 03) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 08240413
828: 1 LVONT1, LVONF2, LVONT3, LVONF4, LVONT5, LVONF6, LVONT7, LVONF808250413
829: IF (IRECN .EQ. 03) IVCOMP = IVCOMP * 2 08260413
830: IF (.NOT. LVONF6) IVCOMP = IVCOMP * 3 08270413
831: IF (LVONT1) IVCOMP = IVCOMP * 5 08280413
832: 40200 IF (IVCOMP - 30) 20200, 10200, 20200 08290413
833: 30200 IVDELE = IVDELE + 1 08300413
834: WRITE (I02,80000) IVTNUM 08310413
835: IF (ICZERO) 10200, 0211, 20200 08320413
836: 10200 IVPASS = IVPASS + 1 08330413
837: WRITE (I02,80002) IVTNUM 08340413
838: GO TO 0211 08350413
839: 20200 IVFAIL = IVFAIL + 1 08360413
840: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 08370413
841: 0211 CONTINUE 08380413
842: C 08390413
843: C **** FCVS PROGRAM 413 - TEST 021 **** 08400413
844: C 08410413
845: C 08420413
846: C TEST 021 USES A READ STATEMENT WHERE THE INPUT LIST ITEM IS A 08430413
847: C ARRAY ELEMENT OF INTEGER TYPE. ONE, TWO, AND THREE 08440413
848: C DIMENSION ARRAYS ARE USED. 08450413
849: C 08460413
850: C 08470413
851: IVTNUM = 21 08480413
852: IF (ICZERO) 30210, 0210, 30210 08490413
853: 0210 CONTINUE 08500413
854: IAON12(2) = 0 08510413
855: IAON12(8) = 0 08520413
856: IVCORR = 30 08530413
857: IVCOMP = 1 08540413
858: READ (I10, REC = 04) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 08550413
859: 1 IAON12(1), IAON12(2), IAON22(1,2), IAON22(2,2), IAON32(1,1,2), 08560413
860: 2 IAON32(2,1,2), IAON12(7), IAON12(8) 08570413
861: IF (IRECN .EQ. 04) IVCOMP = IVCOMP * 2 08580413
862: IF (IAON12(2) .EQ. -11) IVCOMP = IVCOMP * 3 08590413
863: IF (IAON12(8) .EQ. 32767) IVCOMP = IVCOMP * 5 08600413
864: C 08610413
865: C THE ABOVE 3 IF STATEMENTS CHECK THE RECORD NUMBER, A NEGATIVE 08620413
866: C FIELD VALUE AND A POSITIVE FIELD VALUE. 08630413
867: C 08640413
868: 40210 IF (IVCOMP - 30) 20210, 10210, 20210 08650413
869: 30210 IVDELE = IVDELE + 1 08660413
870: WRITE (I02,80000) IVTNUM 08670413
871: IF (ICZERO) 10210, 0221, 20210 08680413
872: 10210 IVPASS = IVPASS + 1 08690413
873: WRITE (I02,80002) IVTNUM 08700413
874: GO TO 0221 08710413
875: 20210 IVFAIL = IVFAIL + 1 08720413
876: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 08730413
877: 0221 CONTINUE 08740413
878: C 08750413
879: C **** FCVS PROGRAM 413 - TEST 022 **** 08760413
880: C 08770413
881: C 08780413
882: C TEST 022 USES A READ STATEMENT WHERE THE INPUT LIST ITEM IS A 08790413
883: C ARRAY ELEMENT OF REAL TYPE. ONE, TWO, AND THREE 08800413
884: C DIMENSION ARRAYS ARE USED. 08810413
885: C 08820413
886: C 08830413
887: IVTNUM = 22 08840413
888: IF (ICZERO) 30220, 0220, 30220 08850413
889: 0220 CONTINUE 08860413
890: RAON22(2,2) = 0.0 08870413
891: RAON32(1,1,2) = 0.0 08880413
892: IVCORR = 30 08890413
893: IVCOMP = 1 08900413
894: READ (I10, REC = 05) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 08910413
895: 1 RAON12(1), RAON12(2), RAON22(1,2), RAON22(2,2), RAON32(1,1,2), 08920413
896: 2 RAON32(2,1,2), RAON12(7), RAON12(8) 08930413
897: IF (IRECN .EQ. 05) IVCOMP = IVCOMP * 2 08940413
898: IF (RAON22(2,2) .EQ. -7.77) IVCOMP = IVCOMP * 3 08950413
899: IF (RAON32(1,1,2) .EQ. .512 ) IVCOMP = IVCOMP * 5 08960413
900: C 08970413
901: C THE ABOVE 3 IF STATEMENTS CHECK THE RECORD NUMBER, A NEGATIVE 08980413
902: C FIELD VALUE AND A POSITIVE FIELD VALUE. 08990413
903: C 09000413
904: 40220 IF (IVCOMP - 30) 20220, 10220, 20220 09010413
905: 30220 IVDELE = IVDELE + 1 09020413
906: WRITE (I02,80000) IVTNUM 09030413
907: IF (ICZERO) 10220, 0231, 20220 09040413
908: 10220 IVPASS = IVPASS + 1 09050413
909: WRITE (I02,80002) IVTNUM 09060413
910: GO TO 0231 09070413
911: 20220 IVFAIL = IVFAIL + 1 09080413
912: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 09090413
913: 0231 CONTINUE 09100413
914: C 09110413
915: C **** FCVS PROGRAM 413 - TEST 023 **** 09120413
916: C 09130413
917: C 09140413
918: C TEST 023 USES A READ STATEMENT WHERE THE INPUT LIST ITEM IS A 09150413
919: C ARRAY ELEMENT OF LOGICAL TYPE. ONE, TWO, AND THREE 09160413
920: C DIMENSION ARRAYS ARE USED. 09170413
921: C 09180413
922: C 09190413
923: IVTNUM = 23 09200413
924: IF (ICZERO) 30230, 0230, 30230 09210413
925: 0230 CONTINUE 09220413
926: LAON12(1) = .FALSE. 09230413
927: LAON32(2,1,2) = .TRUE. 09240413
928: IVCORR = 30 09250413
929: IVCOMP = 1 09260413
930: READ (I10, REC = 06) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 09270413
931: 1 LAON12(1), LAON12(2), LAON22(1,2), LAON22(2,2), LAON32(1,1,2), 09280413
932: 2 LAON32(2,1,2), LAON12(7), LAON12(8) 09290413
933: IF (IRECN .EQ. 06) IVCOMP = IVCOMP * 2 09300413
934: IF (LAON12(1)) IVCOMP = IVCOMP * 3 09310413
935: IF (.NOT. LAON32(2,1,2)) IVCOMP = IVCOMP * 5 09320413
936: 40230 IF (IVCOMP - 30) 20230, 10230, 20230 09330413
937: 30230 IVDELE = IVDELE + 1 09340413
938: WRITE (I02,80000) IVTNUM 09350413
939: IF (ICZERO) 10230, 0241, 20230 09360413
940: 10230 IVPASS = IVPASS + 1 09370413
941: WRITE (I02,80002) IVTNUM 09380413
942: GO TO 0241 09390413
943: 20230 IVFAIL = IVFAIL + 1 09400413
944: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 09410413
945: 0241 CONTINUE 09420413
946: C 09430413
947: C **** FCVS PROGRAM 413 - TEST 024 **** 09440413
948: C 09450413
949: C 09460413
950: C TEST 024 USES A READ STATEMENT WHERE THE INPUT LIST ITEM IS A 09470413
951: C ARRAY OF INTEGER TYPE. 09480413
952: C 09490413
953: C 09500413
954: IVTNUM = 24 09510413
955: IF (ICZERO) 30240, 0240, 30240 09520413
956: 0240 CONTINUE 09530413
957: IAON32(2,1,1) = 0 09540413
958: IAON32(2,2,2) = 0 09550413
959: IVCORR = 30 09560413
960: IVCOMP = 1 09570413
961: READ (I10, REC = 07) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 09580413
962: 1 IAON32 09590413
963: IF (IRECN .EQ. 07) IVCOMP = IVCOMP * 2 09600413
964: IF (IAON32(2,1,1) .EQ. -11) IVCOMP = IVCOMP * 3 09610413
965: IF (IAON32(2,2,2) .EQ. 32767) IVCOMP = IVCOMP * 5 09620413
966: C 09630413
967: C THE ABOVE 3 IF STATEMENTS CHECK THE RECORD NUMBER, A NEGATIVE 09640413
968: C FIELD VALUE AND A POSITIVE FIELD VALUE. 09650413
969: C 09660413
970: 40240 IF (IVCOMP - 30) 20240, 10240, 20240 09670413
971: 30240 IVDELE = IVDELE + 1 09680413
972: WRITE (I02,80000) IVTNUM 09690413
973: IF (ICZERO) 10240, 0251, 20240 09700413
974: 10240 IVPASS = IVPASS + 1 09710413
975: WRITE (I02,80002) IVTNUM 09720413
976: GO TO 0251 09730413
977: 20240 IVFAIL = IVFAIL + 1 09740413
978: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 09750413
979: 0251 CONTINUE 09760413
980: C 09770413
981: C **** FCVS PROGRAM 413 - TEST 025 **** 09780413
982: C 09790413
983: C 09800413
984: C TEST 025 USES A READ STATEMENT WHERE THE INPUT LIST ITEM IS A 09810413
985: C ARRAY OF REAL TYPE. 09820413
986: C 09830413
987: C 09840413
988: IVTNUM = 25 09850413
989: IF (ICZERO) 30250, 0250, 30250 09860413
990: 0250 CONTINUE 09870413
991: RAON32(2,1,1) = 0.0 09880413
992: RAON32(2,2,2) = 0.0 09890413
993: IVCORR = 30 09900413
994: IVCOMP = 1 09910413
995: READ (I10, REC = 08) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 09920413
996: 1 RAON32 09930413
997: IF (IRECN .EQ. 08) IVCOMP = IVCOMP * 2 09940413
998: IF (RAON32(2,1,1) .EQ. -11.) IVCOMP = IVCOMP * 3 09950413
999: IF (RAON32(2,2,2) .EQ. 32767.) IVCOMP = IVCOMP * 5 09960413
1000: C 09970413
1001: C THE ABOVE 3 IF STATEMENTS CHECK THE RECORD NUMBER, A NEGATIVE 09980413
1002: C FIELD VALUE AND A POSITIVE FIELD VALUE. 09990413
1003: C 10000413
1004: 40250 IF (IVCOMP - 30) 20250, 10250, 20250 10010413
1005: 30250 IVDELE = IVDELE + 1 10020413
1006: WRITE (I02,80000) IVTNUM 10030413
1007: IF (ICZERO) 10250, 0261, 20250 10040413
1008: 10250 IVPASS = IVPASS + 1 10050413
1009: WRITE (I02,80002) IVTNUM 10060413
1010: GO TO 0261 10070413
1011: 20250 IVFAIL = IVFAIL + 1 10080413
1012: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 10090413
1013: 0261 CONTINUE 10100413
1014: C 10110413
1015: C **** FCVS PROGRAM 413 - TEST 026 **** 10120413
1016: C 10130413
1017: C 10140413
1018: C TEST 026 USES A READ STATEMENT WHERE THE INPUT LIST ITEM IS A 10150413
1019: C ARRAY OF LOGICAL TYPE. 10160413
1020: C 10170413
1021: C 10180413
1022: IVTNUM = 26 10190413
1023: IF (ICZERO) 30260, 0260, 30260 10200413
1024: 0260 CONTINUE 10210413
1025: LAON32(1,1,1) = .FALSE. 10220413
1026: LAON32(2,2,2) = .TRUE. 10230413
1027: IVCORR = 30 10240413
1028: IVCOMP = 1 10250413
1029: READ (I10, REC = 09) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 10260413
1030: 1 LAON32 10270413
1031: IF (IRECN .EQ. 09) IVCOMP = IVCOMP * 2 10280413
1032: IF (LAON32(1,1,1)) IVCOMP = IVCOMP * 3 10290413
1033: IF (.NOT. LAON32(2,2,2)) IVCOMP = IVCOMP * 5 10300413
1034: 40260 IF (IVCOMP - 30) 20260, 10260, 20260 10310413
1035: 30260 IVDELE = IVDELE + 1 10320413
1036: WRITE (I02,80000) IVTNUM 10330413
1037: IF (ICZERO) 10260, 0271, 20260 10340413
1038: 10260 IVPASS = IVPASS + 1 10350413
1039: WRITE (I02,80002) IVTNUM 10360413
1040: GO TO 0271 10370413
1041: 20260 IVFAIL = IVFAIL + 1 10380413
1042: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 10390413
1043: 0271 CONTINUE 10400413
1044: C 10410413
1045: C **** FCVS PROGRAM 413 - TEST 027 **** 10420413
1046: C 10430413
1047: C 10440413
1048: C TEST 027 USES A READ STATEMENT WHERE THE INPUT LIST ITEM IS A 10450413
1049: C IMPLIED-DO WITH AN ITEM OF INTEGER TYPE. THE STORAGE VALUES IN 10460413
1050: C THE ARRAY (BY THE IMPLIED-DO DURING THE READ) SHOULD RESULT IN A 10470413
1051: C DIFFERENT STORAGE SEQUENCE IN THE ARRAY THAN FOUND IN THE RECORD 10480413
1052: C OF THE FILE. THIS RECORD IS RECORD NUMBER 10 AND WAS CREATED IN 10490413
1053: C TEST 012 ABOVE. THE FIELD VALUE, FIELD POSITION, POSITION WITHIN 10500413
1054: C ARRAY IAON32 AND SUBSCRIPT VALUE AFTER THE READ IS 10510413
1055: C 10520413
1056: C VALUE 11 777 512 -32767 -11 -777 -512 32767 10530413
1057: C FIELD POS 1 3 2 4 5 7 6 8 10540413
1058: C IAON32 1 2 3 4 5 6 7 8 10550413
1059: C SUBSCRIPT 1,1,1 2,1,1 1,2,1 2,2,1 1,1,2 2,1,2 1,2,2 2,2,210560413
1060: C 10570413
1061: C 10580413
1062: IVTNUM = 27 10590413
1063: IF (ICZERO) 30270, 0270, 30270 10600413
1064: 0270 CONTINUE 10610413
1065: IAON32(2,1,1) = 0 10620413
1066: IAON32(2,2,1) = 0 10630413
1067: IVCORR = 30 10640413
1068: IVCOMP = 1 10650413
1069: READ (I10, REC = 10) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 10660413
1070: 1 (((IAON32 (J,K,I), K=1,2), J=1,2), I=1,2) 10670413
1071: IF (IRECN .EQ. 10) IVCOMP = IVCOMP * 2 10680413
1072: IF (IAON32(2,1,1) .EQ. 777) IVCOMP = IVCOMP * 3 10690413
1073: IF (IAON32(2,2,1) .EQ. -32767) IVCOMP = IVCOMP * 5 10700413
1074: C 10710413
1075: C THE ABOVE 3 IF STATEMENTS CHECK THE RECORD NUMBER, A NEGATIVE 10720413
1076: C FIELD VALUE AND A POSITIVE FIELD VALUE. 10730413
1077: C 10740413
1078: 40270 IF (IVCOMP - 30) 20270, 10270, 20270 10750413
1079: 30270 IVDELE = IVDELE + 1 10760413
1080: WRITE (I02,80000) IVTNUM 10770413
1081: IF (ICZERO) 10270, 0281, 20270 10780413
1082: 10270 IVPASS = IVPASS + 1 10790413
1083: WRITE (I02,80002) IVTNUM 10800413
1084: GO TO 0281 10810413
1085: 20270 IVFAIL = IVFAIL + 1 10820413
1086: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 10830413
1087: 0281 CONTINUE 10840413
1088: C 10850413
1089: C **** FCVS PROGRAM 413 - TEST 028 **** 10860413
1090: C 10870413
1091: C 10880413
1092: C TEST 028 USES A READ STATEMENT WHERE THE INPUT LIST ITEM IS A 10890413
1093: C IMPLIED-DO WITH AN ITEM OF REAL TYPE. THE STORAGE VALUES IN 10900413
1094: C THE ARRAY (BY THE IMPLIED-DO DURING THE READ) SHOULD RESULT IN A 10910413
1095: C SEQUENCE THE SAME AS FOUND IN THE RECORD OF THE FILE. THIS REC- 10920413
1096: C ORD IS RECORD NUMBER 011 AND WAS CREATED IN TEST 013 ABOVE. 10930413
1097: C THE FIELD VALUE, FIELD POSITION, POSITION WITHIN ARRAY RAON32 AND10940413
1098: C SUBSCRIPT VALUE AFTER THE THE READ IS 10950413
1099: C 10960413
1100: C VALUE 11. -11. 7.77 -7.77 .512 -.512 -32767. 32767.10970413
1101: C FIELD POS 1 2 3 4 5 6 7 8 10980413
1102: C RAON32 1 2 3 4 5 6 7 8 10990413
1103: C SUBSCRIPT 1,1,1 2,1,1 1,2,1 2,2,1 1,1,2 2,1,2 1,2,2 2,2,211000413
1104: C 11010413
1105: C 11020413
1106: IVTNUM = 28 11030413
1107: IF (ICZERO) 30280, 0280, 30280 11040413
1108: 0280 CONTINUE 11050413
1109: RAON32(1,2,1) = 0.0 11060413
1110: RAON32(1,2,2) = 0.0 11070413
1111: IVCORR = 30 11080413
1112: IVCOMP = 1 11090413
1113: READ (I10, REC = 11) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 11100413
1114: 1 (((RAON32 (J,K,I), J=1,2), K=1,2), I=1,2) 11110413
1115: IF (IRECN .EQ. 11) IVCOMP = IVCOMP * 2 11120413
1116: IF (RAON32(1,2,1) .EQ. 7.77) IVCOMP = IVCOMP * 3 11130413
1117: IF (RAON32(1,2,2) .EQ. -32767.) IVCOMP = IVCOMP * 5 11140413
1118: C 11150413
1119: C THE ABOVE 3 IF STATEMENTS CHECK THE RECORD NUMBER, A NEGATIVE 11160413
1120: C FIELD VALUE AND A POSITIVE FIELD VALUE. 11170413
1121: C 11180413
1122: 40280 IF (IVCOMP - 30) 20280, 10280, 20280 11190413
1123: 30280 IVDELE = IVDELE + 1 11200413
1124: WRITE (I02,80000) IVTNUM 11210413
1125: IF (ICZERO) 10280, 0291, 20280 11220413
1126: 10280 IVPASS = IVPASS + 1 11230413
1127: WRITE (I02,80002) IVTNUM 11240413
1128: GO TO 0291 11250413
1129: 20280 IVFAIL = IVFAIL + 1 11260413
1130: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 11270413
1131: 0291 CONTINUE 11280413
1132: C 11290413
1133: C **** FCVS PROGRAM 413 - TEST 029 **** 11300413
1134: C 11310413
1135: C 11320413
1136: C TEST 029 USES A READ STATEMENT WHERE THE INPUT LIST ITEM IS A 11330413
1137: C IMPLIED-DO WITH AN ITEM OF LOGICAL TYPE. THE STORAGE VALUES IN 11340413
1138: C THE ARRAY (BY THE IMPLIED-DO DURING THE READ) SHOULD RESULT IN A 11350413
1139: C DIFFERENT STORAGE SEQUENCE IN THE ARRAY THAN FOUND IN THE RECORD 11360413
1140: C OF THE FILE. THIS RECORD IS RECORD NUMBER 12 AND WAS CREATED IN 11370413
1141: C TEST 014 ABOVE. THE FIELD VALUE, FIELD POSITION, POSITION WITHIN 11380413
1142: C ARRAY LAON32 AND SUBSCRIPT VALUE AFTER THE READ IS 11390413
1143: C 11400413
1144: C VALUE T T F F T T F F 11410413
1145: C FIELD POS 1 5 3 7 2 6 4 8 11420413
1146: C LAON32 1 2 3 4 5 6 7 8 11430413
1147: C SUBSCRIPT 1,1,1 2,1,1 1,2,1 2,2,1 1,1,2 2,1,2 1,2,2 2,2,211440413
1148: C 11450413
1149: C 11460413
1150: IVTNUM = 29 11470413
1151: IF (ICZERO) 30290, 0290, 30290 11480413
1152: 0290 CONTINUE 11490413
1153: LAON32(1,2,1) = .TRUE. 11500413
1154: LAON32(2,1,1) = .FALSE. 11510413
1155: IVCORR = 30 11520413
1156: IVCOMP = 1 11530413
1157: READ (I10, REC = 12) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 11540413
1158: 1 (((LAON32 (J,K,I), I=1,2), K=1,2), J=1,2) 11550413
1159: IF (IRECN .EQ. 12) IVCOMP = IVCOMP * 2 11560413
1160: IF ( .NOT. LAON32(1,2,1)) IVCOMP = IVCOMP * 3 11570413
1161: IF (LAON32(2,1,1)) IVCOMP = IVCOMP * 5 11580413
1162: 40290 IF (IVCOMP - 30) 20290, 10290, 20290 11590413
1163: 30290 IVDELE = IVDELE + 1 11600413
1164: WRITE (I02,80000) IVTNUM 11610413
1165: IF (ICZERO) 10290, 0301, 20290 11620413
1166: 10290 IVPASS = IVPASS + 1 11630413
1167: WRITE (I02,80002) IVTNUM 11640413
1168: GO TO 0301 11650413
1169: 20290 IVFAIL = IVFAIL + 1 11660413
1170: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 11670413
1171: 0301 CONTINUE 11680413
1172: C 11690413
1173: C **** FCVS PROGRAM 413 - TEST 030 **** 11700413
1174: C 11710413
1175: C 11720413
1176: C TEST 030 USES A READ STATEMENT WITHOUT ANY INPUT LIST ITEMS 11730413
1177: C (INPUT LIST ITEMS ARE OPTIONAL FOR THE READ STATEMENT). THIS 11740413
1178: C RECORD WAS WRITTEN IN TEST 14 AND SHOULD BE RECORD NUMBER 13. 11750413
1179: C THE PURPOSE OF THIS TEST IS TO SEE THAT THE STATEMENT CONSTRUCT 11760413
1180: C IS ACCEPTABLE TO THE COMPILER. 11770413
1181: C ALSO THE LENGTH OF AN UNFORMATTED RECORD MAY BE ZERO. 11780413
1182: C 11790413
1183: C SEE SECTIONS 12.1.2, UNFORMATTED RECORDS 11800413
1184: C 12.8, READ, WRITE AND PRINT STATEMENTS11810413
1185: C 11820413
1186: C 11830413
1187: IVTNUM = 30 11840413
1188: IF (ICZERO) 30300, 0300, 30300 11850413
1189: 0300 CONTINUE 11860413
1190: IRECN = 13 11870413
1191: IVCORR = 13 11880413
1192: READ (I10, REC = 13) 11890413
1193: IVCOMP = IRECN 11900413
1194: 40300 IF (IVCOMP - 13) 20300, 10300, 20300 11910413
1195: 30300 IVDELE = IVDELE + 1 11920413
1196: WRITE (I02,80000) IVTNUM 11930413
1197: IF (ICZERO) 10300, 0311, 20300 11940413
1198: 10300 IVPASS = IVPASS + 1 11950413
1199: WRITE (I02,80002) IVTNUM 11960413
1200: GO TO 0311 11970413
1201: 20300 IVFAIL = IVFAIL + 1 11980413
1202: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 11990413
1203: 0311 CONTINUE 12000413
1204: C 12010413
1205: C **** FCVS PROGRAM 413 - TEST 031 **** 12020413
1206: C 12030413
1207: C 12040413
1208: C TEST 031 USES A READ STATEMENT IN WHICH THE NUMBER OF VALUES 12050413
1209: C REQUIRED BY THE INPUT LIST IS LESS THAN THE NUMBER OF VALUES IN 12060413
1210: C THE RECORD. 12070413
1211: C 12080413
1212: C SEE SECTION 12.9.5.1, UNFORMATED DATA TRANSFER 12090413
1213: C 12100413
1214: C 12110413
1215: IVTNUM = 31 12120413
1216: IF (ICZERO) 30310, 0310, 30310 12130413
1217: 0310 CONTINUE 12140413
1218: IVON21 = 0 12150413
1219: IVON22 = 0 12160413
1220: IVON31 = 0 12170413
1221: IVCORR = 0 12180413
1222: IVCOMP = 1 12190413
1223: READ (I10, REC = 01) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 12200413
1224: 1 IVON21, IVON22, IVON31 12210413
1225: IF (IRECN .EQ. 01) IVCOMP = IVCOMP * 2 12220413
1226: IF (IVON21 .EQ. 11) IVCOMP = IVCOMP * 3 12230413
1227: IF (IVON22 .EQ. -11) IVCOMP = IVCOMP * 5 12240413
1228: 40310 IF (IVCOMP - 30) 20310, 10310, 20310 12250413
1229: 30310 IVDELE = IVDELE + 1 12260413
1230: WRITE (I02,80000) IVTNUM 12270413
1231: IF (ICZERO) 10310, 0321, 20310 12280413
1232: 10310 IVPASS = IVPASS + 1 12290413
1233: WRITE (I02,80002) IVTNUM 12300413
1234: GO TO 0321 12310413
1235: 20310 IVFAIL = IVFAIL + 1 12320413
1236: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 12330413
1237: 0321 CONTINUE 12340413
1238: C 12350413
1239: C 12360413
1240: C TEST 032 AND 033 VERIFIES THAT RECORDS MAY BE READ IN ANY ORDER12370413
1241: C ALSO THAT A VARIABLE MAY BE USED AS THE OPERAND OF THE REC SPEC- 12380413
1242: C IFIER FOR A READ STATEMENT. 12390413
1243: C 12400413
1244: C SEE SECTION 2.2.4.2(1) , DIRECT ACCESS 12410413
1245: C 12420413
1246: C 12430413
1247: C 12440413
1248: C **** FCVS PROGRAM 413 - TEST 032 **** 12450413
1249: C 12460413
1250: C 12470413
1251: C TEST 032 READS THE RECORDS WRITTEN IN TEST 16. EVERY OTHER 12480413
1252: C RECORD IS READ FOR A TOTAL OF 100 RECORDS (THE REC SPECIFIER 12490413
1253: C VARIABLE IS INCREMENTED BY 2). 12500413
1254: C 12510413
1255: C 12520413
1256: IVTNUM = 32 12530413
1257: IF (ICZERO) 30320, 0320, 30320 12540413
1258: 0320 CONTINUE 12550413
1259: IRECCK = 13 12560413
1260: IRECN = 0 12570413
1261: IREC = 13 12580413
1262: IVCOMP = 0 12590413
1263: DO 4134 I = 1,100 12600413
1264: IREC = IREC + 2 12610413
1265: IRECCK = IRECCK + 2 12620413
1266: READ (I10, REC = IREC) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 12630413
1267: 1 IVON21, IVON22, IVON31, IVON32, IVON33, IVON34, IVON55, IVON56 12640413
1268: IF (IRECN .EQ. IRECCK) IVCOMP = IVCOMP + 1 12650413
1269: 4134 CONTINUE 12660413
1270: IVCORR = 100 12670413
1271: 40320 IF (IVCOMP - 100) 20320, 10320, 20320 12680413
1272: 30320 IVDELE = IVDELE + 1 12690413
1273: WRITE (I02,80000) IVTNUM 12700413
1274: IF (ICZERO) 10320, 0331, 20320 12710413
1275: 10320 IVPASS = IVPASS + 1 12720413
1276: WRITE (I02,80002) IVTNUM 12730413
1277: GO TO 0331 12740413
1278: 20320 IVFAIL = IVFAIL + 1 12750413
1279: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 12760413
1280: 0331 CONTINUE 12770413
1281: C 12780413
1282: C **** FCVS PROGRAM 413 - TEST 033 **** 12790413
1283: C 12800413
1284: C 12810413
1285: C TEST 033 READS THE RECORDS WRITTEN IN TEST 17. THIS TEST IS 12820413
1286: C SIMILAR TO TEST 32 ABOVE EXCEPT THE FILE IS READ IN REVERSE 12830413
1287: C RECORD NUMBER ORDER. 12840413
1288: C 12850413
1289: C 12860413
1290: IVTNUM = 33 12870413
1291: IF (ICZERO) 30330, 0330, 30330 12880413
1292: 0330 CONTINUE 12890413
1293: IRECCK = 216 12900413
1294: IRECN = 0 12910413
1295: IVCOMP = 0 12920413
1296: IREC = 216 12930413
1297: DO 4135 I = 1,100 12940413
1298: IREC = IREC - 2 12950413
1299: IRECCK = IRECCK - 2 12960413
1300: READ (I10, REC = IREC) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 12970413
1301: 1 IVON21, IVON22, IVON31, IVON32, IVON33, IVON34, IVON55, IVON56 12980413
1302: IF (IRECN .EQ. IRECCK) IVCOMP = IVCOMP + 1 12990413
1303: 4135 CONTINUE 13000413
1304: IVCORR = 100 13010413
1305: 40330 IF (IVCOMP - 100) 20330, 10330, 20330 13020413
1306: 30330 IVDELE = IVDELE + 1 13030413
1307: WRITE (I02,80000) IVTNUM 13040413
1308: IF (ICZERO) 10330, 0341, 20330 13050413
1309: 10330 IVPASS = IVPASS + 1 13060413
1310: WRITE (I02,80002) IVTNUM 13070413
1311: GO TO 0341 13080413
1312: 20330 IVFAIL = IVFAIL + 1 13090413
1313: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 13100413
1314: 0341 CONTINUE 13110413
1315: C 13120413
1316: C **** FCVS PROGRAM 413 - TEST 034 **** 13130413
1317: C 13140413
1318: C 13150413
1319: C TEST 034 VERIFIES THAT THE VALUES OF A RECORD MAY BE CHANGED 13160413
1320: C WHEN THE RECORD IS REWRITTEN. RECORD NUMBER 01 IS USED FOR 13170413
1321: C TESTING. THE RECORD WAS WRITTEN IN TEST 02 AND READ IN TEST 18. 13180413
1322: C A RECORD CANNOT BE DELETED FROM THE FILE BUT IT CAN BE REWRITTEN. 13190413
1323: C 13200413
1324: C SEE SECTION 12.2.4.2 (5), DIRECT ACCESS 13210413
1325: C 13220413
1326: C 13230413
1327: IVTNUM = 34 13240413
1328: IF (ICZERO) 30340, 0340, 30340 13250413
1329: 0340 CONTINUE 13260413
1330: IRECN = 01 13270413
1331: WRITE (I10, REC = 01) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 13280413
1332: 1 ICON31, ICON32, ICON21, ICON22, ICON55, ICON56, ICON33, ICON3413290413
1333: READ (I10, REC=01) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 13300413
1334: 1 IVON61, IVON62, IVON63, IVON64, IVON65,IVON66, IVON67, IVON68 13310413
1335: IVCORR = 210 13320413
1336: IVCOMP = 1 13330413
1337: IF (IRECN .EQ. 01) IVCOMP = IVCOMP * 2 13340413
1338: IF (IVON61 .EQ. 777) IVCOMP = IVCOMP * 3 13350413
1339: IF (IVON62 .EQ. -777) IVCOMP = IVCOMP * 5 13360413
1340: IF (IVON66 .EQ. 32767) IVCOMP = IVCOMP * 7 13370413
1341: 40340 IF (IVCOMP - 210) 20340, 10340, 20340 13380413
1342: 30340 IVDELE = IVDELE + 1 13390413
1343: WRITE (I02,80000) IVTNUM 13400413
1344: IF (ICZERO) 10340, 0351, 20340 13410413
1345: 10340 IVPASS = IVPASS + 1 13420413
1346: WRITE (I02,80002) IVTNUM 13430413
1347: GO TO 0351 13440413
1348: 20340 IVFAIL = IVFAIL + 1 13450413
1349: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 13460413
1350: 0351 CONTINUE 13470413
1351: C 13480413
1352: C 13490413
1353: C THE FOLLOWING SOURCE CODE BRACKETED BY THE COMMENT LINES 13500413
1354: C ***** BEGIN-FILE-DUMP SECTION AND ***** END-FILE-DUMP SECTION 13510413
1355: C MAY OR MAY NOT APPEAR AS COMMENTS IN THE SOURCE PROGRAM. 13520413
1356: C THIS CODE IS OPTIONAL AND BY DEFAULT IT IS AUTOMATICALLY COMMENTED13530413
1357: C OUT BY THE EXECUTIVE ROUTINE. A DUMP OF THE FILE USED BY THIS 13540413
1358: C ROUTINE IS PROVIDED BY USING THE *OPT1 EXECUTIVE ROUTINE CONTROL 13550413
1359: C CARD. IF THE OPTIONAL CODE IS SELECTED THE ROUTINE WILL DUMP 13560413
1360: C THE CONTENTS OF THE FILE TO THE PRINT FILE FOLLOWING THE TEST 13570413
1361: C REPORT AND BEFORE THE TEST REPORT SUMMARY. 13580413
1362: C 13590413
1363: CDB** BEGIN FILE DUMP CODE 13600413
1364: C ITOTR = 214 13610413
1365: C ILUN = I10 13620413
1366: C IRLGN = 80 13630413
1367: C IRNUM = 1 13640413
1368: C7701 FORMAT (80A1) 13650413
1369: C7702 FORMAT (1X,80A1) 13660413
1370: C7703 FORMAT (10X,5HFILE ,I2,5H HAS ,I3,13H RECORDS - OK) 13670413
1371: C7704 FORMAT (10X,5HFILE ,I2,5H HAS ,I3,27H RECORDS - THERE SHOULD BE ,I13680413
1372: C 13,9H RECORDS.) 13690413
1373: C DO 7771 IRNUM = 1, ITOTR 13700413
1374: C READ (ILUN, REC = IRNUM) (IDUMP(ICH), ICH = 1, IRLGN) 13710413
1375: C WRITE (I02, 7702) (IDUMP(ICH), ICH = 1, IRLGN) 13720413
1376: C7771 CONTINUE 13730413
1377: CDE** END OF DUMP CODE 13740413
1378: C TEST 034 IS THE LAST TEST IN THIS PROGRAM. THE ROUTINE SHOULD13750413
1379: C HAVE MADE 34 EXPLICIT TESTS AND PROCESSED ONE FILE CONNECTED FOR 13760413
1380: C DIRECT ACCESS 13770413
1381: C 13780413
1382: C 13790413
1383: C 13800413
1384: C WRITE OUT TEST SUMMARY 13810413
1385: C 13820413
1386: WRITE (I02,90004) 13830413
1387: WRITE (I02,90014) 13840413
1388: WRITE (I02,90004) 13850413
1389: WRITE (I02,90000) 13860413
1390: WRITE (I02,90004) 13870413
1391: WRITE (I02,90020) IVFAIL 13880413
1392: WRITE (I02,90022) IVPASS 13890413
1393: WRITE (I02,90024) IVDELE 13900413
1394: STOP 13910413
1395: 90001 FORMAT (1H ,24X,5HFM413) 13920413
1396: 90000 FORMAT (1H ,20X,20HEND OF PROGRAM FM413) 13930413
1397: C 13940413
1398: C FORMATS FOR TEST DETAIL LINES 13950413
1399: C 13960413
1400: 80000 FORMAT (1H ,4X,I5,6X,7HDELETED) 13970413
1401: 80002 FORMAT (1H ,4X,I5,7X,4HPASS) 13980413
1402: 80010 FORMAT (1H ,4X,I5,7X,4HFAIL,10X,I6,9X,I6) 13990413
1403: 80012 FORMAT (1H ,4X,I5,7X,4HFAIL,4X,E12.5,3X,E12.5) 14000413
1404: 80018 FORMAT (1H ,4X,I5,7X,4HFAIL,2X,A14,1X,A14) 14010413
1405: C 14020413
1406: C FORMAT STATEMENTS FOR PAGE HEADERS 14030413
1407: C 14040413
1408: 90002 FORMAT (1H1) 14050413
1409: 90004 FORMAT (1H ) 14060413
1410: 90006 FORMAT (1H ,10X,34HFORTRAN COMPILER VALIDATION SYSTEM) 14070413
1411: 90008 FORMAT (1H ,21X,11HVERSION 1.0) 14080413
1412: 90010 FORMAT (1H ,8X,38HFOR OFFICIAL USE ONLY - COPYRIGHT 1978) 14090413
1413: 90012 FORMAT (1H ,5X,4HTEST,5X,9HPASS/FAIL,5X,8HCOMPUTED,8X,7HCORRECT) 14100413
1414: 90014 FORMAT (1H ,5X,46H----------------------------------------------) 14110413
1415: 90016 FORMAT (1H ,18X,17HSUBSET LEVEL TEST) 14120413
1416: C 14130413
1417: C FORMAT STATEMENTS FOR RUN SUMMARY 14140413
1418: C 14150413
1419: 90020 FORMAT (1H ,19X,I5,13H TESTS FAILED) 14160413
1420: 90022 FORMAT (1H ,19X,I5,13H TESTS PASSED) 14170413
1421: 90024 FORMAT (1H ,19X,I5,14H TESTS DELETED) 14180413
1422: END 14190413
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.