!*********************************************************************** !* !* Program to generate unsorted list of all users and surnames !* !* Copyright (C) R.D. Eager University of Kent MCMLXXXV !* !*********************************************************************** ! ! !*********************************************************************** !* !* Constants !* !*********************************************************************** ! constantinteger liststream = 42; ! Stream for output constantinteger maxhelp = 8 constantstring (68)array help(1:maxhelp) = c "", "Parameters are:-", " File system - a number between 0 and 99", " if omitted, users on all file systems are listed", "", " Output - destination for listing", " the default is .OUT", "" ! ! !*********************************************************************** !* !* Record formats !* !*********************************************************************** ! recordformat fdf(integer link,dsnum,byteinteger status,accessroute, valid action,cur state,mode of use,mode,file org, dev code,rec type,flags,lm,rm,integer asvar,arec, recsize,minrec,maxrec,maxsize,lastrec,conad,currec, cur,end,transfers,darecnum,cursize,datastart, string (31) iden,integer keydesc0,keydesc1, recsizedesc0,recsizedesc1,byteinteger f77flag, f77form,f77access,f77status,integer f77recl,f77nrec, idaddr,byteinteger f77blank,f77ufd,spare1,spare2) ! ! !*********************************************************************** !* !* Director references !* !*********************************************************************** ! externalintegerfunctionspec dsfi(string (6) user,integer fsys,type, set,adr) externalroutinespec get av fsys(integername n,integerarrayname a) externalintegerfunctionspec get usnames(integername n,integer adr, fsys) ! ! !*********************************************************************** !* !* Subsystem references !* !*********************************************************************** ! externalroutinespec define alias "S#DEFINE"(integer chan,string (31) iden, integername afd,flag) externalstringfunctionspec failuremessage alias "S#FAILUREMESSAGE"(integer mess) externalintegerfunctionspec instream externalintegerfunctionspec iocp alias "S#IOCP"(integer ep,parm) externalintegermapspec mapssfd alias "S#MAPSSFD"(integer dsnum) externalintegerfunctionspec outstream externalintegerfunctionspec parmap alias "S#PARMAP" externalintegerfunctionspec pstoi alias "S#PSTOI"(string (63) s) externalroutinespec setfname alias "S#SETFNAME"(string (63) s) externalroutinespec setpar alias "S#SETPAR"(string (255) s) externalroutinespec set return code(integer i) externalstringfunctionspec spar alias "S#SPAR"(integer n) ! ! !*********************************************************************** !* !* Service routines !* !*********************************************************************** ! routine clearstream(integer chan) ! Clears out a channel definition, but does not give an error if the ! channel was not defined. record (fdf)name f ! if mapssfd(chan) # 0 then start f == record(mapssfd(chan)) if f_status = 0 then start mapssfd(chan) = 0 f_dsnum = 0; ! Mark descriptor as free finish finish end ; ! of clearstream ! !----------------------------------------------------------------------- ! routine closestream(integer chan) ! Private version of 'closestream'. Does not give an error if the ! operation fails. integer flag ! return unless instream # chan # outstream flag = iocp(16,chan) end ; ! of closestream ! !----------------------------------------------------------------------- ! routine printhelp ! Prints help information. integer i ! for i = 1,1,maxhelp cycle printstring(help(i)) newline repeat end ; ! of printhelp ! !----------------------------------------------------------------------- ! routine treat user(stringname user,integer fsys) integer flag string (31) name ! flag = dsfi(user,fsys,18,0,addr(name)) name = "???????????????????????????????" if flag # 0 printstring(user) spaces(3) printstring(name) newline end ; ! of treat user ! ! !*********************************************************************** !* !* J U S T N A M E S !* !*********************************************************************** ! externalroutine justnames(string (255) parms) integer nu,nusers,n,fx,fsys,flag,afd string (6)array u(0:1364) string (6) user string (255) s,out integerarray a(0:99) ! setpar(parms) ! s = spar(1) if parmap = 1 and s = "?" then start printhelp set return code(0) return finish ! if s # "" then start fsys = pstoi(s) unless 0 <= fsys <= 99 then start setfname(s) flag = 202; ! Invalid parameter -> err finish finish else fsys = -1 ! out = spar(2) out = ".OUT" if out = "" define(liststream,out,afd,flag) -> err if flag # 0 selectoutput(liststream) ! if fsys < 0 then get av fsys(n,a) else a(0) = fsys and n = 1 ! fx = 0 while fx < n cycle fsys = a(fx) flag = get usnames(nusers,addr(u(0)),fsys) -> err if flag # 0 nu = 0 while nu < nusers cycle user = u(nu) treat user(u(nu),fsys) nu = nu + 1 repeat fx = fx + 1 repeat ! selectoutput(0) closestream(liststream) clearstream(liststream) set return code(0) return ! err: ! selectoutput(0) closestream(liststream) clearstream(liststream) newline printstring("JUSTNAMES fails -".failuremessage(flag)) set return code(flag) stop end ; ! of justnames endoffile