As I mentioned, #INSERT existed first, so itâs used more often than it needs to be. I still use #INSERT within the #PROMPT area, as youâre suggesting. In a sense, I consider it as âgeneration of template codeâ, rather than âgeneration of Clarion codeâ. 
Where I use #CALL is when I want to execute some template logic, and the called logic will not directly generate any code.
Donât forget that thereâs a third way to invoke a groupâby using it in a template expression:
#SET(%MyVar, %MyGroup())
Alternatively, you could do that same thing using #CALL:
#CALL(%MyGroup), %MyVar
If your group had parameters, the alternate syntaxes vary accordingly:
#SET(%MyVar, %MyGroup(%Parm1, %Parm2))
#CALL(%MyGroup, %Parm1, %Parm2), %MyVar
I donât believe you can use #INSERT to capture a return value.