Kbase 15571: How do compile time arguments work? (error 293)
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  10/05/1998 |
|
How do compile time arguments work? (error 293)
INTRODUCTION:
=============
This KnowledgeBase entry describes a problem a lot of customers
experience and for which, in their point of view, there is no apparent
reason the accompanying error message '** "<file-name>" was not
found. (293)' comes up.
WHY YOU NEED TO KNOW THIS:
===========================
This problem shows up because of a typing error by the developer when
the RUN statement is used and in a run-time environment only.
Consider the two following sample procedures:
/* test.p */
DEFINE VARIABLE test AS CHARACTER INITIAL "Hello world".
RUN test2.p (INPUT test)). /* Notice the second closing bracket */
/* test2.p */
DEFINE INPUT PARAMETER x AS CHARACTER.
MESSAGE x.
The typing error in this case is the second closing bracket. The fact
that the error message shows is not a bug.
The second bracket is treated by the compiler as a compile time
argument for 'test2.p'. This implies that when the RUN statement is
to be executed, we have to compile 'test2.p' on the fly and
substitute the argument (the right bracket) everywhere there is a {1}
in 'test2.p'. So, the RUN statement tries to find 'test2.p' and
complains if it cannot. Because the application is run in a run-time
environment it will not find the procedure (.p), only the object-code
(.r).
The following characters show the same behaviour as the right bracket
in the example: / ~ + - = ( * < > ^ @ ? |
The following characters will bring up errors: _ ; : ! # $ % &
REFERENCES TO WRITTEN DOCUMENTATION:
====================================
PROGRESS Language Reference - Description of RUN statement
- {} Argument Reference
Progress Software Technical Support Note # 15571