Some conditional logic should help here, with the use of the substring function. I don't have SAS o my home computer so I havnt been able to check for errors. /* define lists of numbers and letters, although I suspect SAS may have a shortcut for this. */ %let nums = ("1", "2", "3", "4", "5", "6", "7", "8", "9", "0"); %let letters = ("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"); data want; set have; if upcase(substr(postal_code,1,1)). = "T" AND substr(postal_code,2,1) in &nums. AND upcase(substr(postal_code,3,1)) in &letters. AND substr(postal_code,4,1) = " " AND substr(postal_code,5,1) in &nums. AND upcase(substr(postal_code,6,1)) in &letters. AND substr(postal_code,7,1) in &nums. then validation = "correct"; /*if the mength of your field is more than 7 characters you may want to check if the remaining ones are blank, in your example the field post_code has 7 characters so no check needed */ else if upcase(substr(postal_code,1,1)) in &letters AND substr(postal_code,2,1) in &nums. AND upcase(substr(postal_code,3,1)) in &letters. AND substr(postal_code,4,1) = " " AND substr(postal_code,5,1) in &nums. AND upcase(substr(postal_code,6,1)) in &letters. AND substr(postal_code,7,1) in &nums. then validation = "wrong "; /*extra spaces needed to avoid truncation */ else validation="strange";
... View more