AWPSYS@RITVAX.BITNET.UUCP (06/15/87)
Here is a program to demo the use of $GETUAI system service. This program uses the service exactly as documented in the DOCs. Points to note: 1) many fields in the UAF are counted ascii 2) The password is in incripted form. Useless unless you want to verify an account password. (To do this you need to enter HPWD.MAR from the fiche. 3) You need no priv to read info about your OWN account only. You need Grpprv to read about accounts in your Group and SYSPRV for all others. We like these services...The make our life a lot easier. They obviously need a lot of work to complete them. THis demo can be modified to do a SETUAI to change UAF items (From Suitably Prived accounts) * * * implicit integer(a-z) * include'($uaidef)' character*64 lgicmd character*(12) username character*32 owner structure /itmlist_struct/ union map integer*2 buff_len ! length of equiv name integer*2 item_code ! code saying type of Eqiv name integer*4 buffaddr ! address of equiv name integer*4 ret_lenadr ! return addr for actual length end map map integer*4 end_list ! code to end list end map end union end structure * record /itmlist_struct/ uaflist(5) integer dummy * nularg = 0 call lib$get_input(username,'Enter User: ',l_u) uaflist(1).buff_len = 32 uaflist(1).item_code = UAI$_OWNER uaflist(1).buffaddr = %loc(owner) uaflist(1).ret_lenadr = %loc(dummy) uaflist(2).buff_len = 64 uaflist(2).item_code = UAI$_LGICMD uaflist(2).buffaddr = %loc(lgicmd) uaflist(2).ret_lenadr = %loc(dummy) * uaflist(3).end_list = 0 istat = sys$getuai(,,username(1:l_u),uaflist(1),,,) if (.not.istat) call lib$stop(%val(istat)) * len_own = ichar(owner(1:1)) if (len_own.lt.1) then owner = ' ' len_own = 1 else owner = owner(2:len_own+1) endif len_lgi = ichar(lgicmd(1:1)) if (len_own.lt.1) then lgicmd = ' ' len_lgi = 1 else lgicmd = lgicmd(2:len_lgi+1) endif print *,'Owner: '//owner(:len_own) print *,'LGICMD: '//lgicmd(:len_lgi) end