Is this like Jeopardy? Are we supposed to supply the question that leads to your given answer?
Looks like you want to count the number of months and divide the premium by that number.
data have;
input policy $ (start_date end_date) (:anydtdte.) total_premium ;
format start_date end_date yymmdd10.;
cards;
p1 jan-19 jan-20 120
p2 jan-19 oct-19 100
p3 jan-19 may-19 50
;
data want;
set have;
months=intck('month',start_date,end_date);
premium=total_premium/months;
do month=1 to months;
date=intnx('month',start_date,month-1,'b');
output;
end;
format date yymmdd10.;
run;
total_
Obs policy start_date end_date premium months premium month date
1 p1 2019-01-01 2020-01-01 120 12 10.0000 1 2019-01-01
2 p1 2019-01-01 2020-01-01 120 12 10.0000 2 2019-02-01
3 p1 2019-01-01 2020-01-01 120 12 10.0000 3 2019-03-01
4 p1 2019-01-01 2020-01-01 120 12 10.0000 4 2019-04-01
5 p1 2019-01-01 2020-01-01 120 12 10.0000 5 2019-05-01
6 p1 2019-01-01 2020-01-01 120 12 10.0000 6 2019-06-01
7 p1 2019-01-01 2020-01-01 120 12 10.0000 7 2019-07-01
8 p1 2019-01-01 2020-01-01 120 12 10.0000 8 2019-08-01
9 p1 2019-01-01 2020-01-01 120 12 10.0000 9 2019-09-01
10 p1 2019-01-01 2020-01-01 120 12 10.0000 10 2019-10-01
11 p1 2019-01-01 2020-01-01 120 12 10.0000 11 2019-11-01
12 p1 2019-01-01 2020-01-01 120 12 10.0000 12 2019-12-01
13 p2 2019-01-01 2019-10-01 100 9 11.1111 1 2019-01-01
14 p2 2019-01-01 2019-10-01 100 9 11.1111 2 2019-02-01
15 p2 2019-01-01 2019-10-01 100 9 11.1111 3 2019-03-01
16 p2 2019-01-01 2019-10-01 100 9 11.1111 4 2019-04-01
17 p2 2019-01-01 2019-10-01 100 9 11.1111 5 2019-05-01
18 p2 2019-01-01 2019-10-01 100 9 11.1111 6 2019-06-01
19 p2 2019-01-01 2019-10-01 100 9 11.1111 7 2019-07-01
20 p2 2019-01-01 2019-10-01 100 9 11.1111 8 2019-08-01
21 p2 2019-01-01 2019-10-01 100 9 11.1111 9 2019-09-01
22 p3 2019-01-01 2019-05-01 50 4 12.5000 1 2019-01-01
23 p3 2019-01-01 2019-05-01 50 4 12.5000 2 2019-02-01
24 p3 2019-01-01 2019-05-01 50 4 12.5000 3 2019-03-01
25 p3 2019-01-01 2019-05-01 50 4 12.5000 4 2019-04-01