Прогресс ABL - Что значит "?" значит в аргументе метода?
В моем текущем проекте я конвертирую некоторый код Progress в C#. Одним из утверждений для преобразования является:
RUN GetNewJobAsmblMultiple IN hIssueReturn(tranType,"?",callProcess,{&input_dataset_SelectedJobAsmblDataSet}, OUTPUT pcMessage, {&output_dataset_IssueReturnDataSet}) NO-ERROR.
Мои вопросы:
- Что значит аргумент "?" значит в вызове метода? Каким должен быть эквивалентный код C# для него?
- Что {&input_dataset_SelectedJobAsmblDataSet} означает в коде? Это какая-то ссылка? Как это должно быть закодировано в C#?
- Я предполагаю, что {&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
3 ответа
"?" такое строковый литерал с текстовым значением?
Это отличается от? (без кавычек), который будет эквивалентен нулевому значению.
{& 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, и вы передаете действительный идентификатор GUID для строки MtlQueue, строка 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