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