Version 1.42     December 5, 1996
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

   NNNN   NNN    444  444     UUU    UUU    TTTTTTTTTT    LLL
   NNNNN  NNN    444  444     UUU    UUU        TTT       LLL
   NNNNNNNNNN    444444444    UUU    UUU        TTT       LLL
   NNN  NNNNN         444     UUU    UUU        TTT       LLL
   NNN   NNNN         444     UUUUUUUUUU        TTT       LLLLLLLLLL

= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

Please send bug reports (or suggestions) to:
   Compuserve:    75600, 2274    
   Internet:      DCOLLINS@FASTLANE.NET

You can find the latest versions at:
   Compuserve:    forum NOVUSER     FileName:  N4UTLxx.*
   Internet:      web page   http://www.fastlane.net/homepages/dcollins


Please see NDS-LIST.TXT for information on more utilities.


= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

Basic rules are:

  You need to run DS.NLM version 4.89a  Aug 30,1995 or later.

  Verify that you set the TZ environment variable on your workstation.
      Example:  SET TZ=CST6CDT   for Central Standard Time.

  Verify that you have  SET NWLANGUAGE=ENGLISH

  By typing '?' as the first parameter of the command line for the utility,
  it will display a help screen.

  You should have your NLS and Unicode files properly installed.  Normally,
  you can find these files under the NLS subdirectory on your C: drive,
  and also the SYS:\PUBLIC\NLS subdirectories.

  The utilities have been tested on:
  Server:  Netware 4.10 (DS.NLM v4.89a or later) and Netware 4.11 beta.
  Workstation:  DOS 5.0 - DOS 6.22 with Netware VLM 1.2 drivers,
  Windows 95 with Novell Client32.

= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =


= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
Utility:    N4Object
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

The purpose of this utility is to give the administrator a quick
display of all attribute name and values on the specified user.

You can also get alot of information from Novell's NLIST.EXE utility,
but, N4Object tends to provide information for attributes that are
not supported by NLIST.EXE.  Also, N4OBJECT is capable of outputting
to a comma-delimited format.


Syntax:  N4Object  ObjectName [AttributeMask] [options]

ObjectName - any valid existing object name in NDS tree.
   *  is an accepted wildcard character.
   Example:  DCOL* and *COL* is valid and will return matches.
   When you type in a common name, N4Object will attempt to match the
   specified username (as if it was a wildcard) throughout the entire
   tree.  If the utility finds more than one match, then, it will display
   all matching distinguished names.  If you need to limit the search then,
   you will need to use the /B= , /C= , or /1  parameters.

AttributeMask - this text must be found in the attribute
   name, or else information for that Attribute is skipped.
   Example: "Group Membership" will display all attributes with this word.
   New!  You can use a comma (,) to specify multiply attributes for
   display.

Parameter Options:
      /1  - same container only.   Use this option when you are wanting
            the search results for the specified BaseContext only.
            (Use this with the /C parameter.)
      /A  -  Display attribute name and values for every object found.
      /B=BaseContext - start search at specified context and go deeper.
      /C=Class Name.  Names are: User, NCP Server, Group, Queue, ...
          Note:  Use quotation marks around the parameter item when
          the class name has a space in it.
          Example:  "/C=NCP Server"
      /D  -  Display information about the user executing the app.
      /G  -  If the specified object is an alias, then reference (effect)
      /I  -  Object Information only.
      /L  -  List matched objects only.
          When using the option, the errorlevel return to the OS, will
          be equal to the number of objects that match the search
          criteria.  (good for batch files)
          0 - zero objects matched.
          >0 - # of objects matched.
             the real object's attribute information.
      /M  - get NDS information from the 'Master Replica' server only.
            Reading NDS information may be slower than without this
            option if the Master Replica is across a WAN link.
            Without this option, N4Object will retrieve the NDS information
            from its Read/Write replica.
      /R  - include the ACL Attribute.
      /T  -  Display Attribute type.
          Don't use this option, when using any of the /U? options.
      /U1, /U2, /U3, /U4, /U5
           - Output the information as a comma-delimited
           format so it can be imported into a Spreadsheet application.
      /UH  - Display the field names used in the above output.
      /W  - word wrap.  Separate each attribute value on its own output
            line.  Default: separate each attribute by a comma.
      /F  - Use local, server, and any other available caches to read
            NDS information.  This option is usefull for reading
            relatively static information since N4Object can display
            it quicker than reading it from a read-write or master replica.
            In 1k object and WAN trees, the NDS information displayed may
            be out of date by about 7 seconds.
            This option will override the /M option.

            Option used:    Up-to-Date Information:    Speed:
            No /M or /F     Baseline                   Baseline
            /M              Better than Baseline       Slower than Baseline
            /F              Worse than Baseline        Faster than Baseline

Context search starts at the [root] and works it way thru the entire tree.
Almost all accessible attribute names and their values are displayed.
You must be connected to a Netware 4.10 server but you do not need to be
  authenticated (logged in).

