Frank, I don't think you can suppress the matching fields from the output. May be another step to left justify the spaced fields.
Thanks, Kolusu From: Frank Swarbrick <[email protected]> To: [email protected] Date: 07/02/2015 04:11 PM Subject: Re: FILEM DSM compare question Sent by: IBM Mainframe Discussion List <[email protected]> This works as well. So one more question if you don't mind. Is there any way to suppress the displaying of fields if they match? Meaning only the field names/values of the unmatched fields would be displayed. Thanks, Frank > Date: Wed, 1 Jul 2015 15:19:23 -0700 > From: [email protected] > Subject: Re: FILEM DSM compare question > To: [email protected] > > Frank, > > Code the new-field in the old copybook too and use the keyword > IGNORETB=YES which would ignore the trailing blanks in character fields. > So if your new-field has all blanks then file-manager would ignore that > records but if it has anything other than space it would list as mismatch. > > 01 CCMASTR-OLD. > 05 COMPARE-1 PIC X(159). > 05 IGNORE-1 PIC X(5). > 05 COMPARE-2 PIC X(222). > 05 DUMMY-FLD PIC X(17). << pad field > > 01 CCMASTR-NEW. > 05 COMPARE-1 PIC X(159). > 05 IGNORE-A PIC X(5). > 05 COMPARE-2 PIC X(222). > 05 DUMMY-FLD PIC X(17). > > > > Here are the control cards for comparing. > > $$FILEM DSM TYPE=FORMATTED, > $$FILEM SYNCH=ONETOONE, > $$FILEM MAP=MAPPED, > $$FILEM IGNORETB=YES, > $$FILEM TCNEW=DVFJS.OLD.COPY(CCMASTR), > $$FILEM TCNEW=DVFJS.NEW.COPY(CCMASTR), > $$FILEM LIST=LONG, > $$FILEM EXCLUDE=(,,,MATCHED), > $$FILEM WIDE=YES, > $$FILEM HILIGHT=YES > > Further if you have any questions please let me know > > Thanks, > Kolusu > IBM Mainframe Discussion List <[email protected]> wrote on > 07/01/2015 02:09:41 PM: > > > From: Frank Swarbrick <[email protected]> > > To: [email protected] > > Date: 07/01/2015 02:10 PM > > Subject: Re: FILEM DSM compare question > > Sent by: IBM Mainframe Discussion List <[email protected]> > > > > 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 > > > > ---------------------------------------------------------------------- > 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
