Technical data
Cray Standard C/C++ Reference Manual
/* C program (main.c): */
#include <stdio.h>
#include <string.h>
#include <fortran.h>
fortran double FTNFCTN (_fcd, int *);
double FLOAT1 = 1.6;
double FLOAT2; /* Initialized in FTNFCTN */
main()
{
int clogical, ftnlogical, cstringlen;
double rtnval;
char *cstring = "C Character String";
_fcd ftnstring;
/* Convert cstring and clogical to their Fortran equivalents */
ftnstring = _cptofcd(cstring, strlen(cstring));
clogical = 1;
ftnlogical = _btol(clogical);
/* Print values of variables before call to Fortran function */
printf(" In main: FLOAT1 = %g; FLOAT2 = %g\n",
FLOAT1, FLOAT2);
printf(" Calling FTNFCTN with arguments:\n");
printf(" string = \"%s\"; logical = %d\n\n", cstring, clogical);
rtnval = FTNFCTN(ftnstring, &ftnlogical);
/* Convert ftnstring and ftnlogical to their C equivalents */
cstring = _fcdtocp(ftnstring);
cstringlen = _fcdlen(ftnstring);
clogical = _ltob(&ftnlogical);
/* Print values of variables after call to Fortran function */
printf(" Back in main: FTNFCTN returned %g\n", rtnval);
printf(" and changed the two arguments:\n");
printf(" string = \"%.*s\"; logical = %d\n",
cstringlen, cstring, clogical);
}
134 S–2179–36










