A macro is defined in its own block like this. The arguments to the macro are specified with the name of the macro. They are then referred to by that same name. A catch block can be specified to catch special extensions.
A macro is then called by preceding the macro name with an ampersand. Empty arguments can be passed simply with nothing between commas.
Note to myself.
TODO: Due to awkward AEL reimplementation macro names must start with "macro-" string.
Either change this page's example or submit a patch.