View previous topic :: View next topic
|
Author |
Message |
dbzTHEdinosauer
Global Moderator
Joined: 20 Oct 2006 Posts: 6966 Location: porcelain throne
|
|
|
|
Dir Blk 50
how many members do you think can be added to your pds?
OR
how many members do you think your pds can contain? |
|
Back to top |
|
|
sandy257
New User
Joined: 03 Feb 2010 Posts: 19 Location: Pune
|
|
|
|
Sorry.. max dir blks is 100 |
|
Back to top |
|
|
sandy257
New User
Joined: 03 Feb 2010 Posts: 19 Location: Pune
|
|
|
|
I think the max number of members that can be contained in my PDS is 600? Even if the dir blk size is 50; I think it wiuld have accomodated 300 members. |
|
Back to top |
|
|
dick scherrer
Moderator Emeritus
Joined: 23 Nov 2006 Posts: 19244 Location: Inside the Matrix
|
|
|
|
Hello,
Quote: |
And while you reply with the space clarification, you should also mention how many records are to be loaded. . . |
The allocation information has still not been posted. . .
The best way to get help is to provide requested info on the first request - not the third request.
Suggest you become comfortable with the "Code" tag - this will preserve alignment and inprove readability.
With the tso/ispf editor (not some code), try to create 100 members in your pds and tell us what happens. |
|
Back to top |
|
|
enrico-sorichetti
Superior Member
Joined: 14 Mar 2007 Posts: 10873 Location: italy
|
|
|
|
still I do not see any need to clobber the script with the LM**** stuff!
the simple flow should be ...
allocate and read the input file
process each record stacking something
when some flag tells
allocate write close free the output dataset
after loop termination
if a dataset write is pending just
allocate write close free the output dataset for the last unprocessed chunk
no need to bother ISPF.
nor to change the DDNAME for the output. |
|
Back to top |
|
|
Pedro
Global Moderator
Joined: 01 Sep 2006 Posts: 2547 Location: Silicon Valley
|
|
|
|
I agree with Enrico that you should not mix EXECIO with LMMPUT on the same dataset. If you need the ISPF statistics, then do all with LMMPUT instead of EXECIO.
You are missing an END statement, likely belongs after QUEUE.
Your last member data will probably not get written. |
|
Back to top |
|
|
Pedro
Global Moderator
Joined: 01 Sep 2006 Posts: 2547 Location: Silicon Valley
|
|
|
|
Quote: |
Use PROFILE MSGID
and show us any messages you get. Also look in syslog for messages.
|
Sandy, you never showed us the actual messages that you are getting. |
|
Back to top |
|
|
sandy257
New User
Joined: 03 Feb 2010 Posts: 19 Location: Pune
|
|
|
|
If I use the code to populate the PDS with members and write just a blank line in each member my routine runs fine.
This way I created 57 members in the PDS.
I got the messgae "Unrecognised I/O error during Write" when trying to write data into each member.
LMPUT error statement was also provided
(I will try to type the detailed error statement tomorrow from Office - can't copy paste)
When I tried with an Input dataset with records meant for 4 members (approximately 100 records) this code worked fine as well.
For this reason I am more inclined to believe that I faced some kind of space abend.
Another information is I am trying to execute this code from ISPF by typing "EX" against the REXX member within the PDS where the REXX routine is stored. Is it possible that I am running out of virtual memory while executing in this way? |
|
Back to top |
|
|
Pedro
Global Moderator
Joined: 01 Sep 2006 Posts: 2547 Location: Silicon Valley
|
|
|
|
It is not clear what you are claiming is working correctly. I think this:
Code: |
"LMPUT DATAID("D") MODE(INVAR) DATALOC(DATAVAR) DATALEN(80)"
"LMMADD DATAID("D") MEMBER("COPYBKNM") STATS(NO)" |
Will create members that have only a single 80 byte line.
And this:
Code: |
part1:
DO
ADDRESS TSO
LINES = QUEUED()
"EXECIO " LINES " DISKW COPYF"K
"EXECIO 0 DISKW COPYF"K" (FINIS"
DELSTACK
K = K + 1
END
part2:
ADDRESS ISPEXEC
"LMPUT DATAID("D") MODE(INVAR) DATALOC(DATAVAR) DATALEN(80)"
"LMMADD DATAID("D") MEMBER("COPYBKNM") STATS(NO)"
|
has two parts:
part 1: writes a member with some unknown number of records
part 2: replaces all of the lines from part 1 with a single line.
Oh, and DATAVAR does not seem to be set, so you probably are not going to get any of the data that you want. |
|
Back to top |
|
|
sandy257
New User
Joined: 03 Feb 2010 Posts: 19 Location: Pune
|
|
|
|
Hi All.. thanks a lot for your time and patience. The problem has been resolved.
Special thanks to Enrico and Pedro to keep LM functions out and stick only to EXECIO. The code worked after I removed the LM functions.
Thanks a lot Pedro for pointing out that the last member will never get populated. I have modified my code accordingly. |
|
Back to top |
|
|
Marso
REXX Moderator
Joined: 13 Mar 2006 Posts: 1353 Location: Israel
|
|
|
|
And for good measure, I would add a
Code: |
"FREE FI(COPYF"K")" |
for each
Code: |
"ALLOC FI(COPYF"K")" |
just in case... |
|
Back to top |
|
|
sandy257
New User
Joined: 03 Feb 2010 Posts: 19 Location: Pune
|
|
|
|
Point taken Marso!!! |
|
Back to top |
|
|
|