CA MAX MVS/UTIL ANSWERS TO FAQ's

Document ID : KB000055238
Last Modified Date : 14/02/2018
Show Technical Document Details

What software delivery options are available?

The recommended method is to electronically download the software and documentation from CA's Support website - http://support.ca.com or you can choose to install the CA MAX software libraries via a cartridge tape which can be shipped to you.

What are my options for applying PTFs?

We provide replacement objects when maintenance is required. These can be obtained by downloading the current maintenance from CA Support website - http://support.ca.com. Since our maintenance is cumulative, you can download the latest version from http://support.ca.com then install the .OBJECT library to apply all current maintenance. For additional information please visit the Support By Product home page for the CA MAX products on http://support.ca.com.

What are the COPYBOOK LIMITS when using formatted functions?

If you encounter limitations in our copybook support, we suggest an upgrade to the current release. There used to be limitations related to the OCCURS DEPENDING value, but these have been eliminated.

Can I rearrange the order in which COPYBOOK fields are displayed?

Yes. Beginning with V3.20, the mapping support allows user defined field sequence, in addition to the previously provided INCLUDE/EXCLUDE support.

Can I generate XML with only selected COPYBOOK fields?

Yes. Instead of using the COPYBOOK to generate the XML, define a MAPPING CRITERIA member. This allows you to INCLUDE/EXCLUDE fields from the transformation.

I got a MAX181E when trying to use the TRANSLATE function.

The TRANSLATE function can use one of several pre-defined translate tables. These are found in the MAXDFLTS member. While it is normally optional to assemble the MAXDFLTS module, it is required if you intend to make use of these tables or if you wish to define your own.

Can I display COPYBOOK with field name, offset and length information?

Yes, in Data/Util you can display this copybook information by selecting menu item "3. Data set utilities", then choosing "B. copyBook display/print".

For the BATCH equivalent you would use the "PRINT COPY
BOOK(pds.name(member))" function.

Can I access COPYBOOKS in PANVALET or LIBRARIAN libraries?

Yes. When accessing a copybook in a PANVALET or LIBRARIAN library, you must define the subsystem used for file access. In TSO this is done by selecting "0. Profile parameters " from the main menu then supply the subsystem name. In BATCH, you use the SUBSYS parameter in your control statement.

How do I define MAPPING CRITERIA?

To define Mapping Criteria for a file, you should have a copybook you intend to use for defining the layout. Then, on the main menu of Data/Util, select option "6. build Mapping criteria". The confirm window should have the name of the MAPPING member you are defining or updating, not the name of your copybook. Then, when you choose "1 - Insert layout" you describe the copybook that you will use to map the data. A single mapping entry can provide multiple mappings, based on the data in the file. The view can customize the file display by selecting only certain records, based on selection criteria, and selecting only certain fields to be displayed. Use the description field to detail what each mapping view was designed for.

*NOTE* - The SELECT in mapping criteria isn't the same as the SELECT in BROWSE or EDIT of records.

When you SELECT records you are looking at a subset of the file, while the SELECT in MAPPING isn't selecting records, it's selecting the COPYBOOK to be used based on data in the record.

Why do I get an error on an OCCURS DEPENDING on Data-Name?

Note that the Occurs Depending on clause requires that the file you are formatting contain valid numeric data in the data-name field defined. Make sure your test file data is valid.

What are Data Privacy (HIPAA) functions?

The data privacy operands are PIN, SCRAMBLE, UNSCRAMBLE and TRANSLATE. These features allow masking sensitive data, while preserving data formats for testing. Production files can be input to building a test bed, where the resulting test files contain no sensitive data.

What are Data Transformation functions?

The Data Transformation functions allow reformat of mainframe data (MVS formatted, IMS and DB2) to XML, comma delimited, tab delimited and other formats. User specified formats may be created, as specified in an assembler macro.

Do you support SMS COMPRESSED datasets?

Yes, SMS Compressed datasets are supported.

How can I CONVERT a FILE with copybooks?

Both the Data/Util and Batch components support file conversion by using a pair of copybooks, one defining the 'before' data and a second defining the 'after' data. For conversion using Data/Util, select menu option "7. build Reformat criteria".

