Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: XLFSTR

XLFSTR.m

Go to the documentation of this file.
  1. XLFSTR ;ISC-SF/STAFF - String Functions ;04/18/12
  1. ;;8.0;KERNEL;**112,120,400,437,598**;Jul 10, 1995;Build 3
  1. ;Per VHA Directive 2004-038, this routine should not be modified
  1. ;
  1. UP(X) Q $TR(X,"abcdefghijklmnopqrstuvwxyz","ABCDEFGHIJKLMNOPQRSTUVWXYZ")
  1. ;
  1. LOW(X) Q $TR(X,"ABCDEFGHIJKLMNOPQRSTUVWXYZ","abcdefghijklmnopqrstuvwxyz")
  1. ;
  1. STRIP(X,Y) Q $TR(X,$G(Y),"")
  1. ;
  1. REPEAT(X,Y) ;
  1. N % Q:'$D(X) "" I $L(X)*$G(Y)>245 Q ""
  1. S %="",$P(%,X,$G(Y)+1)=""
  1. Q %
  1. ;
  1. SPLIT(%SRC,%DLM,%VLIST) ;split a string by delimiter vars in list
  1. ;returns number of vars in list
  1. ;usage - s %=$$split(src,dlm,"d1,d2,d3,..")
  1. N I,V,DV
  1. S DV=$$DVARS(%VLIST),%DLM=$G(%DLM,",")
  1. F I=1:1:$L(%VLIST,DV) S V=$P(%VLIST,DV,I) S:V'="" @V=$P(%SRC,%DLM,I)
  1. Q I
  1. ;
  1. DVARS(LIST) ;return a delimiter for a list of variables
  1. Q $S(%VLIST[$C(9):$C(9),%VLIST[";":";",1:",")
  1. ;
  1. INVERT(X) ;
  1. N %,%1 S %="" F %1=$L(X):-1:1 S %=%_$E(X,%1)
  1. Q %
  1. ;
  1. REPLACE(IN,SPEC) ;See $$REPLACE in MDC minutes.
  1. Q:'$D(IN) "" Q:$D(SPEC)'>9 IN N %1,%2,%3,%4,%5,%6,%7,%8
  1. S %1=$L(IN),%7=$J("",%1),%3="",%6=9999 F S %3=$O(SPEC(%3)) Q:%3="" S %6(%6)=%3,%6=%6-1
  1. F %6=0:0 S %6=$O(%6(%6)) Q:%6'>0 S %3=%6(%6) D:$D(SPEC(%3))#2 RE1
  1. S %8="" F %2=1:1:%1 D RE3
  1. Q %8
  1. ;
  1. RE1 S %4=$L(%3),%5=0 F S %5=$F(IN,%3,%5) Q:%5<1 D RE2
  1. Q
  1. RE2 Q:$E(%7,%5-%4,%5-1)["X" S %8(%5-%4)=SPEC(%3)
  1. F %2=%5-%4:1:%5-1 S %7=$E(%7,1,%2-1)_"X"_$E(%7,%2+1,%1)
  1. Q
  1. RE3 I $E(%7,%2)=" " S %8=%8_$E(IN,%2) Q
  1. S:$D(%8(%2)) %8=%8_%8(%2)
  1. Q
  1. ;
  1. RJ(%,%1,%2) ;Right justify
  1. N %3
  1. S:%1["T" %1=+%1,%=$E(%,1,%1)
  1. S %3=$J("",%1-$L(%)) S:$D(%2) %3=$TR(%3," ",%2)
  1. Q %3_%
  1. ;
  1. LJ(%,%1,%2) ;Left justify
  1. N %3
  1. S:%1["T" %1=+%1,%=$E(%,1,%1)
  1. S %3=$J("",%1-$L(%)) S:$G(%2)]"" %3=$TR(%3," ",%2)
  1. Q %_%3
  1. ;
  1. CJ(%,%1,%2) ;Center Justify
  1. N %3,%4
  1. S:%1["T" %1=+%1,%=$E(%,1,%1) S %3=%1-$L(%) Q:%3<1 %
  1. S %3=%3\2,%4=$J("",%3+1) I $G(%2)]"" S %4=$TR(%4," ",%2)
  1. Q $E(%4,1,%3)_%_$E(%4,1,%1-%3-$L(%))
  1. ;
  1. QUOTE(%) ;Add quotes to value for concatenation
  1. S %(%)=0,%=$Q(%)
  1. Q $P($E(%,1,$L(%)-1),"(",2,999)
  1. ;
  1. TRIM(%X,%F,%V) ;Trim spaces\char from front(left)/back(right) of string
  1. N %R,%L
  1. S %F=$$UP($G(%F,"LR")),%L=1,%R=$L(%X),%V=$G(%V," ")
  1. ;I %F["R" F %R=$L(%X):-1:1 Q:$E(%X,%R)'=%V ;take out BT
  1. I %F["R" F %R=$L(%X):-1:0 Q:$E(%X,%R)'=%V ;598
  1. ;I %F["L" F %L=1:1:$L(%X) Q:$E(%X,%L)'=%V ;take out BT
  1. I %F["L" F %L=1:1:$L(%X)+1 Q:$E(%X,%L)'=%V ;598
  1. I (%L>%R)!(%X=%V) Q ""
  1. Q $E(%X,%L,%R)
  1. ;
  1. SENTENCE(%X) ;
  1. ; Converts a string into proper sentence case (first letter of each sentence
  1. ; upper case, all the others lower case)
  1. ; Example Usage:
  1. ; W $$SENTENCE^XLFSTR("HELLO WORLD!!! THIS IS A CAPITALIZED SENTENCE. (this isn't.)")
  1. ; produces
  1. ; Hello world!!! This is a capitalized sentence. This isn't.
  1. ;
  1. ; %S = string during conversion
  1. ; %P = state flag (1 = next letter should be caps)
  1. ; I = iteration index
  1. ; C = current character
  1. ;
  1. N %I,%C,%S,%P
  1. S %S=$$LOW(%X),%P=1
  1. F %I=1:1:$L(%X) D
  1. . S %C=$E(%S,%I)
  1. . I %P,%C?1L S $E(%S,%I)=$$UP(%C),%P=0
  1. . S:".!?"[%C %P=1
  1. Q %S
  1. ;
  1. TITLE(%X) ;
  1. ; Converts a string into TITLE CASE format (first letter of each word is uppercase)
  1. ; Example Usage:
  1. ; W $$TITLE^XLFSTR("THIS IS CAPITALIZED. (this isn't.)")
  1. ; produces
  1. ; This Is Capitalized. This Isn't.
  1. ;
  1. ; %S = string during conversion
  1. ; %P = state flag
  1. ; %I = iteration index
  1. ; %C = current character
  1. ;
  1. N %I,%C,%S,%P
  1. S %S=$$LOW(%X),%P=1
  1. F %I=1:1:$L(%S) D
  1. . S %C=$E(%S,%I)
  1. . I %P,%C?1L S $E(%S,%I)=$$UP(%C),%P=0
  1. . S:%C=" " %P=1
  1. . Q
  1. Q %S