Variables in PhraseExpress
In PhraseExpress v14 (PhraseExpress for Mac v3), we had introduced "global variables". "Global" because they were stored in a separate area from the phrase tree for quick access.
The problem: Since the global variables were stored outside the phrase tree, no read/write restrictions could be applied and every user could add, delete or change variables at will. For this reason, we decided to convert the variables in PhraseExpress v15 into regular phrases and replace all instances of variables with a new macro to link phrase contents into another phrase.
While no problems were encountered during the beta test, which lasted more than a year, individual users now report problems when using formerly global variables with form macros and we would like to explain the situation:
General functionality of form macros
Before executing a phrase, PhraseExpress searches the phrase contents for all occurrences of form macro elements (input fields, checkbox macros, etc.). As soon as the first form element is found, PhraseExpress collects all further elements and generates a form step-by-step, which is displayed as a combined form containing all form elements. After the form is filled out, the form input is then replaced by the form macros in the phrase content and the entire content is output.
Change in the new PhraseExpress version
If you had defined global variables in earlier PhraseExpress versions that contain individual form elements and used several such variables in one phrase, the contents of the global variables were first "unpacked" into the phrase contents, then all unpacked variables were searched for form macros in one go and a large form was generated (just as described above).
In PhraseExpress v15 (v4 for Mac), the variables are converted into phrases in the phrase folder "Variables" and all occurrences of the variables in phrases are replaced by phrase links. For text this works without problems, but can lead to problems with form elements:
Several phrase links in a phrase are not "unpacked" in advance and searched for form elements in their entirety, but each linked phrase is considered separately. In this way, a previously combined form with several form elements is broken down into individual forms with one single element each.
In order to achieve the same behavior of the former variables again, we will now replace the #insert phrase link macro with a new macro #embed that triggers a combined processing instead of a sequential processing of the individual phrase links. Then all form elements will be processed combined together again.