)N?ADZ#Y( YCZ Y( YY\Y | dBZhVX Y Y|YOYCZYpXd3X$X7YlXtYYYbYDXYhY`YYYl9ۄDj,.kl/mno012pAqrstuvwxyz{|}~C 0A $g 7 KI liVÆ$҄ ńk,DŽ,{H;$4# $  K I$Q3(ՅxKK tɅ#Q&R|STUVWXYZ|[d\L]4^XT" M!NO-XPQ8lR|STUVtW\| Xe5c0Z0Z0Z0Z0Z1Z1Zx2Z6Z 5Z@1Zh1Z2Z1Z2Z|1ZT1Z2Z2Z1Zx4Z4Z2Z :Z2Z(2Z<2ZP2Zd2Z4Z;Z85ZL3Z 83Z$5Z5Z;Z6Z4Z$3Zt6Z"t3Z`3Z(2Z'3Z6Z*4Z4Z<4Z@9Zt8Z3Z3Z:Z.4Z3Z4Zd4Z)P4Z&3Z4Z(4Z3Z2Z3Z75ZP5Z5Z6ZA6Z06Zx5Z+5Z5Z9d5Z5Z`6Z6Z26Z6Z= 7Z@H7ZB\7ZFp7ZJ47ZK7ZM7ZQ7ZC7ZS 7ZT8Z:$8ZU7ZR8ZL8ZX,9ZD?Z(ZL>ZZ?Z`;Z XZ@Z@Z@Z!AZ0AZ@Z`@ZvZ8>Zd>Z,@Z|x>Z>ZD@Z>Z?Z@Z?ZZAZHPAZ>ZAZpZuZZEZZZV|ZhZ[TZ@Z,ZZZZYZZ"ZY$Z ZbZ Zx Z8ZZ ZZlYZp Z\ ZH Z\Y4HY4YXYhYTY@YlZDY(ZZ0YYY  %'_abcdefghijklmnopqrstuvwxyz.0123456789$ABCDEFGHIJKLMNOPQRSTUVWXYZ{}[/\<=>^-+?~*( ;,!"#&@`|:)] |L25T D75=@BCFJKLMPQ9:<>?ADGHT,Sr(111)/10[1]Sr,@90[15]2h\nLnl 92089,Sr,rR90[6] ,(971939 2nc 89)24,,nE90[10]0 nL92[3]-880,92[3],0 ^'0493'rSrH t;h;m;s;n;S;i;w;',934,@(+/,93SrH 92,''av)27,0Rz(0,92/rR942+0)0 Up0890'btcalr;inp0dq'(1189)Sr8,l 90-+/^\' '=929192,,D(nE93' '1092)274,0 ('Sr'89(nL' ')nL)270L9393,'(0st)ri0',(rR/'r0'),'mHiD tn1''L8nL1(93193nL' ')/nL,' ',nL8 94310  (292)/22X T93fx mV 'mHiD m;c;t;b;a',(94/93,'m~',92),(~94)/'m1''T93(܈ 93'mv[0]matrify v'( ('oss'89)27 2 93'elx'@93'bctt>c\(m'''')>tt\tm'''''''''@̸ 5TlU2 26AlL'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'T$nL(1+89)nL 3$\9393,(2rR94)'m^(sw ',98,' t)',(90[4]/'^S'),90[5]/'^(1+1[i])S'\ 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 syntaxic 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 99\'  (YYDY,Y YYYYY`YYY0YYYYY0YYLYhYYlY\YYYYYTYDYHY8YY YxYii+1)/l',(~rR)/'r0 1r',94/'^m'L$h92FREAD 2nL $hAlLAlL,'_',9292] 90[3]15r980 92890]098+91( 90190  H 91[911]0 SruP SrL90[9]10@H9393,(89/'S1~tAlL'),'t',(90[9]/'uP'),',t' H(lrR(2rR)*~90[12] (آRe118 21rR/27ȴ96/30$P99'P<[>Q<]>I5,X1'$D93'Object Search String for A2K - DanB (c) V5.44'D8<9393,'Po(''alx''a)(''elx',988,PaT'Cpt ',(12nL),': 'f, 8(nE>93)26 22((3nc 'matrify')7 ((AlLAlL,'0123456789'(DUp93fx mV 'RS Po P;TSSPR\S\T10,TS/P'D L92cr 8927 $92mV,tcnl,92$$ 98+/,939193$$(^/90[7 8])31$\9893 0F(0=rR)29 96/30Sr  (1=rR)2727 ((960101nL)4( t('osr'89)27 H (1=rR)27  23 $T(0 2=rR)/29,28 $ P92 1 0 92 491/93 D9891 92<9393,'bctt>(m)(,1,0 1b^m'''')'n< (0nL)31  98/90[7 8] PaTio960J 89/90[4 5] |92~90[12]7 923,Re/2 X(nc 'nL')/3 0<' ',(90[0]93[0;])\'^'0@P93'bb/br[b]lU[0;26(,1 0lU)r[b]]'3g@@93fx((93)'mmV v;b;d;l;io'),[0.1] 93@08 90,' (',(98),' found)' 0\93'io1l1l-1+1l(~b)/bdmv,d1vm(b)(,bl./0,bl)\b/m'\  Re(VnEAlPaT;osRz P~  Y F/ $ $Z L,$Z  ]Z  W( ~  JBZ, F($m  8 F 8$$  K 5, 5$ n  Z @/ $  ] 8$   8 J   VY4 $ ] 8CZBZBZ4 Ԙ  L 8   X F $  8 M0; 8$(hg 'Y 5, 5](\ h fK ] 8BZ"CZBZCZ+ M K, 5, 5 M,/\, replacements made.,D / [tY BZ  L"+ FHYD$  _ Y$    ^ @/ H 8 ] 8 ,, 8 F0< M|CZ KCZ/H$0] 1 L" 8$ cl r ^ @/ W  l2/  l1 ;sl22[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]:]IMl9.N>l6R]l440 2$ M Z MY$," K4\Zɿ R ,|Y M ,  KZ, M, MY,4 #ZY IY// K4k lcY0r Z4Z I/ Ll 0 TuP T ( ` Z M, M,((/ sZ M, M[2(DF -|Z Y IZ, L/ M, MSD8/l9:(N>II+tZ1)/l0RR[R;])8    DX 'Z8Z I L/ M, M BZD  4 !YY I/ M, MY4$I]  M/?" K$( dY M, MY(\BBl4:(^/t\Z10,l+Z)/l6ZtZl4l6:RR,[0]Z,[.1]IM[Z.+l]1Y\ P D̴ . J Z, M, J+/ L,/?" KYD(^S^(1+1[I])S@(<D!!l0:ZM<(Sr[0[2I]+l1[I]]T) <(m  L@Z, Ml (}dEfLl44Rv SrH T;M;s;Z;l;N;t;S;IR0 2I0N1Mv HiD TL  Z L (.  UxZ IY((,s11s/sT=1T,\ I GBZ HBZ H, H H, GBZ GBZ, HY\H 6 _ 7BZ G H HBZ H, / 7YH fD 4ZZ I/Z`Z$,, J+ BDD**bctt>cl Po(m'')>ttl Pu tm''''ZD  8Z M $\ S1~TAlL$a4 $ M Z MPZ$," M4(  TZ I (?$ ~/sZ)l9/Y$,  M0 Z,/?" M,   Z M  fn0l)  m4R\PS\T10,TS/\10,P4(|  Z 9, 9Y(0SSPR\S\T10,TS/P0\|DDio1l1l-1+1l(~d)/ddmv,d1vm(d)(,dl./l,d0)\d/m\8h  Z M v(1+ 1 9Z >v(btc@\BBrv HiD m;l;c;t;b;arlm=cR(v>''7m)2rrl Po rmr']' \0 CZ Z I+  50SY4 #4 ZZ#, 94(,  _ Z I(AaY$ RS Po P;T$DLM O*LZ MZ ML Z$," Mz{|}~DTd/P(mmV v;d;l;io(Dm *Z M Z MZ$," MyzD(0123456789_ @(L < 7BZ GBZ ZZ) IBZ CL0roBTCALR=;INbtcalrin00tp ReP t;k;l1;l2;b;W 0ȸrr8ruP r;b(/brlU[1;])0 8PY >CZ 7 7BZ 7 L L/, GBZ,/YP8 bb/br[b]lU[0;lU[1;]r[b]]8    Pva u> BZ,, BZ  HBZ H,/BZ YP8ZZ/Zt~/M[Z.+l]Zt/Z8?( BZ K Ik;(( CZ K H (Dt [% H H Z,BZ, KW]-10,+\l2] Dl0 I%Z  lRP$/W 9 P(Z"/$ 4 4oSr aL eCZ   Z 5 $$ RS Pu P;Te$(arg length error(D , Q HCZBZCZ @ckageDeXnnLNsVNCtrRnvey70'.a69epa67an 60erw55;ra50plc45e n40' y35.lC30ntx27f a25jet15  10  4t o 3m|aaosr, danb 1990 This function will search and replace all occurences of strings and their replacement passed as right argument in objects whose names are passed as left argument. 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) L perform a left syntaxic search R perform a right syntaxic search exclude global items ; exclude localized items I case insensitive  return a result instead of the usual by line display By syntaxic search is meant not preceeded (or followed) by a letter, digit, , , or characters. 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 portion of name endings in '...abc' by 'X' 'x y' osr '.lrCt .abc.f' syntaxic replacement of 'abc' by 'f' in objects x and y not within text or comments 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. DanB 1991 19|cR0B89:(970101oSr)88 0$ 92FX mV 90Pu$$| oSr(1+91)oSr $ B dEf94dEf 46$Kosr$PS81:(oSr)86 $O7 $ the searching fn$ 2[3]83T 90FX((90)'RS Po P;T'),[0.1]90'SSPR\S\T10,TS/P'T$S dEfFREAD 2oSr [$@g account for APL mode (include statements)@H 78$Q 99(~2[6])0 $E 79J 78@85:90FX((90)'mmV v;d;l;io'),[0.1]90@(I 9393/93\91 (<? 93211,(,1)20,(2FSIZE 11),1<(@G 92(2,0.51)1( 78:97/82 @ Y 94/76 93dEf   dEfVR 91 J77:942>93  'NOT ',91 @ $ lU2 26AlL J X, 90FX((90)'RS Pu P;T'),[0.1]90'R\PS\T10,TS/\10,P' XH 74,941 ܰrg  192[;0] PL 9090,(91/2[7 8])/'s11s/sT=1T' header length1P  292[;1] X \ 9477ef `86:(99)0 hoL  2[9]84 sr \ 90'io1l1l-1+1l(~d)/ddmv,d1vm(d)(,dl./l,d0)\d/m'\ 97/82P 90'Rv SrH T;M;s;Z;l;N;t;S;IR0 2I0N1Mv HiD T',91PJoss9[a((Z("Zx.ZDZX%Z Z\$ZZZ\Z)Z'Z)Z%Z Z*ZdZ+Zh Zt-Z Z/Zh ZZTZ-ZZ 'ZZ $ZZ Z Z Z4 Z 8ZZ ZZxZZ+ZZ%ZZZ8Z)Z4Z*Z(,ZZ$ZZ`,ZZD)Z|ZZZHZ.Z"Z,Z,Z#Z,0Z(ZZp#ZTZZZ<+ZY ZZ!$ZXZ"XZY#/Z$Y$+ZY%.Z Y&|%ZY'-ZY(&ZZ)ZZ*%ZY+#ZpY,Z Z-8Z Z-Z Z-Z Y.XZPY.&Z Y.ZY/d/ZY0-Z8Y0ZY1$ZY1XZ1Z28ZY2<*ZY2ZXY3*Z4+Z4<#Z4Z5-Z Y5H/ZDY5,'ZxY5ZY6#Z6\*Z7)ZY8 )ZdY8)ZY8ZY8ZY9ZY9Zt'Z9(ZY:/Z:$Z:Z;ZL'Z; 1Z\YCZTScPDosshow 5789:;<=>?@ABCDEFGHIJKLMPQRS TUV.W/X2Y5Z6[7\8]9^:_;qdsa8- 9292/9292=91(1+794)/91 h88- 9090,'bctt>(lb^m'''')Po a'884 (0' '=(93(-93)1)dEf)76 48PX 92FX mV 91,(93)/90,'rr',938D. 92FX((90)'tp ReP t;k;l1;l2;b;W'),[0.2]90 D,|k75:dEf FREPLACE 2oSr 1,D (909999+9290~010def 1dEf)/78 YD41 oSrNL 3 danb 1990-2000 V2.7]4,H1 AlLAlL,'0123456789_'(,4N (Sr(111)/10[1]Sr)864,M 9090,2[9]/'TuP T' 2,<l@88:oSr1(111oSr' ')/oSr,' ',oSrBY<$ (NC'oSr')/89 $<A 9090,'ZZ/Zt~/M[Z.+l]Zt/Z'Y<DdM 90FX mV'ruP r;b(/brlU[1;])0',90 tD(/ 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]'l<A 9090,'l9:(N>II+tZ1)/l0RR[R;]'ss<<L (94~(NC 91(oSr' ')oSr)3 4)80 0< E 91,'dEf' ( CZ 5Y(,  LBZ, ,0C oSr93[3]-980,93[3],0 dFn00h AlL,AV[(AV'Aa').+26] D B099 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;osr]d(O83:91'rv HiD m;l;c;t;b;arlm=cR(v>''''7m)2rrl Po rmr'']'''dFnd 81  80:dEf91 $74:(dEf)78 $L- 90'bctt>cl Po(m'''')>ttl Pu tm''''''''' 8;L 91[0]0(t (' '10dEf)78 sro(P 87( 93[2]1[2]2[2] ((< Sr[93]uP Sr[93](  dEf94dEf   82@NcoSr,087:99'arg length error' ,<L 90dEf((193),190)90mV dEf2[9<8M (20(91/91Sr1Sr),Sr)/08D N 91(/2[4 5])/'S1~TAlL' header & row 1D8PN 90'bb/br[b]lU[0;lU[1;]r[b]]'8,t. (0.>9493-90)76 ,,D0. 9090,'l0:ZM<(Sr[0[2I]+l1[I]]T)',92---D8N84:9693,'',[0.1]2[3]/'btc'9388T- 1(10)-101-11-1110C84N 91[92],((+/94),8)'''a)('''44- 9090,'a,ma(''''=a)',4914R8`? 9090,'l4:(^/t\Z10,l+Z)/l6ZtZl4l6:RR,[0]Z,[.1]IM[Z.+l]1'Fn`$G cRTCNL$ (^/2[7 8])86$q9$E76:9999+92 Y$$ S dEf90 ReP dEf Y$h8K 9491=9219191,uP 91'/nc/cr/vr/alx/elx/ex/idlist/at/stptr/idloc/size/lock'a hhG IO0 |DrEchosrhow8TnOp8 9090,91/'(',2[7]'~/sZ)l9'88T 92(2 12/2[4 5])/'^S^(1+1[I])S']'8D 97/75 @079:(092''9094 SrH dEf,cR,dEf)/780@hg,82:(/1oSroSr+98)/86 ,Hq 95122 11'BTCALR=;INbtcalrin'10[1]Sr HH if a variable, we try detecting a fn representationHf <Pdescribextr_n_N_zPdefqsp4 99(99),' replacements made.' 34 xFrl74nl5 bufXfrObjsallrecthdl@writeobjtiecptlim,amrGXhandle,Hl20source97pl10toreadnOaoNStIeP5Lf7lImtrEf99s(SrHPuPmVdEfSr<98lUrRePdHiDopenfilel30PeNdxAlL`asnLread$xl|closed95(92<1<93@iTems91296Po94xPuP0readBuf90XfrIDpCfiLewiNwSD sScR489 75\8883p8785H8481 767977HW97W9878vAl74W87W93W95obJret W91482dW92880W90p86$W96obJ\W99xfre0W83lNmW86i9W84W85DW82F5XW81XW88infileDW89EXPM8xW94osresfn4dlmHb\tfXl05createell25sD Xmatcom(l60 xfrfileforiPselNaMsCRLFnd_F_7formePnames line0,id_bUfdFnX96X95X94X93X92X91 X90 X894X88Hp3cnvR_ Pncfix0'changea cl[HmFfiLe4xatdefinenpsinWsE nl2op DFxO_Dv_, l120,fns@id'To_|Pexl15vaLue8all2xlatesysIDBlcr 98X99`namesX versionxfr PinsX Plock PisIDdescribesr<XsDl160alline1q l130e X99 X98lX97Create@c_ b_(okPdefPPval(Pchkcopyrightx@PackPpdefcOden L x arDM f1] ' vTEsiz ap@6maCZFH CZ|CZdCZHCZ,CZCZBZBZBZBZBZBZH  P equivalence d ? ZWP    <z8N,g