1! Test alternate entry points for functions when the result types
2! of all entry points match
3
4	character*(*) function f1 (str, i, j)
5	character str*(*), e1*(*), e2*(*)
6	integer i, j
7	f1 = str (i:j)
8	return
9	entry e1 (str, i, j)
10	i = i + 1
11	entry e2 (str, i, j)
12	j = j - 1
13	e2 = str (i:j)
14	end function
15
16	character*5 function f3 ()
17	character e3*(*), e4*(*)
18	integer i
19	f3 = 'ABCDE'
20	return
21	entry e3 (i)
22	entry e4 (i)
23	if (i .gt. 0) then
24	  e3 = 'abcde'
25	else
26	  e4 = 'UVWXY'
27	endif
28	end function
29
30	program entrytest
31	character f1*16, e1*16, e2*16, str*16, ret*16
32	character f3*5, e3*5, e4*5
33	integer i, j
34	str = 'ABCDEFGHIJ'
35	i = 2
36	j = 6
37	ret = f1 (str, i, j)
38	if ((i .ne. 2) .or. (j .ne. 6)) STOP 1
39	if (ret .ne. 'BCDEF') STOP 2
40	ret = e1 (str, i, j)
41	if ((i .ne. 3) .or. (j .ne. 5)) STOP 3
42	if (ret .ne. 'CDE') STOP 4
43	ret = e2 (str, i, j)
44	if ((i .ne. 3) .or. (j .ne. 4)) STOP 5
45	if (ret .ne. 'CD') STOP 6
46	if (f3 () .ne. 'ABCDE') STOP 7
47	if (e3 (1) .ne. 'abcde') STOP 8
48	if (e4 (1) .ne. 'abcde') STOP 9
49	if (e3 (0) .ne. 'UVWXY') STOP 10
50	if (e4 (0) .ne. 'UVWXY') STOP 11
51	end program
52