Looks like you can, as long as you use WIDE=NO. CHNGDFLD=YES. Of course what I really want is to display one particular unchanged field (the record key) and then just the changed fields. Haven't figured that one out yet!
One other...Is there a way to suppress a compare for a particular field only in the case where the particular field has a particular value? For example, I have a field that in the old file is set to low-values (x'00') and in the new file is spaces. So I want to either consider these to "match" (probably not possible), or at least to bypass comparison if the field is x'00' in the old file (or perhaps x'40' in the new file). Frank > Date: Mon, 6 Jul 2015 08:37:15 -0700 > From: [email protected] > Subject: Re: FILEM DSM compare question > To: [email protected] > > 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 ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [email protected] with the message: INFO IBM-MAIN
