IBM Mainframe Forum Index
 
Log In
 
IBM Mainframe Forum Index Mainframe: Search IBM Mainframe Forum: FAQ Register
 

Space used by migrated datasets.


IBM Mainframe Forums -> JCL & VSAM
Post new topic   Reply to topic
View previous topic :: View next topic  
Author Message
vasanthz

Global Moderator


Joined: 28 Aug 2007
Posts: 1742
Location: Tirupur, India

PostPosted: Fri Oct 29, 2010 7:43 pm
Reply with quote

Hi,
I am trying to determine space allocated to migrated datasets using DCOLLECT M record type.

Method 1:
I used UMALLSP(189-192) field from DCOLLECT - M rectype to get the space allocated to a dataset in KB.
Then converted the KB to tracks by

Code:
Tracks = (KB * 1024)/ 56664
Tracks = 278365 * 1024 / 56664 = 5030.45 Tracks.



Method 2:
I issued HLIST DSN(xxxx.yyyy.xxxx) MCDS against the migrated dataset and below is the output,
Code:
DSN=xxxx.yyyy.xxxx                         MIGVOL=G96597 DSO=VS  SDSP=NO
  LAST REF=91/10/06 MIG=93/11/18 TRKS=0006004 2K BLKS= ******* TIMES MIG= 001
  16K BLKS=014917  LAST MIGVOL=*NONE*


TRKS=0006004


Method 1 and Method 2 tracks match for most of the datasets, but for some datasets the numbers do not match.
In this example, Method 1 = 5030.45 Tracks
Method 2 = 6004 Tracks.

Below is the SAS program for Method 1:

Code:
  INFILE DCOLLECT;       
  INPUT @005 DCURCTYP             $CHAR2. @;                                       
  LENGTH DSN $44;                                                       
  IF DCURCTYP = 'M ' THEN                                               
  INPUT @25 DSN $                                                       
        @189 DSN_ALLOC_SPACE PIB4.    /* Space ALLOCATED IN KB */                                   
        @70 MIG_LVL PIB1.;


Could you please let me know if there Is any other parameter that needs to be considered while getting space allocated from DCOLLECT.

Thanks & Regards,
Back to top
View user's profile Send private message
enrico-sorichetti

Superior Member


Joined: 14 Mar 2007
Posts: 10873
Location: italy

PostPosted: Fri Oct 29, 2010 8:07 pm
Reply with quote

Your homemade computations are wrong...

the 56664 is a very theoretical track capacity
the real track capacity depends on the blksize
the best fit will be with a blksize of 27998 which at max will give 55996

so until You come up with the right formula You will get mismatching results

see this topic for the links to the appropriate manuals
ibmmainframes.com/viewtopic.php?t=35906&highlight=blocks+track
and a working blocks per track calculator
Back to top
View user's profile Send private message
Robert Sample

Global Moderator


Joined: 06 Jun 2008
Posts: 8696
Location: Dubuque, Iowa, USA

PostPosted: Fri Oct 29, 2010 8:10 pm
Reply with quote

