Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Using LISTDSI for multi-volume files

525 views
Skip to first unread message

Bill Ashton

unread,
Mar 7, 2014, 3:42:17 PM3/7/14
to
HI folks!

I am working on a request for someone using LISTDSI, and it works great
when the file is all on one volume. However, I had one case pop up that was
on several volumes due to its SMS settings.

Is there a way to get the total space allocation/used amounts across all
volumes, or to get a list of all the volumes with LISTDSI? I am trying to
keep this Rexx program simple, but with partial data, it is no good.

Thank you for your comments, suggestions and sample code if you have some...
Billy

--
Thank you and best regards,
*Billy Ashton*

----------------------------------------------------------------------
For TSO-REXX subscribe / signoff / archive access instructions,
send email to LIST...@VM.MARIST.EDU with the message: INFO TSO-REXX

Steve Thompson

unread,
Mar 7, 2014, 4:03:33 PM3/7/14
to
There is this book called, TSO/E REXX REF. Mine is SA22-7790-10.

On page 130 the description of what you can and can't do with
LISTDSI starts. You can get SMS info on a file.

But, you will only get info on the first volume of a multi-volume
data set.

What you may need to do is run IDCAMS under the covers, and
PARSE/scan its output to get the data you need.

There may be other ways of doing this...

Regards,
Steve Thompson



On 03/07/2014 03:41 PM, Bill Ashton wrote:
> HI folks!
>
> I am working on a request for someone using LISTDSI, and it works great
> when the file is all on one volume. However, I had one case pop up that was
> on several volumes due to its SMS settings.
>
> Is there a way to get the total space allocation/used amounts across all
> volumes, or to get a list of all the volumes with LISTDSI? I am trying to
> keep this Rexx program simple, but with partial data, it is no good.
>
> Thank you for your comments, suggestions and sample code if you have some...
> Billy
>
><SNIPPAGE>

Bill Ashton

unread,
Mar 7, 2014, 4:13:26 PM3/7/14
to
I have looked at IDCAMS/LISTCAT and I can't get the primary/secondary
allocation and used amounts there. Does anyone know if I could use the
LISTDSI and specify each VOLSER in turn and get the values for the file on
each volume and then total them up?

Billy
--
Thank you and best regards,
*Billy Ashton*

Bill Ashton

unread,
Mar 7, 2014, 4:15:01 PM3/7/14
to
Incidentally, I am running this in a batch mode TSO against a list of files
coming in through SYSIN.

Billy

Farley, Peter x23353

unread,
Mar 7, 2014, 4:35:31 PM3/7/14
to
You should investigate the IGCSI00 utility (Catalog Search Interface). Rexx sample code is in SYS1.SAMPLIB(IGGCSIRX). Not sure if it can get the total allocation information or the allocation information per volume, but the example code does return multiple volsers when present in the catalog.

HTH

Peter

-----Original Message-----
From: TSO REXX Discussion List [mailto:TSO-...@vm.marist.edu] On Behalf Of Bill Ashton
Sent: Friday, March 07, 2014 3:42 PM
To: TSO-...@vm.marist.edu
Subject: Using LISTDSI for multi-volume files

HI folks!

I am working on a request for someone using LISTDSI, and it works great
when the file is all on one volume. However, I had one case pop up that was
on several volumes due to its SMS settings.

Is there a way to get the total space allocation/used amounts across all
volumes, or to get a list of all the volumes with LISTDSI? I am trying to
keep this Rexx program simple, but with partial data, it is no good.

Thank you for your comments, suggestions and sample code if you have some...
Billy

--

This message and any attachments are intended only for the use of the addressee and may contain information that is privileged and confidential. If the reader of the message is not the intended recipient or an authorized representative of the intended recipient, you are hereby notified that any dissemination of this communication is strictly prohibited. If you have received this communication in error, please notify us immediately by e-mail and delete the message and any attachments from your system.

Steve Thompson

unread,
Mar 7, 2014, 4:57:08 PM3/7/14
to
As I recall, LISTDSI will work on individual volumes to tell you
what the allocation is for a data set name. But now you have to
do volser specific allocation.

So read up on it. There have been a few changes to LISTDSI over
the past few releases of z/OS. And depending on where you are,
you may find that it will do things for you that it would not do
in previous z/OS releases.

I find it interesting that IDCAMS would not tell you all the
volsers for a data set. I use it to do this all the time -- but
then I'm almost always dealing with VSAM these days when I'm
doing this kind of stuff.

HTH
Steve Thompson

