| 1 | LEXILGP ; ISL Save/Restore Pointers                ; 09-23-96
 | 
|---|
| 2 |  ;;2.0;LEXICON UTILITY;;Sep 23, 1996;Build 1
 | 
|---|
| 3 |  Q
 | 
|---|
| 4 | SP ; Save "Pointed to by"
 | 
|---|
| 5 |  N LEXQ,LEXC S LEXQ="^DD(757.01,0,""PT"")",LEXC="^DD(757.01,0,""PT""," F  S LEXQ=$Q(@LEXQ) Q:LEXQ'[LEXC  S ^TMP("LEXPT",757.01,LEXQ)=""
 | 
|---|
| 6 |  Q
 | 
|---|
| 7 | ST ; Set "Pointed to by"
 | 
|---|
| 8 |  N LEXPT S LEXPT="" F  S LEXPT=$O(^TMP("LEXPT",757.01,LEXPT)) Q:LEXPT=""  S @LEXPT=""
 | 
|---|
| 9 |  K ^TMP("LEXPT",757.01)
 | 
|---|
| 10 |  Q
 | 
|---|
| 11 | PL ; Point to LEX
 | 
|---|
| 12 |  D:'$D(^TMP("LEXPT",757.01)) SP D:$D(^TMP("LEXPT",757.01)) ST N LEXFI,LEXNAM,LEXQ,LEXC,LEXD S LEXFI=""
 | 
|---|
| 13 |  F  S LEXFI=$O(^DD(757.01,0,"PT",LEXFI)) Q:+LEXFI=0  D
 | 
|---|
| 14 |  . I '$D(^DD(LEXFI)) K ^DD(757.01,0,"PT",LEXFI) Q
 | 
|---|
| 15 |  . Q:$E(LEXFI,1,3)["757"  S LEXNAM=$$NM(LEXFI),LEXQ="^DD("_LEXFI_")",LEXC="^DD("_LEXFI_","
 | 
|---|
| 16 |  . W:$L($G(LEXNAM)) !,?4,LEXNAM F  S LEXQ=$Q(@LEXQ) Q:LEXQ'[LEXC  D
 | 
|---|
| 17 |  . . S LEXD=@LEXQ Q:LEXD'["GMP(757.01"&(LEXD'["^GMP^")
 | 
|---|
| 18 |  . . S:LEXD["GMP(757.01" LEXD=$$SW("GMP(757.01","LEX(757.01",LEXD)
 | 
|---|
| 19 |  . . S:LEXD["^GMP^" LEXD=$$SW("^GMP^","^LEX^",LEXD) S @LEXQ=LEXD
 | 
|---|
| 20 |  S LEXFI=0 F  S LEXFI=$O(^DD(757.01,0,"PT",LEXFI)) Q:+LEXFI=0  D
 | 
|---|
| 21 |  . Q:$E(LEXFI,1,3)="757"  K:'$D(^DD(LEXFI)) ^DD(757.01,0,"PT",LEXFI)
 | 
|---|
| 22 |  Q
 | 
|---|
| 23 | PG ; Point to GMP
 | 
|---|
| 24 |  D:'$D(^TMP("LEXPT",757.01)) SP D:$D(^TMP("LEXPT",757.01)) ST N LEXFI,LEXNAM,LEXQ,LEXC,LEXD S LEXFI=""
 | 
|---|
| 25 |  F  S LEXFI=$O(^DD(757.01,0,"PT",LEXFI)) Q:+LEXFI=0  D
 | 
|---|
| 26 |  . I '$D(^DD(LEXFI)) K ^DD(757.01,0,"PT",LEXFI) Q
 | 
|---|
| 27 |  . Q:$E(LEXFI,1,3)["757"  S LEXNAM=$$NM(LEXFI),LEXQ="^DD("_LEXFI_")",LEXC="^DD("_LEXFI_","
 | 
|---|
| 28 |  . W:$L($G(LEXNAM)) !,?4,LEXNAM F  S LEXQ=$Q(@LEXQ) Q:LEXQ'[LEXC  D
 | 
|---|
| 29 |  . . S LEXD=@LEXQ Q:LEXD'["LEX(757.01"&(LEXD'["^LEX^")
 | 
|---|
| 30 |  . . S:LEXD["LEX(757.01" LEXD=$$SW("LEX(757.01","GMP(757.01",LEXD)
 | 
|---|
| 31 |  . . S:LEXD["^LEX^" LEXD=$$SW("^LEX^","^GMP^",LEXD) S @LEXQ=LEXD
 | 
|---|
| 32 |  S LEXFI=0 F  S LEXFI=$O(^DD(757.01,0,"PT",LEXFI)) Q:+LEXFI=0  D
 | 
|---|
| 33 |  . Q:$E(LEXFI,1,3)="757"  K:'$D(^DD(LEXFI)) ^DD(757.01,0,"PT",LEXFI)
 | 
|---|
| 34 |  Q
 | 
|---|
| 35 | DP ; Delete pointers in temporary storage - ^TMP("LEXPT")
 | 
|---|
| 36 |  K ^TMP("LEXPT",757.01) Q
 | 
|---|
| 37 | SW(LEXF,LEXT,LEXS) ;
 | 
|---|
| 38 |  Q:'$L($G(LEXF)) "" Q:'$L($G(LEXT)) "" Q:'$L($G(LEXS)) ""
 | 
|---|
| 39 |  F  Q:LEXS'[LEXF  S LEXS=$P(LEXS,LEXF,1)_LEXT_$P(LEXS,LEXF,2)
 | 
|---|
| 40 |  Q LEXS
 | 
|---|
| 41 | NM(X) S X=+($G(X)) Q:X=0 "" Q:'$D(^DD(X,0,"NM")) "" Q $O(^DD(X,0,"NM",""))
 | 
|---|
| 42 | RT(X) ; Get RT
 | 
|---|
| 43 |  S:'$D(U) U="^" S X=$C(68),X=U_X_X_$C(40) Q X
 | 
|---|