| 1 | LEXAS6 ; ISL Look-up Check Input (TRIM,EXP,TP,SCH); 09-23-96
 | 
|---|
| 2 |  ;;2.0;LEXICON UTILITY;;Sep 23, 1996;Build 1
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 | TRIM(LEXX) ; Trim string
 | 
|---|
| 5 |  ;
 | 
|---|
| 6 |  ; LEXOK   Flag - string is OK
 | 
|---|
| 7 |  ; LEXF    Frequency
 | 
|---|
| 8 |  ; LEXI    Incremental counter
 | 
|---|
| 9 |  ; LEXT    Temporary string
 | 
|---|
| 10 |  ; LEXX    Return string
 | 
|---|
| 11 |  ;
 | 
|---|
| 12 |  N LEXI,LEXOK,LEXT,LEXF S LEXF=1,LEXOK=0,LEXT=LEXX
 | 
|---|
| 13 |  F  Q:$E(LEXX,1)'=" "  S LEXX=$E(LEXX,2,$L(LEXX))
 | 
|---|
| 14 |  F LEXI=$L(LEXX):-1:1 Q:LEXOK  D  Q:LEXOK
 | 
|---|
| 15 |  . S LEXT=$E(LEXT,1,($L(LEXT)-1))
 | 
|---|
| 16 |  . I $L(LEXT)<3 S LEXOK=1 Q
 | 
|---|
| 17 |  . I $D(^LEX(757.01,"ASL",LEXT)) S LEXF=$O(^LEX(757.01,"ASL",LEXT,0)) I +(LEXF)>1 S LEXOK=1
 | 
|---|
| 18 |  S LEXX=LEXT
 | 
|---|
| 19 |  Q LEXX
 | 
|---|
| 20 |  ;
 | 
|---|
| 21 | EXP3(LEXX) ; Expand string up to 3 characters
 | 
|---|
| 22 |  N LEXT S LEXT=LEXX
 | 
|---|
| 23 |  S LEXT=$$EXP(LEXT)
 | 
|---|
| 24 |  I $L(LEXT)-$L(LEXX)'>3 S LEXX=LEXT
 | 
|---|
| 25 |  Q LEXX
 | 
|---|
| 26 | EXP(LEXX) ; Expand string
 | 
|---|
| 27 |  ;
 | 
|---|
| 28 |  ; LEXF    String found
 | 
|---|
| 29 |  ; LEXC    Control string
 | 
|---|
| 30 |  ; LEXCK   Check for string
 | 
|---|
| 31 |  ; LEXI    Character position
 | 
|---|
| 32 |  ; LEXLTR  Letter at character position
 | 
|---|
| 33 |  ; LEXNT   Altered tolken
 | 
|---|
| 34 |  ; LEXOK   Flag - 1 quit 0 keep checking
 | 
|---|
| 35 |  ; LEXOKL  Flag - 1 add letter 0 do not add letter
 | 
|---|
| 36 |  ; LEXX    Return expanded string
 | 
|---|
| 37 |  ;
 | 
|---|
| 38 |  Q:$D(^LEX(757.01,"AWRD",LEXX)) LEXX
 | 
|---|
| 39 |  N LEXF,LEXC,LEXCK,LEXI,LEXLTR,LEXNT,LEXOK,LEXOKL
 | 
|---|
| 40 |  S (LEXF,LEXC)=LEXX,LEXOK=0
 | 
|---|
| 41 |  S LEXNT=$O(^LEX(757.01,"ASL",$$SCH(LEXF)))
 | 
|---|
| 42 |  F LEXI=1:1:63 Q:LEXOK  D  Q:LEXOK!(LEXNT'[LEXC)
 | 
|---|
| 43 |  . Q:LEXI'>$L(LEXC)
 | 
|---|
| 44 |  . S LEXNT=$O(^LEX(757.01,"ASL",LEXNT)) Q:LEXNT=LEXF
 | 
|---|
| 45 |  . S LEXLTR=$E(LEXNT,LEXI) Q:LEXLTR=""
 | 
|---|
| 46 |  . S LEXOKL=1,LEXCK=$$SCH(LEXNT)
 | 
|---|
| 47 |  . F  S LEXCK=$O(^LEX(757.01,"ASL",LEXCK)) Q:LEXCK=""!('LEXOKL)  D
 | 
|---|
| 48 |  . . I $E(LEXCK,LEXI)'="",$E(LEXCK,LEXI)'=LEXLTR S LEXOKL=0 Q
 | 
|---|
| 49 |  . . I LEXCK'[LEXC,$E(LEXCK,LEXI)'=LEXLTR S LEXCK="ZZZZ" Q
 | 
|---|
| 50 |  . S:LEXOKL LEXF=LEXF_LEXLTR S:'LEXOKL LEXOK=1
 | 
|---|
| 51 |  . S:$D(^LEX(757.01,"AWRD",LEXF)) LEXOK=1
 | 
|---|
| 52 |  S LEXX=LEXF Q LEXX
 | 
|---|
| 53 |  ;
 | 
|---|
| 54 | TP(LEXX) ; Transposed letters
 | 
|---|
| 55 |  ;
 | 
|---|
| 56 |  ; LEXF    Tolken found
 | 
|---|
| 57 |  ; LEXO    Original tolken
 | 
|---|
| 58 |  ; LEXN    Concatenated tolken
 | 
|---|
| 59 |  ; LEXT    Temporary tolken
 | 
|---|
| 60 |  ; LEXI    Character position
 | 
|---|
| 61 |  ; LEXX    Return string
 | 
|---|
| 62 |  ;
 | 
|---|
| 63 |  N LEXO,LEXN,LEXI,LEXF,LEXT S (LEXF,LEXN)="",LEXO=LEXX
 | 
|---|
| 64 |  F LEXI=2:1:$L(LEXX) Q:LEXF'=""  D  Q:LEXF'=""
 | 
|---|
| 65 |  . S LEXN=$E(LEXX,1,(LEXI-1))_$E(LEXX,(LEXI+1))_$E(LEXX,LEXI)_$E(LEXX,(LEXI+2),$L(LEXX))
 | 
|---|
| 66 |  . I $D(^LEX(757.01,"ASL",LEXN)) S LEXF=LEXN
 | 
|---|
| 67 |  . S LEXT=$$ONE^LEXAS2(LEXN)
 | 
|---|
| 68 |  . I $L(LEXT)=$L(LEXN),$D(^LEX(757.01,"ASL",LEXT)) S LEXF=LEXT
 | 
|---|
| 69 |  S:LEXF'="" LEXX=LEXF
 | 
|---|
| 70 |  S:LEXF="" LEXX=LEXO
 | 
|---|
| 71 |  Q LEXX
 | 
|---|
| 72 | SCH(LEXX) ; Create $O variable
 | 
|---|
| 73 |  ;
 | 
|---|
| 74 |  ; LEXX    Return $O variable
 | 
|---|
| 75 |  ;
 | 
|---|
| 76 |  S LEXX=$E(LEXX,1,($L(LEXX)-1))_$C($A($E(LEXX,$L(LEXX)))-1)_"~"
 | 
|---|
| 77 |  Q LEXX
 | 
|---|