It works beautifully. I think I will go ahead and post this on the newsgroup so others can see. The compiler needs the '-Ae" option as I found out. Thanks again. This solution saves me. Greg #include <stdlib.h> #include <stdio.h> typedef long long int64; union u_tag { int64 int64value; char cvalue[9]; } uval; extern int64 pascalfunc(short i); main() { uval.int64value = pascalfunc(123); uval.cvalue[8] = NULL; printf("myvar='%s'\n", uval.cvalue); } > a.out myvar='TESTTEST' Stan Sieler <[log in to unmask]> 05/17/99 04:23 PM To: Greg Fudala/MIS/Circuit City cc: Subject: Re: [HP3000-L] Calling Pascal from C Hi Greg, > hmmm... now that I think about it .... you say that if the size < 8, then r28 > and r29 contain the data, not a pointer to the data. > Wouldn't it work to have the C program somehow see this data? By directly > referencing it somehow (with the * character perhaps?) For the pac8 case, leave the Pascal alone and declare the C code like: extern int64 pascalfunc (short i); and use a union (or cast) to convert the 64-bit "integer" into 8-bytes of char. > Content-Disposition: attachment; filename="pic09767.pcx" Your emails to me come with some kind of picture attached to it. -- Stan Sieler [log in to unmask] http://www.allegro.com/sieler.html