2016-06-16 7 views
0

В моем текущем проекте я конвертирую код прогресса в C#. Один из заявления, чтобы преобразовать это:Прогресс 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} относится к инклюдникам параметру или & контекстным-DEFINE или & GLOBAL-DEFINE определения где-то в другом месте. Это переменная препроцессора.

+0

Я модифицировал вопрос, правильный аргумент: {& input_dataset_SelectedJobAsmblDataSet}, хотя я сомневаюсь, что он изменит ваш ответ. – SJaka

+0

Проблема, с которой я столкнулся, - это вызов службы C# (добавленный в вопрос), для чего требуется аргумент System.GUID, а не строка. – SJaka

+0

В какой среде выполняется ваш код? Это в клиенте Progress в Windows, который поддерживает вызовы .NET? –

0

Вы конвертируете код, который использовался для работы с E9, поэтому он теперь работает против E10?

В E10.1.400 GetNewJobAsmblMultiple определяется как:

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

Для того, чтобы повторить такое же поведение, как Е9 проходят в Guid.Empty вместо "?". Если у вас лицензия AMM и вы передаете действительный идентификатор GUID для строки MtlQueue, строка MtlQueue будет обработана с помощью строки ttIssueReturn.

0

За все вопрос: 1. Что такое аргумент «?» означает в вызове метода?

Литеральный знак вопроса (?) Используется OpenEdge ABL для обозначения UNKNOWN. Это несколько эквивалентно значению 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 

 Смежные вопросы

  • Нет связанных вопросов^_^