如何在 Progress-4gl 中找到所有定义的变量?
How to find all the defined variables in Progress-4gl?
我被要求管理 SLES 上的服务器进度 10.2B 和上面编写的软件系统。半年后,我开始了解使用此服务器和使用 ABL 编写的程序的复杂性。由于我除了控制台和笔记本解析什么都没有,所以某些程序比较复杂。
最近在计算一长串程序时,有一个疑问:
有没有可能找出在执行某个过程的特定点定义了哪些变量,全局变量,共享变量?
是的,有。您始终可以使用 grep
.
等操作系统实用程序
grep -i "shared var" *.p
无论如何都会在所有 *.p 文件中查找字符串 "shared var"。您可以使用任何正则表达式来准确描述您要查找的内容,从而使它变得更好、更高效。
您还可以获得编译器的一些基本帮助(假设您有某种开发许可证)。
以这些文件为例:
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:\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
"NEW-SHR-VARIABLE bool"
in proc1xref.txt 告诉你已经创建了一个名为 bool 的共享变量,"ACCESS SHARED bool"
告诉你它已经被使用。
我被要求管理 SLES 上的服务器进度 10.2B 和上面编写的软件系统。半年后,我开始了解使用此服务器和使用 ABL 编写的程序的复杂性。由于我除了控制台和笔记本解析什么都没有,所以某些程序比较复杂。
最近在计算一长串程序时,有一个疑问: 有没有可能找出在执行某个过程的特定点定义了哪些变量,全局变量,共享变量?
是的,有。您始终可以使用 grep
.
grep -i "shared var" *.p
无论如何都会在所有 *.p 文件中查找字符串 "shared var"。您可以使用任何正则表达式来准确描述您要查找的内容,从而使它变得更好、更高效。
您还可以获得编译器的一些基本帮助(假设您有某种开发许可证)。
以这些文件为例:
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:\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
"NEW-SHR-VARIABLE bool"
in proc1xref.txt 告诉你已经创建了一个名为 bool 的共享变量,"ACCESS SHARED bool"
告诉你它已经被使用。