the only reliable way (without using a stored proc) is to use a subreport to that you can programatically go row by row and increment the date values based on the S or D.
Shared variables can pass the values from the subreport back to the main report (or you could display the subreport). Once you have everything working, and you are using shared variables, you probably don't want to see the subreport, so...place it in its own section, suppress all the fields in the subreport and in section expert for the main report section the subreport is in, check the suppress if blank option (hopefully I got it right, DBlank can correct me if I missed anything).