The FileMaker rapid application development system contains these components:
- base tables
- base table fields
- table occurrences
- relationships
- scripts
- script steps
- script variables
- script step parameters
- calculations
- layouts
- layout fields
- script triggers on layout fields
- script triggers on other events
Some of these are objects with internal FileMaker objectIDs. For example, if I delete an entire script and replace it with one of the same name, links from script triggers to the script will be broken. This suggests a pass-by-reference behavior.
However, when replacing the entire contents of a script with the contents of another script (even from another database file), the script step parameters and calculations will not be broken. This suggests that the contents of the script are provided in a pass-by-value fashion. However, if a table occurrence is renamed, the script step parameters in that script will still function. This suggests pass-by-reference.
Is a meta-model of FileMaker (a) relatively complicated such that it's difficult to keep track of what's pass-by-reference or pass-by-value, or (b) not something that can be classified into these two categories. If (b) is the case, can anyone recommend a different way to think about this?
For other programming languages and database systems, I think my questions are well answered:
Is Java "pass-by-reference" or "pass-by-value"?
Is JavaScript a pass-by-reference or pass-by-value language?