View previous topic :: View next topic
|
Author |
Message |
sathyaraj
New User
Joined: 28 Sep 2007 Posts: 71 Location: India.
|
|
|
|
Hi,
I have a job whic creates a file in a REXX program in the first step.
I try to use that file in another program in the second step, and I get the message that the file is in use by some other user.
I used FINIS and FREE in my program but still am facing the issue.
Any insights please?
Thanks,
Sathya. |
|
Back to top |
|
|
dick scherrer
Moderator Emeritus
Joined: 23 Nov 2006 Posts: 19243 Location: Inside the Matrix
|
|
|
|
Hello,
If the first step has rexx code that creates the file and the step ends, the file should be free (whether it freed in the code or not - i believe).
How is the first step being executed? How is the second step being executed? Is it in fact a separate jcl step?
It may help if you post the jcl for the first step and the problem step. |
|
Back to top |
|
|
superk
Global Moderator
Joined: 26 Apr 2004 Posts: 4652 Location: Raleigh, NC, USA
|
|
|
|
Who is the file in use by? |
|
Back to top |
|
|
sathyaraj
New User
Joined: 28 Sep 2007 Posts: 71 Location: India.
|
|
|
|
Code: |
"ALLOC DA('XX.XX.XXXX.XXXXX') F(OUT)",
"NEW RECFM(F,B) DIR(0) SPACE(5,5) BLKS(10) LRECL(80)",
"BLKSIZE(27920) REUSE"
---
---
---
"EXECIO 6 DISKW OUT (STEM OUTPUT. FINIS"
"FREE F(OUT)"
|
This is my pgm. The file created in this step is FTPd in the next step.
And below is the error message.
Code: |
450 Data set tied up by another user
|
Any suggestions would be really helpful. I even tried using a LIMCOPY to copy this file to another file and then FTP it. But LIMCOPY doesnt work too.
Thanks,
Sathya |
|
Back to top |
|
|
kacks7
New User
Joined: 22 Sep 2010 Posts: 33 Location: chennai(india)
|
|
|
|
i think your program is stopped executing before freeing the file.
add one more line with 'say' something next to freeing the file and check are you getting the 'say' or not.
or
check with trace. |
|
Back to top |
|
|
sathyaraj
New User
Joined: 28 Sep 2007 Posts: 71 Location: India.
|
|
|
|
Bala,
I am using this program in a job. I wont be able to use the Trace option. But I already tried to trace it in online excecution and the control reaches to the statements below the free statement.
Thanks,
Sathya |
|
Back to top |
|
|
expat
Global Moderator
Joined: 14 Mar 2007 Posts: 8796 Location: Welsh Wales
|
|
|
|
sathyaraj wrote: |
I am using this program in a job. I wont be able to use the Trace option. |
Rubbish, of course you will be able to use TRACE |
|
Back to top |
|
|
sathyaraj
New User
Joined: 28 Sep 2007 Posts: 71 Location: India.
|
|
|
|
Sorry,
I was not aware that it could be done when running it in a job as well. Anyways I confirmed that control flows past the FREE statement. And that is not the purpose of this post. Please lets not argue with this.
If I have made something wrong with the way I coded or is there any restriction to use the file created in one step in the following steps please guide me on that.
I tried the same with a member of PDS and it works fine. Does that ring a bell somewhere?
Thanks,
Sathya. |
|
Back to top |
|
|
kacks7
New User
Joined: 22 Sep 2010 Posts: 33 Location: chennai(india)
|
|
|
|
Quote: |
Anyways I confirmed that control flows past the FREE statement.
|
may i know how you you confirmed that it executing beyond tat FREE??? |
|
Back to top |
|
|
enrico-sorichetti
Superior Member
Joined: 14 Mar 2007 Posts: 10886 Location: italy
|
|
|
|
did You check properly the return code from the free ??? |
|
Back to top |
|
|
sathyaraj
New User
Joined: 28 Sep 2007 Posts: 71 Location: India.
|
|
|
|
Hi,
I checked the return code after FREE and it is 0. Am compeltely clueless on what is holding the dataset back.
Thanks,
Sathya |
|
Back to top |
|
|
superk
Global Moderator
Joined: 26 Apr 2004 Posts: 4652 Location: Raleigh, NC, USA
|
|
|
|
I think we all need to take a few steps back on this topic. As Dick already stated originally, there's no possible way that a REXX exec that created a dataset in one step can have any exclusive control over it in an entire other step. I asked you for some proof that the exec has a hold on that dataset, and not some other process or user. I think you need to forget about this being a REXX issue and look somewhere else (i.e. the second step that you've referred to).
A few questions I have:
- Why are you creating a dataset in your exec with a TSO ALLOCATE command instead of using the JCL to do it? Where is there a CATALOG command? Is there more to the process that what you're showing us?
- Why do you need a seperate step to run an FTP? Why not put all of that process into a single exec? |
|
Back to top |
|
|
tomehta
New User
Joined: 18 Aug 2008 Posts: 98 Location: India
|
|
|
|
Hello All,
I am also getting a simialr problem.
Description :
In my rexx script
Step 1: I am deleting the dataset if it already exists
Code: |
IF SYSDSN(DMLGEN.OUTPUT1.DMLSTMTS) = OK THEN
"DELETE DMLGEN.OUTPUT1.DMLSTMTS" |
Step 2 : Then I allocate the dataset and write
Code: |
"ALLOC FILE (OUTDD) DATASET ('DMLGEN.OUTPUT1.DMLSTMTS') MOD REUSE"
"EXECIO * DISKW OUTDD ( STEM LN." |
Step 3 :
Then i close and free the dataset
Code: |
"EXECIO 0 DISKW OUTDD (FINIS"
"FREE F (OUTDD" |
However I get the below Error message, when some one else try to open the data set for viewing or browsing. The user who creates the data set is able to do all the operations on it.
Code: |
ISRD035 Data set 'T386796.DMLGEN.OUTPUT1.DMLSTMTS' in use by another user,
try later or enter HELP for a list of jobs and users allocated to
'T386796.DMLGEN.OUTPUT1.DMLSTMTS'.
|
Extended error message
Code: |
Data set 'T386796.DMLGEN.OUTPUT1.DMLSTMTS'
is in use by the following 1 user(s) and/or job(s):
----------------------------------------------------------------
T386796 |
Please advise. |
|
Back to top |
|
|
PeterHolland
Global Moderator
Joined: 27 Oct 2009 Posts: 2481 Location: Netherlands, Amstelveen
|
|
|
|
tomehta,
try using PROFILE NOPREFIX |
|
Back to top |
|
|
tomehta
New User
Joined: 18 Aug 2008 Posts: 98 Location: India
|
|
|
|
Hi
I did a work around like below which somehow is working, (no sure how )
Code: |
IF PS_STATUS = OK THEN
"ALLOC FILE (OUTDD) DATASET ('"PS"') MOD REUSE"
ELSE
DO
"ALLOC DA ('"PS"') NEW F(OUTDD)",
"SPACE(50,20) DSORG(PS) RECFM(F,B) LRECL(80) BLKSIZE(800)"
"EXECIO * DISKW OUTDD ( STEM LN."
|
Peter ,
With NOPREFIX , I am not able to delete dataset, as I want to keep the dataset name in following fashion
<USERID>.DMLGEN.OUTPUT.*
Regards |
|
Back to top |
|
|
Pedro
Global Moderator
Joined: 01 Sep 2006 Posts: 2593 Location: Silicon Valley
|
|
|
|
The basic problem for tomehta is the inconsistent use of quotes in the name.
Code: |
/* step 1 */
IF SYSDSN(DMLGEN.OUTPUT1.DMLSTMTS) = OK THEN
"DELETE DMLGEN.OUTPUT1.DMLSTMTS"
/*Step 2 */
"ALLOC FILE (OUTDD) DATASET ('DMLGEN.OUTPUT1.DMLSTMTS') MOD REUSE" |
Because of PREFIX and the use of quotes, step 1 refers to a different dataset than step 2. |
|
Back to top |
|
|
sathyaraj
New User
Joined: 28 Sep 2007 Posts: 71 Location: India.
|
|
|
|
All,
It is resolved now. But still I cant understand how it worked.. I ll try to explain..
My job had three steps..
step1- create a file using rexx
step2- FTP the file
step3 - delete the file (IEFBR14)
I was having the issue with the second step. Error msg was that the file is being held by some one.
Then as a trial and error, I removed the delete step and the setup worked like a charm
Now I have the set up like
step1 - delete the file (IEFBR14)
step2- create a file using rexx
step3- FTP the file
This works fine. Any idea how my IEFBR14 in the third step could have held the file that was tried for FTP in second step?
Cheers,
Sathya. |
|
Back to top |
|
|
superk
Global Moderator
Joined: 26 Apr 2004 Posts: 4652 Location: Raleigh, NC, USA
|
|
|
|
I haven't really understood much of this topic from the very beginning. Why would you go through the whole process of creating a dataset, FTP'ing it, and then deleting it? Why wouldn't you just use a temporary dataset? And, if you already have a REXX exec written and in use, why not invoke the FTP from it and save a whole step? |
|
Back to top |
|
|
|