I have a very simple exec that has a pipe that, reduced to its simplest form, 
looks like this:

                /*  TEST EXEC */                                                
                
                ipaserver = 'IPSERV'                                            
      
                say 'IPSERV returned'  getip()                                  
                          
                exit                                                            
      
                                                                                
      
                getip:                                                          
      
                   'CP SET MSG IUCV'                                            
      
                   arg ipaddr .                                                 
      
                                                                                
      
                   'PIPE (end \ name GetIPA)',                                  
      
                   '\  starmsg *msgall cp smsg' ipaserver 'GETIP' ipaddr,       
      
                      '| pick substr w1 of 9-* == /'ipaserver'/',               
      
                      '| take 1',                                               
      
                      '| spec 17-* 1',                                          
      
                      '| b: beat 15 /-99 Timeout waiting for the IP Address 
server./',
                      '| fi: faninany',                                         
      
                      '| take 1',                                               
      
                      '| var ipresp',                                           
      
                      '| pipestop',                                             
      
                   '\ b:',                                                      
      
                      '| copy',                                                 
      
                      '| fi:'                                                   
      
                   parse var ipresp iprc ipresp  
                   if iprc ¬= 0 then call exit iprc, ipresp                 
                   return ipresp                                            
                                                                            
                exit:                              
                   parse arg myrc, msg                                      
                   if msg ¬= '' then say msg                                
                   exit myrc                                                    
                                 


If this EXEC is executed from the command line, the IP Address is returned as 
expected. It is also returned if called by another simple exec. If another exec 
is inserted into the mix, there is always an error that consists of the message 
from IPSERV being displayed on the console and, some seconds later, a timeout 
message from the above EXEC.

The two other EXECs do nothing other than call the next in line. Thus, TEST1 
consists of a 'EXEC TEST' command'; TEST2 consists of a 'EXEC TEST1' command. 
The 3 cases are:

1.      TEST command entered from the command line. (works - message trapped by 
the pipe)
2.      TEST1 entered from the command line. (works)
3.      TEST2 entered from the command line. (message is not trapped and a 
timeout occurs approximately 15 seconds after the message is displayed)

Is this normal? Or even explainable?

pipe q                                                                          
                                  
FPLINX086I CMS/TSO Pipelines, 5741-A05/5655-A17 1.0110 (Version.Release/Mod) - 
Generated 11 Oct 2005 at 12:04:21  
q cmslevel                      
CMS Level 22, Service Level 701


Regards, 
Richard Schuh 


Reply via email to