The RECEIVE statement retrieves messages sent by other threads. 
               	 
            
 
            	 
            
               General Format
 
               		 
               		RECEIVE dest-item FROM { THREAD thread-1 }
                       { LAST THREAD     }
                       { ANY THREAD      } 
               		Remaining phrases are optional, can appear in any order. 
                  		
               
 
               		{ BEFORE TIME timeout }
{ WITH NO WAIT        }
THREAD IN thread-2
SIZE   IN size-item
STATUS IN status-item
[ ON EXCEPTION statement-1 ]
[ NOT ON EXCEPTION statement-2 ]
[ END-RECEIVE ] 
               	   
            	 
            
               Syntax Rules
 
               		 
               		
                
                  		  
                  - dest-item is any data item. 
                     		  
                  
  
                  		  
                  - thread-1 and 
                     			 thread-2 are usage HANDLE or HANDLE OF THREAD data items. 
                     			 thread-2 may not be indexed or reference modified. 
                     		  
                  
  
                  		  
                  - timeout is a numeric literal or data item. 
                     		  
                  
  
                  		  
                  - size-item is a numeric data item. It may not be indexed or reference modified. 
                     		  
                  
  
                  		  
                  - status-item is a two-character group item, PIC XX, or PIC 99 data item. It may not be indexed or reference modified. 
                     		  
                  
  
                  		  
                  - statement-1 and 
                     			 statement-2 are any imperative statements. 
                     		  
                  
  
                  		
               
 
               	 
              
            	 
            
               General Rules
 
               		 
               		
                
                  		  
                  - The RECEIVE statement returns the next available message into dest-item. Only messages from the proper source are allowed
                     as follows: 
                     			 
                     
 
                        				
                        - FROM THREAD 
                           				  thread-1 specifies that only messages from the thread identified by 
                           				  thread-1 are allowed. 
                           				
                        
  
                        				
                        - FROM LAST THREAD specifies that only messages from the last thread are allowed. See
                           				  Thread Fundamentals for more information. 
                           				
                        
  
                        				
                        - FROM ANY THREAD specifies that all messages are allowed. 
                           				
                        
  
                        			 
                     
 
                     		  
                    
                  		  
                  - Messages are received in the order sent. If a message is available when the RECEIVE statement executes, the RECEIVE statement
                     finishes immediately. Otherwise, the RECEIVE statement waits for a message to become available. This provides an efficient
                     method for threads to synchronize with each other. 
                     		  
                  
  
                  		  
                  - When BEFORE TIME is specified, the RECEIVE statement will time out after the specified (timeout) number of hundredths of seconds.
                     If the RECEIVE statement times out before receiving a message, it terminates with an exception condition and does not modify
                     
                     			 dest-item, 
                     			 thread-2, or 
                     			 size-item. If timeout is zero, then the RECEIVE statement times out immediately if a message is not available. Specifying NO WAIT is
                     equivalent to specifying a timeout value of zero. 
                     		  
                  
  
                  		  
                  - If no message is available and the sending thread (as specified by rule1 above) does not exist or terminates before sending
                     a message, the RECEIVE statement terminates with an exception condition and does not modify dest-item or 
                     			 size-item. This condition is reflected in the status placed in 
                     			 status-item. Note that the test occurs before the time-out test in the case that timeout is zero or NO WAIT is specified. 
                     		  
                  
  
                  		  
                  - The RECEIVE statement places the thread ID of the sending thread in 
                     			 thread-2. 
                     		  
                  
  
                  		  
                  - The size of the message sent is placed in 
                     			 size-item. The size is expressed in standard character positions (bytes). If the message is longer than 
                     			 dest-item, it is truncated. If the message is shorter than 
                     			 dest-item, it is padded on the right with spaces. 
                     		  
                  
  
                  		  
                  - The status of the RECEIVE statement is placed in 
                     			 status-item. The following values are possible (these approximate the standard file status codes): 
                     			 
                     
 
                        			 
                        
                            
                              				   
                              				   
                              				  
                               
                                 					 
                                  
                                    						
                                    | "00" 
                                       						
                                     |  
                                    						
                                    Success - message received 
                                       						
                                     |  
                                    					 
                                 
 
                                 					 
                                  
                                    						
                                    | "04" 
                                       						
                                     |  
                                    						
                                    Success - message received, but it was truncated 
                                       						
                                     |  
                                    					 
                                 
 
                                 					 
                                  
                                    						
                                    | "10" 
                                       						
                                     |  
                                    						
                                    Exception - sending thread does not exist or terminated 
                                       						
                                     |  
                                    					 
                                 
 
                                 					 
                                  
                                    						
                                    | "99" 
                                       						
                                     |  
                                    						
                                    Exception - timed out 
                                       						
                                     |  
                                    					 
                                 
 
                                 				  
                               
                              				
                           
                          
                        			 
                       
                     		  
                    
                  		  
                  -  If the RECEIVE statement is successful (as indicated in rule 7 above), 
                     			 statement-2 executes. If an exception condition is returned, 
                     			 statement-1 executes.