* This is a general routine for comparing 2 files, for example pre- and post- cleaning; * or data entry by different operators; or partial data delivery compared to final delivery and so on. * For each variable it lists all the differences. * It produces similar output to the stata routine cf3. * cheers Simon /* Compare two files and lists all differences */ /* Simon Freidin 09/05/2006 */ /* Cases are matched by ID */ /* Output is variable by variable. */ /* Typical output: */ /* ID var1_old var1_new */ /* */ /* 32747 3 2 */ /* 32676 4 5 */ /* 36472 2 3 */ /* 47699 5 4 */ set printback=no mprint=no length=none. file handle oldfile /name='substitute path and filename'. file handle newfile /name='substitute path and filename'. define checkvar (!pos=!tokens(1)). match files file=oldfile /rename= (!1=!concat(!1,'_old')) /in=inold /file=newfile /rename= (!1=!concat(!1,'_new')) /in=innew /keep=!concat(!1,'_old') !concat(!1,'_new') ID /by ID. sel if inold and innew. /* select cases in both files */ display labels var=!concat(!1,'_new'). sel if !concat(!1,'_old') ne !concat(!1,'_new'). list /ID !concat(!1,'_old') !concat(!1,'_new'). !enddefine. /* drop ID and variables not in new file here */ /* drop any other variables you don't want to compare */ get file=oldfile /drop= ID . n of cases 1. oms /destination viewer=no. flip. omsend. write outfile="c:\temp\checkvar.sps"/"checkvar " case_lbl ".". exe. include "c:\temp\checkvar.sps".