1#include <stdio.h>
2
3void sub0(void);
4void c_sub0(void (*sub)(void));
5void c_sub1(int (*func)(int));
6
7extern void abort(void);
8
9int main(int argc, char **argv)
10{
11  printf("hello from C main\n");
12
13  sub0();
14  return 0;
15}
16
17void c_sub0(void (*sub)(void))
18{
19  printf("hello from c_sub0\n");
20  sub();
21
22  return;
23}
24
25void c_sub1(int (*func)(int))
26{
27  int retval;
28
29  printf("hello from c_sub1\n");
30
31  retval = func(10);
32  if(retval != 10)
33  {
34    fprintf(stderr, "Fortran function did not return expected value!\n");
35    abort();
36  }
37
38  return;
39}
40