Although it does not solve the more general issue with calling intrinsics from gcc, the easiest and most portable way of getting environment variables is to use getenv(): #include <stdlib.h> char Sys_Id_Code(void) { char *sysname = getenv("HPSYSNAME"); return sysname[0]; } int main(int argc, char *argv[]) { printf("The system name starts with %c\n",Sys_Id_Code()); } I don't have gcc on my system, but it works fine with the HP's c89 compiler, and it should work fine with gcc, too. -- Gary W. Smith [log in to unmask] "Emerson, Tom # El Monte" <[log in to unmask]> wrote in message news:8vcbbh014k3@enews4.newsguy.com... > I'm encountering a strange problem calling the system intrinsic HPCIGETVAR > from within a "C" program compiled with the gnu gcc compiler [2.95.2] The > program is aborting from within the SYSTEM code, not my user code, so it > makes it difficult to debug "as a user"... > >[stuff omitted for brevity] > > /***** procedure to get system id from 'HPSYSNAME var ****/ > char Sys_Id_Code(void) > { > int status=0; > /* broken down as: > short info; (i.e., status >> 16) > short subsys; ( status & 0xff) > */ > int strlen; > char _ret='Z'; > char varvalu[32]=""; > char varname[]="HPSYSNAME "; > > strlen = 32; > > HPCIGETVAR(varname,&status, > 10,&strlen, > 2, varvalu, > 0, 0); > > if (status == 0) > _ret = varvalu[0]; > return(_ret); > } > /********* end of psysid ************/ > > int main(int argc, char *argv[]) > { > printf("The system name starts with %c\n",Sys_Id_Code()); > } > > [error dump omitted] > > Tom Emerson > Sr. Systems Analyst > NDC | e COMMERCE > [log in to unmask] > 626-258-4309 > 626-350-3832 FAX >