2015-08-28 67 views
1

我被要求管理SLES上的服務器進度10.2B和寫在其上的軟件系統。半年後,我開始理解使用該服務器和使用ABL編寫的程序的複雜性。由於除了控制檯和筆記本解析之外,我沒有其他任何東西,所以某些過程比較複雜。如何在Progress-4gl中找到所有已定義的變量?

近日,在程序長鏈搞清楚,我有一個問題: 是否有可能找出變量,全局變量,共享變量在執行某程序的特定點定義是什麼?

回答

0

是的,有。您始終可以使用操作系統實用程序,如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"告訴你,它已經用過。

相關問題