a,b,c parameters can be passed through into test.tpl. your problem is  {.set|function|
{:{.load|test.tpl.}
:}.}
you have to macroquote all the text inside test.tpl
{: at the begin of file ,  
:} at the end 
and use the macro as it 
 {.set|function|{.load|test.tpl.}.}or 
 {.set|function|{.dequote|{.load|test.tpl.}.}.} with the example
by example:
{:{.add to log| loading test.tpl.}
$1 $3 $2
{.add to log|$1 $3 $2.}
:}then "load" is executed before "set" and parameters are replaced correctly 
If you use a path for file with chars / or \ , the content of file is always macroquoted  by hfs
another possibility is to use the macro 
{.load|test.tpl|var=function.} and use 
{.^function|a|b|c.}  with the last one and macroquote inside test.tpl, you have to use {.dequote|{.^function|a|b|c.}.} 