Here you will define the before and after copybooks. See "Build Reformat Criteria" in your Data/Util manual for specific instructions regarding this function. To convert files using BATCH, the same 'before' image, defined with the MAPDD and 'after' image, defined with REFDD is used. Look at the REFORMAT Example is the CA MAX/Batch manual.

Can I get a more detailed error message?

Press PF1 for extended text version of any error message.

Can I locate records containing INVALID PACKED DATA?

You can use the 'FIND NEP' (not-equal packed) command. You define the field and the Browse or Edit function (unformatted) will stop at each record where invalid data is found. If position 38 is supposed to be the start of a packed data field, just enter "FIND NEP 38" and the scan will stop at each invalid record.

In BATCH, you can also use the NEP function to list all records not containing a valid packed. You can also validate that the field contains packed data of a specified length.

Can I update SPANNED records?

Yes, but be aware that there are certain restrictions on SPANNED records that are unique to this record type. Because the spanned format allows a single record to span several physical blocks of data, we do not support adding or deleting these records. You may edit spanned records, but you can only change existing data, and can't make changes that result in changes to the record size. We support edit of very large spanned records, but the blocksize is still limited to 32,760.

When I've SELected records, where is my file positioned?

When you perform a SELect function to browse or edit only requested records, you will scan the file for the records chosen and stop when these are found. If you then invoke another SELect, it will resume reading the file where the previous SELect stopped. In the case where you are searching a sequential file, and your search criteria are also in file sequence, this can speed up the operation considerably, but you must be aware that if you search for a string that appears prior to your current file location, you may get a "not found" condition. When doing multiple SELECTS and the records could be anywhere in the file you are searching, use the TOP function to be sure you reset to top of file between searches.

Can I access IAM files?

Yes. In addition, you can use an IAM file as a MODEL to define another IAM file using the Data Set Utilities menu.

Can I stop the IAM LISTCAT from displaying on my screen?

IAM invokes their own LISTCAT function after an IDCAMS LISTCAT. This can result in the IAM portion of the LISTCAT displaying on your screen. There is an update to Data/Util to suppress this IAM listcat information. The update is incorporated in versions 240 and up.

How can I FIND a MEMBER in a group of PDS files? I am looking for a specific member name, but I don't know which or how many PDS files it's located in. Is there a member name search?

Yes, bring up the CA MAX/PDF product, all you need is a HLQ to bring up a group of PDS names, at which point you can search all of them by using FMEM membername.

If the member exists in several of the PDS files, your result set will show ALL the PDS names where the member was found. The search can also be restricted to certain volumes. In fact, even if you don't have a clue about the HLQ, you can search by volume, either individual, or group by volume prefix.

Where is the "FIND ALL" command?

We fully support the functionality of a FIND ALL feature, but we support it using our "SELection" criteria. Where in a standard ISPF Browse or Edit session, you might "X ALL" followed by a "FIND string ALL" to display only records containing the requested string, in Data Util, you would Edit or Browse the file, then enter "SEL" on the command line (or define Record Selection YES on the entry panel).

Valid commands: SAVE, COPY.
Valid CONDitions are: EQ, NE, GT, GE, LT, LE.

MAX SELECTION CRITERIA 'MXS.TEST.FILE'
COMMAND ===> 
BEGIN END COND DATA And/Or 1 ___ 32700 EQ_ test______________________________________________ ___ _____ _____ ___ __________________________________________________ ___

The above would select the string 'test' as well as 'TEST' anywhere in the record, beginning in column 1 and searching the entire record. If you only wanted to display record with the lower case 'test' argument, you would enter the DATA field as C'test'. In the event I wanted to select only those records with a lower case 'test' in col. 38 and an upper case 'TEST' in column 45, the SEL would be:

Valid commands: SAVE, COPY.
Valid CONDitions are: EQ, NE, GT, GE, LT, LE.

MAX SELECTION CRITERIA 'MXS.TEST.FILE'
COMMAND ===>
BEGIN  END COND DATA                                                  And/Or
38___ _____ EQ_ C'test'_____________________________________________   or_
45___ _____ EQ_ C'TEST'_____________________________________________   ___ 

