2016-06-16 8 views
0

In meinem aktuellen Projekt konvertiere ich einige Progress-Code in C#. Einer der Aussage zu konvertieren ist:Progress ABL - Was bedeutet "?" in einem Methodenargument bedeuten?

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

Meine Fragen sind: "?"

  1. Was das Argument tut bedeutet im Methodenaufruf? Was sollte der entsprechende C# -Code dafür sein?
  2. Was bedeutet {& input_dataset_SelectedJobAsmblDataSet} im Code? Ist es eine Art Referenz? Wie soll das in C# codiert werden?
  3. Ich gehe davon aus {& output_dataset_IssueReturnDataSet} ist die Ausgangsgröße und damit in C#, ich bin Werte mag es zuweisen: Erp.Tablesets.IssueReturnTableset output_dataset_IssueReturnDataSet = ...

Mein Code so weit hat ein "?" Fehler für, das ist wohl eine GUID sein: "?"

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

SJ

Antwort

1

ist ein String-Literal mit dem Textwert von?

Es unterscheidet sich von? (keine Anführungszeichen), die dem Nullwert entsprechen würden.

{& input_dataset_SelectedPartDataSet} bezieht sich auf einen Parameter Include-Datei oder ein & scoped-DEFINE oder & GLOBAL-DEFINE woanders Definition. Es ist eine Präprozessorvariable.

+0

ich geändert habe die Frage, das richtige Argument war: {& input_dataset_SelectedJobAsmblDataSet}, obwohl ich bezweifle, wenn es Ihre Antwort ändert. – SJaka

+0

Das Problem, dem ich gegenüberstehe, ist der C# -Dienstaufruf (der Frage hinzugefügt) erfordert ein System.GUID-Argument, keine Zeichenfolge. – SJaka

+0

In welcher Umgebung wird Ihr Code ausgeführt? Ist das in einem Progress-Client unter Windows, der .NET-Aufrufe unterstützt? –

0

Konvertieren Sie Code, der früher mit E9 lief, so dass er jetzt gegen E10 läuft?

In E10.1.400 GetNewJobAsmblMultiple ist definiert als:

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

das gleiche Verhalten zu replizieren als E9 in Guid.Empty statt passieren "?". Wenn Sie AMM lizenziert haben und eine gültige GUID für eine MtlQueue-Zeile übergeben, wird die Zeile MtlQueue mit der Zeile ttIssueReturn verarbeitet.

0

Für die Frage: 1. Was bedeutet das Argument "?" bedeutet im Methodenaufruf?

Das literale Fragezeichen (?) Wird von der OpenEdge-ABL als UNKNOWN verwendet. In anderen Datenbanken oder in anderen Sprachen entspricht dies einem NULL-Wert. Wie in den meisten Sprachen kann eine Zeichenfolge leer ("") oder NULL (?) Sein und diese sind unterschiedlich. Im Gegensatz zu vielen Sprachen können alle Arten einen unbekannten Wert zugewiesen werden, auch ein logische (?) - so eine logische boolean sein kann, True oder False (dh eines von 3 Werten)

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 
Verwandte Themen