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