As you can see, this provides far more flexibility than a simple FIND ALL command.

Where is the "CHANGE" command?

We fully support the functionality of a CHANGE feature for data files, but we provide it using our "UPDATE" function. Where in a standard ISPF Browse or Edit session, you might use the CHANGE command, our change will apply the change to only the next record. To make mass changes using Data/Util you would select option 4 "Update/search/count data set" and select UPDATE on the next menu. The next screen allows you to define how the records are to be updated. When a CHANGE ALL is required, simply select the SUBMIT option and modify job to be submitted to use CHANGEALL( instead of CHANGE)

Can I make online Global changes to JCL using the UPDATE ALL

The UPDATE functions are suitable for changing existing JCL statements. For example, a loadlib name has changed and you want up change all occurrences of "OLD.PROGRAM.LOADLIB" to "NEW.PROGRAM.LOADLIB". The UPDATE function cannot be used if you need to ADD or DELETE JCL statements, but for simply changing data in existing JCL statements, it works well. Bring up the MSL with the members you are interested in changing, then type "UPDATE ALL"

MSL SELECT/CHANGE MAX.MP3000.JCL

COMMAND ===> 

Press ENTER to select and change records, or END to return without selecting.

Valid commands: SAVE, COPY.
Valid CONDitions are: EQ, NE, GT, GE, LT, LE or LENGTH of scan.

BEGIN COND/ DATA And/Or
      LENGTH
More:+ 1____ eq___ old.program.loadlib_________________________________ ___ Change to: new.program.loadlib_________________________________

The UPDATE ALL command is preferable to the EDIT ALL command when you are changing a string length which could cause JCL to become invalid. This can occur if the statement length increases beyond column 71. The UPDATE ALL function would handle this overflow by continuing the statement on another line. When the length change is a factor, you should specify JCL for 'source format' which provides JCL syntax validation. On the other hand, if the from and to strings are the same length, the EDIT ALL and batch UPDATE will out perform an UPDATE ALL.

How can I make Global changes to JCL? EDIT ALL

Bring up the member selection list containing the JCL members you wish to change, then on the command line, enter "Edit All" and provide the CHANGE command to be applied to each member in the list. Be aware that when the from and to arguments are of different length it would be wise to use the UPDATE ALL function of DATA/UTIL instead because it provides JCL syntax validation.

MSL MAX.MP3000.JCL                           EDIT COMMANDS REQUIRED

COMMAND ===> 

Specify valid edit commands and their maximum acceptable return code.

For example:

C FLD-NAME1 FLD-NAME2 ALL                                           4 
       
       END                                                          0
EDIT COMMAND                                                   MAX RC 
c 'old.program.loadlib'
'new.program.loadlib'all________________________________________   04 
end_____________________________________________________________   ____ 
________________________________________________________________   ____ 

The EDIT ALL command is faster than the UPDATE ALL because it doesn't perform JCL verification. The EDIT command will compress blanks, so a length change can be absorbed if there are blanks following the changed data. For example the DD statement:

//OLDPLIB DD DSN=OLD.PROGRAM.LIB THIS IS COMMENT IN 50 

would be changed to:

//OLDPLIB DD DSN=NEWER.PROGRAM.LIB THIS IS COMMENT IN 50 

As shown, because there were blanks following the DSN name, the position of the comment did not change. If there were no blanks between the end of the DSN and column 71, then you would have a problem, because the record would span the continuation column, creating an invalid DD statement.

Where can I find skeleton JCL?

The JCL that is used when you select 'SUBMIT' functions in Data/Util can be found in the MAXFT* members in your '.JCL' library. If you need to modify region size or STEPLIB, you will find them here.

How can I perform a CASE SENSITIVE search Online? I want to select records containing lower case 'string', but I don't want to see select those with upper case 'STRING'. How do I define a case sensitive search argument?

This is controlled by the type of data you define. Use the Text search when you want case insensitive, and Character when you want the case to match: In 'unformatted' mode, use the FIND command where:

FIND argument is NOT case sensitive 
FIND 'argument' IS case sensitive 