On 03/07/2014 04:34 PM, Farley, Peter x23353 wrote:
> You should investigate the IGCSI00 utility (Catalog Search Interface). Rexx sample code is in SYS1.SAMPLIB(IGGCSIRX). Not sure if it can get the total allocation information or the allocation information per volume, but the example code does return multiple volsers when present in the catalog.
>
> HTH
>
> Peter
<Snip>
<Snip>
> Is there a way to get the total space allocation/used amounts across all
> volumes, or to get a list of all the volumes with LISTDSI? I am trying to
> keep this Rexx program simple, but with partial data, it is no good.
>
<snippage>

Nims,Alva John , Al

unread,
Mar 7, 2014, 5:39:02 PM3/7/14
to
IGGCSIRX is not going to tell you space allocation, but it will give you a list of volumes.

I alter SYS1.SAMPLIB(IGGCSIRX) to accept the search string as an ARGument to the program, instead of its default method of prompting for it.

In the IGGCSIRX you will find two lines at the start:
SAY 'ENTER FILTER KEY' /* ASK FOR FILTER KEY */
PULL KEY /* GET FILTER KEY */
I replace them with:
PARSE ARG KEY

Now the REXX code I created is a quick test, but I have a data set that is allocated on multiple volumes, 2 as a matter of fact and when I run the REXX code:
x = OUTTRAP("LC.")
"%IGGCSIRX MVS.SMF.CAS.DAILY"
x = OUTTRAP("OFF")

The REXX Variable "LC." Contains 4 lines of output:
CATALOG SYS1.INT.ICFCAT

NONVSAM MVS.SMF.CAS.DAILY SMFWKD SMFWKB

As you can see that the IGGCSIRX returns as the first line the catalog the data set information was found in and then after a blank line, the NONVSAM data set, MVS.SMF.CAS.DAILY and that data set is cataloged to the two volumes, SMFWKD & SMFWKB, in that order.

Now using LISTDSI I explicitly hard coded my test using this data set and the two volumes, so the code looks like this:
y = LISTDSI("'MVS.SMF.CAS.DAILY' VOLUME(SMFWKD) NODIRECTORY NORECALL" )
" SMSINFO")
Say "MVS.SMF.CAS.DAILY SMFWKD "y
Say " SYSDSNAME:"SYSDSNAME
Say " SYSVOLUME:"SYSVOLUME
Say " SYSUNITS:"SYSUNITS
Say " SYSALLOC:"SYSALLOC
Say " SYSUSED:"SYSUSED
Say " SYSREASON:"SYSREASON
Say " SYSMSGLVL1:"SYSMSGLVL1
Say " SYSMSGLVL2:"SYSMSGLVL2
Say " SYSDSSMS:"SYSDSSMS
Say "SYSDATACLASS:"SYSDATACLASS
Say "SYSSTORCLASS:"SYSSTORCLASS
Say "SYSMGMTCLASS:"SYSMGMTCLASS

DROP SYSDSNAME
DROP SYSVOLUME
DROP SYSUNITS
DROP SYSALLOC
DROP SYSUSED
DROP SYSREASON
DROP SYSMSGLVL1
DROP SYSMSGLVL2
DROP SYSDSSMS
DROP SYSDATACLASS
DROP SYSSTORCLASS
DROP SYSMGMTCLASS

y = LISTDSI("'MVS.SMF.CAS.DAILY' VOLUME(SMFWKB) NODIRECTORY NORECALL" ,
" SMSINFO")
Say "MVS.SMF.CAS.DAILY SMFWKD "y
Say " SYSDSNAME:"SYSDSNAME
Say " SYSVOLUME:"SYSVOLUME
Say " SYSUNITS:"SYSUNITS
Say " SYSALLOC:"SYSALLOC
Say " SYSUSED:"SYSUSED
Say " SYSREASON:"SYSREASON
Say " SYSMSGLVL1:"SYSMSGLVL1
Say " SYSMSGLVL2:"SYSMSGLVL2
Say " SYSDSSMS:"SYSDSSMS
Say "SYSDATACLASS:"SYSDATACLASS
Say "SYSSTORCLASS:"SYSSTORCLASS
Say "SYSMGMTCLASS:"SYSMGMTCLASS
EXIT

A couple of things to note, this data set is currently empty, so only SYSALLOC will have a value, the SYSUSED will be 0 (zero), but you can tell that it is getting the information by specific volume and this data set is NOT SMS managed.

