Description


When using entity or occurrence parameters, Uniface performs an implicit creocc prior to populating the record with the parameter data. In the case of In and Out parameter directions, this makes perfect sense. However, when using a parameter with a direction of InOut, it does not make sense to do an implicit creocc when returning from the operation. The fact that it is InOut implies that you are passing data into the operation. This operation changes the data and passes it back. Since Uniface currently performs this implicit creocc on returning, you end up with two occurrences in the entity when there should only really be one (ie the In data should get replaced with the Out data, not appended to).

Use Case


See Description

Importance


Whilst there are workarounds (eg use putlistitems/occ / getlistitems/occ and string parameters instead), adding this would mean that these parameters get more widely used by developers.

Type


Scripting/Coding

Operating System


Not Applicable

Status


Open

0 thoughts on “Remove implicit creocc for entity/occurrence inout”

  1. According to the help files this is necessary for the following reason: an implicit creocc is performed to set aside sufficient memory for the occurrence parameter, about 520 bytes for an In or Out occurrence parameter, or about 1040 bytes for an INOUT occurrence parameter, and is subsequently not released). Workaround: Use xmlstream parameter and xmlsave/xmlload to send the occurrence(s) from one component to the other.

Leave a Reply