At my customer's site there are call macros and startup macros for the modules, which, in combination, implement kind of "extended" linkage conventions, where the size of the parameter list, the version of the parameter interface and so on, is passed in combination with the "netto" parameters.
This is done in a way which is compatible with the standard OS linkage conventions (the meta information is located "before" the register 1 address, for example). Because these extended linkage conventions are used all over the site, there is not much chance for errors in parameter passing. The macros are generated from language-independent interface descriptions; target languages are ASSEMBLER, PL/1 and C. Calls between these languages are supported; a caller does not need to know the language of the called module. We even can do things like automatic version upgrade of parameter interfaces (call with parameter interface 08 and upgrade it to 09 by an intermediate "dynamic interface upgrading service module") - if there are lots of callers of version 08, which cannot all be moved to version 09 in time. This "upgrading module" is generated - given the two interface descriptions as input. Kind regards Bernd
