Progress ABL - 什么是“?”方法参数中的意思?

Progress ABL - What does "?" mean in a method argument?

在我当前的项目中,我正在将一些 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 = ...

到目前为止我的代码有一个“?”的错误,它应该是一个 GUID:

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

SJ

“?”是文本值为 ?

的字符串文字

它不同于? (无引号)相当于空值。

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

您是否正在将用于 运行 的代码转换为针对 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,则 MtlQueue 行将使用 ttIssueReturn 行进行处理。

对于问题: 1. 论证“?”是什么意思?方法调用中的意思?

OpenEdge ABL 使用文字问号 (?) 表示未知。它在某种程度上相当于其他数据库或其他语言中的 NULL 值。与大多数语言一样,字符串可以为空 ("") 或 NULL (?),它们是不同的。与许多语言不同,所有类型都可以分配一个未知值(?),甚至是逻辑值——因此逻辑布尔值可以是?、真或假(即 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