First, when you say format, do you mean that the dates are stored as CHAR? If they are stored as SAS dates, the format doesn't matter in the join logic.
Join criteria:
a.cust_id = b.cust_id and b.date between a.date and a.date -30
Be aware that you will be noted of that SAS can't optimize these kind of criteria, but if your data isn't too large, it shouldn't be a problem.
Data never sleeps