{
{    The purpose of this procedure is to receive data from a TCP socket.  The
{ data will be transferred to the user's buffer until the buffer is full or the
{ next byte of data belongs to an urgent message or a push flag has been
{ detected.  However, if the user's buffer is not full and no more data is
{ available and the interface mode is blocking, the caller is blocked until
{ enough data is available to complete the request or the interface timeout
{ (specified via the set socket options request) expires.  If the non-blocking
{ mode has been selected (via set socket options request), control is returned
{ to the user with an appropriate status and an indication of the actual number
{ of bytes delivered.
{
{    This request is valid only for a TCP accept or connect socket.
{
{       NAP$SK_READ_SOCKET (SOCKET_ID, URGENT_FLAG, DATA, DATA_TRANSFERRED,
{             STATUS)
{
{ SOCKET_ID: (input)  This parameter specifies the identifier of the socket
{       from which data is to be received.
{
{ URGENT_FLAG: (output)  This parameter specifies the priority associated with
{       the received data.
{
{ DATA: (input, output)  This parameter specifies the list of data buffers to
{       hold the data.
{
{ DATA_TRANSFERRED: (output)  This parameter specifies the number of bytes of
{       data placed in the user's buffer.
{
{ STATUS: (output) This parameter specifies the request status.
{       CONDITION:
{             nae$sk_data_area_too_small
{             nae$sk_incorrect_socket_type
{             nae$sk_interface_timeout
{             nae$sk_invalid_user
{             nae$sk_job_recovery
{             nae$sk_listen_already_active
{             nae$sk_no_data_available
{             nae$sk_read_in_progress
{             nae$sk_socket_closed_via_peer
{             nae$sk_socket_disconnected
{             nae$sk_socket_not_connected
{             nae$sk_socket_terminated
{             nae$sk_unbound_socket
{             nae$sk_unknown_socket
{
