Gentle Listers;

I am trying to write a Rexx routine that takes in 3 arguments. First is DSN, 
second is Member name, third is a string of text. The string of text is the 
concatenation of lines delimited by a ";". (ex. "line1;line2;line3").

This code fails:

Write_Member:                                                           
  MyDSN = ARG(1)                                                        
  MyMember = ARG(2)                                                     
  MyArg = ARG(3)                                                        
  outstem.=0                                                            
  dsnname = MyDSN || '(' || MyMember || ')'                             
  Say 'The dsname is: {'dsnname'}'                                      
  do forever                                                            
      parse var MyArg  thisword ';' MyArg                               
      if thisword='' then leave                                         
      thisword = Left(thisword,80)                                      
      parse value outstem.0+1 thisword with t outstem.t =1 outstem.0 .  
      end                                                               
  Say 'Number of lines written: 'outstem.0                              
  "ALLOC DA('"dsnname"') F(Pdsout) OLD REUSE"                           
  "EXECIO * DISKW Pdsout (STEM outstem. FINIS"                          
  "FREE F(Pdsout)"                                                      
  Return                                                                

Failure:

The dsname is: :HLQ.TEST(MEM3):                                               
Number of lines written: 3                                                      
 
ACC20210-A ADDVOL FOR DD=PDSOUT DSN=HLQ.TEST VOL=S92248 POOL=TSOPOOL EXT=16   
ACC20628-A DATA SET IS PARTITIONED                                              
 
System abend code E37, reason code 00000004.                                    
 
Abend in host command EXECIO or address environment routine TSO.                
 
EXECIO error while trying to GET or PUT a record.                               
 

This code works:

Write_Member:                                                              
  MyDSN = ARG(1)                                                           
  MyMember = ARG(2)                                                        
  MyArg = ARG(3)                                                           
  outstem.=0                                                               
  dsnname = MyDSN || '(' || MyMember || ')'                                
  Say 'The dsname is: {'dsnname'}'                                         
  "ALLOC FI(PDS) DA('"dsnname"') OLD reuse"                                
  do forever                                                               
      parse var MyArg  thisword ';' MyArg                                  
      if thisword='' then leave                                            
      thisword = Left(thisword,80)                                         
      parse value outstem.0+1 thisword with t outstem.t =1 outstem.0 .     
      PUSH thisword                                                        
      "EXECIO 1 DISKW PDS "                                                
      end                                                                  
  "EXECIO 0 DISKW PDS (FINIS"                                              
  Say 'Number of lines written: 'outstem.0                                 
  "FREE FI(PDS)"
   Return            

The objective is to pass a stem for the third argument. 

Any suggestions on how to use the Execio with the stem value?

Show me the error of my ways.

George                                                          





----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN

Reply via email to