{
{   The purpose of this procedure is to receive data on the
{ given global socket. If a non zero selection criteria is
{ specified, only data from the specified source will be received.
{ All other data will be discarded. If the receive queue is empty
{ all active UDP devices are scanned for a complete or partial message.
{ If a partial message is available
{ the current task will be suspended even if non-blocking interface
{ mode has been selected. The assumtion being that remaining data
{ will arrive soon.
{   If no data is available and the blocking interface mode has been
{ selected, the current task will be queued in  the receive queue.
{   If the receive queue is non empty, the current task will be
{ queued at the end of the receive queue only if blocking interface
{ mode has been selected. Otherwise, an appropriate error message will
{ be returned.
{   If the user cache has been enabled, the address of the source from
{ which the data was received and the associated device id is
{ stored in the user cache.
{
{       NLP$UDP_RECEIVE_DATA (GLOBAL_SOCKET_ID, TIME_STAMP, SELECTION_CRITERIA,
{             USER_CACHE_ENABLED, INTERFACE_MODE, INTERFACE_TIMEOUT, DATA,
{             FOREIGN_SOCKET, LOCAL_IP_ADDRESS, DATA_LENGTH, STATUS)
{
{ GLOBAL_SOCKET_ID: (input) This parameter specifies the global socket identifier.
{
{ TIME_STAMP: (input) This parameter specifies the value of the free running clock
{       at the time the job socket was created. This time stamp must match
{       the time stamp stored in the global socket.
{
{ SELECTION_CRITERIA: (input) This parameter specifies the port and IP adddress
{       of the source from which the data is to be received. A 0 port number
{       and/or IP address implies that data from all ports and/or IP addresses
{       should be received.
{
{ USER_CACHE_ENABLED: (input) This parameter specifies the user
{       cache enabled option for the socket.
{
{ INTERFACE_MODE: (input) This parameter specifies the interface
{       mode option for the given socket.
{
{ INTERFACE_TIMEOUT: (input) This parameter specifies the interface timeout option
{       for the given socket.
{
{ DATA: (input) This parameter specifies the user's data fragments to which the data
{       is to be delivered.
{
{ FOREIGN_SOCKET: (output) This parameter specifies the port number and IP address
{       of the source from which the data is received.
{
{ LOCAL_IP_ADDRESS: (output) This parameter specifies the IP address of the device
{       over which the data is received.
{
{ DATA_LENGTH: (output) This parameter specifies the length of the received data.
{
{ STATUS: (output) This parameter specifies the request status.
{       CONDITION:
{             nae$sk_data_area_too_small
{             nae$sk_no_data_available
{             nae$sk_receive_in_progress
{             nae$sk_socket_terminated
{             nae$sk_unknown_socket
{
