CSECT

Purpose

The CSECT option allows you to limit processing to zero or more CSECTs.

Read syntax diagramSkip visual syntax diagramCSECT=expr

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
<>
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
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.