REM **************************************************************************
REM
REM Demo van AmiGazette 12 - Block
REM
REM **************************************************************************

FOR I=1 TO 6                               :REM Zes regels.
    READ t$                                :REM Lees een regel in t$.
    j%=50                                  :REM 50 tekens per regel.
    IF LEN(t$)>j% THEN j%=LEN(t$)          :REM Test op de lengte.
    CALL Block (t$,j%)                     :REM Roep de routine aan.
    PRINT t$                               :REM Print de tekst.
NEXT I
DATA "Dit zijn een aantal regels die elk vijftig"
DATA "tekens lang moeten worden door het bij-"
DATA "voegen van extra spaties. Elke regel wordt"
DATA "door de subroutine gezonden en daarna op"
DATA "het scherm geprint. De tekst is 6 regels"
DATA "lang. Dit is de laatste regel van de tekst."
END

REM **************************************************************************
REM De SUB
REM **************************************************************************

SUB Block (t$,j%) STATIC
    a=LEN(t$)
    DIM w$(a)

    p=0                                    :REM 0 Tekens van het einde.
    z$=" "                                 :REM Testen op spatie.
    WHILE z$=" "                           :REM De lus.
       z$=MID$(t$,a-p,1)                   :REM Pak een teken uit de tekst.
       p=p+1                               :REM 1 Teken verder in de tekst.
    WEND                                   :REM Einde van de lus.
    p=p-1
    t$=LEFT$(t$,a-p)                       :REM Geen spatie meer aan eind.

    p=1
    z$=" "
    WHILE z$=" "                           :REM Dezelfde lus maar nu voor
       z$=MID$(t$,p,1)                     :REM    het begin van de tekst.
       p=p+1
    WEND
    p=p-2
    t$=RIGHT$(t$,a-p)                      :REM Geen spatie meer aan begin.
    IF j%<a THEN EXIT SUB                  :REM 50 Tekens tekst ? Dan stop.
    IF a<2 THEN EXIT SUB                   :REM 1 Teken tekst ? Dan stop.

    k=1                                    :REM Aantal woorden.
    FOR z=1 TO a-p                         :REM Lus door de tekst.
        s$=MID$(t$,z,1)                    :REM Pak een letter.
        IF s$<>" " THEN w$(k)=w$(k)+s$     :REM Test op een spatie tussen woord.
        IF s$=" " THEN k=k+1
    NEXT z                                 :REM Einde regel.

    DIM le%(k)
    b=j%-LEN(t$)
    z=0
    WHILE b>0                              :REM Aantal spaties.
       le%(z)=le%(z)+1                     :REM Voeg spatie toe.
       z=z+1
       IF z=(k) THEN z=1
       b=b-1
    WEND                                   :REM Alles toegevoegd.

    t$=""                                  :REM Lege start-string.
    FOR z=1 TO k                           :REM Lus voor aantal woorden.
        t$=t$+w$(z)+SPACE$(le%(z)+1)       :REM Aan elkaar plakken.
    NEXT z
    ERASE w$,le%                           :REM Wis de gebruikte array's.
END SUB
