Editing Fortran
Jump to navigation
Jump to search
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 90: | Line 90: | ||
=== Fortran Code === | === Fortran Code === | ||
{{Code|octave_file_io_example.f90|<syntaxhighlight lang="fortran" style="font-size:13px"> | |||
{{ | |||
program octave_file_io_example | program octave_file_io_example | ||
use iso_c_binding | use iso_c_binding | ||
implicit none | implicit none | ||
interface | interface | ||
function octave_load (filename, data, numel) bind(c, name="octave_load") | function octave_load (filename, varname, data, numel) bind(c, name="octave_load") | ||
use iso_c_binding | use iso_c_binding | ||
implicit none | implicit none | ||
integer(c_int) :: octave_load | integer(c_int) :: octave_load | ||
character(kind=c_char), intent(in) :: filename(*) | character(kind=c_char), intent(in) :: filename(*) | ||
character(kind=c_char), intent(in) :: varname(*) | |||
type(c_ptr), intent(out) :: data | type(c_ptr), intent(out) :: data | ||
integer(c_int), intent(out) :: numel | integer(c_int), intent(out) :: numel | ||
end function octave_load | end function octave_load | ||
end interface | end interface | ||
integer(c_int) :: res | integer(c_int) :: res | ||
type(c_ptr) :: data | type(c_ptr) :: data | ||
real(c_double), pointer :: fdata(:) | real(c_double), pointer :: fdata(:) | ||
integer(c_int) :: numel | integer(c_int) :: numel | ||
res = octave_load (c_char_' | res = octave_load (c_char_'pippo.octxt' // c_null_char, c_char_'A' // c_null_char, data, numel) | ||
call c_f_pointer (data, fdata, (/numel/)) | call c_f_pointer (data, fdata, (/numel/)) | ||
write (*,*) fdata | write (*,*) fdata | ||
end program octave_file_io_example | end program octave_file_io_example | ||
</syntaxhighlight>}} | </syntaxhighlight>}} | ||
=== Compiling the code === | === Compiling the code === |