{
{    The purpose of this procedure is to send data to the given destination IP
{ address over the specified socket.  This procedure can be used by a client or
{ server application to send data to the peer using the UDP protocol.  If the
{ given socket has not been bound prior to this request, it is implicitly bound
{ to a unique port number and all the IP addresses known to the host.  The
{ unique port number is assigned by NAM/VE.
{
{    Note that if the socket is unbound, the user may experience an additional
{ delay to bind the socket.  This delay is due to the asynchronous interaction
{ between the NAM/VE socket layer and the UDP protocol layer.  The user can
{ avoid this delay on the initial send by explicitly binding the socket prior
{ to this request.
{
{    If the local IP address is specified, and the local IP address option has
{ been enabled (via the set socket options request), the data will be sent from
{ the specified IP address.  However, if a NULL value is specified for the
{ local IP address or the local IP address option has been disabled, the user
{ cache enabled option is examined.  If the user cache is enabled, the local IP
{ address from which the last datagram was sent or at which the last datagram
{ arrived, will be used for transferring data.  If the user cache has been
{ disabled (via the set socket options request), any one of the IP addresses to
{ which the socket is bound and from which the destination IP address can be
{ reached will be used.
{
{    Note that if the local socket had been bound by a previous request, the
{ local IP address must match the IP address (or match one of the list of IP
{ addresses) bound to the socket.
{
{    If sufficient resources are not available to send all the data and the
{ interface mode is blocking, the user will be blocked until resources become
{ available or the interface timeout (specified via the set socket options
{ request) expires.  If the interface mode is non-blocking (selected via the
{ set socket options request), control is returned immediately with an
{ appropriate status.
{
{    If sufficient resources are present, the user will be allowed to send a
{ maximum of 9000 bytes of data with non-blocking interface mode.  A request to
{ send messages larger than 9000 bytes with non-blocking interface mode will be
{ rejected.  The user should select an interface mode of blocking to send
{ messages larger than 9000 bytes.
{
{    This request is valid only for a UDP (datagram) socket.
{
{       NAP$SK_SEND_TO_SOCKET (SOCKET_ID, LOCAL_IP_ADDRESS, DESTINATION_SOCKET,
{             DATA, STATUS)
{
{ SOCKET_ID: (input)  This parameter specifies the identifier of the local UDP
{       socket.
{
{ LOCAL_IP_ADDRESS: (input)  This parameter specifies the local IP address from
{       which the data is to be sent.
{
{ DESTINATION_SOCKET: (input)  This parameter specifies the port number and the
{       IP address of the destination socket to which the data is to be sent.
{
{ DATA: (input)  This parameter specifies the list of data fragments to be
{       sent.
{
{ STATUS: (output) This parameter specifies the request status.
{       CONDITION:
{             nae$sk_incorrect_socket_type
{             nae$sk_insufficient_resources
{             nae$sk_interface_timeout
{             nae$sk_invalid_user
{             nae$sk_job_recovery
{             nae$sk_max_nonblock_size_exceed
{             nae$sk_send_in_progress
{             nae$sk_socket_disconnected
{             nae$sk_socket_terminated
{             nae$sk_unknown_socket
{             nae$sk_zero_length_data
{
