Kbase P42846: How does Progress search for compiled ( .r ) and uncompiled ( .p ) code in the PROPATH?
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  11/13/2008 |
|
Status: Verified
GOAL:
How does Progress search for compiled ( .r ) and uncompiled ( .p ) code in the PROPATH?
GOAL:
What is the PROPATH?
GOAL:
How does the PROPATH work?
FACT(s) (Environment):
All Supported Operating Systems
Progress/OpenEdge Versions
FIX:
The PROPATH is a list of comma separated directory paths. When Progress encounters a period in the PROPATH (".,%DLC%\bin . . ."), the pathname of the current working directory is substituted in this position.
Progress will search each PROPATH component (directory in PROPATH) for what has been specified in the RUN statement. Sub-directories are excluded in the search unless they are part of the relative path/filename specified.
For example: 'RUN x.p' (i.e. without any physical or relative path information) will only succeed if the program physically exists in one of the directories listed on the PROPATH.
When a procedure is run from within a Progress session with the RUN statement, Progress will then search for it in the directory paths defined in PROPATH sequentially in the order listed.
For example:
PROPATH=folder1,folder2,folder3
RUN x.r
a) Will ONLY ever run .r's, never source files (.p, .w, etc...)
b) Will search in order folder1 -> folder2 -> folder3 for x.r and then execute the first instance that it finds.
c) Will return an error in the case that it is not found in any PROPATH folder
RUN x.p
Where NO x.r exists in the PROPATH:
As long as a development license is installed; the first instance of x.p will be compiled on the fly in memory BUT NEVER written to disk.
RUN x.p
Where x.r's exists in the PROPATH:
a) Will search in order folder1 .r? .p? -> folder2 .r? .p? -> folder3 .r? .p?
b) Run the first instance that is found;
i.e.
- If x.r is found before x.p in the same folder, then x.r will be run.
- If x.p is found in a folder before (say folder2) the first instance of x.r (in say folder 3), then that x.p will run if a development license is installed.
RUN x.w.
Where x.r also exists in the PROPATH but is the result of compiling x.p:
a) Will search in order folder1 .r? .w? -> folder2 .r? .w? -> folder3 .r? .w?
b) Run the first instance that is found.
i.e.
- If x.r is found before x.w in the same folder then x.r will be run, even though it is the product of compiling x.p.
- If x.p is found it is ignored.
- If x.w is found in a folder before (say folder2) the first instance of x.r (in say folder3), then that x.w will run if a development license is installed.
This is the sequence of search that will run every time that code is accessed, unless the Quick Request (-q) Client Session parameter is specified, which will force Progress to use a procedure stored in memory first, if it exists, before reading through the files.