In p709, Command Reference: If an include file is specified without an absolute path, the base location will be taken from the location of the program file, not from the default directory.
However, there are more stories.
unpack the attachment, run Test-path.prg, you will see the results of table tb:
C:\EViews9
e:\doc\ihs\eva
E:\DOC\HEDGE\GC
C:\Tmp
E:\DOC\EV9\TESTPATH2\TMPI\
E:\DOC\EV9\TESTPATH2\
note that
* the default dir is "E:\DOC\HEDGE\GC".
* For @linepath and @runpath, the return strings are ended with "\", other functions are not (I hope them consistently ended with or without "\").
run Test-path1.prg, you see the error
E:\DOC\EV9\TESTPATH2\EXEC\TMPI\TEST4.prg not found on disk in "EXEC E:\DOC\EV9\TESTPATH2\EXEC\TEST-PATH-E1".
* base path for INCLUDE: E:\DOC\EV9\TESTPATH2\EXEC\
run Test-path2.prg, you see the error
E:\DOC\EV9\TMPI\TEST4.prg not found on disk in "EXEC E:\DOC\EV9\TESTPATH2\EXEC\TEST-PATH-E2".
* base path for INCLUDE: E:\DOC\EV9\TESTPATH2\
run Test-path3.prg, you see the error
E:\..\TMPI\TEST4.prg not found on disk in "EXEC E:\DOC\EV9\TESTPATH2\EXEC\TEST-PATH-E3".
* base path for INCLUDE: E:\
Therefore, what really is the base path for INCLUDE? How about set it to be @linepath of parent program