blob: a2e318c788ef9875db2d17a9c0cb651f9a27ecbe [file] [log] [blame]
! 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