Support & Maintenance
Maintenance to FileKit, SELCOPY and CBLVCAT, examples and answers to frequently asked questions (FAQs) may be found on this page. Users should refer to these pages prior to contacting CBL directly.
As well as answers to general questions, the FAQ lists may include solutions or work arounds for problems that are not attributable to an error in the repective program, or problems for which a fix has not yet been published.
If you cannot find the answer to your query on these web pages, then please
contact the CBL query desk via the following:
- Tel: +44 (1656) 65 2222
- Email: support@cbl.com
CBL provides a 24 x 7 technical support service to all customers via telephone.
During normal office hours (09:00-17:00 GMT/BST), every endeavour is made to supply immediate technical support via the telephone. At all other times, including weekends and Bank Holidays, a recorded telephone message provides relevant telephone number(s) for technical emergencies only.
Maintained Releases
Maintenance support is available for the following releases of CBL software components:
SELCOPY
- SELCOPY 3.60 (CBL Product Suite 3.60)
- SELCOPY 3.50 (CBL Product Suite 3.50)
- SELCOPY 3.40 (CBL Product Suite 3.40)
FileKit
- FileKit 3.60 (CBL Product Suite 3.60)
- FileKit 3.50 (CBL Product Suite 3.50)
- FileKit 3.40 (CBL Product Suite 3.40)
CBLVCAT
- CBLVCAT 3.60 (CBL Product Suite 3.60)
- CBLVCAT 3.50 (CBL Product Suite 3.50)
- CBLVCAT 3.40 (CBL Product Suite 3.40)
Frequently Asked Questions (FAQs)
As well as answers to general questions, the following FAQs may include solutions to problems that are not attributable to an error in CBL Software and also problems for which a fix has not yet been published.
Please select an FAQ from the list.
SELCOPY & CBLVCAT Examples
Listed below are a selection of practical examples of SELCOPY and CBLVCAT Batch syntax. Please select an example from the list.
For futher examples and help on other topics, please see the FAQ section above.
SELCOPY
Simple file copy
The simplest of functions you can perform with SELCOPY are file copies.
The following is a SELCOPY program which does this:
READ A WRITE B
The above represent the minimum elements required for a SELCOPY program. One selection (READ) must cause input, and one selection (WRITE) must cause output.
In this case, SELCOPY will READ one logical record from file A and then copy it to file B. The READ/WRITE cycle is repeated until all of the records from file A are exhausted (i.e. end of file is reached) at which point, by default, SELCOPY will automatically terminate.
In addition to the control cards shown, a link must be provided between the filenames mentioned to SELCOPY (Files A & B in the above example) and the physical datasets to which they refer. These are:
- DD statements for MVS users,
- FILEDEF statements for CMS users, and
- TLBL, DLBL, EXTENT and ASSGN statements for VSE users.
Alternatively, SELCOPY will dynamically allocate files using a dataset name provided either as a literal or from a position in its work area. e.g.
READ A DSN='SEQUENTIAL.INPUT.FILE' VOL=SYSWK1 WRITE B DSN=44 AT 1001 CAT=UCAT1 VSAM
Select and Change
Almost as simple are SELCOPY's selection and modification capablities. For example:
RD INFILE * Read a record IF POS 10 = 'CR' * Select records with CR in col 10 THEN PRINT STOPAFT=10 * and print only the first 10 THEN WRITE CRFILE * and write all of them to CRFILE IF POS ANY = 'PICK ME' * Scan whole rec for PICK ME THEN POS @ = 'PICKED ' * change it to PICKED THEN WRITE PKFILE * and create a file of picked ELSE WRITE NOTPK * plus file of not picked
Selection criteria can be as simple or as complex as required.
The above example illustrates use of IF/THEN/ELSE logic, but further conditions can be stipulated based on the result of a previous one with the use of THENIF/ELSEIF. Nesting can therefore easily be achieved in a structured and understandable manner.
Use of WORKAREA
For many applications, you will need more space than taken up by your file input record in order to store and manipulate data or counters, build new records etc...
For this purpose SELCOPY enables you to request a number of bytes which can be used as a sort of "scratch pad".
RD INFILE WORKLEN 300 * Read a record (say Lrecl=150) into POS 1 IF POS 10 NE POS 201 LEN 4 * Test for a change in Cost Centre. THEN MOVE 4 FR 10 TO 201 * Store in workarea for comparison. THEN PR FR 201 L 4 * Print list of different Cost Centres.
In this example we read a file of records sorted by Cost Centre code, held in a 4 byte alpha-numeric field at position 10, and print out a list of each different code.
Variable to Fixed
Changing record formats is another example of the ease of coding SELCOPY control statements.
A Master file of customer records is kept on tape. Each record holds 40 bytes of fixed information for the customer in the first part of the record, and variable information at the end. The average record length is 600 bytes.
It is a requirement to produce a file containing only the fixed data, to reduce run times during small 'batch windows'. The abbreviated file is to be blocked to 32000 bytes.
READ TAPE RECFM=V WRITE TAPE1 LRECL=40 BLKSIZE=32000 RECFM=F
Note that SELCOPY will automatically strip off the 4 bytes of control information when copying from variable to fixed length records.
Printing
Often, the information contained in files consists of data which is not readily printable - e.g. packed decimal, binary or hexadecimal fields.
SELCOPY will allow you to view parts of or whole records, areas of your work area, or indeed any of SELCOPY's special fields, in order to recognise non-character data. The normal printout produced by the PRINT commands in a SELCOPY program is basically geared to problem solving by programmers. You can however, easily produce reports for non-programming staff.
The SELCOPY reference manual contains several types of print format, three of which (Types MC,B & D), are illustrated below:-
Example: PRINT TYPE=MC (Mixed - predominantly char with hex)
SELCOPY REL 9.8P AT CBL - Bridgend UK (Internal Only) (OS) VM/CMS=VM03 14.05 WED 09 DEC 1998 PAGE 1 o ----------------------------------------------------- -------------------------------------- -------- o o 1. rd INDD o 2. print type=mc * Mixed - Char if printable, else Hex o o INPUT SEL SEL 1 RECORD RECNO TOT ID. 1 2 3 4 5 6 7 8 9 0 LENGTH o ----- --- --- ....,....0....,....0....,....0....,....0....,....0....,....0....,....0....,....0....,....0....,....0 ------ o 1 1 2 0Fred Bloggs,1Sunshine House,1Sunshine Street,0Sunny Village,0Sunny Valley,1Sunnington-on-Thames 96 o D 0 1 F E 5 o 2 2 2 0Joe Bloggs,1Thunder Mountain,0Rain Town,0Snowy Creek,0Windy City,0Hail-on-Sea 78 o C 2 B D C C o ....,....0....,....0....,....0....,....0....,....0....,....0....,....0....,....0....,....0....,....0 o SUMMARY.. o SEL-ID SELTOT FILE BLKSIZE LRECL FSIZE CI DSN ------ ------ ---- ------- ----- ----- -- --- o 1 2 READ INDD 96 96 U 2 SBR.TEST.A1 o 2 2 o o ** ** ** ** ** ** ** SELCOPY IS LICENSED BY COMPUTE (BRIDGEND) LTD +44 (1656) 652222 & 656466 ** ** ** ** ** ** ** ** EXPIRY DATE -- 12 JUN 2001 **
Example: PRINT TYPE=B (Both char and hex)
SELCOPY REL 9.8P AT CBL - Bridgend UK (Internal Only) (OS) VM/CMS=VM03 14.05 WED 09 DEC 1998 PAGE 1 o ----------------------------------------------------- -------------------------------------- -------- o o 1. rd INDD o 2. print type=b * Both Char & Hex, Line 1-Char, 2-Zone, 3-Numeric. o o INPUT SEL SEL 1 RECORD RECNO TOT ID. 1 2 3 4 5 6 7 8 9 0 LENGTH o ----- --- --- ....,....0....,....0....,....0....,....0....,....0....,....0....,....0....,....0....,....0....,....0 ------ o 1 1 2 Fred Bloggs, Sunshine House, Sunshine Street, Sunny Village, Sunny Valley, Sunnington-on-Thames 96 o 0C9884C9988A61EA9A88984C9AA861EA9A88984EA988A60EA99A4E89988860EA99A4E8998A61EA99898A996996E8898A o D69540236772B024528955086425B1245289550239553BF2455805933175BE245580513358B524559573650650381452 o 2 2 2 Joe Bloggs, Thunder Mountain, Rain Town, Snowy Creek, Windy City, Hail-on-Sea 78 o 0D984C9988A61E8A98894D9A9A88960D8894E9A960E99AA4C988960E898A4C8AA60C8896996E88 C1650236772B23845459046453195BB919503665BD25668039552BC6954803938BC81930650251 o ....,....0....,....0....,....0....,....0....,....0....,....0....,....0....,....0....,....0....,....0 o SUMMARY.. o SEL-ID SELTOT FILE BLKSIZE LRECL FSIZE CI DSN o ------ ------ ---- ------- ----- ----- -- --- 1 2 READ INDD 96 96 U 2 SBR.TEST.A1 o 2 2 o o ** ** ** ** ** ** ** SELCOPY IS LICENSED BY COMPUTE (BRIDGEND) LTD +44 (1656) 652222 & 656466 ** ** ** ** ** ** ** o ** EXPIRY DATE -- 12 JUN 2001 **
Example: PRINT TYPE=D (Dump format)
SELCOPY REL 9.8P AT CBL - Bridgend UK (Internal Only) (OS) VM/CMS=VM03 14.05 WED 09 DEC 1998 PAGE 1 o ----------------------------------------------------- -------------------------------------- -------- o o 1. rd INDD o 2. print type=d o o INPUT SEL SEL RECNO TOT ID. o ----- --- --- o 1 1 2 96 0000 0DC69985 8440C293 968787A2 6B10E2A4 95A28889 958540C8 96A4A285 6B11E2A4 *.Fred Bloggs,.Sunshine House,.Su* o 0020 95A28889 958540E2 A3998585 A36B0FE2 A49595A8 40E58993 93818785 6B0EE2A4 *nshine Street,.Sunny Village,.Su* o 0040 9595A840 E5819393 85A86B15 E2A49595 899587A3 96956096 9560E388 819485A2 *nny Valley,.Sunnington-on-Thames* 2 2 2 78 o 0000 0CD19685 40C29396 8787A26B 12E388A4 95848599 40D496A4 95A38189 956B0BD9 *.Joe Bloggs,.Thunder Mountain,.R* o 0020 81899540 E396A695 6B0DE295 96A6A840 C3998585 926B0CE6 899584A8 40C389A3 *ain Town,.Snowy Creek,.Windy Cit* 0040 A86B0CC8 81899360 969560E2 8581 *y,.Hail-on-Sea * o o SUMMARY.. SEL-ID SELTOT FILE BLKSIZE LRECL FSIZE CI DSN o ------ ------ ---- ------- ----- ----- -- --- o 1 2 READ INDD 96 96 U 2 SBR.TEST.A1 2 2 o o ** ** ** ** ** ** ** SELCOPY IS LICENSED BY COMPUTE (BRIDGEND) LTD +44 (1656) 652222 & 656466 ** ** ** ** ** ** ** o ** EXPIRY DATE -- 12 JUN 2001 ** o
Use of GOTO
Where logic is required to bypass or repeat operations, the GOTO statement can be used.
The following example processes a tape file with a logical record length of 38, and block size of 3160. The file consists of two different types of records:
- A header record, is always numeric in position 1 and 2.
- A transaction record, always has 'Z' in position 1.
The file is in ascending sequence of header records, but many header records may have the same number in positions 1 and 2.
It is required to select only the header records containing '81' in position 1 and 2, together with their associated 'Z' records, writing them to tape with an output blksize of 380.
At the same time we require a print of all the '81' Header records that were selected.
READ TAPE10 LRECL=38 * LRECL reqd for VSE only. IF POS 1 NE '81' THEN GOTO GET * Implicit label for 1st logical stmt. ==LOOP== ** Only '81' records drop through to here ** WRITE TAPE11 BLKSIZE=380 IF POS 1 NE 'Z' THEN PRINT STOPAFT=222 * Limit printing READ TAPE10 * No need to repeat LRECL. IF POS 1 GT '81' * 'Z' is < '8' THEN GOTO EOJ GOTO LOOP * Prevent automatic GOTO GET. =LOOPE= * Unref'd label. '=' for readability only
The THEN GOTO GET statement will cause looping around the first READ statement until we find a record with 81 in position 1. On finding it, control will drop through to LOOP, our main loop.
Because (for EBCDIC) "Z" is lower than numerics, checking position 1 for greater than "81" will never be satisfied by a transaction record. So we keep looping around until either we get End-of-file, or we find a record with 82 or more in position 1 and 2.
Compress / Expand
Storing data on disk is extremely inefficient when the data consists of many embedded blanks and other duplicated characters. To avoid this inefficiency, the COMPRESS/EXPAND facility has been introduced, allowing compression before writing, and expansion back to the full record size after reading a compressed record.
READ BIGFILE NORDW WORKLEN=2222 * Ignore the 4-byte RDW. COMPRESS FR 1 TO 1001 * Compress LRECL bytes. WR TAPEFIL FR 1001 RECFM=VB B=32000 L=4096 * Write Back-up.
Input file concatenation
The CAT statement:
Concatenation of input files is beneficial to MVS, VSE and CMS users, as any type of file may be concatenated. e.g. a sequential disk file, a VSAM file, a Card reader file, a Library Directory file, and even a VTOC file. No restrictions on record format, record length or blocksize.
CAT Example:
READ SEQDISK CAT DBAAAA00 DL1 SEG=DBAAAA01 * A DL1 data base. CAT CARD CAT LIB2DD DIR * A PDS directory. CAT TAPE10 * A magnetic tape. CAT ABCFILE KSDS WRITE BIGFIL * Your reqd RECFM etc.
CAT Example for VSE:
An example for VSE users is to read a standard MVS labelled tape containing 2 logical data sets, processing everything (all 6 physical data sets) as data by reading the tape as unlabelled using NL, No Label. An MVS data set on tape consists of 3 sections, each one terminated by a Tape Mark which denotes physical EOF (End-of-File) for a VSE unlabelled tape.
- The 1st section contains two 80-byte Header records for the data set, and on the 1st data set on the tape volume this section will also contain one 80-byte Volume label preceding the HDR records.
- The 2nd section contains the data records for the data set which may be of any length up to 32760 bytes.
- The 3rd section contains two 80-byte Trailer records for the data set.
Thus the 2 data sets constitute 6 unlabelled VSE files, which we will read as one file using the CAT statement. Note that TLBL cards are not required for unlabelled tapes.
// ASSGN SYS010,X'280' // ASSGN SYS011 etc up to SYS015, all to the same drive. // EXEC SELCOPY READ TAPE10 NL CLOSE=NORWD B=80 RECFM U CAT TAPE11 NL OPEN=NORWD CLOSE=NORWD B=32760 RECFM U CAT TAPE12 NL OPEN=NORWD CLOSE=NORWD B=80 RECFM U CAT TAPE13 NL OPEN=NORWD CLOSE=NORWD B=80 RECFM U CAT TAPE14 NL OPEN=NORWD CLOSE=NORWD B=32760 RECFM U CAT TAPE15 NL OPEN=NORWD B=80 RECFM U IF LRECL = 80 * Check length of current record. THEN IF P 2 = 'VOL' !OR P 2 = 'HDR' !OR P 2 = 'TRL' THEN PRINT TYPE M * Statistics info. THEN GG * GOTO GET if reqd. WRITE BIGFIL RECFM U LRECL 32760 * Make a Disk copy. /*
CAT Example for MVS:
An example for MVS users is to concatenate several associated files of different
types. e.g. A RECFM=FB unlabelled tape file, a RECFM=VB file and a VSAM ESDS on
different disk types. This mixture of files cannot be concatenated using JCL.
Assuming DD statements for TAPE1, DISK1, DISK2, SYSPRINT and SYSIN:
READ TAPE1 RECFM=FB L=46 INTO 11 WORKLEN 222 CAT DISK1 * Recfm, Blksize & Lrecl known to system. CAT DISK2 ESDS * Must identify as VSAM ESDS IF IN 1 !THEN MOVE 8 FR FNAME TO 1 * Current filename. IF POS 11 = 'CUST' * Test pos 1 of inp rec. THEN LRECL = L+10 * Allow for filename THEN PRINT * Print Customers only.
Directory and Data
CMS and VSE users may access directory and data records for generic groups of files and MVS users may access all members of single or concatenated PDSs, using the DIRDATA input facility.
CMS and MVS users may also Update-in-place, but for VSE an update file must be written out and used subsequently as input to a LIBR step.
For Data records SELCOPY's INCOUNT value is reset to 1 on reading the first data record from each library member or CMS file. For Directory records the INCOUNT value is simply increased by 1 to reflect the count of library members or CMS files. Directory and Data records are distinguishable using the IF DIR/IF DATA syntax.
MVS Summary of PDS Members:
A PDS contains a large number of CLISTs and REXX procedures which conventionally contain within the 1st 10 records a timestamp, level number and a short description of their purpose and call parameters. We will create a compendium of the descriptive text, spacing 2 lines between each member.
NOPRINT * Suppress print of ctl cards etc. READ INPDS DIRDATA * Read all PDS members. IF DIR * If it's a Dir record. THEN SPACE 2 * Print 2 blank lines. THEN PR TYPE=M * Use Mixed print for binary recstats. THEN GOTO GET * Means go to 1st logical statement. IF INCOUNT <= 10 * Select 1st 10 DATA recs THEN PRINT * Use default TYPE=N ELSE FLAG EOMEMB * Force to read next member.
CMS Generic Update:
An EXEC procedure becomes outdated and is replaced by another with a different name. All other EXEC's which call this need therefore to be updated to call the new name.
READ '* EXEC *' DIRDATA * Read all EXEC files. IF DIR * If it's a Dir record. AND POS 77 NE 'R/W' * Can't update if disk is read-only. THEN FLAG EODISK * Indicate End of Disk THEN GOTO GET * Bypass rest of disk. IF POS ANY = 'EXEC ABC' * Name of old EXEC. THEN POS @ = 'EXEC XYZ' * Change name THEN UPDATE '* EXEC *' * and update the file.
The above could easily be improved so that it prints the name of each file modified, and the names of the read-only files left unchanged.
VSE Library Generic Backup
This example will backup all payroll associated PROCEDURE and PHASE members from a VSE Library to a single tape file.
READ LIB1.SUB.PAY.* DIRDATA * Read all payroll files. IF DIR * If it's a Dir record. THENIF POS ANY = 'PHASE' * Further selection. OR POS ANY = 'PROC' THEN DUMMY * Do nothing. ELSE FLAG EOMEMB * Indicate End of Member. THEN GOTO GET * Will bypass data rec's. WR TAPEFIL RECFM=VB LRECL=4096 BLKSIZE=32000 * Copy to tape.
Back-up VSAM
Problem:
Back-up 6 small VSAM files to a single tape volume without the usual multi-file volume difficulties and dangers.
Solution:
Use SELCOPY to prefix a one-byte file identifier to each record and write all files to the same tape file, one after the other. Write RECFM=V output, blocked to device capacity, 32760. The overhead of 5 bytes for each record (4 for RDW and 1 for File Id) is more than compensated by the large blocksize. Use of NORDW on the restore suppresses the RDW from the input area. Omitting JCL for defining files, the SELCOPY control cards are below.
Notes:
SELCOPY treats lower case as upper case unless in 'quotes', the Exclamation Mark is a Line End Character, and valid abbreviations used are:
rd read w worklen fr from l lrecl b blksize t then pr print p pos ty type s stopaft li elseif ti thenif
VSAM is specified throughout for simplicity, but the same principle works for any file. RECFM, LRECL and BLKSIZE would be needed for VSE, but not for MVS and CMS as the operating system supplies this, as does VSAM.
Back-Up:
equ LMAX 4000 * Maximum record length. read F1 ksds into 102 w=LMAX+110 * GS009 DOC * cat F2 esds * INTO effective on all CAT's. cat F3 ksds * 2nd char of filename used as identifier. cat F4 esds cat F5 rrds cat F6 vsam * More CAT statements can be added. move 1 fr fname+1 to 101 * Set File Identifier (2nd char of filename). lrecl = L+1 * Add 1 to record length of current record. wr TAPE10 recfm=v b=32760 fr=101 do PRINTIT * Print sample of data backed up. goto get * GET is implicit label - 1st ctl stmt. ==PRINTIT== * Subrtn only coded for additional info on printer * if p 6 ne p 101 len 1 * same File Id No? t p 1 = 'File x --- started.' s 1 t move 1 fr 101 to 6 * Save File Id No. t space 2 !t pr l 30 * Print file id msg. if p 101 = '1' !t pr fr 101 ty=b s=3 * Print 1st 3 recs, Both char+hex. li p 101 = '2' !t pr fr 101 ty=b s=3 * and the same for F2 li p 101 = '3' !t pr fr 101 ty=b s=3 * and F3 li p 101 = '4' !t pr fr 101 ty=b s=3 * etc. li p 101 = '5' !t pr fr 101 ty=b s=3 li p 101 = '6' !t pr fr 101 ty=b s=3 =ret= * Return to statement following DO PRINTIT.
Restore All Files:
rd TAPE10 recfm v nordw blksize=32760 lrecl = L-1 * Reduce record length. if p 1 = '1' !t wr F1 ksds fr 2 li p 1 = '2' !t wr F2 ksds fr 2 li p 1 = '3' !t wr F3 esds fr 2 li p 1 = '4' !t wr F4 esds fr 2 li p 1 = '5' !t wr F5 rrds fr 2 li p 1 = '6' !t wr F6 vsam fr 2
Restore Just One File:
rd TAPE10 recfm v nordw blksize=32760 if p 1 lt '3' !t goto get * GET is implicit label - 1st ctl stmt. if p 1 gt '3' !t eoj * Force eoj when finished with file 3. lrecl = L-1 write F3 esds fr 2
Match the contents of 2 files
A file of JCL statements, OLDJCL, needs modification to numerous DSN fields, all of which are on the first line of the DD card. The file REPJCL contains just DD cards which are in any sequence, and any match of any DD name in OLDJCL must be substituted with the appropriate record from REPJCL. Other records are to remain unchanged, and the file NEWJCL is to be created.
SELCOPY treats lower case as upper case unless in 'quotes', the Exclamation Mark is a Line End Character, and the following abbreviations are used:
w worklen p pos l lrecl t then fr from wr write
//SELC5BLD JOB (0414OSVBT00),CLASS=A, // MSGCLASS=X,MSGLEVEL=(1,1) //ALTER EXEC PGM=SELCOPY //SYSPRINT DD SYSOUT=* //OLDJCL DD DSN=SELC5.OS.JCL(P7077),DISP=SHR //REPJCL DD DSN=SELC5.DSN.JCL3,DISP=SHR //NEWJCL DD DSN=SELC5.OS.JCL(P7077A),DISP=SHR //SYSIN DD * option w=80000 * Large workarea. equ ARRAY 4001 * Store area for REPJCL recs. equ ARRAYEND 79900 * End of array. @ = ARRAY * Set @ ptr to start of array. ==LOOP1== * Once only * Read whole of Base Data Set into an array. read REPJCL into @ * Read into array elem. if eof REPJCL then @END = @ * Save ptr to end of array. then goto LOOP1E * Go read 2nd file. @ = @+80 * Add 80 to @ ptr. if @ > ARRAYEND * If array is full. then goto cancel goto LOOP1 =LOOP1E= * LOOP1 end * ==LOOP2== *(Main Loop)* read OLDJCL * Read 2nd input file. if eof OLDJCL !t eoj * Go to successfull End-of-Job. * Match this OLDJCL record against all REPJCL records * using substitute record for output where appropriate. if p ARRAY+2,@END = 8 at 3 step=80 * Scan for DDNAME match. then wr NEWJCL fr @-2 * If same DD, use Substitute. else wr NEWJCL fr 1 * Write out orig record. goto LOOP2 * To read next record. =LOOP2E= * LOOP2 end * (Unreferenced label.)
In the above SELCOPY control cards, use is made of both the standard @ pointer and a user @ pointer which for convenience we have chosen to call @END.
The @ ptr is invaluable in giving a fixed reference point to a previously undefined position in your work area. It can be set either explictly by the assignment @ = 20 for instance, or implicitly by a successful range test. e.g. IF P 20 30 = ABC STEP=1 where STEP indicates the increment over the range for each subsequent compare. (STEP=1 is actually the default and needn't be coded)
Offsets may be obtained by coding @+n or @-n, where n is the offset required.
VM / CMS Update
Problem:
A very large CMS library needs modification to the directory date to force reorganisation.
Record 1 of the file holds the Directory record number as a 2 byte binary field at position 38. In the Directory record, position 107 contains a date in YYMMDD format which must change to set the Day number to zero. The year is 95, so we can verify this before the update.
XEDIT says it's too large.
EXECIO says the lrecl is greater than 256.
COPY says insufficient disk space - and anyway it takes too long.
Solution:
SELCOPY will fix it!
Just key it in:
l lib1 usrlib b ( alloc FILENAME FILETYPE FM FORMAT LRECL RECS BLOCKS LIB1 USRLIB B1 F 8192 8200 16400 R; SELC READ LIB1.USRLIB.B READ LIB1.USRLIB.B REC 2 AT 38 TY B IF P 107 '95' THEN P 111 '00' THEN UPDATE LIB1.USRLIB.B THEN LOG FR 101 LEN 50 TYPE B THEN STOP ELSE GOTO CANCEL INPUT OUTPT SEL RECNO RECNO ID. 1 2 3 4 5 ----- ----- --- ....,....0....,....0....,....0....,....0....,....0 0 2 1 5 950700 USRLIB Q w 48 000000FFFFFF00EDCDCC0E0100DE00040EA0B000FF05000022 00001095070001474392CF09018E005A3F63710048FF000009 R;
Or write an EXEC:
* NEWDAY EXEC * +++ LEVEL 002 +++ 94/04/21 17:07:32 +++ * Alters library's directory date to force REORG. FILEDEF LIB DISK LIB1 USRLIB B &BEGSTACK read LIB * Read 1st record. read LIB rec 2 at 38 ty b * Read specific record if p 1 = '--- KEY/REC NOT FOUND ---' then log '+++ DIR POINTER INVALID +++' then goto cancel if p 107 ones '000000' * Date will be numeric. and p 107 ge '75' le 2 at date * Check for valid Year. and p 109 ge '01' le '12' * Check for valid Month. and p 111 ge '01' le '31' * Check for valid Day. then p 111 = '00' * All OK - Zeroise Day No then update lib * Rewrite record to disk. then print type b * Print whole record, both char and hex. then eoj else log '+++ EXISTING DATE INVALID +++' then goto cancel &END &STACK EXEC SELC &EXIT &RETCODE
DB2 Table Columns
SYSIBM.SYSCOLUMNS is the DB2 table which describes every column of every table within a DB2 SubSystem. For our example we'll list from it a few columns of interest for a specified table and use the CHAR option to return all information in displayable character format.
read F1 tab=SYSIBM.SYSCOLUMNS char \ fmt='name,TBNAME,TBCREATOR,COLNO,COLTYPE,LENGTH,SCALE' \ where="TBNAME='TYPE_TEST'" \ order='colno' print * Print the row.
The code for this SQL operation is quite long, so we have used the SELCOPY statement continuation feature. The continuation character is a backslash (\) as the last character of a control statement.
The following is output from the above control cards with a subroutine added which generates column headings by analysing the SQL Descriptor Area using the SELCOPY positional keyword SQLDA.
SELCOPY REL 9.80 AT CBL-VMPS31 MVS 5.2.2 OS JOB=P390A 13.47 WED 14 MAY 1997 PAGE 1 o ---------------------------------------- -------------------------------------- -------- o o ** CBL.SSC.CTL(DB2SBR2) *** L=101 +++ 97/05/14 13:47:19 (P390A) o * Demonstrate Table Column listing. o o equ hd 1001 opt w 2222 o o rd f1 tab=sysibm.syscolumns char \ fmt='name,TBNAME,TBCREATOR,COLNO,COLTYPE,LENGTH,SCALE' \ o where="TBNAME='TYPE_TEST'" \ o 1. order='colno' o o 2. do heading stopaft=1 o 3. print * Print the row. o 4. goto get o o ==heading== o ------- o 5. @n = 2 at sqlda+14 type=b * Number of cols in use. 6. @sqlv = sqlda+16 * Point to 1st var. o 7. pos uxatptr = 4 at @sqlv+4 * Sets @ -> 1st col in workarea. o 8. @1stc = @ * Keep as @1stc. o =loop= o ---- 9. pos uxatptr = 4 at @sqlv+4 * Sets @ -> this col in workarea. o 10. pos hd+@-@1stc-1 = '|' o 11. pos hd+@-@1stc-1+100 = '|' 12. pos hd+@-@1stc = 18 at @sqlv+14 o o if @n > 1 o 13. then @n=@n-1 o 14. then @sqlv=@sqlv+44 15. then goto loop o o 16. pr fr hd o 17. tran Lrecl at hd+100 ' ' '-' o 18. pr fr hd+100 19. =ret= o o INPUT SEL SEL 1 RECORD o RECNO TOT ID. 1 2 3 4 5 6 7 8 9 0 LENGTH o ----- --- --- ....,....0....,....0....,....0....,....0....,....0....,....0....,....0....,....0....,....0....,....0 ------ 1 1 16 NAME |TBNAME |TBCREATO|COLNO |COLTYPE |LENGTH|SCALE 76 o 1 1 18 ------------------|------------------|--------|------|--------|------|------ 76 o 1 1 3 TTINT |TYPE_TEST |P390 | 1|INTEGER | 4| 0 76 2 2 3 TTSINT |TYPE_TEST |P390 | 2|SMALLINT| 2| 0 76 o 3 3 3 TTDEC |TYPE_TEST |P390 | 3|DECIMAL | 7| 2 76 o 4 4 3 TTCHAR |TYPE_TEST |P390 | 4|CHAR | 8| 0 76 5 5 3 TTVCHAR |TYPE_TEST |P390 | 5|VARCHAR | 30| 0 76 o 6 6 3 TTFLOAT |TYPE_TEST |P390 | 6|FLOAT | 8| 0 76 o 7 7 3 TTREAL |TYPE_TEST |P390 | 7|FLOAT | 4| 0 76 ....,....0....,....0....,....0....,....0....,....0....,....0....,....0....,....0....,....0....,....0 o o SUMMARY.. SEL-ID SELTOT FILE BLKSIZE LRECL FSIZE CI DSN o ------ ------ ---- ------- ----- ----- -- --- o 1 7 READ F1 76 U 7 2 1 o 3----4 7 o 5----8 1 9---12 7 o 13---15 6 o 16---19 1 o o ** ** ** ** ** ** ** SELCOPY IS LICENSED BY COMPUTE (BRIDGEND) LTD +44 (1656) 652222 & 656466 ** ** ** ** ** ** ** ** EXPIRY DATE -- 12 JUN 2001 **
The following special arguments for the SELCOPY POS keyword are supported:
POS SQLCA Refers to the SQL Communication Area.
POS SQLDA Refers to the SQL Descriptor Area.
POS SQLMA Refers to the SQL Message Area.
IMS / DL1 Database
We will print a sample of a DL1/IMS Data Base, together with
Segment names and Level numbers, restricting the
print to the first 50 segments.
For clarity, we will space a line on the print every time we
hit a Root Segment which is identified by a Level number
of 01 in the PCB feedback area.
Fields in DL1's PCB may be referenced using SELCOPY's
positional keywords:
Keyword | Description | Length | Type |
---|---|---|---|
POS PCB | Database Name | 8 | Char |
POS PCB+8 | Seg Level | 2 | ZonedDec |
POS PCB+10 | Status Code | 2 | Char |
POS STATUS | Synonym for PCB+10 | ||
POS PCB+12 | Processing Options | 4 | Char |
POS PCB+16 | Reserved | 4 | |
POS PCB+20 | Segment Name | 8 | Char |
POS SEG | Synonym for PCB+20 | ||
POS PCB+28 | Length of Key | 4 | Binary |
POS PCB+32 | No of Sensitive Segs | 2 | Binary |
POS PCB +36 | Key Feedback Area | Var | Char |
We will use a work area (automatically initialised to blanks by
SELCOPY) which is larger than the largest record, and read
segments (records) into position 101.
But segments shorter than 100 bytes may have residual data still
in the work area from the last segment. This must be cleared
with blanks before printing.
POS LRECL in SELCOPY refers to the last byte of the current
input record assuming it was read into position 1, but in our case,
we read our record into a position 100 bytes further on, so
LRECL+100 is the last byte of the current record. It is
therefore position LRECL+101 which needs to be blanked.
L+101 is a valid abbreviation.
After moving in the Segment Name and Level no to the front of the
work area, we will print it, restricting the print length to 200
and spacing one line first if we have a root segment to print. In
spite of the restriction of L=200 on the PRINT command, it is still
the true segment length of each individual segment which is
printed on the right hand side of the SELCOPY report.
The Status Code is not checked because EOF is handled automatically
by SELCOPY as well as any major error conditions.
SELCOPY Control Cards
read DBNAME DL1 into 101 w 2222 * Work area length 2222. pos L+101,200 = ' ' * Blank out residual data. move 2 fr pcb+8 to 1 * Segment Level No. move 8 fr seg to 10 * Segment Name. if pos pcb+8 = '01' * Is it a Root Segment? t space 1 * Extra blank line. t p 20 = '*=* ROOT SEGMENT OF DB xxxxxxxx *=*' t move 8 fr pcb to 43 * Data Base name. else pos 20,80 = ' ' print L 200 s 50 * First 50 segs, length 100.
Notes
- SELCOPY treats lower case as upper case unless in 'quotes'. Some common abbreviations are:
rd read w worklen fr from l lrecl b blksize t then pr print p pos ty type s stopaft li elseif ti thenif
Change "t space 1 " to " t line 1 " to force a new page. You could also display the Processing Options. Use POS PCB+12.
Usage under TSO
The following live example illustrates use from TSO's READY message, using the S CLIST (provided on the distribution tape) to invoke SELCOPY, taking its control cards from parameter 1.
Using the command 'S TERM', the CLIST allocates both SYSIN and SYSPRINT to the user's terminal. This type of invocation is ideal for one-off jobs to investigate, for instance, the layout of files, or for simple fixes as shown in the following example.
We wish to read all members of a PDS with the dataset name, 'userid.ABCD', which happens to contain JCL. Where the JCL calls the program IEWL, replace it with a call to the program XXXX. This, of course, is not a real program name but serves as an example.
READY s term /* TO END - ENTER SELCOPY CONTROL CARDS ... rd A dsn=abcd dirdata upd!if p any = 'IEWL'!t p @ = 'XXXX'!t upd A!t pr SELCOPY REL 9.8P AT CBL - Bridgend UK (Internal Only) ----------------------------------------------------- 1. RD A DSN=ABCD DIRDATA UPD IF P ANY = 'IEWL' 2. T P @ = 'XXXX' 3. T UPD A 4. T PR /* INPUT SEL SEL RECNO TOT ID. 1 2 3 4 5 6 ----- --- --- ....,....0....,....0....,....0....,....0....,....0....,....0.. 77 1 4 //LNK EXEC PGM=XXXX,REGION=500K, 76 2 4 //LNK EXEC PGM=XXXX,REGION=500K, 35 3 4 //LNK EXEC PGM=XXXX,REGION=500K, 35 4 4 //LNK EXEC PGM=XXXX,REGION=500K, ....,....0....,....0....,....0....,....0....,....0....,....0.. SUMMARY.. SEL-ID SELTOT FILE BLKSIZE LRECL FSIZE CI DSN ------ ------ ---- ------- ----- ----- -- --- 1 320 READ A 23440 80 FB 4 P390B.ABCD 2 4 3 4 UPD A 23440 80 FB 4 P390B.ABCD 4 4 ** ** ** ** ** ** ** SELCOPY IS LICENSED BY COMPUTE (BRIDGEND) LTD +44 ( ** EXPIRY DATE -- 12 JUN 2001 **) READY
The above example is perfectly good for a controlled example, but has certain short-comings if we consider changing a more commonly used string.
- There is no check to ensure that we don't update directory records.
- Only the first occurence of the string within each record will be modified.
An easier and better (in that it eliminates the deficiencies
above) way to achieve the same update would be to use a REXX
exec called SCANPDS, which is also provided on the SELCOPY
distribution tape.
It's syntax is: SCANPDS ddname string1 string2
ddname is the ALLOC for the input PDS
string1 is the string to scan for
string2 if provided is used to overwrite string1,
wherever found, and update that PDS member record.
For our example we would key in: SCANPDS abcd IEWL XXXX
Dynamc Allocation
MVS, VSE and CMS datasets may be processed without a DD, DLBL or FILEDEF statement by providing the full dataset name on the SELCOPY I/O command, either as a literal or as a field in the workarea giving a variable data set name.
Dynamic allocation has a variety of uses in all environments. A simple application for MVS is shown below, which uses SELCOPY to copy selected members of a PDS to another new PDS. For this example, we will select members with '96' anywhere in the member name.
read PDSINP dsn='CBL.PDS.SSPDSC' dirdata into 101 worklen 33333 * Read directory record and data * records for each PDS member. if dir * If it's a PDS directory record then do SELECTION * then selectively open a new output memb. else write PDSOUT fr 101 * Copy record to the output member. goto get ==SELECTION== ** Process the PDS directory records ** if pos 101,107 = '96' * Select if '96' appears anywhere in the name. then pos 1,44 = 'CBL.PDS.SSPDSC.Y96' stopaft 1 * Output DSN. then pos 45 = '(12345678)' stopaft 1 * Append the then pos 46 = 8 at 101 * memb name. then open PDSOUT dsn = 44+10 at 1 * CLOSE is automatic. else flag eomemb * Suppress the OPEN for this input member. return
Programming Notes
- SELCOPY tolerates blanks padding the variable DSN up to 44 bytes and blanks padding the member name up to 8 bytes.
- The SELCOPY feature, DIRDATA, is used to read all DIRectory
and DATA records from the PDS, opening each member in turn,
provided FLAG EOMEMB has not been set.
DIRDATA input for MVS returns the directory record for each member, followed by its data records. (For VSE and CMS, the directory records are reformatted by SELCOPY.) PDS member selection may then be based on any combination of information held in the directory record. e.g. member name, userid, timestamps, record count/file size, authorisation code.
- Although not illustrated above, at the same time, using a few
additional statements, the output member name could have been
changed to rationalize it so that the '96' falls in a fixed
position.
SELCOPY for Microsoft Windows
The following SELCOPY/WNT job will generate and dynamically execute File Transfer Program commands to SEND a generic group of files to your mainframe.
Although this example uses an MVS Partitioned Data Set to receive the PC files it could easily be modified for any environment and any FTP command.
Note:
Occurrences of %1, %2 and %3 in the control card syntax refer to the parameters passed to SELCOPY/WNT on the invoking command line.
equ pdsname 1 equ dirrec 101 option w 32760 do init stopaft=1 * Initialise once only. rd %1 dir into dirrec * Read a directory rec into pos 101. pos dirrec-1+38 = ' ' * Blank out the '.' pos @fn = 9 at dirrec-1+30 * fn followed by a blank. if p @fn,@fn+9 = ' ' * Bound to get one. then pos @,@fn+10 = ")'" pos dirrec-1+60-5 = 'send ' if lrecl < 80 then pos dirrec+lrecl,dirrec+80 = ' ' then lrecl = 80 * Keep it neat. pos dirrec+lrecl = pos 1,@fn+22 log fr dirrec-1+60-5,dirrec+lrecl-1+@fn+22-1 system fr dirrec-1+60-5,dirrec+lrecl-1+@fn+22-1 * wr ssftp.cmd fr dirrec-1+60-5,dirrec+lrecl-1+@fn+22-1 * To run in OS/2. gg ==init== ** Initialisation sub-routine ** pos pdsname+3 = %2 !lower 1 at pdsname+3 * The emulator session. pos pdsname+3+1 = ":'" * x: pos pdsname+3+3 = %3 * x:receive.pds.name if p pdsname+3,pdsname+99 = ' ' * Scan for blank. then @fn = @+1 lower from pos pdsname+3,@fn * Lower case the dsn. pos @fn-1 = "(ABCDEFGH)' ascii crlf" * x:receive.pds.name(ABCD.. etc =ret=
Invocation
Assuming that the above control cards are stored in the file d:\cbl\SSFTP.ctl, then keying in at the DOS prompt
selcopy <d:\cbl\SSFTP.ctl c:\dos\*.BAS C CBL.FTPTEST
could generate and execute the following FTP commands:
send c:\dos\GORILLA.BAS c:'cbl.ftptest(GORILLA)' ascii crlf send c:\dos\MONEY.BAS c:'cbl.ftptest(MONEY)' ascii crlf send c:\dos\NIBBLES.BAS c:'cbl.ftptest(NIBBLES)' ascii crlf send c:\dos\REMLINE.BAS c:'cbl.ftptest(REMLINE)' ascii crlf
The command line may seem a little long winded, in which case it would be worthwhile setting up a BAT file: e.g.
:** h:\cg\SSFTP.BAT kkk L=101 --- 97/06/19 11:24:32 (P22) : Format: ssftp fileid_with_wildcard emulator_session mvs_pds_dsn : e.g. ssftp C:\CBL\*.T* B CBL.SELC980.DM selcopy <d:\cbl\ssftp.ctl %1 %2 %3
CBLVCAT
Simple Reporting
Standard Report: Catalog
A readable replacement for IDCAMS LISTCAT with VSAM or ICF catalogs.
The CBLVCAT standard report provides a condensed report in a fraction of the time. The important data component information is contained on a single line. Other catalog information is available through the customised report feature.
CBLVCAT REL 2.10 AT COMPUTE (Bridgend) Ltd - Wales (OS) VM/CMS=VM03 11.41 MON 05 JAN 2004 PAGE 1 o -------------------------------------------------- -------------------------------------- -------- o ** VMXVFULL CTL M *** L=003 --- 2004/01/05 09:57:41 *id * o o listvcat ddname=CBLV01 o o USERCAT CBLV01 (3350) TYPE NRECS PCNT ---- ALLOC TRACKS ---- FRSP LMAX KL,RKP CISIZE BUFSP EXCPS TIMESTMP --------------------- ---- ----- ---- TOTAL PRIME SEC CI CA ---- /BLK/IMB ------ /IXL ----- -------- o o CBL.VSAM.CATALOG KSDS 57 35.2 12 12 3 505 44,0 512 3072 7172 2003/02/07 16.25.38 ---------------- IX 3 3.6 3 3 3 505 --IMB-- 512 IXL=2 460 o CBL.TEST.ABCD.CATALOG KSDS 13 27.1 2 2 0* 512 45,10 2048 6144 365 2003/02/17 19.06.12 o IX 1 12.5 1 1 0* 2041 2048 335 CBL.TEST.ABCD.CATALOG2 KSDS 13 27.1 2 2 0* 512 45,10 2048 6144 6 2003/02/23 23.57.58 o IX 1 12.5 1 1 0* 2041 2048 6 o CBL.TEST.VVDS ESDS 7 6.3 2 2 0* 400V 2048 4096 283 2003/02/17 19.05.42 CBL.TEST.VVDS2 ESDS 7 6.3 2 2 0* 400V 2048 4096 4 2003/02/23 23.42.38 o EG.OF.LOW.BUFSP.HIGH.IXCISIZE o KSDS 401 33.5 C=2 C=1 C=1 25 20 800 4,0 4096 12288* 275 2003/11/09 00.55.09 IX 3 75.0 1 1 1 4089 +4096+ IXL=2 145 o FILE.CREATED.BY.XYZ3 RRDS 2 20.0 1 1 1 1200 3072 6144 4 2003/11/08 21.29.49 o NO.SEC.ALLOC.1 KSDS 5 3.2 10 10 0* 1017 4,0 2048 6144 9 2003/11/09 01.09.34 IX 1 12.5 1 1 0* 2041 2048 5 o PRIME.SPACE.TEST.FILE ESDS 25 ** ALL** 1 1 1 300V 1024 2048 6 2003/11/02 16.57.20 o SQ2051.TEMP.TEST.FILE ESDS 1 3.8 1 1 1 2000V 512 SPANNED 4 2003/12/12 17.07.24 STUVE.TEST.FILE ESDS 17 7.5 1 1 1 120V 512 1024 28 2002/02/22 09.36.06 o STUVK.TEST.FILE KSDS(R) 5 2.1 1 1 1 100V 7,8 1024 3072 82 2002/07/19 05.49.06 o IX 1 6.7 1 1 1 1017 1024 32 SPACE.TEST.FILE RRDS 17 **85.0** 2 1 1 1200 3072 6144 37 2002/02/22 07.49.39 o XYZ1.KSDS.FILE KSDS(R) 1 0.1 10 10 0* 17 5,10 1024 3584 10 2003/11/08 21.41.01 o IX 1 9.1 1 1 0* 1529 1536 7 XYZ2.ENTRY.SEQ ESDS 7 0.7 20 20 0* 2038V 2048 4096 8 2003/11/08 21.50.58 o XYZ4.EXAMPLE.1 ESDS 2472 76.6 16 8 8 800V 4096 8192 31 2003/11/09 00.05.15 o XYZ4.FILE KSDS 1 3.2 2 2 0* 1017 5,0 2048 6144 4 2003/11/09 01.03.37 IX 1 12.5 1 1 0* 2041 2048 4 o XYZ8.KSDS.FILE KSDS(R) 6 0.1 10 10 0* 17 5,10 1024 3584 7 2003/11/09 01.33.02 o IX 1 9.1 1 1 0* 1529 1536 4 XYZ9.KSDS.FILE KSDS(R) 6 0.1 10 10 0* 17 5,10 1024 3584 8 2003/11/09 01.17.46 o IX 1 9.1 1 1 0* 1529 1536 5 o --- --- -- o 177 138 52 o --- --- -- o o ------ DEV CHARS ------ DATA SPACE DATA --------- TRACKS --------- o VOLUME CRA TYPE MIN-CA MAX-CA SETS CLASS SPACES ALLOC USED PCNT FREE MAXF TIMESTMP o ------ --- ---- ------ ------ ---- ----- ------ ----- ---- ---- ---- ---- -------- CBLV01 NO 3350 13.5-18K 405-540K 28 0 1 240 177 73.8 63 56 2003/02/07 16.25.32 o o o o ** ** ** ** ** ** ** CBLVCAT IS LICENSED BY COMPUTE (BRIDGEND) LTD +44 (1656) 652222 & 656466 ** ** ** ** ** ** ** ** EXPIRY DATE -- 12 JUN 2004 **
Notes:
In addition to displaying Catalog information, warning indications (*,+) are given when various, user controlled, threshold values are passed, thus problems are discovered before they become serious. Some of these indications are shown above and have the following meanings:-
- EG.OF.LOW.BUFSP.HIGH.IXCISIZE - Will have a performace problem as the BUFSP is too small.
- EG.OF.LOW.BUFSP.HIGH.IXCISIZE - Has an excessively large Index CISIZE which adds to data transfer time.
- SPACE.TEST.FILE - File is nearly full.
- NO.SEC.ALLOC.1
- Has no secondary allocation defined. This is highlighted because the
file cannot be expanded.
Standard Report: VTOC
The VTOC standard report is used in place of IEHLIST/LVTOC, providing a readable and condensed report. The important VTOC information is contained on a single line. Other VTOC information is available through the customised report feature.
CBLVCAT REL 2.10 AT COMPUTE (Bridgend) Ltd - Wales (OS) VM/CMS=VM03 16.11 MON 23 JUN 2003 PAGE 1 o -------------------------------------------------- -------------------------------------- -------- o ** VMXTFULL CTL M *** L=101 2003/06/23 16:11:51 *id * o listvtoc vol=CBLT93 o freetab o o VTOC OF CBLT03 CISIZE START ALLOC USED TYPE EXPIRES BLKSIZE LRECL RECFM CREATED INFO -------------- ------ ----- ----- ---- ---- ------- ------- ----- ----- ------- ---- o o VTOC 557256 286 13 FBA 96 96 OWNED BY VSAM CATALOG o TEST.SCRN.LIBRARY.4 512 155044 1244 PERMANENT 2003/03/23 NOT LAST VOL o TEST.SOURCE.LIBRARY.4 512 156288 36000 PERMANENT 2003/03/23 NOT LAST VOL Z9999994.VSAMDSPC.T9A1BDD6.T8976140 o 512 331824 744 VSAM PERMANENT o Z9999992.VSAMDSPC.T9A1BDD9.T8014540 512 332568 224688 VSAM PERMANENT o MASTER SORT TABLE 4608 661640 160 PERMANENT 2002/11/26 o WORK MASTER 8192 661800 2304 PERMANENT 2003/01/15 ACCOUNTS-DATA 2560 664104 4000 *EXPD* 2002/03/20 FILE SERIAL CBLT13 o V.TSTDATA 4096 669704 4672 2003/09/13 2003/03/21 o B.TSTDATA 4096 674376 5760 2003/09/13 2003/03/21 RRR.SORTS 2560 680136 3200 PERMANENT 2003/03/04 o PRODN.HIST.FILE 10240 697128 15624 PERMANENT 2003/03/24 ***INVALID EXTENT*** o ------------------------------------------------------------------ o o FREE SPACE ON CBLT03 2 155042 OLDEST 2002/03/20 192288 139536 LATEST 2003/03/24 o 557542 104098 VTOC RECS LIVE.....12 o 664104 4000 EXPD EXPD......1 668104 1600 FREE....271 o 683336 13792 TOTAL....284 o TOTAL FREE BLOCKS 418068 OUT OF 712512( 41% USED) o ** ** ** ** ** ** ** CBLVCAT IS LICENSED BY COMPUTE (BRIDGEND) LTD +44 (1656) 652222 & 656466 ** ** ** ** ** ** ** o ** EXPIRY DATE -- 12 JUN 2004 **
Notes:
- This example shows how FREESPACE can be reported as a table at the end of
the report, via the run time option FREETAB. It is possible to make
this the default option by modifying the supplied program CBLNAME.
- Files shown as PERMANENT have an expiry date of 2099/366 (or 2099/365
if not defined as a retention period) - See RRR.SORTS for example.
- Files with an expiry date less than or equal to today's date show as
EXPIRED. - See ACCOUNTS-DATA.
- The eye-catcher ***INVALID EXTENT*** on the file PRODN.HIST.FILE
indicates that the extent is not totally within the disk extent limits held
in the Format 4 label in the VTOC.
- For the file ACCOUNTS-DATA the file serial number CBLT13 is
displayed because it is different from the disk volume serial number.
(Possibly caused by changing the VOLID after creation of the file).
- NOT LAST VOL indicates that the file has more extents on another volume,
or it has not been closed as a sequential file when created.
- OWNED BY VSAM CATALOG shows that this volume is a prime or candidate
volume of a VSAM catalog and thus not available for other VSAM catalogs.
VSE Standard Label Report
A concise and readable replacement for the LSERV label information area report. The LSERV equivalent of the listing shown below extended to 1174 lines, whereas LISTLABL consists of only 111 lines in total.
CBLVCAT REL 2.10 AT COMPUTE (Bridgend) Ltd - Wales 16.11 MON 23 JUN 2003 PAGE 1 o -------------------------------------------------- --------------------- -------- o o LISTLABL *** o o PARTN FNAME STD LABEL DSN SYSNO VOLUME CAT/TYP DISP EXPIRES BUFNI BUFND START/PRECS ALLOC/SRECS RECSZ INFO o ----- ----- ------------- ----- ------ ------- ---- ------- ----- ----- ----------- ----------- ----- ---- BG(T) CBLVSAM CBL.VSAM.LABEL.BG SYS001 SYSWK1 (V) N,T,K 99 2221 3000 o BG(T) CBLTEMP CBL.TEMP.LABEL.BG SYS001 SYSWK1 (S) 2010/022 5510 7851 o BG CBLMULT CBL.MULT.EXT.FILE.BG.VERY.LONG.DSN SYS001 SYSWK1 (S) 7 32767 32767 EXT=000 o SYS002 SYSWK2 32768 32768 EXT=001 o SYS003 SYSWK3 65535 77566 EXT=002 o o PARTN FNAME STD LABEL DSN SYSNO VOLUME CAT/TYP DISP EXPIRES BUFNI BUFND START/PRECS ALLOC/SRECS RECSZ INFO ----- ----- ------------- ----- ------ ------- ---- ------- ----- ----- ----------- ----------- ----- ---- o F2(T) IJSYS01 %DOS.WORKFILE.SYS001.RECOVER VSESPUC N,K 30 50 4096 o F2(T) IJSYS02 %DOS.WORKFILE.SYS002.RECOVER VSESPUC N,K 30 50 4096 o o PARTN FNAME STD LABEL DSN SYSNO VOLUME CAT/TYP DISP EXPIRES BUFNI BUFND START/PRECS ALLOC/SRECS RECSZ INFO ----- ----- ------------- ----- ------ ------- ---- ------- ----- ----- ----------- ----------- ----- ---- o CL=D LCLASSD CBL.CLASS.D.LABEL SYS001 SYSWK1 (S) 7 o CL=S LCLASSS CBL.CLASS.S.LABEL SYS001 SYSWK1 (S) 7 CL=X LCLASSX CBL.CLASS.X.LABEL SYS001 SYSWK1 (S) 7 o o PARTN FNAME STD LABEL DSN SYSNO VOLUME CAT/TYP DISP EXPIRES BUFNI BUFND START/PRECS ALLOC/SRECS RECSZ INFO o ----- ----- ------------- ----- ------ ------- ---- ------- ----- ----- ----------- ----------- ----- ---- o STD IJSYSRS VSE.SYSRES.LIBRARY SYSRES DOSRES (S) 2099/365 2 59146 STD IJSYSR2 VSE.SYSRES.LIBRARY SYSCAT DOSRES (S) 2099/365 2 59146 o STD IJSYSR1 SYS.NEW.RES SYSWK1 (S) 2099/365 2 59146 o STD IJQFILE VSE.POWER.QUEUE.FILE SYS001 DOSRES (DA) 2099/365 59520 372 STD DFHJ01A CICS.SYSTEM.LOG.A SYS019 DOSRES (S) 297538 3038 o STD DFHJ01B CICS.SYSTEM.LOG.B SYS019 DOSRES (S) 300576 3038 o STD DFHJ02A CICS.USER.JOURNAL.A SYS019 DOSRES (S) 303614 3038 STD DFHJ02B CICS.USER.JOURNAL.B SYS019 DOSRES (S) 306652 3038 o STD IJSYSHF VSE.SYSTEM.HISTORY.FILE SYSCAT DOSRES (S) 2099/365 309690 5022 o STD SYSDUMP VSE.DUMP.LIBRARY SYSWK1 (S) 2099/365 195858 37014 STD DTSFILE ICCF.LIBRARY SYS010 SYSWK1 (DA) 2099/365 305970 70060 o STD IJDFILE VSE.POWER.DATA.FILE SYS002 SYSWK1 (DA) 2099/365 392956 72044 o STD IJAFILE VSE.POWER.ACCOUNT.FILE SYS000 SYSWK1 (DA) 2099/365 465000 2108 STD VSEJMGR VSESP.JOB.MANAGER.FILE SYSREC SYSWK1 (S) 2099/365 467108 186 o STD IJSYSCN VSE.HARDCOPY.FILE SYSREC SYSWK1 (S) 2099/365 467294 5022 o STD IJSYSRC VSE.RECORDER.FILE SYSREC SYSWK1 (S) 2099/365 472316 1054 STD BLNDMF INFO.ANALYSIS.DUMP.MGNT.FILE SYS016 SYSWK1 (S) 478392 248 o STD BLNXTRN INFO.ANALYSIS.EXT.RTNS.FILE SYS017 SYSWK1 (S) 2099/365 478640 124 o STD TRFILE VTAM.TRACE.FILE SYS001 SYSWK1 (S) 2099/365 478764 496 STD NCPLOAD CU37XX.LOAD.FILE SYS005 SYSWK1 (S) 2099/365 479260 3038 o STD MSGUSR CICS.MSGUSR SYS018 SYSWK1 (S) 482298 434 o STD IJSYSCT VSAM.MASTER.CATALOG (V) 2099/365 STD IJSYSLN %DOS.WORKFILE.SYSLNK VSESPUC 400 600 322 o STD IESCNTL VSE.CONTROL.FILE VSESPUC 7 o STD IESTRFL VSE.TEXT.REPSTORY.FILE VSESPUC 7 STD IESTRWF VSE.TEXT.REPSTORY.WORKFILE VSESPUC 7 o STD IESMSGS VSE.MESSAGES.ONLINE VSESPUC 7 o STD IESPRB VSE.ONLINE.PROB.DET.FILE VSESPUC 7 STD IESROUT VSE.MESSAGE.ROUTING.FILE VSESPUC 7 o STD DFHSTM CICS.AUTO.STATS.A VSESPUC N,K o STD DFHSTN CICS.AUTO.STATS.B VSESPUC N,K STD DFHNTRA CICS.TD.INTRA VSESPUC o STD DFHTEMP DFHTEMP VSESPUC o
Notes:
The order of the report is:
- Partition standard labels (temporary and permanent).
- Class (Dynamic partition) standard labels.
- System standard labels.
Simple Customised Report
Customising the report can be very useful, for example:
- Reporting only the information you require.
- Reporting information not contained in the standard report.
The example below is for an ICF catalog, but it should be noted that the REPORT operation can also be used on VSAM catalogs and VTOCs.
If for instance you want to know which files contain the most records then searching through the full report can be tedious. Obtaining only the information you require is Quick and Easy with the Customised Report facility.
___________________________________________________________________________________ | / | CBLVCAT REL 2.10 AT COMPUTE (Bridgend) Ltd - Wales 2003/09/26 PAGE 1 \ | o -------------------------------------------------- ---------- -------- / | \ | REPORT VCAT DSN SORTD NRECS TYPE / | o \ | LISTCAT REF=WXYZ.NRECS1 NOINDEX / | \ | o / | ICF CAT CBLI94 (3380) NRECS TYPE \ | --------------------- ----- ---- / | o \ | LOTS.NRECS1 62828 KSDS / | ABCD.NRECS1 61430 KSDS \ | o WXYZ.NRECS1 57809 KSDS / | LESS.NRECS1 57784 KSDS \ | ABCD.123.LESS.NRECS 7500 RRDS / | o SMALLER.NRECS.123 2250 RRDS \ | LAST.SHOWN.NRECS.12 1323 KSDS / |/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\\
Notes:
- The REPORT command is used to define the format of the report,
in this example the three fields requested are the Dataset name
(DSN), the number of records for that file (NRECS) and
the file type (TYPE).
- The positional SORTD parameter invokes a descending sort of output
based on the keywords that follow it, in this case NRECS and
TYPE, giving a sort on the number of records and type.
- The REF=WXYZ.NRECS1 parameter is used to identify the required
catalog, instead of supplying a DD card for the catalog itself and using
DDNAME. The DSN supplied may be the catalog dataset name, an alias or
the name of any file contained within the catalog. Thus you need only
know the name of one file within the catalog, CBLVCAT will do the
rest.
- The NOINDEX parameter causes the index lines to be suppressed for
KSDS and AIX files.
- The user can select from 59 Catalog and 15 VTOC items to
build reports of varying complexity. See the Advanced Customised Reporting
example below.
Selective Reporting
So far, LISTVCAT and LISTVTOC reports have been restricted to a single catalog or VTOC, but often the files you require are spread over more than one catalog or VTOC.
The example below is merging 2 VSAM catalogs, but it should be noted that the MERGE and SUBSET parameters can also be used on ICF catalogs and VTOCs.
Creating a report, on a subset of selected files, across multiple catalogs is easy.
___________________________________________________________________________________ | / | CBLVCAT REL 2.10 AT COMPUTE (Bridgend) Ltd - Wales 2003/09/26 10:02\ | o -------------------------------------------------- ----------------/ | \ | REPORT VCAT DSN 30 SORTD NRECS 14 CATALOG / | o \ | LISTVCAT DD=CBLV03 MERGE * Combine 2 reports / | SUBSET * Select if : (opt parameter) \ | o IGN=/CICS * 'CICS' not in DSN / | KEY=TEST * DSN starts 'TEST' \ | NRECS=1 * File is not empty / | o TYPE=EK * ESDS or KSDS \ | NOVOL NOASSOC NOINDEX * Limit report / | \ | o LISTVCAT DD=CBLV04 * Same parameters as above / | IGN=/CICS KEY=TEST TYPE=EK NRECS=1 NOVOL NOASSOC NOINDEX \ | / | o \ | / | DATASET NAME NRECS CATALOG \ | o ------------ ----- ------- / | \ | TEST3.TRANS.HISTORY.QUARTER 2557934 VSAM.R1.TEST.VOL04 / | o TEST2W.WORK.HISTORY.WEEKLY 43555 VSAM.R1.TEST.VOL04 \ | TEST2W.WORK.HISTORY.WEEKLY.SOR 30067 VSAM.R1.TEST.VOL04 / | TESTFLE 1519 FBA.USER.CATALOG.A \ | o TESTENT 80 FBA.USER.CATALOG.A / | TEST2.TRANS.HISTORY.WEEKLY 1 VSAM.R1.TEST.VOL04 \ | / | o \ | / | \ | o / | ** ** ** CBLVCAT IS LICENSED BY COMPUTE (BRIDGEND) LTD 0656-652222, 0656-65646\ | ** EXPIRY DATE -- 12 JUN 2004 ** / |__________________________________________________________________________________\
Notes:
- The MERGE parameter is used to combine multiple reports into one.
- By supplying REPORT, MERGE and SUBSET the user is able to
display exactly the information required.
- The SUBSET parameter is optional because all its associated
sub-parameters are unique, although you may prefer to include it to
remind you of their function. To be selected, a file must satisfy
all the subset parameters that are supplied. There is one
exception to this. Multiple KEY and/or IGN parameters
are supported. You can regard the KEY and IGN parameters
as forming a combined name filter.
- The above LISTVCAT example selects all non-empty (NRECS=1)
ESDS and KSDS(TYPE=EK) files, which have filenames
starting with "TEST", but not containing "CICS". The
output from the two catalogs (CBLV03 and CBLV04) is merged into one
convenient report, sorted in descending order by number of records
(SORTD NRECS).
Catalog Management
Monitoring
Regular monitoring of VSAM or ICF files is essential for the smooth running of your VSAM jobs.
Selecting only the files in critical need of tuning is easy with the subset SEV=3.
CBLVCAT REL 2.10 AT COMPUTE (Bridgend) Ltd - Wales (OS) VM/CMS=VM03 13.57 FRI 26 SEP 2003 PAGE 1 o -------------------------------------------------- -------------------------------------- -------- o ** VMXVMON1 CTL M *** L=002 2003/09/26 13:34:59 *id * o listcat dd=CBL111 o sev=3 linespace=4 o o USERCAT CBL111 (3380) TYPE NRECS PCNT ---- ALLOC TRACKS ---- FRSP LMAX KL,RKP CISIZE BUFSP EXCPS TIMESTMP o --------------------- ---- ----- ---- TOTAL PRIME SEC CI CA ---- /BLK/IMB ------ /IXL ----- -------- o o o FILE1.IN.NEED.OF.TUNING o KSDS 611 32.4 C=7 C=7 C=2 15* 7 4112V 10,0 4608* 12800* 175K 2003/06/08 18.20.17 o VOL1=CBL111 CANDIDATE VOL2=CBL475 o IX 4 36.4 1 1 1 3577 3584 IXL=2 126K o VOL1=CBL111 CANDIDATE VOL2=CBL475 o o *** SEV 3-03 *** ACTUAL FRSP CI = 0 PC ** SEV 2-04 ** BUFSP TOO SMALL FOR EFFICIENCY o ** SEV 2-25 ** INEFFICIENT DATA CISIZE o ** SEV 2-31 ** AVLRECL: DEFINED=272 ESTIMATED=1954 * SEV 1-15 * 4 CYLS CAN BE RECOVERED WHEN TUNED o o o o FILE2.IN.NEED.OF.TUNING KSDS(R) 4625 57.4 C=8 C=8 C=1 20 20 4096V 21,0 4608 11264* 3470 2003/06/08 18.15.58 o VOL1=CBL111 o CANDIDATE VOL2=CBL475 ** 001 CI SPLITS** IX 8 **88.9** 1 1 1 2041 IMB+REP 2048 IXL=2 10.5K o VOL1=CBL111 o CANDIDATE VOL2=CBL475 o *** SEV 3-12 *** INDEX EXCPS DWARF DATA o ** SEV 2-04 ** BUFSP TOO SMALL FOR EFFICIENCY ** SEV 2-31 ** AVLRECL: DEFINED=1000 ESTIMATED=525 o * SEV 1-07 * CI SPLITS EXIST o o --- --- -- o 227 227 47 --- --- -- o *** WARN 001 *** 12 = RETURN CODE FROM CBLVCAT o o ** ** ** ** ** ** ** CBLVCAT IS LICENSED BY COMPUTE (BRIDGEND) LTD +44 (1656) 652222 & 656466 ** ** ** ** ** ** ** o ** EXPIRY DATE -- 12 JUN 2004 **
Notes:
Severity Messages are reported at three SEV states which are controllable through the SEV parameter. They can be excluded from the report with the NOPSEV parameter.
- SEV 3 messages are serious and require immediate attention.
- SEV 2 messages indicate changes to be made when the file is next loaded.
- SEV 1 messages are minor, but require investigation.
SEV 3-03 for FILE.1.IN.NEED.OF.TUNING indicates that the file has been defined with a non-zero FRSP CI value, but the control interval is not large enough to reserve any usable free space.
SEV 3-12 for FILE.2.IN.NEED.OF.TUNING indicates that the number of index EXCPS is at least twice the number of data EXCPS.
Fixing either of the above is easy using CBLVCAT's tuning recommendations. See the Tuning example which follows.
Tuning
Continuing from the previous example, when problem files have been identified, acting quickly to redefine them will maximise performance.
CBLVCAT will produce all the necessary advice for redefining problem files. See the later example if you also wish to have the IDCAMS DEFINE deck generated at the same time.
The output, for the purpose of this example, is deliberately restricted to 1 file only via the KEY=FILE.1.IN.NEED.OF.TUNING parameter.
CBLVCAT REL 2.10 AT COMPUTE (Bridgend) Ltd - Wales (OS) VM/CMS=VM03 14.17 FRI 26 SEP 2003 PAGE 1 o -------------------------------------------------- -------------------------------------- -------- o ** VMXVTUN1 CTL M *** L=002 2003/09/26 14:14:30 *id * o listcat dd=CBL111 o key=FILE1.IN.NEED.OF.TUNING tune o o USERCAT CBL111 (3380) TYPE NRECS PCNT ---- ALLOC TRACKS ---- FRSP LMAX KL,RKP CISIZE BUFSP EXCPS TIMESTMP o --------------------- ---- ----- ---- TOTAL PRIME SEC CI CA ---- /BLK/IMB ------ /IXL ----- -------- o o FILE1.IN.NEED.OF.TUNING o KSDS 611 32.4 C=7 C=7 C=2 15* 7 4112V 10,0 4608* 12800* 175K 2003/06/08 18.20.17 VOL1=CBL111 o CANDIDATE VOL2=CBL475 o IX 4 36.4 1 1 1 3577 3584 IXL=2 126K VOL1=CBL111 o CANDIDATE VOL2=CBL475 o *** SEV 3-03 *** ACTUAL FRSP CI = 0 PC o ** SEV 2-04 ** BUFSP TOO SMALL FOR EFFICIENCY o ** SEV 2-25 ** INEFFICIENT DATA CISIZE ** SEV 2-31 ** AVLRECL: DEFINED=272 ESTIMATED=1954 o * SEV 1-15 * 4 CYLS CAN BE RECOVERED WHEN TUNED o *** WARN 015 *** LARGE AVLRECL CHANGE o o *** WARN 016 *** LARGE ALLOC CHANGE o o CBL TUNED --------- o DATA ( - o CISZ (14336) - * NEW PHYREC SIZE=14336, CURRENT=4608 CYLINDERS (3,1) - * OPTIMISED FOR DEVICE GEOMETRY o RECORDSIZE (1954,4112) - * DEFINED AVLRECL=272 o FREESPACE (18,6) - * GIVES FREE REC=1/7, FREE CI=3/45 BUFFERSPACE (32768) ) * 32K MINIMUM FOR DIRECT PROCESSING o INDEX ( - o CISZ (1024) ) * o * USING AVLRECL=1954 --- FILE CAPACITIES (NRECS) --- o * ------ TUNED ------ --- ORIG (ESTD) --- * PCNT PRIME SEC PCNT PRIME SEC o * ---- ----- --- ---- ----- --- o * INIT LOAD 73 756 252 36 875 250 * FREE 18 189 63 42 1015 290 o * -- --- --- -- ---- --- o * 91 945 315 78 1890 540 * -- --- --- -- ---- --- o o OPTIONAL JCL OVERRIDE FOR SEQ I/O --------------------------------- o BUFND=5 * (70K) FAST o BUFND=8 * (112K) URGENT BUFND=25 * (350K) **TURBO** (BUT WILL IMPACT OTHER WORK) o o *** WARN 001 *** 12 = RETURN CODE FROM CBLVCAT o o ** ** ** ** ** ** ** CBLVCAT IS LICENSED BY COMPUTE (BRIDGEND) LTD +44 (1656) 652222 & 656466 ** ** ** ** ** ** ** o ** EXPIRY DATE -- 12 JUN 2004 ** o
Notes:
The TUNING RECOMMENDATIONS shown indicate the following:-
- Data Control Interval Size: Increase from 4.5K to 14K bytes.
- Space Allocation: Modify (7 2) to (3 1) cylinders.
- Average Record Size: Increase from 272 to 1954 bytes.
- Freespace: Increase from (15 7) to (18 6) CI & CA percentages.
- Buffer Space: Changes from 12K to 32K bytes.
- Index Control Interval Size: Reduce from 3.5K to 1K bytes.
The FILE CAPACITY details illustrate the benefits that will be realised by redefining the file with the CBL TUNED recommendations. These can be excluded from the report with the NOPCAP parameter.
The JCL OVERRIDES are shown for improved sequential processing. These can be excluded from the report with the NOPJCL parameter.
A tuned IDCAMS DEFINE deck could also be produced. See Modelling For Migration example.
Modelling for Migration
Often, planning for new operating systems and/or new disks is necessary long before the appropriate documentaion is available, this is made easy with CBLVCAT's modelling facility.
The output, for the purpose of this example, is deliberately restricted to 1 file only via the KEY=FILE.TO.MODEL parameter.
CBLVCAT REL 2.10 AT COMPUTE (Bridgend) Ltd - Wales (OS) VM/CMS=VM03 14.21 FRI 26 SEP 2003 PAGE 1 o -------------------------------------------------- -------------------------------------- -------- o ** VMXVTUN2 CTL M *** L=002 2003/09/26 14:13:00 *id * o listcat dd=CBL111 o key=FILE.TO.MODEL tune=MVS dev=3390 o o USERCAT CBL111 (3380) TYPE NRECS PCNT ---- ALLOC TRACKS ---- FRSP LMAX KL,RKP CISIZE BUFSP EXCPS TIMESTMP o --------------------- ---- ----- ---- TOTAL PRIME SEC CI CA ---- /BLK/IMB ------ /IXL ----- -------- o o FILE.TO.MODEL KSDS 448275 **93.7** C=140 C=120 C=10 0 1 617V 26,0 14336 32768 58.3K 2003/06/09 21.19.23 o VOL1=CBL111 CANDIDATE VOL2=CIS475 ** 318 CI SPLITS** o ** 054 CA SPLITS** o IX 138 **89.1** 5 4 1 1017 1024 IXL=3 26.1K VOL1=CBL111 o CANDIDATE VOL2=CIS475 o ** SEV 2-05 ** CA SPLITS EXIST o ** SEV 2-08 ** CI SPLITS TOO HIGH (2 PC OF INSERTS) o ** SEV 2-15 ** 34 CYLS CAN BE RECOVERED WHEN TUNED ** SEV 2-25 ** INEFFICIENT DATA CISIZE o ** SEV 2-28 ** TUNING FOR DEVICE CHANGE REQUEST o ** SEV 2-31 ** AVLRECL: DEFINED=617 ESTIMATED=188 * SEV 1-09 * FILE GETTING/IS FULL o * SEV 1-18 * SEC EXTENTS EXIST o *** WARN 015 *** LARGE AVLRECL CHANGE o o CBL TUNED FOR DEV 3390 o ---------------------- o DATA ( - CISZ (18432) - * NEW PHYREC SIZE=18432, CURRENT=7168 (DEV CHANGE) o CYLINDERS (106,14) - * OPTIMISED FOR DEVICE GEOMETRY o RECORDSIZE (188,617) - * DEFINED AVLRECL=617 BUFFERSPACE (40960) ) * 40K MINIMUM FOR DIRECT PROCESSING o o * USING AVLRECL=188 --- FILE CAPACITIES (NRECS) --- * ------ TUNED ------ --- ORIG (ESTD) --- o * PCNT PRIME SEC PCNT PRIME SEC o * ---- ----- --- ---- ----- --- * INIT LOAD 100 452K 59.8K 93 401K 33.4K o * FREE 2 10.3K 1358 2 9120 760 o * --- ---- ----- -- ---- ----- * 103 463K 61.1K 95 410K 34.2K o * --- ---- ----- -- ---- ----- o OPTIONAL JCL OVERRIDE FOR SEQ I/O o --------------------------------- o BUFND=5 * (90K) FAST BUFND=8 * (144K) URGENT o BUFND=23 * (414K) **TURBO** (BUT WILL IMPACT OTHER WORK) o o *** WARN 001 *** 10 = RETURN CODE FROM CBLVCAT o o ** ** ** ** ** ** ** CBLVCAT IS LICENSED BY COMPUTE (BRIDGEND) LTD +44 (1656) 652222 & 656466 ** ** ** ** ** ** ** o ** EXPIRY DATE -- 12 JUN 2004 **
Notes:
- Tuning is requested for MVS via the TUNE=MVS parameter, the change from
3380 to 3390 disks is indicated via the DEV parameter.
- The user is able to plan the new operating system and DASD requirements even
before a decision to convert is made.
- The Data CISIZE increases from 14336 to a more efficient 18432,
which causes a change in physical record size from 7k to 18k.
- In addition to tuning for increased track capacity (3390=55k, 3380=46k) the file
is tuned to improve performance. The new Allocation of CYL(106 14),
ensures that the primary allocation is large enough to accommodate all of the
records currently in the file.
- Tuning for a 3380 would have given the larger value of CYL(127 16). Thus
tuning for the new disk device ensures the user does not waste disk space
when changing DASD.
IDCAMS DEFINE Output
Continuing from the previous example, your IDCAMS DEFINE decks and job control can be ready and waiting before the new system arrives, simply by adding the DEFINE parameter.
Equally simple is the addition of a 2nd extra parameter (to set CBLVCSW6) which will generate Backup and Restore JCL, using SELCOPY (CBL's main product), around the IDCAMS define deck.
The CBLVCAT output file below shows MVS job control. Equivalent VSE job control is produced when TUNE=VSE is used.
//CBLDEF01 JOB //JOBCAT DD DSN=CBL111.USER.PROD.CATALOG,DISP=SHR //STEP2 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //SYSIN DD * *** WARN 015 *** LARGE AVLRECL CHANGE *** WARN 019 *** SKELETON DECK ONLY - ATTENTION REQUIRED /* DEL FILE.TO.MODEL - */ /* CLUSTER - */ /* PURGE - */ /* CATALOG (CBL111.USER.PROD.CATALOG) */ DEF CLUSTER (NAME (FILE.TO.MODEL) /**/ - INDEXED /* KSDS */ - BUFFERSPACE ( 40960) - /* BUFFERSPACE ( 32768) */ - RECORDSIZE ( 188, 617) - /* RECORDSIZE ( 617, 617) */ - SPEED - TO ( 99366) - NOWRITECHECK - NONSPANNED - FREESPACE ( 0, 1) - KEYS ( 26, 0) - NOIMBED - NOREPLICATE - SHAREOPTIONS (2,3) - NOERASE - UNORDERED - NOREUSE - USECLASS (0 P) - SUBALLOCATION - NODESTAGEWAIT - STAGE - ) - DATA (NAME (FILE.TO.MODEL.DATA) - VOLUMES ('CBL111' - 'CBL475' - ) - CISZ (18432) - /* CISZ (14336) */ - CYLINDERS ( 106, 14) - /* CYLINDERS ( 120, 10) */ - ) - INDEX (NAME (FILE.TO.MODEL.INDEX) - VOLUMES ('CBL111' - 'CBL475' - ) - CISZ ( 1024) - ) - CATALOG (CBL111.USER.PROD.CATALOG) /*
Notes:
- This SYSPUNCH/IJSYSPH output is obtained by the addition of the parameter
DEFINE to the control cards for the previous example and contains the
IDCAMS DEFINE deck necessary to implement the Modelling recommendations
made.
- The original values are shown in comment form, allowing the user to easily
identify any changes that have been made.
- The DEFINE parameter, used without the TUNEparameter, allows
the user to retrieve up to date definitions directly from the catalog,
eliminating the possibilty of re-introducing back level attributes.
For brevity, the Alternate Index has been excluded from this example (by coding TYPE=K to restrict output to KSDS).
Free space in all VTOCs
Searching for the 'best-fit' extent to locate a dataset or data space can be a time consuming business, but one single report is all you need with CBLVCAT.
___________________________________________________________________________________ | / | CBLVCAT REL 2.10 AT COMPUTE (Bridgend) Ltd - Wales 2003/09/26 PAGE 1 \ | o -------------------------------------------------- ---------- -------- / | \ | REPORT VTOC VOLUME SORTD ALLOC START * Sort on ALLOC / | o \ | LISTVTOC DEV=ALL MERGE * Freespace over all volume / | SUMMARY FREETAB \ | o STOPAFT 100 * 100 largest freespace are / | \ | / | o VOLUME ALLOC START \ | ------ ----- ----- / | \ | o CBLT03 154786 2 / | CBLT03 139536 192288 \ | CBLT01 118064 213760 / | o CBLT03 104098 557542 \ | CBLT01 71258 563500 / | CBLT01 20544 691968 \ | o CBLT01 15650 47138 / | CBLT03 13792 683336 \ | CBLT01 12725 634758 / |/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\\
Notes:
- For MVS systems the DEV=ALL parameter will produce a VTOC report for
each DASD device belonging to the esoteric group SYSALLDA.
- For VSE systems the DEV=ALL parameter will produce a VTOC report for
every disk drive that has a current programmer logical unit assignment.
- The MERGE parameter instructs CBLVCAT to produce a single report, containing
the information from all VTOCs.
- The SORTD ALLOC parameters of the REPORT command request that the output be
sorted in descending order of allocation size.
- The SUMMARY parameter causes only freespace information to be displayed.
- The STOPAFT parameter ensures that only the 100 largest freespace areas are
included in the report.
Advanced Reporting
Totals
Often, reporting on the individual files is not required. Suppressing the reporting of individual files is easy with CBLVCAT.
The example below displays the total allocation for a generic name mask, on a customised LISTVTOC report. However, it should be noted that this feature can be used on standard or customised reports, for Catalogs or VTOCs.
__________________________________________________________________________________ | SPACE ALLOCATED TO TEST FILES ON CBLV03 AND CBLV04 2004/01/23 PAGE 1 \ | o -------------------------------------------------- ---------- -------- / | \ | report vcat alloct allocp allocs cisize / | o \ | listvcat dd=cblv03 key=TEST totals merge / | head='SPACE ALLOCATED TO TEST FILES ON CBLV03 AND CBLV04' \ | o / | listvcat dd=cblv04 key=TEST totals \ | / | o \ | / | ALLOC ALLOC ALLOC CISIZE \ | o TOTAL PRIME SEC ------ / | \ | 130244 73619 2638 / | o \ | CBLVCAT IS LICENSED BY COMPUTE (BRIDGEND) LTD +44 (1656) 652222 & 656466 / | ** EXPIRY DATE -- 12 JUN 2004 ** \ |__________________________________________________________________________________/
Notes:
- With the MERGE parameter the user is able to obtain totals across multiple
catalogs without reporting on the individual VTOCs.
- The HEAD='string' parameter enables the user to give this type of report a descriptive
heading.
- Only sensible totals are displayed i.e. ALLOCT, ALLOCP, ALLOCS, ALLOCU, SPLITCA,
SPLITCI and ALLOC. The CATALOG name can also be displayed. All other specified report
items are left blank, but their column headings are printed, see CISIZE above.
Advanced Customised Reporting
By selecting various fields from the wide choice available, it is possible to construct reports that concentrate on one particular area of interest.
An Advanced customised report can be an invaluable tool to the more experienced users, who prefer to apply their local knowledge to the information available from the catalog statistics.
The control cards below demonstrate some of the additional parameters available for customised reporting, which are not displayed on the standard report.
REPORT VCAT DSN 25 EXCPS RECSTATS 28 IXL CISIZE BUFSP 12 NSEC LISTCAT DDNAME=CBLV93 TYPE=K * Select: KSDS only KEY=A.DEMO * DSN's starting 'A.DEMO' only.
______________________________________________________________________________________________ | / | USERCAT CBLV93 (3390) EXCPS -- RECORD STATISTICS -- IXL CISIZE BUFSP NSEC \ | o --------------------- ----- DEL INS UPD INP --- ------ ----- ---- / | \ | / | o A.DEMO.HIGH.EXCPS.INP 17.2K 1 9760 9779 2048 16000 39 \ | 6253 3 512 / | \ | o A.DEMO.ORDINARY.1 159 3 1 2 197K 1536 4096 / | 165 1 512 \ | / | o A.DEMO.ORDINARY.2 60 2 39 1536 4096 \ | 46 1 512 / | \ | o A.DEMO.ORDINARY.3 2075 9 5 1424 18.7K 1536 4096 / | 649 1 512 \ | / | o A.DEMO.ORDINARY.4 2674 1 4415 1 2048 16000 11 \ | 939 2 512 / | \ | o A.DEMO.ORDINARY.5 1646 9 4 1047 8738 1536 4096 / | 591 1 512 \ | / | o A.DEMO.MORE.IX.EXCPS 2475K 18 448 563K 1806K 3072 14336 5 \ | 6830K 2 1536 / | \ | o A.DEMO.XYZ.1 12K 21 3 10.9K 67.8K 1536 4096 / | 579 1 512 \ | / | o A.DEMO.XYZ.2 225 5 2 287 1536 4096 \ | 231 1 512 / | \ | o A.DEMO.XYZ.3 440 9 7 64 2028 1536 4096 / | 187 1 512 \ |/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\_/
Notes:
- The user can select from 59 Catalog and 15 VTOC items to build reports of salient information.
- The maximium report width is 250 characters.
- This report shows catalog information that relates to online response or batch processing times.
- Running with the SUBSET SEV=3 would have selected some of these files as having potential problems. See the Monitoring example above.
Orphaned Entries
There is not always a match between the BCS and VVDS entries, as Catalogs can be removed without the appropriate entry in the VVDS being deleted. Mis-matches can also occur as a result of a failure.
If the VVDS contains entries not reflected in the BCS, then these orphaned entries should be deleleted as part of a manual housekeeping operation in order to reduce overheads. Such housekeeping, of course, should be conducted by experienced personnel only.
___________________________________________________________________________________ | / | CBLVCAT REL 2.10 AT COMPUTE (Bridgend) Ltd - Wales 2003/09/26 PAGE 1 \ | o -------------------------------------------------- ---------- -------- / | \ | REPORT VCAT SORT CATALOG 30 COMPONENT 30 / | o \ | LISTVCAT VVDS=CB9043 / | \ | o / | CATALOG COMPONENT \ | ------- --------- / | o \ | SYS1.VVDS.VCB9043 / | CATALOG.MASTER01 CNM.CBL1.DSIKPNL.INDEX \ | o CATALOG.MASTER01 CNM.CBL1.DSILOGP.DATA / | CATALOG.MASTER01 CNM.CBL1.DSILOGP.INDEX \ | CATALOG.MASTER01 CNM.CBL1.DSILOGS.DATA / | o CATALOG.MASTER01 CNM.CBL1.DSILOGS.INDEX \ | CATALOG.MASTER01 CNM.CBL1.DSISVRT.DATA / | CATALOG.MASTER01 CNM.CBL1.DSISVRT.INDEX \ | o CATALOG.MASTER01 CNM.CBL1.DSITRCP.DATA / | CATALOG.MASTER01 CNM.CBL1.DSITRCP.INDEX \ | CATALOG.MASTER01 CNM.CBL1.DSITRCS.DATA / | o CATALOG.MASTER01 CNM.CBL1.DSITRCS.INDEX \ | SYS1.ICFCAT.OLDCAT NOT.NEEDED01.DATA / | SYS1.ICFCAT.OLDCAT NOT.NEEDED01.INDEX \ | o SYS1.ICFCAT.OLDCAT NOT.NEEDED02.DATA / | SYS1.ICFCAT.OLDCAT NOT.NEEDED03.DATA \ | SYS1.ICFCAT.OLDCAT NOT.NEEDED04.DATA / | o SYS1.ICFCAT.OLDCAT NOT.NEEDED05.DATA \ | SYS1.ICFCAT.LIVECAT CICSPV.PRISM.COPY.DFHNTRA.DATA / | SYS1.ICFCAT.LIVECAT CICSPV.PRISM.COPY.DFHTEMP.DATA \ | o SYS1.ICFCAT.LIVECAT CICSPV.PRISM.COPY.RSD.DATA / | SYS1.ICFCAT.LIVECAT CICSPV.PRISM.COPY.RSD.INDEX \ | SYS1.ICFCAT.LIVECAT CICSPV.PRISM.DFHCSD.DATA / | o SYS1.ICFCAT.LIVECAT CICSPV.PRISM.DFHCSD.INDEX \ | SYS1.ICFCAT.LIVECAT CICSPV.PRISM.DFHNTRA.DATA / | SYS1.ICFCAT.LIVECAT CICSPV.PRISM.DFHTEMP.DATA \ | o SYS1.ICFCAT.LIVECAT CICSPV.PRISM.RSD.DATA / | SYS1.ICFCAT.LIVECAT CICSPV.PRISM.RSD.INDEX \ | SYS1.ICFCAT.LIVECAT CICSPV.PRISM.TMON.ALERTA.DATA / | o SYS1.ICFCAT.LIVECAT CICSPV.PRISM.TMON.ALERTB.DATA \ \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/
Notes:
- The example above illustrates the use of CBLVCAT to obtain a list of the component
names and catalogs referenced by the VVDS. If any of the catalogs referenced (e.g.
SYS1.ICFCAT.OLDCAT) no longer exist then orphaned entries exist in the VVDS.
- Reporting on the VVDS helps the user to detect orphaned entries, provided
he knows which catalogs have been removed. The IDCAMS command DELETE VVR can then
be used to delete VVR (VSAM Volume Record) entries from the VVDS and the VTOC.
Multiple displays, Subset & Sort
There is not always a match between the BCS and VVDS entries, as Catalogs can be removed without the appropriate entry in the VVDS being deleted. Mis-matches can also occur as a result of a failure.
If the VVDS contains entries not reflected in the BCS, then these orphaned entries should be deleleted as part of a manual housekeeping operation in order to reduce overheads. Such housekeeping, of course, should be conducted by experienced personnel only.
___________________________________________________________________________________ | / | CBLVCAT REL 2.10 AT COMPUTE (Bridgend) Ltd - Wales 2003/09/26 PAGE 1 \ | o -------------------------------------------------- ---------- -------- / | \ | REPORT VCAT SORT CATALOG 30 COMPONENT 30 / | o \ | LISTVCAT VVDS=CB9043 / | \ | o / | CATALOG COMPONENT \ | ------- --------- / | o \ | SYS1.VVDS.VCB9043 / | CATALOG.MASTER01 CNM.CBL1.DSIKPNL.INDEX \ | o CATALOG.MASTER01 CNM.CBL1.DSILOGP.DATA / | CATALOG.MASTER01 CNM.CBL1.DSILOGP.INDEX \ | CATALOG.MASTER01 CNM.CBL1.DSILOGS.DATA / | o CATALOG.MASTER01 CNM.CBL1.DSILOGS.INDEX \ | CATALOG.MASTER01 CNM.CBL1.DSISVRT.DATA / | CATALOG.MASTER01 CNM.CBL1.DSISVRT.INDEX \ | o CATALOG.MASTER01 CNM.CBL1.DSITRCP.DATA / | CATALOG.MASTER01 CNM.CBL1.DSITRCP.INDEX \ | CATALOG.MASTER01 CNM.CBL1.DSITRCS.DATA / | o CATALOG.MASTER01 CNM.CBL1.DSITRCS.INDEX \ | SYS1.ICFCAT.OLDCAT NOT.NEEDED01.DATA / | SYS1.ICFCAT.OLDCAT NOT.NEEDED01.INDEX \ | o SYS1.ICFCAT.OLDCAT NOT.NEEDED02.DATA / | SYS1.ICFCAT.OLDCAT NOT.NEEDED03.DATA \ | SYS1.ICFCAT.OLDCAT NOT.NEEDED04.DATA / | o SYS1.ICFCAT.OLDCAT NOT.NEEDED05.DATA \ | SYS1.ICFCAT.LIVECAT CICSPV.PRISM.COPY.DFHNTRA.DATA / | SYS1.ICFCAT.LIVECAT CICSPV.PRISM.COPY.DFHTEMP.DATA \ | o SYS1.ICFCAT.LIVECAT CICSPV.PRISM.COPY.RSD.DATA / | SYS1.ICFCAT.LIVECAT CICSPV.PRISM.COPY.RSD.INDEX \ | SYS1.ICFCAT.LIVECAT CICSPV.PRISM.DFHCSD.DATA / | o SYS1.ICFCAT.LIVECAT CICSPV.PRISM.DFHCSD.INDEX \ | SYS1.ICFCAT.LIVECAT CICSPV.PRISM.DFHNTRA.DATA / | SYS1.ICFCAT.LIVECAT CICSPV.PRISM.DFHTEMP.DATA \ | o SYS1.ICFCAT.LIVECAT CICSPV.PRISM.RSD.DATA / | SYS1.ICFCAT.LIVECAT CICSPV.PRISM.RSD.INDEX \ | SYS1.ICFCAT.LIVECAT CICSPV.PRISM.TMON.ALERTA.DATA / | o SYS1.ICFCAT.LIVECAT CICSPV.PRISM.TMON.ALERTB.DATA \ \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/
Notes:
- The example above illustrates the use of CBLVCAT to obtain a list of the component
names and catalogs referenced by the VVDS. If any of the catalogs referenced (e.g.
SYS1.ICFCAT.OLDCAT) no longer exist then orphaned entries exist in the VVDS.
- Reporting on the VVDS helps the user to detect orphaned entries, provided
they know which catalogs have been removed. The IDCAMS command DELETE VVR can then
be used to delete VVR (VSAM Volume Record) entries from the VVDS and the VTOC.
Combined Multiple VTOCs & Catalogs
The final example illustrates the flexibility of CBLVCAT, by combining output from all catalogs and all VTOCs in the system, and using a subset to select only files you require.
We will produce a single report, over the whole system, on all DSN's which contain the string 'TEST' anywhere in its name. This type of report could be part of a housekeeping operation, for instance.
This example uses the REF=ALL parameter which is only available to MVS ICF users. VSAM users should specify each catalog separately.
___________________________________________________________________________________ | / | CBLVCAT REL 2.10 AT COMPUTE (Bridgend) Ltd - Wales 2003/09/26 15:03 PA\ | o -------------------------------------------------- ---------------- --/ | \ | REPORT VTOC DSN 30 VOLUME 10 / | o \ | REPORT VCAT SORT DSN 30 VOLUME 10 CATALOG * Sort by DSN. / | \ | o LISTVTOC DEV=ALL MERGE * 1st MERGE to combine all VTOC REPORTS. / | KEY=/TEST MERGE * 2nd MERGE to combine with next command. \ | / | o LISTVCAT REF=ALL MERGE KEY=/TEST \ | / | \ | o DATASET NAME VOLUME CATALOG / | ------------ ------ ------- \ | / | o BUZZ.TESTHARN.LINEAR CBLI04 ICFCAT.CBLI04 \ | GD.TEST.PRC0 CBLI02 CAT.ICF.MASTCAT.CBLI02 / | GD.TEST.TBL0 CBLI02 CAT.ICF.MASTCAT.CBLI02 \ | o INPUT.KKK.TEST2 F5 CBLT02 / | MASTERFIL TEST2F5 CBLT02 \ | PAGE.VCBLI02.TEST01 CBLI02 CAT.ICF.MASTCAT.CBLI02 / | o PRODN TEST C CBLT01 \ | PRODN TEST T CBLT01 / |/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\\
Notes:
- For MVS systems the DEV=ALL parameter will produce a VTOC report for each
DASD device belonging to the esoteric group SYSALLDA.
- For VSE systems the DEV=ALL parameter will produce a VTOC report for every
disk drive that has a current programmer logical unit assignment.
- The REF=ALL parameter produces a report for all catalogs. Non ICF users
must specify each catalog with separate LISTVCAT commands.
- Use of the three MERGE parameters causes one single combined report to be created.
- The user should note that if the files required are not system wide but contained in few
known catalogs and VTOCS, then merging separate LISTVCAT and LISTVTOC commands is more
efficient than scanning all catalogs and VTOCS.
- VTOC output of course will have no catalog name.