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