Since you are running the code anyways after your code change, something like this should work: * first a little example data set with two variables; data stuff; infile cards; input; var1 = scan(_INFILE_,1); var2 = scan(_INFILE_,2); cards; a b a b a c a d And the subsequent step with the checksum code; data stuff(drop=check all); format check $hex32.; retain check; set stuff end=eof; * if _n_ = 3 then var1 = 'x'; all = cats(var1,var2,check); check = md5(all); if eof then put check=; run; First you create a variable called check with a format of hex 32. Then you retain it so it's value is available with each iteration of the data step. Then set your data set with the end= option so we know when we've reached the end. The commented out if statement represents your current data step code (and uncommenting it should change the checksum). At the bottom is the actual checksum code. First concatenate all the variables you are interested in checking into a variable called all. Notice we are including the check variable. Then use the md5() function to hash it. Finally if it's the end of the data set then write the checksum to the log. Run that once and note the checksum. Then uncomment the if statement and you will see the checksum change. The checksum is for all of the data set since each observation's checksum is built partly from the previous checksum. Hope that helps! -stephen
... View more