I tried this with the Intel C compiler and the Intel Fortran compiler. It gave in C,
#include <stdio.h>
int main(void)
{
extern void test_f_(char*, int);
test_f_("abcdef",6);
}
and, at Fortran,
subroutine test_f(s)
implicit none
character*(*), intent(in) :: s
character*6 :: c
write (*,*) is ', s
write (*,*) 'Length of S is', len(s)
c = s
write (*,*) 'Implicit-copied C is ', c
c(1:6) = s(1:6)
write (*,*) 'Range-copied C is ', c
end subroutine test_f
When compiling and running, it produces
S is abcdef
Length of S is 6
Implicit-copied C is abcdef
Range-copied C is abcdef
C Fortran? , C Fortran?