When an external library method is called from an AB Suite MCP application, the string parameter is passed by using a re-indexed descriptor for efficiency reasons. However, when the parameter is GLB.PARAM, the parameter is passed without re-indexing.
The re-indexing presents a problem only when the called library method uses the ALGOL SIZE intrinsic on the passed parameter, resulting in the failure of logic at runtime.
In case more than one string parameter is passed to an MCP library and this library invokes the SIZE intrinsic on one or more string parameters, there must be a way to handle it, similar to GLB.PARAM.
To overcome this issue, the AB Suite MCP runtime makes it possible to define one or more non-persistent segment attributes (similar to defining GSD blocks) with specific properties for use as string parameters. The properties are as follows:
The IsUnique property must be set to True in the folder that defines the non-persistent segment attribute.
The folder name must be GLBPARAM<suffix>; that is, the first seven characters of the folder name must be GLBPARAM. You might add your own suffix after GLBPARAM; for example, GLBPARAMNAME.
Notes:
The length of the folder name is limited to 20 characters.
The folder name must have all uppercase characters.
Using lowercase characters result in the folder being treated as a normal GSD block.
There must be only one attribute in the folder that must be of type String (or String array) or a single group. This parameter is passed to the MCP library method in the LDL+ logic
The MCP library method parameter is defined as String.
If a non-persistent segment attribute is defined in the way described above, its attribute can be used to pass a string parameter to an MCP library method without any descriptor re-indexing.