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

LEXPRNT.m

Go to the documentation of this file.
  1. LEXPRNT ;ISL/KER - Print Utilities for the Lexicon ;04/21/2014
  1. ;;2.0;LEXICON UTILITY;**80**;Sep 23, 1996;Build 1
  1. ;
  1. ; Global Variables
  1. ; ^TMP("XTLKHITS") SACC 2.3.2.5.1
  1. ;
  1. ; External References
  1. ; None
  1. ;
  1. XTLK ; XTLK Display format for MTLU
  1. ; Uses XTLKH, XTLKMULT, XTLKREF0, LEXSHOW
  1. N LEXIFN,LEXEXP,LEXCODE,LEXSOID
  1. S LEXIFN=0,LEXEXP=-1 S:'$D(LEXSHOW) LEXSHOW=""
  1. S:'$D(LEXSUB) LEXSUB="WRD"
  1. S (LEXEXP,LEXIFN)=+($P(XTLKREF0,",",2)) G:+LEXIFN'>0 XTQ
  1. D:XTLKMULT MULTI
  1. D:'XTLKMULT ONE
  1. XTQ K LEXCODE,LEXSOID,LEXIFN,LEXEXP
  1. Q
  1. MULTI ; Multiple entries on the selection list
  1. N LEXNUM,LEXSTR,LEXDP,LEXCCS,LEXL,LEXP
  1. S LEXNUM=XTLKH,(LEXSTR,LEXDP,LEXCCS)="",LEXL=70,LEXP=7
  1. D COMMON
  1. W:LEXNUM>1 ! W:LEXNUM>1&(LEXNUM#5=1) !
  1. W $J(LEXNUM,4),":" W:$L(LEXSTR)<(LEXL+1) ?LEXP,LEXSTR
  1. D:$L(LEXSTR)>LEXL LONG
  1. W:LEXNUM#5=0&(+($G(LEXHLPF))=0) !
  1. W:LEXNUM#5'=0&(LEXNUM=+($G(^TMP("XTLKHITS",$J))))&(+($G(LEXHLPF))=0) !
  1. Q
  1. ONE ; One entry on the selection list
  1. N LEXSTR,LEXDP,LEXCCS,LEXL,LEXP
  1. S (LEXSTR,LEXDP,LEXCCS)="",LEXL=75,LEXP=2
  1. D COMMON
  1. W:$L(LEXSTR)<(LEXL+1) ?LEXP,LEXSTR
  1. D:$L(LEXSTR)>LEXL LONG
  1. Q
  1. COMMON ; Parse LEXSHOW for both MULTI and ONE
  1. S:LEXSUB="WRD" LEXSTR=^LEX(757.01,LEXEXP,0)
  1. S:LEXSUB'="WRD" LEXSTR=^LEX(757.01,+(@(DIC_LEXEXP_",0)")),0)
  1. S LEXDP=$S($D(^LEX(757.01,$S(LEXSUB="WRD":LEXEXP,1:+(@(DIC_LEXEXP_",0)"))),3)):" *",1:"")
  1. I LEXSUB'="WRD" S LEXEXP=+(@(DIC_LEXEXP_",0)"))
  1. I $D(LEXSHOW),LEXSHOW'="" F LEXSOID=1:1:$L(LEXSHOW,"/") D
  1. . S LEXCODE=$P(LEXSHOW,"/",LEXSOID) N @LEXCODE S @LEXCODE=""
  1. . S @LEXCODE=$S(LEXSUB="WRD":$$CODE(LEXIFN,LEXCODE),1:$$CODE(LEXEXP,LEXCODE))
  1. . I @LEXCODE'="" S LEXCCS=LEXCCS_" ("_@LEXCODE_")"
  1. S LEXSTR=LEXSTR_LEXDP_LEXCCS
  1. Q
  1. LONG ; Handle a long string
  1. N LEXOK,LEXCHR,LEXPSN,LEXSTO,LEXREM,LEXLNN,LEXOLD S LEXLNN=0,LEXOLD=LEXSTR
  1. F Q:$L(LEXSTR)<(LEXL+1) D PARSE Q:$L(LEXSTR)<(LEXL+1)
  1. S LEXLNN=LEXLNN+1
  1. W:LEXLNN>1 ! W ?LEXP,LEXSTR
  1. Q
  1. PARSE ; Parse a long string into screen length strings
  1. S LEXOK=0,LEXCHR=""
  1. F LEXPSN=LEXL:-1:0 Q:+LEXOK=1 D Q:+LEXOK=1
  1. . I $E(LEXSTR,LEXPSN)=" " S LEXCHR=" ",LEXOK=1 Q
  1. . I $E(LEXSTR,LEXPSN)="," S LEXCHR=",",LEXOK=1 Q
  1. . I $E(LEXSTR,LEXPSN)="/" S LEXCHR="/",LEXOK=1 Q
  1. . I $E(LEXSTR,LEXPSN)="-" S LEXCHR="-",LEXOK=1 Q
  1. I LEXCHR=" " S LEXSTO=$E(LEXSTR,1,LEXPSN-1),LEXREM=$E(LEXSTR,LEXPSN+1,$L(LEXSTR))
  1. I LEXCHR="," S LEXSTO=$E(LEXSTR,1,LEXPSN),LEXREM=$E(LEXSTR,(LEXPSN+1),$L(LEXSTR)) S:$E(LEXREM,1)=" " LEXREM=$E(LEXREM,2,$L(LEXREM))
  1. I LEXCHR="/" S LEXSTO=$E(LEXSTR,1,LEXPSN),LEXREM=$E(LEXSTR,(LEXPSN+1),$L(LEXSTR)) S:$E(LEXREM,1)=" " LEXREM=$E(LEXREM,2,$L(LEXREM))
  1. I LEXCHR="-" S LEXSTO=$E(LEXSTR,1,LEXPSN),LEXREM=$E(LEXSTR,(LEXPSN+1),$L(LEXSTR)) S:$E(LEXREM,1)=" " LEXREM=$E(LEXREM,2,$L(LEXREM))
  1. S LEXSTR=LEXREM
  1. S LEXLNN=LEXLNN+1
  1. W:LEXLNN>1 ! W ?LEXP,LEXSTO
  1. Q
  1. CODE(LEXEX,LEXSO) ; Returns codes (defined in XTLK^LEXPRNT) for a Term
  1. N LEXMC,LEXCREC,LEXI,LEXCID S (LEXI,LEXCID)="",LEXCREC=0
  1. I '$D(^LEX(757.01,LEXEX)) Q LEXCID
  1. S LEXMC=$P(^LEX(757.01,LEXEX,1),U,1)
  1. I LEXSUB="WRD" D
  1. . F S LEXCREC=$O(^LEX(757.02,"AMC",LEXMC,LEXCREC)) Q:+LEXCREC=0 D
  1. . . I $D(^LEX(757.02,"ASRC",LEXSO,LEXCREC)) D
  1. . . . S LEXI=$P(^LEX(757.02,LEXCREC,0),U,2)
  1. . . . I LEXI'="NOCODE",LEXI'?1"U"2"0"4N,LEXCID'[LEXI D
  1. . . . . S LEXCID=LEXCID_"/"_LEXI
  1. I LEXSUB'="WRD" D
  1. . F S LEXCREC=$O(^LEX(757.02,"B",LEXEX,LEXCREC)) Q:+LEXCREC=0 D
  1. . . I $D(^LEX(757.02,"ASRC",LEXSO,LEXCREC)) S LEXI=$P(^LEX(757.02,LEXCREC,0),U,2) I LEXI'="NOCODE",LEXI'?1"U"2"0"4N,LEXCID'[LEXI S LEXCID=LEXCID_"/"_LEXI
  1. S:LEXCID'="" LEXCID=LEXSO_" "_$E(LEXCID,2,999)
  1. K LEXCREC,LEXMC,LEXI
  1. S LEXEX=LEXCID Q LEXEX