@diamondback Yes, arrays as parameters will be wonderful. I've written enough mini-compilers to know how hard the implementation of arrays will be though.
For arbitrary letters, I wonder if it might be useful to establish some kind of convention for how to do common things like bed area. Say, use ABCD and dereference parameters into variables at the beginning of the macro:
var XMin = param.A
var XMax = param.B
var YMin = param.C
var YMax = param.D
This has the disadvantage that if we're used to this usage those letters wouldn't be available for concepts that begin with them. But I don't know how to predict that. An alternative would be for X, Y & Z to be maximums and M, N and O. This choice has the disadvantage of using letters which can't be used in custom G-code or M-code commands, but starting with "M" is easily remembered as "Minimum". Or maybe, A, B and C would be better.
Or, maybe:
var XMax = floor(param.X / 1000)
var XMin = param.X - var.XMax * 1000
var YMax = floor(param.Y / 1000)
var YMin = param.Y - var.YMax * 1000
is a little more obscure but only uses X and Y. The call would look like:
M98 P"MacroFile" X{var.XMin + var.XMax * 1000} Y{var.YMin + var.YMax * 1000)
Or, maybe in preparation for retrofitting when array parameters become available, use variable names X0, X1, Y0 and Y1 (will array subscripts be zero based or 1 based?)
I'm open to anything that makes sense to the most people.