| [613] | 1 | LEXDDT2 ; ISL Display Defaults - Concatenate Text  ; 09-23-96 | 
|---|
|  | 2 | ;;2.0;LEXICON UTILITY;;Sep 23, 1996;Build 1 | 
|---|
|  | 3 | ; | 
|---|
|  | 4 | CONCAT ; Concatenation of Data Elements | 
|---|
|  | 5 | N LEXTI,LEXTL,LEXTP | 
|---|
|  | 6 | PHRASE ; Get Phrase and Parse into Words | 
|---|
|  | 7 | I $D(LEX(LEXT,"H")) S LEXTP=LEX(LEXT,"H"),LEXTI=0 D WORD | 
|---|
|  | 8 | F LEXTI=1:1:LEX(LEXT,0) D | 
|---|
|  | 9 | . S LEXTP=LEX(LEXT,LEXTI) | 
|---|
|  | 10 | . S:LEXTP["/" LEXTP=$P(LEXTP,"/",1)_" or "_$P(LEXTP,"/",2),LEXTP=$$TRIM(LEXTP) | 
|---|
|  | 11 | . I LEXTI=LEX(LEXT,0),LEX(LEXT,0)>1 D | 
|---|
|  | 12 | . . S LEXTP="and "_LEXTP_"." | 
|---|
|  | 13 | . . S:$E(LEXTSTR,$L(LEXTSTR))["," LEXTSTR=$E(LEXTSTR,1,($L(LEXTSTR)-1)) | 
|---|
|  | 14 | . I LEXTI=LEX(LEXT,0),LEX(LEXT,0)'>1 D | 
|---|
|  | 15 | . . S LEXTP=LEXTP_"." | 
|---|
|  | 16 | . . S:$E(LEXTSTR,$L(LEXTSTR))["," LEXTSTR=$E(LEXTSTR,1,($L(LEXTSTR)-1)) | 
|---|
|  | 17 | . D WORD I $L(LEXTSTR)>LEXSTLN D SET S LEXTSTR="" | 
|---|
|  | 18 | I $D(LEX(LEXT,"T")) D | 
|---|
|  | 19 | . F  Q:$E(LEXTSTR,$L(LEXTSTR))'?1P  S LEXTSTR=$E(LEXTSTR,1,($L(LEXTSTR)-1)) Q:$E(LEXTSTR,$L(LEXTSTR))'?1P | 
|---|
|  | 20 | . S LEXTP=LEX(LEXT,"T"),LEXTI=0 D WORD | 
|---|
|  | 21 | S LEXTSTR=$$TRIM(LEXTSTR) | 
|---|
|  | 22 | Q | 
|---|
|  | 23 | WORD ; Concatenate Word | 
|---|
|  | 24 | N LEXTW,LEXTD F LEXTD=1:1:$L(LEXTP," ") D | 
|---|
|  | 25 | . S LEXTW=$P(LEXTP," ",LEXTD),LEXTW=$$TRIM(LEXTW) | 
|---|
|  | 26 | . I LEXTD=$L(LEXTP," "),LEXTI>0 S LEXTW=LEXTW_"," | 
|---|
|  | 27 | . I ($L(LEXTSTR)+$L(LEXTW)+1)'>LEXSTLN D  Q | 
|---|
|  | 28 | . . S LEXTSTR=LEXTSTR_" "_LEXTW | 
|---|
|  | 29 | . I ($L(LEXTSTR)+$L(LEXTW)+1)>LEXSTLN D | 
|---|
|  | 30 | . . D SET S LEXTSTR=LEXTW | 
|---|
|  | 31 | Q | 
|---|
|  | 32 | EOC ; End of Concatenation | 
|---|
|  | 33 | F  Q:$E(LEXTSTR,$L(LEXTSTR))'=","  S LEXTSTR=$E(LEXTSTR,1,($L(LEXTSTR)-1)) Q:$E(LEXTSTR,$L(LEXTSTR))'="," | 
|---|
|  | 34 | D SET | 
|---|
|  | 35 | Q | 
|---|
|  | 36 | SET ; Set Array Node | 
|---|
|  | 37 | S LEXTCTR=LEXTCTR+1 S LEX(LEXTCTR)=$$TRIM(LEXTSTR),LEX(0)=LEXTCTR | 
|---|
|  | 38 | Q | 
|---|
|  | 39 | TRIM(X) ; Remove Spaces | 
|---|
|  | 40 | F  Q:$E(X,$L(X))'=" "  S X=$E(X,1,($L(X)-1)) Q:$E(X,$L(X))'=" " | 
|---|
|  | 41 | F  Q:$E(X,1)'=" "  S X=$E(X,2,$L(X)) Q:$E(X,1)'=" " | 
|---|
|  | 42 | Q X | 
|---|