Greg Shirey wrote on 05/24/2006 10:27:14 AM:

> Since my shop doesn't modify the DFSORT defaults, I hadn't realized what
INV
> meant.  Frank's explanation raises a question for me about the new parm
> NULLOUT.
>
> The fine manual states that NULLOUT can specify the return code and the
> action to be taken by DFSORT when there are no records for the SORTOUT
data
> set, as indicated by the OUT count of 0 in message ICE054I.  The FM goes
on
> to state that NULLOUT does not apply when SORTOUT is not present.
>
> To me, this indicates that NULLOUT couldn't apply to a COBOL program
> performing a sort (or maybe even ICETOOL), though the default could be
> modified for the INV environment.  Is that right?  Or what if the COBOL
> program was using a DD of SORTOUT for the output data set?  Would it
apply
> then?

Note that "SORTOUT" is used generically to mean the regular output data set
(as opposed to an OUTFIL output data set).  It actually refers to the
ddname specified or defaulted for SORTOUT=ddname.  The default is SORTOUT,
but it could be another ddname.  For example, when you use COPY TO(OUT) ...
for ICETOOL, the ddname for "SORTOUT" is OUT and INV NULLOUT applies.

NULLOUT applies whenever DFSORT is writing the SORTOUT data set.  For a
COBOL sort, DFSORT writes the SORTOUT data set if FASTSRT is in effect for
the output data set.  Otherwise, COBOL handles ('deletes') all of the
output with its E35 routine and DFSORT doesn't write to SORTOUT.  In the
FASTSRT case, INV NULLOUT would apply because DFSORT writes the "SORTOUT"
data set.  In the NOFASTSRT case, INV NULLOUT wouldn't apply because there
is no "SORTOUT" data set as far as DFSORT is concerned.

For ICETOOL, it depends on the operator.  In general, if you use
TO(ddname), then INV NULLOUT applies.

Note that NULLOUT does not apply to OUTFIL output data sets, but you can
specify the NULLOFL parameter on each OUTFIL statement to apply to the
output data sets associated with that OUTFIL statement.  For example, if
you had:

//TOOLIN DD *
SELECT FROM(IN) TO(OUT) ON(5,2,CH) NODUPS
/*

OUT is a "SORTOUT" output data set and INV NULLOUT applies.

But if you had:

//TOOLIN DD *
SELECT FROM(IN) TO(OUT) ON(5,2,CH) NODUPS USING(CTL1)
//CTL1CNTL DD *
  OUTFIL FNAMES=OUT,OMIT=(21,2,CH,EQ,C'AB')
/*

OUT is an OUTFIL data set and INV NULLOUT does not apply.

However, you could specify:

//TOOLIN DD *
SELECT FROM(IN) TO(OUT) ON(5,2,CH) NODUPS USING(CTL1)
//CTL1CNTL DD *
  OUTFIL FNAMES=OUT,OMIT=(21,2,CH,EQ,C'AB'),NULLOFL=RC16
/*

Frank Yaeger - DFSORT Team (IBM)
 Specialties: PARSE, JFY, SQZ, ICETOOL, IFTHEN, OVERLAY, Symbols, Migration

 => DFSORT/MVS is on the Web at http://www.ibm.com/storage/dfsort/
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html

Reply via email to