Some macros pass a parameter list to the function. Some examples are OPEN, CLOSE and CALL. A few macros like LINK and ATTACH have two parameter lists; a "system" parameter list and a "regular" parameter list.
OPEN (ADCB,INPUT) "Inclusive"
OPEN MF=(E,OPENPARM) "Execute"
OPENPARM OPEN (ADCB,INPUT),MF=L "List"
LINK EP=PROGRAM,PARAM=(ADDR1,ADDR2) "Inclusive"
LINK SF=(E,LINKPARM),PARAM=(ADDR1,ADDR2),MF=(E,PGMPARM)
LINKPARM LINK SF=L,EP=PROGRAM
PGMPARM CALL ,(0,0),MF=L
Macros that pass a parameter list to a function usually have three types of expansions: an "inclusive" expansion that generates the parameter list inline, an "execute" expansion, where the parameter list is not inline, and a "list"expansion, to create a parameter list.
Some newer macros have alternate expansions, like the "generate" expansion in michel123's query.
The reason for this is reenterable programs cannot alter the program text, so these alternate macro forms allow a programmer to construct remote parameter lists in a work area