next up previous 252
Next: DECLARE_CHARACTER_ARRAY - Declare a CHARACTER array
Up: Full Description of F77 Macros
Previous: CHARACTER_RETURN_VALUE - Declare argument(s) that will be the return value of a FORTRAN CHARACTER FUNCTION


DECLARE_CHARACTER - Declare a CHARACTER variable

Description:
Declare a CHARACTER variable that will be passed to a FORTRAN routine. This variable will be the actual argument of a call to a FORTRAN routine.

Invocation:
DECLARE_CHARACTER(arg,length)

Arguments:

arg
The variable being declared.
length
The length of the character string.

Examples:

DECLARE_CHARACTER(C,50)
will expand as follows:

All Unix: char C[50]; const int C_length = 50
VAX/VMS: char C[50]; const int C_length = 50;
  struct dsc$descriptor_s C_descr =
  {50, DSC$K_DTYPE_T, DSC$K_CLASS_S, C };
  struct dsc$descriptor_s *C_arg =&C_descr


Notes:
On VMS, the expansion of the macro is quite complex. A char array is declared as well as an int variable to store the length of the array. There is also a descriptor and a pointer to that descriptor. The address of the descriptor is what is actually passed to the called FORTRAN routine.


next up previous 252
Next: DECLARE_CHARACTER_ARRAY - Declare a CHARACTER array
Up: Full Description of F77 Macros
Previous: CHARACTER_RETURN_VALUE - Declare argument(s) that will be the return value of a FORTRAN CHARACTER FUNCTION

CNF and F77 Mixed Language Programming -- FORTRAN and C
Starlink User Note 209
P.M. Allan
A.J. Chipperfield
R.F. Warren-Smith
19 January 2000
E-mail:ussc@star.rl.ac.uk