Summary -
In this topic, we described about the Omit Substring Search with detailed example.
Substring search is used to filter the records which contain the substring anywhere from the starting position and length specified.
Syntax -
OMIT COND=(Field1 starting position, Field1 Length, SS,
Relational Operator, Substring constant)
Let’s discuss in detail.
name | Description |
---|---|
Field1 starting position | Starting position of field1 to be compared |
Field1 Length | Length of the field1 to be compared |
SS | Specifying to SORT the filtering should be done based on the Substring search. |
Relation operator | Relational operators like GT, EQ, NE, LT etc,.
|
Substring constant | Substring constant |
Example:
From the below data, filter the records not having Srinivas in the entire 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 //*******************************************************************
000600 //*
000700 //* SORT FOR STRING SEARCH IN THE FILE
000800 //*
000900 //*******************************************************************
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 *
002401 OMIT COND=(1,80,SS,EQ,C'Srinivas')
002410 SORT FIELDS=COPY
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 NAME in the file.
- As per requirement, the string can be anywhere in the file. So the starting position is file starting position and the length is the file length which is 80.
- As a second step, need to get the type of the String.
- From the requirement,the string is alphabetic. So the type is character (CH).
- Lastly, the job requirement is to ignore the data with Srinivas. So the constant is "Srinivas".
- The OMIT condition for the above requirement with all the data gathered is
OMIT COND=(1,80,SS,EQ,C'Srinivas')
- The above condition specifies that ignore the records where the string found as Srinivas. The remaining records will be copied to output file.
- The output would have the records where the record not contains Srinivas anywhere in the record.