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

SDUL40.m

Go to the documentation of this file.
  1. SDUL40 ;ALB/MJK - Screen Malipulation Utilities (cont.) ; 12/1/91
  1. ;;5.3;Scheduling;**1015**;Aug 13, 1993;Build 21
  1. ;
  1. FIND ; -- find text in list
  1. N START,BEG,SDQUIT,SDULHIT
  1. S DIR(0)="F^2:50",DIR("A")="Search for" S:$D(SDULFIND) DIR("B")=SDULFIND
  1. S DIR("?")="Enter from two to fifty characters."
  1. D ^DIR K DIR I "^"[Y G FINDQ
  1. S SDULFIND=Y,(BEG,START)=SDULBG,FINISH=SDULCNT
  1. F D SEARCH(START,FINISH) D D:SDULHIT UPD(SDULHIT,SDULFIND,"") Q:$D(SDQUIT)
  1. .I 'SDULHIT,BEG=1 D PAUSE^SDUL1 S SDQUIT="" Q
  1. .I SDULHIT,BEG=1,SDULHIT=SDULCNT D PAUSE^SDUL1 S SDQUIT="" Q
  1. .I 'SDULHIT!(SDULHIT=SDULCNT),BEG'=1,$$BEG S FINISH=BEG-1,(BEG,START)=1 Q
  1. .I 'SDULHIT!(SDULHIT=SDULCNT),BEG'=1 S SDQUIT="" Q
  1. .W ! S DIR(0)="Y",DIR("B")="Yes",DIR("A")="Find Next '"_SDULFIND_"'" D ^DIR K DIR
  1. .I Y S START=SDULHIT+1 Q
  1. .S SDQUIT=""
  1. FINDQ D FINISH^SDUL4 Q
  1. ;
  1. BEG() ; -- ask if ok to start from top
  1. W !!,"<<< End of list >>>"
  1. S DIR(0)="Y",DIR("A")="Do you want to start at the beginning of the list",DIR("B")="Yes"
  1. D ^DIR K DIR
  1. Q Y
  1. ;
  1. ; input: START := line to start search on
  1. ; FINISH := line to end search on
  1. ;
  1. N Y,X,L,CNT
  1. S SDULHIT="",CNT=0
  1. S SDULBCK="" D:SDULCC RESET^SDUL4 W !,"...searching for '"_SDULFIND_"'"
  1. 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
  1. I 'SDULHIT W *7,!!,"Text not found." G SEARCHQ
  1. I SDULCC D
  1. .I SDULHIT<SDULBG!(SDULHIT>SDULST) S SDULBG=SDULHIT D LST^SDUL4,PAINT^SDUL4
  1. .D UPD(SDULHIT,SDULFIND,"REV")
  1. D PGUPD^SDUL4
  1. I 'SDULCC S SDULBG=SDULHIT D REFRESH^SDUL
  1. SEARCHQ Q
  1. ;
  1. UPD(LINE,TEXT,ATTR) ; -- set/unset video attribute on text
  1. ; input: LINE := number of line
  1. ; TEXT := chars to set attribute on
  1. ; ATTR := attribute to use
  1. ;
  1. N ATTRON,ATTROFF,Y,LEN,POS
  1. I 'SDULCC G UPDQ
  1. S Y=@SDULAR@(LINE,0),LEN=$L(TEXT),POS=0,(ATTRON,ATTROFF)=""
  1. I ATTR="REV" S ATTRON=IORVON,ATTROFF=IORVOFF
  1. 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)
  1. UPDQ Q
  1. ;