MVSFORUMS.com Forum Index MVSFORUMS.com
A Community of and for MVS Professionals
 
 FAQFAQ   SearchSearch   Quick Manuals   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Change values in both Header and Detail Records on Criteria

 
Post new topic   Reply to topic   printer-friendly view    MVSFORUMS.com Forum Index -> Utilities
View previous topic :: View next topic  
Author Message
Dinesh Kumar
Beginner


Joined: 12 Oct 2004
Posts: 13
Topics: 6

PostPosted: Tue Apr 21, 2015 4:50 am    Post subject: Change values in both Header and Detail Records on Criteria Reply with quote

The Input File has Header and Detailed Record structure as stated below.The LRECL of the File is of 200 bytes

1-6 Order Group
7-8 Record Type ('10'--> Header Record ,'20' ---> Intermediate Record , 30 ---> Detailed Record )
9 Indicator Value for Header Record only
23 Indicator value for Detailed record only

IF the Indicator value in Header Record (Position 9) is of Value "4"' AND IF any of the Detailed record in the Corresponding Order Group has a Indicator value of "5"
Then change the Indicator value in Header Record (Position 9) to value "3" and also change the indicator value (Position 23) in all the Detailed records to "3" for the Corresponding Order Group .
The rest of the records or the data shouldn't be altered. Appreciate for your timely help.

Code:
Input File

----+----1----+----2----+----3----+----4
111111104041615R        00040               
11111120UNIDENTIFY 00000                   
111111305181227       5   5151      05     
111111305181227LG     4     51      05     
111111305181227SF     5     51      05     
111111305181227TF     4     51      05     
111111305250327       3   5151      08     
111111305250327LG     4     51      08     
111111305250327SF     3     51      08   
222222104041615R        00002         
22222220NORTH 40 O 99212               
222222302008944SF   Í 301   30      36
222222303403603TF   á 4     34      08


Expected Output File

----+----1----+----2----+----3----+----4
 111111103041615R        00040         
 11111120UNIDENTIFY 00000               
 111111305181227       3   5151      05
 111111305181227LG     3     51      05
 111111305181227SF     3     51      05
 111111305181227TF     3     51      05
 111111305250327       3   5151      08
 111111305250327LG     3     51      08
 111111305250327SF     3     51      08
 222222104041615R        00002         
 22222220NORTH 40 O 99212               
 222222302008944SF   Í 301   30      36
 222222303403603TF   á 4     34      08

_________________
Thanks & Rgds
Dinesh
Back to top
View user's profile Send private message Yahoo Messenger
kolusu
Site Admin
Site Admin


Joined: 26 Nov 2002
Posts: 12376
Topics: 75
Location: San Jose

PostPosted: Tue Apr 21, 2015 10:32 am    Post subject: Reply with quote

Dinesh Kumar,

Use the following DFSORT JCL which will give you the desired results. I assumed your input LRECL is 80 bytes and has FB recfm. Since you wanted to updated both the header and detail records, we will use the joinkeys trick to find out if any of the detailed records have a "5" at position 23 and then we will update the entire group matching the key.

Code:

//STEP0100 EXEC PGM=SORT                         
//SYSOUT   DD SYSOUT=*                           
//INA      DD *                                   
111111104041615R        00040                     
11111120UNIDENTIFY 00000                         
111111305181227       5   5151      05           
111111305181227LG     4     51      05           
111111305181227SF     5     51      05           
111111305181227TF     4     51      05           
111111305250327       3   5151      08           
111111305250327LG     4     51      08           
111111305250327SF     3     51      08           
222222104041615R        00002                     
22222220NORTH 40 O 99212                         
222222302008944SF   Í 301   30      36           
222222303403603TF   á 4     34      08           
//INB      DD *                                   
111111104041615R        00040                     
11111120UNIDENTIFY 00000                         
111111305181227       5   5151      05           
111111305181227LG     4     51      05           
111111305181227SF     5     51      05           
111111305181227TF     4     51      05           
111111305250327       3   5151      08           
111111305250327LG     4     51      08           
111111305250327SF     3     51      08           
222222104041615R        00002                     
22222220NORTH 40 O 99212                         
222222302008944SF   Í 301   30      36           
222222303403603TF   á 4     34      08           
//SORTOUT  DD SYSOUT=*                           
//SYSIN    DD *                           
  OPTION COPY                                           
  JOINKEYS F1=INA,FIELDS=(1,6,A),SORTED,NOSEQCK         
  JOINKEYS F2=INB,FIELDS=(1,6,A)                         
  JOIN UNPAIRED                                         
  REFORMAT FIELDS=(F1:1,80,?)                           
  INREC IFOUTLEN=80,                                     
  IFTHEN=(WHEN=(81,1,CH,EQ,C'B',AND,7,2,CH,EQ,C'10'),   
  OVERLAY=(09:C'3')),                                   
  IFTHEN=(WHEN=(81,1,CH,EQ,C'B',AND,7,2,CH,EQ,C'30'),   
  OVERLAY=(23:C'3'))                           
//*                                                     
//JNF2CNTL DD *                                         
  INCLUDE COND=(7,2,CH,EQ,C'30',AND,23,1,CH,EQ,C'5')     
  INREC BUILD=(1,6)                                     
  SUM FIELDS=NONE                                       
//*


The output from this is

Code:

111111103041615R        00040         
11111120UNIDENTIFY 00000               
111111305181227       3   5151      05
111111305181227LG     3     51      05
111111305181227SF     3     51      05
111111305181227TF     3     51      05
111111305250327       3   5151      08
111111305250327LG     3     51      08
111111305250327SF     3     51      08
222222104041615R        00002         
22222220NORTH 40 O 99212               
222222302008944SF     301   30      36
222222303403603TF     4     34      08

_________________
Kolusu
www.linkedin.com/in/kolusu
Back to top
View user's profile Send private message Send e-mail Visit poster's website
Display posts from previous:   
Post new topic   Reply to topic   printer-friendly view    MVSFORUMS.com Forum Index -> Utilities All times are GMT - 5 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


MVSFORUMS
Powered by phpBB © 2001, 2005 phpBB Group