Thanks, Kolusu.  This works.  Not at all intuitive to me, but it works.

Still one more.  The old record is 386 bytes, while the new one is 403.  I want 
it to compare the fields by essentially extending (implictly) the old record to 
be padded with spaces.  This way a record that is different only in that the 
new record has 17 additional spaces at the end would be 'matched'.  On the 
other hand if anything in the 'new' 17 characters is not spaces it would be 
unmatched.

Thanks!
Frank

> Date: Tue, 30 Jun 2015 17:15:00 -0700
> From: [email protected]
> Subject: Re: FILEM DSM compare question
> To: [email protected]
> 
> Frank,
> 
> You don't have to list the names of the fields to compare.  Make the 
> fields you want to compare COMMON in both Copy books and the others can be 
> any names.  In your case you have compare-1 and compare-2 fields in common 
> and I believe those are the fields you want to compare. Since you want to 
> exclude ignore-1 field from comparison, just rename the ignore-1 to some 
> other name in the new copybook. I chose Ignore-A
> 
> 01  CCMASTR-OLD. 
>     05  COMPARE-1 PIC X(159). 
>     05  IGNORE-1  PIC X(5). 
>     05  COMPARE-2 PIC X(222). 
> 
> 01  CCMASTR-NEW. 
>     05  COMPARE-1 PIC X(159). 
>     05  IGNORE-A  PIC X(5).        << diff name
>     05  COMPARE-2 PIC X(222). 
>     05  IGNORE-NEW PIC X(17). 
> 
> 
> Now you can use the following Control cards
> 
> $$FILEM DSM TYPE=FORMATTED, 
> $$FILEM     SYNCH=ONETOONE, 
> $$FILEM     MAP=MAPPED, 
> $$FILEM     TCNEW=DVFJS.OLD.COPY(CCMASTR),
> $$FILEM     TCNEW=DVFJS.NEW.COPY(CCMASTR),
> $$FILEM     LIST=LONG, 
> $$FILEM     EXCLUDE=(,,,MATCHED), 
> $$FILEM     WIDE=YES, 
> $$FILEM     HILIGHT=YES 
> 
> And you get the desired results.
> 
> Hope this helps...
> 
> Kolusu
> IBM Mainframe Discussion List <[email protected]> wrote on 
> 06/30/2015 04:32:29 PM:
> 
> > From: Frank Swarbrick <[email protected]>
> > To: [email protected]
> > Date: 06/30/2015 04:32 PM
> > Subject: Re: FILEM DSM compare question
> > Sent by: IBM Mainframe Discussion List <[email protected]>
> > 
> > So this is what I have:
> > 
> > 01  CCMASTR-OLD. 
> >     05  COMPARE-1 PIC X(159).
> >     05  IGNORE-1  PIC X(5). 
> >     05  COMPARE-2 PIC X(222).
> > 
> > 01  CCMASTR-NEW. 
> >     05  COMPARE-1 PIC X(159).
> >     05  IGNORE-1  PIC X(5). 
> >     05  COMPARE-2 PIC X(222).
> >     05  IGNORE-NEW PIC X(17).
> > 
> > $$FILEM TCNEW=DVFJS.OLD.COPY(CCMASTR),
> > $$FILEM TCNEW=DVFJS.NEW.COPY(CCMASTR),
> > $$FILEM FIELDOLD=(COMPARE-1,COMPARE-2), 
> > $$FILEM FIELDNEW=(COMPARE-1,COMPARE-2), 
> > 
> > This works fine, but it would have been simpler if I could have used
> > the actual copybook and told FM which fields to ignore, rather than 
> > which fields to utilize.  Did I miss some option for this? 
> > Something like this (assuming the copybook above):
> > 
> > $$FILEM IGNOREOLD=(IGNORE-1), 
> > $$FILEM IGNORENEW=(IGNORE-1,IGNORE-NEW), 
> > 
> > Frank
> > 
> > > Date: Tue, 30 Jun 2015 13:05:28 -0700
> > > From: [email protected]
> > > Subject: Re: FILEM DSM compare question
> > > To: [email protected]
> > > 
> > > Frank,
> > > 
> > > Here is sample File Manager JCL which will compare the 2 vsam files. 
> The 
> > > old vsam in my case had an lrecl of 612 and the new vsam had an lrecl 
> of 
> > > 615. 
> > > 
> > > You need to use templates to compare datasets with 2 different lrecl. 
> so 
> > > create a pds members(see below for samples) with the mapping of the 
> fields 
> > > you want to compare. I had a cobol copybook which I used.
> > > 
> > > //STEP0100 EXEC PGM=FILEMGR 
> > > //SYSPRINT DD SYSOUT=* 
> > > //DDOLD    DD DISP=SHR,DSN=Your Old VSAM Cluster 
> > > //DDNEW    DD DISP=SHR,DSN=Your New VSAM Cluster
> > > //SYSIN    DD * 
> > > $$FILEM DSM TYPE=FORMATTED, 
> > > $$FILEM     SYNCH=ONETOONE, 
> > > $$FILEM     MAP=MAPPED, 
> > > $$FILEM     TCOLD=FRANK.PDS.MAP(SWA1), 
> > > $$FILEM     TCNEW=FRANK.PDS.MAP(SWA2), 
> > > $$FILEM     FIELDOLD=OLD-REC, 
> > > $$FILEM     FIELDNEW=NEW-REC, 
> > > $$FILEM     LIST=LONG, 
> > > $$FILEM     EXCLUDE=MATCHED, 
> > > $$FILEM     WIDE=YES, 
> > > $$FILEM     HILIGHT=YES 
> > > //*
> > > 
> > > The contents of FRANK.PDS.MAP(SWA1)
> > > 
> > > ----+----1----+----2----+----3----+----4----+-
> > >         01 DATA-REC. 
> > >            05 OLD-REC           PIC X(612). 
> > > 
> > > 
> > > The contents of FRANK.PDS.MAP(SWA2)
> > > 
> > > ----+----1----+----2----+----3----+----4----+----5
> > >         01 DATA-REC. 
> > >            05 NEW-REC           PIC X(612). 
> > >            05 NEW-FLD           PIC X(003). 
> > > 
> > > and Just for the record, DFSORT job to do the same comparison and much 
> 
> > > more efficient than File manager job.
> > > 
> > > //STEP0100 EXEC PGM=SORT 
> > > //SYSOUT   DD SYSOUT=*
> > > //INA      DD DISP=SHR,DSN=Your Old VSAM Cluster 
> > > //INB      DD DISP=SHR,DSN=Your New VSAM Cluster
> > > //SORTOUT  DD SYSOUT=* 
> > > //SYSIN    DD * 
> > >   OPTION COPY 
> > >   JOINKEYS F1=INA,FIELDS=(1,612,A),TYPE=F 
> > >   JOINKEYS F2=INB,FIELDS=(1,612,A),TYPE=F 
> > >   REFORMAT FIELDS=(F1:1,612,?,F2:1,612) 
> > >   JOIN UNPAIRED 
> > >   OMIT COND=(613,1,CH,EQ,C'B') 
> > >   INREC IFOUTLEN=620, 
> > >   IFTHEN=(WHEN=(613,1,CH,EQ,C'1'),BUILD=(C'OLD-REC ',001,612)),
> > >   IFTHEN=(WHEN=(613,1,CH,EQ,C'2'),BUILD=(C'NEW-REC ',614,612)) 
> > > //*
> > > 
> > > 
> > > Hope this helps...
> > > Kolusu
> > > 
> > > 
> > > 
> > > From:   Frank Swarbrick <[email protected]>
> > > To:     [email protected]
> > > Date:   06/30/2015 10:08 AM
> > > Subject:        Re: FILEM DSM compare question
> > > Sent by:        IBM Mainframe Discussion List 
> <[email protected]>
> > > 
> > > 
> > > 
> > > I'm not copying anything.  I am trying to compare two files, where one 
> is 
> > > the old version of the file and one is the new version, with
> > > 
> > > Take the following two examples
> > > OLD: (0012)1234AAAABBBB 
> > > NEW: (0016)1234AAAABBBB____
> > > OLD: (0012)1235AAAABBBB 
> > > NEW: (0016)1235AAAABBBBABCD
> > > 
> > > 
> > > The numbers in parenthesis are the lengths of the records and are not 
> part 
> > > of the record.  The underscores represents blank spaces.  The first 
> four 
> > > bytes of each record is the key.
> > > 
> > > I want to do a compare so that for record 1234 they would be 
> considered to 
> > > be equal, but record 1235 would be considered changed.
> > > 
> > > > Date: Tue, 30 Jun 2015 01:03:21 -0500
> > > > From: [email protected]
> > > > Subject: Re: FILEM DSM compare question
> > > > To: [email protected]
> > > > 
> > > > Frank Swarbrick wrote:
> > > > 
> > > > >I know we have some DFSORT experts here.  I'm hoping we also have 
> some 
> > > File Manager experts.
> > > > 
> > > > I know DFSORT and ICETOOL, but like you I also ask questions on 
> IBM-MAIN 
> > > too ;-),  but I don't know File Manager...
> > > > 
> > > > >I have a KSDS where I am adding a new field, and thus increasing 
> the 
> > > length of each record.  I want to do a compare but only show the field 
> as 
> > > being "not equal" if the newly added characters are not spaces.  But I 
> do 
> > > want to show them as being not equal if the newly added characters are 
> 
> > > other than spaces.
> > > > 
> > > > Ok, lets see - you added some characters (not spaces) to new column 
> x-y 
> > > using some utility. 
> > > > 
> > > > Do you want to search all 'short' and 'long' records? Or do you copy 
> 
> > > only 'long' records and then search them only?
> > > > 
> > > > Something like this INCLUDE=(<first column>,<how many 
> > > characters>,CH,NE,C' ') ?
> > > > 
> > > > Or something like this - one possible way to split up your records 
> in 
> > > two separate outputs?
> > > > 
> > > > (for this example, your new field is starting at column 100 and is 
> 10 
> > > chars long, no variations in position and length)
> > > > 
> > > > OUTFILE FNAMES=SPACES,INCLUDE=(100,10,CH,EQ,C' ') 
> > > > OUTFILE FNAMES=NOSPACE,INCLUDE=(100,10,1,CH,NE,C' ') 
> > > > 
> > > > Or do you want to show if a space is appearing at all? In other 
> words, 
> > > do you want to pick up a record with at least one space character in 
> your 
> > > new field? If so, the SS statement is a great help for that.
> > > > 
> > > > Or am I missing something?
> > > > 
> > > > Groete / Greetings
> > > > Elardus Engelbrecht
> > > > 
> > > > 
> ----------------------------------------------------------------------
> > > > For IBM-MAIN subscribe / signoff / archive access instructions,
> > > > send email to [email protected] with the message: INFO 
> IBM-MAIN
> > > 
> > > ----------------------------------------------------------------------
> > > For IBM-MAIN subscribe / signoff / archive access instructions,
> > > send email to [email protected] with the message: INFO IBM-MAIN
> > > 
> > > 
> > > 
> > > ----------------------------------------------------------------------
> > > For IBM-MAIN subscribe / signoff / archive access instructions,
> > > send email to [email protected] with the message: INFO IBM-MAIN
> > 
> > ----------------------------------------------------------------------
> > For IBM-MAIN subscribe / signoff / archive access instructions,
> > send email to [email protected] with the message: INFO IBM-MAIN
> > 
> 
> ----------------------------------------------------------------------
> For IBM-MAIN subscribe / signoff / archive access instructions,
> send email to [email protected] with the message: INFO IBM-MAIN
                                          
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN

Reply via email to