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

SDRRSLC1.m

Go to the documentation of this file.
  1. SDRRSLC1 ;10N20/MAH;-Generic Recall Reminder file entry selector ;12/16/2002 14:21
  1. ;;5.3;Scheduling;**536**;Aug 13, 1993;Build 53
  1. ;
  1. RANGE(SDRRDX,SDRRDDIC,SDRRDUTIL,SDRRDFLD,SDRRDDSEL,SDRRDNUM) ;
  1. N %DT,SDRRD,SDRRD0,SDRRDALL,SDRRDDATE,SDRRDDONE,SDRRDFL01,SDRRDFNAM,SDRRDFNUM
  1. N SDRRDFSCR,SDRRDLAST,SDRRDLINE,SDRRDPATT,SDRRDQUIT,SDRRDVALU,SDRRDXBEG
  1. N SDRRDXEND,SDRRDXREF,SDRRDXX,D0,DA,DIC
  1. D FILEATTR^SDRRSLCT(SDRRDDIC,SDRRDDIC(0),.SDRRDFNUM,.SDRRDFNAM,.SDRRDFL01,.SDRRDFSCR)
  1. S SDRRDXBEG=$P(SDRRDX,"-")
  1. S SDRRDXEND=$P(SDRRDX,"-",2)
  1. S (SDRRDDONE,SDRRDQUIT)=0
  1. I SDRRDXEND']]SDRRDXBEG Q SDRRDQUIT
  1. S SDRRDPATT=$$PATTERN(SDRRDX)
  1. S SDRRDDATE=$S($$CHFLD^SDRRSLCT(SDRRDFNUM)["D":1,1:0)
  1. I SDRRDDATE D Q:SDRRDDONE SDRRDQUIT
  1. . S X=SDRRDXBEG,%DT="ST" D ^%DT S SDRRDXBEG=Y
  1. . S X=SDRRDXEND,%DT="ST" D ^%DT S SDRRDXEND=Y
  1. . I (SDRRDXBEG'>0)!(SDRRDXEND'>0) S SDRRDDONE=1
  1. . Q
  1. S SDRRD=$$ASK(SDRRDX,.SDRRDDIC,SDRRDFNAM,SDRRDFL01,"RANGE")
  1. S SDRRDALL=$P(SDRRD,U),SDRRDQUIT=$P(SDRRD,U,2)
  1. I SDRRDQUIT!'SDRRDALL W:'SDRRDQUIT !!,SDRRDX Q SDRRDQUIT
  1. S SDRRDXREF="""B"""
  1. I +SDRRDFNUM=80 D ; Kludge!
  1. . S SDRRDXREF="""BA"""
  1. . S SDRRDXBEG=SDRRDXBEG_" "
  1. . S SDRRDXEND=SDRRDXEND_" "
  1. . Q
  1. I SDRRDDATE D
  1. . S SDRRDXX=SDRRDXBEG-.0000001
  1. . S SDRRDXEND=$S(SDRRDXEND'[".":SDRRDXEND+.24,1:SDRRDXEND)
  1. . Q
  1. E D
  1. . S SDRRDLAST=$E(SDRRDXBEG,$L(SDRRDXBEG))
  1. . S SDRRDLAST=$C($A(SDRRDLAST)-1)_"~"
  1. . S SDRRDXX=$E(SDRRDXBEG,1,$L(SDRRDXBEG)-1)_SDRRDLAST
  1. . Q
  1. S SDRRDNUM("B4")=SDRRDNUM
  1. F S SDRRDXX=$O(@(SDRRDDIC_SDRRDXREF_",SDRRDXX)")) Q:(SDRRDXX="")!(SDRRDXX]]SDRRDXEND) D
  1. . S SDRRD0=0
  1. . F S SDRRD0=$O(@(SDRRDDIC_SDRRDXREF_",SDRRDXX,SDRRD0)")) Q:SDRRD0'>0 D
  1. .. D DATALOOP
  1. .. Q
  1. . Q
  1. I SDRRDNUM=SDRRDNUM("B4")&'SDRRDDSEL D
  1. . S SDRRD="No "_SDRRDFNAM_" "_SDRRDFL01_$$PLURAL^SDRRSLCT(SDRRDFL01)
  1. . S SDRRD=SDRRD_" found in the range '"_SDRRDX_"'."
  1. . D WRAP^SDRRSLCT(SDRRD,.SDRRDLINE)
  1. . W !
  1. . S SDRRD=0
  1. . F S SDRRD=$O(SDRRDLINE(SDRRD)) Q:SDRRD'>0 W !,SDRRDLINE(SDRRD)
  1. . W $C(7)
  1. . Q
  1. Q -1
  1. ;
  1. ALL(SDRRDX,SDRRDDIC,SDRRDUTIL,SDRRDFLD,SDRRDDSEL,SDRRDNUM) ;
  1. N %DT,SDRRD,SDRRD0,SDRRDALL,SDRRDDATE,SDRRDDONE,SDRRDFL01,SDRRDFNAM,SDRRDFNUM
  1. N SDRRDFSCR,SDRRDLINE,SDRRDPATT,SDRRDQUIT,SDRRDVALU,CHAR,D0,DA,DIR,DIROUT
  1. N DIRUT,DO,DTOUT,DUOUT,I,TEMP,X,Y
  1. D FILEATTR^SDRRSLCT(SDRRDDIC,SDRRDDIC(0),.SDRRDFNUM,.SDRRDFNAM,.SDRRDFL01,.SDRRDFSCR)
  1. S (SDRRDDONE,SDRRDQUIT)=0
  1. S SDRRD=$$ASK(SDRRDX,.SDRRDDIC,SDRRDFNAM,SDRRDFL01,"PATTERN")
  1. S SDRRDALL=$P(SDRRD,U),SDRRDQUIT=$P(SDRRD,U,2)
  1. I SDRRDQUIT!'SDRRDALL W:'SDRRDQUIT !!,SDRRDX Q SDRRDQUIT
  1. S SDRRDPATT=$$PATTERN(SDRRDX)
  1. S SDRRDDATE=$S($$CHFLD^SDRRSLCT(SDRRDFNUM)["D":1,1:0)
  1. S SDRRDNUM("B4")=SDRRDNUM
  1. S SDRRD0=0
  1. F S SDRRD0=$O(@(SDRRDDIC_"SDRRD0)")) Q:SDRRD0'>0 D
  1. . D DATALOOP
  1. . Q
  1. I SDRRDNUM=SDRRDNUM("B4")&'SDRRDDSEL D
  1. . S SDRRD="No "_SDRRDFNAM_" "_SDRRDFL01_$$PLURAL^SDRRSLCT(SDRRDFL01)
  1. . S SDRRD=SDRRD_" found matching '"_SDRRDX_"'."
  1. . D WRAP^SDRRSLCT(SDRRD,.SDRRDLINE)
  1. . W !
  1. . S SDRRD=0
  1. . F S SDRRD=$O(SDRRDLINE(SDRRD)) Q:SDRRD'>0 W !,SDRRDLINE(SDRRD)
  1. . W $C(7)
  1. . Q
  1. Q -1
  1. ;
  1. PATTERN(SDRRDX) ;
  1. N SDRRD,SDRRDCHAR,SDRRDPATT,SDRRDQUOT,SDRRDTEMP
  1. I SDRRDX["*" D
  1. . I SDRRDX["""" S SDRRDQUOT("""")="""""",SDRRDX=$$REPLACE^XLFSTR(SDRRDX,.SDRRDQUOT)
  1. . S SDRRDPATT="Y'?"
  1. . S SDRRDTEMP=""
  1. . F SDRRD=1:1:$L(SDRRDX) D
  1. .. S SDRRDCHAR=$E(SDRRDX,SDRRD)
  1. .. I SDRRDCHAR'="*" S SDRRDTEMP=SDRRDTEMP_SDRRDCHAR Q
  1. .. D PATRN(.SDRRDPATT,.SDRRDTEMP,SDRRDCHAR)
  1. .. Q
  1. . D PATRN(.SDRRDPATT,.SDRRDTEMP,SDRRDCHAR)
  1. . Q
  1. E D
  1. . S SDRRDPATT=""
  1. . Q
  1. Q SDRRDPATT
  1. ;
  1. PATRN(PAT,TEMP,CHAR) ;
  1. I TEMP]"" S PAT=PAT_"1"""_TEMP_""""
  1. I CHAR="*",$E(PAT,$L(PAT)-1,$L(PAT))'=".E" S PAT=PAT_".E"
  1. S TEMP=""
  1. Q
  1. ;
  1. DATALOOP ;
  1. I $$SCREEN(SDRRD0,.SDRRDDIC,$G(SDRRDFSCR))'>0 Q
  1. S Y=$P($G(@(SDRRDDIC_"SDRRD0,0)")),U)
  1. I Y="" Q
  1. S Y=$$EXTERNAL^DILFD(SDRRDFNUM,.01,"",Y)
  1. I SDRRDDATE S X=Y,%DT="ST" D ^%DT
  1. I SDRRDX["*",SDRRDPATT]"",@SDRRDPATT Q
  1. I SDRRDFLD="" D
  1. . D SETDATA^SDRRSLCT(Y,SDRRD0,SDRRDUTIL,SDRRDDSEL,.SDRRDNUM)
  1. . Q
  1. E D
  1. . S Y=+SDRRD0,Y(0)=$G(@(SDRRDDIC_+Y_",0)")),Y(0,0)=$P(Y(0),U)
  1. . S SDRRDVALU=$$FLDSRT^SDRRSLCT(SDRRDFNUM,SDRRDFLD,Y(0))
  1. . I SDRRDVALU]"" D
  1. .. D SETDATA^SDRRSLCT(SDRRDVALU,SDRRD0,SDRRDUTIL,SDRRDDSEL,.SDRRDNUM)
  1. .. Q
  1. . Q
  1. Q
  1. ;
  1. SCREEN(SDRRD0,SDRRDDIC,SDRRDFSCR) ;
  1. N SDRRDDONE,D0,DA,Y
  1. S SDRRDDONE=1
  1. I SDRRDFSCR]"" D
  1. . D SETDIC^SDRRSLCT(.SDRRDDIC,.DIC,.DO)
  1. . S (D0,DA,Y)=SDRRD0
  1. . I $D(@(SDRRDDIC_"SDRRD0,0)"))#2 X SDRRDFSCR S SDRRDDONE=$T
  1. . Q
  1. I SDRRDDONE>0,SDRRDDIC("S")]"" D
  1. . D SETDIC^SDRRSLCT(.SDRRDDIC,.DIC,.DO)
  1. . S (D0,DA,Y)=SDRRD0
  1. . I $D(@(SDRRDDIC_"SDRRD0,0)"))#2 X DIC("S") S SDRRDDONE=$T
  1. . Q
  1. Q SDRRDDONE
  1. ;
  1. ASK(SDRRDX,SDRRDDIC,SDRRDFNAM,SDRRDFL01,SDRRDASKT) ;
  1. N SDRRD,SDRRDALL,SDRRDCASE,SDRRDLINE,SDRRDQUIT,DIR,DIROUT,DIRUT,DTOUT,DUOUT
  1. S SDRRDCASE=$$PLURAL^SDRRSLCT(SDRRDFL01)
  1. S DIR(0)="YAO"
  1. S SDRRD="By '"_SDRRDX_"' do you mean all "
  1. I $$UP^XLFSTR(SDRRDX)="ALL",$G(SDRRDFSCR)="",$G(SDRRDDIC("S"))="" D
  1. . S SDRRD=SDRRD_$P($G(@(SDRRDDIC_"0)")),U,4)_" "
  1. . Q
  1. S SDRRD=SDRRD_$S((SDRRDASKT="PATTERN")&(SDRRDX["*"):"matching ",1:"")
  1. S SDRRD=SDRRD_SDRRDFNAM_" "_SDRRDFL01_SDRRDCASE
  1. I SDRRDASKT="RANGE",SDRRDX?1.ANP1"-"1.ANP D
  1. . S SDRRD=SDRRD_" between '"_SDRRDXBEG_"' and '"_SDRRDXEND_"'"
  1. . Q
  1. D WRAP^SDRRSLCT(SDRRD,.SDRRDLINE)
  1. S SDRRD=0
  1. F S SDRRD=$O(SDRRDLINE(SDRRD)) Q:SDRRD'>0 D
  1. . I $O(SDRRDLINE(SDRRD))>0 S DIR("A",SDRRD)=SDRRDLINE(SDRRD)
  1. . E S DIR("A")=SDRRDLINE(SDRRD)_": "
  1. . Q
  1. S DIR("B")="Yes"
  1. S DIR("?")="Answer Y(es) if you want all of the "_SDRRDFNAM_" "
  1. S DIR("?")=DIR("?")_SDRRDFL01_SDRRDCASE_", otherwise answer N(o)."
  1. W ! D ^DIR S SDRRDALL=+$G(Y)
  1. S SDRRDQUIT=$S($D(DTOUT)!$D(DUOUT)!$D(DIROUT)!$D(DIRUT):1,1:0)
  1. Q SDRRDALL_U_SDRRDQUIT
  1. ;
  1. INTERNAL(SDRRDIN,SDRRDOUT) ;
  1. ; Copy @SDRRDIN@(External,Internal) to @SDRRDOUT@(Internal)
  1. N SDRRDEXT,SDRRDINT
  1. S SDRRDEXT=""
  1. F S SDRRDEXT=$O(@SDRRDIN@(SDRRDEXT)) Q:SDRRDEXT="" D
  1. . S SDRRDINT=""
  1. . F S SDRRDINT=$O(@SDRRDIN@(SDRRDEXT,SDRRDINT)) Q:SDRRDINT="" D
  1. .. S @SDRRDOUT@(SDRRDINT)=""
  1. .. Q
  1. . Q
  1. Q