What are your macros like? Do they contain datastep code, which can be run inside the datastep? If not, you will have to call them in a different way. For instance using call execute, e.g. if (&Customer_Segment='R' or &Customer_Segment='U') then
call execute('%email1 ;');
... View more
Make a table with that information instead, even if you're creating it from a CARDS statement. Then build your recipient list from that table and feed that to your email program.
I don't think file statements are conditional though, so you may need to make those macro %IF/%THEN or use a different method to create the file reference. There may be a function for that...
... View more
You can use a macro variable and sql to automate this: proc sql noprint; select openingbal into :init_value from opening; quit; * make sure that opening has only one observation, or use a where condition to only get the observation you want; data daily1; set daily; retain accruingbal &init_value; accruingbal+amount; run; Edit: adapted my original posting to your variable/dataset names.
... View more
Sort the dataset in reverse order, then you can use the lag() function to access data that was "later" in your original sequence. After that, re-sort to your original order.
... View more