|
|
1.1 root 1: c
2: c comment section
3: c
4: c fm056
5: c
6: c fm056 is a main which tests the argument passing linkage of
7: c a 2 level nested subroutine and an external function reference.
8: c the main program fm056 calls subroutine fs057 passing one
9: c argument. subroutine fs057 calls subroutine fs058 passing two
10: c arguments. subroutine fs058 references external function ff059
11: c passing 3 arguments. function ff059 adds the values of the 3
12: c arguments together. subroutine fs057 and fs058 then merely
13: c return the result to fm056 in the first argument.
14: c
15: c the values of the arguments that are passed to each
16: c subprogram and function, and returned to the calling or
17: c referencing program are saved in an integer array. fm056 then
18: c uses these values to test the compiler's argument passing
19: c capabilities.
20: c
21: c references
22: c american national standard programming language fortran,
23: c x3.9-1978
24: c
25: c section 15.6.2, subroutine reference
26: common iacn11 (12)
27: c
28: c **********************************************************
29: c
30: c a compiler validation system for the fortran language
31: c based on specifications as defined in american national standard
32: c programming language fortran x3.9-1978, has been developed by the
33: c federal cobol compiler testing service. the fortran compiler
34: c validation system (fcvs) consists of audit routines, their related
35: c data, and an executive system. each audit routine is a fortran
36: c program, subprogram or function which includes tests of specific
37: c language elements and supporting procedures indicating the result
38: c of executing these tests.
39: c
40: c this particular program/subprogram/function contains features
41: c found only in the subset as defined in x3.9-1978.
42: c
43: c suggestions and comments should be forwarded to -
44: c
45: c department of the navy
46: c federal cobol compiler testing service
47: c washington, d.c. 20376
48: c
49: c **********************************************************
50: c
51: c
52: c
53: c initialization section
54: c
55: c initialize constants
56: c **************
57: c i01 contains the logical unit number for the card reader.
58: i01 = 5
59: c i02 contains the logical unit number for the printer.
60: i02 = 6
61: c system environment section
62: c
63: cx010 this card is replaced by contents of fexec x-010 control card.
64: c the cx010 card is for overriding the program default i01 = 5
65: c (unit number for card reader).
66: cx011 this card is replaced by contents of fexec x-011 control card.
67: c the cx011 card is for systems which require additional
68: c fortran statements for files associated with cx010 above.
69: c
70: cx020 this card is replaced by contents of fexec x-020 control card.
71: c the cx020 card is for overriding the program default i02 = 6
72: c (unit number for printer).
73: cx021 this card is replaced by contents of fexec x-021 control card.
74: c the cx021 card is for systems which require additional
75: c fortran statements for files associated with cx020 above.
76: c
77: ivpass=0
78: ivfail=0
79: ivdele=0
80: iczero=0
81: c
82: c write page headers
83: write (i02,90000)
84: write (i02,90001)
85: write (i02,90002)
86: write (i02, 90002)
87: write (i02,90003)
88: write (i02,90002)
89: write (i02,90004)
90: write (i02,90002)
91: write (i02,90011)
92: write (i02,90002)
93: write (i02,90002)
94: write (i02,90005)
95: write (i02,90006)
96: write (i02,90002)
97: c
98: c test section
99: c
100: c subroutine subprogram
101: c
102: ivon01 = 5
103: call fs057 (ivon01)
104: iacn11 (12) = ivon01
105: ivtnum = 430
106: c
107: c **** test 430 ****
108: c
109: c test 430 tests the value of the argument received by fs057 from
110: c a fm056 call to fs057
111: c
112: if (iczero) 34300, 4300, 34300
113: 4300 continue
114: ivcomp = iacn11 (1)
115: go to 44300
116: 34300 ivdele = ivdele + 1
117: write (i02,80003) ivtnum
118: if (iczero) 44300, 4311, 44300
119: 44300 if (ivcomp - 5) 24300,14300,24300
120: 14300 ivpass = ivpass + 1
121: write (i02,80001) ivtnum
122: go to 4311
123: 24300 ivfail = ivfail + 1
124: ivcorr = 5
125: write (i02,80004) ivtnum, ivcomp ,ivcorr
126: 4311 continue
127: ivtnum = 431
128: c
129: c **** test 431 ****
130: c
131: c test 431 tests the value of the second argument that was passed
132: c from a fs057 call to fs058
133: c
134: c
135: if (iczero) 34310, 4310, 34310
136: 4310 continue
137: ivcomp = iacn11 (2)
138: go to 44310
139: 34310 ivdele = ivdele + 1
140: write (i02,80003) ivtnum
141: if (iczero) 44310, 4321, 44310
142: 44310 if (ivcomp - 4) 24310,14310,24310
143: 14310 ivpass = ivpass + 1
144: write (i02,80001) ivtnum
145: go to 4321
146: 24310 ivfail = ivfail + 1
147: ivcorr = 4
148: write (i02,80004) ivtnum, ivcomp ,ivcorr
149: 4321 continue
150: ivtnum = 432
151: c
152: c **** test 432 ****
153: c
154: c test 432 tests the value of the first argument received by fs058
155: c from a fs057 call to fs058
156: c
157: c
158: if (iczero) 34320, 4320, 34320
159: 4320 continue
160: ivcomp = iacn11 (3)
161: go to 44320
162: 34320 ivdele = ivdele + 1
163: write (i02,80003) ivtnum
164: if (iczero) 44320, 4331, 44320
165: 44320 if (ivcomp - 5) 24320,14320,24320
166: 14320 ivpass = ivpass + 1
167: write (i02,80001) ivtnum
168: go to 4331
169: 24320 ivfail = ivfail + 1
170: ivcorr = 5
171: write (i02,80004) ivtnum, ivcomp ,ivcorr
172: 4331 continue
173: ivtnum = 433
174: c
175: c **** test 433 ****
176: c
177: c test 433 tests the value of the second argument received by fs058
178: c from a fs057 call to fs058
179: c
180: c
181: if (iczero) 34330, 4330, 34330
182: 4330 continue
183: ivcomp = iacn11 (4)
184: go to 44330
185: 34330 ivdele = ivdele + 1
186: write (i02,80003) ivtnum
187: if (iczero) 44330, 4341, 44330
188: 44330 if (ivcomp - 4) 24330,14330,24330
189: 14330 ivpass = ivpass + 1
190: write (i02,80001) ivtnum
191: go to 4341
192: 24330 ivfail = ivfail + 1
193: ivcorr = 4
194: write (i02,80004) ivtnum, ivcomp ,ivcorr
195: 4341 continue
196: ivtnum = 434
197: c
198: c **** test 434 ****
199: c
200: c test 434 tests the value of the third argument that was passed
201: c from a fs058 reference of function ff059
202: c
203: c
204: if (iczero) 34340, 4340, 34340
205: 4340 continue
206: ivcomp = iacn11 (5)
207: go to 44340
208: 34340 ivdele = ivdele + 1
209: write (i02,80003) ivtnum
210: if (iczero) 44340, 4351, 44340
211: 44340 if (ivcomp - 3) 24340,14340,24340
212: 14340 ivpass = ivpass + 1
213: write (i02,80001) ivtnum
214: go to 4351
215: 24340 ivfail = ivfail + 1
216: ivcorr = 3
217: write (i02,80004) ivtnum, ivcomp ,ivcorr
218: 4351 continue
219: ivtnum = 435
220: c
221: c **** test 435 ****
222: c
223: c test 435 tests the value of the first argument received by ff059
224: c from a fs058 reference of function ff059
225: c
226: c
227: if (iczero) 34350, 4350, 34350
228: 4350 continue
229: ivcomp = iacn11 (6)
230: go to 44350
231: 34350 ivdele = ivdele + 1
232: write (i02,80003) ivtnum
233: if (iczero) 44350, 4361, 44350
234: 44350 if (ivcomp - 5) 24350,14350,24350
235: 14350 ivpass = ivpass + 1
236: write (i02,80001) ivtnum
237: go to 4361
238: 24350 ivfail = ivfail + 1
239: ivcorr = 5
240: write (i02,80004) ivtnum, ivcomp ,ivcorr
241: 4361 continue
242: ivtnum = 436
243: c
244: c **** test 436 ****
245: c
246: c test 436 tests the value of the second argument received by ff059
247: c from a fs058 reference of function ff059
248: c
249: c
250: if (iczero) 34360, 4360, 34360
251: 4360 continue
252: ivcomp = iacn11 (7)
253: go to 44360
254: 34360 ivdele = ivdele + 1
255: write (i02,80003) ivtnum
256: if (iczero) 44360, 4371, 44360
257: 44360 if (ivcomp - 4) 24360,14360,24360
258: 14360 ivpass = ivpass + 1
259: write (i02,80001) ivtnum
260: go to 4371
261: 24360 ivfail = ivfail + 1
262: ivcorr = 4
263: write (i02,80004) ivtnum, ivcomp ,ivcorr
264: 4371 continue
265: ivtnum = 437
266: c
267: c **** test 437 ****
268: c
269: c test 437 tests the value of the third argument received by ff059
270: c from a fs058 reference of function ff059
271: c
272: c
273: if (iczero) 34370, 4370, 34370
274: 4370 continue
275: ivcomp = iacn11 (8)
276: go to 44370
277: 34370 ivdele = ivdele + 1
278: write (i02,80003) ivtnum
279: if (iczero) 44370, 4381, 44370
280: 44370 if (ivcomp - 3) 24370,14370,24370
281: 14370 ivpass = ivpass + 1
282: write (i02,80001) ivtnum
283: go to 4381
284: 24370 ivfail = ivfail + 1
285: ivcorr = 3
286: write (i02,80004) ivtnum, ivcomp ,ivcorr
287: 4381 continue
288: ivtnum = 438
289: c
290: c **** test 438 ****
291: c
292: c test 438 tests the value of the function determined by ff059
293: c
294: c
295: if (iczero) 34380, 4380, 34380
296: 4380 continue
297: ivcomp = iacn11 (9)
298: go to 44380
299: 34380 ivdele = ivdele + 1
300: write (i02,80003) ivtnum
301: if (iczero) 44380, 4391, 44380
302: 44380 if (ivcomp - 12) 24380,14380,24380
303: 14380 ivpass = ivpass + 1
304: write (i02,80001) ivtnum
305: go to 4391
306: 24380 ivfail = ivfail + 1
307: ivcorr = 12
308: write (i02,80004) ivtnum, ivcomp ,ivcorr
309: 4391 continue
310: ivtnum = 439
311: c
312: c **** test 439 ****
313: c
314: c test 439 tests the value of the function returned to fs058 by
315: c ff059
316: c
317: c
318: if (iczero) 34390, 4390, 34390
319: 4390 continue
320: ivcomp = iacn11 (10)
321: go to 44390
322: 34390 ivdele = ivdele + 1
323: write (i02,80003) ivtnum
324: if (iczero) 44390, 4401, 44390
325: 44390 if (ivcomp - 12) 24390,14390,24390
326: 14390 ivpass = ivpass + 1
327: write (i02,80001) ivtnum
328: go to 4401
329: 24390 ivfail = ivfail + 1
330: ivcorr = 12
331: write (i02,80004) ivtnum, ivcomp ,ivcorr
332: 4401 continue
333: ivtnum = 440
334: c
335: c **** test 440 ****
336: c
337: c test 440 tests the value of the first argument returned to fs057
338: c by fs058
339: c
340: if (iczero) 34400, 4400, 34400
341: 4400 continue
342: ivcomp = iacn11 (11)
343: go to 44400
344: 34400 ivdele = ivdele + 1
345: write (i02,80003) ivtnum
346: if (iczero) 44400, 4411, 44400
347: 44400 if (ivcomp - 12) 24400,14400,24400
348: 14400 ivpass = ivpass + 1
349: write (i02,80001) ivtnum
350: go to 4411
351: 24400 ivfail = ivfail + 1
352: ivcorr = 12
353: write (i02,80004) ivtnum, ivcomp ,ivcorr
354: 4411 continue
355: ivtnum = 441
356: c
357: c **** test 441 ****
358: c
359: c test 441 tests the value of the first argument returned to fm056
360: c by fs057
361: c
362: c
363: if (iczero) 34410, 4410, 34410
364: 4410 continue
365: ivcomp = iacn11 (12)
366: go to 44410
367: 34410 ivdele = ivdele + 1
368: write (i02,80003) ivtnum
369: if (iczero) 44410, 4421, 44410
370: 44410 if (ivcomp - 12) 24410,14410,24410
371: 14410 ivpass = ivpass + 1
372: write (i02,80001) ivtnum
373: go to 4421
374: 24410 ivfail = ivfail + 1
375: ivcorr = 12
376: write (i02,80004) ivtnum, ivcomp ,ivcorr
377: 4421 continue
378: c
379: c write page footings and run summaries
380: 99999 continue
381: write (i02,90002)
382: write (i02,90006)
383: write (i02,90002)
384: write (i02,90002)
385: write (i02,90007)
386: write (i02,90002)
387: write (i02,90008) ivfail
388: write (i02,90009) ivpass
389: write (i02,90010) ivdele
390: c
391: c
392: c terminate routine execution
393: stop
394: c
395: c format statements for page headers
396: 90000 format (1h1)
397: 90002 format (1h )
398: 90001 format (1h ,10x,34hfortran compiler validation system)
399: 90003 format (1h ,21x,11hversion 1.0)
400: 90004 format (1h ,10x,38hfor official use only - copyright 1978)
401: 90005 format (1h ,5x,4htest,5x,9hpass/fail, 5x,8hcomputed,8x,7hcorrect)
402: 90006 format (1h ,5x,46h----------------------------------------------)
403: 90011 format (1h ,18x,17hsubset level test)
404: c
405: c format statements for run summaries
406: 90008 format (1h ,15x,i5,19h errors encountered)
407: 90009 format (1h ,15x,i5,13h tests passed)
408: 90010 format (1h ,15x,i5,14h tests deleted)
409: c
410: c format statements for test results
411: 80001 format (1h ,4x,i5,7x,4hpass)
412: 80002 format (1h ,4x,i5,7x,4hfail)
413: 80003 format (1h ,4x,i5,7x,7hdeleted)
414: 80004 format (1h ,4x,i5,7x,4hfail,10x,i6,9x,i6)
415: 80005 format (1h ,4x,i5,7x,4hfail,4x,e12.5,3x,e12.5)
416: c
417: 90007 format (1h ,20x,20hend of program fm056)
418: end
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.