Lade...
 

Push

Push

Push(stmtName)

moderne Schreibweise 170276 ist (stmntName)

Parameter:  Name einer Anweisung

Stack
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 the macro, which will be pushed into the variable writeProtocolMacro later

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

directionloadSalesDeliveryNoteItem 0 > if Push(WriteSWProtocol) else NULL -> writeProtocolMacro

...

// 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)