Lade...
 

Transform

Transform

Transform(name)

Parameter: Name eines Enumeration-Datenfelds bzw. der Name der Tabelle oder Tabellenfunktion.

Stack
Stack   Beschreibung
Stack(In)   ganze Zahl
Stack(Out)   Zeichenkette

Der Wert vom Stack-Top wird in eine Zeichenkette transformiert. Dabei wird die im Parameter angegebene Transformationstabelle benutzt. Die Tabelle kann direkt oder indirekt mit Bezug auf ein Datenfeld angegeben werden:

  • Der Name hat die Form Filename~Tabellenname. Die angegebene Tabelle wird benutzt.
  • Der Name enthält keine Tilde, d.h. es wurde ein Datenfeld angegeben. Die Verbindung zwischen Datenfeld und Transformationstabelle stellt CLASSIX.INI her. Wird ein Zugriffsausdruck angegeben, bestimmt sein letzter Term die Transformationstabelle.

Falls die Transformationstabelle mehrere Einträge mit dem gesuchten Zahlenwert enthält, dann wird der zuerst in der Tabelle genannte Eintrag verwendet.
Falls die Transformationstabelle keinen entsprechenden Eintrag enthält, wird INVALID zurückgegeben.

Hinweis: Vor Dll-Version 227553 wurde "" anstatt INVALID zurückgegeben.

Findet die Anweisung eine Zeichenkette auf dem Stack-Top, so wird die umgekehrte Transformation durchgeführt:

Stack
Stack   Beschreibung
Stack(In)   Zeichenkette
Stack(Out)   ganze Zahl

Falls es für die Zeichenkette mehrere Einträge in der Übersetzungstabelle gibt, dann wird der zuerst in der Tabelle genannte Eintrag gewählt.
Falls es für die Zeichenkette keinen Eintrag in der Übersetzungstabelle gibt, dann wird INVALID zurückgegeben.

Vor Dll-Version 227553 wurde 2147483647 (maximaler INTEGER-Wert) anstatt INVALID zurückgegeben

Beispiel:

// Get the enum out of an object and transform it: item Copy(Monitor("CX_DISPO_ACCOUNT").logisticsEnum) Integer Transform("classix.num~logisticsEnum") // The same a little more comfortable item Copy(Monitor("CX_DISPO_ACCOUNT").logisticsEnum, ENUM) // Do that for initialized integer variables: Var(defaultSetting) 12 -> defaultSetting // If the item has no dispo account, use the default setting item Get(Monitor("CX_DISPO_ACCOUNT")) Dup ifnot { Drop defaultSetting } Integer Transform("classix.num~logisticsEnum") // Transform using a function CX_CLASS Transform("GetClassNames()") //-> "CX_CLASS"

 

Transform(name, trennzeichenFolge)

Parameter: Name eines Enumeration-Datenfelds bzw. der Name der Tabelle, Trennzeichen zwischen zwei Namen

Stack
Stack   Beschreibung
Stack(In)   ganze Zahl
Stack(Out)   Zeichenkette

Für eine Transformationstabelle, die nur Werte 2n enthalten sollte, wird der Wert vom Stack-Top als Bitfeld aufgefasst und man erhält als Ergebnis eine Zeichenkette, die aus den Namen aller Bits = 1 besteht. Aufeinanderfolgende Namen werden durch die im zweiten Parameter angegebene Zeichenfolge getrennt.

Beispiel:

/ Definiton in classix.num

/*
batchErrorEnum
{
  1, T("Andere", "Others"), 0xff                                                               // Bit 0
  2, T("Keine Kosten am Fertigungsteil", "No costs on product"), 0xff                          // Bit 1
  4, T("Keine Kosten am Bestellteil/kein SVP", "No costs on purchase item / no svp"), 0xff     // Bit 2
  8, T("Weder Kostenstelle noch Kostenträger", "Neither cost center nor cost objective"), 0xff // Bit 3
 16, T("Fehlende Sachmerkmale", "Missing attributes"), 0xff                                    // Bit 4
 32, T("Fehlendes Logistikkennzeichen", "Missing logistics enum"), 0xff                        // Bit 5
}

  • /

     

// Get the enum out of an object and transform it:

63 Transform("classix.num~batchErrorEnum", ";") // -> "Andere;Keine Kosten am Fertigungsteil;Keine Kosten am Bestellteil/kein SVP;Weder Kostenstelle noch Kostenträger;Fehlende Sachmerkmale;Fehlendes Logistikkennzeichen"

 

Falls nach der Übersetzung in Bits der Wert nicht auf 0 reduziert werden konnte, dann wird der Rest als numerischer Wert mit dem Trennzeichen getrennt hinten angefügt (Bsp: ";32"). Dies heißt auch, dass für den Fall, dass kein Bit in dem übergebenen Wert gefunden wurde, der gesamte numerische Wert dem Restwert entspricht und als STRING zurückgegeben wird (ohne das führende Trennzeichen).

Die Bit-Transformation in umgekehrter Richtung ist zur Zeit noch nicht verfügbar!  

Hinweis: Transform ist abhängig von der aktuellen Sprache (vergleiche Anweisung Language).
Wenn man den Enumerations-Namen als multilinguale Zeichenkette benötigt, soll Anweisung MLTransform benutzt werden