! Test alternate entry points for functions when the result types ! of all entry points match function f1 (str, i, j) result (r) character str*(*), r1*(*), r2*(*), r*(*) integer i, j r = str (i:j) return entry e1 (str, i, j) result (r1) i = i + 1 entry e2 (str, i, j) result (r2) j = j - 1 r2 = str (i:j) end function function f3 () result (r) character r3*5, r4*5, r*5 integer i r = 'ABCDE' return entry e3 (i) result (r3) entry e4 (i) result (r4) if (i .gt. 0) then r3 = 'abcde' else r4 = 'UVWXY' endif end function program entrytest character f1*16, e1*16, e2*16, str*16, ret*16 character f3*5, e3*5, e4*5 integer i, j str = 'ABCDEFGHIJ' i = 2 j = 6 ret = f1 (str, i, j) if ((i .ne. 2) .or. (j .ne. 6)) STOP 1 if (ret .ne. 'BCDEF') STOP 2 ret = e1 (str, i, j) if ((i .ne. 3) .or. (j .ne. 5)) STOP 3 if (ret .ne. 'CDE') STOP 4 ret = e2 (str, i, j) if ((i .ne. 3) .or. (j .ne. 4)) STOP 5 if (ret .ne. 'CD') STOP 6 if (f3 () .ne. 'ABCDE') STOP 7 if (e3 (1) .ne. 'abcde') STOP 8 if (e4 (1) .ne. 'abcde') STOP 9 if (e3 (0) .ne. 'UVWXY') STOP 10 if (e4 (0) .ne. 'UVWXY') STOP 11 end program