In 'formatted' mode, the SEL command is an exact match only - if you need case insensitive select, use the FIND command.

What is the Installation Verification Program (IVP)?

The Installation Verification Program is used for troubleshooting a new installation, or verifying what maintenance has been applied. It can be invoked using the "TSO MAX IVP" command. In the event you have a problem, we may ask you to email the output from this command. This command can also be used to verify that product code installation was successful.

What is the difference between CHANGE, REPLACE and EDIT?

The CHANGE operand will shift the remainder of the record left or right when the from and to strings are different lengths. The data to the right of the found to string will shift left or right to accommodate the extra/missing bytes. If a variable length record, the record length will be adjusted accordingly (when the O/P file RECFM or LRECL permit).

The REPLACE is used to OVERLAY data, so use it carefully. If you use the replace function and the from-data string is 3 characters, and the to-data string is 4 characters, you will wipe out one byte following the from-data.

The EDIT is used to change data in a text type record. If the length of the to-data is greater than the from-data length, repeating space characters will be used to accommodate the difference. If the length of the to-data is less than then from-data length, additional bytes will be inserted after the first space character to the right of the from-data.

Here are some examples where we change the string MY.TEST.LOADLIB to the string MY.NEW.REPLACED.LOADLIB. We also have a comment that begins in col 55 and ends in col 71:

    0    1    1    2    2    3    3    4    4    5    5    6    6    7    7
....5....0....5....0....5....0....5....0....5....0....5....0....5....0....5
Original record:
//STEPLIB    DD DSN=MY.TEST.LOADLIB,DISP=SHR    A comment
//STEPLIB    DD DSN=MY.NEW.REPLACED.LOADLIB,DISP=SHR   A comment   (1)
//STEPLIB    DD DSN=MY.NEW.REPLACED.LOADLIBR A comment             (2)
//STEPLIB    DD DSN=MY.NEW.REPLACED.LOADLIB,DISP=SHR   A comment   (3) 

In (1), we used a CHANGE. The number of spaces between SHR and A comment did not change.

In (2), we used REPLACE. Because the to-data was longer than the from-data, we overlaid the ",DISP=SH" that followed the from-data.

In (3), we used EDIT. The additional length of the to-data was taken up by the spaces between the SHR and A comment.

Can I view a single Level 01 entry from a multiple Level 01 copybook?

Yes. You can define a starting and ending field for formatted display. This can be used for any starting and ending field names, but the most common use would be the multiple level-01 copybooks.

Why are menu items A and M identical on the Dataset Utilities Screen?

This is depends on your OS/390 or z/OS release. On older systems there were separate screens for the allocation of SMS controlled datasets (M) and other datasets (A). On newer MVS releases, these have been consolidated but users of older systems will have two different displays.

What are the COPYBOOK LIMITS when using formatted functions?

If you encounter limitations in our copybook support, we suggest an upgrade to the current release. There used to be limitations related to the OCCURS DEPENDING value, but these have been eliminated.

Can I rearrange the order in which COPYBOOK fields are displayed?

Yes. Beginning with V320, the mapping support allows user defined field sequence, in addition to the previously provided INCLUDE/EXCLUDE support.

Can I generate XML with only selected COPYBOOK fields?

Yes. Instead of using the COPYBOOK to generate the XML, define a MAPPING CRITERIA member. This allows you to INCLUDE/EXCLUDE fields from the transformation.

Can I CONVERT a FILE without copybooks?

Yes. If you want to add a field, remove a field, change a field length, any of these and more can be accomplished using the MOVE(to,len,from) function of the MAXBAT control statement. Along with the powerful selection capabilities of the IF statement, this is an ideal way to convert data files and populate them with the new records.

Can I locate records containing INVALID PACKED DATA?

You can use the 'FIND NEP' (not-equal packed) command. You define the field and the Browse or Edit function (unformatted) will stop at each record where invalid data is found. If position 38 is supposed to be the start of a packed data field, just enter "FIND NEP 38" and the scan will stop at each invalid record.

In BATCH, you can also use the NEP function to list all records not containing a valid packed. You can also validate that the field contains packed data of a specified length.

Can I make JCL changes in batch using COPYMEM/UPDATEMEM?

