Re: TIOT filling up: too many dynamic concatenations

2008-04-20 Thread Jack Schudel

David:

I am just now digging through 2000+ IBM-MAIN messages,
so this is a bit old by now.

It has been a very long time since I was digging through
dynamic allocation and concatenations as part of a JES2
user mod.  What I remember was that my code had a loop
where I read a dataset name, allocated it to a system assigned
DDNAME, and then added it to the current concatenation.
The problem was that the TIOT filled up very quickly
because it was full of holes of ever increasing size.
What was happening was the new concatenation was
larger than any of the available holes in the TIOT, so it got
placed at the end of the used space, and the TIOT ended
up full of free space blocks of size 2x, 3x, 4x, 5x, etc,
followed by the real proclib allocation space.
It seemed that IBM was not going back and consolidating the
free space blocks caused by the earlier concatenations.

Assuming that this is still the case, one thing that you could
try doing would be to allocate all of the datasets and then
do a single massive concatenation, rather than doing all
of the intermediate ones.

I hope this helps. -jack


- Original Message - 
From: David Eisenberg [EMAIL PROTECTED]

Newsgroups: bit.listserv.ibm-main
To: IBM-MAIN@BAMA.UA.EDU
Sent: Wednesday, April 09, 2008 2:35 PM
Subject: Re: TIOT filling up: too many dynamic concatenations



Ed,

Field S99ERROR (after the dynamic concatenation request to DYNALLOC) is
coming back with a value of X'0238': Space unavailable in task input 
output
table (TIOT). The manual says that the application should Reduce the 
total

number of allocated DDs and devices. Deallocate data sets that are not
needed simultaneously.

The only way I've found to reduce the total number of allocated DDs is to
reduce the number of files in the folder. I can't deallocate any of the
component allocations once they've been concatenated.

I did use IDF to step through and watch the TIOT grow. With each new
concatenation call, there is an entry which keeps growing in size until 
the

TIOT fills up.

I think that what I need to know is if I'm missing some approach/technique
that can get around what is probably a legitimate limitation.

David

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html



--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html



Re: TIOT filling up: too many dynamic concatenations

2008-04-16 Thread Paul Gilmartin
On Tue, 15 Apr 2008 21:45:34 -0300, Shmuel Metz (Seymour J.) wrote:

But this provokes an interesting question: If (as I believe) HFS data
sets are dynamically allocated in the OMVS address space (that's what's
cited when I try to delete one), isn't OMVS at extreme hazard of
impacting DVC etc. limits?

No. Don't confuse an *FS with the Unix files that it contains. OMVS and
the colony address spaces allocate entire file systems, not individual
Unix files.

Ah!  colony address spaces; plural.  Will OMVS create additional
colony address spaces as hundreds of filesystems are mounted, as
needed to avoid system limits on TIOT size, etc.?

-- gil

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html



Re: TIOT filling up: too many dynamic concatenations

2008-04-16 Thread Edward Jaffe

Paul Gilmartin wrote:

Ah!  colony address spaces; plural.  Will OMVS create additional
colony address spaces as hundreds of filesystems are mounted, as
needed to avoid system limits on TIOT size, etc.?
  


This should not be an issue. Authorized programs are not constrained by 
traditional limits on TIOT size and 24-bit virtual storage. They can use 
non-contiguous 31-bit XTIOT entries (S99TIOEX), 31-bit DSAB entries 
(S99DSABA), and specify that UCB addresses not be captured (S99ACUCB). 
Such programs can support literally hundreds of thousands of 
simultaneous allocations.


--
Edward E Jaffe
Phoenix Software International, Inc
5200 W Century Blvd, Suite 800
Los Angeles, CA 90045
310-338-0400 x318
[EMAIL PROTECTED]
http://www.phoenixsoftware.com/

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html



Re: TIOT filling up: too many dynamic concatenations

2008-04-16 Thread (IBM Mainframe Discussion List)
 
 
In a message dated 4/16/2008 12:28:54 P.M. Central Daylight Time,  
[EMAIL PROTECTED] writes:
Authorized programs are not constrained by 
traditional limits on TIOT  size and 24-bit virtual storage.  ...
Such programs can support literally hundreds of thousands of  
simultaneous allocations.
 
They can also do I/O without any allocation, TIOT entry, DD statement,  
enqueue, open, etc.  All they need is a UCB address, some CCWs  somewhere, and 
about 150 bytes of ECSA.
 
Bill  Fairchild
Rocket Software





