That will include the *** file delimiters in the output, which is not indicated by the sample data.
Nitpicks, but I'll point them out anyway. The regular expression will match any line that contains three consecutive asterisks and not just that sequence. Not knowing anything about the text in the file, it would be safer to anchor that regular expression on both ends.
If the file has many *** delimiters, the open file descriptor count could hit the user limit.
awk '$0=="***"{f=++n".dat";print t > f;close(f);t="";b=0;next}{t=(!b?$0:t RS $0);if(!b) b=1}' file
And this will generate the files as you requested (1 file for the data before the 3 asterisk symbols in a line) and will not generate the fourth one as generated by some other solutions ;).