What do you want the output to look like? Also is it really any saving, just merge the two tables. I.e.
proc transpose data=datasetb out=t_datasetb;
var col1-col300;
...
proc sql;
create table WANT as
select A.*,
B.VAL
from DATASET A
left join T_DATASETB B
on A.MONTH <= B.COL <= (A.MONTH + 9);
quit;
Then you can always transpose up. Note that I guessed as the variable names as you haven't provided any test data in a datastep format, I have only written the code from memory.