) : PICTURE ( ulo uhi adr1 len1 -- adr2 len2 )
) 2>R
) <#
) BEGIN R> 1- \ Stelle in der Schablone
) S>D 0=
) WHILE >R 2R@ + C@ \ Zeichen aus der Schablone
) [CHAR] # OVER =
) IF DROP # \ Eine Ziffer
) ELSE [CHAR] ? OVER =
) IF DROP #S \ Die restlichen Ziffern
) ELSE HOLD
) THEN
) THEN
) REPEAT R> 2DROP
) #> ;
# ( ulo1 uhi1 -- ulo2 uhi2 ) "number sign"
Bestimme unter Verwendung von
BASE die letzte Ziffer
des Bitmusters
uhi1,ulo1 und füge diese Ziffer
vorn an den im Aufbau befindlichen String an.
uhi2,ulo2 ist
uhi1,ulo1 ohne dessen letzte Ziffer.
(Nur zwischen
<# und
#> verwenden.)
HOLD ( c -- )
Füge vorn an den im Aufbau befindlichen String das Zeichen
c an.
(Nur zwischen
<# und
#> verwenden.)
Beispiele:
) 2.34567 S" EUR ?.##"
) PICTURE TYPE [rtn] EUR 2345.67 ok
) 2.34567 S" C#-##"
) PICTURE TYPE [rtn] C5-67 ok
) -2.34567 S" C#-##
) PICTURE TYPE [rtn] C0-49 ok \ oder C7-29 ok
PICTURE liefert einen String, der nur von kurzem Bestand ist.
Bei den meisten Forth-Systemen wird er überschrieben werden,
sobald eine neue Umwandlung beginnt. Probieren Sie
) 1234. S" ####" PICTURE 56 . TYPE [rtn]