1

說我有一個期望通過引用數組參數接收緩存ObjectScript過程:我如何通過一個全球性的或處理私人的全球參考的程序

TotalArray(Arr) 
S Total=0 
S K="" 
F { 
    S K=$O(Arr(K)) 
    Q:K="" 

    S Total=Total+Arr(K) 
} 
Q Total 

我可以調用的程序與規則陣列通過與點語法參考:

S A(1)=5 
S A(2)=10 
W $$TotalArray(.A) 

但是,當我嘗試用一​​個全球參考做到這一點,我得到的點語法語法錯誤:

S ^A(0)=5 
S ^A(1)=10 
W $$TotalArray(.^A) 

通過引用ObjectScript過程來傳遞全局數組的正確方法是什麼?我也希望能夠通過處理私人全局(^||Array公約)

回答

2

如果用間接的布蘭登使用建議:

TotalArray(ArrName) 
S Total=0 
S K="" 
F { 
    S K=$O(@[email protected](K)) 
    Q:K="" 

    S [email protected]@(K) 
} 
Q Total 

然後調用它像這樣

W $$TotalArray("^A") 

甚至

W $$TotalArray("^A(""someIndex"")") 
2

這是不可能的。你既可以

  1. 傳名的全球,並通過Indirection訪問它,或者
  2. MERGE全球到本地變量(如果它足夠小),並傳遞引用。
+0

什麼語法我會用於間接?我不能合併爲局部變量,因爲它的大小可能非常大。 –

+0

關於選項1的語法,你可以發佈一個版本的TotalArray上面這樣做嗎? –

+0

鏈接的文檔應解釋如何執行此操作。如果您需要示例代碼,我建議您聯繫InterSystems支持。 –