{$X+,B-,V-} {essential compiler directives} program swapnames; { as of 950301 } { Example for the nwBindry unit / NwTP 0.6 API. (c) 1993,1995, R.Spronk } { AREA:NOVELL (1394) Thu 30 Sep 93 16:07 By: JAMES SIMONSON To: All Re: Novell 3.11/4.01 bindery access ------------------------------------------------------------ Is there a way to access the full name information inthe bindery files? Here's the scoop: We've got "firstname mi lastname" in the FULLNAME space in the user record. We need to convert that to "lastname, firstname mi" & place that information BACK into the FULLNAME field. Is there any relatively fast way to do this conversion? --- SLMAIL v3.0 (#0623) * Origin: WorkStations Unlimited / 312-404-2824 (1:115/404) } { This program will reverse all first & last names in the bindery. Lastname is defined as being everything after the last space in the full name. This may not be true for all names. If there is no space in the full name, nothing changes. } uses nwBindry; Var lastObjSeen:LongInt; objName :string; objType :word; objId :LongInt; objFlag,objSec:Byte; hasProp :boolean; propVal :Tproperty; moreseg :boolean; propFlags:Byte; NewName,FullName:string; t:byte; s:string; begin IF NOT IsShellLoaded then begin writeln('Load network shell before executing this testprogram.'); halt(1); end; writeln('SWAPNAME: Will swap the first and last names of the IDENTIFICATION'); writeln(' property in the bindery. (Full Name of an object)'); writeln; writeln('--WARNING: Changes the property values irrevokably ! --'); writeln; writeln('Type ''y'' and to continue.. (all else will abort)'); readln(s); if (s[0]=#0) or ((s[1]<>'y') and (s[1]<>'Y')) then halt(1); LastObjSeen:=-1; WHILE ScanBinderyObject('*',1,LastObjSeen, objName,objType,objId,objFlag,objSec,hasProp) do begin IF ReadPropertyValue(objName,objType,'IDENTIFICATION',1, propVal,moreSeg,propFlags) then begin t:=1; while (propVal[t]<>0) do begin FullName[t]:=chr(propVal[t]);inc(t) end; FullName[0]:=chr(t-1); IF pos(',',FullName)=0 then begin writeln(FullName); while fullName[ord(fullName[0])]=' ' do dec(FullName[0]); t:=ord(FullName[0]); while (t>0) and (FullName[t]<>' ') do dec(t); if t>0 then begin NewName:=copy(FullName,t+1,255)+', ' +copy(FullName,1,t-1); writeln(newname); fillChar(propVal,SizeOf(propVal),#0); for t:=1 to ord(newName[0]) do propVal[t]:=ord(newName[t]); WritePropertyValue(objName,objType, 'IDENTIFICATION',1,propVal,FALSE); end; end; end; end; if nwBindry.result<>$FC then writeln('error scanning bindery'); end.