Summary -
In this topic, we described about the OMIT: Writing constants with detailed example.
There are different formats to specify strings, hexadecimal strings, and decimal numbers in DFSORT. The formats for writing character strings, hexadecimal strings, and decimalnumbers are shown below.
Type | Format |
---|---|
Character strings | The format for writing a character string is: C’x...x’ where x is an EBCDIC character. |
Hexadecimal strings | The format for writing a hexadecimal string is: X’yy...yy’ where yyis a pair of hexadecimal digits. |
Decimal numbers | The format for writing a decimal number is: n...n or ±n...n where n is a decimal digit. |
Syntax -
OMIT COND=(Field1 starting position, Field1 Length, Field1 format, Relational Operator, constant)
name | Description |
---|---|
Field1 starting position | Starting position of field1 to be compared |
Field1 Length | Length of the field1 to be compared |
Field1 format_type | Format of the field1 like CH, PD, BI etc,. |
Relation operator | Relational operators like GT, EQ, NE, LT etc,.EQ Equal to NE Not equal to GT Greater than GE Greater than or equal to LT Less than LE Less than or equal to |
Constant | Specifies the constant to be compared |
Example -
From the below data, filter the records not having name Srinivas. The NAME starts from 11th and ends at 28th column in the file.
Input: MTH.SORT.INPUT
----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8 ********************************* Top of Data ********************************** 00002 Srinivas Employee test test test 00001 pawan kumar student ******************************** Bottom of Data ********************************
Input Record Layout -
01 INPUT-REC. 05 ID PIC X(05). 05 FILLER PIC X(05). 05 NAME PIC X(15). 05 FILLER PIC X(05). 05 OCCUPATION PIC X(10). 05 FILLER PIC X(40).
Job -
000100 //Jobcard 000400 //********************************************************************** 000500 //* 000510 //* SORT TO WRITE CHARACTERS/NUMERIC IN OMIT CONDITION 000520 //* 000600 //********************************************************************** 001100 //STEP01 EXEC PGM=SORT 001300 //SORTIN DD DSN=MTH.SORT.INPUT,DISP=SHR 001800 //SORTOUT DD SYSOUT=* 001900 //SYSOUT DD SYSOUT=* 002400 //SYSIN DD * 002410 SORT FIELDS=COPY 002420 OMIT COND=(11,15,CH,EQ,C'Srinivas') 003400 /* ****** **************************** Bottom of Data ****************************
Output -
----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8 ********************************* TOP OF DATA ********************************** test test test 00001 pawan kumar student ******************************** BOTTOM OF DATA ********************************
Explaining Solution -
- As a first step, need to get the position of the NAME in the file.
- The NAMEs starting from 11th and ends at 25th column as per the input record layout provided. So the length of NAME field is 15.
- As a Second step, need to get the type of the NAME.
- From the Input record layout declaration, NAME field is alpha-numeric. So the type is character (CH).
- Lastly, the job requirement is to ignore the data with the NAME as Srinivas. So the constant is "Srinivas".
- The OMIT condition for the above requirement with all the data gathered is -
OMIT COND=(11,15,CH,EQ,C'Srinivas')
- The above condition specifies that ignore the records where the NAME is Srinivas and remaining records copied to output file.
- The output would have the records where the NAMEs are not Srinivas from 11th position.
Note! The matching text is always case sensitive and should use the same case while matching.