1
我被要求管理SLES上的服務器進度10.2B和寫在其上的軟件系統。半年後,我開始理解使用該服務器和使用ABL編寫的程序的複雜性。由於除了控制檯和筆記本解析之外,我沒有其他任何東西,所以某些過程比較複雜。如何在Progress-4gl中找到所有已定義的變量?
近日,在程序長鏈搞清楚,我有一個問題: 是否有可能找出變量,全局變量,共享變量在執行某程序的特定點定義是什麼?
我被要求管理SLES上的服務器進度10.2B和寫在其上的軟件系統。半年後,我開始理解使用該服務器和使用ABL編寫的程序的複雜性。由於除了控制檯和筆記本解析之外,我沒有其他任何東西,所以某些過程比較複雜。如何在Progress-4gl中找到所有已定義的變量?
近日,在程序長鏈搞清楚,我有一個問題: 是否有可能找出變量,全局變量,共享變量在執行某程序的特定點定義是什麼?
是的,有。您始終可以使用操作系統實用程序,如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"
在proc1xref.txt告訴你有一個共享變量命名BOOL已創建並"ACCESS SHARED bool"
告訴你,它已經用過。