Kein Problem, z.B. C:

ITAB_H ItCreate(char * name,
unsigned leng,
unsigned occu,

unsigned memo);

Call sieht so aus:
ITAB_H handle;
void * ptr;

handle = ItCreate(“MyTable”, myTableSize, 0,0);


Hierfür sieht die RPG Definition dann aber so aus:

D TabName S 31A
D TabNameP S 16* INZ(%ADDR(TabName))
D Leng S 10U 0 INZ(0)
D Occu S 10U 0 INZ(0)
D Memo S 10U 0 INZ(0)

d ITabH S 16* INZ(*NULL)

DItCreate PR * EXTPROC('ItCreate')
D PARM1 LIKE(TabNameP) value
D PARM2 LIKE(Leng) value
D PARM3 LIKE(Occu) value
d PARM4 LIKE(Memo) value

// anlegen der internen Tabelle
TabName = 'TAB1' + NULL;
Leng = 20;
Occu = 2;
Memo = 0;
ITabH = ItCreate(TabNameP:Leng:Occu:Memo);

Ich kenne mich in C überhaupt nicht aus. Was mich stutzig macht, ist schon mal, dass der Tabellenname in C wohl als String übergeben wird, in RPG aber der Zeiger auf den Namen. Die RPG Zeilen sind aus einem Beispielsprogramm zitiert.