{ # check fix to passing of char vec (length 1) to Fortran # Bug 1391, bill. # -peter prog <- c( " subroutine func(str, n)", " integer n", " character*(*) str(1)", " str(1) = 'New String'", " n = n * 10", " return", " end") unix("rm -f ftn_strings.?") cat(prog, "\n", sep = "\n", file = "ftn_strings.f") if ( dload.name == "dyn.load.shared" ) { command <- "SHLIB ftn_strings.f" command.result <- "./ftn_strings.so" } else { command <- "MAKE ftn_strings.o" command.result <- "ftn_strings.o" } if(unix(paste(command, " >/dev/null 2>&1"), out = F) != 0) stop(paste("error in ", command)) dload(command.result) v <- .Fortran("func", "Foobar", as.integer(1)) expect <- list("New St", as.integer(10)) # cat("Expect", deparse(expect), "\n") # cat("Got", deparse(v), "\n") ans <- all.equal(v, expect) unix("rm -f ftn_strings.?") ans }