INCLUDE: Substring search


  • Substring search is used to filter the records which contain the substring anywhere from the starting position and length specified.

Syntax -


INCLUDE COND=(Field1 starting position, Field1 Length, SS, 
		 Relational Operator, Substring constant)
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,.
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
Substring constant String constant

Example -


Scenario - From the below data, filter the records having Srinivas in the entire file.

Input File - 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).

JCL -

----+----1----+----2----+----3----+----4----+----5----+----6----+----7--
***************************** Top of Data ******************************
//Job-card
//******************************************************************
//*                                                   
//* SORT FOR STRING SEARCH IN THE FILE                 
//*                                                        
//******************************************************************
//STEP01   EXEC PGM=SORT                                    
//SORTIN   DD DSN=MTH.SORT.INPUT,DISP=SHR            
//SORTOUT  DD SYSOUT=*                                      
//SYSOUT   DD SYSOUT=*                                    
//SYSIN    DD *                                               
     INCLUDE COND=(1,80,SS,EQ,C'Srinivas')            
     SORT FIELDS=COPY                                        
/*                                                          
**************************** Bottom of Data ************************

Output -

----+----1----+----2----+---3----+---4----+----5---+---6---+---7---+----8
********************************* TOP OF DATA *******************************
00002     Srinivas            Employee                             
******************************** BOTTOM OF DATA *****************************

Explaining Example -

  1. As a first step, need to get the position in the file.
  2. 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.
  3. As a Second step, need to get the type of the String.
  4. From the requirement,the string is alphabetic. So the type is character (CH).
  5. Lastly, the job requirement is to filter the data with Srinivas. So the constant is "Srinivas".
  6. The INCLUDE condition for the above requirement with all the data gathered is
    INCLUDE COND=(1,80,SS,EQ,C'Srinivas') 
  7. The above condition specifies that include the records where the string found is Srinivas.
  8. The output would have the records where the record contains Srinivas anywhere in the record from 1 to 80.