1 | SDUL40 ;ALB/MJK - Screen Malipulation Utilities (cont.) ; 12/1/91
|
---|
2 | ;;5.3;Scheduling;;Aug 13, 1993
|
---|
3 | ;
|
---|
4 | FIND ; -- find text in list
|
---|
5 | N START,BEG,SDQUIT,SDULHIT
|
---|
6 | S DIR(0)="F^2:50",DIR("A")="Search for" S:$D(SDULFIND) DIR("B")=SDULFIND
|
---|
7 | S DIR("?")="Enter from two to fifty characters."
|
---|
8 | D ^DIR K DIR I "^"[Y G FINDQ
|
---|
9 | S SDULFIND=Y,(BEG,START)=SDULBG,FINISH=SDULCNT
|
---|
10 | F D SEARCH(START,FINISH) D D:SDULHIT UPD(SDULHIT,SDULFIND,"") Q:$D(SDQUIT)
|
---|
11 | .I 'SDULHIT,BEG=1 D PAUSE^SDUL1 S SDQUIT="" Q
|
---|
12 | .I SDULHIT,BEG=1,SDULHIT=SDULCNT D PAUSE^SDUL1 S SDQUIT="" Q
|
---|
13 | .I 'SDULHIT!(SDULHIT=SDULCNT),BEG'=1,$$BEG S FINISH=BEG-1,(BEG,START)=1 Q
|
---|
14 | .I 'SDULHIT!(SDULHIT=SDULCNT),BEG'=1 S SDQUIT="" Q
|
---|
15 | .W ! S DIR(0)="Y",DIR("B")="Yes",DIR("A")="Find Next '"_SDULFIND_"'" D ^DIR K DIR
|
---|
16 | .I Y S START=SDULHIT+1 Q
|
---|
17 | .S SDQUIT=""
|
---|
18 | FINDQ D FINISH^SDUL4 Q
|
---|
19 | ;
|
---|
20 | BEG() ; -- ask if ok to start from top
|
---|
21 | W !!,"<<< End of list >>>"
|
---|
22 | S DIR(0)="Y",DIR("A")="Do you want to start at the beginning of the list",DIR("B")="Yes"
|
---|
23 | D ^DIR K DIR
|
---|
24 | Q Y
|
---|
25 | ;
|
---|
26 | SEARCH(START,FINISH) ; -- search to end or first hit
|
---|
27 | ; input: START := line to start search on
|
---|
28 | ; FINISH := line to end search on
|
---|
29 | ;
|
---|
30 | N Y,X,L,CNT
|
---|
31 | S SDULHIT="",CNT=0
|
---|
32 | S SDULBCK="" D:SDULCC RESET^SDUL4 W !,"...searching for '"_SDULFIND_"'"
|
---|
33 | F I=START:1:FINISH S CNT=CNT+1 W:'(CNT#100) "." I $$UPPER^SDUL1(@SDULAR@(I,0))[$$UPPER^SDUL1(SDULFIND) S SDULHIT=I Q
|
---|
34 | I 'SDULHIT W *7,!!,"Text not found." G SEARCHQ
|
---|
35 | I SDULCC D
|
---|
36 | .I SDULHIT<SDULBG!(SDULHIT>SDULST) S SDULBG=SDULHIT D LST^SDUL4,PAINT^SDUL4
|
---|
37 | .D UPD(SDULHIT,SDULFIND,"REV")
|
---|
38 | D PGUPD^SDUL4
|
---|
39 | I 'SDULCC S SDULBG=SDULHIT D REFRESH^SDUL
|
---|
40 | SEARCHQ Q
|
---|
41 | ;
|
---|
42 | UPD(LINE,TEXT,ATTR) ; -- set/unset video attribute on text
|
---|
43 | ; input: LINE := number of line
|
---|
44 | ; TEXT := chars to set attribute on
|
---|
45 | ; ATTR := attribute to use
|
---|
46 | ;
|
---|
47 | N ATTRON,ATTROFF,Y,LEN,POS
|
---|
48 | I 'SDULCC G UPDQ
|
---|
49 | S Y=@SDULAR@(LINE,0),LEN=$L(TEXT),POS=0,(ATTRON,ATTROFF)=""
|
---|
50 | I ATTR="REV" S ATTRON=IORVON,ATTROFF=IORVOFF
|
---|
51 | F S POS=$F($$UPPER^SDUL1(Y),$$UPPER^SDUL1(TEXT),POS) Q:'POS D INSTR^SDUL1(ATTRON_$E(Y,POS-LEN,POS-1)_ATTROFF,POS-LEN,SDUL("TM")+(LINE-SDULBG),LEN,0)
|
---|
52 | UPDQ Q
|
---|
53 | ;
|
---|