2016-06-16 103 views
0

在我當前的項目中,我將一些Progress代碼轉換爲C#。一個轉換的說法是:Progress ABL - 什麼是「?」在方法參數中意味着什麼?

RUN GetNewJobAsmblMultiple IN hIssueReturn(tranType,"?",callProcess,{&input_dataset_SelectedJobAsmblDataSet}, OUTPUT pcMessage, {&output_dataset_IssueReturnDataSet}) NO-ERROR. 

我的問題是: 「?」

  1. 什麼參數在方法調用中意味着什麼?什麼應該是它的等效C#代碼?
  2. 什麼是代碼中的{input_dataset_SelectedJobAsmblDataSet}意味着什麼{&}?這是一種參考嗎?這應該如何在C#中編碼?
  3. 我假定{&} output_dataset_IssueReturnDataSet是輸出變量,因此在C#,我喜歡賦值到它:Erp.Tablesets.IssueReturnTableset output_dataset_IssueReturnDataSet = ...

到目前爲止我的代碼有一個「?」 錯誤,這是假設是一個GUID: 「?」

Erp.Tablesets.IssueReturnTableset output_dataset_IssueReturnDataSet = hIssueReturn.GetNewJobAsmblMultiple(tranType, "?", callProcess, ref output_dataset_SelectedJobAsmblDataSet, out pcMessage); 

SJ

回答

1

是文本值爲?的字符串文字。

它不同於? (不包括引號),這將等於空值。

{& input_dataset_SelectedPartDataSet}指包含文件參數或&範圍的界定或& GLOBAL-DEFINE定義別的地方。這是一個預處理器變量。

+0

我修改了問題,正確的參數是:{&input_dataset_SelectedJobAsmblDataSet},儘管我懷疑它是否會改變你的答案。 – SJaka

+0

我遇到的問題是C#服務調用(添加到問題中)需要System.GUID參數,而不是字符串。 – SJaka

+0

您的代碼在哪個環境中執行?這是在支持.NET調用的Windows上的Progress客戶端中嗎? –

0

您是否將用於運行E9的代碼轉換爲現在針對E10運行的代碼?

在E10.1.400 GetNewJobAsmblMultiple定義爲:

public IssueReturnTableset GetNewJobAsmblMultiple(string pcTranType, Guid pcMtlQueueRowID, string pCallProcess, ref SelectedJobAsmblTableset ds, out string pcMessage) 

要複製相同的行爲E9傳遞Guid.Empty代替 「?」。如果您有AMM許可並且您傳遞了MtlQueue行的有效GUID,則將使用ttIssueReturn行處理MtlQueue行。

0

對於該問題: 1.什麼參數「?」在方法調用中意味着什麼?

OpenEdge ABL使用字面問號(?)表示UNKNOWN。它在某種程度上等同於其他數據庫或其他語言中的NULL值。和大多數語言一樣,一個字符串可以是空的(「」)或NULL(?),這些是不同的。與許多語言不同,所有類型都可以分配UNKNOWN值(?),即使是邏輯 - 所以邏輯布爾值可以是,,True或False(即3個值之一)

def var str as char init ?. 

message "string is Unknown" (str EQ ?). // TRUE 
message "string is empty" (str EQ ""). // FALSE (NULL and EMPTY are different) 

def var log as logical init ?. 

message "logical is unknown" (log EQ ?). // TRUE 
message "logical is false" (log EQ FALSE). // Logical is neither FALSE 
message "logical is true" (log EQ TRUE). // nor TRUE