$$ PROGRAM: REPLACE_TEXT.GRS
$$
$$ KEYWORDS:
$$
$$ ABSTRACT: A search and replace program that globally replaces
$$ existing note text with new keyed-in text.
$$
$$ RELEASE HISTORY:
$$ 19-NOV-86 INITIAL RELEASE, DEWAYNE EVANS
$$ 15-JUN-87 REVISION 0, DEWAYNE EVANS
$$ 01-AUG-87 SUBMITTED TO LIBRARY
$$
$$ Required Subroutines: (None)
$$
$$ AUTHOR: DEWAYNE EVANS
$$ TITLE:
$$ COMPANY: McDonnell Douglas M & E
$$ Santa Clara, CA
$$ 408-727-6990
$$
$$ SYSTEM TYPE:
$$
NUMBER/CCF,CCS,CEC,CES,CTA,CTD,CTJ,CWL,DAD(23),DFV,DLV,EL(3),EP,FS
NUMBER/NEP,NSP,QE,RSP,SDLV,SL,SP,SSDLV,TS
ENTITY/CWCS,ENT(1000),N
STRING/ITXT(132),NT(132),NTXT(132),OT(132)
DATA/SP,1,EP,0,DFV,2
$$
$$
$$ ENTITY VARIABLES:
$$ ENT = ENTITY, N = NOTE
$$
$$ STRING VARIABLES:
$$ OT = OLD TEXT, NT = NEW TEXT
$$ ITXT = INITIALIZE TEXT, NTXT = NOTE TEXT
$$
$$ NUMBER VARIABLES:
$$ QE = QUANTITY OF ENTITIES, SP = START POSITION, EP = END POSITION
$$ LNT = LENGTH OF NEW TEXT, SL = STRING LENGTH, FS = FIND STRING
$$ NEP = NEW END POSITION, DAD = DRAFTING AID DATA
$$ EL = ENTITY LOCATION, DLV = DO-LOOP VARIABLE, DFV = DEFAULT VALUE
$$ SDLV = SUB-DO-LOOP VARIABLE, SSDLV = SECOND SUB-DO-LOOP VARIABLE
$$ NSP = NEW START POSITION, TS = TERMINATION SWITCH
$$
$$
CWL=&WLAYER $$ CURRENT WORK LAYER
CCF=&CFONT $$ CURRENT CHAR FONT
CCS=&CSIZE $$ CURRENT CHAR SIZE
CWCS=&WCS $$ CURRENT WCS
CEC=&ENTCLR $$ CURRENT ENTITY COLOR
CTJ=&TXJUST $$ CURRENT TEXT JUSTIFICATION
CES=&ENSITE $$ CURRENT ENTITY SITE
CTD=&TDENS $$ CURRENT TEXT DENSITY
CTA=&TXANGL $$ CURRENT TEXT ANGLE
$$
$$
IA05:
CHOOSE/'READ HELP FILE',$
'YES', $
'NO', $
DEFLT,DFV,RSP
JUMP/IA05:,TERM:,,,HELP10:,IA10:,RSP
$$
$$
IA10:
TS=1 $$ TERMINATION SWITCH ON
DFV=1
TEXT/'ENTER OLD TEXT',OT,RSP
JUMP/IA05:,TERM:,IA10:,,IA20:,RSP
$$
$$
IA20:
TS=2 $$ TERMINATION SWITCH OFF
TEXT/'ENTER NEW TEXT',NT,RSP
JUMP/IA10:,TERM:,IA20:,,IA30:,RSP
$$
$$
IA30:
PARAM/'SEARCH POSITIONS',$
'START',INT,SP, $
'END',INT,EP,RSP
JUMP/IA20:,TERM:,,RSP
IF/SP-1,EM10:,,
JUMP/IA40:
$$
$$
EM10:
MESSG/'START VALUE','MUST BE > 0'
JUMP/IA30:
$$
$$
IA40:
MASK/25
&WCS=CSYS/&WVIEW
IDENT/'SELECT TEXT',ENT,CNT,QE,RSP
JUMP/IA30:,TERM:,DL10:,RSP
$$
$$
DL10: $$ SEARCH AND REPLACE TEXT STRINGS
MESSG/TEMP,'SEARCHING'
DO/DLL10:,DLV,1,QE
IF/&SUBTYP(ENT(DLV))-1,,,DLL10:
ITXT=&DMTEXT(ENT(DLV))
SL=LENF(ITXT)
IF/SP-SL,,DLL10:,DLL10:
FS=FNDSTR(ITXT,OT,SP)
IF/FS+0,,DLL10:,
NTXT=REPSTR(ITXT,OT,NT,FS)
IF/SP-EP,DL30:,ID10:,DL20:
$$
$$
DL20: $$ SEARCH ENTIRE TEXT STRING
DO/DLL20:,SDLV,1,132
NSP=FS+LENF(NT)
FS=FNDSTR(NTXT,OT,SP)
IF/FS+0,,ID10:,
NTXT=REPSTR(NTXT,OT,NT,FS)
DLL20:
$$
$$
DL30: $$ SEARCH UP TO END POSITION
DO/DLL30:,SSDLV,1,132
NSP=FS+LENF(NT)
NEP=LENF(NTXT)-LENF(ITXT)+EP
FS=FNDSTR(NTXT,OT,NSP)
IF/FS+0,,ID10:,
IF/NSP-NEP,,ID10:,ID10:
NTXT=REPSTR(NTXT,OT,NT,FS)
DLL30:
$$
$$
ID10: $$ REPLACE TEXT STRINGS
&WLAYER=&LAYER(ENT(DLV))
&ENTCLR=&COLOR(ENT(DLV))
OBTAIN/ENT(DLV),DAD
&CSIZE=DAD(1)
&CFONT=DAD(3)
&TXJUST=DAD(2)
&ENSITE=DAD(19)
&TDENS=DAD(4)
&TXANGL=DAD(5)
EL=&ORIGIN(ENT(DLV))
DELETE/ENT(DLV)
N=NOTE/EL(1),EL(2),NTXT
DLL10:
JUMP/IA10:
$$
$$
HELP10:
PRINT/'THIS PROGRAM REPLACES EXISTING NOTE TEXT WITH NEW'
PRINT/'KEYED IN TEXT.'
PRINT/''
PRINT/'FIRST, KEY IN THE OLD TEXT (THE TEXT TO BE REPLACED).'
PRINT/''
PRINT/'SECOND, KEY IN THE NEW TEXT (REPLACEMENT TEXT).'
PRINT/''
PRINT/'THIRD, INDICATE THE START POSITION. THE START'
PRINT/'POSITION TELLS THE PROGRAM AT WHAT CHARACTER WITHIN'
PRINT/'THE NOTE TO BEGIN LOOKING FOR THE OLD TEXT. (A START'
PRINT/'POSITION OF 1 WOULD INDICATE THE BEGINING OF A NOTE).'
PRINT/''
PRINT/'FOURTH, INDICATE THE END POSITION. THE END POSITION'
PRINT/'TELLS THE PROGRAM AT WHAT CHARACTER WITHIN THE NOTE'
PRINT/'TO STOP SEARCHING FOR THE OLD TEXT. AN END POSITION'
PRINT/'OF 0 TELLS THE PROGRAM TO SEARCH THE ENTIRE NOTE.'
PRINT/''
PRINT/'NOTE: THIS PROGRAM EDITS NOTE ENTITIES ONLY. THE NEW TEXT'
PRINT/'IS CREATED IN THE CURRENT WORK VIEW. ALSO, IT DOES NOT'
PRINT/'ACCOMODATE NOTES WITH MULTIPLE LINES OF TEXT.'
JUMP/IA10:
$$
$$
TERM:
IF/TS-1,,,IA10:
&WLAYER=CWL
&WCS=CWCS
&ENTCLR=CEC
&CFONT=CCF
&CSIZE=CCS
&TXJUST=CTJ
&ENSITE=CES
&TDENS=CTD
&TXANGL=CTA
HALT