如何在Progress-4gl中找到所有已定义的变量?

时间:2015-08-28 13:24:48

标签: progress-4gl openedge

我被要求在SLES上编写服务器进度10.2B并在其上编写软件系统。半年后,我开始了解使用此服务器的复杂性以及用ABL编写的程序。由于除了控制台和笔记本解析之外我什么都没有,所以某些程序更复杂。

最近,在一系列程序中,我有一个问题: 是否有可能找出在执行某个程序的特定点定义了哪些变量,全局变量,共享变量?

1 个答案:

答案 0 :(得分:1)

是的,有。您始终可以使用grep等操作系统实用程序。

grep -i "shared var" *.p

将查找字符串" shared var"无论如何,在所有* .p文件中。使用任何描述您想要查找的正则表达式,您可以使这更好,更高效。

您还可以从编译器获得一些基本帮助(假设您拥有某种开发许可证)。

将这些文件视为一个基本示例:

proc1.p
=======
DEFINE NEW SHARED VARIABLE bool AS LOGICAL NO-UNDO.
bool = TRUE.
RUN proc2.p.

proc2.p
=======
DEFINE SHARED VARIABLE bool AS LOGICAL NO-UNDO.
DISPLAY bool.

现在使用XREF选项对它们运行compile语句。

COMPILE proc1.p SAVE XREF proc1xref.txt.
COMPILE proc2.p SAVE XREF proc2xref.txt.

这将创建两个交叉引用文本文件,如下所示:

proc1xref.txt
==============
c:\temp\proc1.p c:\temp\proc1.p 1 COMPILE c:\temp\proc1.p
c:\temp\proc1.p c:\temp\proc1.p 1 CPINTERNAL ISO8859-1
c:\temp\proc1.p c:\temp\proc1.p 1 CPSTREAM ISO8859-1
c:\temp\proc1.p c:\temp\proc1.p 1 STRING "bool" 4 NONE UNTRANSLATABLE 
c:\temp\proc1.p c:\temp\proc1.p 1 NEW-SHR-VARIABLE bool
c:\temp\proc1.p c:\temp\proc1.p 3 ACCESS SHARED bool 
c:\temp\proc1.p c:\temp\proc1.p 3 UPDATE SHARED bool 
c:\temp\proc1.p c:\temp\proc1.p 5 RUN proc2.p


proc2xref.txt
=============
c:\temp\proc2.p c:\temp\proc2.p 1 COMPILE c:\temp\proc2.p
c:\temp\proc2.p c:\temp\proc2.p 1 CPINTERNAL ISO8859-1
c:\temp\proc2.p c:\temp\proc2.p 1 CPSTREAM ISO8859-1
c:\temp\proc2.p c:\temp\proc2.p 1 STRING "bool" 4 NONE UNTRANSLATABLE 
c:\temp\proc2.p c:\temp\proc2.p 3 ACCESS SHARED bool 
c:\temp\proc2.p c:\temp\proc2.p 3 STRING "yes/no" 6 NONE TRANSLATABLE  FORMAT 
c:\temp\proc2.p c:\temp\proc2.p 3 STRING "bool" 4 LEFT TRANSLATABLE 
c:\temp\proc2.p c:\temp\proc2.p 3 STRING "-------" 7 NONE UNTRANSLATABLE 
proc1xref.txt中的

"NEW-SHR-VARIABLE bool"告诉您已经创建了一个名为bool的共享变量,"ACCESS SHARED bool"告诉您它已被使用。