RockZap: Difference between revisions

From m204wiki
Jump to navigation Jump to search
 
(19 intermediate revisions by 6 users not shown)
Line 1: Line 1:
==Introduction==
==Introduction==
<var class="product">RockZap</var> is a load module maintenance facility, similar to z/OS IMASPZAP
<var class="product">RockZap</var> is a load module maintenance facility, similar to z/OS IMASPZAP
or the CMS ZAP command.
or the CMS ZAP command. Prior to version 7.5 of Model 204, <var class="product">RockZap</var> was named <code>SirZap</code>.
 
<var class="product">RockZap</var> modifies load modules (or for CMS, both
<var class="product">RockZap</var> modifies load modules (or for CMS, both
load modules and text libraries) based on
load modules and text libraries) based on
Line 15: Line 15:
the purpose of applying maintenance to Rocket Model 204 products, but
the purpose of applying maintenance to Rocket Model 204 products, but
you need not limit use of <var class="product">RockZap</var> to those products.
you need not limit use of <var class="product">RockZap</var> to those products.
===Versions===
===Versions===
This wiki page
This wiki page
Line 24: Line 25:
be assumed that it is available in all versions covered by this
be assumed that it is available in all versions covered by this
document; that is, versions 1.6 and later of <var class="product">RockZap</var>.
document; that is, versions 1.6 and later of <var class="product">RockZap</var>.
===Messages===
<var class="product">RockZap</var> messages are documented in [[:Category:RockZap messages]].
===Downloading===
<ol>
<li>Using your [[Rocket M204 user ID]] and password, log in to the [https://model204.rocketsoftware.com/maint/objlist Model 204 object file download page].</li>
<li>Click the <b>Download object file</b> link to the right of the RockZap object file.</li>
</ol>
==RockZap features==
==RockZap features==
RockZap provides the following features:
RockZap provides the following features:
Line 32: Line 44:
stream before writing a module back to disk.
stream before writing a module back to disk.
(IMASPZAP and CMS ZAP both
(IMASPZAP and CMS ZAP both
write parts of the load module back to disk each time a new NAME
write parts of the load module back to disk each time a new <var>NAME</var>
statement is encountered, reducing performance significantly.)</li>
statement is encountered, reducing performance significantly.)</li>
   
   
Line 41: Line 53:
simply in error.</li>
simply in error.</li>


<li><var class="product">RockZap</var> allows the module name on all NAME statements to be overridden using the MODULE option.
<li><var class="product">RockZap</var> allows the module name on all <var>NAME</var> statements to be overridden using the <var>MODULE</var> option.
This provides the ability to have the same set of VERs and REPs applied to different load modules without making global changes to the NAME statements.   
This provides the ability to have the same set of <var>VER</var>s and <var>REP</var>s applied to different load modules without making global changes to the <var>NAME</var> statements.   
</li>
</li>
   
   
Line 65: Line 77:
can be removed or "backed out" if necessary.
can be removed or "backed out" if necessary.
You can override this feature,
You can override this feature,
however, using the <b>!NOVERIFY</b> statement.</li>
however, using the <var>[[#* !NOVERIFY|* !NOVERIFY]]</var> statement.</li>
 
<li><var class="product">RockZap</var> 1.7 and later support z/OS datasets with the LARGE attribute.</li>
 
</ul>
</ul>


Line 71: Line 86:
<ul>
<ul>
<li><var class="product">RockZap</var> requires that every byte in the load module that is replaced
<li><var class="product">RockZap</var> requires that every byte in the load module that is replaced
is also verified, unless the <b>!NOVERIFY</b> statement is used.
is also verified, unless the <var>* !NOVERIFY</var> statement is used.</li>
 
<li><var class="product">RockZap</var> only modifies direct access load libraries.
<li><var class="product">RockZap</var> only modifies direct access load libraries.
<var class="product">RockZap</var> does not
<var class="product">RockZap</var> does not
modify any other types of direct access datasets.
modify PDSEs or any other types of direct access data sets.</li>
 
<li>The following SPZAP statements are not supported but are ignored
<li>The following SPZAP statements are not supported but are ignored
when encountered in the input stream:
when encountered in the input stream: SETSSI, IDRDATA, and CHECKSUM.</li>
SETSSI, IDRDATA, and CHECKSUM.
 
<li>The following IMASPZAP statments are not supported and will cause
<li>The following IMASPZAP statments are not supported and will cause
<var class="product">RockZap</var> to terminate when they are encountered:
<var class="product">RockZap</var> to terminate when they are encountered:
CONSOLE, ABSDUMP, ABSDUMPT, and RECORD.
CONSOLE, ABSDUMP, ABSDUMPT, and RECORD.</li>
</ul>
</ul>
==Differences between RockZap and CMS ZAP==
==Differences between RockZap and CMS ZAP==
<ul>
<ul>
<li><var class="product">RockZap</var> requires that every byte in the load module that is replaced
<li><var class="product">RockZap</var> requires that every byte in the load module that is replaced
is also verified, unless the <b>!NOVERIFY</b> statement is used.
is also verified, unless the <var>* !NOVERIFY</var> statement is used.</li>
<li><var class="product">RockZap</var> does not support CMS LOADLIBs.
 
<li><var class="product">RockZap</var> does not support CMS LOADLIBs.</li>
 
<li>The following ZAP statements are not supported but are ignored
<li>The following ZAP statements are not supported but are ignored
when encountered in the input stream:
when encountered in the input stream: COMMENT and LOG.</li>
COMMENT and LOG.
</ul>
</ul>


==CMS installation==
==CMS installation==
<var class="product">RockZap</var> is distributed as a single load module in VMFPLC2 format.
<var class="product">RockZap</var> is distributed as a single load module in VMFPLC2 format.
A set
A set of object decks is also included in case linkedit is required.
of object decks is also included in case linkedit is required.
(This might be necessary for some older CMS versions).
(This
might be necessary for some older CMS versions).
   
   
<var class="product">RockZap</var> will be installed when you install the other Sirius products
[[#downloading|Obtain]] and [[Web help download object files#How should the RockZap object file be linked?|link]] the <var class="product">RockZap</var> object file.
you ordered. Usually, no additional steps are required.
   
   
The <var class="product">RockZap</var> load module is linked AMODE=31.
The <var class="product">RockZap</var> load module is linked <code>AMODE=31</code>.
If <var class="product">RockZap</var> must be relinked
If <var class="product">RockZap</var> must be relinked
on your system, use the following commands:
on your system, use the following commands:
Line 109: Line 124:
GENMOD ROCKZAP (FROM APPL
GENMOD ROCKZAP (FROM APPL
</p>
</p>
<blockquote class="note">You can omit the RMODE and AMODE parameters if you are running in a non-XA environment.
<p class="note"><b>Note:</b> You can omit the <var>RMODE</var> and <var>AMODE</var> parameters if you are running in a non-XA environment.
</blockquote>
</p>


==IBM z/OS installation==
==IBM z/OS installation==  
[[#downloading|Obtain]] and [[Web help download object files#How should the RockZap object file be linked?|link]] the <var class="product">RockZap</var> object file.
   
   
The ROCKZAP load module and library are distributed in IEBCOPY unload
<code>ROCKZAP</code> can be copied to SYS1.LINKLIB or SYS1.LPALIB, and it is reentrant.
format and are merged with any other Sirius products you have
purchased.
<var class="product">RockZap</var> will be installed when you install the other Sirius products
you ordered.
Usually, no additional steps are required.
ROCKZAP can be copied to SYS1.LINKLIB, or SYS1.LPALIB and is reentrant.
   
   
<div id="options"></div>
<div id="options"></div>
==RockZap options==
==RockZap options==
z/OS users supply <var class="product">RockZap</var> options in the <code>PARM</code> parameter of the EXEC job control statement.
z/OS users supply <var class="product">RockZap</var> options in the PARM parameter of the EXEC job
control statement.


For example, to force uppercase output and to
For example, to force uppercase output and to
backout ZAPs, use the following EXEC statement:
backout ZAPs, use the following EXEC statement:
<p class="code">//ROCKZAP EXEC PRM=ROCKZAP,PARM='UPPER,BACKOUT'
<p class="code">//ROCKZAP EXEC PGM=ROCKZAP,PARM='UPPER,BACKOUT'
</p>
</p>
   
   
CMS users specify options following a left parenthesis on the ROCKZAP
CMS users specify options following a left parenthesis on the <var>ROCKZAP</var>
command line.
command line.


For example, to force uppercase output and to backout the
For example, to force uppercase output and to backout the
ZAPs in the file "LOCAL ZAP A1", specify the following:
ZAPs in the file <code>LOCAL ZAP A1</code>, specify the following:
<p class="code">ROCKZAP LOCAL ( BACKOUT UPPER
<p class="code">ROCKZAP LOCAL ( BACKOUT UPPER
</p>
</p>
===MODULE===
The MODULE=modname option allows the module name on each NAME statement to be overridden with a single load-module name.  This means that you can use the same ROCKZAP jobstream to apply the same zaps to different load modules in the designated load library (SYSLIB) without making changes to any of the NAME statements.  For instance PARM='MODULE=ONLINE' would apply the zaps to the module named ONLINE in the designated load library, regardless of the load-module name on each NAME statement.  Then, using the same job stream, PARM='MODULE=ONLINTST' would apply the same zaps to the module named ONLINTST, again, regardless of the load-module name on each NAME statement.
The <var>MODULE</var> option was introduced in version 1.6 of <var class="product">RockZap</var>.


===BACKOUT===
===BACKOUT===
The <var>BACKOUT</var> option removes a ZAP without requiring any modification to
The BACKOUT option removes a ZAP without requiring any modification to
the ZAP input statements.
the ZAP input statements.
BACKOUT reverses the effect of a ZAP by
<var>BACKOUT</var> reverses the effect of a ZAP by
replacing the original Verify data in the module.
replacing the original <code>Verify</code> data in the module.


If the ZAPs were applied with IMASPZAP, CMS ZAP, or with <var class="product">RockZap</var> using the <b>!NOVERIFY</b> statement, <var class="product">RockZap</var> might not be able to perform a backout because all the original Verify data might not be present.
If the ZAPs were applied with IMASPZAP, CMS ZAP, or with <var class="product">RockZap</var> using the <var>* !NOVERIFY</var> statement, <var class="product">RockZap</var> might not be able to perform a backout because all the original <code>Verify</code> data might not be present.


===UPPER===
===EXTRACT filetype===
The <var>EXTRACT</var> option lets you extract individual object files from
a CMS text library.
<var>EXTRACT</var> can only be used when the <var>TXTLIB</var> option is also
specified.
   
   
The UPPER option forces all <var class="product">RockZap</var> output to uppercase.
<var>EXTRACT</var> requires a parameter that specifies the file type
This is
of the object files it creates. One object file is created for each
usually unnecessary, except on certain Japanese terminals and
member of the text library. The text library member name is used as the CMS file name.
when sending output to uppercase-only printers.
 
UPPER is the default setting for Hitachi and Fujitsu systems.
===MODULE===
===REPORT===
The <var>MODULE=<i>modname</i></var> option allows the module name on each <var>NAME</var> statement to be overridden with a single load-module name. This means that you can use the same <var>ROCKZAP</var> jobstream to apply the same zaps to different load modules in the designated load library (SYSLIB) without making changes to any of the <var>[[#NAME|NAME]]</var> control statements.
 
The REPORT option indicates that <var class="product">RockZap</var> will run normally except that
For example, <code>PARM='MODULE=ONLINE'</code> applies the zaps to the module named <code>ONLINE</code> in the designated load library, regardless of the load-module name on each <var>NAME</var> statement.  Then, using the same job stream, <code>PARM='MODULE=ONLINTST'</code> applies the same zaps to the module named <code>ONLINTST</code>, again, regardless of the load-module name on each <var>NAME</var> statement.
it will not update any load modules.
 
This is useful in a situation in
<p class="note"><b>Note:</b> If you are applying zaps to a <var class="product">Model&nbsp;204</var> load module, you <i>must</i> specify a value for <var>MODULE</var>. </p>
which you have a production load module you don't want to modify, but you need to determine whether or not a particular set of ZAPs are applied.
 
The <var>MODULE</var> option was introduced in version 1.6 of <var class="product">RockZap</var>.
 
===REPORT===  
Under the <var>REPORT</var> option, <var class="product">RockZap</var> runs normally but does not update any load modules. This is useful if you have a production load module you do not want to modify, but you do want to know whether or not a particular set of ZAPs are applied.


===TXTLIB txtlib===
===TXTLIB txtlib===  
The <var>TXTLIB</var> option is valid under CMS only.
The TXTLIB option is valid under CMS only.
<var>TXTLIB</var> specifies that the
TXTLIB specifies that the
ZAPs should be applied to a CMS text library instead of a load module.
ZAPs should be applied to a CMS text library instead of a load module.
   
   
You must provide the name of the text library following the TXTLIB
You must provide the name of the text library following the <var>TXTLIB</var>
parameter.
parameter.
The first parameter of the name statement (the module name)
The first parameter of the name statement (the module name)
is ignored when using the TXTLIB option.
is ignored when using the <var>TXTLIB</var> option.
Only the CSECT name is used
Only the CSECT name is used for text libraries.
for text libraries.
No load modules are inspected or modified when the
No load modules are inspected or modified when the
TXTLIB option is specified.
<var>TXTLIB</var> option is specified.
===EXTRACT filetype===
 
===UPPER===  
The EXTRACT option allows you to extract individual object files from
The <var>UPPER</var> option forces all <var class="product">RockZap</var> output to upper case.
a CMS text library.
 
EXTRACT can only be used when the TXTLIB option is also
===MISSING===
specified.
The <var>MISSING</var> option suppresses errors resulting from a NAME statement that references a CSECT not present in the load module.
<var>MISSING</var> is the default.
EXTRACT requires a parameter that specifies the file type
 
of the object files it creates.
===NOMISSING===
One object file is created for each
The <var>NOMISSING</var> option flags errors resulting from a NAME statement that references a CSECT not present in the load module. A missing CSECT results in a return code of 4.
member of the text library.
The text library member name is used as the
CMS file name.


==RockZap control statements==
==RockZap control statements==  
<var class="product">RockZap</var> control statements appear in columns 1 to 72 in fixed length,
<var class="product">RockZap</var> control statements appear in columns 1 to 72 in fixed length,
80 byte records.
80 byte records.
Statements that begin with an asterisk are treated as
Statements that begin with an asterisk are treated as
comments and are ignored, except for the two special inline parameter statements
comments and are ignored, except for the two special inline parameter statements
<b>!VERIFY</b> and <b>!NOVERIFY</b>.
<var>* !VERIFY</var> and <var>* !NOVERIFY</var>.
Control statements can begin in any column,
Control statements can begin in any column,
but line continuation is not allowed.
but line continuation is not allowed.
===VER===
===VER===
The <var>VER</var> statement identifies a range of bytes to be matched with the
The VER statement identifies a range of bytes to be matched with the
load module contents.
load module contents.
VER statements must follow a NAME statement.
<var>VER</var> statements must follow a <var>NAME</var> statement.
A VER statement must be present for each range of bytes that will be
A <var>VER</var> statement must be present for each range of bytes that will be
replaced in the load module.
replaced in the load module.
This is to ensure that the ZAP can be
This is to ensure that the ZAP can be backed out later if necessary.
backed out later if necessary.


The format of the VER statement is:
The format of the <var>VER</var> statement is:
<p class="syntax">VER <span class="term">offset verify-values comments</span>
<p class="syntax">VER <span class="term">offset verify-values comments</span>
</p>
</p>
Where:
<table>
<table>
<tr><th>offset</th><td>The hexadecimal displacement from the start of the CSECT specified in the previous NAME statement, or from the start of the load module if no CSECT was specified.</td></tr>
<tr><th>offset</th>
<tr><th nowrap>verify-values</th><td>Pairs of hexadecimal characters optionally separated by commas. The values are the expected contents of the load module at the specified offset. Uppercase or lowercase hexadecimal data are acceptable.</td></tr>
<td>The hexadecimal displacement from the start of the CSECT specified in the previous <var>NAME</var> statement, or from the start of the load module if no CSECT was specified.</td></tr>
<tr><th>comments</th><td>Any characters after the first blank after the last <b><i>verify-values</i></b> character are ignored by <var class="product">RockZap</var>.</td></tr>
 
<tr><th nowrap>verify-values</th>
<td>Pairs of hexadecimal characters optionally separated by commas. The values are the expected contents of the load module at the specified offset. Uppercase or lowercase hexadecimal data are acceptable.</td></tr>
 
<tr><th>comments</th>
<td>Any characters after the first blank after the last <var class="term">verify-values</var> character are ignored by <var class="product">RockZap</var>.</td></tr>
</table>
</table>
   
   
The following are all valid VER statements:
The following are all valid <var>VER</var> statements:
<p class="code">VER 00 010203,040506 Verify bytes at offset 0.
<p class="code">VER 00 010203,040506   <i>Verify bytes at offset 0.</i>
   
   
VER 01ca 47f0,c0e9
VER 01ca 47f0,c0e9
Line 234: Line 242:
</p>
</p>


===REP===
===REP===  
The <var>REP</var> statement identifies a range of bytes to replace the current
The REP statement identifies a range of bytes to replace the current
contents of a load module.
contents of a load module.
The REP statement must be preceded by VER
The <var>REP</var> statement must be preceded by <var>VER</var>
statements that cover the entire range of bytes that will be replaced.
statements that cover the entire range of bytes that will be replaced.
The format of the REP statement is:
 
The format of the <var>REP</var> statement is:
<p class="syntax">REP <span class="term">offset replace-value comments</span>
<p class="syntax">REP <span class="term">offset replace-value comments</span>
</p>
</p>
Where:
<table>
<table>
<tr><th>offset</th><td>The hexadecimal displacement from the start of the CSECT in the previous NAME statement.</td></tr>
<tr><th>offset</th>
<tr><th nowrap>replace-value</th><td>Pairs of hexadecimal characters optionally separated by commas. The values will replace the contents of the load module at the specified offset. Uppercase or lowercase hexadecimal data are acceptable.</td></tr>
<td>The hexadecimal displacement from the start of the CSECT in the previous <var>NAME</var> statement.</td></tr>
<tr><th>comments</th><td>Any characters after the first blank after the last <b><i>replace-value</i></b> character are ignored by <var class="product">RockZap</var>.</td></tr>
 
<tr><th nowrap>replace-value</th>
<td>Pairs of hexadecimal characters optionally separated by commas. The values will replace the contents of the load module at the specified offset. Uppercase or lowercase hexadecimal data are acceptable.</td></tr>
 
<tr><th>comments</th>
<td>Any characters after the first blank after the last <var class="term">replace-value</var> character are ignored by <var class="product">RockZap</var>.</td></tr>
</table>
</table>
   
   
The following are all valid REP statements:
The following are all valid <var>REP</var> statements:
<p class="code">REP 00 FFFFFF,FFFFFF  Replace bytes at offset 0.
<p class="code">REP 00 FFFFFF,FFFFFF  <i>Replace bytes at offset 0.</i>
   
   
REP 01ca 47f0,c0e8
REP 01ca 47f0,c0e8
Line 258: Line 272:


===NAME===
===NAME===
The <var>NAME</var> statement identifies a load module, and optionally a CSECT, that defines the context for the <var>VER</var> and <var>REP</var> statements that follow.
The NAME statement identifies a load module, and optionally a CSECT
<var>NAMEX</var> is a synonym for <var>NAME</var> that allows compatibility with the Fujitsu
that defines the context for the VER and REP statements that follow.
<code>NAMEX</code> is a synonym for NAME that allows compatibility with the Fujitsu
OSIV ZAP utility.
OSIV ZAP utility.


The format of the NAME statement is:
The format of the <var>NAME</var> statement is:
<p class="syntax">NAME <span class="term">module</span> [<span class="term">csect</span>]
<p class="syntax">NAME <span class="term">module</span> [<span class="term">csect</span>]
</p>
</p>
Where:
Where:
<table>
<table>
<tr><th>module</th><td>The name of the load module. Under CMS the filetype must be "MODULE". Under z/OS this is the name of a PDS member in the load library.</td></tr>
<tr><th>module</th>
<tr><th>csect</th><td>The name of the control section in the load module. The csect name is optional. If the csect name is missing, subsequent verify and replace displacements are calculated from offset 0 in the load module.</td></tr>
<td>The name of the load module. Under CMS the filetype must be <var>MODULE</var>. Under z/OS this is the name of a PDS member in the load library.</td></tr>
 
<tr><th>csect</th>
<td>The name of the control section in the load module. A <var class="term">csect</var> value is optional. If the CSECT name is missing, subsequent verify and replace displacements are calculated from offset 0 in the load module.</td></tr>
</table>
</table>


===DUMP or DUMPT===
<p class="note"><b>Note:</b> You can use the <var>[[#MODULE|MODULE]]</var> parameter to override the module name in <var>NAME</var> statements. </p>
 
The DUMP statement prints all or part of the contents of a load
===DUMP or DUMPT===  
The <var>DUMP</var> statement prints all or part of the contents of a load
module or CMS text library to SYSPRINT.
module or CMS text library to SYSPRINT.
Specifying DUMPT has the same effect as DUMP.
Specifying <var>DUMPT</var> has the same effect as <var>DUMP</var>.
   
   
The format of the DUMP or DUMPT statement is:
The format of the <var>DUMP</var> or <var>DUMPT</var> statement is:
<p class="syntax">DUMP[T] <span class="term">name</span> [<span class="term">csect</span> [<span class="term">offset</span> [<span class="term">length</span>]]]
<p class="syntax">DUMP[T] <span class="term">name</span> [<span class="term">csect</span> [<span class="term">offset</span> [<span class="term">length</span>]]]
</p>
</p>
Where:
Where:
<table>
<table>
<tr><th>name</th><td>The name of the load module or text library. Under CMS, specify the filename (only) of a file whose filetype must be "MODULE" or "TXTLIB". Under z/OS, specify the name of a PDS member in the load library.</td></tr>
<tr><th>name</th>
<tr><th>csect</th><td>The name of the control section. The csect name is optional. If the csect clause is missing, the entire load module or text library contents are dumped.</td></tr>
<td>The name of the load module or text library. Under CMS, specify the filename (only) of a file whose filetype must be <var>MODULE</var> or <var>TXTLIB</var>. Under z/OS, specify the name of a PDS member in the load library.</td></tr>
<tr><th>offset</th><td>The hexadecimal starting offset within the csect. This is optional and can only be specified when a csect name is specified. Use the offset parameter when you want to dump only a part of a csect. If the offset is omitted, it defaults to 0.</td></tr>
 
<tr><th>length</th><td>The number of bytes (in hexadecimal) of the csect to dump. This is an optional parameter and can only be specified if a csect and starting offset are specified.</td></tr>
<tr><th>csect</th>
<td>The name of the control section. A <var class="term">csect</var> value is optional. If the CSECT clause is missing, the entire load module or text library contents are dumped.</td></tr>
 
<tr><th>offset</th>
<td>The hexadecimal starting offset within the CSECT. This is optional, and it can only be specified when a <var class="term">csect</var> name is specified. Use the <var class="term">offset</var> parameter when you want to dump only a part of a CSECT. If the offset is omitted, it defaults to 0.</td></tr>
 
<tr><th>length</th>
<td>The number of bytes (in hexadecimal) of the CSECT to dump. This is an optional parameter, and it can only be specified if a <var class="term">csect</var> value and starting <var class="term">offset</var> value are specified.</td></tr>
</table>
</table>


===* !VERIFY===
===* !VERIFY===
The special statement <var>* !VERIFY</var> (and <var>* !NOVERIFY</var>) lets you control whether individual ZAPs are verified before being applied.
   
   
The special statement
The main purpose of these statements is to override whether the current portion of the zap requires verify data. This can be useful when a single ZAP in an input stream containing many ZAPs has no verify data.
<b>!VERIFY</b> (and <b>!NOVERIFY</b>) allows you to control
whether individual ZAPs are verified before being applied.
The main purpose of these statements is to override whether the current
portion of the zap requires verify data.
This can be useful
when a single ZAP in an input stream containing many ZAPs has no verify
data.
   
   
The asterisk and space are necessary so that other ZAP utilities treat
The asterisk and space are necessary so that other ZAP utilities treat
the statements as comments.
the statements as comments.
   
   
Use
Use <var>* !VERIFY</var> anywhere within the ZAP input stream.
<b>!VERIFY</b> anywhere within the ZAP input stream.
ZAPs following the <var>* !VERIFY</var> statement are verified (the <var>VER</var> data must match the module contents) before the ZAP is applied.
ZAPs following the
<b>!VERIFY</b> statement will be verified (the VER data must match the module
contents) before the ZAP will be applied.
   
   
Since the <b>!NOVERIFY</b> statement is new in <var class="product">RockZap</var> version 1.6, you might have <var class="product">RockZap</var> JCL or
Since the <var>* !NOVERIFY</var> statement is new in <var class="product">RockZap</var> version 1.6, you might have <var class="product">RockZap</var> JCL or
EXECs that use the NOVERIFY program option to accomplish this purpose, but at
EXECs that use the <var>NOVERIFY</var> program option to accomplish this purpose, but at
a dangerous job step level.
a dangerous job step level.
We strongly recommend you do not use the NOVERIFY program option, but use
<p class="warn"> <b>Note:</b> <i>It is strongly recommended</i> that you not use the <var>NOVERIFY</var> program option, but do use
the <b>!NOVERIFY</b> statement instead, and only when needed.
the <var>* !NOVERIFY</var> statement instead, and only when needed. </p>


===* !NOVERIFY===
===* !NOVERIFY===
The special inline statement
The special inline statement
<b>!NOVERIFY</b> (and <b>!VERIFY</b>) allows you control
<var>* !NOVERIFY</var> (and <var>* !VERIFY</var>) lets you control
whether individual ZAPs are verified before being applied.
whether individual ZAPs are verified before being applied.
The main purpose of these statements is to override whether the current
The main purpose of these statements is to override whether the current
portion of the zap requires verify data.
portion of the zap requires verify data.
This can be useful
This can be useful when a single ZAP in an input stream containing many ZAPs has no verify
when a single ZAP in an input stream containing many ZAPs has no verify
data or the verify data is known to be incorrect.
data or the verify data is known to be incorrect.
   
   
Use
Use <var>* !NOVERIFY</var> anywhere within the ZAP input stream.
<b>!NOVERIFY</b> anywhere within the ZAP input stream.
ZAPs following the <var>* !NOVERIFY</var> statement are not verified (the <var>VER</var> data may be missing or not match the module contents) before the ZAP is applied.
ZAPs following the
<b>!NOVERIFY</b> statement will not be verified (the VER data may be missing, or
not match the module contents) before the ZAP will be applied.
   
   
Since the <b>!NOVERIFY</b> statement is new in <var class="product">RockZap</var> version 1.6, you might have <var class="product">RockZap</var> JCL or
Since the <var>* !NOVERIFY</var> statement is new in <var class="product">RockZap</var> version 1.6, you might have <var class="product">RockZap</var> JCL or
EXECs which use the NOVERIFY program option to accomplish this purpose, but at
EXECs that use the <var>NOVERIFY</var> program option to accomplish this purpose, but at
a dangerous job step level.
a dangerous job step level.
We strongly recommend you do not use the NOVERIFY program option, but use
<p class="warn"><b>Note:</b> <i>It is strongly recommended</i> that you not use the <var>NOVERIFY</var> program option, but do use the <var>* !NOVERIFY</var> statement instead, and only when needed. </p>
the <b>!NOVERIFY</b> statement instead, and only when needed.


==Using RockZap under z/OS==
==Using RockZap under z/OS==
Job Control requirements for <var class="product">RockZap</var> are the same as for IMASPZAP. Most <var class="product">RockZap</var> storage is allocated above the 16 megabyte line, so the default region size should be sufficient.
Job Control requirements for <var class="product">RockZap</var> are the same as for IMASPZAP.
 
Most
<var class="product">RockZap</var> storage is allocated above the 16 megabyte line, so the default
region size should be sufficient.
===RockZap DD statements===
===RockZap DD statements===
Required statements:
Required statements:
<ul>
<ul>
<li>SYSLIB points to the load library PDS (Partitioned Data
<li>SYSLIB points to the load library PDS (Partitioned Data
Set) containing the load module you want to ZAP.</li>
Set) containing the load module you want to ZAP. The load library cannot be a PDSE (Partition Data Set Extended) dataset.</li>
 
<li>SYSIN contains the ZAP control statements and must
<li>SYSIN contains the ZAP control statements and must
have the DCB attributes of RECFM=F or FB, and LRECL=80.</li>
have the DCB attributes of <code>RECFM=F</code> or <code>RECFM=FB</code>, and <code>LRECL=80</code>.</li>
 
<li>SYSPRINT is the report data set.</li>
<li>SYSPRINT is the report data set.</li>
</ul>
</ul>


===<var class="product">RockZap</var> sample JCL===
===RockZap sample JCL===
<p class="code">//ROCKZAP  JOB  CLASS=A,MSGCLASS=A
<p class="code">//ROCKZAP  JOB  CLASS=A,MSGCLASS=A
//ZAP      EXEC PGM=ROCKZAP,PARM='sirzap parms'
//ZAP      EXEC PGM=ROCKZAP,PARM='RockZap parms'
//STEPLIB  DD  DSN=ROCKZAP.V106.LOAD,DISP=SHR
//STEPLIB  DD  DSN=ROCKZAP.V106.LOAD,DISP=SHR
//SYSLIB  DD  DSN=loadlib,DISP=SHR
//SYSLIB  DD  DSN=loadlib,DISP=SHR
Line 368: Line 374:


==Using RockZap under CMS==
==Using RockZap under CMS==
The format of the <var>ROCKZAP</var> command is:
The format of the ROCKZAP command is:
<p class="syntax">ROCKZAP <span class="term">fn</span> [<span class="term">ft</span> [<span class="term">fm</span>]] ( <span class="term">options</span>
<p class="syntax">ROCKZAP <span class="term">fn</span> [<span class="term">ft</span> [<span class="term">fm</span>]] ( <span class="term">options</span>
</p>
</p>
Line 376: Line 381:
Simply enter <code>ROCKZAP</code> followed by the
Simply enter <code>ROCKZAP</code> followed by the
name of the input file.
name of the input file.
The default filetype is "ZAP", and the
The default filetype is <code>ZAP</code>, and the
default filemode is "*".
default filemode is <code>*</code>.
   
   
Options are supplied in any order following the left parenthesis.
Options are supplied in any order following the left parenthesis.
See [[#options|"Options"]] for a list of options.
See [[#options|RockZap options]] for a list of options.
   
   
<var class="product">RockZap</var> writes the report and any modified load modules to the disk
<var class="product">RockZap</var> writes the report and any modified load modules to the disk
accessed as the "A" disk.
accessed as the "A" disk.
Make sure that the "A" disk is
Make sure that the "A" disk is accessed in Read/Write mode.
accessed in Read/Write mode.
 
===Using RockZap with CMS text libraries===
===Using RockZap with CMS text libraries===
When <var class="product">RockZap</var> processes a text library, the resulting text library or object files usually contain fewer records than the original.
When <var class="product">RockZap</var> processes a text library, the resulting text library or object files
usually contain fewer records than the original.
No information is lost and the
No information is lost and the
resulting text library or object file is logically the same as the original.
resulting text library or object file is logically the same as the original.
Text
Text records in the object file are always written with the maximum amount of object code
records in the object file are always written with the maximum amount of object code
per record. Often, fewer records are required than are typically written by the
per record. Often, fewer records are required than are typically written by the
compiler or assembler that originally generated the object.
compiler or assembler that originally generated the object.
This object file 'normalization' is similar to how a linkage editor processes an object
 
This object file "normalization" is similar to how a linkage editor processes an object
file.
file.
<var class="product">RockZap</var> performs this normalization so that ZAPs can be applied more efficiently.
<var class="product">RockZap</var> performs this normalization so that ZAPs can be applied more efficiently.


==RockZap return codes==
==RockZap return codes==
<table>
<table class="thJustBold">
<tr><th>0</th><td>ZAPs were processed successfully. Any modified load modules are written back to disk.</td></tr>
<tr><th>0</th>
<tr><th>4</th><td>ZAPs were processed successfully, but one or more warning messages were produced. This usually indicates a CSECT was missing from one or more of the load modules. Check the <var class="product">RockZap</var> report for the name of the module and CSECT. If any load modules were modified, they are written back to disk.</td></tr>
<td>ZAPs were processed successfully. Any modified load modules are written back to disk.</td></tr>
<tr><th>8</th><td>One or more errors occurred. Check the <var class="product">RockZap</var> report for details.</td></tr>
 
<tr><th>12</th><td><var class="product">RockZap</var> was unable to open the input file. Make sure the filename is correct and that the file or PDS member is present.</td></tr>
<tr><th>4</th>
<tr><th>40</th><td><var class="product">RockZap</var> could not open the report file (SYSPRINT). For z/OS, make sure a DD statement for SYSPRINT is present. For CMS, the internal FILEDEF for SYSPRINT may have failed. Make sure the "A" disk is accessed in read/write mode.</td></tr>
<td>ZAPs were processed successfully, but one or more warning messages were produced. This usually indicates a CSECT was missing from one or more of the load modules. Check the <var class="product">RockZap</var> report for the name of the module and CSECT. If any load modules were modified, they are written back to disk.</td></tr>
 
<tr><th>8</th>
<td>One or more errors occurred. Check the <var class="product">RockZap</var> report for details.</td></tr>
 
<tr><th>12</th>
<td><var class="product">RockZap</var> was unable to open the input file. Make sure the filename is correct and that the file or PDS member is present.</td></tr>
 
<tr><th>40</th>
<td><var class="product">RockZap</var> could not open the report file (SYSPRINT). For z/OS, make sure a DD statement for SYSPRINT is present. For CMS, the internal FILEDEF for SYSPRINT may have failed. Make sure the "A" disk is accessed in read/write mode.</td></tr>
</table>
</table>
==Deprecated options==
 
==Deprecated options==  
The following program options are no longer necessary.
The following program options are no longer necessary.
It is recommended
It is recommended
that you not use them, and that if you discover them in old JCL or EXECs,
that you not use them, and that if you discover them in old JCL or EXECs,
you correct them to use the newer recommended approaches.
you correct them to use the newer recommended approaches.
===NOVERIFY===
 
===NOVERIFY===  
The NOVERIFY option allows you to apply ZAPs that have no verify data.
The <var>NOVERIFY</var> option lets you apply ZAPs that have no verify data.
Use the NOVERIFY option with caution.
Use the <var>NOVERIFY</var> option with caution.
Once a ZAP is applied using NOVERIFY,
Once a ZAP is applied using <var>NOVERIFY</var>,
the original contents of the load module are lost.
the original contents of the load module are lost.
   
   
<p class="note"><b>Note:</b> Since the <b>!NOVERIFY</b> statement can provide the functionality needed for
<p class="warn"><b>Note:</b> Since the <var>* !NOVERIFY</var> statement can provide the functionality needed for applying a <b>portion</b> of a zap without verify data, it is strongly recommended that you not use the <var>NOVERIFY</var> option, which might extend to other portions of the zap with incorrect verify data.
applying a <b>portion</b> of a zap without verify data, we strongly
recommend that you do not use
the NOVERIFY option, which might extend to other portions
of the zap with incorrect verify data.
</p>
</p>


===VERIFY===
===VERIFY===  
The <var>VERIFY</var> option ensures that all replace data has been successfully
The VERIFY option ensures that all replace data has been successfully
verified before updating the load module.
verified before updating the load module.
The VERIFY option is a <var class="product">RockZap</var> default and need not be specified.
<var>VERIFY</var> is a <var class="product">RockZap</var> default, and it need not be specified.


<p class="note"><b>Note:</b> Since we recommend that you do not use the NOVERIFY option, you
<p class="note"><b>Note:</b> Since it is recommended that you do not use the <var>NOVERIFY</var> option, you might want to avoid the <var>VERIFY</var> option as well, thus eliminating any tendency to control requirement of verify data at the job step level.
might want to avoid the VERIFY option as well, thus eliminating any
tendency to control requirement of verify data at the job step
level.
</p>
</p>
[[Category:Sirius Software products]]
 
[[Category:RKTools]]

Latest revision as of 20:07, 18 February 2022

Introduction

RockZap is a load module maintenance facility, similar to z/OS IMASPZAP or the CMS ZAP command. Prior to version 7.5 of Model 204, RockZap was named SirZap.

RockZap modifies load modules (or for CMS, both load modules and text libraries) based on information from control statements supplied by the user. RockZap is not a plug compatible replacement for the IBM ZAP utilities, but it provides functional and performance enhancements for load module maintenance.

RockZap is distributed as part of a software maintenance agreement between Rocket Software Inc. and its customers. RockZap is provided for the purpose of applying maintenance to Rocket Model 204 products, but you need not limit use of RockZap to those products.

Versions

This wiki page assumes that a site is running RockZap version 1.6 or later. Any documented feature or facility that requires a later version of RockZap will be clearly marked to indicate this. If a feature or parameter is not indicated as requiring any specific version of RockZap, it can be assumed that it is available in all versions covered by this document; that is, versions 1.6 and later of RockZap.

Messages

RockZap messages are documented in Category:RockZap messages.

Downloading

  1. Using your Rocket M204 user ID and password, log in to the Model 204 object file download page.
  2. Click the Download object file link to the right of the RockZap object file.

RockZap features

RockZap provides the following features:

  • RockZap can save significant amounts of elapsed time and CPU for long ZAP input streams. This is because RockZap applies all ZAPs in the input stream before writing a module back to disk. (IMASPZAP and CMS ZAP both write parts of the load module back to disk each time a new NAME statement is encountered, reducing performance significantly.)
  • RockZap detects and reports ZAPs that are already applied. Using IMASPZAP or CMS ZAP, the user must inspect long CSECT dumps produced by the ZAP utility in order to determine if the ZAP is already applied, or simply in error.
  • RockZap allows the module name on all NAME statements to be overridden using the MODULE option. This provides the ability to have the same set of VERs and REPs applied to different load modules without making global changes to the NAME statements.
  • RockZap can "back out" or remove ZAPs without requiring modification to the ZAP control statements. By using the BACKOUT option, ZAPs can be removed from the load module and replaced by the original Verify data.
  • RockZap limits error reporting to the specific statements in error, and it reports only the information necessary to diagnose and correct the error.
  • RockZap only writes modified load modules. If the ZAPs are already completely applied, RockZap does not write the load module back to disk.
  • RockZap enforces stricter rules on ZAP input statements. Verify statements are required for all replaced bytes. This ensures that the load module contents are known before they are modified, and that a ZAP can be removed or "backed out" if necessary. You can override this feature, however, using the * !NOVERIFY statement.
  • RockZap 1.7 and later support z/OS datasets with the LARGE attribute.

Differences between RockZap and IMASPZAP

  • RockZap requires that every byte in the load module that is replaced is also verified, unless the * !NOVERIFY statement is used.
  • RockZap only modifies direct access load libraries. RockZap does not modify PDSEs or any other types of direct access data sets.
  • The following SPZAP statements are not supported but are ignored when encountered in the input stream: SETSSI, IDRDATA, and CHECKSUM.
  • The following IMASPZAP statments are not supported and will cause RockZap to terminate when they are encountered: CONSOLE, ABSDUMP, ABSDUMPT, and RECORD.

Differences between RockZap and CMS ZAP

  • RockZap requires that every byte in the load module that is replaced is also verified, unless the * !NOVERIFY statement is used.
  • RockZap does not support CMS LOADLIBs.
  • The following ZAP statements are not supported but are ignored when encountered in the input stream: COMMENT and LOG.

CMS installation

RockZap is distributed as a single load module in VMFPLC2 format. A set of object decks is also included in case linkedit is required. (This might be necessary for some older CMS versions).

Obtain and link the RockZap object file.

The RockZap load module is linked AMODE=31. If RockZap must be relinked on your system, use the following commands:

LOAD ROCKZAP (RESET ROCKZAP RMODE 24 AMODE 31 GENMOD ROCKZAP (FROM APPL

Note: You can omit the RMODE and AMODE parameters if you are running in a non-XA environment.

IBM z/OS installation

Obtain and link the RockZap object file.

ROCKZAP can be copied to SYS1.LINKLIB or SYS1.LPALIB, and it is reentrant.

RockZap options

z/OS users supply RockZap options in the PARM parameter of the EXEC job control statement.

For example, to force uppercase output and to backout ZAPs, use the following EXEC statement:

//ROCKZAP EXEC PGM=ROCKZAP,PARM='UPPER,BACKOUT'

CMS users specify options following a left parenthesis on the ROCKZAP command line.

For example, to force uppercase output and to backout the ZAPs in the file LOCAL ZAP A1, specify the following:

ROCKZAP LOCAL ( BACKOUT UPPER

BACKOUT

The BACKOUT option removes a ZAP without requiring any modification to the ZAP input statements. BACKOUT reverses the effect of a ZAP by replacing the original Verify data in the module.

If the ZAPs were applied with IMASPZAP, CMS ZAP, or with RockZap using the * !NOVERIFY statement, RockZap might not be able to perform a backout because all the original Verify data might not be present.

EXTRACT filetype

The EXTRACT option lets you extract individual object files from a CMS text library. EXTRACT can only be used when the TXTLIB option is also specified.

EXTRACT requires a parameter that specifies the file type of the object files it creates. One object file is created for each member of the text library. The text library member name is used as the CMS file name.

MODULE

The MODULE=modname option allows the module name on each NAME statement to be overridden with a single load-module name. This means that you can use the same ROCKZAP jobstream to apply the same zaps to different load modules in the designated load library (SYSLIB) without making changes to any of the NAME control statements.

For example, PARM='MODULE=ONLINE' applies the zaps to the module named ONLINE in the designated load library, regardless of the load-module name on each NAME statement. Then, using the same job stream, PARM='MODULE=ONLINTST' applies the same zaps to the module named ONLINTST, again, regardless of the load-module name on each NAME statement.

Note: If you are applying zaps to a Model 204 load module, you must specify a value for MODULE.

The MODULE option was introduced in version 1.6 of RockZap.

REPORT

Under the REPORT option, RockZap runs normally but does not update any load modules. This is useful if you have a production load module you do not want to modify, but you do want to know whether or not a particular set of ZAPs are applied.

TXTLIB txtlib

The TXTLIB option is valid under CMS only. TXTLIB specifies that the ZAPs should be applied to a CMS text library instead of a load module.

You must provide the name of the text library following the TXTLIB parameter. The first parameter of the name statement (the module name) is ignored when using the TXTLIB option. Only the CSECT name is used for text libraries. No load modules are inspected or modified when the TXTLIB option is specified.

UPPER

The UPPER option forces all RockZap output to upper case.

MISSING

The MISSING option suppresses errors resulting from a NAME statement that references a CSECT not present in the load module. MISSING is the default.

NOMISSING

The NOMISSING option flags errors resulting from a NAME statement that references a CSECT not present in the load module. A missing CSECT results in a return code of 4.

RockZap control statements

RockZap control statements appear in columns 1 to 72 in fixed length, 80 byte records. Statements that begin with an asterisk are treated as comments and are ignored, except for the two special inline parameter statements * !VERIFY and * !NOVERIFY. Control statements can begin in any column, but line continuation is not allowed.

VER

The VER statement identifies a range of bytes to be matched with the load module contents. VER statements must follow a NAME statement. A VER statement must be present for each range of bytes that will be replaced in the load module. This is to ensure that the ZAP can be backed out later if necessary.

The format of the VER statement is:

VER offset verify-values comments

Where:

offset The hexadecimal displacement from the start of the CSECT specified in the previous NAME statement, or from the start of the load module if no CSECT was specified.
verify-values Pairs of hexadecimal characters optionally separated by commas. The values are the expected contents of the load module at the specified offset. Uppercase or lowercase hexadecimal data are acceptable.
comments Any characters after the first blank after the last verify-values character are ignored by RockZap.

The following are all valid VER statements:

VER 00 010203,040506 Verify bytes at offset 0. VER 01ca 47f0,c0e9 VER 23EC D20310004000,90ECD000,07FC

REP

The REP statement identifies a range of bytes to replace the current contents of a load module. The REP statement must be preceded by VER statements that cover the entire range of bytes that will be replaced.

The format of the REP statement is:

REP offset replace-value comments

Where:

offset The hexadecimal displacement from the start of the CSECT in the previous NAME statement.
replace-value Pairs of hexadecimal characters optionally separated by commas. The values will replace the contents of the load module at the specified offset. Uppercase or lowercase hexadecimal data are acceptable.
comments Any characters after the first blank after the last replace-value character are ignored by RockZap.

The following are all valid REP statements:

REP 00 FFFFFF,FFFFFF Replace bytes at offset 0. REP 01ca 47f0,c0e8 REP 23EC D203101C4000,90ECD008,07FE

NAME

The NAME statement identifies a load module, and optionally a CSECT, that defines the context for the VER and REP statements that follow. NAMEX is a synonym for NAME that allows compatibility with the Fujitsu OSIV ZAP utility.

The format of the NAME statement is:

NAME module [csect]

Where:

module The name of the load module. Under CMS the filetype must be MODULE. Under z/OS this is the name of a PDS member in the load library.
csect The name of the control section in the load module. A csect value is optional. If the CSECT name is missing, subsequent verify and replace displacements are calculated from offset 0 in the load module.

Note: You can use the MODULE parameter to override the module name in NAME statements.

DUMP or DUMPT

The DUMP statement prints all or part of the contents of a load module or CMS text library to SYSPRINT. Specifying DUMPT has the same effect as DUMP.

The format of the DUMP or DUMPT statement is:

DUMP[T] name [csect [offset [length]]]

Where:

name The name of the load module or text library. Under CMS, specify the filename (only) of a file whose filetype must be MODULE or TXTLIB. Under z/OS, specify the name of a PDS member in the load library.
csect The name of the control section. A csect value is optional. If the CSECT clause is missing, the entire load module or text library contents are dumped.
offset The hexadecimal starting offset within the CSECT. This is optional, and it can only be specified when a csect name is specified. Use the offset parameter when you want to dump only a part of a CSECT. If the offset is omitted, it defaults to 0.
length The number of bytes (in hexadecimal) of the CSECT to dump. This is an optional parameter, and it can only be specified if a csect value and starting offset value are specified.

* !VERIFY

The special statement * !VERIFY (and * !NOVERIFY) lets you control whether individual ZAPs are verified before being applied.

The main purpose of these statements is to override whether the current portion of the zap requires verify data. This can be useful when a single ZAP in an input stream containing many ZAPs has no verify data.

The asterisk and space are necessary so that other ZAP utilities treat the statements as comments.

Use * !VERIFY anywhere within the ZAP input stream. ZAPs following the * !VERIFY statement are verified (the VER data must match the module contents) before the ZAP is applied.

Since the * !NOVERIFY statement is new in RockZap version 1.6, you might have RockZap JCL or EXECs that use the NOVERIFY program option to accomplish this purpose, but at a dangerous job step level.

Note: It is strongly recommended that you not use the NOVERIFY program option, but do use the * !NOVERIFY statement instead, and only when needed.

* !NOVERIFY

The special inline statement * !NOVERIFY (and * !VERIFY) lets you control whether individual ZAPs are verified before being applied. The main purpose of these statements is to override whether the current portion of the zap requires verify data. This can be useful when a single ZAP in an input stream containing many ZAPs has no verify data or the verify data is known to be incorrect.

Use * !NOVERIFY anywhere within the ZAP input stream. ZAPs following the * !NOVERIFY statement are not verified (the VER data may be missing or not match the module contents) before the ZAP is applied.

Since the * !NOVERIFY statement is new in RockZap version 1.6, you might have RockZap JCL or EXECs that use the NOVERIFY program option to accomplish this purpose, but at a dangerous job step level.

Note: It is strongly recommended that you not use the NOVERIFY program option, but do use the * !NOVERIFY statement instead, and only when needed.

Using RockZap under z/OS

Job Control requirements for RockZap are the same as for IMASPZAP. Most RockZap storage is allocated above the 16 megabyte line, so the default region size should be sufficient.

RockZap DD statements

Required statements:

  • SYSLIB points to the load library PDS (Partitioned Data Set) containing the load module you want to ZAP. The load library cannot be a PDSE (Partition Data Set Extended) dataset.
  • SYSIN contains the ZAP control statements and must have the DCB attributes of RECFM=F or RECFM=FB, and LRECL=80.
  • SYSPRINT is the report data set.

RockZap sample JCL

//ROCKZAP JOB CLASS=A,MSGCLASS=A //ZAP EXEC PGM=ROCKZAP,PARM='RockZap parms' //STEPLIB DD DSN=ROCKZAP.V106.LOAD,DISP=SHR //SYSLIB DD DSN=loadlib,DISP=SHR //SYSPRINT DD SYSOUT=* //SYSIN DD * zap control statements /*

Using RockZap under CMS

The format of the ROCKZAP command is:

ROCKZAP fn [ft [fm]] ( options

RockZap is invoked as a CMS command. Simply enter ROCKZAP followed by the name of the input file. The default filetype is ZAP, and the default filemode is *.

Options are supplied in any order following the left parenthesis. See RockZap options for a list of options.

RockZap writes the report and any modified load modules to the disk accessed as the "A" disk. Make sure that the "A" disk is accessed in Read/Write mode.

Using RockZap with CMS text libraries

When RockZap processes a text library, the resulting text library or object files usually contain fewer records than the original. No information is lost and the resulting text library or object file is logically the same as the original. Text records in the object file are always written with the maximum amount of object code per record. Often, fewer records are required than are typically written by the compiler or assembler that originally generated the object.

This object file "normalization" is similar to how a linkage editor processes an object file. RockZap performs this normalization so that ZAPs can be applied more efficiently.

RockZap return codes

0 ZAPs were processed successfully. Any modified load modules are written back to disk.
4 ZAPs were processed successfully, but one or more warning messages were produced. This usually indicates a CSECT was missing from one or more of the load modules. Check the RockZap report for the name of the module and CSECT. If any load modules were modified, they are written back to disk.
8 One or more errors occurred. Check the RockZap report for details.
12 RockZap was unable to open the input file. Make sure the filename is correct and that the file or PDS member is present.
40 RockZap could not open the report file (SYSPRINT). For z/OS, make sure a DD statement for SYSPRINT is present. For CMS, the internal FILEDEF for SYSPRINT may have failed. Make sure the "A" disk is accessed in read/write mode.

Deprecated options

The following program options are no longer necessary. It is recommended that you not use them, and that if you discover them in old JCL or EXECs, you correct them to use the newer recommended approaches.

NOVERIFY

The NOVERIFY option lets you apply ZAPs that have no verify data. Use the NOVERIFY option with caution. Once a ZAP is applied using NOVERIFY, the original contents of the load module are lost.

Note: Since the * !NOVERIFY statement can provide the functionality needed for applying a portion of a zap without verify data, it is strongly recommended that you not use the NOVERIFY option, which might extend to other portions of the zap with incorrect verify data.

VERIFY

The VERIFY option ensures that all replace data has been successfully verified before updating the load module. VERIFY is a RockZap default, and it need not be specified.

Note: Since it is recommended that you do not use the NOVERIFY option, you might want to avoid the VERIFY option as well, thus eliminating any tendency to control requirement of verify data at the job step level.