-+-+-+-+-+-+-+-+ START OF PART 3 -+-+-+-+-+-+-+-+ X`5Basynchronous, external (lib$disable_ctrl)`5D Xfunction lib$disable_ctrl ( X %ref disable_mask : unsigned; X %ref old_mask : unsigned := %immed 0) : unsigned; external; X`20 X`5Basynchronous, external (lib$enable_ctrl)`5D Xfunction lib$enable_ctrl ( X %ref enable_mask : unsigned; X %ref old_mask : unsigned := %immed 0) : unsigned; external; X`20 X`20 X`5BASYNCHRONOUS,EXTERNAL(SYS$GETJPIW)`5D X FUNCTION $GETJPIW ( X`09%IMMED EFN : UNSIGNED := %IMMED 0; X`09VAR PIDADR : `5BVOLATILE`5D UNSIGNED := %IMMED 0; X`09PRCNAM : `5BCLASS_S`5D PACKED ARRAY `5B$l3..$u3:INTEGER`5D OF CHAR := %IM VMED 0; X`09%REF ITMLST : `5BUNSAFE`5D ARRAY `5B$l4..$u4:INTEGER`5D OF $UBYTE; X`09VAR IOSB : `5BVOLATILE`5D $UQUAD := %IMMED 0; X`09%IMMED `5BUNBOUND, ASYNCHRONOUS`5D PROCEDURE ASTADR := %IMMED 0; X`09%IMMED ASTPRM : UNSIGNED := %IMMED 0) : INTEGER; EXTERNAL; X Xprocedure syscall( s: `5Bunsafe`5D unsigned ); X`20 Xbegin X if not odd( s ) then begin X lib$signal( s ); X end; Xend; X`20 X`5Bglobal`5D Xfunction get_userid: string; X`20 Xbegin X il:=zero; X il`5B1`5D.itm := jpi$_username; X il`5B1`5D.buflen := size(user.body); X il`5B1`5D.baddr := iaddress(user.body); X il`5B1`5D.laddr := iaddress(user.length); X syscall($getjpiw(,,,il)); X syscall( str$trim(uname.body,user,uname.length) ); X userident := user; X get_userid := uname; Xend; X Xend. $ CALL UNPACK SYS.PAS;1 206902114 $ v=f$verify(v) $ EXIT