
 Installation: F 	The logical name DWPUID needs to point to the directory that containsB 	DWPROFILE.UID, ACCESS.UID, PRIVS.UID, IDENTS.UID, RESETOWNER.COM,3 	DELTREE.COM, MOVE_DIRECTORY.COM and DWPROFILE.HLB. D 	DWPROFILE.DAT must be put in DECW$SYSTEM_DEFAULTS: (World Readable) 	or DECW$USER_DEFAULTS:    	To rebuild: 	UIL/MOTIF DWPROFILE 	UIL/MOTIF ACCESS  	UIL/MOTIF PRIVS 	UIL/MOTIF IDENTS 
 	CC DWPROFILE  	LINK DWPROFILE,MOTIF/OPT 0 	LIBRARY/CREATE/HELP DWPROFILE.HLB DWPROFILE.HLP  . 	or if you have MMS, use the DESCRIP.MMS file.  
 Operation:G 	The interface is supposed to be intuitive, but here's what the buttons  	and stuff do:  B 	'Read Identifiers' forces the list of identifiers to be reloaded.B 	This is only necessary if new identifiers have been created since 	DWProfile was started.   > 	'Read' reads in the UAF entry given by the 'username' widget.  A 	'Find Next' will search the UAF for a field that is specified by  	the 'Select' menu.   D 	'Write' writes out those fields that were changed for the specifiedH 	record.  If the UAF record is created, the UIC, owner, account, defaultI 	device and directory must also be specified.  A new directory is created G 	if necessary, the directory tree will be moved if the device/directory  	field changes.   K 	'Remove' removes the specified UAF record.  The directory tree is deleted.    	'Quit' exits the program.  @ 	'Access...' pops up or removes a window that displays the hours@ 	available for each category of access.  Click and drag in these 	windows to change the time.  E 	'Privs...' pops up or removes a window that displays the default and  	authorized privileges.   D 	'Accounts...' pops up or removes a selection widget that provides aC 	list of group identifier names.  A new UIC is calculated from this  	group number.  D 	'Idents...' pops up up or removes a pair of list boxes that containF 	the identifiers that may be granted and the identifiers that are held 	by the UIC.  J 	'Select' lets you select a field and contents for the 'Find Next' button.   Non-obvious interactions: A 	If DWProfile is defined as a symbol, the initial username can be B 	specified after the symbol name, e.g. dwp :== $dwprofile and then 	dwp tanner.  I 	If return is pressed in the 'username' widget, the 'Read' button routine 
 	is executed.   D 	If the return key is pressed in the 'account' widget and the UIC is% 	[0,0], a new UIC will be calculated.    Screen/font interactions: I 	The default 75DPI font used on 19" monitors, is smaller than the default D 	100DPI font used on 15" monitors.  If the application's widgets areG 	positioned for the 75DPI fonts, the text fields will probably overlap. F 	I've explicitly specified that the 75DPI 12 point Helvetica Bold fontE 	will be used by all widgets (see DWPROFILE.DAT).  This is almost the C 	same as the default 75DPI font, except that the pitch is narrower.    Customization:C 	There are a couple of non-widget resources that DWProfile can use. % 	The default value is in parenthesis.   P         DWProfile.quota (none) and DWProfile.overdraft (none) set the disk quota9         and overdraft used when creating a new directory.   F 	DWProfile.defaultIdent ("") will position the list box of identifiersD 	to show this idenifier item if it exists.  In other words, if there= 	is a 'staff' identifier that almost everyone gets, this will 6 	automatically scroll the list widget to show 'staff'.  ; 	DWProfile.showAccess (False), DWProfile.showPrivs (False), B 	DWProfile.showAccounts (False), DWProfile.showIdents (False) will- 	automatically display the specified windows.   < 	DWProfile.readNotifyInterval (-2) will provide notificationF 	when reading a non-existant user name.  See findNotifyInterval for a ' 	description of the value.                > 	DWProfile.writeNotifyInterval (-2) will provide  notificationI 	upon successful creation/update of a UAF record.  See findNotifyInterval - 	for a description of the value.                A 	DWProfile.findNotifyInterval (-1) will provide notification of a D 	non-existant UAF record when searching through the list of UIC-type6 	identifiers.  The interpretation  of the interval is: 	-2 means don't notify at all P 	-1 means display the message on sys$output (the DECterm, fileview output, etc.)  	0 means pop up a message windowV 	n means pop up a message window for n milliseconds or until the OK button is pressed.  E 	DWProfile.versionLimit (0) will define the version limit of a user's ? 	directory created by DWProfile.  The version limit is normally % 	inherited from the parent directory.   F 	DWProfile.minimumGroup (0) and DWProfile.maximumGroup (32767) specifyF 	the minimum and maximum groups that will be calculated when a new UICB 	is generated.  For example, your group numbers start with 200 andF 	extend upward, but you have network servers with UIC group numbers atF 	400.  A new account string will generate a UIC group above 400 ratherC 	than in the 200's that you'd wish.  Setting maximumGroup to be 255 F 	(377 octal) will cause DWProfile to ignore UICs above [400,0] for the@ 	purposes of making a new UIC.  minimumGroup won't mean anything6 	unless you are creating a new range of group numbers.  H 	You can override the resources in DECW$SYSTEM_DEFAULTS:DWPROFILE.DAT by; 	specifying resources in SYS$USER_DEFAULTS:DWPROFILE.DAT or G 	SYS$LOGIN:DECW$XDEFAULTS.DAT.  Just remember that you have to log back ) 	in to reload the new DECW$XDEFAULTS.DAT.   
 Things to do: 1 	Add/Remove identifiers (maybe).  Is this needed?   @ 	It turns out that the login flags and quotas aren't used often./ 	Perhaps they can be put into their own window? C 	Then we'd have room for password changed date, pwd expired button,  	disk quota and overdraft.  C 	Save a named default UAF record other than the DEFAULT UAF record. - 	Include things like identifiers, disk quota.   G 	Pop up requestor on search for date fields, numeric fields, to ask for G 	a relation.  Flags and privs would have a mask and match.  Identifiers  	are easy ($find_holder).   C 	Something else might be done with the list of matched identifiers. 5 	Write username/owner/etc. to a file?  Print widget?    , 	Use XtVaSetArgs(), XmNmodifyVerify callback   Acknowledgements: F 	This program was inspired by and named after Profile by John Howells.E 	Some of the techniques used in DWProfile were gratefully stolen from  	that program.  A 	DELTREE.COM was posted to comp.os.vms by Jamie Hanrahan, Simpact  	Associates, San Diego CA.  + Bugs/fixes/suggestions/praise/brickbats to:    	Tanner@Cerritos.EDU  
 	Bruce Tanner  	Cerritos College  	Computer Services 	11110 Alondra Blvd. 	Norwalk, CA 90650   	(310) 860-2451 x596