Order of Precedence
Merge command-line options can come from the configuration file (.prt), the command line, or a command file. Many options can appear in more than one of these places. Some of the options may be overridden at runtime by JavaScript calls. The order of precedence is:
- Runtime javascript overrides all other sources of command-line options.
- The command line and command file(s).
- The configuration file.
Command-line options are processed sequentially, left-to-right. A command file reference (an @parmFile.prm option) is expanded when it is encountered. It is exactly as if all entries in that file are directly in the command line, replacing the reference itself. If a command-line option is set more than once, the last setting takes precedence.
In a sense, $X option definitions (see $X String Substitutions) are executed immediately. That is, as soon as a $X path-ofchoice option is encountered, the meaning of $X is immediately changed. This means that subsequent use of something like @@$X/myParms.prm will employ the most recent definition of $X.
The use of the "@$X/...
" example above is reflective of an active command-line option, not just a static setting. One could set "-form $X/myForm.xatw
" and it matters not what the value of $X is at the time that setting is recorded. It will take on the value of $X as it happens to be at the time that the form file is opened. Settings just 'set'. @ and @@
options are active; they take an action; they employ the latest $X value option settings in effect, at the time of taking the action.
$X type options are usually used in file names/paths. The resolution of those $X type options is not made until the nominated file name is about to be opened. We call that operation 'hardening the path'. That hardening is done at the last possible instant so that files can be referenced more flexibly. See also _file.resolveName.
There is one other command-line option that has immediate effect, as the options themselves are being processed. That is the -cd newFolder option. If you were to supply -cd myProjectfolder on the command line then a subsequent reference to @@myProjectParms.prm would look for that file in the most recently cd'ed to folder.