If "FileA.gsm" is retrieving a Macro from "FileB.GSM", then the number of parameters have to match in both files.
Example: "FileB.gsm" which is the Macro file has Parameters: A, B & Testvar. "FileA.gsm" which calls the macro has to call ALL 3 of those parameters (none can be left out), so "FileA.gsm" would call the Macro via the code:
CALL "FileB" PARAMETERS A=A, B=B, Testvar=Testvar
(Also, in the CALL command, do not put the GSM extension. In other words, it would be CALL "FileB", not CALL "FileB.gsm").
If you wanted 3 parameters with different names in "FileA.gsm" to match 3 separate names in "FileB.gsm", you can do that as well.
For example: "FileA.gsm" has 3 parameters named ObjectW, ObjectH & ObjectD. "FileB.gsm" still has the parameters A, B & TestVar. Then the following would be the way to call it:
CALL "FileB" PARAMETERS ObjectW=A, ObjectH=B, ObjectD=Testvar.
The parameters in both files have to be the same type. If parameter ObjectW is a Material parameter, then A has to be Material parameter.
Hope this helps.