# 8Њ;8.(& 4 $vIh%<= lA 35150832t#`aqYIOfCDv vt<̖[TdeDuf15678:;<=>@Ag hi ,uLc|ni<QRSTUslc_VRYj_kUl[Wmnopq`Q`[Q\]RD[QUZ[S\`[RD[S(R@QRQ@Q R ?R4<DIRtSD3RQRtASRHI@ R<(RtT4(0TROPQRtTloRPRO #STUVWXxRHTRtTR<(RSQJKM_y`abcd RQ\QxQDQ\Q4QJRdRKLYZy[\]^! iRlR|QiRxQQJdRKQLdRYRZiRyRR[R\]RRRR^(R!@R XRR\QR,RRQ@QQlRhR\TW\ ndef15678:;<=>@Ag hi   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijkmmd;8.tP$ Hܪ0ԡh(dHx`ĥl  X  ĩ T  t<T H\ \੖(ࣖth8x`ਖ$L,8L䚖<ؠĚPԞ`hxT8̝|\ܫHd\pO9393,(2rR94)'m^(sw ',98,' t)',(90[4]/'^S'),90[5]/'^(1+1[i])S'\T q930fx mV 'mHiD m;c;t;b;a',(94/93,'m~',92),(~94)/'m1'TPp93fx mV 93,'(n>ii+1)/l',(~rR)/'r0 1r',94/'^m',92P(6 rR(2rR)*~90[12]aT,(@90'92098(1-90[11]98)98'OSSPATMATCH'@ 3/(nE>93)257 1191[911]0S (1(0931 093)/260(4'ac(,99 fmt 911),90[0]92[0;]L48YZ'90(2 6' VAR ')[97;],PaT,89'8 1+192cr 89m (b)(('OSSPATMATCH'89)26(,tvnL92[3]-880,92[3],0,<r902 16'btcalr;inp0dqBTCALR=;INP0DQ'<H99393,'l:wSr[0[i]+1[i]]rr',rR'',rR/',+/,'H(H'98'''a)''''=a,m'(RznL oss Sr;io;eXn;99;98;97;96;95;94;93;92;91;90;89;88;AlL;HiD;PaT;SrH;lU;mV;nE;rR;uP;Po;Re;0;1;pp 8997980 $92FREAD 2nL$,PaT'Cpt ',(12nL),': ',((/1nLnL+88)30($nL(1+89)nL$ RzRz,[0]98 98 98$(0 2=rR)/28,27$98+91(1=rR)26$92mV,tcnl,92$ (292)/21 0d(+/,93SrH 92,av[255])260UUDOMAIN ERROR mV[1]  l1l-1+1l(~b)/bdmv,d1v  ^ ^H`8`0`,"``p`x`h`P`/*`"`````"```""``8$l9393,92/'elx''(33t),dm0'''88a9393,'Po(''alx''a)(''elx',988, (nE9382dr 92)26m,q 92891[(tj(960101nL)4r((0=rR)280' ',(90[0]93[0;])\'^'0k98918Lc1(10)-101-11-11108 t93';elx'@m929111,(,1)910,(2FSIZE 11),1L@n58enL1(93193nL' ')/nL,' ',nL8`v21Hn93'Object Search String for A2K - DanB (c) V5.47a''H@93'bctt>c\(m'''')>tt\tm''''''''')@@f93'bb/br[b]lU[0;27(,1 0lU)r[b]]'w @d90190D93fx mV 'RS Po P;TSSPR\S\T10,TS/P'DD9393fx mV 'ruP r;b(/br1 0lU)0',93D ('oss'89)26 (AlLAlL,'0123456789'($(r89(nL' ')nL $g921 092(8i92[2]91[2]1[2]+1(sRe10Lr96/29493'rSrH t;h;m;s;n;S;i;w',934 u 089,Sr 89393,98/'(',90[8]'~1s[1]h)^h'8,c90-+/^\' '=929192,$98+/,939193$( d9090(1189)Sr(@Dg93fx((93)'mmV v;b;d;l;io'),[0.1]93@ uPaTio960 $\u99'P<[>Q<]>I5,X1'$0_Rz(0,92/rR942+0)004k94921,'',[0.1]90[3]/'btc'4L(m9393,'(0st)ri0',(rR/'r0'),'mHiD tn1''Le22H9393,(89/'S1~tAlL'),'t',(90[9]/'uP'),',t'PH |q89/90[4 5] $l('osr'89)26 t)$\N93'io1l1l-1+1l(~b)/bdmv,d1vm(b)(,bl./0,bl)\b/m'\Xj91/93 (h98/90[7 8] lnLnl 3,Re/2 Hd9292sSruP Sru980 q90[9]9$`o('Sr'89)26 $e''$4j(^/90[7 8])30$ rAlLAlL,'_'`q(rR)26T<c9393,'bctt>(m)(,1,0 1b^m'''')'Q<rnE90[10]q96/29Pe90[3]14r(nL)30(m8989/89Sr1Sr(,l90,' (',(98),' found)',Dupp16dr9893k9430$r93 a: [24] dr$ u92~90[12] q(nc 'nL')/3 @o92~90[13]0 ,ht(971939 2nc 89)23,DvRe90[14]srR90[6](v90[15]2v20,uSr(111)/10[1]Sr,24Lpk11 This function will search and replace all occurences of strings and their. Left argument is either a list of names (space delimited or matrix) or file descriptor of file to act upon. Syntax is: [tienonamelist] osr '/[method]/string1/repl1/string2/repl2/...' where '/' is any delimiter and 'method' a series of characters describing the behaviour of the function as follows (it is the same as ): B DO NOT search the object's Body T DO NOT search the object's Text within quotes C DO NOT search the object's text after the first lamp () character not within quotes A consider text after , nc and trap as APL code (Body) ; exclude localized items exclude global items L perform a left syntactic search R perform a right syntactic search  return a number as opposed to a string By syntactic search is meant not preceeded (or followed) by a letter, digit, , , , _ or characters. If a file is to be changed, the left argument is 1 to 4 integers of: tie number, start component, last component, step. Default is all the file. Examples: osr '//abc/def replace 'abc' by 'def' everywhere osr '..abc.A.def.FF' replace 'abc' by 'A' and 'def' by 'FF' everywhere osr ';r;abc;X' replace name endings in '...abc' by 'X' 'x y' osr '.lrCt .abc.f' syntactic replacement of 'abc' by 'f' in objects x and y not within text or comments 2 3 7 osr '/lr/AA/drunk' replace all 'AA' strings by 'drunk' in file tied to 2, from components 3 to 7 LIMITATIONS The function suffers the same limitations as . Furthermore, the size of variables may change upon performing changes, especially those padded with blanks at the end. Packages are not changed. DanB 1991plaL(,  1, 1(( L  1K(  F,am  2 =, 2, em n M 6/f   Lct$al yȖ =,b$pNN (1+ 1 Ö v(4btc@DlR**bctt>cl Po(m'')>ttl Pu tm''''D0 – +  10܉l9,g replacements made.,$  3 >04 3$DT -x \Ė, =/ >, >D4* !hǖ / >, >4( Ŗ >, >,(t2pt4R, 0$ >X >$," <4( R ;, :R(   / 6/   I :/ $}  < 1, 1$$  3 : 3$0\[SSPR\S\T10,TS/P0D0 . ;DȖ, >, ;+/ =,/" <*D " t = $d6 ~/sZ)l9$4* D 'ǖǖ  =/ >, > D0 0Ȗ / =0   M 6/ (,  <   ((,  <  (H 8 L 3 ?,, 3 :0 >l </H  G   3 ; ,  <ؾ, >, >,4( #ƖŖ Ŗ// <4D % p,, < D  ( > 0l22[Wp[;1]]l1(1,0)[W]k(b,t)-0,l1+bp[;0]b(2k)1 0t((,k,[.1]l1,0)/b)/tt((,k,[.1]l2,0)/b)\tt[b+l2/+\1k]Sr[(b+/l2)+l2/0[1+2W]-10,+\l2]܉k   H : (  D  U(h?0Ptp ReP t;k;l1;l2;b;W0T ( xĖ >, >(( ǖ >, >(`kɿ   = 3 $  N 2t$ \ 40, 1$ L 34$t [ L 3$Dq , A 2   6];D$( r >/" <$(*  =Ė, >(`t?tl0P^MDG / Jh 2 2 ="+ :GDH[l2P > 2,, 2 2   ,/ 2P8 bb/br[b]lU[0;lU[1;]r[b]]8DLM O* > ><$," >z{|}~D<,S!!l0:ZM<(Sr[0[2I]+l1[I]]T)<( Ɩ , (`tI 3   $j RS Po P;T$4V $ >Ö >Ŗ$," >4Dm *Ė >(Ɩ >–$," >yzD\lR I    ,   ,   ,  I\HlR 6 N     , / HD? 4p /<$,, ;+ 7D T  > $) S1~TAlL$  `Ȗ > \DgBBrv HiD m;l;c;t;b;arlm=cR(v>''7m)2rrl Po rmr']'\(  E4 /(]P >    = =/,  ,/r P0\[BTCALR=;INbtcalrin0[WXY@4 #–LÖ#, 4(-  NHǖ (`Aa,ZL <  x–pƖ)   8L(rmmV v;d;l;io( ؕ Ltp44Rv SrH T;M;s;Z;l;N;t;S;IR0 2I0N1Mv HiD TL(\\BBl4:(^/t\Z10,l+Z)/l6ZtZl4l6:RR,[0]Z,[.1]IM[Z.+l]1 \4(R\PS\T10,TS/\10,P4   \ > ,  >Ȗ,/" >,   ? 8Lrl9:(N>II+tZ1)/l0RR[R;]8 g @  Ɩ 1 $5 RS Pu P;T$$g  @(Ȗ"/$ H~ (\^S^(1+1[I])S@(tl4P( e0123456789_ @((arg length error(,HQs11s/sT=1Tc, q (TuP T Kl18TmZZ/Zt~/M[Z.+l]Zt/Z8 n l6 p |oSr0Trr\DgDDio1l1l-1+1l(~d)/ddmv,d1vm(d)(,dl./l,d0)\d/m\D[dEf8ruP r;b(/brlU[1;])08 This function will display all occurences of strings (the right argument) in objects (left argument). Syntax: [namelist] oss '/[method]/string1/string2/...' where '/' is any delimiter and 'method' a series of characters describing the behaviour of the function as follows: b DO NOT search the object's Body c DO NOT search the object's Comments (do not search text after the first lamp '' character not within quotes) t DO NOT search the object's Text within quotes a consider strings as APL code after , trap, etc. i insensitive (case) search n include numeric (non char) variables p strings are patterns - use fn OSSPATMATCH instead of  ; exclude if localized (if match in the first row) exclude if NOT localized (if NO match in the first row) l perform a left syntactic search r perform a right syntactic search 0 return an enclosure of boolean matches, one per item searched  return a result instead of the usual by line display  search packages (Namespaces) recursively q do not display banner message By syntactic search is meant not preceeded (or followed) by a letter, digit, , , , _ or characters. RESULT will, by default, display the lines where the strings are found with a caret (^) below. It then returns a 00 result. It can also return an integer table with as many rows as objects were searched and as many columns as strings were looked for. For example, if all 20 functions of a workspace were searched for 3 strings then a 20 by 3 integer table of the number of hits per fn/string would be returned. To get this result specify '' as method. can also return a boolean mask of hits instead, one per object scanned. Each mask has the same shape as the of the variable or cr of the function or scalar 0 if no match. For example, 'var1 fn2' oss '/0/STR' would return a 2 element result showing where 'STR'  var1 and cr 'fn2'. EXAMPLES oss '//abc' search 'abc' everywhere oss '\\abc\def' search both 'abc' and 'def' everywhere oss ';r;abc' search names ending in '...abc' 'x y' oss '$ct$abc$f' syntactic search of 'abc' and 'f' in objects 'x' and 'y' not within text or comments In the following example we have a file of CRs of functions and we want to know where variables 'x' and 'yz' are used AND not localized: 8 11 oss'/lr;cat/x/yz' look for 'x' and 'yz' as exact names ('lr') in file tied to 8 starting at component 11. Don't look in comments or text ('ct') except where is concerned ('a') and exclude where localized (';'). 'F G' oss '/lri/x/y/z' return a 23 of the number of hits in each of and for lower and uppercase names 'x', 'y' and 'z'. If a pattern matching function exists in the workspace it can be called to do the search. Simply edit function to call that function like this: rpattern OSSPATMATCH string [1] rpattern Pmatch_fn string or whatever syntax is necessary It MUST return a boolean result. For example, if we wish to find out which strings contain a filename, that is "possibly some spaces, a library number, some spaces, a name, possibly some spaces", we'd do: 'a b' oss '/pc/'' *[0-9]+ +[a-Z]+ *''' for and look for a filename within quotes. LIMITATIONS will search functions, variables and files. This version will also look at packages. If a name is a package it is treated like any other name. To search within it use the "recursive" method. If no left argument is supplied then only the functions in the workspace are searched. Using ';' and '' as method only makes sense for syntactic search in fns. will simply look for the string in the first line of the object and decide what to do from there. trap strings are searched starting at the 4th character so number and action code will be searched. looking for 'e' as a variable could be found in trap. OSSPATMATCH is provided with an example of use with the logos pattern matching functions. These are available separatly through Soliton. DanB 1991 RenEPaTeXnnL;osRz8 9292/9292=91(1+794)/91HiD80  a(4ltLƖ,ߖ0༖(xXL Ɩ(–tŖ|Öд$Ö –   ߖ俖 T H(Ŗ HŖ08(ٖdXޖ`ߖpݖ,ޖ <H!"|̷# $L%d&D໖'d(ܵ)4ޖ$* +,ߖĹ--`-X@.D.ݖ.0/$0P@01112L2Pض2 34445 5t5p56|6$7l$88D8<8p9XԳ99:P:\:`;ޖd;<<~ (94~(NC 91(oSr' ')oSr)3 4)80 iD<8h+ 92FX mV 91,(93)/90,'rr',938$h 92FX mV 90$H if a variable, we try detecting a fn representationHD 91(/2[4 5])/'S1~TAlL' header & row 1 D 86:(99)0 (H 92(2,0.51)1(4 oSrNL 3 danb 1990-2000 V2.7774dT83:91'rv HiD m;l;c;t;b;arlm=cR(v>''''7m)2rrl Po rmr'']'''m'dX 90FX((90)'RS Pu P;T'),[0.1]90'R\PS\T10,TS/\10,P'X<L 90dEf((193),190)90mV dEf P < 4u78:97/82 0 oSr93[3]-980,93[3],0 ]0D 92FX((90)'tp ReP t;k;l1;l2;b;W'),[0.2]90DD 9090,'l0:ZM<(Sr[0[2I]+l1[I]]T)',92D089:(970101oSr)88 0 74,941PH 9090,(91/2[7 8])/'s11s/sT=1T' header length ^P(& 9393/93\91 ]](0 AlL,AV[(AV'Aa').+26] 0 82Pl 90'Rv SrH T;M;s;Z;l;N;t;S;IR0 2I0N1Mv HiD T',91P,< AlLAlL,'0123456789_',,0 (0.>9493-90)76 x1,4 99(99),' replacements made.' 499 oSr osr Sr;IO;dEf;AlL;HiD;ReP;SrH;98;lU;mV;97;uP;96;95;Po;Pu;94;0;1;2;93;92;91;90;cR;osrcT 90FX((90)'RS Po P;T'),[0.1]90'SSPR\S\T10,TS/P'T <a1234 56789: ;<=>?0@ABC DEF.G/H2I5/6J7K8L9M:N;  !##$%&'))*,,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_` Ds 90FX mV'ruP r;b(/brlU[1;])0',90 0D,t82:(/1oSroSr+98)/86 ,,75:dEf FREPLACE 2oSr ,Dh85:90FX((90)'mmV v;d;l;io'),[0.1]90 93]D4 91[92],((+/94),8)'''a)('''4 90'l22[Wp[;1]]l1(1,0)[W]k(b,t)-0,l1+bp[;0]b(2k)1 0t((,k,[.1]l1,0)/b)/tt((,k,[.1]l2,0)/b)\tt[b+l2/+\1k]Sr[(b+/l2)+l2/0[1+2W]-10,+\l2]'0$ (^/2[7 8])86$< 97/75 D70 (909999+9290~010def 1dEf)/78 D$5 dEfFREAD 2oSr $4 (Sr(111)/10[1]Sr)864 t dEf94dEf L~ 90'bctt>cl Po(m'''')>ttl Pu tm''''''''' 0L$%76:9999+92 d)$( (' '10dEf)78 ( \80:dEf91 4 (0' '=(93(-93)1)dEf)76 48 9090,'bctt>(lb^m'''')Po a'88 (20(91/91Sr1Sr),Sr)/08  dEfVR 91  dEf94dEf 0 H 91,'dEf'  $0< the searching fn$ % 'NOT ',91  $@ 99(~2[6])0 $, 9090,2[9]/'TuP T',@|79:(092''9094 SrH dEf,cR,dEf)/78@`t 9090,'l4:(^/t\Z10,l+Z)/l6ZtZl4l6:RR,[0]Z,[.1]IM[Z.+l]1'Ef`8<84:9693,'',[0.1]2[3]/'btc'88\ 1(10)-101-11-1110 8 IO0 <+88:oSr1(111oSr' ')/oSr,' ',oSr <$$81:(oSr)86 $4 2[3]83hض 9491=9219191,uP 91'/nc/cr/vr/alx/elx/ex/idlist/at/stptr/idloc/size/lock'''h  2[9]84  $ dEf90 ReP dEf $$ (NC'oSr')/89 91$ 8 292[;1] < 9090,'l9:(N>II+tZ1)/l0RR[R;]'t< X77:942>93 $074:(dEf)78 $(Lw Sr[93]uP Sr[93](XlU2 27AlL'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'X(, cRTCNL8h" 9090,91/'(',2[7]'~/sZ)l9'880+ 92(2 12/2[4 5])/'^S^(1+1[I])S'8<% 9090,'ZZ/Zt~/M[Z.+l]Zt/Z'< 91[0]0( 93[2]1[2]2[2] 90(Hr 95122 11'BTCALR=;INbtcalrin'10[1]Sr2H 94/76<, 93211,(,1)20,(2FSIZE 11),1<48 9090,'a,ma(''''=a)',491 48 90'bb/br[b]lU[0;lU[1;]r[b]]'8L 78 94779 81  % 192[;0] ;a < 93dEf h 87T 79 $ lU2 26AlL  $d oSr(1+91)oSr $[i+w1[ ti(0nr0 1s thn> r0olpw 97/82/010a1 AtAS T%P5:9lFXm;;db;lm\ 90'io1l1l-1+1l(~d)/ddmv,d1vm(d)(,dl./l,d0)\d/m'\vb0)'86),8278174S80Љ76l2771,)791+81 0t83b)t84)/)85]S870[+8889 cR 90 K91929394Pu$95S96|97AL980ReP,osr, 7570AV'69067X60 PT65S55/P50 0457 40؄35x3092712515 or109024 33 NsrEcS VH Po NC]2uPtcrvrRis/nsiz/mV܋lU fdE918 78:60.]281'i0(dSrHvHiDl,AlLnOplU ScP'SraoL'Ncmross2/\dEfl2+oSr0,\99,|87:99'arg length error' ,@ 78tc/P@ account for APL mode (include statements)Ef@Rosshowzosrhowp9DM  P  e Xf IpC iw D f \8 hlT8t\D,hW9  ewlXD0t`L8$p\D0|h#T@,!"ٖ$xd-P< (,/*)'567t:`;L<8>$A8C%EB=Hhɖp2Tt0DٖJ|ٖhٖZTٖ@ٖ,ٖhÖ 4XƖǖຖǖ–@id'To_|Pexl15vaLue8all2xlatesysIDBlcr 98X99`namesX versionxfr PinsX Plock PisIDdescribesr<XsDl160alline1q l130e X99 X98lX97Create@c_ b_(okPdefPPval(Pchkcopyrightx@PackPpdefcOdenrDM f1] ' vTEsizap@6maTF P equivalence dT^asUQ`r]_[Rbh?ie9c0&(+.dFMKDINLG@1ntuogp4q 3mOPjlXVWYv k  \Sf