: PICTURE ( ulo uhi adr1 len1 -- adr2 len2 )
2>R
<#
BEGIN R> 1- \ Positie in sjabloon
S>D 0=
WHILE >R 2R@ + C@ \ Karakter uit sjabloon
[CHAR] # OVER =
IF DROP # \ Een cijfer
ELSE [CHAR] ? OVER =
IF DROP #S \ De resterende cijfers
ELSE HOLD
THEN
THEN
REPEAT R> 2DROP
#> ;
# ( ulo1 uhi1 -- ulo2 uhi2 ) "number sign"
Bepaal, gebruik makend van
BASE, het laatste cijfer van
het bitpatroon
uhi1,ulo1 en plaats dat cijfer vooraan de String in wording.
uhi2,ulo2 is
uhi1,ulo1 zonder zijn laatste cijfer.
Gebruik # alleen tussen
<# en
#>.
HOLD ( k -- )
Voeg vooraan de String in wording het karakter
k toe.
Gebruik HOLD alleen tussen
<# en
#>.
Voorbeelden:
) 2.34567 S" fl. ?.##"
) PICTURE TYPE [rtn] fl. 2345.67 ok
) 2.34567 S" C#-##"
) PICTURE TYPE [rtn] C5-67 ok
) -2.34567 S" C#-##
) PICTURE TYPE [rtn] C0-49 ok \ of C7-29 ok
PICTURE levert een String die slechts kort geldig is.
Bij de meeste Forth-systemen zal hij overschreven worden zodra er weer
een omzetting begint. Probeer eens
) 1234. S" ####" PICTURE 56 . TYPE [rtn]