Where JCL statement length is not modified, UPDATEMEM works well:
//STEP1  EXEC  PGM=MAXBAT,REGION=0M
//STEPLIB  DD  DSN=MXS.MXRXV340.LOADLIB,DISP=SHR
//SYSTSPRT DD  SYSOUT=*
//SYSPRINT DD  SYSOUT=*
//SYSLIST  DD  SYSOUT=*
//SYSUT1   DD  DISP=SHR,DSN=MXS.TESTBIG.PDS
//SYSIN    DD  *
  UPDATEMEM INFILE(SYSUT1) MEMBERS(*),
     REPLALL(1,0,C'MXRXV250',C'MXRXV310');
// 
When changing length of JCL statements to a longer length, you may want to use FORM(JCL) to provide syntax checking. //STEP1   EXEC PGM=MAXBAT,REGION=0M //STEPLIB   DD DISP=SHR,DSN=MXS.MXRXV340.LOADLIB //SYSTSPRT  DD SYSOUT=* //SYSPRINT  DD SYSOUT=* //SYSUT1    DD DISP=SHR,DSN=MXS.TESTBIG.PDS //SYSUT1O   DD DISP=SHR,DSN=MXS.TESTBIG.PDS //SYSIN DD *   COPYMEM MEMBERS(*) FORM(JCL),       IF(1,EQ,C'//'),       CHANGE(1,0,C'MXS.TESTBIG.SAM',                  C'MXS.TEST.REALLY.MUCH.LONGER.STRING'); //

How can I insert or delete JCL statements? MAXBAT

When your JCL change requirements are more complex than simply changing existing statements, such as INSERTing or DELETEing JCL statements, our BATCH product offers this capability.

The UPDATE functions are suitable for changing existing JCL statements where no JCL validation is required. If JCL syntax may require validation (when a length of a JCL statement is changed) then COPYMEM with the FORM(JCL) operand must be used.

