m1b@rayssd.ray.COM.UUCP (04/09/87)
I am trying to create a logical name in my process table from within a C program. I am using SYS$CRELNM. SYS$CRELOG is obsolete so I don't want to use that. LIB$SET_LOGICAL works fine but I want to know what I am doing wrong. I am running VMS V4.4 using C V2.2. Here is a sample program that does not produce the logical name NEWNAME. Strangely enough, it exits with SS$_NORMAL. Can someone who has successfully used this system service help me out? Thanks. ---- Snip here ---- #include descrip #include lnmdef #include psldef #define MAXLEN 100 main() { extern unsigned long sys$crelnm(); unsigned char acmode = PSL$C_USER; unsigned long attr = 0; long status; char defname[MAXLEN]; char logname[MAXLEN]; struct { struct { short len; short code; long *baddr; long *rladdr; } log; long eos; } loglst = { { MAXLEN, LNM$_STRING, defname, 0}, 0 }; $DESCRIPTOR(LOGNAME,logname); $DESCRIPTOR(TABLE_NAME, "LNM$PROCESS_TABLE"); strcpy(defname, "abc.xyz"); strcpy(logname, "NEWNAME"); TABLE_NAME.dsc$w_length = strlen("LNM$PROCESS_TABLE"); loglst.log.len = strlen(defname); LOGNAME.dsc$w_length = strlen(logname); status = sys$crelnm(&attr, &TABLE_NAME, &LOGNAME, &acmode, &loglst); exit(status); } Joe Barone ---------------------------> m1b@rayssd.RAY.COM {cbosgd, gatech, ihnp4, linus, mirror, uiucdcs}!rayssd!m1b