如何使用 Progress 4gl 中的参数从列表执行过程?
How to execute procedure from List with parameters in Progress 4gl?
我有一些这样的列表
DEFINE VARIABLE procedurelist AS CHARACTER EXTENT 5
INITIAL [ "1.p", "2.p", "3.p", "4.p", "5.p"].
但这都是带有输入输出参数的程序,我想执行这个程序,我该怎么做?我不知道该怎么做。
您的解决方案的基础是 RUN VALUE
语句。
手册说明。
VALUE( extern-expression ) An expression that returns the name of the (local or remote) external procedure you want to run....
这基本上意味着您可以将带有程序(或过程)值的字符串输入到您的 运行 语句中。
如果所有的输入输出参数完全相同你可以这样做:
DEFINE VARIABLE procedurelist AS CHARACTER EXTENT 5 INITIAL [ "1.p", "2.p", "3.p", "4.p", "5.p"].
DEFINE VARIABLE iExtent AS INTEGER NO-UNDO.
DEFINE VARIABLE cVariable AS CHARACTER NO-UNDO.
DO iExtent = 1 TO EXTENT(procedurelist):
RUN VALUE(procedurelist[iExtent]) (INPUT-OUTPUT cVariable).
END.
如果参数不同,它会变得更棘手(但并非不可能)。 CREATE CALL
和调用对象可以帮助你。在这种情况下,您还需要某种方式来跟踪不同的参数。
这是直接从联机帮助中获取的基本示例:
DEFINE VARIABLE hCall AS HANDLE NO-UNDO.
CREATE CALL hCall.
/* Invoke hello.p non-persistently */
hCall:CALL-NAME = "hello.p".
/* Sets CALL-TYPE to the default */
hCall:CALL-TYPE = PROCEDURE-CALL-TYPE.
hCall:NUM-PARAMETERS = 1.
hCall:SET-PARAMETER(1, "CHARACTER", "INPUT", "HELLO WORLD").
hCall:INVOKE.
/* Clean up */
DELETE OBJECT hCall.
我有一些这样的列表
DEFINE VARIABLE procedurelist AS CHARACTER EXTENT 5
INITIAL [ "1.p", "2.p", "3.p", "4.p", "5.p"].
但这都是带有输入输出参数的程序,我想执行这个程序,我该怎么做?我不知道该怎么做。
您的解决方案的基础是 RUN VALUE
语句。
手册说明。
VALUE( extern-expression ) An expression that returns the name of the (local or remote) external procedure you want to run....
这基本上意味着您可以将带有程序(或过程)值的字符串输入到您的 运行 语句中。
如果所有的输入输出参数完全相同你可以这样做:
DEFINE VARIABLE procedurelist AS CHARACTER EXTENT 5 INITIAL [ "1.p", "2.p", "3.p", "4.p", "5.p"].
DEFINE VARIABLE iExtent AS INTEGER NO-UNDO.
DEFINE VARIABLE cVariable AS CHARACTER NO-UNDO.
DO iExtent = 1 TO EXTENT(procedurelist):
RUN VALUE(procedurelist[iExtent]) (INPUT-OUTPUT cVariable).
END.
如果参数不同,它会变得更棘手(但并非不可能)。 CREATE CALL
和调用对象可以帮助你。在这种情况下,您还需要某种方式来跟踪不同的参数。
这是直接从联机帮助中获取的基本示例:
DEFINE VARIABLE hCall AS HANDLE NO-UNDO.
CREATE CALL hCall.
/* Invoke hello.p non-persistently */
hCall:CALL-NAME = "hello.p".
/* Sets CALL-TYPE to the default */
hCall:CALL-TYPE = PROCEDURE-CALL-TYPE.
hCall:NUM-PARAMETERS = 1.
hCall:SET-PARAMETER(1, "CHARACTER", "INPUT", "HELLO WORLD").
hCall:INVOKE.
/* Clean up */
DELETE OBJECT hCall.