#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include "../fortran_macros.h"
static int check_args(int *arg1, char *arg2, int *arg3, int len)
{
int n, err = 0;
/* arg1 should be 1 */
if (*arg1 != 1) {
printf ("first argument is %d and should be 1\n", *arg1);
err++;
}
/* arg2 should be "string" */
if (strncmp (arg2, "string", 6)) {
printf ("second argument is ");
for (n = 0; n < 6; n++) {
if (isascii(arg2[n]) && isprint(arg2[n]))
putchar (arg2[n]);
else
printf ("0x%2.2X", (unsigned)arg2[n]);
}
printf (" and should be string\n");
err++;
}
/* the implicit string length should be 32 */
if (len != 32) {
printf ("the implicit string length is %d and should be 32\n", len);
err++;
}
/* arg3 should be 3
this may cause a segmentation violation if
the argument passing is incorrect */
if (err) {
printf ("the following test may cause a segmentation violation\n");
fflush (stdout);
}
if (*arg3 != 3) {
printf ("last argument is %d and should be 3\n", *arg3);
err++;
}
return err;
}
void FMNAME(cg_sub,CG_SUB)(int *i, STR_PSTR(str), int *j STR_PLEN(str))
{
puts ("checking cg_sub");
if (check_args (i, STR_PTR(str), j, STR_LEN(str)))
puts ("incorrect interface");
else
puts ("OK");
}
void FMNAME(adfsub,ADFSUB)(int *i, STR_PSTR(str), int *j STR_PLEN(str))
{
puts ("checking adfsub");
if (check_args (i, STR_PTR(str), j, STR_LEN(str)))
puts ("incorrect interface");
else
puts ("OK");
}
syntax highlighted by Code2HTML, v. 0.9.1