E37 04 means that you ran out of space

                                                                                
  04        A data set opened for output used all space available to or on      
            the current volume, and no more volumes were available. Change      
            the JCL to specify more volumes.                                    
                                                                                
            1.  Not enough volumes were specified for the data set, through     
                the SER, volume count, or REF subparameter of the VOLUME        
                parameter of the DD statement.  When all the volumes were       
                filled, the program attempted to write another record.          
                                                                                
            2.  For a partitioned data set on a direct access volume or for     
                a VIO data set, all space was filled when the program           
                attempted to write another record.  (A partitioned data set     
                or a VIO data set can reside on only one volume with a          
                maximum of 65535 tracks.)                                       
        3.  For a partitioned data set on a direct access volume, 16        
         extents had been used when the program attempted to write       
        another record.                                                 

-----Original Message-----
From: IBM Mainframe Discussion List [mailto:[email protected]] On Behalf 
Of George Shedlock
Sent: Monday, August 26, 2013 2:21 PM
To: [email protected]
Subject: Rexx Execio to PDS

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

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

Reply via email to