/* This program passes several types of OS/400 pointers as arguments */
/* to another ILE C program T1520DL9. */
#include <stdio.h>
#include <pointer.h>
#pragma(p128)
typedef struct {
_SPCPTR spcptr; /* A space pointer. */
_SYSPTR sysptr; /* A system pointer. */
void (*fnptr)(); /* A function pointer. */
} PtrStructure;
#pragma linkage (T1520DL9, OS)
#pragma datamodel(pop)
void T1520DL9 (PtrStructure *, _SPCPTR, _SYSPTR, void (*)());
void function1(void) /* A function definition. */
{
printf("Hello!\n");
}
int main(void)
{
int i = 4;
PtrStructure ptr_struct;
/* Make assignments to the fields of ptr_struct. */
ptr_struct.spcptr = (_SPCPTR)&i; /* A space pointer. */
ptr_struct.sysptr = (_SYSPTR)T1520DL9; /* A system pointer. */
ptr_struct.fnptr = &function1; /* A function pointer. */
/* Call T1520DL9, passing the address of ptr_struct and other */
/* valid OS/400 pointer arguments. */
T1520DL9(&ptr_struct, (_SPCPTR)&i, (_SYSPTR)T1520DL9, &function1);
}
|