CSECT
Purpose
The CSECT option allows you to limit processing to zero or more CSECTs.
Default
By default, if you do not specify the CSECT option, ABO processes all eligible CSECTs.
Parameter
- expr
- A regular expression for the CSECTs that you want to process. Only the CSECTs whose name string match the expression will be processed. Matching is case insensitive.
Usage
A regular expression accepts the following symbols:
- *
- Matches any string.
- ?
- Matches any character.
- :
- Can be used as a separator for multiple expressions. With multiple expressions any expression
matching the string counts as a match. The symbol (|) can also be used as a separator but is
deprecated as it is only interpreted correctly in a few EBCDIC code pages.For example:
- To optimize only CSECTs PROGA and PROGB:
CSECT=PROGA:PROGB
- To optimize only CSECTs PROGA and PROGB:
- <>
- Negates the entire expression that follows it. The symbol (!) can also be used for negation but
is deprecated as it is only interpreted correctly in a few EBCDIC code pages.For example:
- To skip a single CSECT named PROGA:
CSECT=<>PROGA
- To skip all CSECTs whose names begin with PROGB:
CSECT=<>PROGB*
- To skip CSECTs named PROGA and PROGB:
CSECT=<>PROGA:PROGB
- To skip a single CSECT named PROGA:
Notes:
- Spaces and brackets are not allowed in a regular expression.
- An expression must match the entire string. A partial match does not count as a match. This means the expression M*2 matches the string MA2 but not the string MA2A.
- Due to different character encodings across EBCDIC code pages the deprecated
symbols (|) for expression separation and (!) for expression negation will only work properly in the
following code pages:
- IBM-1047
- IBM-37/1140
- IBM-285/1146
- IBM-924
- The symbols (|) and (!) are deprecated and may be removed in the future.
Example 1
In the following example, the CSECTs that do not match the wildcard filter are not processed.
JCL
COMMAND
BOPT IN=DD:SYSBIN(*) OUT=DD:SYSBOUT CSECT=SUB*1*
OUTPUT
(in OPTLOG)
...
10:46:04 Processing CSECT filter expression 'SUB*1*' on member CALLLITT
10:46:04 CSECT CALLLIT was excluded by filter - skip
10:46:04 Processing CSECT SUB01L00, in member CALLLITT
10:46:04 Optimizing CSECT SUB01L00 for zEC12
10:46:04 Succeeded in optimizing SUB01L00
10:46:04 Generating listing transform into DD:SYSPRINT
10:46:04 CSECT SUB02L00 was excluded by filter - skip
10:46:04 CSECT SUB03L00 was excluded by filter - skip
10:46:04 CSECT SUB04L00 was excluded by filter - skip
10:46:04 CSECT SUB05L00 was excluded by filter - skip
10:46:04 CSECT SUB06L00 was excluded by filter - skip
10:46:04 CSECT SUB07L00 was excluded by filter - skip
10:46:04 CSECT SUB08L00 was excluded by filter - skip
10:46:04 CSECT SUB09L00 was excluded by filter - skip
10:46:04 Processing CSECT SUB10L00, in member CALLLITT
10:46:04 Optimizing CSECT SUB10L00 for zEC12
10:46:04 Succeeded in optimizing SUB10L00
10:46:04 Generating listing transform into DD:SYSPRINT
10:46:04 Finished processing, processed 2 of 11 CSECTs in member CALLLITT
Example 2
The following example shows how to specify multiple expressions for matching.
JCL COMMAND
BOPT IN=DD:SYSBIN(*) OUT=DD:SYSBOUT CSECT=SUB01L00:SUB02L00
OUTPUT
...
10:49:13 Processing CSECT filter expression 'SUB01L00:SUB02L00' on member CALLLITT
10:49:13 CSECT CALLLIT was excluded by filter - skip
10:49:13 Processing CSECT SUB01L00, in member CALLLITT
10:49:13 Optimizing CSECT SUB01L00 for zEC12
10:49:13 Succeeded in optimizing SUB01L00
10:49:13 Generating listing transform into DD:SYSPRINT
10:49:13 Processing CSECT SUB02L00, in member CALLLITT
10:49:13 Optimizing CSECT SUB02L00 for zEC12
10:49:13 Succeeded in optimizing SUB02L00
10:49:13 Generating listing transform into DD:SYSPRINT
10:49:13 CSECT SUB03L00 was excluded by filter - skip
10:49:13 CSECT SUB04L00 was excluded by filter - skip
10:49:13 CSECT SUB05L00 was excluded by filter - skip
10:49:13 CSECT SUB06L00 was excluded by filter - skip
10:49:13 CSECT SUB07L00 was excluded by filter - skip
10:49:13 CSECT SUB08L00 was excluded by filter - skip
10:49:13 CSECT SUB09L00 was excluded by filter - skip
10:49:13 CSECT SUB10L00 was excluded by filter - skip
10:49:13 Finished processing, processed 2 of 11 CSECTs in member CALLLITT
Example 3
In the following example, MEM1 in dataset HLQ.IN.LOAD has two CSECTs named A1 and B1. To limit ABO processing to only A1, use a CSECT=A* filter as follows:
JCL
COMMAND
BOPT IN=HLQ.IN.LOAD(MEM1) OUT=HLQ.OUT.LOAD(MEM1) CSECT=A*
With
this CSECT=A* filter in place the OPTLOG looks like the following:OUTPUT
...
17:46:04 Processing CSECT filter expression ’A*’ on member MEM1
17:46:04 Processing CSECT A1, in member MEM1
17:46:04 Optimizing CSECT A1 for zEC12
17:46:04 Succeeded in optimizing A1
17:46:04 Generating listing transform into DD:SYSPRINT
17:46:04 CSECT B1 was excluded by filter – skip
17:46:04 Finished processing, processed 1 of 2 CSECTs in member MEM1
...
Alternatively CSECT=A* can be specified as a global
option so it applies to all subsequent BOPT and IEFOPZ directives
unless overridden by a particular directive://SYSIN DD *
CSECT=A*
BOPT IN=HLQ.IN.LOAD(MEM1) OUT=HLQ.OUT.LOAD(MEM1A)
BOPT IN=HLQ.IN.LOAD(MEM1) OUT=HLQ.OUT.LOAD(MEM1B) CSECT=B*
After processing, the member MEM1A will contain the optimized
CSECT A1 and the original CSECT B1, and member MEM1B will contain
the optimized CSECT B1 and the original CSECT A1.