View previous topic :: View next topic
|
Author |
Message |
rahulgarg14
New User
Joined: 16 Apr 2007 Posts: 10 Location: gurgaon - india
|
|
|
|
Hi,
I am using a REXX tool creates member from input file as given below,
Let input file have following records,
. add Agent ID1
Rec1
Rec2
Rec3
.add Agent ID 2
Rec1
Rec2
.add Agent ID 3
Rec1
Rec2
Rec3
Rec4
Then it will create 3 output files as follows,
Outfile1.Agent ID1 --> will contain 3 records
Outfile2.Agent ID2 --> will contain 2 records
Outfile3.Agent ID3 --> will contain 4 records
i.e. agents IDs are suffixed in the file name.
Functioning of REXX tool is,
a) REXX tool allocates the file. Different file is allocated for different agent ID.
b) queue up 2000 record in stack
c) write the records in output file till EOF
Problem is that one of the agent ID contain lot of records around 4 Million. in that case REXX tool fails with Space abend. It is not able to allocate such huge file.
When I tested the tool in test environment It was working fine. but in production it fails.
TSO ALLOCATE statement used to allocate file is,
ALLOCATE DS('"PDSNM"') F(OUTMEM) MOD SPACE(200 100) CYLINDERS" DSORG("PS")" "LRECL("LRECL") BLOCK("BLK") RECFM("F B") DATAC("SCPHUGE") UNIT(SYSDA)"
can anybody please suggest work around for this. |
|
Back to top |
|
|
PeterHolland
Global Moderator
Joined: 27 Oct 2009 Posts: 2481 Location: Netherlands, Amstelveen
|
|
|
|
What are your LRECL and BLK values? |
|
Back to top |
|
|
Gary McDowell
Active User
Joined: 15 Oct 2012 Posts: 139 Location: USA
|
|
|
|
You may be able to change UNIT(SYSDA) to UNIT(SYSDA,2), or UNIT(SYSDA,3), etc. Not really sure. |
|
Back to top |
|
|
Akatsukami
Global Moderator
Joined: 03 Oct 2009 Posts: 1788 Location: Bloomington, IL
|
|
|
|
Note that ALLOC is a TSO command, not a Rexx statement. It would be helpful, Rahulgarg, if you told us just what abend (B37? D37? E37?) is occurring. |
|
Back to top |
|
|
Pedro
Global Moderator
Joined: 01 Sep 2006 Posts: 2547 Location: Silicon Valley
|
|
|
|
Quote: |
It is not able to allocate such huge file. |
I am pretty sure it is allocating the size that you requested, but you fill it up with too many records.
Part of the failure is that you do not know how to compute your space needs. How did you come up with SPACE(200 100) CYLINDERS?
Also, it looks like some quotes are missing:
Code: |
ALLOCATE DS('"PDSNM"') F(OUTMEM) MOD SPACE(200 100) CYLINDERS" DSORG("PS")" "LRECL("LRECL") BLOCK("BLK") RECFM("F B") DATAC("SCPHUGE") UNIT(SYSDA)" |
Are 'PS' and 'F' and 'B' really variables? Does your SYSDA pool have enough free space? |
|
Back to top |
|
|
dick scherrer
Moderator Emeritus
Joined: 23 Nov 2006 Posts: 19244 Location: Inside the Matrix
|
|
|
|
Hello,
Suggest you consider an implementation that does Not use REXX. REXX has introduced many performance issues when large volumes of data are used.
When testing there should have been full-bolume testing done - and should be in the future for this or any other "things". One of the causes of "worked in test, failed in production" is insufficient testing - which includes full-volume testing. |
|
Back to top |
|
|
|