Summary -
In this topic, we described about the OUTFIL Including, omitting Records with detailed example.
OUTFIL can be used with INCLUDE or OMIT parameters to include or omitting records. Different INCLUDE or OMIT parameters can be used for different OUTFIL statements.
All of the logical expressions that are valid for the INCLUDE and OMIT parameters of OUTFIL. However, the FORMAT parameter cannot specify with the OUTFIL statement.
VB data set considerations also apply to the INCLUDE and OMIT parameters.
Syntax -
SORT FILEDS=(Starting position, length, data-format, A/D) OUTFIL FNAMES=DDNAME1, INCLUDE/OMIT COND=(….) OUTFIL FNAMES=DDNAME2, INCLUDE/OMIT COND=(….) ….. OUTFIL FNAMES=DDNAMEn, INCLUDE/OMIT COND=(….)
Name | Description |
---|---|
DDNAMEn | DDNAME is eight character’s name that representing the actual dataset in JCL. |
INCLUDE/OMIT | Specifies the INCLUDE/OMIT condition for specific OUTFIL |
Example -
Create three output files like below.
dept1 records to file1 dept2 records to file2 records other than dept1 to file3
Input File: MTHUSER.SORT.INPUT01 - FB file of 80 length
----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8 ********************************* Top of Data ********************************** 00001 student1 dept1 560 00003 student3 dept2 520 00004 student4 dept1 540 00005 student5 dept2 500 00002 student2 dept3 510 00006 student6 dept3 550 00008 student8 dept1 530 00007 student7 dept3 510 00009 student9 dept2 520 00010 student10 dept2 505 ******************************** Bottom of Data ********************************
Job:
000100 //Jobcard 000400 //* 000500 //********************************************************************** 000600 //* 001100 //STEP01 EXEC PGM=SORT 001300 //SORTIN DD DSN=MTHUSER.SORT.INPUT01,DISP=SHR 001800 //OUTPUT1 DD DSN=MTHUSER.SORT.OUTPT01, 001810 // SPACE=(CYL,(1,1),RLSE),DCB=*.SORTIN, 001820 // DISP=(NEW,CATLG,DELETE) 001900 //OUTPUT2 DD DSN=MTHUSER.SORT.OUTPT02, 002000 // SPACE=(CYL,(1,1),RLSE),DCB=*.SORTIN, 002100 // DISP=(NEW,CATLG,DELETE) 002200 //OUTPUT3 DD DSN=MTHUSER.SORT.OUTPT03, 002300 // SPACE=(CYL,(1,1),RLSE),DCB=*.SORTIN, 002310 // DISP=(NEW,CATLG,DELETE) 002400 //SYSOUT DD SYSOUT=* 002410 //SYSIN DD * 002411 SORT FIELDS=(1,5,ZD,A) 002420 OUTFIL FNAMES=OUTPUT1,INCLUDE=(30,5,CH,EQ,C'dept1') 002430 OUTFIL FNAMES=OUTPUT2,INCLUDE=(30,5,CH,EQ,C'dept2') 002440 OUTFIL FNAMES=OUTPUT3,OMIT=(30,5,CH,EQ,C'dept1') 003500 /* ****** **************************** Bottom of Data ****************************
Output File: MTHUSER.SORT.OUTPT01 - FB file of 80 length
----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8 ********************************* Top of Data ********************************** 00001 student1 dept1 560 00004 student4 dept1 540 00008 student8 dept1 530 ******************************** Bottom of Data ********************************
File: MTHUSER.SORT.OUTPT02 - FB file of 80 length
----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8 ********************************* Top of Data ********************************** 00003 student3 dept2 520 00005 student5 dept2 500 00009 student9 dept2 520 00010 student10 dept2 505 ******************************** Bottom of Data ********************************
File: MTHUSER.SORT.OUTPT03 - FB file of 80 length
----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8 ********************************* Top of Data ********************************** 00002 student2 dept3 510 00003 student3 dept2 520 00005 student5 dept2 500 00006 student6 dept3 550 00007 student7 dept3 510 00009 student9 dept2 520 00010 student10 dept2 505 ******************************** Bottom of Data ********************************
Explaining Solution:
- SORT FIELDS=(1,5,ZD,A) - sort all outputs in ascending order based on the ZD value from 1 to 5 positions.
- OUTFIL FNAMES=OUTPUT1,INCLUDE=(30,5,CH,EQ,C'dept1') - All the records marching with “dept1” from the 30th position of length 5 will be copied to output1 file.
- OUTFIL FNAMES=OUTPUT2,INCLUDE=(30,5,CH,EQ,C'dept2') - All the records marching with “dept2” from the 30th position of length 5 will be copied to output2 file.
- OUTFIL FNAMES=OUTPUT3,OMIT=(30,5,CH,EQ,C'dept1') - All the records marching with “dept1” from the 30th position of length 5 will be ignored and remaining all records will be copied to output3 file.