Actually for PxPlus 2021 we have added (actually the work is done and the logic is in QA) the ability to include a WITH clause to CALL, PERFORM and any method call to pass in values by variable name.
For example:
myObject'Function(with Name$="Dora", Type$="Cat", Age=10, Color$="Calico" )
When the method is invoked the variables Name$, Type$, Age, and Color$ will have been pre-initialized with the values specified.
Similar logic for:
CALL "SomeProg" with Name$="Dora", Type$="Cat", Age=10, Color$="Calico"
PERFORM "SomeProg" with Name$="Dora", Type$="Cat", Age=10, Color$="Calico"
This pretty much gives you what you were looking for apart from the use of an associative array.
As mentioned, this has already been developed and is one of the many new features that we will be releasing next May with our PxPlus 2021 release.
(BTW: Syntax wise the WITH clause will be accepted in Update 1 of PxPlus 2020 however it will generate a run-time error as the logic will not be enabled until PxPlus 2021)