//BATSAMPL JOB 0,'MAXBAT SAMPLE',
//             NOTIFY=&SYSUID,
//             CLASS=A,MSGCLASS=X
//* ----------------------------------------------------------------
//* DOC: COPY PDS DROPPING SOME RECORDS AND INSERTING OTHERS
//* ----------------------------------------------------------------
//STEP1 EXEC PGM=MAXBAT,REGION=3M
//STEPLIB    DD DISP=SHR,DSN=MXS.MXRXV340.LOADLIB
//SYSTSPRT   DD SYSOUT=*
//SYSPRINT   DD SYSOUT=*
//SYSLIST    DD SYSOUT=* 
//SYSUT1     DD DISP=SHR,DSN=MXS.TEST.PDSIN
//SYSUT1O    DD DSN=&TEMP1,DISP=(NEW,PASS),
//            DCB=(RECFM=FB,LRECL=80,BLKSIZE=0),
//            UNIT=SYSDA,SPACE=(CYL,2)
//SYSIN      DD * 
* 
* STEP1 INSERTS NEW STATEMENTS. THIS CAN BE DONE IN A PDS-TO-PDS 
* COPY BUT WE ARE USING PDS-TO-SAM BECAUSE WE ALSO WANT TO DELETE
* RECORDS.
*
  COPYALL INF(SYSUT1) OUTF(SYSUT1O), COPY FILE INSERTING NEW LINES
  PADCHAR(C' '), 
  IF(1,EQ,C'//LINE1'), WHEN WE ENCOUNTER CONDITION 
     MOVE(1,C'//NEWLINE, 
     GOES HERE WITH WHATEVER CONTENT YOU NEED'), CREATE NEW LINE 
       WRITE(SYSUT1O), AND WRITE IT
     MOVE(1,C'//NEWLIN2,
     SECOND GOES HERE WITH WHATEVER CONTENT YOU NEED'), 2ND NEW LINE 
       WRITE(SYSUT1O), WRITE 2ND
     MOVE(1,C'//NEWLIN3,
     THIRD GOES HERE WITH WHATEVER CONTENT YOU NEED'), 3RD NEW LINE 
       WRITE(SYSUT1O), WRITE 3RD
     MOVE(1,80,1); AND WRITE ORIGINAL RECORD 
//STEP2 EXEC PGM=MAXBAT,REGION=3M 
//STEPLIB    DD DISP=SHR,DSN=MXS.MXRXV340.LOADLIB 
//SYSTSPRT   DD SYSOUT=* 
//SYSPRINT   DD SYSOUT=*
//SYSLIST    DD SYSOUT=*
//SYSUT1     DD DSN=&TEMP1,DISP=(OLD,PASS)
* 
* WE ARE USING PDS-TO-SAM BECAUSE WE ALSO WANT TO DELETE RECORDS 
* IN PDS PROCESSING MODE, ONLY MEMBERS CAN BE DELETED, NOT
* RECORDS.
*
  UPDATE INF(SYSUT1), 
     IF(1,EQ,C'//LINE1') DELETE,
     IF(1,0,C'LINE2') DELETE,
     IF(1,0,C'LINE3') DELETE;
//STEP3 EXEC PGM=MAXBAT
//STEPLIB DD DISP=SHR,DSN=MXS.MXRXV340.LOADLIB
//SYSTSPRT DD SYSOUT=* 
//SYSPRINT DD SYSOUT=*
//SYSLIST DD SYSOUT=* 
//SYSUT1O DD DISP=SHR,DSN=MXS.TEST.PDSOUT 
//SYSUT1 DD DSN=&TEMP1,DISP=(OLD,DELETE,DELETE) 
* 
* NOW WE HAVE ALL THE CHANGES WE WANT AND COPY BACK TO PDS 
* 
  COPYALL INF(SYSUT1) OUTF(SYSUT1O)
//

What REGION SIZE do I need for MAXBAT?

The REGION size requirement is variable, depending on the number of parameters and the complexity of the function performed, but we recommend a 3M region for most MAXBAT executions.

Is the Record Descriptor Word (RDW) part of the record length?

A variable-length logical record consists of a record descriptor word (RDW) followed by the data. We can process the data in a variable length record differently, based on the value specified in the RDW parameter. The starting position of the data will vary based on the RDW value you select.

When do I specify single quote 'vs. double quote"

There is support for multiple search arguments in a Batch control statements. Comma delimited arguments within single quotes are treated as multiple arguments, while the same string within double quotes is considered a single argument.

What is the 'dupl' sub operand for?

There is support for a duplication factor when defining strings.

How can I perform a CASE SENSITIVE search using MVS/UTIL Batch? I want to select records containing lower case 'string', but I don't want to see select those with upper case 'STRING'. How do I define a case sensitive search argument?

This is controlled by the type of data you define. Use the Text search when you want case insensitive, and Character when you want the case to match:

T'string'

The above string is NOT case sensitive. String selected regardless of case.

C'string'

The above string IS case sensitive. Only exact match will be selected.

What is the Installation Verification Program (IVP)?

The Installation Verification Program is used for troubleshooting a new installation, or verifying what maintenance has been applied. It can be invoked in batch by executing "MAXIVP". With V250 and higher you can also run it in combination with your batch control statements by adding the IVP parameter:

//STEP01 EXEC PGM=MAXBAT,PARM='IVP'

What data types can I define in a batch job?

When entering data strings, whether for selection criteria or for use in batch control statements, the following can be defined:

X'hexstr'         Hex chars 
P'nnnnnn'         Packed signed 
U'nnnnnn'         Packed unsigned 
Z'nnnnnn'         Zoned - signed 
N'nnnnnn'         Zoned - no sign 
C'xxxxxx'         Case Sensitive 
T'xxxxxx'         Case Insensitive

Where can I place COMMENTS in batch control statements?

When a, (comma) is encountered outside parenthesis or quotes the rest of the statement is ignored.

In addition to marking the end of a statement, a comma indicates the statement is continued. If you want to add a comment to a statement that is not continued, use ; instead. You can also begin a statement with an "*" and the entire statement becomes a comment.

How can I find all the CSECTS referenced in a load module?

Run the MAXXREF batch job. You can display CSECTS in a specific load module, or a group of modules. You can also exclude certain CSECT names. See the .JCL library, which contains 3 examples of the use of this utility.