View previous topic :: View next topic
|
Author |
Message |
Pedro
Global Moderator
Joined: 01 Sep 2006 Posts: 2594 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: 2594 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: 2594 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 |
|
|
|