Mitunter wollen Sie Zahlen in einem Format ausgeben,
das die Punkt-Befehle nicht beherrschen.
Das können Sie dann jederzeit
mit den Worten
<# # SIGN HOLD #S #> selbst programmieren.
Es wäre aber nicht ungeschickt,
ein flexibles Wort an der Hand zu haben, das genau das fertig bringt.
Ich schlage vor, ein solches Wort
PICTURE zu nennen.
PICTURE ( ulo uhi adr1 len1 -- adr2 len2 )
Es erwartet eine doppeltgenaue Zahl auf dem Stack
und darüber hinaus die Adresse und die Länge des Strings,
der als Schablone oder Vorgabefeld angibt,
wie die doppeltgenaue Zahl in einen String umgesetzt werden soll.
Ein paar Beispiele.
In der ersten Spalte stehen die Schablonenstrings,
in Spalte zwei und drei deren Auswirkung bei Anwendung
auf
1234.5678 und
9.5 als doppeltgenaue Zahlen.
Schablonenstring 1234.5678 9.5
---------------- --------- ---
S" #####" 45678 00095
S" F#.#.#.#" F5.6.7.8 F0.0.9.5
S" ##/##/##" 34/56/78 00/00/95
S" ? # #" 123456 7 8 0 9 5
S" -#+" -8+ -5+
S" ##,# km" 67,8 km 09,5 km
S" EUR ?.##" EUR 123456.78 EUR 0.95
Besondere Bedeutung in dem Schablonenfeld haben der Gartenzaun und
das Fragezeichen:
-
Der Gartenzaun # setzt jedes Mal genau eine Ziffer in den String.
-
Das Fragezeichen setzt die verbleibenden Ziffern oder eine Null in den String. (Denken Sie daran, dass der String von hinten nach vorn aufgebaut wird!)
Andere Zeichen des Schablonenfeldes werden buchstabengetreu übernommen.
Bemerkung: Die umzuwandelnde Zahl wird als Unsigned aufgefasst.