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
|
---|