进步ABL - 什么是“?”在方法论证中意味着什么?

时间:2016-06-16 12:42:17

标签: c# progress-4gl openedge epicorerp

在我当前的项目中,我将一些Progress代码转换为C#。要转换的声明之一是:

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 = ...
  4. 我的代码到目前为止有一个错误“?”,这被认为是一个GUID:

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

    SJ

3 个答案:

答案 0 :(得分:1)

“?”是一个字符串文字,文本值为?

与众不同? (没有引号),它等于空值。

{& input_dataset_SelectedPartDataSet}指的是Include文件参数或其他地方的& SCOPED-DEFINE或& GLOBAL-DEFINE定义。它是一个预处理器变量。

答案 1 :(得分:0)

您是否正在转换过去针对E9运行的代码,因此它现在针对E10运行?

在E10.1.400中,GetNewJobAsmblMultiple定义为:

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

复制与Guid.Empty中的E9传递相同的行为而不是"?"。如果您获得了AMM许可,并且传入了MtlQueue行的有效GUID,则将使用ttIssueReturn行处理MtlQueue行。

答案 2 :(得分: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