I think a message subfile is your best option and I would advise you to use one unless you have a specific reason not to.
There are however several other options for displaying messages :-
1. You could define your own field at the bottom of the screen and fill this with your message, then handle the rollkeys in your program to move to the following or previous message.
2. You could add message constants and condition them with indicators (this is likely to get pretty messy, isn’t easy to maintain and will restrict the number of messages that you can display).
3. You could use CHKMSGID if you want simple validation.
4. You could use ERRMSG or ERRMSGID keywords on your screen.
I’m sure someone can give you some more options and/or examples of displaying messages on your screen.