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



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

最近,在处理一长串程序时,我有一个问题:有没有可能找出哪些变量,全局变量,共享变量是在执行某个程序的特定点上定义的?

是的,有。您总是可以使用操作系统实用程序,如grep

grep -i "shared var" *.p

将在all *中查找字符串"shared var"。页文件。您可以使用任何精确描述您想要查找的内容的regexp来使此更好、更有效。

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

考虑以下文件作为一个基本的例子:

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 proc1.p SAVE XREF proc1xref.txt.
COMPILE proc2.p SAVE XREF proc2xref.txt.

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

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

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

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

相关内容

  • 没有找到相关文章

最新更新