View previous topic :: View next topic
|
Author |
Message |
jerryte
Active User
Joined: 29 Oct 2010 Posts: 202 Location: Toronto, ON, Canada
|
|
|
|
First question:
I want to free the unused space on a pds-e (dsntype=LIBRARY) When I use the "F" command in DSLIST (ispf option 3.4) nothing happens. It is 7000 tracks but only 1% used. Is there another way to free the unused space? This is a static pds so it won't grow.
Second question:
Is there a command or utility I can run from a batch job to free unused space on a dataset or pds?
thanks |
|
Back to top |
|
|
dick scherrer
Moderator Emeritus
Joined: 23 Nov 2006 Posts: 19244 Location: Inside the Matrix
|
|
|
|
Hello,
What several of my sites have done is to reallocate a smaller pdse file and copy the original member(s). Then delete the original and rename the new dataset. |
|
Back to top |
|
|
vasanthz
Global Moderator
Joined: 28 Aug 2007 Posts: 1742 Location: Tirupur, India
|
|
|
|
Hello,
If you have HSM, you could hit HMIG infront of the PDSE or PDS or PS and get it migrated to migrate lvl1.
After migration, issue HRECALL and the dataset is reallocated by HSM with free space released.
For a PS - before migration:
Code: |
Current Allocation
Allocated tracks . : 2
Allocated extents . : 1
Current Utilization
Used tracks . . . . : 1
Used extents . . . : 1 |
For a PS - after migration & immediate recall:
Code: |
Current Allocation
Allocated tracks . : 1
Allocated extents . : 1
Current Utilization
Used tracks . . . . : 1
Used extents . . . : 1 |
For a PDSE - before migration:
Code: |
Current Allocation
Allocated tracks . : 5
Allocated extents . : 1
Current Utilization
Used pages . . . . : 6
% Utilized . . . . : 10 |
For PDSE - after migration & immediate recall:
Code: |
Current Allocation
Allocated tracks . : 1
Allocated extents . : 1
Current Utilization
Used pages . . . . : 6
% Utilized . . . . : 50 |
One more advantage we have with this method is, FREE command would not work for multivolume datasets, however HSM might be written by 'good guy Greg' and handles multi volume datasets as well.
Hope it helps. |
|
Back to top |
|
|
jerryte
Active User
Joined: 29 Oct 2010 Posts: 202 Location: Toronto, ON, Canada
|
|
|
|
The issue seems to be that I cannot compress a PDS-E library. The free space is in between the members so it can't free it.
I tried another method:
- allocate a temporary pds with same dcb
- copy all the members to the temp pds
- delete all members from the original pds
- copy the members back
Then when I do an ISPF free it works. My guess is that the copy operation puts all the members continuous at the beginning of the pds library. Thus all the free space is now at the end. |
|
Back to top |
|
|
expat
Global Moderator
Joined: 14 Mar 2007 Posts: 8797 Location: Welsh Wales
|
|
|
|
You should not have to compress a PDSE library, as free space from member updates or deletes is automatically made available for reuse. |
|
Back to top |
|
|
dick scherrer
Moderator Emeritus
Joined: 23 Nov 2006 Posts: 19244 Location: Inside the Matrix
|
|
|
|
Hi Expat,
If i understood, the goal was to free unused space in an overallocated PDSE . . .
d |
|
Back to top |
|
|
expat
Global Moderator
Joined: 14 Mar 2007 Posts: 8797 Location: Welsh Wales
|
|
|
|
jerryte wrote: |
The issue seems to be that I cannot compress a PDS-E library. The free space is in between the members so it can't free it. |
Dick,
That's what I originally thought, but then the above was posted. |
|
Back to top |
|
|
dick scherrer
Moderator Emeritus
Joined: 23 Nov 2006 Posts: 19244 Location: Inside the Matrix
|
|
|
|
Yup, i believe the "compression" was needed to get the free space all together at the "back" rather than interleaved.
Just copying the members to a smaller pdse would do the necessary.
d |
|
Back to top |
|
|
Pedro
Global Moderator
Joined: 01 Sep 2006 Posts: 2546 Location: Silicon Valley
|
|
|
|
I wrote this in 1998! I have not used it since, but think it should still work. It uses DFDSS to issue the RELEASE command. Can someone verify that it works?
Code: |
/* REXX */
/* get dataset name */
/* use fully qualified names */
parse arg dataset
/* allocate SYSIN file */
Address TSO
If sysdsn("DFDSS.CNTL")="OK" then
"ALLOC F(SYSIN) DA(DFDSS.CNTL) SHR REU"
Else
"ALLOC F(SYSIN) DA(DFDSS.CNTL) SPACE(1) BLOCK(3120)",
"LRECL(80) DSORG(PS) RECFM(F B) BLKSIZE(3120) NEW CATALOG"
/* create DFDSS control card */
out.1 =" RELEASE INCLUDE("dataset") DDNAME(RELEASE) "
"EXECIO 1 DISKW SYSIN (STEM OUT. FINIS "
/* CALL DFDSS to release the space */
"ALLOC F(SYSPRINT) DA(*) REU"
"ALLOC F(RELEASE) DA("dataset") SHR"
"CALL 'SYS1.LINKLIB(ADRDSSU)'"
/* free allocated files */
"FREE F(RELEASE SYSIN SYSPRINT)"
Exit 0 [quote][/quote] |
|
|
Back to top |
|
|
jerryte
Active User
Joined: 29 Oct 2010 Posts: 202 Location: Toronto, ON, Canada
|
|
|
|
Pedro
I tried the rexx and I get a S047 abend. This is an authorized program.
I tried a ADDRESS LINKMVS "ADRDSSU" but this also failed.
How do I call an authorized program from a rexx? I forgot.
I found the manual for this command. It is "DFSMS Using the Interactive Storage Management Facility". Google was no help. |
|
Back to top |
|
|
gcicchet
Senior Member
Joined: 28 Jul 2006 Posts: 1702 Location: Australia
|
|
|
|
Hi,
why not just execute PGM=ADRDSSU as a batch STEP.
Gerry |
|
Back to top |
|
|
jerryte
Active User
Joined: 29 Oct 2010 Posts: 202 Location: Toronto, ON, Canada
|
|
|
|
gcicchet wrote: |
why not just execute PGM=ADRDSSU as a batch STEP.
|
I did and it works. This answers my second question. |
|
Back to top |
|
|
Pedro
Global Moderator
Joined: 01 Sep 2006 Posts: 2546 Location: Silicon Valley
|
|
|
|
Quote: |
How do I call an authorized program from a rexx? |
I am not sure, but I think your system setup is not correct**. SYS1.PARMLIB(IKJTSOxx) allows you to define authorized programs that can be called from TSO.
** or it could be that your system programmers intentionally do not allow you to do it. But I still think it is not correct. |
|
Back to top |
|
|
|