So when I run the REXX code I get:
MVS.SMF.CAS.DAILY SMFWKD 4
SYSDSNAME:MVS.SMF.CAS.DAILY
SYSVOLUME:SMFWKD
SYSUNITS:CYLINDER
SYSALLOC:3338
SYSUSED:0
SYSREASON:0030
SYSMSGLVL1:IKJ58418I PARTIAL DATA SET INFORMATION NOT OBTAINED.
SYSMSGLVL2:IKJ58430I SMSINFO IS SPECIFIED, HOWEVER DATA SET NOT SMS MANAGED.
SYSDSSMS:SEQ
SYSDATACLASS:
SYSSTORCLASS:
SYSMGMTCLASS:
MVS.SMF.CAS.DAILY SMFWKD 4
SYSDSNAME:MVS.SMF.CAS.DAILY
SYSVOLUME:SMFWKB
SYSUNITS:CYLINDER
SYSALLOC:3314
SYSUSED:0
SYSREASON:0030
SYSMSGLVL1:IKJ58418I PARTIAL DATA SET INFORMATION NOT OBTAINED.
SYSMSGLVL2:IKJ58430I SMSINFO IS SPECIFIED, HOWEVER DATA SET NOT SMS MANAGED.
SYSDSSMS:SEQ
SYSDATACLASS:
SYSSTORCLASS:
SYSMGMTCLASS:

------------------------------------------------------

As you can see, the two SYSALLOC values are different.

ISPF Info shows:
MVS.SMF.CAS.DAILY SMFWKD+
99780 0 2 3390 ,PS VBS 32767 27998,2010/07/04 2014/03/07
SYS1.INT.ICFCAT

3338+3314=6652
99780/15=6652


Al Nims
Systems Admin/Programmer 3
Information Technology
University of Florida
(352) 273-1298

Höglund Lars

unread,
Mar 10, 2014, 2:43:55 AM3/10/14
to
Saw this for z/os 2.1
(What's New in z/OS 2.1 - Beantown Edition - Confex)

TSO/E REXX Enhancements
. Enhancements to EXECIO, LISTDSI, and STORAGE:
. Retrieve information about data sets in EAS on EAVs
. Also, PDSE, concatenated, multivolume, and tape data set support
. Support I/O to undefined and spanned record format data sets
. Improve the usability of EXECIO, LISTDSI

//Lasse

-----Ursprungligt meddelande-----
Från: TSO REXX Discussion List [mailto:TSO-...@VM.MARIST.EDU] För Bill Ashton
Skickat: den 7 mars 2014 21:42
Till: TSO-...@VM.MARIST.EDU
Ämne: [TSO-REXX] Using LISTDSI for multi-volume files

Paul Gilmartin

unread,
Mar 10, 2014, 12:05:01 PM3/10/14
to
On 2014-03-10, at 00:43, Höglund Lars wrote:

> Saw this for z/os 2.1
> (What's New in z/OS 2.1 - Beantown Edition - Confex)
>
> TSO/E REXX Enhancements
> . Enhancements to EXECIO, LISTDSI, and STORAGE:
> . Retrieve information about data sets in EAS on EAVs
> . Also, PDSE, concatenated, multivolume, and tape data set support

How about:
o Uncatalogued data sets
o SYSOUT data sets
o UNIX files

All of which might be possible with "LISDSI( ddname 'FILE' )".
I had assumed that there was a requirement for F1 DSCB. But if
tape data sets are to be suported there is (no longer) such a
requirement.

I would also prefer that LISTDSI( ddname 'FILE' ) return the
DCB attributes as overridden by ALLOCATE, not those in the
label.

Does it provide at least partial information without requiring
that a tape be mounted?

> . Support I/O to undefined and spanned record format data sets
> . Improve the usability of EXECIO, LISTDSI

"Usability"? I would love to see the requirement for TSO removed.
(BPXWDYN( INFO ... ) meets some of the need. How about a function
unifying the facilities of both?)

-- gil

Paul Gilmartin

unread,
Mar 10, 2014, 12:21:16 PM3/10/14
to
On 2014-03-10, at 00:43, Höglund Lars wrote:

> Saw this for z/os 2.1
> (What's New in z/OS 2.1 - Beantown Edition - Confex)
>
OK. I RTFM.
http://pic.dhe.ibm.com/infocenter/zos/v2r1/topic/com.ibm.zos.v2r1.ikja300/ldsi.htm

Wherein I see (twice):

LISTDSI considers file names in the form SYSnnnnn as system-generated file names. If LISTDSI is used to obtain information about a data set that was pre-allocated multiple times using a file name of the form SYSnnnnn, an existing file may be unintentionally freed.

Why!? Processing ought to be simple enough: If LISTDSI allocates the
file, it should free it; if LISTDSI does not allocate the file, it
should not free it.

-- gil
0 new messages