6572
|
1 #include <octave/oct.h> |
|
2 #include <octave/f77-fcn.h> |
|
3 |
|
4 extern "C" |
|
5 { |
|
6 F77_RET_T |
|
7 F77_FUNC (fortsub, FORTSUB) |
|
8 (const int&, double*, F77_CHAR_ARG_DECL |
|
9 F77_CHAR_ARG_LEN_DECL); |
|
10 } |
|
11 |
|
12 DEFUN_DLD (fortdemo , args , , "Fortran Demo.") |
|
13 { |
|
14 octave_value_list retval; |
|
15 int nargin = args.length(); |
|
16 if (nargin != 1) |
|
17 print_usage (); |
|
18 else |
|
19 { |
|
20 NDArray a = args(0).array_value (); |
|
21 if (! error_state) |
|
22 { |
|
23 double *av = a.fortran_vec (); |
|
24 octave_idx_type na = a.nelem (); |
|
25 OCTAVE_LOCAL_BUFFER (char, ctmp, 128); |
|
26 |
6580
|
27 F77_XFCN (fortsub, FORTSUB, (na, av, ctmp |
|
28 F77_CHAR_ARG_LEN (128))); |
6572
|
29 |
|
30 if (f77_exception_encountered) |
|
31 error ("fortdemo: error in fortran"); |
|
32 else |
|
33 { |
|
34 retval(1) = std::string (ctmp); |
|
35 retval(0) = a; |
|
36 } |
|
37 } |
|
38 } |
|
39 return retval; |
|
40 } |