Module FastM2000 { plaintext$="TOBEORNOTTOBEORTOBEORNOT" Function encodeLZW$(i$) { Def long c, d, i, l, o$, w$ Inventory dict For i = 0 to 255 {Append dict , Chr$(i):=i} l = i i = 1 w$ = LEFT$(i$,1) REPEAT{ d = 0 Repeat { c = d IF i > Len(i$) Then Exit if exist(dict, w$) Then { d=eval(dict) } Else Append dict, w$:=l: Exit if d= l l += 1 : w$ = Right$(w$, 1) o$ += Chr$(c Mod 256) + Chr$(c div 256) } Until i > Len(i$) = o$ } encodeLZW$ = encodeLZW$(plaintext$) Document Doc$ For i = 1 to Len(encodeLZW$) STEP 2 Doc$= Str$(Asc(Mid$(encodeLZW$,i)) + 256*Asc(Mid$(encodeLZW$,i+1))) Next i Doc$={ } Function decodeLZW$(i$) { Def c, i, l, o$, t$, w$ Inventory Dict For i = 0 to 255 {Append dict , i:=chr$(i)} l = i c = Asc(i$) + 256*Asc(Mid$(i$,2)) w$ = dict$(c) o$ = w$ IF Len(i$) < 4 Then = o$ For i = 3 to Len(i$) STEP 2 { c = Asc(Mid$(i$,i)) + 256*Asc(Mid$(i$,i+1)) IF c < l Then { t$ = dict$(c) } Else t$ = w$ + LEFT$(w$,1) o$ += t$ Append dict, l:=w$ + LEFT$(t$,1) l += 1 : w$ = t$ } = o$ } Doc$=decodeLZW$(encodeLZW$)+{ } Clipboard Doc$ Report Doc$ } FastM2000