View previous topic :: View next topic |
Author |
Message |
Dibakar Advanced
Joined: 02 Dec 2002 Posts: 700 Topics: 63 Location: USA
|
Posted: Mon Apr 28, 2003 5:39 am Post subject: REXX - Problem in using temporary dataset with REPRO |
|
|
Hi
While writing a record from KSDS VSAM file to a temporary dataset I am getting following error
Quote: | IEC141I 013-34,IGG0191I,INDDBK,TSOLOG,REQDBK,4A68,TMP009,SYS03118.T053152.RA000
.INDDBK.R0165623
IDC3300I ERROR OPENING SYS03118.T053152.RA000.INDDBK.R0165623
IDC3321I ** OPEN/CLOSE/EOV ABEND EXIT TAKEN
IDC0005I NUMBER OF RECORDS PROCESSED WAS 0
IDC0014I LASTCC=12 |
This is the code I am using -
Code: | "ALLOC F("reqname") NEW REUSE"
"REPRO INFILE(IBMPRO) OUTFILE("reqname")
FROMKEY('"key1"')
TOKEY('"key1"')" |
This is working fine with permanent dataset but not with temporary dataset.
Thanks,
Diba. |
|
Back to top |
|
|
Cogito-Ergo-Sum Advanced
Joined: 15 Dec 2002 Posts: 637 Topics: 43 Location: Bengaluru, INDIA
|
Posted: Mon Apr 28, 2003 10:33 am Post subject: |
|
|
Diba,
Our inhouse quick ref tells me that your error code S013-34 stands for
Quote: | ONE OF THE FOLLOWING WAS DETECTED:
- AN OPEN MACRO WAS ISSUED FOR A DATASET WITH BLKSIZE AND BUFL EQUAL TO 0. THE SYSTEM DETERMINED THAT IT HAD TO OBTAIN BUFFERS BUT WAS UNABLE TO DO SO.
- RECFM WAS SPECIFIED WITH BOTH A AND M ATTRIBUTES.
- QSAM, LRECL=0 AND RECFM WAS NOT V OR VB.
- RECFM=V OR VB AND LRECL > (BLKSIZE-4).
- QSAM AND BLKSIZE=0. - RECFM NOT VARIABLE OR UNDEFINED AND LRECL > BLKSIZE.
- BFTEK=A,LRECL=0,RECFM=VBS.
|
Based on the above, maybe you would like to code the temporary dataset with some DCB parameters such as LRECL, RECFM, etc. _________________ ALL opinions are welcome.
Debugging tip:
When you have eliminated all which is impossible, then whatever remains, however improbable, must be the truth.
-- Sherlock Holmes. |
|
Back to top |
|
|
semigeezer Supermod
Joined: 03 Jan 2003 Posts: 1014 Topics: 13 Location: Atlantis
|
Posted: Mon Apr 28, 2003 2:49 pm Post subject: |
|
|
I too looked up the error in the IBM books (system codes, messages) but didn't find it too helpful so it is worth noting that temporary data sets sometimes have some odd quirks. For example, they often can not be allocated by name, at least through TSO's ALLOC command. That can cause problems in other programs as well. In this case it looks like whatever default attributes you are getting are not sufficent. Try adding attributes (lrecl, recfm, etc as needed). At least I'm curious, so let us know what you find. |
|
Back to top |
|
|
moyeenkhan Beginner
Joined: 04 Dec 2002 Posts: 64 Topics: 21
|
Posted: Mon Apr 28, 2003 3:09 pm Post subject: |
|
|
You can use REUSE with a permanent dataset only. For a temporary dataset, you may have to ALLOC with all the parameters. |
|
Back to top |
|
|
Dibakar Advanced
Joined: 02 Dec 2002 Posts: 700 Topics: 63 Location: USA
|
Posted: Tue Apr 29, 2003 3:48 am Post subject: |
|
|
After reading all replies and detail error message supplied by Cogito I felt that it has something to do with record length, format and blocksize. So here is what worked and what didn't.
Same error with:
Code: | "ALLOC F("reqname") NEW LRECL(346) BLOCK(3460) RECFM(F) REUSE" |
This worked for repro but failed at next EXECIO comand:
Code: | "ALLOC F("reqname") NEW LRECL(346) BLOCK(3460) REUSE" |
Finally this worked:
Code: | "ALLOC F("reqname") NEW BLOCK(3460) RECFM(V) REUSE" |
Fine, but my entire purpose of using temp datasets failed finally. Semigeezer once suggested, in another post, using temp datset to reduce i/o time. But my other program, doing the same stuff using existing permanent dataset seems to run a little faster.
Thanks everybody,
Diba. |
|
Back to top |
|
|
Mike Beginner
Joined: 03 Dec 2002 Posts: 114 Topics: 0 Location: Sydney, Australia
|
Posted: Tue Apr 29, 2003 10:49 pm Post subject: |
|
|
Try RECFM (F,B) with the first two., the results might differ. _________________ Regards,
Mike. |
|
Back to top |
|
|
semigeezer Supermod
Joined: 03 Jan 2003 Posts: 1014 Topics: 13 Location: Atlantis
|
Posted: Wed Apr 30, 2003 12:35 am Post subject: |
|
|
Not necessarily temp data sets, but temp data sets allocated to UNIT=VIO.
Also, REUSE relates only to the ddname, not to the data set, so it works with both permanent and and temp data sets. It boils down to a DAIR call (which eventually becomes an SVC99) to free the ddname before the allocation is done. |
|
Back to top |
|
|
Dibakar Advanced
Joined: 02 Dec 2002 Posts: 700 Topics: 63 Location: USA
|
Posted: Wed Apr 30, 2003 5:59 am Post subject: |
|
|
I used UNIT(VIO) and RECF(F,B). Now I/Os are little faster but allocation of new temp dataset appears to take more time than that of exixsting dataset with 'SHR' option.
Thanks again,
Diba. |
|
Back to top |
|
|
Mike Beginner
Joined: 03 Dec 2002 Posts: 114 Topics: 0 Location: Sydney, Australia
|
Posted: Mon May 12, 2003 11:10 pm Post subject: |
|
|
I would expect that to be the case. When creating a new dataset the volume has to be determined, the space earmarked for it's use the VTOC updated, the catalog updated. I've probably missed a few things as well. Whilst for an existing dataset the catalog, is searched and then dataset located, quite a bit less to do. _________________ Regards,
Mike. |
|
Back to top |
|
|
Dibakar Advanced
Joined: 02 Dec 2002 Posts: 700 Topics: 63 Location: USA
|
Posted: Tue May 13, 2003 10:04 am Post subject: |
|
|
Thanks Mike,
I never thought beyong allocating space. I didn't understand why would catalog be updated for temporary datasets? Could you suggest some reference to learn morer on this topic.
Regards,
Dibakar. |
|
Back to top |
|
|
semigeezer Supermod
Joined: 03 Jan 2003 Posts: 1014 Topics: 13 Location: Atlantis
|
Posted: Tue May 13, 2003 7:55 pm Post subject: |
|
|
I think this thread is getting a bit strange. Temporary data sets do not end up in the catalog. They are in the VTOC of the volume only, but... unless the unit VIO is defined to real dasd, there is no writing to any real device other than memory and maybe a paging volume. VIO should be noticably faster. You can see if the allocation went to a real volume instead of VIO by using ISRDDN. It is not unusual for unit=vio to go to real DASD, but if it does, most of the performance benefits are gone. Also, if you are running on a 2nd level system (under VM), then VIO doesn't usually help quite as much as on real hardware.
(I'm a big fan of virtual I/O. When I had real the machine to myself, I used to put all of ISPF - panels, messages, ISPLLIB, etc., in VIO. Now that starts quickly!) |
|
Back to top |
|
|
Dibakar Advanced
Joined: 02 Dec 2002 Posts: 700 Topics: 63 Location: USA
|
Posted: Wed May 14, 2003 2:48 am Post subject: |
|
|
semigeezer,
As you suspected, allocation did not go to VIO.
Thanks,
Dibakar. |
|
Back to top |
|
|
semigeezer Supermod
Joined: 03 Jan 2003 Posts: 1014 Topics: 13 Location: Atlantis
|
Posted: Wed May 14, 2003 10:10 am Post subject: |
|
|
My pleasure. It is always a little bizzare when the 'system' doesn't do exactly what you asked it to do but what it does is technically correct. Hmmmmmm |
|
Back to top |
|
|
Mike Beginner
Joined: 03 Dec 2002 Posts: 114 Topics: 0 Location: Sydney, Australia
|
Posted: Thu May 15, 2003 7:18 pm Post subject: |
|
|
Dibkar,
ooops I didn't read the question properly obviously temp datasets don't get catalogged. _________________ Regards,
Mike. |
|
Back to top |
|
|
Dibakar Advanced
Joined: 02 Dec 2002 Posts: 700 Topics: 63 Location: USA
|
Posted: Fri May 16, 2003 1:12 am Post subject: |
|
|
No problem. Anyway your answer remains valid since my allocation did not go to VIO.
Dibakar. |
|
Back to top |
|
|
|
|