If you are specifying an object or attribute name has a space in it, then
you must enclose the name with quotation marks. (")

Samples:

   N4Object * "/c=ncp server"
            Display all server objects listed in the tree.

   N4Object * /c=volume
            Display all volume objects listed in the tree.

   N4Object * /b=.sales.hq.acme
            Display all objects listed in and under container .sales.hq.acme
            and all subordintes.

   N4Object * /b=.sales.hq.acme /1
            Display all objects listed in and under container .sales.hq.acme
            only.

   N4Object admin group
            Display the values of any attributes that have the work 'group'
            in it.  Since only the common name 'admin' is specified, it
            will attempt to find all objects that have the common name
            of 'admin'.

   N4Object *JONES* /I
            This may be a usefull sample for the helpdesk that is sure
            that the network name has the name 'Jones' in it, but is not
            sure of the user's first initial that is in the login name.
            The above sample, will list all objects that have the word
            'jones' in their common name.  If only one user is found, it
            will display object information only on the user.

   N4Object *smith* cn
            Display all objects that the word 'smith' inside of its common
            name.  If only one object is found, then it will display the
            value for the attribute 'CN'.   The attribute value for the
            attribute 'CN' is normally the user's full name.
            You may also be able to specify "Full Name" for the attribute
            name.

   N4Object ..
            Shortcut for displaying the [root] object's attributes and
            their values.   Another way to get the same result is to use:
            N4Object * /C=Top

   N4Object * "/c=NCP Server" DS /A
            Display the 'running' DS Version on all the servers of the
            tree.

   N4Object * "/c=NCP Server" Version /A
            Display the 'running' Netware version and license information
            on all the servers of the tree.

   N4Object user message
            Display the default file server for the specified user object.
            The attribute "Message Server" is used by Netware to specify
            the default file server for the user.

   N4Object * /c=user /u6 > other.lst
            Output to the file OTHER.LST.  File will contain all the
            'User' objects that have a multi-valued CN attribute.  This
            case is normally only true, when the user has a 'Other Name'
            filled out for it.
            You may find it a good idea to 'input' all Employee Numbers
            into this field.  Well, its handy when confirming the users
            identity for password resets and also for confirmation on
            account deletes.

   N4Object * /c=user /u7
            Display all user objects that are logged in to the network.
            This syntax will display the object's distinguished name
            and the network address, in comma-delimited format.
            One example, use of this, to be 'export' all users that
            are logged, to compare against a DHCP logfile.

Note:  Use /UH to have N4Object display all field names used for the
       various /U1 -> /U6 option use.

   The /U1, /U2, /U3, ... will output the information into a comma-
   delimited format suitable for reading into a spreadsheet or other app.

   Class:  User    Option:  /U1
     Fields are:
      Distinguished Object Name
      CN                - Common Name
      Surname           - also known as the 'Last Name'.
      GivenName
      FullName
      Message Server     - also known as the 'Default Server'.
      Group Membership

   Class:  User    Option:  /U2
     Fields are:
      Distinguished Object Name
      CN                 - Common Name
      Login Disabled
      Login Expiration Time
      Login Grace Limit
      Login Grace Remaining
      Login Maximum Simultaneous
      Password Allow Change
      Password Expiration Interval
      Password Expiration Time
      Password Minimum Length
      Password Required
      Password Unique Required

   Class:  User    Option:  /U3
     Fields are:
      Distinguished Object Name
      CN                 - Common Name
      OU                 - also known, to be contain 'Department' info.
      HomeDirectory
      EMailAddress
      MailboxLocation
      MailboxID

   Class:  User    Option:  /U4
     Fields are:
      Distinguished Object Name
      CN                 - Common Name
      ObjectClass
      Security Equals
      Login Time
      Description
      Title
      Telephone Number
      Facsimile Telephone Number
      Language
      Last Login Time
      Locked By Intruder
      Login Intruder Address

   Class:  User    Option:  /U5
     Fields are:
      CN                 - Common Name

   Class:  User    Option:  /U6   - displayed only if CN is Multi-Valued
     Fields are:
      CN                 - Common Name

   Class:  Queue   Option:  /U1
     Fields are:
      Distinguished Object Name
      CN                 - Common Name
      Description        - user supplied information about this queue.
      Object Class
      Host Server        - file server that contains print jobs.
      Server             - print server that services print jobs.
      Volume             - volume that contains print jobs.
      Device
      Queue Directory    - subdirectory that contains print jobs.
      Operator           - list of all objects that can control this queue.
      User               - list of all objects that can access this queue.

   Class:  Print Server   Option:  /U1
     Fields are:
      Distinguished Object Name
      CN                 - Common Name
      Description        - user supplied information about this ps.
      Host Device
      Object Class
      SAP Name
      Status
      Operator           - list of all objects that can control this ps.
      User               - list of all objects that can access this ps.

   Class:  NCP Server    Option:  /U1
     Fields are:
      Distinguished Object Name
      CN                 - Common Name
      Description        - user supplied information about this ps.
      Status
      DS Revision
      Version
      Network Address
      Messaging Server
      OU
      O

   Class:  NCP Server    Option:  /U2
     Fields are:
      Distinguished Object Name
      CN                 - Common Name
      User
      Operator
      Security Equals

   Class:  NCP Server    Option:  /U3
     Fields are:
      Distinguished Object Name
      CN                 - Common Name
      ObjectClass
      See Also

   Class:  User    Option:  /U7   - displayed only if object is logged in.
     Fields are:
      CN                 - Distinguished Name
      Network Address    - Network address of client.
     When a 'object' is logged into the network, its network address is
     stored in the attribute 'Network Address'.  This option  /U7  will
     display the distinguished name and object's network address.


New Oct 20, 96: 
    Attribute type: SYN_NET_ADDRESS 
      Will display IPX, IP, and AppleTalk formatted addresses.

New Oct 24, 96:
    Object aliases are referenced.   Basically, this means that when
    you 'display' the information on an alias object, then you are seeing
    the information on the alias object, and not the object that the
    alias is pointing to.
    Alias objects usually only contain the attributes:  Aliased Object Name,
    CN, and Object Name.  They are usually a base class of Alias.
    Use a  /G   if you want to see the object that is referenced by the
    alias.


= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
Utility:    N4Attr
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

The purpose of this utility is to set the value of NDS attributes.
Warning!  Be very carefull and verify that you are modifying the correct
          attributes and their values.  Do not run this if you are not sure!

To modify the value of an attribute:
  Syntax: N4Attr ObjectName AttributeName Command AttributeValue Options
  Sample: N4Attr .JSmith.Finance.ACME "Message Server" O Saturn.Resources.ACME

To modify a user's group membership:
  Syntax:  N4Attr +or- UserObjectName GroupObjectName
  Sample:  N4Attr + JSmith.Finance.HQ Queue-Operator.HQ
  Use the above pattern if you want to add or delete a user to a group
  object.  You may find this method alot faster than NetAdmin.

ObjectName - any valid existing object name in NDS tree.
   *  is an accepted wildcard character.
   Example:  DCOL* and *COL* is valid and will return matches.
   When you type in a common name, N4Object will attempt to match the
   specified username (as if it was a wildcard) throughout the entire
   tree.  If the utility finds more than one match, then, it will display
   all matching distinguished names.  If you need to limit the search then,
   you will need to use the /B= , /C= , or /1  parameters.

   If you use a wildcard or a common name that is not unique, it will
   display a error message that name must resolve to a single object.
   If you want all objects modified that can match the wildcard, then
   you must add the /A option to the command line.
   Caution:  Use /T, so, that you can be sure that it is modifying
   the objects that you want to be modified.

Command:
   A or +   - (for multivalue) add attribute value to current list.
   D or -   - (for multivalue) delete attribute value from current list.
   O        - overwrite current attribute value.

Parameter Options:
   /O=Drive:\Path\FileName  - output log file of attribute changes.
   /I  -  Object Information only.
   /L  -  List matched objects only.
   /B=BaseContext - start search at specified context and go deeper.
   /C=Class Name  - names are: User, NCP Server, Group, Queue, ...
         Use quotation marks around the whole parameter item, if the
         class name has a space in it.
         Example:   "/C=NCP Server"
   /A  - Modify attribute values for every object matched.
   /G  - If the specified object is an alias, then reference (effect)
         the real object's attribute information.
   /1  - same container only.   Use this option when you are wanting
         the search results for the specified BaseContext only.
         (Use this with the /C parameter.)
   /T  - Test Run.  Does not modify any attributes.
   /M  - must send DS information to the 'Master Replica' server.
         Otherwise, information will be sent to any Read/Write replica.


Use N4Object.Exe to search for objects, attribute names and values.

If the return error level is equal to 0, then the operation was successfull.

Note:  If you are adding or deleting a user from a group object then, you
must use the 'group syntax'.

See the *.BAT files for demonstrations on the use of this utility.

Once you are comfortable with the utility, you may find it quicker in adding
users to group objects, than Netadmin & NWAdmin.

Note: Oct 25, 96:  Alias objects are referenced, so you can directly 
manipulate their attribute values.

The following symbols are 'reserved words'.  Basically, if you used them
  as a command parameter to specify the attribute value, it will be
  translated to the symbols value.
  Verify that you quotation marks around the attribute value, so that
  the < or > symbols are not used for file redirection.
  <cr>      - carriage return.
  <date>    - current date.  mm/dd/yy
  <time>    - currnet time.  hh:mm:ss

  Example:  n4attr user "Description" + "<date> <time> - object created<cr>"
     can add the text line  "03-23-33 23:23:22 - object created".

Note:  Attribute Value  -  Description
  NetAdmin & NWAdmin can only see the first string value of this attribute.
  N4Object, N4Pass, & N4Attr can access all of values.
  For this reason, if you use N4Attr to add additional strings (instead of
  overwriting the existing description string), then, you will need to use
  N4Object or N4Pass to see all of the attribute values.

Note:  Attribute Value  -  CN
  This attribute is similar to attribute name 'Description'.  It is possible
  to use N4Attr (or 3.x's SYSCON.EXE) to add an additional string to this
  attribute that NetAdmin & NWAdmin can not see.

Here are the most common type of Attribute types that are supported
   and their corresponding attribute type:

   Note: Some attributes are maintained by DS, so n4Attr can not modify
   their values.

   ACL                         :  SYN_OBJECT_ACL   (unsupported for modify)
   CN                          :  SYN_CI_STRING
   Description                 :  SYN_CI_STRING
   Facsimile Telephone Number  :  SYN_FAX_NUMBER
   Home Directory              :  SYN_PATH
   L                           :  SYN_CI_STRING
   Login Disabled              :  SYN_BOOLEAN
   Login Expiration Time       :  SYN_TIME
   Login Grace Limit           :  SYN_INTEGER
   Login Grace Remaining       :  SYN_COUNTER
   Login Intruder Address      :  SYN_NET_ADDRESS  (inaccessible for modify)
   Login Maximum Simultaneous  :  SYN_INTEGER
   Login Time                  :  SYN_TIME
   Network Address             :  SYN_NET_ADDRESS  (inaccessible for modify)
   Network Address Restriction :  SYN_NET_ADDRESS  
   EMail Address               :  SYN_EMAIL_ADDRESS
   Object Class                :  SYN_CLASS_NAME   (inaccessible for modify)
   OU                          :  SYN_CI_STRING
   Password Allow Change       :  SYN_BOOLEAN
   Password Expiration Interval:  SYN_INTERVAL
   Password Expiration Time    :  SYN_TIME
   Password Minimum Length     :  SYN_INTEGER
   Password Required           :  SYN_BOOLEAN
   Password Unique Required    :  SYN_BOOLEAN
   Physical Delivery Office Name:  SYN_CI_STRING
   Postal Address              :  SYN_PO_ADDRESS
   Postal Code                 :  SYN_CI_STRING
   Postal Office Box           :  SYN_CI_STRING
   Security Equals             :  SYN_DIST_NAME
   S                           :  SYN_CI_STRING
   SA                          :  SYN_CI_STRING
   Surname                     :  SYN_CI_STRING
   Telephone Number            :  SYN_TEL_NUMBER
   Title                       :  SYN_CI_STRING
   Group Membership            :  SYN_DIST_NAME
   Message Server              :  SYN_DIST_NAME
   Language                    :  SYN_CI_LIST
   Locked By Intruder          :  SYN_BOOLEAN
   Last Login Time             :  SYN_TIME
   Full Name                   :  SYN_CI_STRING
   Mailbox Location            :  SYN_DIST_NAME
   Mailbox ID                  :  SYN_CI_STRING
   Given Name                  :  SYN_CI_STRING
   CA Public Key               :  SYN_OCTET_STRING (unsupported for modify)
   Login Intruder Limit        :  SYN_INTEGER 7
   Intruder Attempt Reset Interval:  SYN_INTERVAL   - # of seconds
   Login Script                :  SYN_STREAM
   Object Class                :  SYN_CLASS_NAME
   O                           :  SYN_CI_STRING
   Printer Control             :  SYN_STREAM       (unsupported for modify)
   Detect Intruder             :  SYN_BOOLEAN
   Lockout After Detection     :  SYN_BOOLEAN
   Intruder Lockout Reset Interval:  SYN_INTERVAL
   Desktop                     :  SYN_DIST_NAME     - Used by App Launcher

   Note:  For the attribute type   SYN_DIST_NAME, you must type in the
   (typeless) distinguished name of the object.  For example, if the 
   object name is  CN=JSmith.OU=Sales.OU=DALLAS.O=ACME, then you would
   type in the value as  JSmith.Sales.Dallas.Acme


Samples:
   See the various .BAT files for samples on N4Attr.exe.

   N4Attr * "user" + Queue-Operator.DART /c=queue /a
   N4Attr * "operator" + Queue-Operator.DART /c=queue /a

       Create a group called 'Queue Operator'.
        (in this example, the distinguished name (fullname) of the object
         is  Queue-Operator.DART.)
       Running the above command will add the group 'Queue Operator' as
       a queue user and a queue operator of 'all' queue objects in your
       tree.

   N4Attr * "login disabled" o True /c=user /b=.context /a /1

       Disable 'login' for all user objects listed in the specified
       'context' only.


New:  Release 1.3:
   Wildcard support * for object names.  If you do not type in a 
   distinguished name (. in it), then N4Attr will attempt to do a wildcard
   search to match the object.
   Note... if more than one match if found, then, the object name will not
   be substituted thru the command parameter line.

New:  Oct 20, 96: 
    Attribute type: SYN_NET_ADDRESS 
      Can add/delete IPX, IP, and AppleTalk formatted addresses.


= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
Utility:    N4ObjMgr
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

The purpose of this utility is to Add, Move, Rename, or Delete NDS objects.

To create a new user object:
  Syntax:  N4ObjMgr Add User ObjectName Lastname [Password]
  Sample:  N4ObjMgr Add User jsmith.finance.hq.acme "Smith"

To create a new group object:
  Syntax:  N4ObjMgr Add Group ObjectName Description
  Sample:  N4ObjMgr Add Group auditors.finance.hq.acme Auditors

To create a new alias object:
  Syntax:  N4ObjMgr Add Alias ObjectName AliasedObjectName
  Sample:  N4ObjMgr Add Alias rov-auditors.acme auditors.finance.acme

To move an existing object to a new container:
  Syntax:  N4ObjMgr Move SourceObjectName NewParentContainer
  Sample:  N4ObjMgr Move jsmith.finance.hq.acme sales.hq.acme

To rename an object:
  Syntax:  N4ObjMgr Rename OldObjectName NewCommonName
  Sample:  N4ObjMgr Rename jsmith.sales.hq.acme jjones

To delete an object:
  Syntax:  N4ObjMgr Delete ObjectName
  Sample:  N4ObjMgr Delete jsmith.sales.hq.acme

Object names must be specified relative to the [root].
  Example:  jsmith.finance.hq.acme

Return codes: (batch file errorlevel)
  1 or more    - not successfull.
  0            - successfull.

If you are in a large or partitioned tree, then allow time for the object
changes to be distributed before making further changes to it.

Suggestion:  If you are in an environment that security is important, then
you should use the password option when you are creating new user accounts.
One implementation method for this, would be to place a password as a 
parameter, but do not release it to the user or the helpdesk when the account
is created.  Then, the user upon their first login, must first contact
the helpdesk staff and prove his identity.  The helpdesk staff can then use
the N4Pass utility, to change the 'unknown' password to one that the user
can use for login.

See the *.BAT files for demonstrations on the use of this utility.

Whats new:  1.4
   'Rename' command has been added.
   This will allow you to rename any object name.

Whats new:  1.5
   Confidence set to High, so object modifications are issued directly to
     the Master replica.
   Create a group object has been added.


= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
Utility:    N4Group
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
The purpose of this utility is to check if the current user is a member
of a specified group.

Syntax:  N4Group  GroupName

Return codes: (batch file errorlevel)
2 or more    - abnormal exit.
1            - not a member of the specified group.
0            - a member of the specified group.

You can either type in the full distinguished name of the Group that you
checking if the user is in, or only the common name of the group object.

Example usage:
   In a batch file, you want to fork to different parts of a batch
   file depending on if the user is a member of specified group or not.
   The batch file contains:

   n4group TimeLine
   if errorlevel 2 goto error
   if errorlevel 1 goto not-TimeLine
   rem  User is a member of group TimeLine

   goto end
   :not-TimeLine
   rem  User is not a member of group TimeLine

   goto end
   :error
   rem  This section is ran if the utility encountered an error when
   rem    trying to run.

   :end
   rem  End of batch file.


= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
Utility:    N4Expire
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

The purpose of this utility is to check if the current user 's
password has expired.

Syntax:  N4Expire

Return codes: (batch file errorlevel)
102 or more  - abnormal exit.
101          - password will never expire.
100          - 100 days or more till password expires.
2 - 99       - number of days till password expires.
1            - 1 minute to 1 day till password expires.
0            - password has expired.

Sample output can be:
   Connected to Server : JUNGEUN2
   Connected to DS Tree: HOME
   Current Context is  : O=HOME
   Distinguished Name  : Admin.home

   Current Date / Time is : Sat May 18 00:38:51 1996  PDT
   Password will expire at: Fri Nov 13 19:35:40 1998  PST
   Password will expire in 100 days or more.  (Errorlevel = 100)

   Note that the first four lines of the output is usually the same
   for all the utilities.  This lines can be  used for troubleshooting
   since they identify the person running the utility and its environment.

Remmber, in your batch file, that the higher errorlevels are checked first.
For example, here is a correct sort for your errorlevel checking...
   if errorlevel 100 goto 100-level-stuff
   if errorlevel  99 goto  99-level-stuff
   if errorlevel  98 goto  98-level-stuff
   Yes, it must go from the highest to the lowest.

Example usage:
   You are trying to give early warning to your users that their passwords
   will expire in a few days.
   A sample batch to do this is:

   n4expire
   if errorlevel 5 goto skip-warning
   if errorlevel 2 goto soon-warning
   if errorlevel 1 goto oneday-warning

   rem  Display text file indicating that the users password has expired.
   type expired.txt
   goto warning

   :oneday-warning
   rem  Display text file that their password will expire within a day.
   type one-day.txt
   goto warning

   :soon-warning
   rem  Display text file that their password will expire within 5 days.
   type five.txt
   goto warning

   :warning
   rem  Pause the execution of the batch file for 10 seconds.
   rem  You can find the ndelay.exe utility in nutl8.zip.
   ndelay 10
   goto end

   :skip-warning

   :end



= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
Utility:    N4DSpace
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

The purpose of this utility is to display / modify DSPACE limitations for
the specifed subdirectory or the specified username.  This utility will work
in Netware 4.x environments only, and does not use Bindery emulation.

View or set the space restriction for a subdirectory, use
  syntax:  N4DSPACE Server/Volume:\Path [MaxSpaceValue]
  sample:  To set the diskspace restriction to 4MB.
           N4DSPACE F:\USR\JSMITH 1000
  sample:  To view the diskspace restriction for F:\USR\JSMITH
           N4DSPACE F:\USR\JSMITH

View the space restrictions for the specified subdirectory tree, use
  (Will display for all directories if they have a restriction)
  syntax:  N4DSPACE Server/Volume:\Path /S
  sample:  N4DSPACE MERCURY/SYS:\USR /S
  Similar to /S, but will output the information in comma-delimited format:
  syntax:  N4DSPACE Server/Volume:\Path /T
  sample:  N4DSPACE MERCURY/SYS:\USR /T

View the space restriction for the specified subdirectory tree, use
  (Will display for all directories)
  syntax:  N4DSPACE Server/Volume:\Path /A
  sample:  N4DSPACE F:\USR /A
  Similar to /A, but will output the information in comma-delimited format:
  syntax:  N4DSPACE Server/Volume:\Path /B
  sample:  N4DSPACE F:\USR /B

View or set the space restriction for a user on a volume, use
  syntax:  N4DSPACE Server/Volume DistinguishedUserName [MaxSpaceValue]
  sample:  To view the space restriction for user JSMITH on specified volume.
           N4DSPACE F: JSMITH
  sample:  To set the space restriction for user JSMITH on specified volume.
           N4DSPACE F: JSMITH 1000

Server/Volume:\Path can be in form of:  driveletter:\pathname
If you type in the common user name instead of the distinguished name,
  the utility will attempt to resolve it to a unique distinguished name.
  But, this resolve process may be slow since it searches the entire tree.
If the MaxSpaceValue is not specified, then the current space restrictions
  will be displayed. Otherwise, set the specified value for the specified
  subdirectory or volume that can be consumed.
  Range is from 0 to 2million.  Unit value is 4 kilobytes. (4096 bytes)
  Value = -1 : Remove space restriction to specified volume/subdirectory.

Remember:
  Space restrictions set for a user object is for specified volume only.
  Space restrictions set for a subdirectory name, applies to any files
    at the specified subdirectory and deeper.  (ownership does not matter)
    (Restrictions are automatically accumulated from the deeper directories)
  For space restrictions, directory entries consume space too.

Samples: 
   N4DSpace F:\USR\MNORTON 
      For the subdirectory starting at F:\USR\MNORTON and deeper, 
      view the space consumption restrictions.

   N4DSpace F:\USR\MNORTON 2000   
      For the subdirectory starting at F:\USR\MNORTON and deeper, 
      set the space consumption limit to 8 megabytes.

   N4DSpace F:\ 
      View the space restrictions for your root directory of SYS:

   N4DSpace F:\USR /S > SPACE.TXT
      View the space restrictions for all subdirectories starting at
      F:\USR and deeper.   Redirect the output in the file SPACE.TXT.

Note:  I found an interesting situation with space restrictions.  
For example, if you have a 64K block size, you can not create any new files
if the users remaining available space is less than 64K.  Another words,
you have a space restriction on your account, and you have less than 64K 
left, then, you can not even create a 5 byte files, if your server's block
size is 64k.


= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

Usefull tasks for Novell's NLIST.EXE.

   NLIST USER WHERE "ACCOUNT DISABLED" EQ YES /S/R

     Show accounts that are disabled.

   NLIST "Print Queue" WHERE "Host Server" NEXISTS /S

     Show all print queues that have lost their definition.
     This usually happens after a disaster recovery of 4.10 server.

   NLIST USER WHERE "Default Server" NEXISTS /S /R

     Show all users that do not have default server setup for the user.
     These users may have a problem logging in.

   NLIST USER WHERE "LOGIN TIME" LE "MM-DD-YYYY" /S/R
     (Example: NLIST USER WHERE "LOGIN TIME" LE "01-15-1996" /S/R )

     Show accounts that have not logged on or since the above date.

   NLIST USER WHERE "PASSWORD EXPIRATION TIME" NEXISTS /S/R

     Show accounts that have never set their initial password or
     have their password expire.



= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

Registration:
=============

   This software is freeware.  It is created to help network administrators.
   Please be patient with any problems that you encounter with this utility. 
   Let me know about the bugs!

   If you are interested in the source code, then please send $50(US Dollars)
   to:   N4UTL source code; 1216 Hilburn Ct; Irving, TX; 75060; USA
   Most of the utilities are compiled with MS C/C++ 7.0 and the Novell SDK.


Disclaimer:
===========

   Please apply all standard disclaimers here.   For example, I am
   not responsible for any damage caused or not-caused by these
   utilities.
   Seriously, this utility is meant to help you... not destroy your
   environment or waste your user's time.

   This utility uses only standard API calls from official Novell SDK.

   If you find bugs, then let me know.  Otherwise, I can't fix them.

   If you wish to include any of these utilities found in this ZIP file
   in a publication, you must obtain written permission first.  Thank You


Workstation Requirements:
=========================

   . DOS 5.0 or later.
   . Novell VLM (network requestor) logged into a Netware 4.1 server.
     It must be a NDS (Netware Directory Services) connection.
   . Client (workstation) must run VLM 1.2 or later.
     *.EXE does work on a Windows95 station with the Novell Client32
     for Windows95 drivers installed.
     I have heard that MS Client for Windows95, does not properly
     support all the network APIs, so, this may (or may not) cause some
     problems.
   . By default *.EXE will expect the proper unicode table files
     are located in the subdirectory named NLS under the current Windows
     subdirectory.
     Don't forget to set the proper NWLanguage and TZ environment variables.
     example:  SET NWLanguage=English
     example:  SET TZ=CST6CDT   
   . Basically, if you can run Novell's NWADMIN.EXE then you should be able
     run *.EXE.


Server Requirements:
====================

   . Run DS.NLM version 4.89a or later.  
     Newer DS NLMs came in 41NDSx.EXE files.
   . This same server should have a 'replica' of the NDS tree on it.
     It is not a requirement but it will help speed up searches.
   . Server patches suggested.
     Note:  As of 10/15/95, you should have at least applied  DSENH.EXE,
     410PT2.EXE, LOG412.EXE, RTRUP?.EXE.  All of these files can be found
     in the Compuserve forum NWOSFILES's File library, and are new since the
     release of Netware 4.10.  You may find that these files provide better
     performance in the NDS usage and may fix some problems with NWAdmin.


Thanks:
=======

   Randy Cook, Novell developer support on Compuserve forum NDEVSUP.
   This utility is compiled using the Novell SDK volume 7.
   Contact Novell at 800-RED-WORD to subscribe to Novell's SDK.


WhoAmI:
=======

   Darwin Collins, works at Dallas Area Rapid Transit in Dallas, Texas USA. 
   Voice: 214-749-3022. 
   Environment:  1k user base connected to Netware 4.10 servers. 

   My job pays me to be a Network Administrator.
   I have been writing programs since 1980.  My first published program
   was called 'Graphic Writer' published in SoftSide in August 1982.
   You could find a variety of my earlier utilities published in books 
   such as 'LAN Desktop Guide To Troubleshooting' by Rick Segal, and 
   'NetWare Unleashed Vol 1 and 2' from SAMS Publishing.  Also, some
   were included in the 'CD HelpDesk Series : Novell Products' set.
   My only commerical attempt, is a product called 'Office Logic Clerk',
   which is a MHS-compatible (SMF-70,SMF-71) super utility (Alphapaging, 
   dlists, file librarian/requestor, ...) marketed by LAN-ACES Inc. in 
   Houston, TX.  800-LAN-ACES.  They have a email groupware product
   called Office Logic Email which is pretty neat!


My standard NET.CFG file for VLM 1.20 drivers is:
=================================================

   preferred server=JUNGEUN2
   show dots = ON
   file handles = 60
   print header = 255
   print tail = 64

   Link Driver NE2000
      Protocol IPX 8137 ETHERNET_II
      Frame ETHERNET_II
      INT 15
      PORT 340

   NETWARE DOS REQUESTER
      SET STATION TIME = ON
      LOAD CONN TABLE LOW = ON
      CONNECTIONS = 8
      LARGE INTERNET PACKETS = ON
      SIGNATURE LEVEL = 1
      CACHE BUFFERS = 5
      CACHE BUFFER SIZE = 1436
      CACHE WRITES = ON
      TRUE COMMIT = OFF
      PB BUFFERS = 3
      PBURST READ WINDOW SIZE = 16
      FIRST NETWORK DRIVE = H
      SHOW DOTS = ON
      NAME CONTEXT = "O=HOME"
      FORCE FIRST NETWORK DRIVE = ON
      LOAD LOW REDIR = ON
      READ ONLY COMPATIBILITY = ON
      USE DEFAULTS = OFF
         VLM = CONN.VLM
         VLM = IPXNCP.VLM
         VLM = TRAN.VLM
         VLM = SECURITY.VLM
         VLM = NDS.VLM
         VLM = BIND.VLM
         VLM = NWP.VLM
         VLM = FIO.VLM
         VLM = GENERAL.VLM
         VLM = REDIR.VLM
         VLM = PRINT.VLM
         VLM = NETX.VLM

[end]

Below is a list of error codes from Novell SDK volume 4.


SHELL_ERROR                0x8800
VLM_ERROR                  0x8800
ALREADY_ATTACHED           0x8800   0  
   - Attach attempted to server with valid, existing connection 
INVALID_CONNECTION         0x8801   1  
   - Request attempted with invalid or non-attached connection handle 
DRIVE_IN_USE               0x8802   2  
   - OS/2 only (NOT USED) 
CANT_ADD_CDS               0x8803   3  
   - Map drive attempted but unable to add new current directory structure 
BAD_DRIVE_BASE             0x8804   4  
   - Map drive attempted with invalid path specification 
NET_READ_ERROR             0x8805   5  
   - Attempt to receive from the selected transport failed 
NET_RECV_ERROR             0x8805   5  
UNKNOWN_NET_ERROR          0x8806   6  
   - Network send attempted with an un-specific network error 
SERVER_INVALID_SLOT        0x8807   7  
   - Server request attempted with invalid server connection slot 
BAD_SERVER_SLOT            0x8807   7  
NO_SERVER_SLOTS            0x8808   8  
   - Attach attempted to server with no connection slots available 
NET_WRITE_ERROR            0x8809   9  
   - Attempt to send on the selected transport failed 
NET_SEND_ERROR             0x8809   9  
SERVER_NO_ROUTE            0x880A   10 
   - Attempted to find route to server where no route exists 
BAD_LOCAL_TARGET           0x880B   11 - OS/2 only 
TOO_MANY_REQ_FRAGS         0x880C   12 
   - Attempted request with too many request fragments specified 
CONNECT_LIST_OVERFLOW      0x880D   13 
BUFFER_OVERFLOW            0x880E   14 
   - Attempt to receive more data than the reply buffer had room for 
NO_CONN_TO_SERVER          0x880F   15 
NO_CONNECTION_TO_SERVER    0x880F   15 
   - Attempt to get connection for a server not connected 
NO_ROUTER_FOUND            0x8810   16 - OS/2 only 
BAD_FUNC_ERROR             0x8811   17 
INVALID_SHELL_CALL         0x8811   17 
   - Attempted function call to non- existent or illegal function 
NOT_SAME_CONNECTION        0x8830   48 
   - Internal server request attempted accross different server connections 
PRIMARY_CONNECTION_NOT_SET 0x8831   49 
   - Attempt to retrieve default connection with no primary connection set 
NO_PRIMARY_SET             0x8831   49 
NO_CAPTURE_SET             0x8832   50 
NO_CAPTURE_IN_PROGRESS     0x8832   50 
   - Capture information requested on port with no capture in progress 
BAD_BUFFER_LENGTH          0x8833   51 
INVALID_BUFFER_LENGTH      0x8833   51 
   - Used to indicate length which caller requested on a GetDNC or SetDNC was too large 
NO_USER_NAME               0x8834   52 
NO_NETWARE_PRINT_SPOOLER   0x8835   53 
   - Capture requested without having the local print spooler installed 
INVALID_PARAMETER          0x8836   54 
   - Attempted function with an invalid function parameter specified 
CONFIG_FILE_OPEN_FAILED    0x8837   55 - OS/2 only 
NO_CONFIG_FILE             0x8838   56 - OS/2 only 
CONFIG_FILE_READ_FAILED    0x8839   57 - OS/2 only 
CONFIG_LINE_TOO_LONG       0x883A   58 - OS/2 only 
CONFIG_LINES_IGNORED       0x883B   59 - OS/2 only 
NOT_MY_RESOURCE            0x883C   60 
   - Attempted request made with a parameter using foriegn resource 
DAEMON_INSTALLED           0x883D   61 - OS/2 only 
SPOOLER_INSTALLED          0x883E   62 
   - Attempted load of print spooler with print spooler already installed 
CONN_TABLE_FULL            0x883F   63 
CONNECTION_TABLE_FULL      0x883F   63 
   - Attempted to allocate a connection handle with no more local connection table entries 
CONFIG_SECTION_NOT_FOUND   0x8840   64 - OS/2 only 
BAD_TRAN_TYPE              0x8841   65 
INVALID_TRANSPORT_TYPE     0x8841   65 
   - Attempted function on a connection with an invalid transport selected 
TDS_TAG_IN_USE             0x8842   66 - OS/2 only 
TDS_OUT_OF_MEMORY          0x8843   67 - OS/2 only 
TDS_INVALID_TAG            0x8844   68 
   - Attempted TDS function with invalid tag 
TDS_WRITE_TRUNCATED        0x8845   69 
   - Attempted TDS write with buffer that exceeded buffer 
NO_DIRECTORY_SERVICE_CONNECTION 0x8846   70 
SERVICE_BUSY               0x8846   70 
   - Attempted request made to partially asynchronous function in busy state 
NO_SERVER_ERROR            0x8847   71 
   - Attempted connect failed to find any servers responding 
BAD_VLM_ERROR              0x8848   72 
   - Attempted function call to non-existant or not-loaded overlay 
NETWORK_DRIVE_IN_USE       0x8849   73 
   - Attempted map to network drive that was already mapped 
LOCAL_DRIVE_IN_USE         0x884A   74 
   - Attempted map to local drive that was in use 
NO_DRIVES_AVAILABLE        0x884B   75 
   - Attempted map to next available drive when none were available 
DEVICE_NOT_REDIRECTED      0x884C   76 
   - The device is not redirected 
NO_MORE_SFT_ENTRIES        0x884D   77 
   - Maximum number of files was reached 
UNLOAD_ERROR               0x884E   78 
   - Attempted unload failed 
IN_USE_ERROR               0x884F   79 
   - Attempted re-use of already in use connection entry 
TOO_MANY_REP_FRAGS         0x8850   80 
   - Attempted request with too many reply fragments specified 
TABLE_FULL                 0x8851   81 
   - Attempted to add a name into the name table after it was full 
SOCKET_NOT_OPEN            0x8852   82 
   - Listen was posted on unopened socket 
MEM_MGR_ERROR              0x8853   83 
   - Attempted enhanced memory operation failed 
SFT3_ERROR                 0x8854   84 
   - An SFT3 switch occured mid-transfer 
PREFERRED_NOT_FOUND        0x8855   85 
   - the preferred directory server was not established but another directory server was returned 
DEVICE_NOT_RECOGNIZED      0x8856   86 
   - used to determine if the device is not used by VISE so pass it on to the next redirector, if any. 
BAD_NET_TYPE               0x8857   87 
   - the network type (Bind/NDS) does not match the server version 
ERROR_OPENING_FILE         0x8858   88 
   - generic open failure error, invalid path, access denied, etc.. 
NO_PREFERRED_SPECIFIED     0x8859   89 
   - no preferred name specified 
ERROR_OPENING_SOCKET       0x885A   90 
   - error opening a socket 
SHELL_FAILURE              0x88FF
VLM_FAILURE                0x88FF


 Server Errors 

ERR_INSUFFICIENT_SPACE          0x8901   001 
ERR_BUFFER_TOO_SMALL            0x8977   119 
ERR_VOLUME_FLAG_NOT_SET         0x8978   120 the service requested, not avail. on the selected vol. 
ERR_NO_ITEMS_FOUND              0x8979   121 
ERR_CONN_ALREADY_TEMP           0x897a   122 
ERR_CONN_ALREADY_LOGGED_IN      0x897b   123 
ERR_CONN_NOT_AUTHENTICATED      0x897c   124 
ERR_CONN_NOT_LOGGED_IN          0x897d   125 
NCP_BOUNDARY_CHECK_FAILED       0x897e   126 
ERR_LOCK_WAITING                0x897f   127 
ERR_LOCK_FAIL                   0x8980   128 
FILE_IN_USE_ERROR               0x8980   128 
NO_MORE_FILE_HANDLES            0x8981   129 
NO_OPEN_PRIVILEGES              0x8982   130 
IO_ERROR_NETWORK_DISK           0x8983   131 
NO_CREATE_PRIVILEGES            0x8984   132 
NO_CREATE_DELETE_PRIVILEGES     0x8985   133 
CREATE_FILE_EXISTS_READ_ONLY    0x8986   134 
WILD_CARDS_IN_CREATE_FILE_NAME  0x8987   135 
INVALID_FILE_HANDLE             0x8988   136 
NO_SEARCH_PRIVILEGES            0x8989   137 
NO_DELETE_PRIVILEGES            0x898A   138 
NO_RENAME_PRIVILEGES            0x898B   139 
NO_MODIFY_PRIVILEGES            0x898C   140 
SOME_FILES_AFFECTED_IN_USE      0x898D   141 
NO_FILES_AFFECTED_IN_USE        0x898E   142 
SOME_FILES_AFFECTED_READ_ONLY   0x898F   143 
NO_FILES_AFFECTED_READ_ONLY     0x8990   144 
SOME_FILES_RENAMED_NAME_EXISTS  0x8991   145 
NO_FILES_RENAMED_NAME_EXISTS    0x8992   146 
NO_READ_PRIVILEGES              0x8993   147 
NO_WRITE_PRIVILEGES_OR_READONLY 0x8994   148 
FILE_DETACHED                   0x8995   149 
SERVER_OUT_OF_MEMORY            0x8996   150 
ERR_TARGET_NOT_A_SUBDIRECTORY   0x8986   150 can be changed later (note written by server people). 
NO_DISK_SPACE_FOR_SPOOL_FILE    0x8997   151 
VOLUME_DOES_NOT_EXIST           0x8998   152 
DIRECTORY_FULL                  0x8999   153 
RENAMING_ACROSS_VOLUMES         0x899A   154 
BAD_DIRECTORY_HANDLE            0x899B   155 
INVALID_PATH                    0x899C   156 
NO_MORE_TRUSTEES                0x899C   156 
NO_MORE_DIRECTORY_HANDLES       0x899D   157 
INVALID_FILENAME                0x899E   158 
DIRECTORY_ACTIVE                0x899F   159 
DIRECTORY_NOT_EMPTY             0x89A0   160 
DIRECTORY_IO_ERROR              0x89A1   161 
READ_FILE_WITH_RECORD_LOCKED    0x89A2   162 
ERR_TRANSACTION_RESTARTED       0x89A3   163 
ERR_RENAME_DIR_INVALID          0x89A4   164 
ERR_INVALID_OPENCREATE_MODE     0x89A5   165 
ERR_ALREADY_IN_USE              0x89A6   166 
ERR_INVALID_RESOURCE_TAG        0x89A7   167 
ERR_ACCESS_DENIED               0x89A8   168 
INVALID_DATA_STREAM             0x89BE   190 
INVALID_NAME_SPACE              0x89BF   191 
NO_ACCOUNTING_PRIVILEGES        0x89C0   192 
LOGIN_DENIED_NO_ACCOUNT_BALANCE 0x89C1   193 
LOGIN_DENIED_NO_CREDIT          0x89C2   194 
ERR_TOO_MANY_HOLDS              0x89C3   195 
ACCOUNTING_DISABLED             0x89C4   196 
INTRUDER_DETECTION_LOCK         0x89C5   197 
NO_CONSOLE_OPERATOR             0x89C6   198 
NO_CONSOLE_PRIVILEGES           0x89C6   198 
ERR_Q_IO_FAILURE                0x89D0   208 
ERR_NO_QUEUE                    0x89D1   209 
ERR_NO_Q_SERVER                 0x89D2   210 
ERR_NO_Q_RIGHTS                 0x89D3   211 
ERR_Q_FULL                      0x89D4   212 
ERR_NO_Q_JOB                    0x89D5   213 
ERR_NO_Q_JOB_RIGHTS             0x89D6   214 
ERR_Q_IN_SERVICE                0x89D7   215 
PASSWORD_NOT_UNIQUE             0x89D7   215 
ERR_Q_NOT_ACTIVE                0x89D8   216 
PASSWORD_TOO_SHORT              0x89D8   216 
ERR_Q_STN_NOT_SERVER            0x89D9   217 
LOGIN_DENIED_NO_CONNECTION      0x89D9   217 
ERR_MAXIMUM_LOGINS_EXCEEDED     0x89D9   217 
ERR_Q_HALTED                    0x89DA   218 
UNAUTHORIZED_LOGIN_TIME         0x89DA   218 
UNAUTHORIZED_LOGIN_STATION      0x89DB   219 
ERR_Q_MAX_SERVERS               0x89DB   219 
ACCOUNT_DISABLED                0x89DC   220 
PASSWORD_HAS_EXPIRED_NO_GRACE   0x89DE   222 
PASSWORD_HAS_EXPIRED            0x89DF   223 
E_NO_MORE_USERS                 0x89E7   231 
NOT_ITEM_PROPERTY               0x89E8   232 
WRITE_PROPERTY_TO_GROUP         0x89E8   232 
MEMBER_ALREADY_EXISTS           0x89E9   233 
NO_SUCH_MEMBER                  0x89EA   234 
NOT_GROUP_PROPERTY              0x89EB   235 
NO_SUCH_SEGMENT                 0x89EC   236 
PROPERTY_ALREADY_EXISTS         0x89ED   237 
OBJECT_ALREADY_EXISTS           0x89EE   238 
INVALID_NAME                    0x89EF   239 
WILD_CARD_NOT_ALLOWED           0x89F0   240 
INVALID_BINDERY_SECURITY        0x89F1   241 
NO_OBJECT_READ_PRIVILEGE        0x89F2   242 
NO_OBJECT_RENAME_PRIVILEGE      0x89F3   243 
NO_OBJECT_DELETE_PRIVILEGE      0x89F4   244 
NO_OBJECT_CREATE_PRIVILEGE      0x89F5   245 
NO_PROPERTY_DELETE_PRIVILEGE    0x89F6   246 
NO_PROPERTY_CREATE_PRIVILEGE    0x89F7   247 
NO_PROPERTY_WRITE_PRIVILEGE     0x89F8   248 
NO_FREE_CONNECTION_SLOTS        0x89F9   249 
NO_PROPERTY_READ_PRIVILEGE      0x89F9   249 
NO_MORE_SERVER_SLOTS            0x89FA   250 
TEMP_REMAP_ERROR                0x89FA   250 
INVALID_PARAMETERS              0x89FB   251 
NO_SUCH_PROPERTY                0x89FB   251 
ERR_NCP_NOT_SUPPORTED           0x89FB   251 
INTERNET_PACKET_REQT_CANCELED   0x89FC   252 
UNKNOWN_FILE_SERVER             0x89FC   252 
MESSAGE_QUEUE_FULL              0x89FC   252 
NO_SUCH_OBJECT                  0x89FC   252 
LOCK_COLLISION                  0x89FD   253 
BAD_STATION_NUMBER              0x89FD   253 
INVALID_PACKET_LENGTH           0x89FD   253 
UNKNOWN_REQUEST                 0x89FD   253 
BINDERY_LOCKED                  0x89FE   254 
TRUSTEE_NOT_FOUND               0x89FE   254 
DIRECTORY_LOCKED                0x89FE   254 
INVALID_SEMAPHORE_NAME_LENGTH   0x89FE   254 
PACKET_NOT_DELIVERABLE          0x89FE   254 
SERVER_BINDERY_LOCKED           0x89FE   254 
SOCKET_TABLE_FULL               0x89FE   254 
SPOOL_DIRECTORY_ERROR           0x89FE   254 
SUPERVISOR_HAS_DISABLED_LOGIN   0x89FE   254 
TIMEOUT_FAILURE                 0x89FE   254 
BAD_PRINTER_ERROR               0x89FF   255 
BAD_RECORD_OFFSET               0x89FF   255 
CLOSE_FCB_ERROR                 0x89FF   255 
FILE_EXTENSION_ERROR            0x89FF   255 
FILE_NAME_ERROR                 0x89FF   255 
HARDWARE_FAILURE                0x89FF   255 
INVALID_DRIVE_NUMBER            0x89FF   255 
DOS_INVALID_DRIVE               0x000F   255 
INVALID_INITIAL_SEMAPHORE_VALUE 0x89FF   255 
INVALID_SEMAPHORE_HANDLE        0x89FF   255 
IO_BOUND_ERROR                  0x89FF   255 
NO_FILES_FOUND_ERROR            0x89FF   255 
NO_RESPONSE_FROM_SERVER         0x89FF   255 
NO_SUCH_OBJECT_OR_BAD_PASSWORD  0x89FF   255 
PATH_NOT_LOCATABLE              0x89FF   255 
QUEUE_FULL_ERROR                0x89FF   255 
REQUEST_NOT_OUTSTANDING         0x89FF   255 
SOCKET_ALREADY_OPEN             0x89FF   255 
LOCK_ERROR                      0x89FF   255 


ERR_INSUFFICIENT_MEMORY        -150      0xFFFFFF6A, OS ERR_NO_ALLOC_SPACE is 0x96 
ERR_REQUEST_UNKNOWN            -251      0xFFFFFF05, OS ERR_UNKNOWN_REQUEST is 0xFB 
ERR_OF_SOME_SORT               -255      0xFFFFFF01, many OS errors are originally 0xFF 

 -301 to -399 are returned by the directory services client library 
ERR_NOT_ENOUGH_MEMORY          -301      0xFFFFFED3 
ERR_BAD_KEY                    -302      0xFFFFFED2 
ERR_BAD_CONTEXT                -303      0xFFFFFED1 
ERR_BUFFER_FULL                -304      0xFFFFFED0 
ERR_LIST_EMPTY                 -305      0xFFFFFECF 
ERR_BAD_SYNTAX                 -306      0xFFFFFECE 
ERR_BUFFER_EMPTY               -307      0xFFFFFECD 
ERR_BAD_VERB                   -308      0xFFFFFECC 
ERR_EXPECTED_IDENTIFIER        -309      0xFFFFFECB 
ERR_EXPECTED_EQUALS            -310      0xFFFFFECA 
ERR_ATTR_TYPE_EXPECTED         -311      0xFFFFFEC9 
ERR_ATTR_TYPE_NOT_EXPECTED     -312      0xFFFFFEC8 
ERR_FILTER_TREE_EMPTY          -313      0xFFFFFEC7 
ERR_INVALID_OBJECT_NAME        -314      0xFFFFFEC6 
ERR_EXPECTED_RDN_DELIMITER     -315      0xFFFFFEC5 
ERR_TOO_MANY_TOKENS            -316      0xFFFFFEC4 
ERR_INCONSISTENT_MULTIAVA      -317      0xFFFFFEC3 
ERR_COUNTRY_NAME_TOO_LONG      -318      0xFFFFFEC2 
ERR_SYSTEM_ERROR               -319      0xFFFFFEC1 
ERR_CANT_ADD_ROOT              -320      0xFFFFFEC0 
ERR_UNABLE_TO_ATTACH           -321      0xFFFFFEBF 
ERR_INVALID_HANDLE             -322      0xFFFFFEBE 
ERR_BUFFER_ZERO_LENGTH         -323      0xFFFFFEBD 
ERR_INVALID_REPLICA_TYPE       -324      0xFFFFFEBC 
ERR_INVALID_ATTR_SYNTAX        -325      0xFFFFFEBB 
ERR_INVALID_FILTER_SYNTAX      -326      0xFFFFFEBA 
ERR_CONTEXT_CREATION           -328      0xFFFFFEB8 
ERR_INVALID_UNION_TAG          -329      0xFFFFFEB7 
ERR_INVALID_SERVER_RESPONSE    -330      0xFFFFFEB6 
ERR_NULL_POINTER               -331      0xFFFFFEB5 
ERR_NO_SERVER_FOUND            -332      0xFFFFFEB4 
ERR_NO_CONNECTION              -333      0xFFFFFEB3 
ERR_RDN_TOO_LONG               -334      0xFFFFFEB2 
ERR_DUPLICATE_TYPE             -335      0xFFFFFEB1 
ERR_DATA_STORE_FAILURE         -336      0xFFFFFEB0 
ERR_NOT_LOGGED_IN              -337      0xFFFFFEAF 
ERR_INVALID_PASSWORD_CHARS     -338      0xFFFFFEAE 
ERR_FAILED_SERVER_AUTHENT      -339      0xFFFFFEAD 
ERR_TRANSPORT                  -340      0xFFFFFEAC 
ERR_NO_SUCH_SYNTAX             -341      0xFFFFFEAB 
ERR_INVALID_DS_NAME            -342      0xFFFFFEAA 
ERR_ATTR_NAME_TOO_LONG         -343      0xFFFFFEA9 
ERR_INVALID_TDS                -344      0xFFFFFEA8 
ERR_INVALID_DS_VERSION         -345      0xFFFFFEA7 
ERR_UNICODE_TRANSLATION        -346      0xFFFFFEA6 
ERR_SCHEMA_NAME_TOO_LONG       -347      0xFFFFFEA5 
ERR_UNICODE_FILE_NOT_FOUND     -348      0xFFFFFEA4 
ERR_UNICODE_ALREADY_LOADED     -349      0xFFFFFEA3 
ERR_NOT_CONTEXT_OWNER          -350      0xFFFFFEA2 
ERR_ATTEMPT_TO_AUTHENTICATE_0  -351      0xFFFFFEA1 
ERR_NO_WRITABLE_REPLICAS       -352      0xFFFFFEA0 
ERR_DN_TOO_LONG                -353      0xFFFFFE9F 
ERR_RENAME_NOT_ALLOWED         -354      0xFFFFFE9E 

 -601 to -699 are returned by the directory services agent in the server 
ERR_NO_SUCH_ENTRY              -601      0xFFFFFDA7 
ERR_NO_SUCH_VALUE              -602      0xFFFFFDA6 
ERR_NO_SUCH_ATTRIBUTE          -603      0xFFFFFDA5 
ERR_NO_SUCH_CLASS              -604      0xFFFFFDA4 
ERR_NO_SUCH_PARTITION          -605      0xFFFFFDA3 
ERR_ENTRY_ALREADY_EXISTS       -606      0xFFFFFDA2 
ERR_NOT_EFFECTIVE_CLASS        -607      0xFFFFFDA1 
ERR_ILLEGAL_ATTRIBUTE          -608      0xFFFFFDA0 
ERR_MISSING_MANDATORY          -609      0xFFFFFD9F 
ERR_ILLEGAL_DS_NAME            -610      0xFFFFFD9E 
ERR_ILLEGAL_CONTAINMENT        -611      0xFFFFFD9D 
ERR_CANT_HAVE_MULTIPLE_VALUES  -612      0xFFFFFD9C 
ERR_SYNTAX_VIOLATION           -613      0xFFFFFD9B 
ERR_DUPLICATE_VALUE            -614      0xFFFFFD9A 
ERR_ATTRIBUTE_ALREADY_EXISTS   -615      0xFFFFFD99 
ERR_MAXIMUM_ENTRIES_EXIST      -616      0xFFFFFD98 
ERR_DATABASE_FORMAT            -617      0xFFFFFD97 
ERR_INCONSISTENT_DATABASE      -618      0xFFFFFD96 
ERR_INVALID_COMPARISON         -619      0xFFFFFD95 
ERR_COMPARISON_FAILED          -620      0xFFFFFD94 
ERR_TRANSACTIONS_DISABLED      -621      0xFFFFFD93 
ERR_INVALID_TRANSPORT          -622      0xFFFFFD92 
ERR_SYNTAX_INVALID_IN_NAME     -623      0xFFFFFD91 
ERR_REPLICA_ALREADY_EXISTS     -624      0xFFFFFD90 
ERR_TRANSPORT_FAILURE          -625      0xFFFFFD8F 
ERR_ALL_REFERRALS_FAILED       -626      0xFFFFFD8E 
ERR_CANT_REMOVE_NAMING_VALUE   -627      0xFFFFFD8D 
ERR_OBJECT_CLASS_VIOLATION     -628      0xFFFFFD8C 
ERR_ENTRY_IS_NOT_LEAF          -629      0xFFFFFD8B 
ERR_DIFFERENT_TREE             -630      0xFFFFFD8A 
ERR_ILLEGAL_REPLICA_TYPE       -631      0xFFFFFD89 
ERR_SYSTEM_FAILURE             -632      0xFFFFFD88 
ERR_INVALID_ENTRY_FOR_ROOT     -633      0xFFFFFD87 
ERR_NO_REFERRALS               -634      0xFFFFFD86 
ERR_REMOTE_FAILURE             -635      0xFFFFFD85 
ERR_UNREACHABLE_SERVER         -636      0XFFFFFD84 
ERR_PREVIOUS_MOVE_IN_PROGRESS  -637      0XFFFFFD83 
ERR_NO_CHARACTER_MAPPING       -638      0XFFFFFD82 
ERR_INCOMPLETE_AUTHENTICATION  -639      0XFFFFFD81 
ERR_INVALID_CERTIFICATE        -640      0xFFFFFD80 
ERR_INVALID_REQUEST            -641      0xFFFFFD7F 
ERR_INVALID_ITERATION          -642      0xFFFFFD7E 
ERR_SCHEMA_IS_NONREMOVABLE     -643      0xFFFFFD7D 
ERR_SCHEMA_IS_IN_USE           -644      0xFFFFFD7C 
ERR_CLASS_ALREADY_EXISTS       -645      0xFFFFFD7B 
ERR_BAD_NAMING_ATTRIBUTES      -646      0xFFFFFD7A 
ERR_NOT_ROOT_PARTITION         -647      0xFFFFFD79 
ERR_INSUFFICIENT_STACK         -648      0xFFFFFD78 
ERR_INSUFFICIENT_BUFFER        -649      0xFFFFFD77 
ERR_AMBIGUOUS_CONTAINMENT      -650      0xFFFFFD76 
ERR_AMBIGUOUS_NAMING           -651      0xFFFFFD75 
ERR_DUPLICATE_MANDATORY        -652      0xFFFFFD74 
ERR_DUPLICATE_OPTIONAL         -653      0xFFFFFD73 
ERR_PARTITION_BUSY             -654      0XFFFFFD72 
ERR_MULTIPLE_REPLICAS          -655      0xFFFFFD71 
ERR_CRUCIAL_REPLICA            -656      0xFFFFFD70 
ERR_SCHEMA_SYNC_IN_PROGRESS    -657      0xFFFFFD6F 
ERR_SKULK_IN_PROGRESS          -658      0xFFFFFD6E 
ERR_TIME_NOT_SYNCHRONIZED      -659      0xFFFFFD6D 
ERR_RECORD_IN_USE              -660      0xFFFFFD6C 
ERR_DS_VOLUME_NOT_MOUNTED      -661      0xFFFFFD6B 
ERR_DS_VOLUME_IO_FAILURE       -662      0xFFFFFD6A 
ERR_DS_LOCKED                  -663      0xFFFFFD69 
ERR_OLD_EPOCH                  -664      0xFFFFFD68 
ERR_NEW_EPOCH                  -665      0xFFFFFD67 
ERR_INCOMPATIBLE_DS_VERSION    -666      0xFFFFFD66 
ERR_PARTITION_ROOT             -667      0xFFFFFD65 
ERR_ENTRY_NOT_CONTAINER        -668      0xFFFFFD64 
ERR_FAILED_AUTHENTICATION      -669      0xFFFFFD63 
ERR_INVALID_CONTEXT            -670      0xFFFFFD62 
ERR_NO_SUCH_PARENT             -671      0xFFFFFD61 
ERR_NO_ACCESS                  -672      0xFFFFFD60 
ERR_REPLICA_NOT_ON             -673      0xFFFFFD5F 
ERR_INVALID_NAME_SERVICE       -674      0xFFFFFD5E 
ERR_INVALID_TASK               -675      0xFFFFFD5D 
ERR_INVALID_CONN_HANDLE        -676      0xFFFFFD5C 
ERR_INVALID_IDENTITY           -677      0xFFFFFD5B 
ERR_DUPLICATE_ACL              -678      0xFFFFFD5A 
ERR_PARTITION_ALREADY_EXISTS   -679      0xFFFFFD59 
ERR_TRANSPORT_MODIFIED         -680      0xFFFFFD58 
ERR_ALIAS_OF_AN_ALIAS          -681      0xFFFFFD57 
ERR_AUDITING_FAILED            -682      0xFFFFFD56 
ERR_INVALID_API_VERSION        -683      0xFFFFFD55 
ERR_SECURE_NCP_VIOLATION       -684      0xFFFFFD54 
ERR_MOVE_IN_PROGRESS           -685      0xFFFFFD53 
ERR_NOT_LEAF_PARTITION         -686      0xFFFFFD52 
ERR_CANNOT_ABORT               -687      0xFFFFFD51 
ERR_CACHE_OVERFLOW             -688      0xFFFFFD50 
ERR_INVALID_SUBORDINATE_COUNT  -689      0xFFFFFD4F 
ERR_INVALID_RDN                -690      0xFFFFFD4E 
ERR_MOD_TIME_NOT_CURRENT       -691      0xFFFFFD4D 
ERR_INCORRECT_BASE_CLASS       -692      0xFFFFFD4C 
ERR_MISSING_REFERENCE          -693      0xFFFFFD4B 
ERR_LOST_ENTRY                 -694      0xFFFFFD4A 
ERR_AGENT_ALREADY_REGISTERED   -695      0xFFFFFD49 
ERR_DS_LOADER_BUSY             -696      0xFFFFFD48 
ERR_DS_CANNOT_RELOAD           -697      0xFFFFFD47 
ERR_REPLICA_IN_SKULK           -698      0xFFFFFD46 
ERR_FATAL                      -699      0xFFFFFD45 
ERR_OBSOLETE_API               -700      0xFFFFFD44 
ERR_SYNCHRONIZATION_DISABLED   -701      0xFFFFFD43 
ERR_INVALID_PARAMETER          -702      0xFFFFFD42 
ERR_DUPLICATE_TEMPLATE         -703      0xFFFFFD41 
ERR_NO_MASTER_REPLICA          -704      0xFFFFFD40 
ERR_DUPLICATE_CONTAINMENT      -705      0xFFFFFD3F 

---------------------------------------------------------------------------
 * -001 to -255 are OS Errors returned through directory services
 

DSERR_INSUFFICIENT_SPACE             -001      FFFFFFFF 
DSERR_BUFFER_TOO_SMALL               -119      FFFFFF89 
DSERR_VOLUME_FLAG_NOT_SET            -120      FFFFFF88 
DSERR_NO_ITEMS_FOUND                 -121      FFFFFF87 
DSERR_CONN_ALREADY_TEMPORARY         -122      FFFFFF86 
DSERR_CONN_ALREADY_LOGGED_IN         -123      FFFFFF85 
DSERR_CONN_NOT_AUTHENTICATED         -124      FFFFFF84 
DSERR_CONN_NOT_LOGGED_IN             -125      FFFFFF83 
DSERR_NCP_BOUNDARY_CHECK_FAILED      -126      FFFFFF82 
DSERR_LOCK_WAITING                   -127      FFFFFF81 
DSERR_LOCK_FAIL                      -128      FFFFFF80 
DSERR_OUT_OF_HANDLES                 -129      FFFFFF7F 
DSERR_NO_OPEN_PRIVILEGE              -130      FFFFFF7E 
DSERR_HARD_IO_ERROR                  -131      FFFFFF7D 
DSERR_NO_CREATE_PRIVILEGE            -132      FFFFFF7C 
DSERR_NO_CREATE_DELETE_PRIV          -133      FFFFFF7B 
DSERR_R_O_CREATE_FILE                -134      FFFFFF7A 
DSERR_CREATE_FILE_INVALID_NAME       -135      FFFFFF79 
DSERR_INVALID_FILE_HANDLE            -136      FFFFFF78 
DSERR_NO_SEARCH_PRIVILEGE            -137      FFFFFF77 
DSERR_NO_DELETE_PRIVILEGE            -138      FFFFFF76 
DSERR_NO_RENAME_PRIVILEGE            -139      FFFFFF75 
DSERR_NO_SET_PRIVILEGE               -140      FFFFFF74 
DSERR_SOME_FILES_IN_USE              -141      FFFFFF73 
DSERR_ALL_FILES_IN_USE               -142      FFFFFF72 
DSERR_SOME_READ_ONLY                 -143      FFFFFF71 
DSERR_ALL_READ_ONLY                  -144      FFFFFF70 
DSERR_SOME_NAMES_EXIST               -145      FFFFFF6F 
DSERR_ALL_NAMES_EXIST                -146      FFFFFF6E 
DSERR_NO_READ_PRIVILEGE              -147      FFFFFF6D 
DSERR_NO_WRITE_PRIVILEGE             -148      FFFFFF6C 
DSERR_FILE_DETACHED                  -149      FFFFFF6B 
DSERR_NO_ALLOC_SPACE                 -150      FFFFFF6A 
DSERR_TARGET_NOT_A_SUBDIR            -150      FFFFFF6A 
DSERR_NO_SPOOL_SPACE                 -151      FFFFFF69 
DSERR_INVALID_VOLUME                 -152      FFFFFF68 
DSERR_DIRECTORY_FULL                 -153      FFFFFF67 
DSERR_RENAME_ACROSS_VOLUME           -154      FFFFFF66 
DSERR_BAD_DIR_HANDLE                 -155      FFFFFF65 
DSERR_INVALID_PATH                   -156      FFFFFF64 
DSERR_NO_SUCH_EXTENSION              -156      FFFFFF64 
DSERR_NO_DIR_HANDLES                 -157      FFFFFF63 
DSERR_BAD_FILE_NAME                  -158      FFFFFF62 
DSERR_DIRECTORY_ACTIVE               -159      FFFFFF61 
DSERR_DIRECTORY_NOT_EMPTY            -160      FFFFFF60 
DSERR_DIRECTORY_IO_ERROR             -161      FFFFFF5F 
DSERR_IO_LOCKED                      -162      FFFFFF5E 
DSERR_TRANSACTION_RESTARTED          -163      FFFFFF5D 
DSERR_RENAME_DIR_INVALID             -164      FFFFFF5C 
DSERR_INVALID_OPENCREATE_MODE        -165      FFFFFF5B 
DSERR_ALREADY_IN_USE                 -166      FFFFFF5A 
DSERR_INVALID_RESOURCE_TAG           -167      FFFFFF59 
DSERR_ACCESS_DENIED                  -168      FFFFFF58 
DSERR_INVALID_DATA_STREAM            -190      FFFFFF42 
DSERR_INVALID_NAME_SPACE             -191      FFFFFF41 
DSERR_NO_ACCOUNTING_PRIVILEGES       -192      FFFFFF40 
DSERR_NO_ACCOUNT_BALANCE             -193      FFFFFF3F 
DSERR_CREDIT_LIMIT_EXCEEDED          -194      FFFFFF3E 
DSERR_TOO_MANY_HOLDS                 -195      FFFFFF3D 
DSERR_ACCOUNTING_DISABLED            -196      FFFFFF3C 
DSERR_LOGIN_LOCKOUT                  -197      FFFFFF3B 
DSERR_NO_CONSOLE_RIGHTS              -198      FFFFFF3A 
DSERR_Q_IO_FAILURE                   -208      FFFFFF30 
DSERR_NO_QUEUE                       -209      FFFFFF2F 
DSERR_NO_Q_SERVER                    -210      FFFFFF2E 
DSERR_NO_Q_RIGHTS                    -211      FFFFFF2D 
DSERR_Q_FULL                         -212      FFFFFF2C 
DSERR_NO_Q_JOB                       -213      FFFFFF2B 
DSERR_NO_Q_JOB_RIGHTS                -214      FFFFFF2A 
DSERR_UNENCRYPTED_NOT_ALLOWED        -214      FFFFFF2A 
DSERR_Q_IN_SERVICE                   -215      FFFFFF29 
DSERR_DUPLICATE_PASSWORD             -215      FFFFFF29 
DSERR_Q_NOT_ACTIVE                   -216      FFFFFF28 
DSERR_PASSWORD_TOO_SHORT             -216      FFFFFF28 
DSERR_Q_STN_NOT_SERVER               -217      FFFFFF27 
DSERR_MAXIMUM_LOGINS_EXCEEDED        -217      FFFFFF27 
DSERR_Q_HALTED                       -218      FFFFFF26 
DSERR_BAD_LOGIN_TIME                 -218      FFFFFF26 
DSERR_Q_MAX_SERVERS                  -219      FFFFFF25 
DSERR_NODE_ADDRESS_VIOLATION         -219      FFFFFF25 
DSERR_LOG_ACCOUNT_EXPIRED            -220      FFFFFF24 
DSERR_BAD_PASSWORD                   -222      FFFFFF22 
DSERR_PASSWORD_EXPIRED               -223      FFFFFF21 
DSERR_NO_LOGIN_CONN_AVAILABLE        -224      FFFFFF20 
DSERR_WRITE_TO_GROUP_PROPERTY        -232      FFFFFF18 
DSERR_MEMBER_ALREADY_EXISTS          -233      FFFFFF17 
DSERR_NO_SUCH_MEMBER                 -234      FFFFFF16 
DSERR_PROPERTY_NOT_GROUP             -235      FFFFFF15 
DSERR_NO_SUCH_VALUE_SET              -236      FFFFFF14 
DSERR_PROPERTY_ALREADY_EXISTS        -237      FFFFFF13 
DSERR_OBJECT_ALREADY_EXISTS          -238      FFFFFF12 
DSERR_ILLEGAL_NAME                   -239      FFFFFF11 
DSERR_ILLEGAL_WILDCARD               -240      FFFFFF10 
DSERR_BINDERY_SECURITY               -241      FFFFFF0F 
DSERR_NO_OBJECT_READ_RIGHTS          -242      FFFFFF0E 
DSERR_NO_OBJECT_RENAME_RIGHTS        -243      FFFFFF0D 
DSERR_NO_OBJECT_DELETE_RIGHTS        -244      FFFFFF0C 
DSERR_NO_OBJECT_CREATE_RIGHTS        -245      FFFFFF0B 
DSERR_NO_PROPERTY_DELETE_RIGHTS      -246      FFFFFF0A 
DSERR_NO_PROPERTY_CREATE_RIGHTS      -247      FFFFFF09 
DSERR_NO_PROPERTY_WRITE_RIGHTS       -248      FFFFFF08 
DSERR_NO_PROPERTY_READ_RIGHTS        -249      FFFFFF07 
DSERR_TEMP_REMAP                     -250      FFFFFF06 
DSERR_UNKNOWN_REQUEST                -251      FFFFFF05 
DSERR_NO_SUCH_PROPERTY               -251      FFFFFF05 
DSERR_MESSAGE_QUEUE_FULL             -252      FFFFFF04 
DSERR_TARGET_ALREADY_HAS_MSG         -252      FFFFFF04 
DSERR_NO_SUCH_OBJECT                 -252      FFFFFF04 
DSERR_BAD_STATION_NUMBER             -253      FFFFFF03 
DSERR_BINDERY_LOCKED                 -254      FFFFFF02 
DSERR_DIR_LOCKED                     -254      FFFFFF02 
DSERR_SPOOL_DELETE                   -254      FFFFFF02 
DSERR_TRUSTEE_NOT_FOUND              -254      FFFFFF02 
DSERR_HARD_FAILURE                   -255      FFFFFF01 
DSERR_FILE_NAME                      -255      FFFFFF01 
DSERR_FILE_EXISTS                    -255      FFFFFF01 
DSERR_CLOSE_FCB                      -255      FFFFFF01 
DSERR_IO_BOUND                       -255      FFFFFF01 
DSERR_NO_SPOOL_FILE                  -255      FFFFFF01 
DSERR_BAD_SPOOL_PRINTER              -255      FFFFFF01 
DSERR_BAD_PARAMETER                  -255      FFFFFF01 
DSERR_NO_FILES_FOUND                 -255      FFFFFF01 
DSERR_NO_TRUSTEE_CHANGE_PRIV         -255      FFFFFF01 
DSERR_TARGET_NOT_LOGGED_IN           -255      FFFFFF01 
DSERR_TARGET_NOT_ACCEPTING_MSGS      -255      FFFFFF01 
DSERR_MUST_FORCE_DOWN                -255      FFFFFF01 
   
