// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Name : RLECompress // Author : Manuel Bauwens // Function: Comp. een string // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ RLECompress(TString) New TChar1,TChar2,TChar3,TChar4,StrBuff,StrBuffer,RLE,XPos,TLoop Set (StrBuff,StrBuffer)="" Set RLE=0 For TLoop=1:1:$L(TString) Do . Set TChar1=$E(TString,TLoop) . Set TChar2=$E(TString,TLoop+1) . Set TChar3=$E(TString,TLoop+2) . Set XPos=1 . Set:(TChar1'=TChar2) RLE=0 . Set:((TChar1=TChar2)&&(TChar1=TChar3)) RLE=1 . If (RLE=1) Do .. For Do Quit:(TChar4'=TChar1) ... Set XPos=XPos+1 ... Set TChar4=$E(TString,TLoop+XPos) .. Set StrBuff=$C(255)_$C(XPos-1)_TChar1 .. Set TLoop=TLoop+XPos . Set:'RLE StrBuff=TChar1 . Set StrBuffer=StrBuffer_StrBuff Quit StrBuffer // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Name : RLEUNCompress // Author : Manuel Bauwens // Function: DeComp. een string gecomp. met RLECompress // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ RLEUNCompress(TString) New TChar1,TChar2,TChar3,TChar4,StrBuff,StrBuffer,XPos,TLoop Set (StrBuff,StrBuffer)="" For TLoop=1:1:$L(TString) Do . Set TChar1=$A($E(TString,TLoop)) . Set TChar2=$A($E(TString,TLoop+1)) . Set TChar3=$A($E(TString,TLoop+2)) . Set TChar4=$A($E(TString,TLoop-1)) . If (TChar1=255) Do .. For XPos1=1:1:$L(TChar2) Do ... Set StrBuff=StrBuff_$C(TChar3) .. Set TChar1="" .. Set TChar2="" . Set:((StrBuff="")&&(TChar4'=255)) StrBuff=$C(TChar1) . Set StrBuffer=StrBuffer_StrBuff . Set StrBuff="" Quit StrBuffer