|
- OUTFIL processing is supported for sort, merge, and copy applications,
but only by the Blockset technique.
- The ODMAXBF value in effect specifies the maximum buffer space
to be used for each OUTFIL data set. ODMAXBF can be specified as an
installation or run-time option, or in an ICEIEXIT
routine. The default value of 2M is recommended for the ODMAXBF option
in effect. Lowering ODMAXBF can cause performance degradation for
the application, but might be necessary if you consider the amount
of storage used for OUTFIL processing to be a problem. Raising ODMAXBF
can improve EXCPs for the application, but can also increase the amount
of storage needed.
- The storage used for OUTFIL processing will be adjusted automatically
according to the total storage available, the storage needed for non-OUTFIL
processing, and the number of OUTFIL data sets and their attributes
(for example, block size). OUTFIL processing will be subject to the
ODMAXBF limit in effect and the system storage limits (for example,
IEFUSI), but not to the DFSORT storage limits (that is, SIZE, MAXLIM,
and TMAXLIM). DFSORT attempts to use storage above 16MB virtual for
OUTFIL processing whenever possible.
- The VSAMBSP option applies to SORTOUT data sets, but not to OUTFIL
data sets. The NOBLKSET option will be ignored if OUTFIL data sets
are being processed. An E39 exit routine is entered for the SORTOUT
data set, but not for OUTFIL data sets.
- For fixed-format OUTFIL data sets: DFSORT will determine each
OUTFIL data set LRECL based on the length of the reformatted records
for the group, or the length of the OUTFIL input records (if OUTREC,
BUILD, OVERLAY, FINDREP and IFTHEN are not
specified for the group). For VSAM data sets, the maximum record size
defined in the cluster is equivalent to the LRECL.
If an OUTFIL
data set LRECL is not specified or available, DFSORT will set it to
the determined LRECL. If an OUTFIL data set LRECL is specified or
available, it must not be less than the determined LRECL, or more
than the determined LRECL if the OUTREC, BUILD, OVERLAY, FINDREP or IFTHEN parameter is specified. In other
words, the LRECL value cannot be used to pad the output records, or
to truncate the records produced by OUTREC, BUILD, OVERLAY, FINDREP or IFTHEN parameter processing.
In
general, OUTREC, BUILD, OVERLAY, or IFTHEN processing should be used
to pad the records and OUTREC, BUILD, or IFTHEN processing should
be used to truncate the records. In either case, the LRECL should
either not be specified or set to the length of the reformatted records.
- For variable-format OUTFIL data sets: DFSORT will determine
each OUTFIL data set maximum LRECL based on the length of the reformatted
records for the group, or the length of the OUTFIL input records (if
OUTREC, BUILD, OVERLAY, FINDREP and IFTHEN
are not specified for the group). If an OUTFIL data set maximum LRECL
is not specified or available, DFSORT will set it to the determined
maximum LRECL. For VSAM data sets, the maximum record size defined
in the cluster is four bytes more than the maximum LRECL.
- When you create an OUTFIL report, the length for the longest or
only data record must be equal to or greater than the maximum report
record length. You can use the OUTREC, BUILD, OVERLAY, FINDREP or
IFTHEN parameter to force a length for the data records that is longer
than any report record; you can then either let DFSORT compute and
set the LRECL, or ensure that the computed LRECL is equal to the
existing or specified LRECL. Remember to allow an extra byte in the
LRECL for the ANSI carriage control character.
For
example, if your data records are 40 bytes, but your longest report
record is 60 bytes, you can use an OUTREC parameter such as: OUTREC=(1,40,80:X)
DFSORT
will then set the LRECL to 81 (1 byte for the ANSI carriage control
character plus 80 bytes for the length of the data records), and pad
the data records with blanks on the right.
If you don't want
the ANSI carriage control characters to appear in the output data
set, use the REMOVECC parameter to remove them. For example, if you
specify: OUTREC=(1,40,80:X),REMOVECC
DFSORT will
set the LRECL to 80 instead of 81 and remove the ANSI carriage control
character from each record before it is written.
System errors
can result if you print an OUTFIL report containing records longer
than your printer can handle.
- DFSORT uses appropriate ANSI carriage controls (for example, C'-'
for triple space) in header and trailer records when possible to reduce
the number of report records written. DFSORT always uses the single
space carriage control (C' ') in data records. Although these carriage
control characters may not be shown when you view an OUTFIL data set
(depending on how you view it), they will be used if you print the
report. If you are creating a report for viewing and want blank lines
to appear in headers and trailers, specify a line of blanks instead
of using n/. For example, instead of specifying:
OUTFIL FNAMES=RPT,
HEADER2=(2/,'start of header',2/,'next line')
which will result
in blank lines for the printer, but not for viewing, specify: OUTFIL FNAMES=RPT,
HEADER2=(X,/,X,/,'start of header',/,X,/,'next line')
If you
don't want the ANSI carriage control characters to appear in the output
data set, use the REMOVECC parameter to remove them.
- For variable-length records, the first entry in the OUTREC, BUILD
or IFTHEN BUILD parameter must specify or include the unedited 4-byte
record descriptor word (RDW), that is, the first field must be 1,4
or 1,m with m greater than 4. DFSORT sets the length of the reformatted
record in the RDW.
If the first field in the data portion of the
input record is to appear unedited in the reformatted record immediately
following the RDW, the entry in the OUTREC, BUILD, or IFTHEN BUILD
parameter can specify both RDW and data field in one (1,m,...). Otherwise,
the RDW must be specifically included in the reformatted record (for
example, 1,4,1,4,HEX).
For variable-length OUTFIL header or
trailer records, you must not specify the 4-byte RDW at the beginning
of the record.
- For variable-length records, OVERLAY, IFTHEN OVERLAY
or IFTHEN PUSH items must not overlay the RDW in bytes 1-4. You must
ensure that 1:, 2:, 3: or 4: is not specified or defaulted for any
OVERLAY or PUSH item. Note that the default for the first OVERLAY
or PUSH item is 1:, so you must override it.
- With FIELDS, BUILD or IFTHEN BUILD, the variable part of the input
record (that part beyond the minimum record length) can be included
in the reformatted record and, if included, must be the last part.
For example:
OUTFIL BUILD=(1,8,20C'*',9)
With OVERLAY,
the variable part of the input record must not be included in the
reformatted record.
- For variable-length records, the FIELDS or BUILD parameter of
the INREC and OUTREC statement and the OUTREC or FIELDS parameter
of the OUTFIL statement must all specify position-only for the last
part, or all not specify position-only for the last part. OVERLAY
or IFTHEN, and FIELDS, OUTREC or BUILD, can differ with respect to
position-only. See INREC statement notes for more details.
- If there are no OUTFIL input records for an OUTFIL group, the
headers and trailers appear without any data records. Blanks will
be used for any specified unedited input fields, and zero values will
be used for any specified statistics fields.
- If a variable-length OUTFIL input record is too short to contain
a specified unedited input field for a report header or trailer, blanks
will be used for the missing bytes. If a variable-length OUTFIL input
record is too short to contain a specified section break field or
statistics field, zeros will be used for the missing bytes, intentionally
or unintentionally.
- If a variable-length OUTFIL input record is too short to contain
an OUTFIL INCLUDE or OMIT compare field, the action DFSORT takes depends
on the settings for VLSCMP/NOVLSCMP and VLSHRT/NOVLSHRT. For details,
see the discussion of the VLSCMP and NOVLSCMP options in OPTION control statement.
- If a variable-length OUTFIL input record is too short to contain
an OUTFIL OUTREC or BUILD field, DFSORT will terminate unless the
VLFILL=byte parameter is specified.
- If a variable-length OUTFIL input record is too short to contain
an OUTFIL OVERLAY or IFTHEN field, blanks will be used for the missing
bytes.
- If a variable-length OUTFIL output data record is longer than
the LRECL of its OUTFIL data set, the action DFSORT takes depends
on the settings for VLLONG/NOVLLONG. For details, see the discussion
of the VLLONG and NOVLLONG options in OPTION control statement. Note that
VLLONG can be used to truncate long OUTFIL data records, but has no
effect on long OUTFIL header or trailer records.
- If an unedited page number overflows 6 digits, an edited page
number overflows 15 digits, a count or running count overflows 15
digits, or a total or running total overflows 31 digits, the overflowing
value will be truncated to the number of digits allowed, intentionally
or unintentionally.
- Multiple OUTFIL statements can be specified in the same and different
sources. If a ddname occurs more than once in the same source, the
ddname is associated with the first OUTFIL group in which it appears.
For example, if the following is specified in SYSIN:
OUTFIL FNAMES=(OUT1,OUT2),INCLUDE=(1,1,CH,EQ,C'A')
OUTFIL FNAMES=(OUT3,OUT1),SAVE
OUT1 and OUT2 are processed
as part of the first OUTFIL group, that is, with INCLUDE. OUT3 is
processed as part of the second OUTFIL group, that is, with SAVE;
but OUT1 is not because it is a duplicate ddname. If a ddname occurs
in more than one source, the ddname is associated with the highest
source OUTFIL group in which it appears. For example, if the following
is specified in DFSPARM: OUTFIL FNAMES=(OUT1,OUT2),INCLUDE=(1,1,CH,EQ,C'A')
and
the following is specified in SYSIN: OUTFIL FNAMES=(OUT3,OUT1),SAVE
OUT1
and OUT2 are processed as part of the DFSPARM OUTFIL group, that is,
with INCLUDE. OUT3 is processed as part of the SYSIN OUTFIL group,
that is, with SAVE; but OUT1 is not because it is an overridden ddname.
- OUTFIL statements cannot be passed to or returned from an EFS
program. The D2 format cannot be specified in the INCLUDE or OMIT
parameter of an OUTFIL statement.
- If SZERO is in effect, -0 is treated as negative and +0
is treated as positive for edited or converted input fields, minimums,
maximums, decimal constants and the results of arithmetic expressions.
If NOSZERO is in effect, -0 and +0 are treated as positive
for edited or converted input fields, minimums, maximums, decimal
constants, and the results of arithmetic expressions.
- If SZERO is in effect, -0 compares as less than +0 when
numeric fields and constants are used. If NOSZERO is in effect, -0
compares as equal to +0 when numeric fields and constants are used.
Note: OPTION SZERO or OPTION NOSZERO is ignored for OUTFIL INCLUDE=(logexp)
or OMIT=(logexp), or for OUTFIL IFTHEN=(WHEN=(logexp),...) unless
the OPTION statement is found in a higher source (for example, DFSPARM
is a higher source than SYSIN) or before the
OUTFIL statement in the same source. For example, NOSZERO will
be used in both of the following cases: Case 1:
//DFSPARM DD *
OPTION COPY,NOSZERO
/*
//SYSIN DD *
OUTFIL INCLUDE=(1,2,FS,EQ,+0)
/*
Case 2:
//SYSIN DD *
OPTION COPY,NOSZERO
OUTFIL IFTHEN=(WHEN=(1,2,FS,EQ,+0),OVERLAY=(28:C'A')),
IFTHEN=(WHEN=NONE,OVERLAY=(28:C'B'))
/*
|