Your SlideShare is downloading. ×
Reading the LISTCAT entries for VSAM
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Reading the LISTCAT entries for VSAM

13,249
views

Published on

How to read a LISTCAT ENTRIES(ALL) for tuning purposes and understanding how your VSAM datasets are working.

How to read a LISTCAT ENTRIES(ALL) for tuning purposes and understanding how your VSAM datasets are working.

Published in: Technology

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
13,249
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
241
Comments
0
Likes
2
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. The LISTCAT command: Using LISTCAT and Interpreting Its Output By Dan O'Dea November 1, 1998 ∆ΦΟ
  • 2. 2 Finding VSAM information: the LISTCAT Command The Access Method Services (AMS) LISTCAT command lists catalog information for catalogued datasets. You can limit the number of entries, or the amount of information returned to you, by using LISTCAT options. This handout describes the various LISTCAT operands and their syntax. It provides descriptions of the fields in a LISTCAT report, sample LISTCAT output, and some examples of LISTCAT commands. I'll also explain how to use the LISTCAT output to tune your VSAM files. This is designed for a VSAM class; it does not describe the various reports generated for non-VSAM files. Here is the complete syntax for the LISTCAT (abbreviated LISTC) command: <insert picture here>
  • 3. 3 LISTCAT Command Parameter Descriptions All parameters of the LISTCAT (LISTC) command are optional. If LISTC runs in batch mode with no parameters, it lists the system master catalog. If LISTC runs in READY mode with no parameters, it lists all files beginning with the TSO user's ID. If the CATALOG parameter is given, but ENTRIES, LEVEL, NOTUSABLE, CREATION, and EXPIRATION are not coded (and no entry parameters are given), and LISTC is not invoked from TSO the entire catalog specified is listed. CATALOG ( ... ) - the name of the desired ICF catalog. LISTC normally uses the standard catalog search algorithm. The CATALOG optional parameter forces LISTC to search only that catalog. ENTRIES ( ... ) - the name or generic name (see below) to be listed. If the entry name is a cluster all of its components are listed. If the entry name is an AIX its components, and all its PATHs, are listed. If a generic entry name is supplied, one qualifier replaces the "*". As an example, suppose the catalog contains these entries. EMP.PER.CKSDS EMP.PER.AIXSSN EMP.PER.AIXSSN.PATH EMP.PAY.CKSDS EMP.PAY.AIXSSN EMP.PAY.AIXSSN.PATH EMP.TAX.CKSDS EMP.TAX.AIXSSN EMP.TAX.AIXSSN.PATH If ENTRIES(EMP.PER.*) is specified, the list shows the first three entries. If ENTRIES(EMP.*.CKSDS) is specified, the list shows the three left-most entries. LEVEL ( ... ) - lists all entries matching the level of qualification given. This can be any number of qualifiers. Any entry in the catalog matching level is listed regardless of the number of qualifiers after level. As with ENTRIES, an "*" can substitute for one level. Using the same catalog entries as above, here are some examples: If LEVEL(EMP) is specified, the list includes all nine entries. If LEVEL(EMP.PER.*) is specified, only the first two entries are listed. If LEVEL(EMP.PER) is specified, the list includes the first three entries. If LEVEL(EMP.*.CKSDS) is specified, the list includes the three left-most entries.
  • 4. 4 The LISTCAT Command: Restricting Entries Use one of these restriction parameters to limit the type of entry in the list: ALIAS, ALTERNATEINDEX (AIX), CLUSTER (CL), DATA, INDEX, GENERATIONDATAGROUP (GDG), NONVSAM (NVSAM), SPACE (SPC), PAGESPACE (PGSPC), PATH, USERCATALOG (UCAT). • ALIAS lists only aliases. • AIX lists only alternate index (AIX) entries. Unless DATA and INDEX are also specified, only the AIX cluster is listed. • DATA restricts the list to data components. Specify either the cluster name or the component name. • GDG lists only generation data group (GDG) bases. • INDEX restricts the list to index components. Specify either the cluster name or the component name. • NONVSAM restricts the list to non-VSAM files. • PAGESPACE restricts the list to page spaces. • PATH lists only paths to alternate indexes. If the LISTC command includes the AIX using the path, the path is automatically listed. • SPACE is valid only for non-ICF (Integrated Catalog Facility) environments. • UCAT lists user catalog CONNECT entries from the master catalog. Here are some examples of LISTC commands. LISTC ENTRIES(EMP.FILE.CKSDS) CLUSTER lists cluster information, but not the cluster's data and index components. LISTC ENT(EMP.FILE.AIXSSN) AIX DATA INDEX lists cluster, data, and index information for the complete alternate index. Unless the keyword PATH is included, no path information is displayed. LISTC LEVEL(EMP) CLUSTER DATA INDEX lists all component information for all files whose names begin with the high-level qualifier (HLQ) EMP.
  • 5. 5 The LISTCAT Command: Restricting Listed Information ALL / ALLOCATION / HISTORY / NAME / VOLUME - ALLOCATION can be abbreviated to ALLOC, HISTORY to HIST, and VOLUME to VOL. NAME is the default. • ALL: LISTC lists all fields. • ALLOC: lists the History paragraph for clusters, and the History, Allocation, and Volume paragraphs for data and index components. • HISTORY lists the History paragraphs. • NAME limits the list to name and type fields. • VOLUME limits the list to History paragraphs for cluster, data, and index components, and includes the VOLSER and device type information for data and index components. Allocated extent information is not listed. CREATION (n) - abbreviated to CREAT, lists only entries "n" days ago or earlier. "n" is decimal. Hexadecimal or binary numbers are preceded by X or B respectively. The maximum number to specify is 9999. The default, "0", lists everything. EXPIRATION (n) - abbreviated to EXPIR, lists entries only if they expire "n" days from now or earlier. "n" is decimal. Hexadecimal or binary numbers are preceded by X or B respectively. The maximum number to specify is 9999. "0" lists only expired entries. NOTUSABLE - lists only files marked NOTUSABLE. Datasets become unusable when a system failure damages the catalog entry for a particular component. Unless specifically requested, records marked UNUSABLE are not listed OUTFILE ( ... ) - specifies a DD statement for the output file other than SYSPRINT. The file must specify RECFM=VBA and LRECL=125. FILE ( ... ) – For VVDS information, specifies a DD statement identifying the devices and volumes containing the ICF VVDSes.
  • 6. 6 Description of Keyword Fields The HISTORY Paragraph RELEASE - the release of VSAM. "1" is the original VSAM from prior to 1976; "2" refers to the current release, the one in use since 1976. It has nothing to do with the OS version or DFP version. CREATION - the Julian create date of the object as YYYY.DDD. EXPIRATION – An expiration date protects a dataset from deletion. Before its expiration date, the PURGE parameter of the DELETE command is the only way to delete the object. Specify an expiration date in the file definition using the TO or FOR parameters. A date of 9999.999 permanently protects the file. Change this field with the ALTER command. RCVY-VOL, RCVY-DEVT, RCVY-CI - not applicable in an ICF environment. The PROTECTION Paragraph ATTEMPTS - the number of attempts may be made to enter the file's password. This is valid only if the file is password protected. CODE - the character string to pass to the WTO message in a failed password attempt. This is valid only if the file is password protected. CONTROLPW, MASTERPW, READPW, UPDATEPW - specifies the indicated password of the file being listed. These fields are printed only if the file is password protected. PSWD - if the object is not password protected this value is NULL. If a password or words are valid but not printed for some reason this value is SUPP. RACF - if the object is RACF-protected with a discrete profile this value is YES. If the object is protected with a generic profile or not protected at all this value is NO. USAR - the contents of the User Security Authorization Record. The data in this field is passed to the USVR (see below) when access to the object is attempted. If there is no USAR this field is NULL. This is valid only if the file is password protected. USVR - the User Security Verification Routine. The USVR is essentially a program to verify whether the user can access the file. If the USVR is not used this value will be NULL. This is valid only if the file is password protected.
  • 7. 7 The ASSOCIATION Paragraph Each object has a particular list of object types it can be associated with: Entry Type Can be associated with: ALIAS Its non-VSAM DSN or a VSAM user catalog entry AIX Its data and index entries, its base cluster entry, and its PATH entries AIX data Its alternate index cluster entry AIX index Its alternate index cluster entry CLUSTER Its data entry, index entry (KSDS or variable RRDS), associated PATH entries, and AIX entries Cluster data Its base cluster entry Cluster index Its base cluster entry GDG Its non-VSAM file entries NONVSAM Any associated alias entries Page Space Its data entry (basically an ESDS cluster) Path Entry The AIX entry and the AIX's data and index entries, the data entry (over a base of the base cluster (and its index entry if a KSDS or variable RRDS) cluster and AIX) Path Entry The base cluster entry, the data entry of the base cluster (and its (over a base index entry if a KSDS or a variable RRDS) cluster) User catalog Its associated alias entries.
  • 8. 8 The ATTRIBUTES Paragraph AVGLRECL - the average record length as found in the RECORDSIZE parameter of the define. When AVGLRECL equals MAXLRECL the component can be assumed to contain fixed-length records, but VSAM doesn't care. When AVGLRECL is different from MAXLRECL the component can be assumed to contain variable-length records, but again VSAM doesn't care. Except when AMS calculates space amounts this value is treated as documentation and can be any value the user desires. VSAM does not attempt to maintain a true average record length for the data. AXRKP - the relative key position of the AIX key field within the base cluster's record as defined in the KEYS define parameter. BIND - the file is to be staged from the mass storage device to the virtual DASD staging drive when it is opened, and will be retained on the drive until it is closed. BUFSP - the minimum number of bytes to be acquired as buffers when the cluster is opened. This value is originally specified through the BUFFERSPACE define parameter. CI/CA - the number of CIs in each CA for the component. CISIZE - the CI size of the component. CYLFAULT - specifies the component will not be staged from the mass storage device when it is opened, but will be staged across in groups of cylinders as the data is needed. DSTGWAIT - specifies the component will be destaged from the virtual DASD staging drive back to the mass storage device before control is returned to the user program to issue a CLOSE. Its counterpart is NODSTGWAIT. ERASE - specifies records are to be overwritten with binary zeroes when the file is deleted. Its counterpart is NOERASE. EXCEPTIONEXIT - the entry name of the routine to be given control when I/O errors occur when processing the component. IMBED - specifies the sequence set records are to be written in the top track of the CA they address, with each record written as many times as it will fit. Its counterpart is NOIMBED. INDEXED - specifies the component is part of a KSDS cluster (either a base or alternate index).
  • 9. 9 The ATTRIBUTES Paragraph (cont'd) KEYLEN - the length of the search key field in the data component records for the KSDS cluster (either a base or an alternate index). LINEAR - specifies whether the component is an LDS cluster. MAXLRECL - the user-defined maximum record length as defined in the RECORDSIZE define parameter. See AVGLRECL for more information. VSAM will not allow a record longer than MAXLRECL to be written to the component. MAXRECS - the highest possible valid record number. This field appears only for an RRDS. MAXRECS = 2^32 / CISZ * record slots per CI. NONINDEXED - specifies the component is part of an ESDS cluster. NONSPANNED - specifies the records in the component cannot span across CIs. Its counterpart is SPANNED. NONUNIQUEKEY - states the alternate key field defined for the associated AIX can have multiple values in multiple records throughout the related base cluster. It does not allow the AIX to have multiple records with the same key, but does allow AIX records to point to more than one base cluster record. The counterpart to this parameter is UNIQUEKEY. NOREPLICAT - specifies the index component records are not to be repeated around their track multiple times, but to store as many index records as possible on the track. Its counterpart is REPLICATE. NOREUSE - specifies the file cannot be opened as reusable. Its counterpart is REUSE. NOSWAP - specifies the associated Page Space is a conventional Page Space data set and not a high speed swap data set. Its counterpart is SWAP. NOTRKOVFL - specifies the VSAM physical blocks in a Page Space cannot span track boundaries. Its counterpart is TRKOVFL. NOUPDATE - specifies, for a path over an AIX, no updating of the AIX will take place if the base cluster is opened through the "no update" path. Its counterpart is UPDATE, which allows such updating. NOUPGRADE - specifies, for an AIX, an open for update of the associated base cluster will not result in an open for update of the AIX. Its counterpart is UPGRADE, which will keep an AIX and its base cluster in sync.
  • 10. 10 The ATTRIBUTES Paragraph (cont'd) NOWRITECHECK - specifies VSAM will not check output operations against this component by issuing a READ immediately following a WRITE or REWRITE. Its counterpart is WRITECHECK. NUMBERED - specifies the component is part of an RRDS cluster. ORDERED - specifies the volumes assigned to this component will be allocated in the order specified in the VOLUMES parameter of the define. Its counterpart is UNORDERED, which is the default under ICF catalogs. RECOVERY - specifies CAs will be preformatted at load time, with other safe- guards to allow mid-load recovery. Its counterpart is SPEED. RECORDS/CI - for an RRDS only, the number of logical record slots a single CI can contain. RECVABLE - valid only for the old-style VSAM catalog. RKP - the relative position of the key field within the base cluster's record as defined by the KEYS define parameter. SHROPTNS - the share options of the file. SUBALLOC - valid only for the old-style VSAM catalog. TEMP-EXP - specifies a backup copy of the listed file has been made with the EXPORT command specifying the TEMPORARY option. If this status is not set IMPORT cannot automatically define the file at restore time. UNIQUE - valid only in a non-ICF environment. In an ICF environment this is the default.
  • 11. 11 The STATISTICS Paragraph The fields in this paragraph are brought into the Access Method Data Statistics Block (AMDSB) when the file is opened. As the file is updated the statistics in the AMDSB are maintained in storage. The AMDSB is not written back to the catalog until the file has been successfully closed. If the close is not successful, the statistics in the AMDSB are not written back to the catalog, thus the catalog's statistics still reflect the values at the time of the open. There are two ways for close processing to fail: 1 - An ABEND of the program opening the file. Although a program will perform most of the functions of a close, including writing out the last buffers, the file is not considered officially closed. If the open was for update processing, the "open for update" bit is left on and statistics are not written. At this time the user should determine if the file is valid. If update transactions have not been logged, it may be necessary to delete and recreate the file, rendering any "invalid" statistics in the catalog moot (they will be reset as part of the recovery). Of course, if the file is actually good an explicit VERIFY can be run to update the catalog statistics. 2 - A system crash when a program has the file open. While the system is crashing there is obviously no time for the system to run around closing files. All files, VSAM and non-VSAM, will be left "open". Buffers are not written to disk, the "open for update" bit is left on and statistics are not written. If update transactions have not been logged, it may be necessary to delete and recreate the file, rendering any "invalid" statistics in the catalog moot (they will be reset as part of the recovery).
  • 12. 12 The STATISTICS Paragraph (cont'd) FREESPACE-%CI - the CI free space percentage as given in the define. Neither this nor the CA% gives the actual free space remaining except immediately following a load or resume load. FREESPACE-%CA - the CA free space percentage as given in the define. FREESPACE-BYTES - specifies the current number of free space bytes within the area allocated by the component. This count includes bytes within completely free CIs only. Free space within CIs is not included. While this field gives a general idea of the free space remaining in the file, it does not specify where it is located. There are four areas where free space can be found: 1. Free CIs due to deleted records; 2. Free CIs at the end of each CA; 3. Free CIs in the last partially-filled CA before the end of file; 4. Completely empty CAs between the HURBA and HARBA. If a free space map is required, something other than a LISTC is needed. Four Index-only Statistics LEVELS - the number of levels making up the index, including the sequence set. The lower this number is the better. ENTRIES/SECT - the number of index entries within each section of an index record. An index record is broken down into sections to improve performance during key compares. The number of entries per section is the square root of the number of CI/CA for the data component. For example, if the data component has 180 CI/CA, the nearest lower whole number to its square root is 13, so the index has roughly 13 sections of 13 records per section. HI-LEVEL-RBA - the RBA of the highest level index record. When the KSDS is open for random processing, this RBA is used to locate and read the top logical record of the index. VSAM then follows the vertical pointers through the index structure. Note the top of the index structure is not maintained at the physical beginning of the index. SEQ-SET-RBA - the RBA of the first sequence set record. When the KSDS is open for sequential processing, this RBA is used to locate and read the beginning of the horizontal sequence set chain of records, gaining access to the data component CAs in logical sequence. Once the KSDS is loaded, this value does not change.
  • 13. 13 The STATISTICS Paragraph (cont'd) EXCPS - the total number of Execute Channel Program calls issued by VSAM against the data component. This number corresponds to the number of physical I/O operations against the data component since it was created or reorganized. This value cannot be used to determine the number of logical records read or written to the file, or even the number of CIs passed from DASD to memory and back, since buffer amounts have a great impact on how many CIs are written for a given EXCP. EXTENTS - the total number of physical extent allocations, on all volumes, the data component has made. REC-DELETED - the total number of logical records deleted from the data component since it was last created or reorganized. REC-INSERTED - the total number of logical records inserted into the data component since it was last created or reorganized. For a KSDS or an ESDS this total does not include records added at the end of the data component or those records initially loaded. For an RRDS this count is the number of records inserted into empty slots, including the number initially loaded into the file. REC-RETRIEVED - the total number of logical records read from the data component since it was last created or reorganized. It includes reads for update during REWRITE processing. REC-TOTAL - the total number of logical records currently in the data component. REC-UPDATED - the total number of logical records updated and rewritten back into the data component since it was last created or reorganized. This does not include deleted records, but if a record is updated at one time and deleted in a subsequent call is counted. SPLITS-CA - the total number of CA splits occurring in this component since it was last created or reorganized. To get a real idea of why CA splits are occurring a series of LISTCATs is needed to see a trend develop. For an index component, a CA split occurs only when an update to an intermediate or high level record will not fit and the record has to be split. This can happen during a data component CA split. Technically this is not a CA split, but it shows up in this count. Each SIS mode loading of a new CA is counted in this field. Note these are not CA splits and are actually beneficial to the file.
  • 14. 14 The STATISTICS Paragraph (cont'd) SPLITS-CI - the total number of CI splits occurring in this component since it was last created or reorganized. To get a real idea of why CI splits are occurring a series of LISTCATs is needed to see a trend develop. For an index component, a CI split occurs each time a data component CA splits. Technically the splitting of a sequence set record is not a CI split, but it shows up in this count. SYSTEM-TIMESTAMP - the date and time the component was last closed following an open for update. The value is from the S/370 time-of-day clock, an 8-byte binary value reflecting the number of microseconds elapsed since January 1, 1900. This value is useless in itself, but is compared to the timestamp for its related components. For example, in a KSDS, if the timestamp values for the data and index components are equal, VSAM assumes the two components were opened using the cluster, resulting in synchronization between the two components. In theory, if the timestamps of the data and index components are not equal VSAM will fail the open. In reality, however, the open only fails when the data component's timestamp is greater than that of the index. Because a VERIFY command alters the timestamp, it is highly recommended the VERIFY be run at the cluster level.
  • 15. 15 The ALLOCATION Paragraph SPACE-TYPE - the type of space allocated to the file. A type of TRACKS may mean the file was allocated in tracks, records, megabytes, or kilobytes and VSAM was unable to build 1-cylinder-sized CAs. When TRACKS appears in this field full tracks are allocated and aligned on track boundaries. A type of CYLINDERS may mean the file was allocated in cylinders, records, megabytes, or kilobytes, as VSAM will attempt to build 1-cylinder-sized CAs. When CYLINDERS appears in this field full cylinders are allocated and aligned on cylinder boundaries. SPACE-PRI - the number of space allocation units, as indicated in SPACE- TYPE, whenever a primary allocation is made. This is the amount of space given the file at define time as well as the first time the file extends to a candidate pack. SPACE-SEC - the number of space allocation units, as indicated in SPACE- TYPE, whenever a secondary allocation is made. This is the amount of space allocated when the file extends on the same volume. HI-ALLOCATED-RBA - referred to as HARBA, specifies the highest allocated RBA, plus 1, for the component. This value is equal to the HARBA in the last VOLUME paragraph for the component. This field, as are all other RBA fields for VSAM, is kept as a 32-bit unsigned integer. Thus the largest value possible is 232 or 4Gb. This is the maximum file size. For example, if a KSDS is defined with NOIMBED and a 4K CI size the maximum file size on a 3390 device is 5,826 cylinders. HI-USED-RBA - referred to as HURBA, specifies the highest used RBA, plus 1, for the component. This value is equal to the HURBA in the last VOLUME paragraph for the component. For an ESDS, LDS, KSDS index, or variable length RRDS index, this value points to the first CI following the last CI containing data. For a KSDS data component, or any RRDS data component, this value points to the bottom of the last CA containing data. In either case the HURBA represents the VSAM end-of- file marker. Not all files have this “marker;” it is not present if HURBA = HARBA. To determine if your file is overallocated: Over-allocation = HARBA - HURBA in CAs CI/CA * CISZ
  • 16. 16 The VOLUMES Paragraph Fields in this paragraph describe the physical extent allocations for a data or index component. Candidate volumes are also listed, but without extents. There is a separate volume group for each volume having extents. For a KSDS, if the data component has more than one volume group listed, each group describes the allocated extents on each volume. If the data component has key ranges, there is a separate volume group for each key range. For a KSDS, if the index component has more than one volume group listed, each group describes the entries containing index records on a specific volume. The first volume group describes the primary extents of the index containing the high-level index records and (if NOIMBED) the sequence set records. If IMBED is specified, each group after the first describes extents containing the imbedded sequence set records, corresponding to the data component's volume groups. When IMBED is specified the index VOLUMES paragraph will always have at least two volume groups, one for the primary index set and the other for the imbedded sequence set records. BYTES/TRACK - the number of bytes VSAM can write on a track of this volume. This is only listed for Page Spaces. DEVTYPE - the internal MVS device type code. A 3390 is 3010200F. EXTENT-NUMBER - the number of physical extents allocated on the volume listed for this component. EXTENT-TYPE - descriptive attribute(s) of the extent VSAM can use to control processing of the extent. The values shown in the list below can be ORed together for a complete description: X'00' - this set of extents contains data. X'40' - this set of extents does not contain data. Some levels of DFP report X'40' with the SPEED option. Surprisingly, second and subsequent volumes of the same file will have extent types of X'00'. X'80' - this set of extents contains imbedded sequence set records. This only occurs for an index component. The LOW- and HIGH-CCHH value for the extent is the same as that for the corresponding data component extent, showing the full width of the data component extent even though only the first track contains the index records. X'FF' - this signifies a candidate volume.
  • 17. 17 The VOLUMES Paragraph (cont'd) EXTENTS - identifies the physical extent descriptions for each extent of the component located on the volume, showing the VSAM RBA relationship to each extent. Within VSAM addressing between components is done with RBA values. These must be converted to absolute addresses (CCHHR) before an I/O can be performed. You should note it's possible to have extents which are not physically contiguous on DASD but whose RBAs are contiguous. There are five reported fields in the EXTENTS section: HIGH-CCHH - the physical ending location of the extent on the volume in the form CCHH, where CC is the 2-byte hexadecimal number of the DASD cylinder and HH is the 2-byte hexadecimal number of the track within the cylinder (or read-write head). HIGH-RBA - the RBA, in decimal, corresponding to the HIGH-CCHH physical address of the extent. LOW-CCHH - the physical beginning location of the extent on the volume in the form CCHH, where CC is the 2-byte hexadecimal number of the DASD cylinder and HH is the 2-byte hexadecimal number of the track within the cylinder. LOW-RBA - the RBA, in decimal, corresponding to the LOW-CCHH physical address of the extent. TRACKS - the number of tracks in the extent. This is given in tracks regardless of the space parameter in the define. HIGH-KEY - for a KSDS data component with key ranges, specifies the highest key value allowed for records stored within this extent of the component. It does not necessarily indicate the highest actual key in the extent. The maximum length key value listed is 64 bytes even though the cluster may be defined with a key up to 255 bytes. This field corresponds exactly with the high key specified in one of the KEYRANGES subparameter of the define. HIGH-KEY-RBA - for the data component of a KSDS defined with key ranges, specifies the RBA, in decimal, of the CI containing the highest keyed record in the component or key range. This field is not a function of any define parameter. LOW-KEY - for a KSDS data component with key ranges, specifies the lowest key value allowed for records stored within this extent of the component. It does not necessarily indicate the lowest actual key in the extent. The maximum length key value listed is 64 bytes even though the cluster may be defined with a key up to 255 bytes. This field corresponds exactly with the low key specified in one of the KEYRANGES subparameter of the define.
  • 18. 18 The VOLUMES Paragraph (cont'd) PHYREC/TRK - the number of physical records of the size indicated in PHYRECS-SIZE VSAM will write on each track of the component. This is a function of the component's CI size. PHYREC-SIZE - the size of each physical record (actually, physical block) VSAM will write during storage of CIs for the component. Physical records can be thought of as the "block size" of a CI. This value is a function of the CI size. HI-ALLOC-RBA - the highest allocated RBA of all extents of the component on this volume. HIGH-USED-RBA - the highest used RBA of all extents of the component on this volume. TRACKS/CA - the number of tracks in each CA of the component. This value is determined during define processing based on device type and size and type of space allocation. If the data component is allocated in cylinders the CA size is set to 1 cylinder. If the data component is allocated in records or tracks the CA size is based on the smaller of the primary and secondary amounts, up to a maximum of 1 cylinder. Based on that AMS will increase the larger number to be an even multiple of the smaller number. That way VSAM ensures all extents will be of an integer number of CAs. If IMBED was specified the one track taken up by imbedded sequence set records will be accounted for in this field. For example, if the allocation is TRACKS(90 10) the CA size will be 10 tracks. If IMBED is specified, the CA size will be increased to 11, resulting in an actual allocation of TRACKS(99 11). VOLFLAG - specifies whether extents have been allocated or whether this is a candidate volume. VOLFLAG can have three values: CANDIDATE - this volume is a candidate for future allocations. When this VOLFLAG is active no EXTENT information is listed. OVERFLOW - the volume is an overflow volume on which data records from a key range are stored. When more volumes are specified than key ranges the "extra" volumes are considered overflow volumes. When any key range exceeds its primary volume it will use the first overflow volume. PRIME - For a non-key range file PRIME indicates there is at least one extent for this component on the volume. For a key range file, PRIME indicates this is the first volume for the particular key range. VOLSER - the volume serial number of the volume.
  • 19. 19 Determining Proper Space Allocation using LISTCAT Output A LISTCAT output can be quite large and confusing. Interpreting the listing can be frustrating. Here is a straightforward method for computing the correct space allocation for components Once a VSAM file is loaded, it's quite easy to find out if the allocation request was correct, or to see how much the file is over- or under-allocated. First, get a LISTCAT of the cluster: LISTCAT ENTRIES(<cluster.name>) ALL In the data component listing, find the HURBA and HARBA fields in the ALLOCATION paragraph. These RBAs represent the overall highest used and allocated RBAs for the entire component on all its volumes. These fields are one greater than they should be; that makes the math easier, as the numbers are stated in terms of whole control areas for KSDS and RRDS files. The following relationships between HURBA and HARBA must be found: • If the HARBA and HURBA are equal, the current allocation for the file exactly fits in the number of allocated CAs. There may be free CIs in the last CA, but that's only important in very small files. • If HARBA is greater than HURBA, the difference is the amount of over- allocation in the data component. This value is in increments of full CAs, and tells you how many empty CAs are at the end of the component. To determine how many CAs this represents, locate the CISIZE and CI/CA fields in the same component listing. Multiply these two numbers together to get the number of bytes in each CA. Then, divide that number into the difference between the HARBA and HURBA. The result is the number of extra CAs at the end of the component. If the TRACKS/CA field shows a cylinder-sized CA, this value is also the number of cylinders by which the file has been over- allocated. Over-allocation = HARBA - HURBA in CAs CI/CA * CISZ
  • 20. 20 Determining Proper Space Allocation (cont'd) Check the EXTENT count in the STATISTICS paragraph. Under SMS, more than one extent is not a bad thing. It should even be expected for files larger than about 400 cylinders. A VSAM file takes its primary size, not its secondary size, when extending to a candidate volume. Consider a file defined as CYL(1200 100). Let's assume its primary volume is full when we need to add another record. If there is no other volume in the pool with 1,200 cylinders free, the extent attempt will fail, causing an ABEND in the program requesting the update. On the other hand, when the file is defined at, say, CYL(400 400), it is more likely another volume in the pool has 400 cylinders available. Granted the file will be 350 cylinders or more over-allocated, but that's much better than having to recover the file. Because of that restriction, it is far more important to pick reasonable primary and secondary allocations, and provide several candidate volumes, in the define. Unfortunately there really isn't a good, simple formula to calculate this; you must do it on a case-by-case basis. It also means large files must be more closely monitored than small ones; it's just a matter of scale. The user should do a LISTCAT immediately after a LOAD to see what the percentage of space the file has actually used. That provides a benchmark to help you determine if a file is really under-allocated or not. Using the CYL(400 400) example, say you know the loaded file used 1,175 of its allocated 1,200 cylinders. Then, two days later, the file is using 1,600 cylinders. Use the LISTCAT output to see if the file is allocated at 1,600 cylinders only because of the 400-cylinder extent. You may want to increase the allocation to, say, (425 425) to compensate, or maybe (400 200) would be a better choice. While this method will net the file more extents, you still should try to keep the extents down to a minimum number. As the number of extents gets larger, the file takes longer to do I/O because of disk seek time.