vhLib ;Routine library 1 [ 12/16/2003 2:12 PM ] REPLACE5(String,F1,T1,F2,T2,F3,T3,F4,T4,F5,T5) New I,P For I=1:1:5 Quit:'$D(@("F"_I)) Do .Set P=1 .For Set P=$F(String,@("F"_I),P) Quit:'P Do ..Set $E(String,P-$L(@("F"_I)),P-1)=@("T"_I) ..Set P=P-$L(@("F"_I))+$L(@("T"_I)) Quit String ; Vervangen of verwijderen van een substring in een string ; Indien From gedefinieerd is dan wordt pas na de From-de occurence van de substring F de string vervangen ; Indien Cnt is ingevuld dan worden er slecht Cnt vervangingen uitgevoerd REPLACE(String,F,T,From,Cnt) New P,I Set P=1 For I=1:1:$G(From) Set P=$F(String,F,P) Quit:'P Quit:'P Set:'$G(Cnt) Cnt=9999 For Quit:'Cnt Set P=$F(String,F,P) Quit:'P Do .Set $E(String,P-$L(F),P-1)=T .Set P=P-$L(F)+$L(T) .Set Cnt=Cnt-1 Quit String ; Extractie van de keywords uit een string ; Return : Keywords gescheiden door "\" KEYLIST(String,BBExcl) New S,R,I Set:'$D(BBExcl) BBExcl="EXCLKEY" Set S="",String=$$UPTRIMA(String) For I=1:1:$L(String," ") S R=$P(String," ",I) If $L(R)>2,'$D(^BB("D",BBExcl,R)) Set S=S_"\"_R Quit $P(S,"\",2,99) ;Omzetten van de karakters naar UpperCase UPCASE(String) Quit $TR(String,"azertyuiopqsdfghjklmwxcvbnéàèçë","AZERTYUIOPQSDFGHJKLMWXCVBNEAECE") ;Omzetten van de karakters naar LowerCase LOCASE(String) Quit $TR(String,"AZERTYUIOPQSDFGHJKLMWXCVBN","azertyuiopqsdfghjklmwxcvbn") ; De eerste letters van een woord behouden ; De volgende letters van een woord in lowercase zetten ; Woorden worden gescheiden door een leesteken zoals : Blanko, Komma,Punt,Dubbel punt, Punt-Komma, Slash, Uitroepteken, Vraagteken, Koppelteken. INITCAP(S) New N,R,U ; Set U=1 For N=1:1:$L(S) Do .Set $E(S,N)=$S(U:$E(S,N),1:$TR($E(S,N),"AZERTYUIOPQSDFGHJKLMWXCVBN","azertyuiopqsdfghjklmwxcvbn")) .Set U=0 S:" . /:\?!,-"[$E(S,N) U=1 Quit S ;Omzetten naar UpperCase en trimmen van niet ALPHA/SPATIE karakters UPTRIMA(String) Set String=$$UPCASE(String) Quit:String?1.U String New S,I Set S="" For I=1:1:$L(String) Set:$E(String,I)?1U!($E(String,I)=" ") S=S_$E(String,I) Quit S ;Omzetten naar UpperCase en trimmen van niet ALPHA/NUMERIEKE karakters UPTRIMAN(String) Set String=$$UPCASE(String) Quit:String?.U String New S,I Set S="" For I=1:1:$L(String) Set:$E(String,I)?1U!($E(String,I)?1N) S=S_$E(String,I) Quit S ;Extractie van de numerieke karakters TRIMN(String) Quit:String?.N String New S,I Set S="" For I=1:1:$L(String) Set:$E(String,I)?1N S=S_$E(String,I) Quit S #define UCase(%v) $ZCVT(%v,"U") ;Identnummer trimmen tot numeriek + 1e char mag een letter zijn. ;Is gewoon een uitbreiding op TRIMN() . Een meer specifieke implementatie is ook mogelijk. TRIMIDENT(String) ; [IDENT] Added by WimV on 11/02/2011 New S,I Set S="" Set:($E(String,1)?1AN) S=S_$$$UCase($E(String,1)) Set S=S_$$TRIMN($E(String,2,99)) Quit S ;Extractie van de initialen INITIAL(String) New S,I Set String=$$UPTRIMA(String),S="" For I=1:1:$L(String," ") Set S=S_$E($P(String," ",I),1) Quit S ;Lijst verwerking ;Verwijderen van een waarde uit een lijst REMLIST(List,Ref,Delim) Quit:List'[Ref List S:'$D(Delim) Delim=";" New J For J=1:1:$L(List,Delim)+1 Quit:$P(List,Delim,J)=Ref Quit $P(List,Delim,1,J-1)_$S($P(List,Delim,J+1,999)'=""&($P(List,Delim,1,J-1)'=""):Delim,1:"")_$P(List,Delim,J+1,999) ; Verwijderen van een local of global Ref met verschillende sleutel waarden uit list KILL(Ref,List) New X,Y Quit:'$L(List) Set List=$TR(List,"\",";") For Y=1:1:$L(List,";") Set X=$P(List,";",Y) Kill @Ref Quit ; Invullen van de local of global definitie Ref met verschillende sleutelwaarden uit list SET(Ref,List,Val) New X,Y Set:'$D(Val) Val="""""" Quit:'$L(List) Set List=$TR(List,"\",";") For Y=1:1:$L(List,";") Set X=$P(List,";",Y) X "Set "_Ref_"="_Val Quit