Installation: The logical name DWPUID needs to point to the directory that contains DWPROFILE.UID, ACCESS.UID, PRIVS.UID, IDENTS.UID, RESETOWNER.COM, DELTREE.COM, MOVE_DIRECTORY.COM and DWPROFILE.HLB. 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 LIBRARY/CREATE/HELP DWPROFILE.HLB DWPROFILE.HLP or if you have MMS, use the DESCRIP.MMS file. Operation: The interface is supposed to be intuitive, but here's what the buttons and stuff do: 'Read Identifiers' forces the list of identifiers to be reloaded. 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. 'Find Next' will search the UAF for a field that is specified by the 'Select' menu. 'Write' writes out those fields that were changed for the specified record. If the UAF record is created, the UIC, owner, account, default device and directory must also be specified. A new directory is created if necessary, the directory tree will be moved if the device/directory field changes. '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. 'Privs...' pops up or removes a window that displays the default and authorized privileges. 'Accounts...' pops up or removes a selection widget that provides a list of group identifier names. A new UIC is calculated from this group number. 'Idents...' pops up up or removes a pair of list boxes that contain the identifiers that may be granted and the identifiers that are held by the UIC. 'Select' lets you select a field and contents for the 'Find Next' button. Non-obvious interactions: If DWProfile is defined as a symbol, the initial username can be specified after the symbol name, e.g. dwp :== $dwprofile and then dwp tanner. If return is pressed in the 'username' widget, the 'Read' button routine is executed. 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: The default 75DPI font used on 19" monitors, is smaller than the default 100DPI font used on 15" monitors. If the application's widgets are positioned for the 75DPI fonts, the text fields will probably overlap. I've explicitly specified that the 75DPI 12 point Helvetica Bold font will be used by all widgets (see DWPROFILE.DAT). This is almost the same as the default 75DPI font, except that the pitch is narrower. Customization: There are a couple of non-widget resources that DWProfile can use. The default value is in parenthesis. DWProfile.quota (none) and DWProfile.overdraft (none) set the disk quota and overdraft used when creating a new directory. DWProfile.defaultIdent ("") will position the list box of identifiers to show this idenifier item if it exists. In other words, if there is a 'staff' identifier that almost everyone gets, this will automatically scroll the list widget to show 'staff'. DWProfile.showAccess (False), DWProfile.showPrivs (False), DWProfile.showAccounts (False), DWProfile.showIdents (False) will automatically display the specified windows. DWProfile.readNotifyInterval (-2) will provide notification when reading a non-existant user name. See findNotifyInterval for a description of the value. DWProfile.writeNotifyInterval (-2) will provide notification upon successful creation/update of a UAF record. See findNotifyInterval for a description of the value. DWProfile.findNotifyInterval (-1) will provide notification of a non-existant UAF record when searching through the list of UIC-type identifiers. The interpretation of the interval is: -2 means don't notify at all -1 means display the message on sys$output (the DECterm, fileview output, etc.) 0 means pop up a message window n means pop up a message window for n milliseconds or until the OK button is pressed. 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. DWProfile.minimumGroup (0) and DWProfile.maximumGroup (32767) specify the minimum and maximum groups that will be calculated when a new UIC is generated. For example, your group numbers start with 200 and extend upward, but you have network servers with UIC group numbers at 400. A new account string will generate a UIC group above 400 rather than in the 200's that you'd wish. Setting maximumGroup to be 255 (377 octal) will cause DWProfile to ignore UICs above [400,0] for the purposes of making a new UIC. minimumGroup won't mean anything unless you are creating a new range of group numbers. You can override the resources in DECW$SYSTEM_DEFAULTS:DWPROFILE.DAT by specifying resources in SYS$USER_DEFAULTS:DWPROFILE.DAT or SYS$LOGIN:DECW$XDEFAULTS.DAT. Just remember that you have to log back in to reload the new DECW$XDEFAULTS.DAT. Things to do: 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? Then we'd have room for password changed date, pwd expired button, disk quota and overdraft. Save a named default UAF record other than the DEFAULT UAF record. Include things like identifiers, disk quota. Pop up requestor on search for date fields, numeric fields, to ask for a relation. Flags and privs would have a mask and match. Identifiers are easy ($find_holder). Something else might be done with the list of matched identifiers. Write username/owner/etc. to a file? Print widget? Acknowledgements: This program was inspired by and named after Profile by John Howells. Some of the techniques used in DWProfile were gratefully stolen from that program. 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