Push
Push(stmtName)
moderne Schreibweise 170276 ist (stmntName)
Parameter: Name einer Anweisung
Stack | Position | Beschreibung |
---|---|---|
Stack(In) | Top | - |
Stack(Out) | Top | eine Anweisung |
Push bringt die im Parameter angegebene Anweisung auf den Stack, um sie dann z.B. einer Variablen zuzuweisen. Das geht nur für mit Define definierte nicht-primitive Statements. Diese Anweisung kann dann zu einem späteren Zeitpunkt mittels Execute ausgeführt werden.
Somit kann man ein und derselben Variablen unter verschiedenen Bedingungen verschiedene Makros zuweisen, um diese Makros dann mit nur dieser einen Variable zu einem späteren Zeitpunkt mittels Execute ausführen lassen.
Beispiel
Define(WriteSWProtocol)
CX_ALLOCATION_TXN stockTxnItem Inherited if { WriteBOMProtocol return }
-> errText
Depth ifnot { "" Drop 0 }
-> errorID
predecessor errText errorID stockTxnItem WriteErrorWrapper
;
...
// If the direction of booking is forward, get the complete define string of the macro into the variable
direction
...
// now, check if the variable writeProtocolMacro is set. If, execute the string!
costAccount ifnot
{
3 "Fehler: Weder Kostenträger/stelle noch Vorgänger" writeProtocolMacro Dup if Execute else { Drop(3) }
FALSE return
}
Siehe auch Funktional Programmieren.
Veraltet: Damals wurde der Befehl Push auch für SetFormat Anweisungen benutzt. Heute wird dies über den Aufruf "call" gemacht
Alt:
[ "CX_CLASS::" Push(GetCollapseBitmap) COLUMN 0 ] SetFormat(, ListBox)
Neu:
[ "CX_CLASS::call(GetCollapseBitmap)" COLUMN 0 ] SetFormat(, ListBox)