Page 1 of 1

Compare FB with VB to get VB file

Posted: Fri Oct 14, 2011 11:04 pm
by hparthas
Hi All,

I have a requirement to extract the file, I used Key file as a FB file of 20 LRECL and the data file as 4096 LRECL VB file. The actual data is only 4092 and 4 byte is RDW.

My keys are @ first 10 position in both the Key and the data file. I used SORT to match between these two files and extract the data. Below is the sort Card.

Code: Select all

JOINKEYS FILES=F1,FIELDS=(1,10,A)                                
JOINKEYS FILES=F2,FIELDS=(5,10,A)                                
REFORMAT FIELDS=(F1:1,20,F2:1,4096),FILL=X'FF'                    
JOIN UNPAIRED                                                  
SORT FIELDS=COPY                                                  
OUTFIL FILES=01,
  INCLUDE=(25,2,BI,NE,X'FF',AND,1,2,CH,NE,X'FF'), 
    OUTREC=(25,4096)
OUTFIL FILES=02,
  INCLUDE=(1,2,BI,NE,X'FF')
    OUTREC=(25,4096)
In this in my input file, 1000 is the maximum length of the file, but the total length was defines assuming that we might get additional data for that file.

When I tried to execute this match, I got my matched / extracted record to O/P file, but the o/p file is filled with X'FF' till the rest of the record after 1000 position. Could you please advise me what I missed here.

Many thanks,
HK

Posted: Fri Oct 14, 2011 11:35 pm
by Frank Yaeger
Your job is a mess!

Assuming you want output file1 to contain the records from F2 that have a match in F1, and you want output file2 to contain the records from F2 that do not have a match in F1, you can use the following DFSORT job:

Code: Select all

//S1 EXEC PGM=SORT
//SYSOUT DD SYSOUT=*
//IN1 DD DSN=... input file1 (FB/20)
//IN2 DD DSN=... input file2 (VB)
//F2MATCH DD DSN=...  output file1 (VB)
//F2ONLY DD DSN=...  output file2 (VB)
//SYSIN DD *
  JOINKEYS F1=IN1,FIELDS=(1,10,A)
  JOINKEYS F2=IN2,FIELDS=(5,10,A)
  REFORMAT FIELDS=(F2:1,4,?,F2:5)
  JOIN UNPAIRED,F2
  SORT FIELDS=COPY
  OUTFIL FNAMES=F2MATCH,
    INCLUDE=(5,1,CH,EQ,C'B'),BUILD=(1,4,6)
  OUTFIL FNAMES=F2ONLY,
    INCLUDE=(5,1,CH,EQ,C'2'),BUILD=(1,4,6)
/*
As an example, if input file1 contains:

Code: Select all

AAAAAAAAAA     F1R1    
CCCCCCCCCC     F1R2    
DDDDDDDDDD     F1R3    
GGGGGGGGGG     F1R4    
and input file2 contains:

Code: Select all

rrrrBBBBBBBBBB     F2R1 XXXXXXX
rrrrCCCCCCCCCC     F2R2 XXXXXXXXXXXXXXXX
rrrrGGGGGGGGGG     F2R3 X
rrrrHHHHHHHHHH     F2R4 XXXXXX
Then output file1 will contain:

Code: Select all

rrrrCCCCCCCCCC     F2R2 XXXXXXXXXXXXXXXX
rrrrGGGGGGGGGG     F2R3 X
and output file2 will contain:

Code: Select all

rrrrBBBBBBBBBB     F2R1 XXXXXXX
rrrrHHHHHHHHHH     F2R4 XXXXXX
If that's NOT what you're trying to do, then you need to explain more clearly what you are trying to do with an example of input and expected output.

Topic deleted by Admin

Posted: Mon Feb 01, 2016 10:01 pm
by academyindia4
<< Content deleted By Admin >>