**It's Tax Time! Get tips, forms and advice on AOL Money  
Finance.  (http://money.aol.com/tax?NCID=aolcmp0030002850)

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html



Re: TIOT filling up: too many dynamic concatenations

2008-04-16 Thread Edward Jaffe

(IBM Mainframe Discussion List) wrote:
They can also do I/O without any allocation, TIOT entry, DD statement,  
enqueue, open, etc.  All they need is a UCB address, some CCWs  somewhere, and 
about 150 bytes of ECSA.
  


Of course ... using the low-level STARTIO interface. But, dynamic data 
set allocation serves a useful purpose in MVS. And, OMVS uses it.


--
Edward E Jaffe
Phoenix Software International, Inc
5200 W Century Blvd, Suite 800
Los Angeles, CA 90045
310-338-0400 x318
[EMAIL PROTECTED]
http://www.phoenixsoftware.com/

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html



Re: TIOT filling up: too many dynamic concatenations

2008-04-16 Thread Mark Zelden
On Wed, 16 Apr 2008 10:28:00 -0700, Edward Jaffe
[EMAIL PROTECTED] wrote:

Paul Gilmartin wrote:
 Ah!  colony address spaces; plural.  Will OMVS create additional
 colony address spaces as hundreds of filesystems are mounted, as
 needed to avoid system limits on TIOT size, etc.?


This should not be an issue. Authorized programs are not constrained by
traditional limits on TIOT size and 24-bit virtual storage. They can use
non-contiguous 31-bit XTIOT entries (S99TIOEX), 31-bit DSAB entries
(S99DSABA), and specify that UCB addresses not be captured (S99ACUCB).
Such programs can support literally hundreds of thousands of
simultaneous allocations.


I hinted at this a week ago:
http://bama.ua.edu/cgi-bin/wa?A2=ind0804L=ibm-mainD=1amp;O=DT=0P=91054
but was waiting for someone with more expertise in this area to provide 
more information.

Thanks,

Mark
--
Mark Zelden
Sr. Software and Systems Architect - z/OS Team Lead
Zurich North America / Farmers Insurance Group - ZFUS G-ITO
mailto:[EMAIL PROTECTED]
z/OS Systems Programming expert at http://expertanswercenter.techtarget.com/
Mark's MVS Utilities: http://home.flash.net/~mzelden/mvsutil.html

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html



Re: TIOT filling up: too many dynamic concatenations

2008-04-15 Thread Shmuel Metz (Seymour J.)
In [EMAIL PROTECTED], on
04/09/2008
   at 10:03 PM, McKown, John [EMAIL PROTECTED] said:

And doing QSAM I/O does avoid some problems with the LF or CRLF at 
the end of the logical records.

Or NL if it's EBCDIC.
 
-- 
 Shmuel (Seymour J.) Metz, SysProg and JOAT
 ISO position; see http://patriot.net/~shmuel/resume/brief.html 
We don't care. We don't have to care, we're Congress.
(S877: The Shut up and Eat Your spam act of 2003)

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html



Re: TIOT filling up: too many dynamic concatenations

2008-04-15 Thread Shmuel Metz (Seymour J.)
In [EMAIL PROTECTED], on 04/09/2008
   at 05:52 PM, Paul Gilmartin [EMAIL PROTECTED] said:

But this provokes an interesting question: If (as I believe) HFS data
sets are dynamically allocated in the OMVS address space (that's what's
cited when I try to delete one), isn't OMVS at extreme hazard of
impacting DVC etc. limits?

No. Don't confuse an *FS with the Unix files that it contains. OMVS and
the colony address spaces allocate entire file systems, not individual
Unix files.

And if the NFS is served from a RAID, does each volume in that server's
RAID count separately?

If you're running NFS on z/OS, doesn't it use Unix services to do its I/O
for Unix files? Barring some really strange changes, it wouldn't have any
allocations except for the MVS classic data sets that it is serving. For
those, each extra volume would require an additional UCB pointer in the
TIOT, assuming parallel mount.

As for data sets served by an external NFS server, I wouldn't expect
allocation to be involved, so there shouldn't be any need for extra TIOT
space.
 
-- 
 Shmuel (Seymour J.) Metz, SysProg and JOAT
 ISO position; see http://patriot.net/~shmuel/resume/brief.html 
We don't care. We don't have to care, we're Congress.
(S877: The Shut up and Eat Your spam act of 2003)

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html



Re: TIOT filling up: too many dynamic concatenations

2008-04-10 Thread Hunkeler Peter (KIUK 3)
Why do you concatenate them that way? Why not just find/open/process
each independently? Or if you prefer, find all of them, then in a loop
(allocate, open, process, deallocate) each individually? Yes, it is a
bit more difficult to program, but it is infinitely scalable.

If this hasn't changed lately, you'd also need to FREEBUF the QSAM 
buffers after each CLOSE or that might be the cause of the next 
out of storage condition. QSAM buffers are not freed by the system 
upon CLOSE.

-- 
Peter Hunkeler
Credit Suisse

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html



Re: TIOT filling up: too many dynamic concatenations

2008-04-10 Thread Hunkeler Peter (KIUK 3)
Remember, z/OS emulates UNIX -- a CAT/READ/de-allocate is still 
just as expensive.

It may quack like a duck; walk like a duck; it is an emulated duck.

There is no such thing as allocation and deallocation in UNIX, 
incluiding z/OS UNIX. The z/OS UNIX kernel, more specifically, the 
physical file system code allocates and opens file system data sets 
at mount time. Thereafter it fullfills all the I/O requests from
UNIX processes. I don't see an emulation here.

I/O is expensive, no matter what kind of file system lies behind
it. I haven't done any research on this but I bet in terms of resource
usage doing a UNIX read is not to much different to doing an 
MVS read. 

-- 
Peter Hunkeler
Credit Suisse

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html



Re: TIOT filling up: too many dynamic concatenations

2008-04-10 Thread McKown, John
 -Original Message-
 From: IBM Mainframe Discussion List 
 [mailto:[EMAIL PROTECTED] On Behalf Of Hunkeler Peter (KIUK 3)
 Sent: Thursday, April 10, 2008 1:14 AM
 To: IBM-MAIN@BAMA.UA.EDU
 Subject: Re: TIOT filling up: too many dynamic concatenations
 
 
 Why do you concatenate them that way? Why not just find/open/process
 each independently? Or if you prefer, find all of them, then 
 in a loop
 (allocate, open, process, deallocate) each individually? Yes, it is a
 bit more difficult to program, but it is infinitely scalable.
 
 If this hasn't changed lately, you'd also need to FREEBUF the QSAM 
 buffers after each CLOSE or that might be the cause of the next 
 out of storage condition. QSAM buffers are not freed by the system 
 upon CLOSE.
 
 -- 
 Peter Hunkeler

Good point! I found that out the hard way when I did multiple OPEN/CLOSE
on a single DCB. Ran out of storage. This was back in the MVS/XA days.
It is also another reason to bite the bullet and rewrite to use
native UNIX I/O. No such problems.

--
John McKown
Senior Systems Programmer
HealthMarkets
Keeping the Promise of Affordable Coverage
Administrative Services Group
Information Technology

The information contained in this e-mail message may be privileged
and/or confidential.  It is for intended addressee(s) only.  If you are
not the intended recipient, you are hereby notified that any disclosure,
reproduction, distribution or other use of this communication is
strictly prohibited and could, in certain circumstances, be a criminal
offense.  If you have received this e-mail in error, please notify the
sender by reply and delete this message without copying or disclosing
it. 

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html



Re: TIOT filling up: too many dynamic concatenations

2008-04-10 Thread J R
 I did use IDF to step through and watch the TIOT grow. With each new 
 concatenation call, there is an entry which keeps growing in size until the 
 TIOT fills up.
 
My apologies if this has already been answered but I haven't seen it.  
 
This behavior is counter intuitive; the TIOT is filling up 3:1 compared 
to what one would expect.  When you examine the TIOT, I presume 
that the entry that keeps growing is the one for MYFILE.  Does it 
grow by a single entry each time, or is there more than a single entry 
added?  If so, what is being added over and above expectation?  
 
If the MYFILE entry seems to be growing appropriately, what else is 
being added to the TIOT?  Are allocations used in the concatention 
remaining as entries?  
 
This should be easy to test.  Get a snapshot before and after the 
concatenation and analyze exactly what has changed.  It could be 
that entries are not being reused by the concatenation but just 
used for the information that they contain.  
 
 
 Date: Wed, 9 Apr 2008 13:35:28 -0500
 From: [EMAIL PROTECTED]
 Subject: Re: TIOT filling up: too many dynamic concatenations
 To: IBM-MAIN@BAMA.UA.EDU
 
 Ed,
 
 Field S99ERROR (after the dynamic concatenation request to DYNALLOC) is 
 coming back with a value of X'0238': Space unavailable in task input output 
 table (TIOT). The manual says that the application should Reduce the total 
 number of allocated DDs and devices. Deallocate data sets that are not 
 needed simultaneously.
 
 The only way I've found to reduce the total number of allocated DDs is to 
 reduce the number of files in the folder. I can't deallocate any of the 
 component allocations once they've been concatenated.
 
 I did use IDF to step through and watch the TIOT grow. With each new 
 concatenation call, there is an entry which keeps growing in size until the 
 TIOT fills up.
 
 I think that what I need to know is if I'm missing some approach/technique 
 that can get around what is probably a legitimate limitation.
 
 David
 
 
 
 
_
Going green? See the top 12 foods to eat organic.
http://green.msn.com/galleries/photos/photos.aspx?gid=164ocid=T003MSN51N1653A
--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html



Re: TIOT filling up: too many dynamic concatenations

2008-04-10 Thread Edward Jaffe

Hunkeler Peter (KIUK 3) wrote:

Why do you concatenate them that way? Why not just find/open/process
each independently? Or if you prefer, find all of them, then in a loop
(allocate, open, process, deallocate) each individually? Yes, it is a
bit more difficult to program, but it is infinitely scalable.



If this hasn't changed lately, you'd also need to FREEBUF the QSAM 
buffers after each CLOSE or that might be the cause of the next 
out of storage condition. QSAM buffers are not freed by the system 
upon CLOSE.
  


This behavior changed with DFSMS/MVS 1.1 circa MVS/ESA 4.3.

If you tell QSAM to use 31-bit buffers (who would choose otherwise?), it 
will free them automatically at CLOSE time.


--
Edward E Jaffe
Phoenix Software International, Inc
5200 W Century Blvd, Suite 800
Los Angeles, CA 90045
310-338-0400 x318
[EMAIL PROTECTED]
http://www.phoenixsoftware.com/

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html



Re: TIOT filling up: too many dynamic concatenations

2008-04-10 Thread David Eisenberg
My apologies if this has already been answered but I haven't seen it.

No apologies necessary!

The entry that was filling up was actually not MYFILE; that entry remained at 
20 bytes. The ever-growing entry seemed to contain all of the history of the 
concatenated DDs. With each new allocation and concatenation, it grew 
larger.

After reading all of these very informative replies, I think that the best 
course 
of action for me will be to modify the application to process one file at a 
time. 
It may not be perfect, but it will work, and it will be scalable.

Thanks so much!

David

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html



Re: TIOT filling up: too many dynamic concatenations

2008-04-10 Thread Tom Schmidt
David,
 
Could you clarify whether you perform the concatenation just once per run, or 
am I understanding that you perform multiple concatenations during each run?  
 
--
Tom Schmidt 
 
 
On Thu, 10 Apr 2008 15:13:58 -0500, David Eisenberg wrote:
 
The entry that was filling up was actually not MYFILE; that entry remained at
20 bytes. The ever-growing entry seemed to contain all of the history of the
concatenated DDs. With each new allocation and concatenation, it grew
larger.

After reading all of these very informative replies, I think that the best 
course
of action for me will be to modify the application to process one file at a 
time.
It may not be perfect, but it will work, and it will be scalable.
 

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html



Re: TIOT filling up: too many dynamic concatenations

2008-04-10 Thread Wayne Driscoll
David,
I would have to agree with the posters that felt that the best way to handle
this would be to use the z/OS UNIX services to read the files.  While this
does mean that you will need 2 code paths, one for UNIX files and a second
one for classic datasets, the advantage of this approach is that you will
not need to issue the SVC 99 to build the TIOT entry.  Dynamic allocation
isn't needed for the UNIX services, since z/OS I/O structures like JFCB's,
DEB's, etc aren't required.

Wayne Driscoll
Product Developer
NOTE:  All opinions are strictly my own.




-Original Message-
From: IBM Mainframe Discussion List [mailto:[EMAIL PROTECTED] On Behalf
Of David Eisenberg
Sent: Thursday, April 10, 2008 3:14 PM
To: IBM-MAIN@BAMA.UA.EDU
Subject: Re: TIOT filling up: too many dynamic concatenations

My apologies if this has already been answered but I haven't seen it.

No apologies necessary!

The entry that was filling up was actually not MYFILE; that entry remained
at 
20 bytes. The ever-growing entry seemed to contain all of the history of the

concatenated DDs. With each new allocation and concatenation, it grew 
larger.

After reading all of these very informative replies, I think that the best
course 
of action for me will be to modify the application to process one file at a
time. 
It may not be perfect, but it will work, and it will be scalable.

Thanks so much!

David

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html



Re: TIOT filling up: too many dynamic concatenations

2008-04-10 Thread Paul Gilmartin
On Thu, 10 Apr 2008 15:34:29 -0500, Wayne Driscoll wrote:

David,
I would have to agree with the posters that felt that the best way to handle
this would be to use the z/OS UNIX services to read the files.  While this
does mean that you will need 2 code paths, one for UNIX files and a second
one for classic datasets, the advantage of this approach is that you will
not need to issue the SVC 99 to build the TIOT entry.  Dynamic allocation
isn't needed for the UNIX services, since z/OS I/O structures like JFCB's,
DEB's, etc aren't required.

The options are certainly not mutually exclusive.  He can process
the files one at a time _and_ use UNIX services to perform the
processing.  And if the processing is to read and write buffers
into a pipe ALLOCATEd to his prior SYSIN/SYSUT1, the disruption
to the existing code is minimized.

-Original Message-
From: IBM Mainframe Discussion List [mailto:[EMAIL PROTECTED] On Behalf
Of David Eisenberg

After reading all of these very informative replies, I think that the best 
course
of action for me will be to modify the application to process one file at a 
time.
It may not be perfect, but it will work, and it will be scalable.

-- gil

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html



TIOT filling up: too many dynamic concatenations

2008-04-09 Thread David Eisenberg
Anyone,

I have a mainframe assembler application which is invoking Unix system 
services to get the names of all of the files in an NFS-mounted folder. The 
application dynamically allocates and logically concatenates these files into 
one giant dataset, then uses QSAM macros to read it.

The DYNALLOC calls work this way: first, I dynamically allocate the first file 
in 
the folder with DDNAME MYFILE. Then the program enters a loop, performing 
these steps for each remaining file in the folder:
1) Dynamically allocate the file, asking the system to provide the DDNAME (I 
observe that these are getting the ddnames SYS1, SYS2, etc).
2) Dynamically concatenate MYFILE with the SYSx dataset just allocated 
(with the permanently allocated attribute on).

This works beautifully; when I exit the loop, I can OPEN and GET all the 
records successfully from MYFILE.

The problem is that I have reached a practical limit of approximately 540 files 
in the folder, because when I reach that point, I get a dynamic concatenation 
ABEND due to the TIOT filling up. I am told that our TIOT size is the default 
of 
32K, which would allow for a maximum of 1,635 DDs in a job step. It would 
seem, however, that something in my allocation/concatenation loop is 
preventing me from reaching that number of files. There are only a handful of 
other DDs allocated to the step (e.g., STEPLIB, etc).

If I were able to handle up to 750 (or perhaps 1,000) files at a time, it would 
be of immense help. At the moment, our only option seems to be to split up 
the files into multiple folders of 500 files each.

Do I have any other options? Thanks so much.

David

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html



Re: TIOT filling up: too many dynamic concatenations

2008-04-09 Thread Edward Jaffe

David Eisenberg wrote:
The problem is that I have reached a practical limit of approximately 540 files 
in the folder, because when I reach that point, I get a dynamic concatenation 
ABEND due to the TIOT filling up. I am told that our TIOT size is the default of 
32K, which would allow for a maximum of 1,635 DDs in a job step. It would 
seem, however, that something in my allocation/concatenation loop is 
preventing me from reaching that number of files. There are only a handful of 
other DDs allocated to the step (e.g., STEPLIB, etc).
  


Which abend code? Is there no dump? A dump will show you what's in the TIOT.

--
Edward E Jaffe
Phoenix Software International, Inc
5200 W Century Blvd, Suite 800
Los Angeles, CA 90045
310-338-0400 x318
[EMAIL PROTECTED]
http://www.phoenixsoftware.com/

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html



Re: TIOT filling up: too many dynamic concatenations

2008-04-09 Thread McKown, John
 -Original Message-
 From: IBM Mainframe Discussion List 
 [mailto:[EMAIL PROTECTED] On Behalf Of David Eisenberg
 Sent: Wednesday, April 09, 2008 1:17 PM
 To: IBM-MAIN@BAMA.UA.EDU
 Subject: TIOT filling up: too many dynamic concatenations
 
 
 Anyone,
 
 I have a mainframe assembler application which is invoking 
 Unix system 
 services to get the names of all of the files in an 
 NFS-mounted folder. The 
 application dynamically allocates and logically concatenates 
 these files into 
 one giant dataset, then uses QSAM macros to read it.
 
 

[snip]

 If I were able to handle up to 750 (or perhaps 1,000) files 
 at a time, it would 
 be of immense help. At the moment, our only option seems to 
 be to split up 
 the files into multiple folders of 500 files each.
 
 Do I have any other options? Thanks so much.
 
 David

Why do you concatenate them that way? Why not just find/open/process
each independently? Or if you prefer, find all of them, then in a loop
(allocate, open, process, deallocate) each individually? Yes, it is a
bit more difficult to program, but it is infinitely scalable.

--
John McKown
Senior Systems Programmer
HealthMarkets
Keeping the Promise of Affordable Coverage
Administrative Services Group
Information Technology

The information contained in this e-mail message may be privileged
and/or confidential.  It is for intended addressee(s) only.  If you are
not the intended recipient, you are hereby notified that any disclosure,
reproduction, distribution or other use of this communication is
strictly prohibited and could, in certain circumstances, be a criminal
offense.  If you have received this e-mail in error, please notify the
sender by reply and delete this message without copying or disclosing
it. 

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html



Re: TIOT filling up: too many dynamic concatenations

2008-04-09 Thread David Eisenberg
Ed,

Field S99ERROR (after the dynamic concatenation request to DYNALLOC) is 
coming back with a value of X'0238': Space unavailable in task input output 
table (TIOT). The manual says that the application should Reduce the total 
number of allocated DDs and devices. Deallocate data sets that are not 
needed simultaneously.

The only way I've found to reduce the total number of allocated DDs is to 
reduce the number of files in the folder. I can't deallocate any of the 
component allocations once they've been concatenated.

I did use IDF to step through and watch the TIOT grow. With each new 
concatenation call, there is an entry which keeps growing in size until the 
TIOT fills up.

I think that what I need to know is if I'm missing some approach/technique 
that can get around what is probably a legitimate limitation.

David

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html



Re: TIOT filling up: too many dynamic concatenations

2008-04-09 Thread David Eisenberg
Yes, it is a bit more difficult to program, but it is infinitely scalable.

Of course, you are correct. I took this approach because I have inherited a 
pre-existing application that used to read a single mainframe dataset. It's 
only 
recently that the capability to read multiple files via NFS was made necessary.

My approach worked very nicely until very recently. If I have to modify the 
application to work the way you've suggested, then of course, I will.

David

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html



Re: TIOT filling up: too many dynamic concatenations

2008-04-09 Thread Thompson, Steve
-Original Message-
From: IBM Mainframe Discussion List [mailto:[EMAIL PROTECTED] On
Behalf Of David Eisenberg
Sent: Wednesday, April 09, 2008 1:17 PM
To: IBM-MAIN@BAMA.UA.EDU
Subject: TIOT filling up: too many dynamic concatenations

Anyone,

I have a mainframe assembler application which is invoking Unix system
services to get the names of all of the files in an NFS-mounted folder.
The application dynamically allocates and logically concatenates these
files into one giant dataset, then uses QSAM macros to read it.

The DYNALLOC calls work this way: first, I dynamically allocate the
first file in the folder with DDNAME MYFILE. Then the program enters a
loop, performing these steps for each remaining file in the folder:
1) Dynamically allocate the file, asking the system to provide the
DDNAME (I observe that these are getting the ddnames SYS1, SYS2,
etc).
2) Dynamically concatenate MYFILE with the SYSx dataset just
allocated (with the permanently allocated attribute on).

This works beautifully; when I exit the loop, I can OPEN and GET all the
records successfully from MYFILE.

The problem is that I have reached a practical limit of approximately
540 files in the folder, because when I reach that point, I get a
dynamic concatenation ABEND due to the TIOT filling up. I am told that
our TIOT size is the default of 32K, which would allow for a maximum of
1,635 DDs in a job step. It would seem, however, that something in my
allocation/concatenation loop is preventing me from reaching that number
of files. There are only a handful of other DDs allocated to the step
(e.g., STEPLIB, etc).

If I were able to handle up to 750 (or perhaps 1,000) files at a time,
it would be of immense help. At the moment, our only option seems to be
to split up the files into multiple folders of 500 files each.

Do I have any other options? Thanks so much.
snip

Try putting DYNAMNBR=1024 on your EXEC card.

Regards,
Steve Thompson

-- All opinions expressed by me are my own and may not necessarily
reflect those of my employer. --

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html



Re: TIOT filling up: too many dynamic concatenations

2008-04-09 Thread Gene Hudders
Hi Ed:
 
Maybe not the best solution but you can increase the size of the TIOT in  the 
ALLOCxx parmlib member in the z/OS MVS Initialization and Tuning Reference  
_http://publibz.boulder.ibm.com/epubs/pdf/iea2e261.pdf_ 
(http://publibz.boulder.ibm.com/epubs/pdf/iea2e261.pdf)  page  73. The maximum 
size is 64K.
 
Regards,
Gene



**Planning your summer road trip? Check out AOL Travel Guides.
  (http://travel.aol.com/travel-guide/united-states?ncid=aoltrv000316)

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html



Re: TIOT filling up: too many dynamic concatenations

2008-04-09 Thread David Eisenberg
Try putting DYNAMNBR=1024 on your EXEC card.

Just tried it; no good. Same result as before. Thanks, though.

David

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html



Re: TIOT filling up: too many dynamic concatenations

2008-04-09 Thread McKown, John
 -Original Message-
 From: IBM Mainframe Discussion List 
 [mailto:[EMAIL PROTECTED] On Behalf Of David Eisenberg
 Sent: Wednesday, April 09, 2008 1:42 PM
 To: IBM-MAIN@BAMA.UA.EDU
 Subject: Re: TIOT filling up: too many dynamic concatenations
 
 
 Yes, it is a bit more difficult to program, but it is 
 infinitely scalable.
 
 Of course, you are correct. I took this approach because I 
 have inherited a 
 pre-existing application that used to read a single mainframe 
 dataset. It's only 
 recently that the capability to read multiple files via NFS 
 was made necessary.
 
 My approach worked very nicely until very recently. If I have 
 to modify the 
 application to work the way you've suggested, then of course, I will.
 
 David

Ah. That makes sense. I hate changing code.

Hum, you could use the UNIX cat program to catenate all the files
together into a single file somewhere, then read that. In a shell
script, I'd do something like:

#!/bin/sh
cd /nfs/directory/to/scan
cat * ~/all.files
process ~/all.files

You didn't say what language you are writing in. But you can dynamically
invoke the /bin/cat program from almost anything via the BPXWUNIX
subroutine.

--
John McKown
Senior Systems Programmer
HealthMarkets
Keeping the Promise of Affordable Coverage
Administrative Services Group
Information Technology

The information contained in this e-mail message may be privileged
and/or confidential.  It is for intended addressee(s) only.  If you are
not the intended recipient, you are hereby notified that any disclosure,
reproduction, distribution or other use of this communication is
strictly prohibited and could, in certain circumstances, be a criminal
offense.  If you have received this e-mail in error, please notify the
sender by reply and delete this message without copying or disclosing
it. 

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html



Re: TIOT filling up: too many dynamic concatenations

2008-04-09 Thread David Eisenberg
You didn't say what language you are writing in.

Mainframe assembler.

Your suggestion would work, but then I would have to get into an argument 
with the network guys when I tell them that I need twice as much disk just so 
that I can do a physical concatenation of all of the files. I don't think I 
have a 
leg to stand on, given that there is a programmatic, scalable solution (i.e., 
processing each file on its own).

I think that I might have to modify the appllication...

David

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html



Re: TIOT filling up: too many dynamic concatenations

2008-04-09 Thread Ted MacNEIL
Try putting DYNAMNBR=1024 on your EXEC card.

Just tried it; no good. Same result as before.

That's because your TIOT size is still 32K.
As somebody stated, the short term solution is to bump it up to 64K.

The long term would be (imo) re-write the programme to open one file at a time.

-
Too busy driving to stop for gas!

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html



Re: TIOT filling up: too many dynamic concatenations

2008-04-09 Thread McKown, John
 -Original Message-
 From: IBM Mainframe Discussion List 
 [mailto:[EMAIL PROTECTED] On Behalf Of David Eisenberg
 Sent: Wednesday, April 09, 2008 2:19 PM
 To: IBM-MAIN@BAMA.UA.EDU
 Subject: Re: TIOT filling up: too many dynamic concatenations
 
 
 You didn't say what language you are writing in.
 
 Mainframe assembler.
 
 Your suggestion would work, but then I would have to get into 
 an argument 
 with the network guys when I tell them that I need twice as 
 much disk just so 
 that I can do a physical concatenation of all of the files. I 
 don't think I have a 
 leg to stand on, given that there is a programmatic, scalable 
 solution (i.e., 
 processing each file on its own).
 
 I think that I might have to modify the appllication...
 
 David

I think that is the best idea. Hopefully it won't be too difficult. I
can think of some other methods, but they are very UNIXy and weird.
Such as creating a named pipe, fork()'ing then exec()'ing /bin/cat in
the child to write to the pipe which is then read with QSAM in the
parent. This would eliminate the second copy of the data.

--
John McKown
Senior Systems Programmer
HealthMarkets
Keeping the Promise of Affordable Coverage
Administrative Services Group
Information Technology

The information contained in this e-mail message may be privileged
and/or confidential.  It is for intended addressee(s) only.  If you are
not the intended recipient, you are hereby notified that any disclosure,
reproduction, distribution or other use of this communication is
strictly prohibited and could, in certain circumstances, be a criminal
offense.  If you have received this e-mail in error, please notify the
sender by reply and delete this message without copying or disclosing
it. 

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html



Re: TIOT filling up: too many dynamic concatenations

2008-04-09 Thread Paul Gilmartin
On Wed, 9 Apr 2008 13:16:58 -0500, David Eisenberg wrote:

I have a mainframe assembler application which is invoking Unix system
services to get the names of all of the files in an NFS-mounted folder. The
application dynamically allocates and logically concatenates these files into
one giant dataset, then uses QSAM macros to read it.
   ,,,
Do I have any other options? Thanks so much.

Create a named pipe (FIFO).  Allocate that FIFO as input to your
existing application.  Run your directory scanner concurrently
(fork(), spawn(), or ATTACH) with your existing program.  As it
encounters each file in the folder, it should copy it into the
FIFO (Hmmm.  Need to keep a descriptor of the FIFO open, not
open it each time.)  Only one allocation.

Actually, you might call cat(1) with as many file arguments as
you've mentioned, and pipe its output into your assembler
program.

Plan C:  Take your question to MVS-OE.

-- gil

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html



Re: TIOT filling up: too many dynamic concatenations

2008-04-09 Thread Paul Gilmartin
On Wed, 9 Apr 2008 13:16:58 -0500, David Eisenberg wrote:

I have a mainframe assembler application which is invoking Unix system
services to get the names of all of the files in an NFS-mounted folder. The
application dynamically allocates and logically concatenates these files into
one giant dataset, then uses QSAM macros to read it.
   ...

Do I have any other options? Thanks so much.

Yes.  Create a named pipe (FIFO) and allocate it as input to your
assembler program.  Run your folder scanner concurrently (fork(),
spawn(), or ATTACH) with the assembler program.  have it copy
each file in the folder into the FIFO (Hmmm.  Must open a descriptor
once and write to that, not open multiple times).  Only one
allocation, not hundreds.

Actually, for the number of files you mention, you should be
able to supply the list as an argument to cat (cat *) and
pipe the output to your assembler program.

Plan C:  Take the question to MVS-OE.

-- gil

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html



Re: TIOT filling up: too many dynamic concatenations

2008-04-09 Thread Paul Gilmartin
On Wed, 9 Apr 2008 14:54:53 -0500, McKown, John wrote:

I think that is the best idea. Hopefully it won't be too difficult. I
can think of some other methods, but they are very UNIXy and weird.
Such as creating a named pipe, fork()'ing then exec()'ing /bin/cat in
the child to write to the pipe which is then read with QSAM in the
parent. This would eliminate the second copy of the data.

Ahem. What's weird about that?

Sorry for the double post.  I knew I fumbled on the Send button,
and when I didn't see the message promptly, I retyped it.  Still
not seeing it, I sent again.

-- gil

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html



Re: TIOT filling up: too many dynamic concatenations

2008-04-09 Thread Traylor, Terry
The dataclass Dynamic Volume Count (DVC) is (DSN DD + DVC amount) for
each dataset allocated.  If the DVC is 20, the that would equate to 21
DDs in TIOT times however many datasets allocated.


Terry Traylor 

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html



Re: TIOT filling up: too many dynamic concatenations

2008-04-09 Thread McKown, John
 -Original Message-
 From: IBM Mainframe Discussion List 
 [mailto:[EMAIL PROTECTED] On Behalf Of Traylor, Terry
 Sent: Wednesday, April 09, 2008 4:11 PM
 To: IBM-MAIN@BAMA.UA.EDU
 Subject: Re: TIOT filling up: too many dynamic concatenations
 
 
 The dataclass Dynamic Volume Count (DVC) is (DSN DD + DVC amount) for
 each dataset allocated.  If the DVC is 20, the that would equate to 21
 DDs in TIOT times however many datasets allocated.
 
 
 Terry Traylor 

Strange that DVC would apply to a UNIX file, but it doesn't surprise me.

--
John McKown
Senior Systems Programmer
HealthMarkets
Keeping the Promise of Affordable Coverage
Administrative Services Group
Information Technology

The information contained in this e-mail message may be privileged
and/or confidential.  It is for intended addressee(s) only.  If you are
not the intended recipient, you are hereby notified that any disclosure,
reproduction, distribution or other use of this communication is
strictly prohibited and could, in certain circumstances, be a criminal
offense.  If you have received this e-mail in error, please notify the
sender by reply and delete this message without copying or disclosing
it. 

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html



Re: TIOT filling up: too many dynamic concatenations

2008-04-09 Thread Paul Gilmartin
On Wed, 9 Apr 2008 16:15:26 -0500, McKown, John wrote:

 -Original Message-
 [mailto:[EMAIL PROTECTED] On Behalf Of Traylor, Terry
 Sent: Wednesday, April 09, 2008 4:11 PM

 The dataclass Dynamic Volume Count (DVC) is (DSN DD + DVC amount) for
 each dataset allocated.  If the DVC is 20, the that would equate to 21
 DDs in TIOT times however many datasets allocated.

Strange that DVC would apply to a UNIX file, but it doesn't surprise me.

But wouldn't that DVC apply in the OMVS address space (or, in the OP's
case, the MVSNFSC address space) and not impact the problem program?
And if the NFS is served from a RAID, does each volume in that server's
RAID count separately?  But I'll defer to your undoubtedly superior
familiarity with z/OS internals and not be surprised myself.  Nor infer
that Terry T. was merely flaunting his knowledge of z/OS arcana
regardless of irrelevance to the OP's concern.

But this provokes an interesting question: If (as I believe) HFS
data sets are dynamically allocated in the OMVS address space
(that's what's cited when I try to delete one), isn't OMVS at
extreme hazard of impacting DVC etc. limits?

-- gil

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html



Re: TIOT filling up: too many dynamic concatenations

2008-04-09 Thread Jim Mulder
IBM Mainframe Discussion List IBM-MAIN@BAMA.UA.EDU wrote on 04/09/2008 
02:16:58 PM:

 I have a mainframe assembler application which is invoking Unix system 
 services to get the names of all of the files in an NFS-mounted folder. 
The 
 application dynamically allocates and logically concatenates these files 
into 
 one giant dataset, then uses QSAM macros to read it.
 
 The DYNALLOC calls work this way: first, I dynamically allocate the 
 first file in 
 the folder with DDNAME MYFILE. Then the program enters a loop, 
performing 
 these steps for each remaining file in the folder:
 1) Dynamically allocate the file, asking the system to provide the 
DDNAME (I 
 observe that these are getting the ddnames SYS1, SYS2, etc).
 2) Dynamically concatenate MYFILE with the SYSx dataset just 
allocated 
 (with the permanently allocated attribute on).
 
 This works beautifully; when I exit the loop, I can OPEN and GET all the 

 records successfully from MYFILE.
 
 The problem is that I have reached a practical limit of 
 approximately 540 files 
 in the folder, because when I reach that point, I get a dynamic 
concatenation 
 ABEND due to the TIOT filling up. I am told that our TIOT size is 
 the default of 
 32K, which would allow for a maximum of 1,635 DDs in a job step. It 
would 
 seem, however, that something in my allocation/concatenation loop is 
 preventing me from reaching that number of files. There are only a 
handful of 
 other DDs allocated to the step (e.g., STEPLIB, etc).
 
 If I were able to handle up to 750 (or perhaps 1,000) files at a 
 time, it would 
 be of immense help. At the moment, our only option seems to be to split 
up 
 the files into multiple folders of 500 files each.
 
 Do I have any other options? Thanks so much.

  Is it necessary to concatenate all of the files?  Could you 
restructure the program so that it allocates, opens, reads, closes,
and unallocates each file sequentially?  If the purpose is simply 
to read and process all of the records in all of the files, it would
seem that this would accomplish the same objective, and the records
would be processed in the same order. 

Jim Mulder   z/OS System Test   IBM Corp.  Poughkeepsie,  NY

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html



Re: TIOT filling up: too many dynamic concatenations

2008-04-09 Thread Mark Zelden
On Wed, 9 Apr 2008 17:52:47 -0500, Paul Gilmartin [EMAIL PROTECTED] wrote:


But this provokes an interesting question: If (as I believe) HFS
data sets are dynamically allocated in the OMVS address space
(that's what's cited when I try to delete one), isn't OMVS at
extreme hazard of impacting DVC etc. limits?


I doubt it.  This is out of my area of expertise but I would think it uses
the XTIOT since it is authorized and uses DYNALLOC (the S99TIOEX flag 
must be set in the the S99RB).  This is what DB2 does.

Mark
--
Mark Zelden
Sr. Software and Systems Architect - z/OS Team Lead
Zurich North America / Farmers Insurance Group - ZFUS G-ITO
mailto:[EMAIL PROTECTED]
z/OS Systems Programming expert at http://expertanswercenter.techtarget.com/
Mark's MVS Utilities: http://home.flash.net/~mzelden/mvsutil.html

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html



Re: TIOT filling up: too many dynamic concatenations

2008-04-09 Thread Paul Gilmartin
On Wed, 9 Apr 2008 19:13:19 -0400, Jim Mulder wrote:

  Is it necessary to concatenate all of the files?  Could you
restructure the program so that it allocates, opens, reads, closes,
and unallocates each file sequentially?  If the purpose is simply
to read and process all of the records in all of the files, it would
seem that this would accomplish the same objective, and the records
would be processed in the same order.

How would the performance of a scheme that allocates, opens, reads,
closes, and unallocates each file sequentially (or concatenated,
which still does most of the same work) compare with allocating
a single POSIX pipe and using BPX1* system calls to copy the
various NFS files into it?  My gut feeling is that Unix System
services is the big winner here.  The NFS files must be opened,
read, and closed either way; why add the overhead of allocation,
unallocation, and z/OS OPEN and CLOSE?

-- gil

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html



Re: TIOT filling up: too many dynamic concatenations

2008-04-09 Thread Ted MacNEIL
How would the performance of a scheme that allocates, opens, reads, closes, 
and unallocates each file sequentially (or concatenated, which still does 
most of the same work) compare with allocating
a single POSIX pipe and using BPX1* system calls to copy the various NFS files 
into it?  My gut feeling is that Unix System services is the big winner here.  
The NFS files must be opened, read, and closed either way; why add the overhead 
of allocation, unallocation, and z/OS OPEN and CLOSE?

Remember, z/OS emulates UNIX -- a CAT/READ/de-allocate is still just as 
expensive.

It may quack like a duck; walk like a duck; it is an emulated duck.

-
Too busy driving to stop for gas!

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html



Re: TIOT filling up: too many dynamic concatenations

2008-04-09 Thread McKown, John
 -Original Message-
 From: IBM Mainframe Discussion List 
 [mailto:[EMAIL PROTECTED] On Behalf Of Paul Gilmartin
 Sent: Wednesday, April 09, 2008 7:47 PM
 To: IBM-MAIN@BAMA.UA.EDU
 Subject: Re: TIOT filling up: too many dynamic concatenations
 
 
 On Wed, 9 Apr 2008 19:13:19 -0400, Jim Mulder wrote:
 
   Is it necessary to concatenate all of the files?  Could you
 restructure the program so that it allocates, opens, reads, closes,
 and unallocates each file sequentially?  If the purpose is simply
 to read and process all of the records in all of the files, it would
 seem that this would accomplish the same objective, and the records
 would be processed in the same order.
 
 How would the performance of a scheme that allocates, opens, reads,
 closes, and unallocates each file sequentially (or concatenated,
 which still does most of the same work) compare with allocating
 a single POSIX pipe and using BPX1* system calls to copy the
 various NFS files into it?  My gut feeling is that Unix System
 services is the big winner here.  The NFS files must be opened,
 read, and closed either way; why add the overhead of allocation,
 unallocation, and z/OS OPEN and CLOSE?
 
 -- gil

Well, iffin it twere me, I'd replace the QSAM logic with directly
reading the UNIX file using UNIX facilities (BPX1OPN / BPX1RED /
BPX1CLO) . But I don't know how much work the OP wants / has time to do.
Sometimes doing the minimal change is the best. Other times, it is
better to simply bite the bullet and rewrite. And doing QSAM I/O does
avoid some problems with the LF or CRLF at the end of the logical
records. They would be presented with the BPX1RED, but not with QSAM.
And QSAM, I think, will pad short records to the LRECL for RECFM=FB or
emulate the RDW for RECFM=VB files.

From my understanding, and I can easily be wrong, doing the I/O via the
UNIX subroutines does not do any sort of DYNALLOC. I am fairly sure that
all the I/O is somehow done by the OMVS task. Much like the I/O is done
by the DB2 system and not the job doing the SELECT statements. Of
course, this does lengthen the path length due to the need to talk to
the OMVS system. I don't know how that is actually done. My uneducated
guess would be with some sort of ss-PC routine. But OCO forbids me from
actually knowing how anything works. Wouldn't want the unwashed masses
to know too much, now would we?

--
John McKown
Senior Systems Programmer
HealthMarkets
Keeping the Promise of Affordable Coverage
Administrative Services Group
Information Technology

The information contained in this e-mail message may be privileged
and/or confidential.  It is for intended addressee(s) only.  If you are
not the intended recipient, you are hereby notified that any disclosure,
reproduction, distribution or other use of this communication is
strictly prohibited and could, in certain circumstances, be a criminal
offense.  If you have received this e-mail in error, please notify the
sender by reply and delete this message without copying or disclosing
it. 

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html