Unfortunately you are dealing with PL/SQL, if this would have been any other coding language then you could have easily used the arrays to fix your problem, but this won't be the case in SP world :)
Probably you can look for CURSORS and instead of using a set of variables, you can insert the values in a table and use the cursor dataset to manipulate them...
A temporary table is probably the best approach, but instead of a cursor it's probably a simple Update:
create volatile table vt (i int not null primary key, val int) on commit preserve rows;
Insert into vt select day_of_calendar, 50 from sys_calendar.calendar where day_of_calendar between 1 and 12;
update vt set val = 0
where i not between min_mnth and max_mnth;
Btw, in TD14 there are arrays, but i never tried if the are supported in a SP.