REXXNET.DLL

Description
RexxNet.DLL is a DLL that supports the Lan Server APIs from Rexx. 
The APIs are replicated to match the standard 'C' call interface
(with a few exceptions, enhancements).  It can be used from OS/2
1.3 or OS/2 2.x and Lan Server 3.0.

DLL Usage
The DLL is used by registering and calling the function
NetLoadFuncs.  When completed, then functions can be dropped by
calling NetDropFuncs.

/* REXX */

call rxfuncadd 'NetLoadFuncs', 'RexxNet', 'NetLoadFuncs'
call NetLoadFuncs

...

call NetDropFuncs
exit

API Function Usage
All the APIs callable use the standard 'C' call interface with
the following exceptions:
Any 'buflen' parameter is ignored (and should be omitted if other
fields follow) as the REXX interface has no length limit.
The 'entriesread' parameter is returned as 'Buf.Entries' and any
variable passed is ignored.
The 'totalavail' parameter is ignored and never returned, as the
REXX functions always return the total amount (ie totalavail ==
entriesread and Error 234 should never happen)
All 'reserved' parameter are ignored, but leading reserved
parameters must still be passed.
The 'buf' parameter should be a stem variable.  The values passed
in and returned as the structure field names (ignoring the
leading structure-level identifing code).
If the function called is an Enum function, then Buf.Entries will
contain how many structures were returned and Buf.0.xxx to
Buf.n.xxx will contain the returned structures


ie the use_info_0 structure is as follows:
     struct use_info_0 { REXX
          ui0_local[DEVLEN + 1]    stem.Local
          ui0_pad   not returned
          ui0_remote     stem.Remote
     }

/* REXX */

call rxfuncadd 'NetLoadFuncs', 'RexxNet', 'NetLoadFuncs'
call NetLoadFuncs

retc = NetUseGetInfo('', 'H:', 1, 'Buf')

say Buf.Local '-->' Buf.Remote

Buf.Local = 'Z:'
Buf.Remote = '\\Server\Sharename'
Buf.AsgType = 0
Buf.Password = ''

retc = NetUseAdd('', 1, 'Buf')
if retc \= 0 then
     say 'Error:' retc NetGetMessage(retc, "NET.MSG")

retc = NetUseEnum('', 0, 'Info')

do i = 0 to Info.Entries - 1
     say Info.i.Local '-->' Info.i.Remote
end

Additional Functions Supplied
For each group of Lan Server APIs there is an additional Info
function that returns a stem variable containing all the field
names for the given level of structure.

     NetxxxInfo(level, stem)

ie call NetUseInfo(1, 'Info')
would return the following
     Info.0 = 7
     Info.1 = 'Local'
     Info.2 = 'Remote'
     Info.3 = 'Password'
     Info.4 = 'Status'
     Info.5 = 'Asg_Type'
     Info.6 = 'RefCount'
     Info.7 = 'UseCount'

Also the function:
     int NetGetMessage(errcode, Messagefile)

is supplied.  This is the DosGetMessage API from OS/2 and will
return the String message associated with the errcode from the
given message file.  If no messagefile is given then OSO001.MSG
is used.  The Net functions will return an error code >2100 if a
network error occured, and if so 'NET.MSG' can be used as the
messagefile for the standard error message.

Supported APIs
The following is the list of API groups currently supported:

     NetUse
     NetUser
     NetGroup
     NetAlias
     NetDomain (NetGetDCName and NetLogonEnum)
     NetWksta  (All except NetWkstaSetUID2)
     NetErrorLog
     NetAccess
     NetShare
     NetApp
     NetService
     upmeulgn and upmeulgn
     NetGetMessage


