:PushRec -------------------------------------------------------------------------- FKT: legt akt. Satznummer auf Stack ($MP_RecordStack) IN: - OUT: akt. Rec-Nr. im Stack gespeichert VAR: $MP_RecordStack, $vPushRec :PopRec -------------------------------------------------------------------------- Fkt: lädt Satz mit Satznummer vom Stack ($MP_RecordStack) VAR: $MP_RecordStack, $vPopRec OUT: neuer Rec geladen; wenn Fehler, $vMP_Err besetzt :DropRec -------------------------------------------------------------------------- Fkt: entfernt Satznummer vom Stack ($MP_RecordStack) VAR: $MP_RecordStack, $vDropRec OUT: $vMP_Err besetzt :PushAdr -------------------------------------------------------------------------- FKT: Merkt Rücksprungmarke in AdressStack max. Stackgröße ca. 31940 Bytes (a99 fliegt bei Variablen, die länger als 32000 Bytes werden IN: iv - Rücksprung-Marke OUT: iv leer oder Fehlermeldung, wenn Stacküberlauf DESC: PushAdr / Return unterstützen einen schachtelbaren UP-Mechanismus, der über den jump-Befehl funktioniert: - vor UP-Aufruf wird mit 'perform MP_PuschAdr' die Rücksprungmarke im Stack abgelegt - das UP wird mittels 'jump UP-Name' "aufgerufen" - Das UP endet mit 'jump Return' - der Markenname darf nicht länger als 60 Zeichen sein und kein Semikolon, code 9 (TAB) oder " " (Space) enthalten Beispiel: ----------------------- var "M"\perf PushAdr // Rücksprung-Marke auf Stack var "par1"\perf Push // Parameter werden über den Stack var "Par2"\perf Push // übergeben jump UP // ruft UP auf :M // hierher kehrt das UP zurück var $iv\mes\end // gibt "hab' was getan" aus ----------------------- :UP perf Pop\ins $p2 // Parameter rückwärts wieder aus perf Pop\ins $p1 // Stack holen var "hab' was getan" // Rückgabewert in iv jump Return // Rücksprung auf Marke aus Stack ----------------------- VAR: $MP_AdrStack, $MP_AdrSP, $vPA_p :Return -------------------------------------------------------------------------- FKT: Springt auf letzte Marke aus Stack DESC: mit jump zu nutzen, nicht mit Perform!!! IN: iv - Rückgabewert der Funktion bzw. des Unterprogrammes OUT: iv zerstört $iv enthält geretteten iv-Inhalt VAR: $MP_AdrStack, $MP_AdrSP, $iv, $t, $mp_retadr :Push -------------------------------------------------------------------------- IN: iv OUT: iv unverändert FKT: iv-Inhalt wird auf Stack gelegt DESC: Stack wird in $-Variablen abgelegt; max. Länge ist 999 Eintraege VAR: $MP_ivStacknnn - Stack-Variablen $MP_ivSP - aktuelle Stacktiefe $vPush - temp. $vPushz - Zwischenspeicher für z $vPushZ - dto. für Z :Pop -------------------------------------------------------------------------- IN: - OUT: iv aus Stack aktualisiert FKT: holt naechsten Wert vom Stack VAR: $MP_ivStacknnn - Stack-Variablen $MP_ivSP - aktuelle Stacktiefe $vPop - temp. $vPopz - Zwischenspeicher fuer z