Your formula can be off by a significant amount. 56664 is the track capacity of a 3390 disk drive -- but 55996 is the most that can be used (27998 times 2), and the actual used bytes per track can be much different. For example, if a load library has BLKSIZE of 23200 (which I've seen for vendor software), that is 46400 bytes per track used -- so your dividing by 56664 will be low by about 20%. Multiply UMALLSP by 1024 and then divide by UMBKLNG to get the actual number of blocks used -- then you have to consider the number of blocks per track in calculating tracks to get the two estimates close together.
Back to top
View user's profile Send private message
vasanthz

Global Moderator


Joined: 28 Aug 2007
Posts: 1742
Location: Tirupur, India

PostPosted: Tue Nov 02, 2010 5:52 pm
Reply with quote

Hi,
Thanks for the suggestion and the link to the other thread,
publibz.boulder.ibm.com/cgi-bin/bookmgr_OS390/BOOKS/am3u1001/B.1.2 was very useful.

I tried out the modified formula,

Code:
  INPUT @25 DSN $                 
        @189 DSN_ALLOC_SPACE PIB4.
        @70 MIG_LVL PIB1.         
        @183 UMBKLNG PIB2.;       
BLOCKS = DSN_ALLOC_SPACE * 1024 / UMBKLNG;

    IF 27999 <= UMBKLNG <= 56664  THEN PERTRACK =    1;
.
.
http://publibz.boulder.ibm.com/cgi-bin/bookmgr_OS390/BOOKS/am3u1001/B.1.2
.
.
ELSE IF    1 <= UMBKLNG <=    22  THEN PERTRACK =   86;
TRACKS = BLOCKS / PERTRACK;


Still the number of tracks were less icon_sad.gif compared to HLIST command.
DSORG = VS
DSN_ALLOC_SPACE = 278365
UMBKLNG = 4096
BLOCKS = 69591.25
PERTRACK = 12
TRACKS = 5799.27
Whereas the HLIST tracks was TRKS=0006004

Thanks & Regards,
Back to top
View user's profile Send private message
Robert Sample

Global Moderator


Joined: 06 Jun 2008
Posts: 8696
Location: Dubuque, Iowa, USA

PostPosted: Tue Nov 02, 2010 7:11 pm
Reply with quote

Quote:
DSORG = VS
Vasanth, I suspect that this is where your problem lies. From the little research I've been able to accomplish, it appears that the DCOLLECT M record allocated space value includes both the data and index components for a KSDS. And it appears that the space allocation figure is based upon the larger CA size between the data and index components -- the other is converted into the larger units.

So a KSDS file allocated with data component of 5 cylinders and 3 tracks for the index component will have M type record space allocation of 75 tracks for data and 15 (1 cylinder since the data component is using cylinder CA size) tracks for the index, or a total of 90 tracks allocated space (4316 k-bytes in the M record). The actual space used would be 78 tracks (3834 k-bytes) if restored.

This tells me you cannot rely upon the allocated space in the type M DCOLLECT records for VSAM files. The actual space required for the restored data set may be more -- or less -- than the calculated value based on the M record allocated k-bytes.
Back to top
View user's profile Send private message
vasanthz

Global Moderator


Joined: 28 Aug 2007
Posts: 1742
Location: Tirupur, India

PostPosted: Wed Nov 03, 2010 12:07 pm
Reply with quote

Robert,
Thanks for the time for research and the example explaining the scenario with VSAM.

I will try to perform the HLIST for all migrated datasets and process the data since the management requires the information in tracks.

Code:

//PS010 EXEC PGM=IKJEFT01                           
//SYSTSPRT DD SYSOUT=*                               
//SYSTSIN DD *                                       
 HLIST  LEVEL(A) MCDS ODS('XXX.YYY.ZZZ'') SELECT(ML2)
 HLIST  LEVEL(B) MCDS ODS('XXX.YYY.ZZZ'') SELECT(ML2)
 HLIST  LEVEL(C) MCDS ODS('XXX.YYY.ZZZ'') SELECT(ML2)
 HLIST  LEVEL(D) MCDS ODS('XXX.YYY.ZZZ'') SELECT(ML2)
 HLIST  LEVEL(E) MCDS ODS('XXX.YYY.ZZZ'') SELECT(ML2)
 HLIST  LEVEL(F) MCDS ODS('XXX.YYY.ZZZ'') SELECT(ML2)
 HLIST  LEVEL(G) MCDS ODS('XXX.YYY.ZZZ'') SELECT(ML2)
 HLIST  LEVEL(H) MCDS ODS('XXX.YYY.ZZZ'') SELECT(ML2)
 HLIST  LEVEL(I) MCDS ODS('XXX.YYY.ZZZ'') SELECT(ML2)
 HLIST  LEVEL(J) MCDS ODS('XXX.YYY.ZZZ'') SELECT(ML2)
 HLIST  LEVEL(K) MCDS ODS('XXX.YYY.ZZZ'') SELECT(ML2)
 HLIST  LEVEL(L) MCDS ODS('XXX.YYY.ZZZ'') SELECT(ML2)
 HLIST  LEVEL(M) MCDS ODS('XXX.YYY.ZZZ'') SELECT(ML2)
 HLIST  LEVEL(N) MCDS ODS('XXX.YYY.ZZZ'') SELECT(ML2)
 HLIST  LEVEL(O) MCDS ODS('XXX.YYY.ZZZ'') SELECT(ML2)
 HLIST  LEVEL(P) MCDS ODS('XXX.YYY.ZZZ'') SELECT(ML2)
 HLIST  LEVEL(Q) MCDS ODS('XXX.YYY.ZZZ'') SELECT(ML2)
 HLIST  LEVEL(R) MCDS ODS('XXX.YYY.ZZZ'') SELECT(ML2)
 HLIST  LEVEL(S) MCDS ODS('XXX.YYY.ZZZ'') SELECT(ML2)
 HLIST  LEVEL(T) MCDS ODS('XXX.YYY.ZZZ'') SELECT(ML2)
 HLIST  LEVEL(U) MCDS ODS('XXX.YYY.ZZZ'') SELECT(ML2)
 HLIST  LEVEL(V) MCDS ODS('XXX.YYY.ZZZ'') SELECT(ML2)
 HLIST  LEVEL(W) MCDS ODS('XXX.YYY.ZZZ'') SELECT(ML2)
 HLIST  LEVEL(X) MCDS ODS('XXX.YYY.ZZZ'') SELECT(ML2)
 HLIST  LEVEL(Y) MCDS ODS('XXX.YYY.ZZZ'') SELECT(ML2)
 HLIST  LEVEL(Z) MCDS ODS('XXX.YYY.ZZZ'') SELECT(ML2)
 HLIST  LEVEL($) MCDS ODS('XXX.YYY.ZZZ'') SELECT(ML2)
/*


Many Thanks,
Back to top
View user's profile Send private message
View previous topic :: :: View next topic  
Post new topic   Reply to topic View Bookmarks
All times are GMT + 6 Hours
Forum Index -> JCL & VSAM

 


Similar Topics
Topic Forum Replies
No new posts Replace each space in cobol string wi... COBOL Programming 3
No new posts Merging 2 datasets into one DFSORT/ICETOOL 1
No new posts How Can I Recall a Migrated Data Set ... PL/I & Assembler 3
No new posts Merge 2 lines based on Space from a S... DFSORT/ICETOOL 5
No new posts PL/I, VB Datasets and the RDW PL/I & Assembler 4
Search our Forums:

Back to Top