test_print_char_rank2_array_c Subroutine

private subroutine test_print_char_rank2_array_c(strlen, nval, varnames_c) bind(c,name='test_print_char_rank2_array')

Arguments

Type IntentOptional Attributes Name
integer(kind=C_INT), intent(in), value :: strlen
integer(kind=C_INT), intent(in), value :: nval
character(kind=C_CHAR, len=1), intent(in) :: varnames_c(strlen,nval)

Calls

proc~~test_print_char_rank2_array_c~~CallsGraph proc~test_print_char_rank2_array_c test_print_char_rank2_array_c proc~get_c_string_length get_c_string_length proc~test_print_char_rank2_array_c->proc~get_c_string_length proc~get_fortran_string get_fortran_string proc~test_print_char_rank2_array_c->proc~get_fortran_string

Source Code

subroutine test_print_char_rank2_array_c(strlen,nval,varnames_c) &
       bind(c,name='test_print_char_rank2_array')
    integer(kind=C_INT), value, intent(in) :: nval, strlen
    character(kind=C_CHAR,len=1), intent(in) :: varnames_c(strlen,nval)

    character(len=strlen) :: VarNames_f(nval)
    character(len=strlen) :: varname
    integer(kind=C_INT) :: val
    integer :: nchar

    write(*,*) "test_print_char_rank2_array nval: ", nval
    do val = 1, nval
      nchar = get_c_string_length(varnames_c(:,val))
      if(nchar.gt.strlen) stop "c string length is restricted to strlen"
      varname = get_fortran_string(varnames_c(:,val),nchar)
      VarNames_f(val) = trim(varname(1:nchar))
      write(*,*), val, ": VarNames_f: ", VarNames_f(val)
    end do

  end subroutine test_print_char_rank2_array_c