mirror of
https://github.com/GeorgeMcMullen/rxIRC.git
synced 2026-01-12 00:02:51 +00:00
A couple of VM/CMS modules that are required by rxIRC.
This commit is contained in:
parent
916e4338f1
commit
c7934f2457
BIN
vm.modules/rexxwait.vmarc
Normal file
BIN
vm.modules/rexxwait.vmarc
Normal file
Binary file not shown.
101
vm.modules/rxsocket.list
Normal file
101
vm.modules/rxsocket.list
Normal file
@ -0,0 +1,101 @@
|
||||
Filename Filetype FM Format LRecL Date Time Compressed Size
|
||||
EXTINT52 ASSEMBLE W1 F 80 1993-02-17 11:55:28 6561
|
||||
RXSOCKET $PACKAGE W1 V 72 1994-01-10 17:10:36 2668
|
||||
EXTINT52 MODULE W1 F 1360 1993-02-17 11:55:18 1228
|
||||
RXWSAMPL TIMEFILE W1 V 57 1993-02-17 11:55:04 431
|
||||
RXWSAMPL EXEC W1 V 73 1994-06-06 21:11:30 2866
|
||||
REXXWAIT MODULE W1 V -11456 1994-04-15 07:01:03 33148
|
||||
WNG HELPEVNT W1 V 79 1994-01-10 17:04:48 911
|
||||
WAIT HELPEVNT W1 V 79 1994-01-10 17:04:47 831
|
||||
TIME HELPEVNT W1 V 79 1994-01-10 17:04:46 1231
|
||||
SMSG HELPEVNT W1 V 79 1994-01-10 17:04:45 991
|
||||
OMSG HELPEVNT W1 V 79 1994-01-10 17:04:44 1551
|
||||
MSG HELPEVNT W1 V 79 1994-01-10 17:04:43 911
|
||||
MAIL HELPEVNT W1 V 79 1994-01-10 17:04:42 1071
|
||||
FILE HELPEVNT W1 V 79 1994-01-10 17:04:40 1391
|
||||
CONS HELPEVNT W1 V 79 1994-01-10 17:04:37 911
|
||||
ALL HELPEVNT W1 V 79 1994-01-10 17:04:36 751
|
||||
EVNTHND HELPMENU W1 V 75 1994-01-10 17:04:48 991
|
||||
WAIT HELPREXX W1 V 79 1994-01-10 17:05:06 1151
|
||||
SETVALUE HELPREXX W1 V 79 1994-01-10 17:05:03 911
|
||||
RESETVAL HELPREXX W1 V 79 1994-01-10 17:05:03 671
|
||||
QUERYVAL HELPREXX W1 V 79 1994-01-10 17:05:02 991
|
||||
CTABLE HELPREXX W1 V 79 1994-01-10 17:04:59 1151
|
||||
CTYPE HELPREXX W1 V 79 1994-01-10 17:05:00 591
|
||||
EC2AC HELPREXX W1 V 79 1994-01-10 17:05:01 511
|
||||
AC2EC HELPREXX W1 V 79 1994-01-10 17:04:58 511
|
||||
REXXWAIT HELPMENU W1 V 75 1994-01-10 17:04:51 1071
|
||||
REXXWAIT MANUAL W1 V 110 1994-04-15 07:00:52 45429
|
||||
REXXWAIT MEMO W1 V 76 1993-09-15 09:30:55 4419
|
||||
RXSOCKET TCPXLATE W1 V 59 1993-02-17 11:53:48 1551
|
||||
RXSOCKET TCPXLBIN W1 F 256 1993-02-17 11:53:59 757
|
||||
RSCLIENT EXEC W1 V 72 1993-02-17 11:53:29 2881
|
||||
RSSERVER EXEC W1 V 72 1993-02-17 11:53:18 4321
|
||||
RXSSAMPL EXEC W1 V 73 1993-02-17 11:52:50 3210
|
||||
RESOLVE EXEC W1 V 60 1993-02-17 11:52:33 1038
|
||||
FINGER EXEC W1 V 82 1995-03-27 08:58:48 2582
|
||||
DAYTIME EXEC W1 V 82 1993-02-17 12:19:28 2262
|
||||
ARCHIE EXEC W1 V 94 1995-06-09 17:38:17 7702
|
||||
RXSOCKET MODULE W1 V -28648 1994-07-01 09:55:53 25201
|
||||
RXSOCKET MEMO W1 V 74 1993-02-17 21:23:48 8600
|
||||
RXSOCKET MANUAL W1 V 96 1993-06-04 10:23:03 36004
|
||||
RXSOCKET SCRIPT W1 V 133 1994-04-20 10:44:15 34194
|
||||
IMMCMD HELPEVNT W1 V 79 1994-01-12 08:50:31 991
|
||||
HOLIDAY HELPEVNT W1 V 79 1994-01-12 08:50:11 1151
|
||||
SOCKET HELPEVNT W1 V 79 1994-01-10 17:04:45 1151
|
||||
SOCKET HELPREXX W1 V 79 1994-01-10 17:05:04 991
|
||||
REXXSOCK HELPMENU W1 V 73 1994-01-10 17:04:50 671
|
||||
RXS028W HELPMSG W1 V 76 1994-01-10 17:04:57 674
|
||||
RXS012E HELPMSG W1 V 77 1994-01-10 17:04:56 514
|
||||
RXS008E HELPMSG W1 V 78 1994-01-10 17:04:55 674
|
||||
RXS004E HELPMSG W1 V 79 1994-01-10 17:04:52 674
|
||||
WRITE HELPRXSO W1 V 78 1994-01-10 17:06:12 1231
|
||||
VERSION HELPRXSO W1 V 78 1994-01-10 17:06:11 1071
|
||||
TERMINAT HELPRXSO W1 V 79 1994-01-10 17:06:10 1311
|
||||
TAKESOCK HELPRXSO W1 V 78 1994-01-10 17:06:09 1631
|
||||
SOCKETSE HELPRXSO W1 V 79 1994-01-10 17:06:00 2591
|
||||
SOCKET HELPRXSO W1 V 77 1994-01-10 17:05:59 1631
|
||||
SHUTDOWN HELPRXSO W1 V 78 1994-01-10 17:05:59 1151
|
||||
SETSOCKO HELPRXSO W1 V 78 1994-01-10 17:05:58 1871
|
||||
SENDTO HELPRXSO W1 V 79 1994-01-10 17:05:57 1471
|
||||
SEND HELPRXSO W1 V 77 1994-01-10 17:05:56 1391
|
||||
SELECT HELPRXSO W1 V 78 1994-01-10 17:05:55 1791
|
||||
RESOLVE HELPRXSO W1 V 77 1994-01-10 17:05:53 1551
|
||||
RECVFROM HELPRXSO W1 V 78 1994-01-10 17:05:52 1711
|
||||
RECV HELPRXSO W1 V 78 1994-01-10 17:05:51 1551
|
||||
READ HELPRXSO W1 V 77 1994-01-10 17:05:49 1471
|
||||
LISTEN HELPRXSO W1 V 79 1994-01-10 17:05:48 1151
|
||||
IOCTL HELPRXSO W1 V 78 1994-01-10 17:05:46 1631
|
||||
INITIALI HELPRXSO W1 V 79 1994-01-10 17:05:45 1711
|
||||
GIVESOCK HELPRXSO W1 V 78 1994-01-10 17:05:45 1551
|
||||
GETSOCKO HELPRXSO W1 V 78 1994-01-10 17:05:44 1951
|
||||
GETSOCKN HELPRXSO W1 V 79 1994-01-10 17:05:32 1151
|
||||
GETSERVB HELPRXSO W1 V 74 1994-01-10 17:05:32 1231
|
||||
GETPROTO HELPRXSO W1 V 73 1994-01-10 17:05:31 1071
|
||||
GETPEERN HELPRXSO W1 V 79 1994-01-10 17:05:29 1071
|
||||
GETHOSTN HELPRXSO W1 V 76 1994-01-10 17:05:28 991
|
||||
GETHOSTI HELPRXSO W1 V 79 1994-01-10 17:05:26 991
|
||||
GETHOSTB HELPRXSO W1 V 77 1994-01-10 17:05:25 1711
|
||||
GETDOMAI HELPRXSO W1 V 76 1994-01-10 17:05:24 1071
|
||||
GETCLIEN HELPRXSO W1 V 78 1994-01-10 17:05:23 1311
|
||||
FCNTL HELPRXSO W1 V 78 1994-01-10 17:05:22 1391
|
||||
CONNECT HELPRXSO W1 V 79 1994-01-10 17:05:21 1631
|
||||
CLOSE HELPRXSO W1 V 78 1994-01-10 17:05:19 911
|
||||
BIND HELPRXSO W1 V 78 1994-01-10 17:05:18 1471
|
||||
ACCEPT HELPRXSO W1 V 79 1994-01-10 17:05:17 1471
|
||||
RXSOCKET HELPTASK W1 V 80 1994-01-10 17:06:13 2191
|
||||
RXSOCKET HOWMVS W1 F 80 1994-06-06 21:17:51 751
|
||||
RXSOCKET TXTMVS W1 F 80 1994-03-14 14:10:24 57720
|
||||
WRITESRV EXEC W1 V 115 1993-11-29 12:44:49 3311
|
||||
TACACSD EXEC W1 V 77 1995-06-09 17:35:30 5358
|
||||
RACROUTE ASSEMBLE W1 F 1024 1994-09-27 14:08:04 8185
|
||||
RACROUTE MODULE W1 V 2120 1993-11-08 14:30:55 1684
|
||||
TALK EXEC W1 V 93 1994-12-07 14:22:05 10087
|
||||
EC2AC EXEC W1 F 80 1994-08-17 12:39:07 958
|
||||
AC2EC EXEC W1 F 80 1994-08-17 12:22:55 958
|
||||
WRITE EXEC W1 V 115 1994-02-16 13:53:35 4111
|
||||
NFTP EXEC W1 V 95 1993-10-20 16:20:40 4594
|
||||
TALKD EXEC W1 V 130 1993-07-17 11:11:04 4620
|
||||
SYSLOGD EXEC W1 V 78 1995-06-09 17:41:32 3708
|
||||
TCPLOGD NAMES W1 V 75 1995-06-09 17:47:27 985
|
||||
NFSUTIL EXEC W1 F 80 1995-06-09 17:48:24 20226
|
||||
609
vm.modules/rxsocket.read-me
Normal file
609
vm.modules/rxsocket.read-me
Normal file
@ -0,0 +1,609 @@
|
||||
TCP/IP Socket support function for REXX (Rxsocket & Rexxwait)
|
||||
Arty Ecock <eckcu@cunyvm.cuny.edu>
|
||||
CUNY
|
||||
|
||||
|
||||
Last revised: 17 February 1993
|
||||
|
||||
This file contains tips for converting applications from
|
||||
RXSOCKET Version 1 to RXSOCKET Version 2.
|
||||
|
||||
A word about defaults:
|
||||
----------------------
|
||||
|
||||
RXSOCKET Version 2 reads the TCPIP DATA file in order to establish
|
||||
non-default values for such things as the TCP/IP server userid,
|
||||
the Name Server IP addresses to use for name resolution, the local
|
||||
Domain Origin, Resolver Timeout value, etc.
|
||||
|
||||
If the TCPIP DATA file is *NOT* available, the following defaults are
|
||||
used:
|
||||
|
||||
TCPIPuserid TCPIP
|
||||
HostName (the value returned from the TCPIP server)
|
||||
DomainOrigin (null string)
|
||||
NSinterAddr 14.0.0.0
|
||||
NSportAddr 53
|
||||
ResolveVia UDP
|
||||
ResolverTimeout 30
|
||||
ResolverUdpRetries 1 (not fully supported; soon, though)
|
||||
|
||||
The value of "TCPIPuserid" can be overridden by specifying a value for
|
||||
the fourth argument of an "Initialize" subfunction:
|
||||
|
||||
Parse Value Socket('Initialize', 'Test', 40, 'TCPIPTST') With rc ...
|
||||
-or-
|
||||
Parse Value Socket('Initialize', 'Test', ,'TCPIPTST') With rc ...
|
||||
|
||||
RXSOCKET Version 2 uses a specific hierarchy when searching for an
|
||||
appropriate set of ASCII/EBCDIC translate tables. Using the example
|
||||
"Initialize" subfunction above, the following translate tables are
|
||||
sought: (the first table found is used)
|
||||
|
||||
1) "TEST TCPXLBIN *". Note that the socket-set name "Test" has
|
||||
been upper-cased.
|
||||
|
||||
2) If not found, RXSOCKET searches for "userid TCPXLBIN *", where
|
||||
"userid" is the VM userid using RXSOCKET.
|
||||
|
||||
3) If not found, RXSOCKET searches for "STANDARD TCPXLBIN *".
|
||||
(STANDARD TCPXLBIN is usually supplied with VM TCP/IP on the
|
||||
TCPMAINT 592 minidisk.)
|
||||
|
||||
4) Then "RXSOCKET TCPXLBIN *". These tables are *IDENTICAL* to
|
||||
the tables that are hard-coded into RXSOCKET.
|
||||
|
||||
RXSOCKET TCPXLATE contains the source version of these translate
|
||||
tables. This file is converted to RXSOCKET TCPXLBIN by using the
|
||||
CONVXLAT MODULE supplied with TCP/IP (on the TCPMAINT 592 disk).
|
||||
|
||||
RXSOCKET TCPXLATE and STANDARD TCPXLATE can be used as templates
|
||||
for cistomizing your own translate tables.
|
||||
|
||||
5) If none of these tables are found, an internal set of ASCII/EBCDIC
|
||||
translate tables are used.
|
||||
|
||||
STANDARD TCPXLBIN is usually suitable for most applications. Problems
|
||||
with square brackets, for example, can usually be overcome by creating
|
||||
a customized TCPXLBIN file.
|
||||
|
||||
|
||||
A word about the format of the new result string:
|
||||
-------------------------------------------------
|
||||
|
||||
In RXSOCKET, the result of a SOCKET function call is always a character
|
||||
string. This string usually contains several items. The first item
|
||||
will always be a return code value. A return code of "0" indicates that
|
||||
the function call completed without error. The remaining items in the
|
||||
result string contain function-specific values.
|
||||
|
||||
Example 1:
|
||||
Parse Value Socket('Initialize', 'Test') With rc sockset count server
|
||||
|
||||
might yield:
|
||||
|
||||
rc = "0" Return code "0" (Success)
|
||||
sockset = "Test" The name of this socket-set
|
||||
count = "40" Default number of sockets available
|
||||
server = "TCPIP" Default TCP/IP server userid
|
||||
|
||||
Example 2:
|
||||
Call Socket 'Initialize', 'Test'
|
||||
Parse Var result rc sockset count server
|
||||
|
||||
should yield the same values. (Remember that the "result" variable
|
||||
is set by REXX when you "Call" a REXX function.)
|
||||
|
||||
If the return code value is other than "0", an error is indicated. In
|
||||
such a case, the second item in the result string corresponds to an
|
||||
"Errno Value" as described in Chapter 3 of the IBM TCP/IP Programmer's
|
||||
Reference manual. "EBADF", "EWOULDBLOCK", "EFAULT", "ENOPROTOOPT" and
|
||||
"EINVALIDRXSOCKETCALL" are a few of the possible values. The remaining
|
||||
items (words) of the result string describe the error in more
|
||||
understandable terms (I hope).
|
||||
|
||||
Examples:
|
||||
"9 EBADF Bad file number"
|
||||
"35 EWOULDBLOCK Operation would block"
|
||||
"36 EINPROGRESS Operation now in progress"
|
||||
"60 ETIMEDOUT Connection timed out"
|
||||
"61 ECONNREFUSED Connection refused"
|
||||
|
||||
Note that rc=36 is not necessarily an error condition.
|
||||
"EINPROGRESS" may be returned for certain operations on non-blocking
|
||||
sockets.
|
||||
|
||||
See Chapter 3 of the IBM TCP/IP Programmer's Reference manual for
|
||||
information on which "Errno Values" correspond to which socket calls.
|
||||
|
||||
Thus, you must take care when parsing the result of a RXSOCKET
|
||||
subfunction. Using a trailing "." on a "Parse" statement may cause
|
||||
you to lose the descriptive text in the case of an error.
|
||||
|
||||
Example 1:
|
||||
Parse Value Socket('Close', socket) With rc .
|
||||
|
||||
If "rc" was not "0" then the "Errno Value" and descriptive text of
|
||||
the error will be lost.
|
||||
|
||||
Example 2:
|
||||
Parse Value Socket('Close', socket) With rc rest
|
||||
|
||||
In this case, the "rest" variable will contain both
|
||||
"Errno Value" and descriptive text when rc is not "0".
|
||||
|
||||
Example 3:
|
||||
Parse Value Socket('Close', socket) With result
|
||||
Parse Var result rc .
|
||||
If rc^=0 Then Do
|
||||
Parse Var result errno errno_value errno_text
|
||||
...
|
||||
End
|
||||
|
||||
-or-
|
||||
|
||||
Call Socket 'Close', socket
|
||||
Parse Var result rc .
|
||||
If rc^=0 Then Do
|
||||
Parse Var result errno errno_value errno_text
|
||||
...
|
||||
End
|
||||
|
||||
This is fine if you like to use many "Parse" statements.
|
||||
|
||||
Example 4:
|
||||
Parse Value Socket('Close', socket) With result
|
||||
If Word(result,1)^=0 Then Do
|
||||
Say TcpError("Error during Close")
|
||||
Call Exit
|
||||
End
|
||||
|
||||
-or-
|
||||
|
||||
Parse Value Socket('Close', socket) With rc .
|
||||
If rc^=0 Then Do
|
||||
Say TcpError("Error during Close")
|
||||
Call Exit
|
||||
End
|
||||
|
||||
The former is nice, but the latter is my personal favorite.
|
||||
The "TcpError" call in this example would yield:
|
||||
|
||||
"Error during Close:" errno_text
|
||||
|
||||
where "errno_text" is the descriptive text associated with the
|
||||
errno value.
|
||||
|
||||
Example:
|
||||
"Error during Close: Bad file number"
|
||||
|
||||
There's also less parsing, fuss, and mess with this example.
|
||||
|
||||
|
||||
Comparison of RXSOCKET Version 2 functions to Version 1
|
||||
-------------------------------------------------------
|
||||
|
||||
The Version 2 function and result string will be listed first,
|
||||
followed by the Version 1 function call.
|
||||
|
||||
|
||||
function: Socket('Initialize', subtaskid, <maxdesc>, <serverid>)
|
||||
result: rc subtaskid maxdesc serverid
|
||||
|
||||
Version1: rc = Socket('Initialize', subtaskid, serverid, maxdesc)
|
||||
|
||||
Note: "maxdesc" and "serverid" have swapped places in
|
||||
RXSOCKET Version 2.
|
||||
"rc" is no longer set to the "maxdesc" value.
|
||||
|
||||
|
||||
function: Socket('Accept', socket)
|
||||
result: rc newsocket name
|
||||
|
||||
Version1: rc = Socket('Accept', socket, name)
|
||||
|
||||
Note: "name" has been moved into the result string.
|
||||
"name" is now returned as "AF_INET port nnn.nnn.nnn.nnn".
|
||||
"rc" is no longer set to the "newsocket" number.
|
||||
|
||||
|
||||
function: Socket('Bind', socket, name)
|
||||
result: rc
|
||||
|
||||
Version1: rc = Socket('Bind', socket, name)
|
||||
|
||||
Note: "name" is now specified as "AF_INET port ipaddr|hostname"
|
||||
|
||||
Examples:
|
||||
"AF_INET INPORT_ANY CUNYVM"
|
||||
"AF_INET 123 CUNYVM.CUNY.EDU"
|
||||
"AF_INET 0 CUNYVM.CUNY.EDU"
|
||||
"AF_INET 42 128.228.1.2"
|
||||
"AF_INET 12 INADDR_ANY"
|
||||
"AF_INET"
|
||||
"AF_INET 77"
|
||||
"AF_INET INPORT_ANY INADDR_ANY"
|
||||
"AF_INET INPORT_ANY ANY"
|
||||
"AF_INET ANY ANY"
|
||||
"AF_INET 23 LOOPBACK"
|
||||
"AF_INET INPORT_ANY INADDR_BROADCAST"
|
||||
"AF_INET INPORT_ANY BROADCAST"
|
||||
|
||||
You get the idea :-)
|
||||
|
||||
|
||||
function: Socket('Close', socket)
|
||||
result: rc
|
||||
|
||||
Version1: rc = Socket('Close', socket)
|
||||
|
||||
|
||||
function: Socket('Connect', socket, name)
|
||||
result: rc
|
||||
|
||||
Version1: rc = Socket('Connect', socket, name)
|
||||
|
||||
Note: "name" is now specified as "AF_INET port ipaddr|hostname".
|
||||
|
||||
|
||||
function: Socket('Fcntl', socket, cmd, <data>)
|
||||
result: rc <data>
|
||||
|
||||
Version1: rc = Socket('Fcntl', socket, cmd, data)
|
||||
|
||||
Note: "Blocking" and "Non-Blocking" have been added as
|
||||
permissible values for "data".
|
||||
"rc" is no longer set to the value of "data" (in the
|
||||
case of "F_GETFL").
|
||||
|
||||
|
||||
function: Socket('GetClientId', <domain>)
|
||||
result: rc clientid
|
||||
|
||||
Version1: rc = Socket('GetClientId', domain, clientid)
|
||||
|
||||
Note: "clientid" has been moved into the result string.
|
||||
|
||||
|
||||
function: Socket('GetDomainName')
|
||||
result: rc domain
|
||||
|
||||
No corresponding RXSOCKET Version 1 subfunction.
|
||||
The Version 1 GetHostName used to append the domain
|
||||
origin to the host name. The "GetDomainName" subfunction
|
||||
has been added to return the domain origin string.
|
||||
"GetHostName" has been changed to return just the host
|
||||
name.
|
||||
|
||||
|
||||
function: Socket('GetDTableSize') not implemented in RXSOCKET Version 2
|
||||
|
||||
Version1: rc = Socket('GetDTableSize')
|
||||
|
||||
The number of sockets for a specified socket set may be
|
||||
obtained using the "SocketSetStatus" subfunction. The
|
||||
number of sockets is also returned in the result string
|
||||
of the "Initialize" subfunction.
|
||||
|
||||
|
||||
function: Socket('GetHostByAddr', ipaddr)
|
||||
result: rc hostname
|
||||
|
||||
Version1: rc = Socket('GetHostByAddr', hostaddr, hostname)
|
||||
|
||||
Note: "hostname" has been moved into the result string.
|
||||
|
||||
|
||||
function: Socket('GetHostByName', hostname)
|
||||
result: rc ipaddr1 ipaddr2 ... ipaddrN
|
||||
|
||||
Version1: rc = Socket('GetHostByName', hostname)
|
||||
|
||||
Note: "rc" is no longer set to the "ipaddr" value. The
|
||||
result string may contain a list of "ipaddr" values.
|
||||
If the specified hostname is not multi-homed, then
|
||||
a single "ipaddr" value is returned (in the form:
|
||||
"nnn.nnn.nnn.nnn").
|
||||
|
||||
|
||||
function: Socket('GetHostId')
|
||||
result: rc ipaddr
|
||||
|
||||
Version1: rc = Socket('GetHostId')
|
||||
|
||||
Note: "rc" is no longer set to the "ipaddr" value.
|
||||
"ipaddr" is returned in the form "nnn.nnn.nnn.nnn".
|
||||
|
||||
|
||||
function: Socket('GetHostName')
|
||||
result: rc hostname
|
||||
|
||||
Version1: rc = Socket('GetHostName', hostname)
|
||||
|
||||
Note: "hostname" has been moved into the result string.
|
||||
"hostname" is returned as the "HostName" value from
|
||||
TCPIP DATA (or the value obtained from the TCPIP
|
||||
server) *WITHOUT* the Domain Origin string appended.
|
||||
|
||||
|
||||
function: Socket('GetPeerName', socket)
|
||||
result: rc name
|
||||
|
||||
Version1: rc = Socket('GetPeerName', socket, name)
|
||||
|
||||
Note: "name" has been moved into the result string.
|
||||
"name" is now returned as "AF_INET port nnn.nnn.nnn.nnn".
|
||||
|
||||
|
||||
function: Socket('GetProtoByName', protocol_name)
|
||||
result: rc protocol_number
|
||||
|
||||
No corresponding RXSOCKET Version 1 subfunction.
|
||||
|
||||
|
||||
function: Socket('GetProtoByNumber', protocol_number)
|
||||
result: rc protocol_name
|
||||
|
||||
No corresponding RXSOCKET Version 1 subfunction.
|
||||
|
||||
|
||||
function: Socket('GetServByName', service_name, <service_protocol>)
|
||||
result: rc service_name service_port service_protocol
|
||||
|
||||
No corresponding RXSOCKET Version 1 subfunction.
|
||||
*All* values listed in RFC1340 for "service_name" are
|
||||
supported. See "well known ports" in RFC1340.
|
||||
|
||||
function: Socket('GetServByPort', service_port, <service_protocol>)
|
||||
result: rc service_name service_port service_protocol
|
||||
|
||||
No corresponding RXSOCKET Version 1 subfunction.
|
||||
*All* values listed in RFC1340 for "service_port" are
|
||||
supported. See "well known ports" in RFC1340.
|
||||
|
||||
|
||||
function: Socket('GetSockName', socket)
|
||||
result: rc name
|
||||
|
||||
Version1: rc = Socket('GetSockName', socket, name)
|
||||
|
||||
Note: "name" has been moved into the result string.
|
||||
"name" is now returned as "AF_INET port nnn.nnn.nnn.nnn".
|
||||
|
||||
|
||||
function: Socket('GetSockOpt', socket, level, optname)
|
||||
result: rc optval
|
||||
|
||||
Version1: rc = Socket('GetSockOpt', socket, level, optname, optval)
|
||||
|
||||
Note: "optval" has been moved into the result string.
|
||||
Values for "optval" are now returned in a more
|
||||
human-usable format.
|
||||
|
||||
|
||||
function: Socket('GiveSocket', socket, clientid)
|
||||
result: rc
|
||||
|
||||
Version1: rc = Socket('GiveSocket', socket, clientid)
|
||||
|
||||
Note: This subfunction now works.
|
||||
"clientid" is now specified as "AF_INET subtaskid userid".
|
||||
|
||||
|
||||
function: Socket('Ioctl', socket, cmd, <data>)
|
||||
result: rc <data>
|
||||
|
||||
Version1: rc = Socket('Ioctl', socket, cmd, data)
|
||||
|
||||
Note: This subfunction now works.
|
||||
Values for "data" are now accepted and returned in a
|
||||
more human-usable format.
|
||||
|
||||
|
||||
function: Socket('Listen', socket, <backlog>)
|
||||
result: rc
|
||||
|
||||
Version1: rc = Socket('Listen', socket, backlog)
|
||||
|
||||
Note: "backlog" now defaults to "10".
|
||||
|
||||
|
||||
function: Socket('Path') removed from RXSOCKET Version 2
|
||||
|
||||
Version1: rc = Socket('Path', subtaskid)
|
||||
|
||||
Note: This function has been renamed to "SocketSet".
|
||||
|
||||
|
||||
function: Socket('Read', socket, <length>)
|
||||
result: rc length data
|
||||
|
||||
Version1: rc = Socket('Read', socket, data, length)
|
||||
|
||||
Note: "rc" is no longer set to the number of bytes read.
|
||||
"length" defaults to "10000", with a maximum value
|
||||
of "100000".
|
||||
"data" has been moved into the result string.
|
||||
|
||||
|
||||
function: Socket('Recv', socket, <length>, <flags>)
|
||||
result: rc length data
|
||||
|
||||
Version1: rc = Socket('Recv', socket, data, length, flags)
|
||||
|
||||
Note: "rc" is no longer set to the number of bytes read.
|
||||
"length" defaults to "10000", with a maximum value
|
||||
of "100000".
|
||||
"data" has been moved into the result string.
|
||||
"flags" may now contain more than a single value.
|
||||
|
||||
|
||||
function: Socket('RecvFrom', socket, <length>, <flags>)
|
||||
result: rc name length data
|
||||
|
||||
Version1: rc = Socket('RecvFrom', socket, data, length, flags, name)
|
||||
|
||||
Note: "rc" is no longer set to the number of bytes read.
|
||||
"length" defaults to "10000", with a maximum value
|
||||
of "100000".
|
||||
"data" has been moved into the result string.
|
||||
"name" has been moved into the result string.
|
||||
"flags" may now contain more than a single value.
|
||||
|
||||
|
||||
function: Socket('Resolve', ipaddr|hostname, <timeout>)
|
||||
result: rc ipaddr hostname
|
||||
|
||||
No corresponding RXSOCKET Version 1 subfunction.
|
||||
|
||||
Note: I use "Resolve" instead of "GetHostByAddr" and
|
||||
"GetHostByName" since "Resolve" does not care
|
||||
whether its input is an IP address or a hostname.
|
||||
"timeout" allows you to override the "ResolverTimeout"
|
||||
value in TCPIP DATA.
|
||||
|
||||
|
||||
function: Socket('Select', 'Read n Write n Exception n', <timeout>)
|
||||
result: rc numready READ n n WRITE n n n EXCEPTION n
|
||||
|
||||
Version1: rc = Socket('Select', nfds, rmask, wmask, xmask, timeout)
|
||||
|
||||
Note: All the bitmask manipulation functions (FD_SET, FD_CLR,
|
||||
etc.) have been removed.
|
||||
Specifying "0" as a value for "n" still refers to the
|
||||
console ("Read 0" means, "wait for a Console Attention").
|
||||
REXXWAIT is far superior in function to "Select"
|
||||
("Wait('Cons Time 5 Seconds Socket' socket 'SMSG')" is
|
||||
certainly lots more versatile.)
|
||||
"Select" is handy for applications that don't require
|
||||
enhanced "wait" facilities.
|
||||
|
||||
|
||||
function: Socket('Send', socket, data, <flags>)
|
||||
result: rc length
|
||||
|
||||
Version1: rc = Socket('Send', socket, data, flags)
|
||||
|
||||
Note: "rc" is no longer set to the number of bytes transmitted.
|
||||
|
||||
|
||||
function: Socket('SendTo', socket, data, <flags>, name)
|
||||
result: rc length
|
||||
|
||||
Version1: rc = Socket('SendTo', socket, data, flags, name)
|
||||
|
||||
Note: "rc" is no longer set to the number of bytes transmitted.
|
||||
"name" is now specified as "AF_INET port ipaddr|hostname".
|
||||
|
||||
|
||||
function: Socket('SetSockOpt', socket, level, optname, optval)
|
||||
result: rc
|
||||
|
||||
Version1: rc = Socket('SetSockOpt', socket, level, optname, optval)
|
||||
|
||||
Note: "optval" can now be expressed in a more human-usable
|
||||
format.
|
||||
An "optname" of "SO_ASCII" indicates that the data
|
||||
flowing across the socket should be "ASCII". Please
|
||||
note that RXSOCKET Version 1 used "SO_EBCDIC" for
|
||||
this purpose. "SO_EBCDIC" now indicates that the
|
||||
data flowing across the socket is EBCDIC and is to
|
||||
be treated as such. "So_ASCII" set to "On" forces
|
||||
data translation to and from EBCDIC (thus allowing
|
||||
ASCII data to flow across the socket).
|
||||
|
||||
|
||||
function: Socket('ShutDown', socket, <how>)
|
||||
result: rc
|
||||
|
||||
Version1: rc = Socket('ShutDown', socket, how)
|
||||
|
||||
Note: "how" now defaults to "BOTH" (instead of "FROM").
|
||||
|
||||
|
||||
function: Socket('Socket', <domain>, <type>, <protocol>)
|
||||
result: rc newsocket
|
||||
|
||||
Version1: rc = Socket('Socket', domain, type, protocol)
|
||||
|
||||
Note: "rc" is no longer set to the value of "newsocket".
|
||||
"domain" defaults to "AF_INET".
|
||||
"type" defaults to "Sock_Stream".
|
||||
"protocol" defaults to "IPPROTO_TCP".
|
||||
|
||||
|
||||
function: Socket('SocketSet', <subtaskid>)
|
||||
result: rc subtaskid
|
||||
|
||||
Version1: rc = Socket('Path', subtaskid)
|
||||
|
||||
Note: When switching to a new socket set, the name of the
|
||||
previously active socket set is returned. This makes
|
||||
it easier to switch back if switching between many
|
||||
socket sets. If switching between 2 socket sets,
|
||||
you needn't bother remembering the previously active
|
||||
socket set name, since RXSOCKET maintains socket sets
|
||||
on a push-down stack in Least Recently Used order.
|
||||
|
||||
|
||||
function: Socket('SocketSetList')
|
||||
result: rc subtaskid1 subtaskid2 ... subtaskidN
|
||||
|
||||
No corresponding RXSOCKET Version 1 subfunction.
|
||||
|
||||
|
||||
function: Socket('SocketSetStatus', <subtaskid>)
|
||||
result: rc subtaskid status <connectinfo>|<reason>
|
||||
|
||||
No corresponding RXSOCKET Version 1 subfunction.
|
||||
|
||||
|
||||
function: Socket('TakeSocket', clientid, hissocket)
|
||||
result: rc newsocket
|
||||
|
||||
Version1: rc = Socket('TakeSocket', clientid, hissocket)
|
||||
|
||||
Note: This subfunction now works.
|
||||
"rc" is no longer set to the value of "newsocket".
|
||||
"clientid" is now specified as "AF_INET subtaskid userid".
|
||||
|
||||
|
||||
function: Socket('Terminate', <subtaskid>)
|
||||
result: rc subtaskid
|
||||
|
||||
Version1: rc = Socket('Terminate', subtaskid)
|
||||
|
||||
Note: if "subtaskid" is omitted, the "active" socket set
|
||||
is terminated. In any case, the name of the terminated
|
||||
socket set is returned in the result string.
|
||||
|
||||
|
||||
function: Socket('Version')
|
||||
result: rc REXX/SOCKETS version date
|
||||
|
||||
rs = Socket('Version')
|
||||
|
||||
Note: "rs" is similar in format to the result string.
|
||||
The associated "version" values. of course, differ.
|
||||
|
||||
|
||||
function: Socket('Write', socket, data)
|
||||
result: rc length
|
||||
|
||||
Version1: rc = Socket('Write', socket, data)
|
||||
|
||||
Note: "rc" is no longer set to the number of bytes transmitted.
|
||||
|
||||
|
||||
A word from your sponsors:
|
||||
--------------------------
|
||||
|
||||
Rainer and I worked long and hard on this collaboration. We hope it
|
||||
was a successful one. We love feedback, comments and suggestions.
|
||||
I personally prefer chocolate.
|
||||
|
||||
Please let us know if you run into any problems with REXX/SOCKETS.
|
||||
|
||||
Cheers,
|
||||
Arty Ecock - CUNY/UCC
|
||||
Rainer Hauser - IBM, Zurich
|
||||
BIN
vm.modules/rxsocket.vmarc
Normal file
BIN
vm.modules/rxsocket.vmarc
Normal file
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user