`<(+<,Q( H0p\H,D$@ x 8` t|X!|(l 347d?XE\I(MhN4O(,Returns the address (file,component) of object as TIE#, CPT (0 if not found) DanB 1992 Syntax: ]ADDR object /FILE=ucmdfile (default primary file) Returns the address (file,component) of object as TIE#, CPT (0 if not found). Useful when manipulating UCMD files.>(align comments in functions at column DanB 1992 Syntax: ]ALIGN fn1 [fn2] [...fnx] /COL=[40] Align comments in functions at column (COLumn, if not set, defaults to 40) 4>( DM>(ii RW ARRANGE MAT [1] rearrage matrix to fit Wide then insert CRs [2] RVM DEB W FIT MAT >(  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~>(\ ZAV V;A;ELX [1] indorcharAV charorind -- Convert chars to 0-origin AV indices and vice versa [2] ELX'ERROR(^\DMTCNL)/DM'  Copyright 1985, APLics Oy [3] A(STPTR 'V Z')CALL 21328 10101 1934 24282 6 896 32258 13054 15360 32514 9978 3723 8 29914 2582 23296 13392 13053 22728 7333 29917 29161 13018 29953 12068 31773 2243 3189 572 1908 16333 21588 798 21045 15114 30207 21818 2078 203 >(!!BIND workspaces to a specific APL interpreter DanB 1993 Syntax: ]BIND INTERPRETER[.EXE] WS1[.AWS] [WS2[.AWS]] /EDIT /BANNER=name /EXE= Allows to BIND an interpreter with specific workspaces. For versions 8 to 10 banner switches are provided: /EDIT allows to edit the banner /BANNER=name allows to set the banner to the contents of the variable 'name' For version 11[+] (determined by the presence of the /EXE switch) the .EXE file is given as argument to the switch. Names may be preceded by path as in H:\APPS\MYRTS. Ws names may be preceded by = in which case the .EXE's path will be used, ex: ]BIND I:\APL\PROJECTX\MYINT =WS1 =WS2 /BANNER=PROJECTX_BANNER or with the lib #: ]BIND 21 MYWS /EXE=TRYTHIS by default the large interpreter is used (not the APLX).LX)>(BenchMark expression(s) DanB 1993 Syntax: ]BM exp1 'e x p 2' ... /N=[100] Will execute each expression N times (default 100) and return MF result. >(ĿóĴ³ĿǺĴҺгĿƳ͵ѳϳĿ̺͵˺ʳķóͳĽķǺĶҺкĽķƳ͹ѳϺĽķ̺͹˺ʺĽ͸óĴ³;͸ǺĴҺг;͸Ƴ͵ѳϳ;͸̺͵˺ʳ;ͻóͳͼͻǺĶҺкͼͻƳ͹ѳϺͼͻ̺͹˺ʺͼ>(__lists references calls made by a function DanB 1992 This command will produce a list of all the calls made by a function. Syntax: ]CALLS fn /FULL /MAXLEVEL It will allow to see all objects referred to by a given function with repeated procedure for each function called. Each name is preceded by a symbol. Its meaning is global object (not a visible function) F visible function R recursive function local object ! unreferenced local object l unreferenced label L referenced label  global local (global localized at an upper level) Example: ]CALLS fn /FULL will show all objects in each fns called by 'fn', repeating the the procedure for fns already shown (except recursive calls). This may seem redondant but consider the following: fn f1;io f2 [1] f1 [1] f2 [1] io [2] f2 [2] [2] f2 refers to io globally. In 'fn', f2 refers to the global io in the ws. When called by f1 it refers to the local io in f1. [1] Xcalls 'fn' will produce 2 different outputs for f2, one from 'fn' and one from 'f1' because the /FULL switch as been set. ]CALLS fn will show all objects in each fn called by 'fn' but won't show already shown functions. In this case the second output for 'f2' won't be present and therefore show the local reference to io. ]CALLS fnx /MAX=1 will only show the fn itself (1st level) Note that is being taken in account but that its use may not be interpreted properly. Text in functions with is scanned between the character and the next  character on each line where it appears only. This also applies to ELX, ALX and error trapping ({errmsg:code}).d>( CLEARMF;IM;R;IO [1] CLEAR MAINFRAME OF ANY PENDING OUTPUT AND DISPLAY [2] IM 13 10 0 32 32 32 32 32 32 7  (IMAV RSENDRAW '')IO0 [3] L:R  ((IM(-IM)R)AV[129]=1R)0  (IMAV RCOM1 ARBIN '')L >( CMDADDR O;FILE [1] DanB 92 RETURN COMPONENT OF OBJECT IN FILE [2] : ADDR [3] O'/= /FILE=' PARSE O [4] (FILE0)/L1  FILEFOPEN FILE [5] L1:RESULTFILE ADDR O >( CMDALIGN ARG;COL;FNS;T;CPOS;MAX;S;LAB;DLM;I;N;IO [1] DANB 1992: ALIGN functions at column [2] : LJUST LJUSTOBJ [3] IO1  DLM1ARG1'/COL=' PARSE ARG check switches [4] COLCOL DEFAULT 40 [5] L1:FNS(1+IARGDLM)ARG  ARGIARG [6] (3NC FNS)/L3  OUT FNS,' NOT A FN'  L4 [7] L3:T\''''=FNS(1 2 T)TCR FNS [8] (II/I1LAB)^0LAB(<\FNS[I;]':')+.1S [11] FNS[I;]NT[;MAX],(1MAX-COL+N+LAB)LJUST(0,MAX)T(-N)FNS[I;] [12] OUT FX FNS [13] L4:(ARG)/L1 ~+ CMDBM ExP;Cr;Ff;N;b;SPACE;SEG [1] DANB 1993 BENCHMARK EXPRESSIONS [2] ExP is a regular [blank] delimited list of expressions [3] ExP'/N= /SPACE[=]' PARSE ExP  NN DEFAULT 100 [4] (0SPACE)L1  (1SPACE)L0  SPACE'_' [5] L0:ExP[b/bExPSPACE]' ' [6] L1:CrVTOM ExP  bCr.' '  Cr(b\''),(b\''),Cr [7] Use asignment line as reference [8] ExP1 MF FX Cr'Ff;' OVER Cr  bWA  bOUT ''  bWA [9] Garbage collection & VWS swapping time aside [10] SEG  0 1 3 POKE 980 985 [11] L:Ff  (0(, CMDCALLS Xf;Xfs;IO;Xst;Xnl;Xbr;Xs;FULL;MAXLEVEL;Xml [1] DanB 840921 all objects of all calls made by argument [2] /FULL is Full Search (repeat search for already processed fns) [3] /MAXLEVEL is maximum level to look for [4] : CMDCALLS CRFROMVR Xc1 Xcompare Xdf Xeq XfR Xft Xgensymb Xmv Xqz Xrd Xtreegen [5] Xf1'/FULL /MAXLEVEL=' PARSE Xf [6] XfsFULL  XmlMAXLEVEL DEFAULT 9999  IO1  Xbr 0 0 '' [7] Xst(1,Xst)Xst'',XnlXf [8] Xtreegen Xf >( CMDCOMPARE W;C;NLINES;OBJECT;S;SHOW;T;WS;WorkFile;ZONE;cr;s;ws1;ws2;ELX;;LOAD;IO;DM;DROP [1] DanB 921105 comparison CMD [2] : CMDCOMPARE clearfile comparefiles SVM compv compack compbool PVAL fit [3] : compfn compind compvar display fncr jdmr1 mcomp unique vm PCHK PNC [4] IO1  0ELX'DM' [5] W'/DROP[=] /LOAD /NLINES= /OBJECT= /SHOW= /ZONE= /WS /= ' PARSE W [6] Default values for each switch [7] LOAD')',LOAD'XLOAD ' [8] NLINESNLINES DEFAULT 12 [9] SHOWSHOW DEFAULT 1 2 2 [10] ZONEZONE DEFAULT 2 [11] WorkFile'WCOMPARE'  crTCNL  W1(C1CW' ')/W [12] C 1 2 1 2 2 1 0 [4 12 10 26 6 2 21,VI W] where to cut [13] ERROR(0C)/'COMPARE ARGUMENT ERROR' [14] C((' '=W)/W)[C]  ws1(C-1)W  (^/T'='ws2CW)/L10 [15] ws2(T/ws2),(-(ws1)' ')ws1 Replace '=' by 1st filename [16] L10:(0DROP)L12  Tclearfile  L15 [17] L12:(1DROP)L13  DROPDROP+10=DROP1FI DROP [18] L13:WorkFile FSTIE T1+/0,FNUMS [19] C3+1FREAD T,S1+1FSIZE T  (1=DROP)L14  C-3+1FREAD T,S+C [20] L14:FDROP T,C [21] L15: [22] TFX 2 3 's sCs'  C'(FIFO APL'  T101 SVO 'C'  MF [23] TFX 2 13 's s 1INBUF s,cr'  PC [24] (WST0OBJECT)F  TOBJ [25] L18:ELX'DM'  SLOAD,ws1  (ws2)/L20  ws2ws1  S0ws1WSID [26] L20:s S  s ']TWS'  s LOAD,ws2  s ']TWS'  [27] s ']COMPFILE /NLINES=',(NLINES),'/SHOW=',(SHOW),'/ZONE=',ZONE  [28]  [29] OBJ:S')COPY ',ws1,' ',OBJECT  (ws2)L30  S0ws2ws1 [30] L30:s S  s '1CR''',OBJECT,''''  s ')COPY ',ws2,' ',OBJECT [31] s '2CR''',OBJECT,''''  s ']COMPMAT 1 2'  s 'FX 1'   [32] F:ELX'L18'  ws1 comparefiles ws2  0 ?(W W CMDCOMPFILE i;IO;ws1;ws2;n1;n2;r1;r2;c1;c2;c;n;m;lim;show;p1;p2;obj;t;s;WorkFile;SHOW;ZONE;NLINES;CR; [1] danb 840701 ws comparison using files [2] ]tws must have been run on each ws prior to using this fn [3] objects are put in order in the file for 2nd ws (fns & vars only) [4] :CMDcompfile SVM compv compack compbool compfn compind compvar display [5] :fit fncr jdmr1 mcomp timen unique vm PCHK PNC PVAL [6] IO1  CRTCNL [7] ''  i'/ZONE= /NLINES= /SHOW=' PARSE i [8] WorkFile'WCOMPARE'  NLINESNLINES+120NLINES''FINLINES [9] ZONEZONE+20ZONEFIZONE  t0SHOW  SHOW(t/ 1 1 2),(~t)/FISHOW [10] (1t((0 11 FNAMES)^.=n11WorkFile)/iFNUMS)l0 [11] n FTIE t((i)i)0 [12] l0:ws1FREAD t,is1FSIZE t  p1(nws1'')ws1  ws11nws1 [13] 1st ws name and ts. Other info may follow. [14] [15] the file will have to be read several times [16] first, find all obj names in each ws [17] SHOW: 1=show names ;2=contents ;3=both ;0=nothing [18] show, 2 2 3SHOW [19] r21c2n2FREAD t,s+3+r11c1n1FREAD t,s+1 [20] ws2FREAD t,s+r1+2  p2(nws2'')ws2  ws21nws2 2nd ws [21] i1c1  i0,i1c2  n1(ic1)n1  n2(ic2)n2 adjust dimensions [22] [23] names known, display header [24] n'G< created 9999/99/99 >,G' format [25] OUT '*** Comparing ',ws1,,n FMT 100 2 1 3 timen FI p1 [26] OUT ' with ',ws2,,n FMT 100 2 1 3 timen FI p2 [27] OUT CR,'Report',,n FMT 100 2 1 3 TS [28] [29] obj' outstanding objects in ' objects not appearing in the other ws: [30] (^/c1~i0=n2 MATIOTA n1)/s4 [31] OUT CR,'***',(4 0 +/i),obj,ws1  show[4]/'OUT fit 0 1in1' [32] show[1]s4  nci/i  lims+1  i0 show individual objects [33] b3:(n1P)/L8  A(A' ')/AP[I;]  II+1 [7] (~VI A)/L10  (I>1P)/L8  AA,' ',(T' ')/TP[I;]  II+1 [8] L10:(I>1P)/L8  B(T' ')/TP[I;]  II+1 [9] (~VI B)/L9  (I>1P)/L8  BB,' ',(T' ')/TP[I;]  L9 [10] L8:ERROR 'You must provide two file names' [11] Read the file directories [12] L9:TNFNUMS  T1FOPEN A  HFREAD T1,2  A1FREAD T1,H[2] [13] N1FREAD T1,H[3]  A1A1[IAVA1;] [14] T2FOPEN B  HFREAD T2,2  A2FREAD T2,H[2]  N1N1[I;] [15] N2FREAD T2,H[3]  A2A2[IAVA2;] [16] N2N2[I;] [17] Find new and missing objects [18] F0 flag set if any differences [19] JA2 MATIOTA A1  (~0J)/L3 [20] TCNL,' Objects found only in file ',A,':'  FIT(J=0)A1  F1 [21] L3:JA1 MATIOTA A2  (~0J)/L4 [22] TCNL,' Objects found only in file ',B,':'  FIT(J=0)A2  F1 [23] L4: [24] AA,':'  TB,':'  A((A)T)A [25] B(A)T  I0 [26] L1:((J)ZI3,I3,2P<:>ZI3' FMT 1 6 100FTIMEREP N1[J[I];3] [31] t1'CNH'[IO+ 0 0 20V1] [32] ' In file ',A,' [',t1,'], =',(V1),', Last mod=',T [33] T,'I2,2PZI3,I3,2P<:>ZI3' FMT 1 6 100FTIMEREP N2[I;3] [34] t2'CNH'[IO+ 0 0 20V2] [35] ' In file ',B,' [',t2,'], =',(V2),', Last mod=',T [36] (^/(2(V1),V2),'C'=t1,t2)/L5 [37] TCNL,' ' [38] L1 skip comparison if not char vector or matrix [39] L5:(2=V1)/L6  (N1[J[I];1]=3)/L5F  V1TCNL MATRIFY V1  L6 [40] L5F:V1CRFROMVR V1 [41] L6:(2=V2)/L7  (N2[I;1]=3)/L6F  V2TCNL MATRIFY V2  L7 [42] L6F:V2CRFROMVR V2 [43] L7:V1 compfn V2  L1 [44] L2:(~F)/'No differences.' ?( DD CMDDRAW NAME;B;C;H;L;LE;MAT;N;S;V;W;WE;c;IO;MASK;STYLE;R;LR;TB;TH;TV [1] DanB 94 DRAW LINES according to characters in MAT. Version 2.1 [2] EX.: + + + + [3]    TEXT  Try ]DRAW CR 'CMDDRAW' [4] IN THE MIDDLE [5] + OF +THE +LINES + + + [6] /STYLE allows to draw with single or double outside and inside [7] /MASK allows to mask out the text [8] WHERE [9] IO0  R,MATNAME1'/= /STYLE= /MASK' PARSE NAME [10] C,Borders[2'12'4(STYLE DEFAULT '1')~' ';;] [11] c' ',C[11 7 20 11 11 24 18 7 0 7 6 4 16 8 12] [12] cc,' ',C[1 5 20 1 1 24 22 5 0 5 10 4 2 14 12] [13] (2MAT)L10  MATMATRIFY MAT [14] L10: [15] Find outside markers [16] SBMAT'+',Borders[;0;0],Borders[;0;4],Borders[;4;4],Borders[;4;0] [17] H\B  VB [18] Find inside markers [19] LLETH),0)+4C/, 0 1 0,LLE^TH [24] TVNN+(8C/, 1 0 (WWE>TV)0)+2C/, 1 0 0WWE^TV [25] R[WHERE C]c[N] [26] find outside borders to redraw [27] R[WHERE,BTB]c[17]  R[WHERE,BLR]c[18] [28] [29] MASKL15 bring back text in result plus 1 space on each side [30] B,(0 1 B,1)B^ 0 1 1,BMAT'+ ',(,Borders)~' ' [31] R[WHERE B]B/,MAT [32] L15:(2=NC NAME)L20  NAME'RESULT' [33] L20:NAME,'SR' ?(mm CMDED A;B;C;D;E;F;N;P;FILE;IO [1] DanB 92 Edits objects in the current file [2] /FILE=file will act on different file [3] : ADDR NC EDIT OHL [4] IO1  A1'/FILE=' PARSE A [5] For ONE object only. [6] FILEFILE DEFAULT UFILES[1;] [7] P(FOPEN FILE)ADDR A [8] (P[2]0)1  OUT 'Object not on file.'  0 [9] 1:(B1.1,IDLOC A)2 [10] 'Object in stack. Definition won''t remain in WS.' [11] 'Press return to continue.',TCBEL  D beep and let user read msg [12] 2:NFREAD P  F('RE',B/';',A),TCNL,'[1]' [13] (B~2P[1]NC A)4 [14] D'VR A'  FF,'ADEF N'  5 [15] 4:DA  FF,A,'N' get value of variable [16] 5:FF,'EDIT A(RND',D,')/0',B/'OHL A' [17] FF,'D FREPLACE P' [18] (4~DEF F)'NOT changed: ',A ?( CMDEDL A;B;C;D;E;F;N;P;HEADER;LOCALS;FILE;IO [1] DanB 93 Edits objects in the current file. Show LOCALS upon completion. [2] /FILE=file will act on different file [3] : ADDR NC EDIT OHL XfR Xeq Xc1 Xrd Xmv Xqz Xft [4] A1'/FILE= /HEADER' PARSE A  IOLOCALS1 [5] For ONE object only. [6] FILEFILE DEFAULT UFILES[1;] [7] P(FOPEN FILE)ADDR A [8] (P[2]0)1  OUT 'Object not on file.'  0 [9] 1:(B1.1,IDLOC A)2 [10] 'Object in stack. Definition won''t remain in WS.' [11] 'Press return to continue.',TCBEL  D beep and let user read msg [12] 2:NFREAD P  F('RE',B/';',A),TCNL,'[1]' [13] (2NC A)/4 [14] D'(VR''',A,''')'  FF,'ADEF N'  5 [15] 4:DA  FF,A,'N' get value of variable [16] 5:FF,'C',D,'EDIT A(RC',D,')/0',D,' FREPLACE P' [17] (4~DEF F)'NOT changed: ',A ?(SS CMDFIT mat;IO;w;p;f;dim;WIDTH [1] DanB 840614 reshape char mat to fit pw. LONG command. [2] w:width; f:no of folds; p:page length [3] IO0  mat'/= /WIDTH=' PARSE mat [4] WIDTHWIDTH DEFAULT PW [5] fWIDTHw1dim 0 2 +mat [6] dim[0]fp(1dim)f [7] RESULT(p,fw) 1 0 2 (f,p,w)dimmat ?( CMDFNSLIKE STR;R [1] Return all functions containing pattern STR [2] STR(+/^\' '=STR)STR [3] RESULTSTR PATMATCH NL 3 ?( CMDFORI exp;N;f;I;I;IO [1] Execute expression FOR I:=limits[2] [by count] [2] IOGLOBALIO [3] I\<\exp SS '/I='  ERROR(~/I)/'/I= must be present' [4] I3I/exp  exp(~I)/exp [5] (2 3 =N,I)/2,3  NIO,N-~IO [6] 2:NN,1 [7] 3:((1N)=-/2N)0  I1N [8] I18,exp  expIexp [9] IFX(3,I)(I'f'),exp,I'',(I<0)'1N-II+I'  [10] IN  N11N  f [11] DANB 92/11/27 WILL exp FOR I:=N[1](OR IO) TO N[2] ?( dd CMDFRDCI ARG;CMP;DISPFMT;J;LP;Q;STOP;TN;TYPE;WHO;START;S;SKIP;EMPTY;STOP;LOCK [1] DanB 940810 from MF - display FRDCI for each file cpt [2] Q'/EMPTY /LOCK= /SKIP= /START= /STOP= /= ' PARSE ARG [3] TNFI Q  (1VI Q)L1 [4] (IFERRIN 'TNFOPEN Q')L1  '*** UNABLE TO OPEN THAT FILE'  0 [5] L1:SFSIZE TN,LOCKFILOCK  STOP(S[2]-1)J+99999990=JFISTOP [6] JS[1]1FISTART [7] OUT 'FILE NAME: ',FNAMES[FNUMS''TN;] [8] OUT 'FILE FSIZE=',S  OUT '' [9] (J>STOP)EMPTY  SKIPSKIP DEFAULT 1 [10] CMPFRDCI TN,START Trap access error ? [11] DISPFMT'I5,<: >,A1,I8,I2,2I9,I7,X1,80A1' [12] OUT ' CMP T SIZE WHO',22'WHEN Shape'  [13] LOOP:CMPFREAD TN,J,LOCK  (EMPTY<0QCMP)SKIP  Q 1 30 30Q [14] S'BHIiCR',,'I1' FMTCMP  TYPES[11 807 323 163 82 645 326 DR CMP] [15] SFRDCI TN,J,LOCK [16] OUT DISPFMT FMT(J;TYPE;S[1];CMP;S[2]; 1 2 100 2 3 3S;Q) [17] SKIP:(STOP,A1,< >,70A1' [21] OUT ' CMP T shape'  [22] (LP(STOPNLOOP),DONE)[JSTART] [23] NLOOP:CMPFREAD TN,J,LOCK  (EMPTY<0QCMP)SKIP [24] TYPE'b MIiCR?'[11 326 807 323 163 82 645 DR CMP] [25] OUT DISPFMT FMT(J;TYPE;Q) [26] (STOP.='''')Xr'  [13] XbrXnl 0 0 Xfs1 full search [14] XstFX((Xst)'Xl Xdf Xr'),[0.1]Xst  [15] Xst(1,Xst)Xst'',Xn [16] Xtreegen Xn [17] RESULTXrd Xnl [18] FMT0  PW78  RESULTRESULT[AVRESULT;] [19] Xnl(' '.Xnl)/Xnl(Xbr3=NC RESULT)RESULT [20] Xst'REQUIRED SUBROUTINES:' OVER 1PW FIT Xnl [21] Xnl(' '.Xnl)/Xnl(~Xbr)RESULT [22] XstRESULT' ',Xst OVER 'GLOBAL VARIABLES:' OVER 1PW FIT Xnl [23] UPD0 [24] Xnl(Xnl[;2].'>')XnlCR Xn  Xst1++/^\''=1Xnl[;1] [25] RESULTFX Xnl[Xst;]OVER('','>',RESULT)OVER(Xst,0)Xnl ?( CMDHEX N;IO;CHAR;BACK;HN;I;X [1] DanB 93 HEXADECIMAL OF N (INTEGER or CHARacter) [2] R(N)4. Works BACKwards using /BACK [3] IO0  X'0123456789ABCDEF' [4] (''1N1'/= /CHAR /BACK' PARSE N)/5  N1N [5] 5:BACK/30  CHAR/10  NFI N  20 [6] 10:NAV1N [7] 20:RESULT,' ',X[(416)N]  0 [8] 30:HN0 Working BACKwards, N is hex [9] 40:(N^.=' ')/50  HNHN,16X(IN' ')N  N(I+1)N  40 [10] 50:RESULTHN  CHAR0  RESULTAV[HN] ?(cc CMDHISTORY n;v;h;t;c;VERSION;IO;s [1] DanB 850708 update historical information. [2] If n>VERSION then it is newer ver no. otherwise it is increment. [3] If 0 use current no. [4] s'/= /VERSION=' PARSE n  nVERSION DEFAULT 0 [5] v'WSVERSION'  h'HISTORY' var names [6] (0NC v)/v,'1'  cv Current Vn [7] (n0)/'cn',(c>n)/'+c' adjusted [8] (NC h)L1  t 1 30 30'Version Date Description'  h,'t' [9] L1:t(5 2 7 0 c,1001003TS),s  v,'c' [10] n(t)1vh  v((1v),n)v  tnt [11] h,'vt' [12] OUT 'Commented Version ',c ?(bb CMDINPUTXT VAR;I;CR;IN;NEW [1] DANB 1993 INPUTXT INTO VARIABLE [2] (NEW0=INC VAR)L10  ERROR(2I)/'INVALID NAME' [3] VAR,' contains ',(VAR),' characters' [4] L10:IN0'END INPUT BY SPACE,CR'  CRTCNL [5] ((0I)^' '^.=I)/END  ININ,I,CR  LC [6] END:IN1IN DROP LAST CR [7] VAR,'',((~NEW)/VAR,','),'IN' ?( -- CMDKEEPFNSOF FN;O;ALL [1] DanB 941026 Keep all the fns related to FN [2] (FN^.=' ')1  FNLX [3] 1:ERROR(3NC FN)/'INVALID FUNCTION: ',FN(+/^\' '=FN)FN [4] OFN OVER UCMD 'GLOBALS ',FN,'/FULL' [5] (+/EX(0=O MATIOTA ALL)ALLNL 2 3),' objects erased' [6]  h+ CMDLIBWHERE ARG;LASTLIB;I;N;LIB;B;ELX;LIBS;FILE;F [1] FIND WHERE RESIDES WORKSPACE(S) [2] I01  ARG1'/LASTLIB= /FILE' PARSE ARG [3] F'',((0 0 1 =FILE)/'WSF'),'LIB LIBS[I]' [4] LASTLIBLASTLIB DEFAULT 999 [5] LIBS(LIBSLASTLIB)/LIBS(VI LIBS)/FI LIBS,LIBS [6] ELX'ERR' [7] L10:((LIBS)?')10  CI'a' [16] STRING[S/S]AV[(-/AVCI,'a')+AV(SSTRING26C)/STRING]  [17] 10:S 0 1 +C2FSIZE TIEFOPEN FFILE DEFAULT 'MONITOR'  NEXT1C [18] OUT 'File <',F,'> tied to ',(TIE),'. Component range is ',S [19] If arg has 2 #s they represent the limits, 1 # a range, 0 # all [20] (PD^0CARGARG,(PD)1003TS)/80  C40,30 [21] S(S[1]1ARG),ARG[2]S[2]  40 [22] 30:F0ARG  S(S[1]C[1]),S[2]1CS[1+F]+F0,ARG-ARG [23] 40:(>/S)/130  WS0/22CPTFREAD TIE,C1S  CPT22CPT [24] (/WS SS WS)70 (/(WS,  CPT)SS WS)70  CPT2  CPT [25] 50:USER FSYSCTRL 1018,ID11CIFRDCI TIE,C  (USER=.=0,ID)/70 [26] 50:USER0/ID11CIFRDCI TIE,C  (USER=.=0,ID)/70 [27] (STRING)60  (/(,CPT)SS STRING)70 [28] 60:OUT 'Entry ',(C),', ',USER,' (',(ID),') ',WS,' ',,,63CI [29] OUT CPT  OUT '' [30] 70:40,SS+ 1 0 [31] Arguments are dates [32] 80:CTSTOmSEC(C,7) 0 100 100 ARG+19000000999999>ARGARG [33] ARGC+(DATE)36001000000241+20=1 7 86400000000 C  CS [34] 90:(1-/C)/100  C[1+ARG[1]<2FRDCI TIE,F]F0.5+/C  90 [35] 100:ARG[1]1C  CS  (2=ARG)/110  SARG,1S  40 [36] 110:(1-/C)/120  C[1+ARG[2]<2FRDCI TIE,F]F0.5+/C  110 [37] 120:ARG[2]1C  40,SARG [38] 130:SNEXT,1+F(FSIZE TIE)[2]  NEXTF [39] 140:WAIT0  ALX'END'  40,DL WAIT [40] END:TCNL,'*** MONITOR ENDED ***' @( CMDMORSE STR;F;LD;LP;LS;IO;LIST;FREQ;PER;TEST [1] USE SOUND TO SEND STR IN MORSE CODE [2] IO1  STR1'/TEST/FREQ=/PER=' PARSE STR [3] FFREQ DEFAULT 1024  LPPER DEFAULT 50 [4] LS0.5LD2.5LP LENGTH OF SPACE,DASH,DOT [5] STRUPPERCASE STR  LISTMorse[;1] [6] F(3 2 F,LP,F,LD,0,LS)[,3,[1.1]'.-'(1,Morse[LISTSTR;])~' ';] [7] SOUND TESTF  TEST0  RESULTF T@( CMDNOCLASH NAME;;LOC;L;T;STEM;B;N;IO [1] DanB 92 - Change all local names in NAME to 0, 1, 2,... [2] NAME'/N= /STEM= /= ' PARSE NAME [3] N1000N DEFAULT IOGLOBALIO [4] STEMSTEM DEFAULT '' [5] LOCUCMD 'OBJECTS ',NAME [6] keep only label or non-sys local [7] LOC 0 1 ((LOC[;IO]'Ll')LOC[;2]>.='')LOC [8] remove ~ names if any [9] T2' ',' ',(L/B(T)(,T)SS '~')TCR NAME  BLB [10] TMATRIFY(,0,0,\B)/,T  LOC(0=T MATIOTA LOC)LOC [11] (1LOC)0  NAME,': NO CHANGE TO PERFORM'  0 [12] 0:N('<',STEM,'>,LI5')FMT N+(1LOC)-IO [13] UCMD 'OSR ',(,LOC,' ',N),'/X=TC/APL/LEFT/RIGHT/OBJ=',NAME @( CMDOBJECTS A;FMT;SORT [1] DanB 92 - return all objects used by FN [2] A'/FMT /SORT /= ' PARSE A [3] RESULTXfR VR A [4] SORT1  RESULTRESULT[AVRESULT;] [5] 1:FMT0 [6] RESULTXft RESULT @( CMDOHL FN_;M [1] Order Header Locals [2] (' '^.=FN_)10  FN_ALLFNS  20 [3] 10:FN_' ' MATRIFY FN_ [4] 20:OHL( FN_[IO;])  (0FN_ 1 0 FN_)20 @( CMDOSR CMDOSR;CMDLA [1] DanB - Object Search & Replace - Ver 4.5. Now relies entirely on OSR [2] RESULTCMDLA OSR OS CMDOSR @(  CMDOSS CMDOSS;CMDLA [1] DanB - Object Search String - Version 4.5. Now relies entirely on OSS [2] RESULTCMDLA OSS OS CMDOSS @( CMDRENUM NAME;;B;I;L;LOC;N;STEM;T;X;IO [1] DanB 92 - Change all labels in NAME to be in ascending order [2] Change them all to 1, 2, 3, ... [3] IOGLOBALIO  NAME1'/N= /X= /STEM= /= ' PARSE NAME [4] Switch /N= allows to start,increment, default IO,1 [5] IIO,1  (0N)/0  II2FI N [6] 0:NI [7] Switch /STEM= allows to change label Stem. Default [8] (0STEM)1  STEM'' [9] 1:STEMSTEM~' ' [10] LOCUCMD 'OBJECTS ',NAME [11] keep only label or non-sys local [12] LOC 0 1 (LOC[;IO]'Ll')LOC [13] remove ~ names if any [14] T2' ',' ',(L/B(T)(,T)SS '~')TCR NAME  BLB [15] I''  (X0)2  IX,' ' [16] 2:TMATRIFY I,(,0,0,\B)/,T  LOC(0=T MATIOTA LOC)LOC [17] (L1LOC)3  OUT NAME,': NO CHANGE TO PERFORM'  0 [18] 3:T'LI6' FMT N[IO]+N[1+IO]-IO-L  STEM(L,STEM)STEM  [19] NAME OSR '/TCALR',(,'/',LOC,'/',STEM,T)~' ' @(  RCMDSEND O [1] Send OBJECT to mainframe [2] CLEARMF [3] ERROR(~IMMEXEC)/'MF not in immediate execution mode' [4] (3 2 NC O)/F,V  ERROR 'Object undefined' [5] [6] F:SENDFN O  0 [7] V:SENDVAR O  0 @(__ CMDSHOW OBJ;UF;IO;FILE;N;DATA;DEL;PP;D [1] DanB 92 SHOW OBJECT ON FILE [2] DPP16  IO1  DEL1OBJ1'/DATA /FILE=' PARSE OBJ [3] (0FILE)L0  FILEUFILES  defined in UCMD [4] L0:UFFILE'*'(21,FILE)FILE [5] Try UFILES specified or ALL of them by default [6] L1:(0UF 1 0 UF)/NO  N(1+OBJDEL)OBJ [7] (02R(FOPEN UF[1;])OBJDATA N)/L1  DATAL5 [8] DR[2],(R[2 3]0)100 0 1 FTIMEREP 2R [9] L5:OUT N,' FOUND IN ',UF[1;],D  FREAD 2R  NEXT [10] NO:OUT TCNL,N,' NOT FOUND' [11] NEXT:UFFILE  (OBJ(1+N)OBJ)L1 @( CMDSIZE ARG;O;S;N;IO; [1] DanB 93 - FIND SIZE OF OBJECTS IN ARGUMENT. [2] /N=n Specifies the number of results to return [3] IO1  (''=1ARG1'/= /N= /' PARSE ARG)1  ARG1ARG [4] 1:(' '^.=,ARG)2  ARG(~ARG[;1]'')ARGNL 2 3 [5] 2:(2=ARG)3  ARGMATRIFY ARG [6] 3:OSSIZE ARG  (N0)/L  O((S)1FI N)O [7] L:RESULTARG[O;],(S[O].+,0),' ','.?FVC'[52+(0,3~)IDLOC ARG[O;]] [8] RESULTRESULT OVER 'TOTAL SIZE: ',+/S[O] @(L CMDTAG ARG;COMMENT;CR;I;B;WHEN;WHO;MON;EXEC;WHO;MARK;FN;IO;REP [1] DanB 92 - TAG function(s) with comment [2] IO1  ARG'/= /COMMENT= /EXEC /WHO= /REP' PARSE ARG [3] EXECL1  ARGARG argument is an expression to execute [4] BB1B' '=ARG,' ',ARG  ARGB/ARG into list single spaced [5] L1:ARG1ARG space at the end for [6] (0WHOWHO)L3 any perticular culprit preferred ? [7] WHOFSYSCTRL 1018,''AI MainFrame userid ? [8] WHO'APL id ',1AI [9] format to be specified according to taste - for example: [10] L3:WHO' by ',WHO [11] MON' ',(12 3 'JanFebMarAprMayJunJulAugSepOctNovDec')[TS[2];],' ' [12] WHEN2MON, 4 0 2 0 TS[1 3] [13] MARK' ' or whatever marking system may be desired [14] (0COMMENT)L4  COMMENT'' [15] L4:COMMENTMARK,WHEN,WHO,' ',COMMENT [16] L5:(' '^.=ARG)/EXIT  IARG' '  FNIARG  ARGIARG  [17] (0CRCR FN)L7 [18] L5,' is locked or shadowed' [19] this line to be commented out if removal of previous MARK undesirable [20] L7:CR(-2REP^MARK,(1,MARK)CR)CR [21] L5,':',DEF CR OVER COMMENT [22] EXIT: [23]  15 May 1993 by DanB this TAG line written by the TAG command ! @( CMDTIMEFMT NS;ARG;N;C;D;IO;DAY;R [1] Transform number of micro seconds into timestamp [2] IO0  ARG(NS)1000000  N86400  DNARG [3] DAYARGN by # secs in a day [4] RDAY+693902  RR-(R-N146097R)146097  N(N)-C36524R [5] RR+(R-C)36524  NN+C1461R  R365DAY58+R-(R-C)1461 [6] C3650  C[0 31 59 90 120 151 181 212 243 273 304 334]1  C(+\C)[R] [7] NR- 0 2 29 57 88 118 149 179 210 241 271 302 332 [C]+N [8] NN+100C [9] DAY10000100(DAY-R)365 [10] RDAY+N [11] CD100 0 60 60 D [12] D1RR,(C,1)D [13] RESULT(D,18)'G,G< 99:99:99>' FMT((/D),2)R @(## CMDTONFILE VAR;FILE;TIE;REPLACE;ELX;B [1] DanB 931119 Write VARiable TO Native FILE [2] VAR'/= /REPLACE /FILE=' PARSE VAR [3] ERROR(FILE0)/'/FILE= switch MUST be specified' [4] ELX'L10'  FILE NTIE TIE1+/0,NNUMS  ELX'DM' [5] ERROR(~REPLACE)/'FILE ALREADY EXIST'  0 NRESIZE TIE  L20 [6] L10:ELX'DM'  FILE NCREATE TIE [7] L20:VAR(1+VAR=TCNL)/VAR,VAR  [8] VAR[1+B/BVAR SS 2TCNL]TCLF [9] VAR NAPPEND TIE [10] (VAR),' characters written to file ',FILE @(P CMDTRACEBACK S;L;M;R;B;IO [1] DanB 940930 TRACE BACK use of strings (LONG arg) [2] For ex.: find where FSTIE is used and which fns use it and so on. [3] IO1  '# of fns: ',1MALLFNS  S(+/^\' '=S)S  B'' [4] only the 1st time do we include the comments [5] L1:(/R0,M OSS TCDEL,B,TCDEL,S)0 [6] '* used in'  S1(L1LS' ')/S,' ',RM [7] S[B/BS' ']TCDEL  B'C'  L1,M(~R)M @(  CMDTREF LS;I;F;IO;B;SyM;MaT;L;N;NaM;RECUR;SORT [1] DanB 940830 Contruct a table of references by LS (fns) [2] LS1'/SORT /RECUR /=' PARSE LS [3] MaTSyM 0 0 ''  IO1  (LS)L2 [4] LS(LS[;1]'')LSNL 3 [5] Remove localized items [6] FLS(0=(MATRIFY SINL[2;])MATIOTA LS)LS  L5 [7] RECUR is check recursively [8] L2:FLSMATRIFY LS [9] L5:(0F)L9  NaM 0 1 IXfR VR F[1;]  LI[;1]  F 1 0 F  [10] RECURL7  FF OVER B(0=LS MATIOTA B)B((L='')^3=NC NaM)NaM [11] LSLS OVER B [12] L7:N+/B0=IMaT MATIOTA NaM  MaTMaT OVER BNaM  [13] SyM(SyM,'.:'[1+0=5B])N(1,B1+(SyM)[2])'....:'  [14] SyM(SyM,'.')N(1,B1+(SyM)[2])'.'  [15] IMaT MATIOTA NaM  SyM[I;B]L  L5 [16] L9:SORTL10  IAVLS  LSLS[I;]  [17] SyMSyM[;I] [18] L10:I50.21LS add lines every 5th column [19] NBLS[I;]  B,B  B[L/LB' ']':'  LS[I;]NB [20] NBSyM[;I]  B,B  B[L/LB'.']':'  SyM[;I]NB [21] IAVMaT  MaTMaT[I;]  [22] RESULT((((1LS),1+1MaT)' '),LS)MaT,' ',SyM[I;] @(^^ CMDTWS 7;CMDTWS;5;6;8 [1] CMDTWSIDLIST 55  6ELX  7DM  81+/0,FNUMS  5'WCOMPARE'  ELX'1'  (5,' 0')FCREATE 8  2 [2] 1:ELX'DM'  5 FTIE 8 [3] 2:ELXALX'DM' [4] CMDTWS(CMDTWS[;IO]'')CMDTWS all CMD stuff starts with '' [5] 5(WSID,'', 17 0 WSTS)FAPPEND 8 [6] CMDTWS((7,1CMDTWS) 7 4 'LX DM ELXALXSI SYSGRP')CMDTWS(0 4 CMDTWS)CMDTWS [7] CMDTWS'VFG'[(7IO), 2 3 7NC CMDTWS],CMDTWS  5 6 0 SI [8] 55 FAPPEND 8,0/ALX FAPPEND 8,0/6 FAPPEND 8,0/7 FAPPEND 8,0/LX FAPPEND 8,0/CMDTWS FAPPEND 8 [9] 5(IO,PP,PW,CT,RL)FAPPEND 8  5(IDLIST 4)FAPPEND 8 [10] (0<1CMDTWS 7 0 CMDTWS)4 [11] 3:6(((1 3 4 /'VFG'=1CMDTWS)/'CRGRP'),' 1CMDTWS[IO;]')FAPPEND 8  (0CMDTWS 1 0 CMDTWS)3  [12] 4: SA action: clear ? @( CMDVARSLIKE STR;R [1] DanB 93 - Return all variables containing pattern STR [2] STR(+/^\' '=STR)STR [3] RESULTSTR PATMATCH NL 2 A( CMDWSLIB ARG [1] )WSLIB n [2] (ARG^.=' ')L10  ARG11WSID [3] L10:RESULT 0 11 WSLIB FI ARG [4] RESULTFIT RESULT[AVRESULT;] A( xx CMDXREF f;a;b;c;d;e;Cr;Fn;Ln;;IO;w;CMDXREF [1] Cross-reference function [2] wPW  IO1  CrTCNL [3] ' abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'  [4] (0=10w)0  wwPW17>w1w [5] (0=10f)10  ((1f3,f)FNUMS)110 [6] ((11f)>.2FSIZE 1 0 1 /f)120  Fn,FREAD f  40 [7] 10:(f^.=' ')20  f(f[;1]'')fNL 3 [8] 20:f1(a1af' ')/f,' ',f [9] 30:(f)0  ''  Fn(1+f' ')f [10] (3NC Fn)130  (aVR Fn)140  aFna [11] 40:Fn66Fn  Ln1+FnCr  ' ',(1+(LnFn)';')Fn [12] a'',LnFn  ba'  '[1+(+/a' ')+3''a] [13] Fn(ba),(Ln1+b+/(ba)'; ')Fn [14] (c+/bFn'')50  a(c+c+Fn)1 [15] a[, 2 0 .+(b/b)+2c]0  Fna\Fn [16] 50:Ln(FnCr)^(Fn)1Fn'['  (/aFn'''')60 [17] a~a\aLn\d(-d)1dLn/\a  Fna/Fn  Lna/Ln [18] 60:(/aFn'')70  baLn  a~\b\a(-a)1ab/a [19] Fna/Fn [20] Lna/Ln [21] 70:bb(-b)1bFn1 [22] (/bb\d(-d)1d(b/Fn)110)150 [23] ab^d\b  Ln(aLn)/a  LnLn/Ln  LnLn-Ln [24] ad/b  a(a/a),1+a  a/c(1a)-1a [25] a((c),a)(,c.a)\d/Fn [26] c2'[:'.=(b>d)/Fn [27] ba  Fn''  aa[b;] [28] d~^/a=(-a) 1 0 a  ada [29] LnLn[b] [30] cc[b] [31] a(0 4 + 0 11 a)a [32] d1d [33] 80:bd1  Fn('I4' FMT bLn),' :?i'[1+bc] [34] Fn1(e(-e)1eFn' ')/Fn,Fn,' ' [35] Fna[1;],Fn  (wFn)100 [36] 90:ew+1-((w+1)Fn)' '  eFn [37] (w is an invalid name or not a function at this level'  150 [42] 140:'<',Fn,'> is a locked function.' [43] 150:f(f' ')f  30 [44] DanB 1992/05/05 20:55 A( compare 2 workspaces or files DanB 1992 Syntax: ]COMPARE [ws1] ws2 /WS /OBJECT=[]fn /LOAD /NLINES=n /ZONE=z /SHOW=s THIS COMMAND WILL PROVIDE USEFUL INFORMATION ABOUT THE DIFFERENCES BETWEEN 2 FILES OR WORKSPACES. *** NOTE: DESTROYS CONTENTS OF ACTIVE WORKSPACE !!! IF WS1 IS OMITTED THEN THE ACTIVE WORKSPACE IS USED TO COMPARE. /WS MEANS ARGUMENT SPECIFIES WORKSPACES, NOT FILES /OBJECT=obj WILL COMPARE ONLY THAT FUNCTION IN THE WORKSPACES SPECIFIED /LOAD WILL USE )LOAD INSTEAD OF )XLOAD TO BRING THE WS(S) IN OTHER SWITCHES: SEE BELOW. THE FORMAT OF COMPARE IS AS FOLLOWS: THE FUNCTION ON THE LEFT IS ASSUMED TO BE THE ONE WHICH HAS CHANGED. THE FN ON THE RIGHT IS ASSUMED TO BE THE REPLACING FN. THE OUTPUT IS BASED ON THESE ASSUMPTIONS. EACH LINE OF THE FN ON THE LEFT IS PRECEDED BY ITS LINE NUMBER [XX]. WHERE THE LINE HAS BEEN DELETED A SYMBOL APPEARS '-' BEFORE THE LINENUMBER. WHERE A NEW LINE HAS BEEN INSERTED THERE IS NO LINE NUMBERING AND '+' APPEARS. EXAMPLE: FNA FNB [1] SAME LINE [1] SAME LINE [2] FNA LINE 2 [2] FNB LINE 2 [3] SAME LINE 3 [3] SAME LINE 3 [4] COMMENT DELETED [4] NEW COMMON LINE [5] NEW COMMON LINE [5] NEW COMMENT THE OUTPUT WILL LOOK LIKE THIS: -[0] FNA + FNB [1] SAME LINE -[2] FNA LINE 2 + FNB LINE 2 [3] SAME LINE 3 -[4] COMMENT DELETED [5] NEW COMMON LINE + NEW COMMENT NOTE THAT IN ORDER TO AVOID LENGHTY OUTPUT OF BIG FUNCTIONS WITH LITTLE DIFFERENCE ONLY SECTIONS OF THE FUNCTION ARE SHOWN, THOSE WHERE THE CHANGES OCCURED PLUS A CERTAIN NO OF LINES BEFORE AND AFTER. PW IS USED TO DELIMIT OUTPUT OUTPUT SPECIFICATIONS /SHOW=n1 n2 n3 (n) SPECIFIES THE OUTPUT FORMAT FOR EACH OF THE DIFFERENT SECTIONS: THE UNIQUE OBJECTS IN WS1, THE UNIQUE OBJECTS IN WS2 AND THE COMMON OBJECTS IN BOTH WS. IF nx=1 ONLY THE NAMES ARE DISPLAYED, IF nx=2 ONLY THEIR CONTENTS (OR DIFFERENCE) IS SHOWN, IF nx=3 BOTH ARE SHOWN. /ZONE=n WILL DISPLAY SO MANY LINES BEFORE AND AFTER EACH DIFFERENT LINE /NLINES=n WILL DISPLAY THE FIRST n LINES OF EACH VARIABLE DISPLAYED THOSE 3 SWITCHES ALSO APPLY TO THE COMMAND ]compfile.A(Compare FILE - COMPARE utilityFIA(compare function in WS with one on file DanB 92 Syntax: ]COMPFN [.]object /FILE=ucmdfile Will compare the objects with the one on UCMD file. If a period precedes the name then all objects named in object (ex. GRPobject) are compared.redA(Compare 2 character matrices DanB 84 Syntax: ]COMPMAT MAT1 MAT2 Compare 2 character matrices. See ]COMPARE command for details of comparison procedure.uA(Compare two User Command files DanB 93 Syntax: ]COMPUFILE UfileA UfileB Modified from APL*PLUS library. Compare the contents of the 2 files.lesA(dcompare variable in WS with one on file DanB 92 Syntax: ]COMPVAR [.]object /FILE=ucmdfile Will compare the objects with the one on UCMD file. If a period precedes the name then all objects named in object (ex. GRPobject) are compared.reA(<< RSTYLE CUTBACKTO LABEL [1] DanB 941206 Used as in ELXCUTBACKTO L10 [2] DanB 950203 Added STYLE: 0=TCBS back, 1=last msg, 2=whole DM [3] (NC 'STYLE')L10  STYLE1 [4] L10:R' TCBS'  STYLEL20  R(14STYLE=2)'(^\TCNLDM)/ DM' [5] L20:R'(',(LC),'LC)',(LABEL),'ERROR',R A(debarre une fonctionA(rrDOS "DIR" command DanB 93 Syntax: ]DIR path (no switches) DOS 'DIR' command. Result may be captured.reA(-- RDISPLAYFORM Y;ALP;BAD;SPC;SYM;SYM2;TCESC;D [1] simplified version of this common utility (using TEXTREPL) [2] IO1 graphics converted to [XXX]: ^[32], ~[34], `[35] [3] ALP'ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz' [4] SPC'0123456789!#$%&*()_+]|:"}<>?-=[\;''{,./^~`' [5] SYM'G<[999]>' FMT AVBAD(~AVALP,SPC)/AV [6] SYM2 7 5 '[BEL][BS] [DEL][ESC]',TCLF,'[LF]',TCNL,'[NL][NUL]' [7] SYM[BADTCBEL,TCBS,TCDEL,TCESC,TCLF,TCNL,TCNUL;]SYM2 [8] D(D' ')/D,'.',BAD,'.',SYM [9] RD TEXTREPL Y A(dDistribute a file to data entry operators DanB 93 Syntax: ]DISTR file /OPERATOR=names This command will copy a file in J:\SHARED\TECHDEV\DATANTRY to the subdirectories names in switch OPERATOR (default CM MGL and KGAV).AV)A(;;replace specific characters and space between them by line drawing characters DanB 94 Syntax: ]DRAW varname /STYLE= /MASK Some characters are used to generate SIMPLE lines in character matrices. The '+' denotes corners, '' denote line edges. For example: + + Ŀ EXAMPLE will produce EXAMPLE   Ĵ + + /STYLE allows to change the lines style by a 4 digits number representing the single(1)/double(2) look of the Horizontal outside, Vertical outside, horizontal inside and vertical inside lines as in /STYLE=2211. /MASK allows to mask text. If used text will be replaced by lines where line drawing now appear.eA(''same as ]UEDIT with /F=file option and automatic replacement DanB 92 Syntax: ]ED object /FILE=ucmdfile Faster than ]EDIT. Will also work on objects on stack and different files. NOTE: will destroy object in workspace if different. Does not work on packages or locked fns.fA(DMA(< RA EMMAFN B;C;ALLNAMES;E;F;G;H;I;N;IO;L [1] Bring EMMA fn in. A is 0 for fn with F fns, 1 without (no ) [2] or +2 if using 'e' prefixed fns [3] RDEF 'RL R',TCNL,'[1]R[(R='''')/R]''''' [4] (FNAMES^.=C' 244 EMMAFNS2 ')/a  FUNTIE(243FNUMS)243 [5] C FSTIE 243 10383483 [6] a:IO1  (1A,A)e  (A 0 1 2 3)e  R''  ((2\M1\M3  NUMM1/VR  NUM[(NUM'[',TCNL)/NUM]' ' [9] (RRFI NUM)ERR  (' '=10RDEF VR)OKAY [10] (R[1]=2)L3 check for line too long [11] L2:'***- DEF ERROR ',(R),' ON ',FN [12] L3:(VR^.=' ')NONE [13] VR[VRTCNL]' '  INDVRTCNL  HDRINDVR [14] H' ;0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' [15] (^/HDRH,TCNL)L2  LOC(LOCALSHDR';')HDR [16] HDR(LOCALSHDR),(LOC' ')/LOC [17] VRHDR,INDVR  OKAY [18] NONE:'***- ',FN,' NOT FOUND ON REMOTE.'  0 [19] ERR:'***- LINE NUMBERS NOT SEQUENTIAL.'  . [20] OKAY:DD0  '*- ',FN,' DEFINED.' B( D_ GETVAR V_;SH_;VR_;T_ [1] Retrieve Variable from MainFrame [2] (0=NC 'D_')L1  D_0 [3] L1:ERROR(~IMMEXEC)/'MF NOT IN IMMEDIATE EXECUTION MODE' [4] ERROR(2MFOBJCLASS V_)/V_,' NOT A VARIABLE' [5] NOTES: won't work for objects larger than 255 due to extra CRs sent [6] TCDELs are NOT transmitted [7] character structures of more than 2 dims won't work [8] 0 0 SENDRAW 'PW255'  SH_MFOBJSHAPE V_  VR_MFXLTED V_ [9] (MFOBJNUM V_)CHAR  VR_[(VR_TCNL)/VR_]' '  VR_SH_FI VR_  L3 [10] CHAR:(2>SH_)/L3  VR_SSMAT TCNL,VR_ [11] L3:V_,'VR_'  ((~SH_VR_),T_)T_'WARNING: SHAPE DIFFERS' [12] D_0  V_,' DEFINED.' B(LGET object from MainFrameameB(referenced globals DanB 92 Syntax: ]GLOBALS fn /FULL /FUN /VAR /FMT /UPD This command will produce a list of a function's global references. It will allow to see the names of objects which are referred to globally. If the /FULL switch is supplied the globals referenced by sub-routine calls will also be shown. If the /FUN switch is used ONLY, the objects referred to are visible FUNCTIONS only. If the /VAR switch is used ONLY, the objects referred to are visible VARIABLES (or unknown) only. If the /FMT switch is used, the result is shown in readable format. If the /UPD switch is used, the result is inserted in the function. Note that is being taken in account but that its use may not be interpreted properly. Text in functions with is scanned between the character and the next  character on each line where it appears only. Same applies for ELX and ALX.B(CMDADDR ADDR PARSE DEFAULTULTB(e**PARSE DEFAULT CMDALIGN LJUST LJUSTOBJMPB(CMDBIND NOPENB(X%%CMDBM VTOM VTOMOBJ PARSE DEFAULTULTB( PARSE DEFAULT CMDCALLS CRFROMVRXc1 Xcompare Xdf Xeq XfR Xft Xgensymb Xmv Xqz Xrd Xtreegen .B(A  CMDCOMPARE clearfile comparefilesSVM compv compack compbool compfn compind compvar display fit fncr jdmr1 mcomp unique vm PCHK PNC PVAL PSEL PACK PARSE DEFAULT C(CMDCOMPFILE SVM compv compack compbool compfn compind compvar display fit fncr jdmr1 mcomp timen unique vm PCHK PNC PVAL DEFAULT PARSEC(TTPARSE DEFAULT CMDCOMPFN ADDR CRFROMVR compfn mcomp compbool compind unique jdmr1C(d55PARSE CMDCOMPMAT compbool jdmr1 compind unique ADDRDDRC(UUCMDCOMPUFILE ADDR CRFROMVR compfn mcomp compbool compind unique jdmr1 FTIMEREP FITFITC(ppCMDCOMPVAR compvar compack SVM vm compfn compv fit display fncr mcomp compbool jdmr1 compind unique ADDR PCHKC(hCMDDEBARC(%%CMDDRAW WHERE Borders PARSE DEFAULTULTC(d##CMDED ADDR NC OHL PARSE DEFAULTiC(0EEPARSE DEFAULT ADDR NC EDIT OHL XfR Xeq Xc1 Xrd Xmv Xqz Xft CMDED ;XC(CMDFIT PARSE DEFAULTENC(66CMDFLOC DISPLAYFORM TEXTREPL WHERE ASCIIAPL TRANSLATElgC(`CMDFNSLIKE PATMATCHC(CMDFPADD GRPPACKC(pCMDFPDEF GRPPACKC(d##CMDFRDCI CMDTIMEFMT DEFAULT PARSEX @pPf0(`\H,D$@ x 8` t|X\!|(l 347d?Xw@\I(MhN4O$(>(P>$t>(>(>(>,?0H?$l?A4LBBLDEE8FF,G@H@HIKpL(NLNhLOxOp4PPP0R8W,X]]TLaxdDfgg`x(t  |0dT~lTXX12p3H5(8p8|99<$<,=@ (J(KLNPOQX,HX h^X_ a$Db,ph0hThPDixjk kxPl4`X84, {PDX 8X|ԤX \,$ x,D(CMDNOCLASH PARSE DEFAULTTTD(|66CMDOBJECTS XfR Xeq Xc1 Xrd Xmv Xqz Xft PARSE DEFAULTTdD(l""OHL CMDOHL ALLFNS PARSE DEFAULTLTD())CMDOSR OS VECTORIZE PARSE DEFAULT OSROSRD(8CMDOSS OS OSS PARSE DEFAULTTMD(CMDRENUM OSR PARSE DEFAULTD( CMDSEND CLEARMF IMMEXEC SENDFN SENDVAR AV SENDRAW COM1 XLTLINE MODLINE TRANSMIT LPOS ASCII CH WHERE SEND_DATAD( ALLFNS ffnAD(!!PARSE CMDSHOW OBJDATA FTIMEREPREPD(CMDSIZE PARSE DEFAULTUE(CMDTAG PARSE DEFAULTT E(CMDTONFILE PARSE DEFAULTTTE(OSS ALLFNS CMDTRACEBACKE(//PARSE DEFAULT CMDTREF XfR Xmv Xc1 Xeq Xrd XqzQE(CMDVARSLIKE PATMATCHE( CMDWSLIB FITE(6PAp:j CKz  ;;7 5^  00010000ERROR(-IO-DMTCNL)DM.(/,  ( DPCHK) ) > [(, ) 0;]# Copyright (c) 1987, I.P. Sharp Associates 00020000 :  []pchk |    ;;  00010000ERROR(-IO-DMTCNL)DM.(/ , ( DPNC) ) > [  0;]# Copyright (c) 1987, I.P. Sharp Associates~    ;;  00010000ERROR(-IO-DMTCNL)DM.(/ , ( DPVAL) ) > [  0;]# Copyright (c) 1987, I.P. Sharp Associates   ; ; ;;00  00010000ERROR(-IO-DMTCNL)DM.(/ , ( DPACK) ) > [  0;]# Copyright (c) 1987, I.P. Sharp AssociatesH V0005000   ;;  00010000ERROR(-IO-DMTCNL)DM.(/ , ( DPDEF) ) > [  0;]# Copyright (c) 1987, I.P. Sharp Associates    ;;;; ; ; ;  COM1 00010000 ;   .( ./  ) DEBARDO 00020000# Only works for 1 name at a time  00030000 ( )  FORID 00040000  . >(/ )/ DOMAIN ERRORDOC  00050000-0 #[1]PDEF 222PACK 43    ;;;; ; ; ; s a 00010000 ;       .(  )  ist files i 00020000    >( )/ DOMAIN ERROR 00030000-0 /[1]PDEF 222PACK 3[(3)~4;] i3    ;;; ; ; ; SYSID ;PA 00010000>((/ )/ )/ DOMAIN ERROR 00020000      H0;P 00030000-0(; )(; )=[1]PDEF 11PDEF 221PACK(,' ',3),,' ',4   ;;  00010000ERROR(-IO-DMTCNL)DM.(/ , ( DPNAMES) ) > [  0;]# Copyright (c) 1987, I.P. Sharp AssociatesNOPQR   ;;;   00010000ERROR(-IO-DMTCNL)DM987, I.P. S 00020000>(/ )/ DOMAIN ERROR 00030000.(/71) >(R )/ DOMAIN ERROR>(-  )/ RANK ERROR 00040000       7 >( )/ DOMAIN ERROR. ,( 00050000 :    7 (PEX 00060000 : /  (0 ) (  )  CDEF 00070000# Copyright (c) 1987, I.P. Sharp AssociatesEF   ;;; ; ;  00010000       .(  )  00020000>(   )/ DOMAIN ERROR 00030000-0(; )[1]PDEF 222PACK 1   00010000 ([ ])0[]R HPGSEP90PAp:Q  CKXE:p2,2O2,Zbje\eeee w||wq)tvyPwD@)%     .V.X.*..,.7s.6t8B....>,5v / u..x.>,6v5P t.R.xT.z@R&Z.~.|.>,7vp.|..6.L..V=w.X.t =t33t=t.V23S.VRQYZ[D./Ŏ3Q2ȋ<V^VŎؾ^+ Y3..2.P.Z t.P .v.f.\.t..Z.`t.>u .>rv.f." u s.rw.V.3Ѓ...VɎ.>fu4.-..,.... 3.j..Z.`.\.t.rt.=v.f@P.hȃy3.^MY..Z.`.\.t.V.j.r;tMQPS.^_[X;s+S.;uPXu[Y[Xbf.h.n.+j..+j&+..@@.p3.uw...>u.SWP.^X_[.j&>.>t& && &.Vt .n33.-..,..f. .j .j te.".h.r.Dts.;"~."..>L t|t |w.+L3һ .t&=t~.h.&.>v&1D t{\fs.Z.`.\.t\.>u t .r9t<~.h..t.6v&&x..f3.t.6v..f=Mv[&?tLs:S.r.+j.V&.j.r.Z&.`.\&.t[&u tÉ3.t.n .P.Lx.;frV.^.t.6v.n3.p.f=Mv+V.|^t+&.j؉QȭV.`^YCC t..2.P.4.N .S .>,6r1.>u).n.6p. .j&t.P.R..X?t5t.>f3[t˽t|tu.> 3tdt ..>2.R.Z 3.n.6p. FFu;r.>p&%3.n.6p. xHV.+6pxNt^ÀljT^t".j$u 1 tFF3.>,7rP.>xtH.) .n.6p. .x#.+p_P .)) Xt AnyFF3.jQ>u>tp.) Y.jQ>u>t @.) Y.N.+) .n.6p. .x-.+p_&t.j؉&L FF3.n3.t T3. .n3.|.pt0.j&؉>ߠPSu K_q [X 3.>,7rL.>xtD.) . .n3.|Pa .)) X.pt oyÃ3)t .X.?uˎt.>ftDt.n3t.j;r.p& uu.>ut1t_.Z ..V&$ 3QS.n.l;s  u3 [Y.j .nP.t8.>,6v QS [Y%ؠ ut  Xtˌ؎.X.?u>&1.n.6p.jut3.ft.>ft.f,".fW] =r__3.V..X.`.Zu/;s+.>p&u.jؠt3[Y_WQS3.`.>b.;>ds[&<t,.d+ tFOAuA.>b+& .b uOAuA3VQS.t.6v.<WVQ=Mv .: u :u 4.`tY^_FFY^_3[Y^ VQ~MuI t,u3Y^<Ar<Zv<ar <zv <t<t:<0r<9v .>,6r<_t:.`>vu<tÀv2.b*.d<ut4> u-.fWQS؎.>b.d+3۰ tCt[Y_=v.f3. UR,Z]ur.n3|t< W_LS.r3.rë3QX%t+Ȱ.+jG[ì<Q2YRP&t$x":uWV<wG&E^_t :XZWQV.R.2<~  ..>L^uV.+L3һ. ;s6V.6p^x'&Et=w=ؠu  u(&<u:..L;s ?th`.+L+.WV< &>&&$&^_}..;Ru.R׃3Y_WRQP..>L.R.P+2.>T.R.P+2XYZ_RP.N@.L.TXZVQ2 F2F..6T.6Y^VQSP.j.n3<~X[Y^uVSt[^VRQЬ2PFFZYZ^WVRQ.ر.._V.s&.7CC- .L.SV[GGYZ^_S>t>us>rl.; ub.(;uX;uY;wPt@;u4$,8r-P t .L+ɰXtDtE..604..عdDt u;\t`u tt 3[Y^P.j.l.n@@.pXWVQɎY^_.>,7r.>xtS.[.>,uQSPX[YUWVRZ^_]q.>,7rf.>xt^QSP..p+t,7r.>xtQPSf [u\XYSR. t.t(.+L.x.zGtg Z[SQR.+L.x.zGtZY[.>,7s.>xtRQSPP$u tXQaZ.+L.x.zGt$QG$p t  GY.)NW+u]_X[YZRP.;|r+.6~ t@XZ+u &u0002000 DOMAIN ERROR SYNTAX ERROR RANK ERROR LIMIT ERROR SYMBOL TABLE FULL PKG SYSTEM ERROR APL VER NOT SUPPORTEDPKG VER NOT SUPPORTED(RESERVED) VWS FULL  imatiotamSStoMATPCHK PVAL PACKPDEFPEX1PINS!PNAMES%PPDEF)PSEL-PSYSID1PACKBIN5PACKERRS^PNC_`abPEXcdefghi02314210345mv\]DEB0,9F^qNE(`TEST CRFROMVRE(VTOM LJUST FRDBLE(X DEB DEBOBJE(FRDBL FRDBLOBJOBJE(LJUST LJUSTOBJOBJE(RJUST RJUSTOBJOBJE(TELPRINT TELPRINTOBJLE(VECTORIZE VECTORIZEOBJOBJE(<VTOM VTOMOBJE(4show hexadecimal equivalent of argument DanB 93 Syntax: ]HEX n1 [n2] [...] /BACK /CHAR Show hexadecimal equivalent of argument. /BACK will work backwards (from hexa to decimal) and /CHAR will work assuming characters (as opposed to numbers). Example: ]HEX 16 256 0010 0100 ]HEX 10 100 /BACK 16 256 ]HEX 16 /CHAR 0031 0036 UCMD 'HEX 41 36 /BACK /CHAR' A6 2E(  manage workspace history DanB 940328 Syntax: ]HISTORY comments /VERSION=n.nn Updates global variables 'WSVERSION' and 'HISTORY' by adding the comments to the 'HISTORY' global along with the date and the version number. /VERSION may be a new version number or an increment (like 0.1)E( RIMMEXEC [1] RETURN WHETHER MAINFRAME IS IN IMMEDIATE EXECUTION MODE [2] R 13 10 0 48 13 10 0 32 32 32 32 32 32 7 AV SENDRAW '0' F(55search string IN FILE DanB 93 Syntax: ]INFILE word1 w2 'string 1' etc... /FILE=tie or filename/EXEC/WINDOW=w This command will allow to search a file for specific words or strings in a perticular file. /FILE is compulsory and must be assigned either a valid TIE number or an accessible filename. Result roughly shows component number / indices where found (one index per dimension) in origin zero. If /EXEC is supplied the argument is executed (). If /WINDOW is supplied with a number it is used to show the text around the matches.hesF(downloads APL character set to printer Syntax: ]INITP /[DR|LQ] /DR (default) is DRaft quality /LQ is Letter QualityF(!!packages file manipulation systemtemF(0llINPUT TEXT INTO VARIABLE (ARG) DanB 92 Syntax: ]INPUTXT X X will contain all text entered until SPACE, CR.F( erase everything but the objects necessary to run the argument (fn) DanB 94 Syntax: ]KEEPFNSOF fn is searched for all globals and fns called. The ws is then cleaned of the unneeded objects. NOTE: this won't work if or error handling thru comments are used.sedF())SIZE OF EACH FILE; POSSIBILTY OF DELETIONIONF())Show LIBs where to find wss DanB 93 Syntax: ]LIBWHERE wsorfile /FILE /LASTLIB=nn This command will show the libraries where the workspace (or file if /FILE switch is set) reside. Libraries 1 through 20 are searched. To change the upper library search limit use the /LASTLIB switch.tchF(smart ]ULOAD with pattern and from packages DanB 92 Syntax: ]LOAD pattern(s) /PACK /REP /FILE=file /PACK will bring value(s) from package if any /REP will replace objects in the workspace /FILE=file will use to search for objects Same as ]ULOAD but smarter. Often objects are used which use other objects. LOAD will bring all the objects defined in groups it encounters. For example, if the pattern contains objects which have a group of the same name (that is preceded by the letters 'GRP') then those will be brought in and the process will be repeated for each one of these items.eF(}}Return list of LOCKED fns DanB 92 Syntax: ]LOCKEDFNS (no switch) Return list of LOCKED fns. Result may be captured.redF(" s LOGMSG msg;ELX;t;f [1] DanB 9511 log message in monitoring file [2] empty msgs are skipped - any error is disregarded [3] s is switches: 'r' means allow resize, 'u' untie file if untied before [4] (0msg)0  (NC 's')l10  s'' [5] l10:ELX(('r's)/'(''FILE RES''8DM)RES'),'0' [6] f' MONITOR '  (t(/fFNAMES)/FNUMS)tied [7] f FSTIE t((t)t0,FNUMS)0 [8] tied:f(WSID msg) FAPPEND t  FUNTIE(('u's)>t)t [9] 0 [10] RES:(1.112FSIZE t)FRESIZE t  tied F(77Add entry to log file See ]MONITOR command for detailsF( SS RMFOBJCLASS NAM [1] R('01234'SENDRAW 'NC''',NAM,'''')/ 0 1 2 3 4 IF(bb RMFOBJNUM NAM [1] Is object on MainFrame NUMeric ? [2] R'0'SENDRAW '10',NAM w F(l[[ RMFOBJSHAPE N [1] RSENDRAW '',N [2] RFI R~TCNL,TCLF,TCBEL,TCNUL F( RMFXLTED EXP [1] Send EXPression to MF and XlaTe result [2] R 1 1 0 1 0 ARBIN EXP,TCNL [3] RTOAPL 1 1 2 1 1 32767 7 ARBIN '' F(:: RLN MODLINE LINE;L [1] Change special characters into their MainFrame equivalent [2] (NC 'LN')VAR [3] FN line [4] LINE(' '.LINE)'',LINE [5] LINE(~1LINE SS ' ')/LINE  L0 and command ]LOG will append a message to the file in the proper format.t.F(xshow SOUND argument to play a string in MORSE code DanB 92 Syntax: ]MORSE string /TEST /FREQ= /PER= If /TEST is used SOUND will play the string. /FREQ and /PER are used to modify the frequency and period of the play.G( dMold Mcomp Mnew;keep;new;IO;del;n;;i;l;old;b;og;r;ng;P;t;Mns [1] Matrix comparison by line [2] returns the lines to delete as negative numbers and [3] the lines of Mnew replacing the lines of Mold in pairs [4] [5] - The number of lines we keep must match the number not new [6] IO1  n1MnsMnew  newn1 [7] - try to find the solution that minimizes the moves [8] keep>10,\PMnew ROWFIND Mold  tt>10,t/iMold ROWFIND Mnew [9] ((+/keep)+/t)cont [10] - exchange the positions: [11] P[(t0)/i]0  keep>10,\P [12] cont:deldel/del~keep  n0,keep/keep [13] each section of 'new' is delimited by the ending '1' which must be moved [14] new[keep/]0  lt  rr/+\new,0 [15] - gaps are filled according to the position where they were kept [16] ngr-10,r  og1+-(n,999)[1 0 .+ntl/(~0,new)\n] old/new gaps [17] b0=1t newlines og,[0.1]ng  n+/bb^ /FMT /SORT This command will return a list of ALL objects referenced along with their type. Result may be captured. See command CALLS for meaning of result. /SORT will sort the result using AV sequence /FMT will separate TYPE from NAME and make the result fit PW G( ROHL FN_;M [1] Order Header Locals [2] M';' MATRIFY CRL FN_,'[0]'  RM[IO;]  M1 0M [3] MM[AVM;] [4] RDEFL FN_,'[0]',R,(,';',M)~' ' G(rreOrder Header Line of a fn DanB 92 Syntax: ]OHL [fn] Puts the list of locals in alpha order. If is not supplied it is done for the entire ws.G(| nCOSR OSR sR;IO;DeF;aLl;hId;rEp;sRh;F;Lu;Mv;N;Up;c;n;pO;pU;v;0;1;2;6;7;8;9 [1] danb 86..96 - Object Search and Replace - version 4.61 [2] IO0 ~ sR aLl hId sRh OSR pO Mv pU 1 0 Lu rEp 2 DeF Up [3] (NC 'OSR')/10  OSRNL 3 [4] OSR could be TIE , start, last cpts, increment [5] 10:(N0101OSR)15  6211,(,1)20,(2FSIZE 11),1 [6] 6[2]1[2]2[2]  OSR6[3]-F0,6[3],0  25 [7] 15:OSR1(111OSR' ')/OSR,' ',OSR [8] 25: set variables from arguments [9] nC'ARG LENGTH ERROR'  (20(8/8sR1sR),sR)/0 [10] ~Body, ~Text, ~, Apl, L/R syntaxic, RESULT, no lcal;global(), [11] case Insensitive, search Numeric [12] n12 2 11 'btcalr=;inBTCALRIN'10[1]sR [13] nC(~2[6])0  (^/2[7 8])EnD SCALNUM RESULT; VECSTR RESULT [14] aLl'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'  [15] aLlaLl,'0123456789_' Special characters [16] Build locals functions [17] The Partitionning fns [18] 9FX((9)'rs pO p;t'),[0.1]9'sspr\s\t10,ts/p'  [19] 9FX((9)'rs pU p;t'),[0.1]9'r\ps\t10,ts/\10,p'  [20] The MAT from String [21] 9'IO1L1L-1+1L(~D)/DDMV,D1VM(D)(,DL./L,D0)\D/M' [22] (3NC 'MATRIFY')27  9'MV[0]MATRIFY V' UCMD fn available? [23] 27:9FX((9)'MMv V;D;L;IO'),[0.1]9  [24] 2[9]30 The UPPERCASE fn [25] Lu 2 26 aLl  9'BB/BR[B]Lu[0;Lu[1;]R[B]]' [26] 9FX Mv 'RUp R;B(/BRLu[1;])0',9  [27] 8[0]0  68/6\8  sR[6]Up sR[6] repl all cases versions [28] 30: [29] c61,'',[0.1]2[3]/'BTC' ...perticular constraints [30] (sR(111)/10[1]sR)EnD all strings together [31] 1(10)-101-11-1110 start of each str (0), length (1) [32] Mask fn: Comments, Text, Body, Diamonds, Apl [33] 9'BCTT>CL pO(M'''')>TTL pU TM'''''''''  ~APL text [34] 2[3]35 [35] 99,'A(''ELX''A)(''NC''A)(''IDLOC''A)''''=A,M'  [36] 99,'BCTT>(LB^M'''')pO A'  APL text [37] NOTE: {error:trapping} NOT taken into account [38] 35:8'RV hId M;L;C;T;B;AR1LM=TCNLV/2RR',6 [40] search fn [41] 8(/2[4 5])/'s1~taLl' PREPARE SYNTAXIC CODE LOOK UP [42] 7(2 12 /2[4 5])/'^s^(1+1[i])s' LR [43] 9'rV sRh t;m;S;z;n;s;ir0 2i0n1mV hId t',8  [44] 99,(/2[7 8])/'S11S/St=1t'  HEADER LENGTH [45] 99,'l:zsR[0[2i]+1[i]]',(4~2[9])'Up t'  iNSENSITIVE [46] 99,(/2[7 8])/'(',2[7]'~/Sz)e'  LOCAL/GLOBAL [47] 99,'zz^m',7,'rr,[0](z/z),[.1]i'  [48] 99,'e:(n>ii+z1)/lrr[r;]'  ORDER RESULT TO PREVENT OVERLAP [49] 7FX Mv 9,'L:(^/s\z10,1[r[;1]]+zr[;0])/0rsrL'  [50] replacing fn [51] 9'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]'  [52] 7FX((9)'TP rEp T;K;L1;L2;B;w'),[0.2]9  [53] [54] 2(2,0.51)1  12[;0]  22[;1] 0:start; 1,2:len [55] N/FiL [56] LuP:(OSR)EnD  (v2NC 8(OSR' ')OSR)/VaR  DeFVR 8 [57] Search and Replace [58] L30:(07''9v sRh DeF,TCNL,DeF)/NeX [59] replace in environment. search performed on vectors, vector result [60] DeF9 rEp DeF  v/L35  TCNL used to matrify - BEWARE! [61] (9nCnC+79~010DEF 1DeF)/NeX  'not ',8  NeX [62] L35:v2>6  DeFvDeF  v/L40 [63] 9DeF((16),19)9Mv DeF  [64] (0.>v6-9)L40  (0' '=(6(-6)1)DeF)L40  DeFvDeF [65] L40:nCnC+7  N/FrP  8,'DeF'  NeX [66] FrP:DeF FREPLACE 2OSR  FiL [67] Variables [68] VaR:DeF8 character only. [69] L50:(2PNAMES DeF)NeX  (' '10DeF)NeX  6DeF  L30 [70] Get next item to search [71] NeX:N/FiL  OSR(1+8)OSR  LuP object or file  [72] FiL:(/1OSROSR+F)/EnD  DeFFREAD 2OSR  L50,v1 [73] EnD:(nC)0  nC(nC),' REPLACEMENTS MADE.' G(Object Search and Replace DanB 87 OSR: Object Search and Replace Syntax: ]OSR str1 repl1 [str2 repl2] [... ...]/X=bct;/A/L/R/I/O=obj/F=file Switches: See command OSS for details. This is command OSS counterpart. This command will search AND replace. Examples: ]OSR abc xyz replace 'abc' by 'xyz' everywhere ]OSR abc xyz /L/R same but for both left and right strings, in other words for the exact element 'abc' with no number, , , alphabet or around it. ]OSR abc Z999 /X=C replace abc by Z999 everywhere except in the comments ]OSR filA filB /X=BC /O= Fa Fb replace all occurences of filA by filB in the quoted text only of functions Fa and Fb. ]OSR x y y x/L/R/O=>F swap all occurences of 'x' and 'y' names in function and its called functions. ]OSR 'C/L' 'L IF C' replace all those occcurences everywhere. Note the use of quotes to enable the replacement of slashes and spaces. Restrictions: See command OSS. Comments: Large functions are more likely to create problems than smaller ones. Replacement of quotes (') WILL create FiXing problems. Syntaxic search is based on not having any of the name forming characters around the string to search. Using '/A' switch slows down the program dramatically. Shape of variables almost always changes as the lengths of replacement strings differ from their originals. Using /X=BCT/A only makes sense for functions or variables holding CR (VR) of functions. Note that in the latter case the line numbering is also subject to replacement. enG(X_ _ nCOSS OSS sR;aLl;hId;sRh;IO;0;1;2;6;7;8;9;F;Mv;N;T;pO;v;c;Up;L;n [1] DanB - Object Search String - Version 4.5 [2] 7IO0 ~ sR aLl hId sRh OSS pO Mv Up L [3] (NC 'OSS')/10  OSSNL 3 [4] OSS could be TIE #, start, last cpts, increment [5] 10:(N0101OSS)15  6211,(,1)20,(2FSIZE 11),1 [6] 6[2]1[2]2[2]  OSS6[3]-F0,6[3],0  25 [7] 15:OSS1(111OSS' ')/OSS,' ',OSS [8] 25: set variables from arguments [9] 0(9/9sR1sR),sR mode, strings [10] ~Body, ~Text, ~, Apl, L/R syntaxic, RESULT, no lcal;global(), [11] case Insensitive, search Numeric [12] n12 2 11 'btcalr=;inBTCALRIN'10[1]sR [13] c61,'',[0.1]2[3]/'BTC' ...perticular constraints [14] nC(2[6],0)0  (sR(111)/10[1]sR)0 all strings together [15] 1(10)-101-11-1110 start of each str (0), length (1) [16] aLl'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'  [17] aLlaLl,'0123456789_' Special characters [18] Build locals functions [19] The VTOM fn [20] 9'IO1L1L-1+1L(~B)/BDMV,D1VM(B)(,BL./0,BL)\B/M' [21] (3NC 'MATRIFY')27  9'MV[0]MATRIFY V' UCMD fn available? [22] 27:9FX((9)'MMv V;D;L;IO'),[0.1]9  [23] 2[9]30 The UPPERCASE fn [24] L 2 26 aLl  9'BB/BR[B]L[0;L[1;]R[B]]' [25] 9FX Mv 'RUp R;B(/BRL[1;])0',9  [26] sRUp sR search uppercase version? [27] The \ Partitionning fn [28] 30:9FX Mv 'rs pO p;tsspr\s\t10,ts/p'  [29] mask fn: Comments, Text, Body, Diamonds, Apl [30] 9'BCTT>C\(M'''')>TT\TM'''''''''  non APL text [31] 2[3]35  99,'BCTT>(M)(,1,0 1B^M'''')'  APL text [32] 99,'pO(ASS''ELX'')(ASS''ALX'')(ASS''NC'')''''=A,M'  [33] NOTE: {error:trapping} NOT taken in account [34] 35:9FX Mv 'MhId M;C;T;B;A',(c/9,'M~',6),(~c)/'M1'  [35] search fn - arg is rank 2 [36] 9'RsRh T;H;M;S;N;s;I;W;ELX(0ST)RI0MhId TN1'  [37] 99,'ELX''(33T),TCNL,DM0'''  8/2[4 5]  L/R [38] 99,(8/'s1~TaLl'),'T',(2[9]/'Up'),',T'  7/2[7 8]  [39] 99,'L:WsR[0[I]+1[I]]RR',7/'(',(~2[7])'~1S[1]H)^H'  [40] 99,'(ST SS W)',(2[4]/'^s'),(2[5]/'^(1+1[I])s')  [41] 9FX Mv 9,'(N>II+1)/L',c/'RR^M' [42] N/75 [43] 40:(0OSS)70  (v2NC 8(OSS' ')OSS)/60  6CR 8 [44] Search and count [45] 45:(12/9sRh 6,TCNUL)70  7+/,9 0 1 29 [46] Display if any found [47] (1nC)/70  T(2 6 ' Var ')[v;],8  N50 [48] T(2OSS),':',(-vvT' ')T6[0;] [49] 50:TCNL,T,' (',(7),' found)'  T-+/^\' '=626 [50] Lines found displayed here [51] 55:(,'P<[>Q<]>I5,X1' FMT 21),T[0]6[0;] [52] ' ',(T[0]9[0;])\'^' [53] (09 1 0 9)/70  6 1 0 6  2[21]0  T1T  55 [54] Variables [55] 60:68 char mat only [56] 65:(n9' '106)70  (n>9)67  66 [57] 67:(26)/45  6Mv,TCNL,6  45 ensure matrix for search [58] Get next item to search [59] 70:nCnC,7  N/75  OSS(1+8)OSS  40 object or file  [60] 75:(/1OSSOSS+F)0  6FREAD 2OSS  65,8v0 G( Object Search String DanB 88 This command will scan for the strings given as argument in the ws. It can be restricted to specific object names and conditions. Syntax: ]OSS word1 [word2 [...]] /L /R /C /N /X=bct; /A /O=object /F=file Switches: /L Left syntaxic search /R Right syntaxic search /X=eXclude Body of fn, Comments, Text, local(;) or non local() text /A APL mode: Body includes text to the right of ELX, ALX , /O=[|>]NAME1 [NAME2] ... to limit Object search list /F=filename will search the file instead of the workspace. Tie number may be supplied instead of filename possibly followed by start/end components. /C Case insensitive /N Numeric variables to be searched as well The search can include/exclude the APL statements, the text (between quotes) and the comments. It can also do the search syntaxically, either to the left, to the right or both as the switches specify. If global references are wanted use semi-colon (;) as argument to the eXclude switch. If local references are wanted use quad () instead. It operates on all functions in the whole workspace but can be restricted to specific objects, functions and their calling tree or variables, or each character component of a file. The function uses local names which may clash with the names to search (see the function header) and will operate more or less rapidly depending on the type of search in effect. The /A (APL) switch modifies the behaviour of the /X (eXclusion) switch in the sense that text that would be executed ( or ELX...) is considered code. Examples: ]OSS abc show all occurences of abc everywhere in all functions in the ws ]OSS abc/R show all 'abc' right ending strings. ]OSS abc/L same but for left starting strings ]OSS abc/L/R same but for both left and right strings, in other words for the exact element 'abc' with no number, , , alphabet or around it. ]OSS abc/X=T show 'abc' everywhere except in the text ]OSS abc/X=cT/A show 'abc' everywhere except in comments and the text which is not considered APL code (like ELX'abc') ]OSS Sharp/X=BC/O=fn1 test show all occurences of 'Sharp' in the quoted text only in the objects 'fn1' and 'test' ]OSS x y /L/R/F=MF show all occurences of 'x' and 'y' names in file ]OSS 'l if c' 'c/l' /X=C /O=>SFN /C search for strings (ignore case) which include spaces and slash outside of comments in fn and ALL other fns it calls ]OSS 1.05 /O=NL 2 /N search '1.05' in all variables, incl numeric Restrictions: Large functions are more likely to create problems than smaller ones. Syntaxic search is based on not having any of the name forming characters around the string to search. The ability to search the calling tree depends on having the user command available.abG(  0PACK 2;3;4;ELX;ALX [1] ELXALX'ERROR(-IO-DMTCNL)DM'  (0=2(0,PSYSID,STPTR 'PACK')CALL PACKBIN)0  ERROR PACKERRS[2-~IO;] Copyright (c) 1987, I.P. Sharp Associates G(1  HPGSEP90PAp:CKXE:p2,2O2,ZrZZZZZ 3{5{5{5{zNd.@@)%     .V.X.*..,.7s.6t8B....>,5v / u..x.>,6v5P t.R.xT.z@R&Z.~.|.>,7vp.|..6.L..V=w.X.t =t33t=t.V23S.VRQYZ[D./Ŏ3Q2ȋ<V^VŎؾ^+ Y3..2.P.Z t.P .v.f.\.t..Z.`t.>u .>rv.f." u s.rw.V.3Ѓ...VɎ.>fu4.-..,.... 3.j..Z.`.\.t.rt.=v.f@P.hȃy3.^MY..Z.`.\.t.V.j.r;tMQPS.^_[X;s+S.;uPXu[Y[Xbf.h.n.+j..+j&+..@@.p3.uw...>u.SWP.^X_[.j&>.>t& && &.Vt .n33.-..,..f. .j .j te.".h.r.Dts.;"~."..>L t|t |w.+L3һ .t&=t~.h.&.>v&1D t{\fs.Z.`.\.t\.>u t .r9t<~.h..t.6v&&x..f3.t.6v..f=Mv[&?tLs:S.r.+j.V&.j.r.Z&.`.\&.t[&u tÉ3.t.n .P.Lx.;frV.^.t.6v.n3.p.f=Mv+V.|^t+&.j؉QȭV.`^YCC t..2.P.4.N .S .>,6r1.>u).n.6p. .j&t.P.R..X?t5t.>f3[t˽t|tu.> 3tdt ..>2.R.Z 3.n.6p. FFu;r.>p&%3.n.6p. xHV.+6pxNt^ÀljT^t".j$u 1 tFF3.>,7rP.>xtH.) .n.6p. .x#.+p_P .)) Xt AnyFF3.jQ>u>tp.) Y.jQ>u>t @.) Y.N.+) .n.6p. .x-.+p_&t.j؉&L FF3.n3.t T3. .n3.|.pt0.j&؉>ߠPSu K_q [X 3.>,7rL.>xtD.) . .n3.|Pa .)) X.pt oyÃ3)t .X.?uˎt.>ftDt.n3t.j;r.p& uu.>ut1t_.Z ..V&$ 3QS.n.l;s  u3 [Y.j .nP.t8.>,6v QS [Y%ؠ ut  Xtˌ؎.X.?u>&1.n.6p.jut3.ft.>ft.f,".fW] =r__3.V..X.`.Zu/;s+.>p&u.jؠt3[Y_WQS3.`.>b.;>ds[&<t,.d+ tFOAuA.>b+& .b uOAuA3VQS.t.6v.<WVQ=Mv .: u :u 4.`tY^_FFY^_3[Y^ VQ~MuI t,u3Y^<Ar<Zv<ar <zv <t<t:<0r<9v .>,6r<_t:.`>vu<tÀv2.b*.d<ut4> u-.fWQS؎.>b.d+3۰ tCt[Y_=v.f3. UR,Z]ur.n3|t< W_LS.r3.rë3QX%t+Ȱ.+jG[ì<Q2YRP&t$x":uWV<wG&E^_t :XZWQV.R.2<~  ..>L^uV.+L3һ. ;s6V.6p^x'&Et=w=ؠu  u(&<u:..L;s ?th`.+L+.WV< &>&&$&^_}..;Ru.R׃3Y_WRQP..>L.R.P+2.>T.R.P+2XYZ_RP.N@.L.TXZVQ2 F2F..6T.6Y^VQSP.j.n3<~X[Y^uVSt[^VRQЬ2PFFZYZ^WVRQ.ر.._V.s&.7CC- .L.SV[GGYZ^_S>t>us>rl.; ub.(;uX;uY;wPt@;u4$,8r-P t .L+ɰXtDtE..604..عdDt u;\t`u tt 3[Y^P.j.l.n@@.pXWVQɎY^_.>,7r.>xtS.[.>,uQSPX[YUWVRZ^_]3{.>,7rf.>xt^QSP..p+t,7r.>xtQPSf [u\XYSR. t.t(.+L.x.zGtg Z[SQR.+L.x.zGtZY[.>,7s.>xtRQSPP$u tXQaZ.+L.x.zGt$QG$p t  GY.)NW+u]_X[YZRP.;|r+.6~ t@XZ+G( DOMAIN ERROR SYNTAX ERROR RANK ERROR LIMIT ERROR SYMBOL TABLE FULL PKG SYSTEM ERROR APL VER NOT SUPPORTEDPKG VER NOT SUPPORTED(RESERVED) VWS FULL 13G(OO RPAIRS [1] 24JAN89 (BPB) RETURNS OVERSTRIKE PAIRS [2] R 117 2 234'*-~_''-\~^~-/\A_B_C_D_E_F_G_H_I_J_K_L_M_N_O_P_Q_R_S_T_U_V_W_X_Y_Z__<>^S0~''.AOU -L{-Y,-~N*=_,C_\[]_uoa,c/OOUT/e^aa\a^ee\ei^i/E^u/a/i/o/un~nN~N^o,s",?_,?!,,<,>\uout' [3] RRR BOTH WAYS G( RP PATMATCH T;IO;B;D;I;J;N;b;m;s [1] DanB 950202 Pattern Matching a la DOS but better [2] 'T' IS THE TEXT TABLE SHRUNK AS WE GO. 'R' IS RESULTING MATCHES [3] NORMALIZE PATTERN LIKE ?*?* TO ??* (** IS REDUCED TO *) [4] IO0  RT  s'?'  m'*' [5] P1N[I],0IB+((1D)-1DD/Db,1)/100+/b2=B'*?'N'.',P [6] B1,(1B)1Bm=P,P  PB/P [7] bT' ' b IS bLANKS, s sINGLE CHAR not bLANK, m mANY s [8] CHK IF * ONLY AND EXIT ELSE GRAB CHARS UP TO * AND GOTO MANY IF 1ST * [9] L:(P)n  DP[0]m  (PDP)0  NPm  BsNP  IB/N  DMANY [10] simple pattern: ALL CHARS MUST BE NON BLANK & NON ? MUST MATCH [11] T(0,N)(D(/b[;N]) [  0;]# Copyright (c) 1987, I.P. Sharp AssociatesH V0005000t   ;;7 5^  00010000ERROR(-IO-DMTCNL)DM.(/,  ( DPCHK) ) > [(, ) 0;]# Copyright (c) 1987, I.P. Sharp Associates 00020000 :  []pchk v    ;;  00010000ERROR(-IO-DMTCNL)DM.(/ , ( DPNC) ) > [  0;]# Copyright (c) 1987, I.P. Sharp Associatesx    ;;  00010000ERROR(-IO-DMTCNL)DM.(/ , ( DPVAL) ) > [  0;]# Copyright (c) 1987, I.P. Sharp Associatesz   ;;  00010000ERROR(-IO-DMTCNL)DM.(/ , ( DPDEF) ) > [  0;]# Copyright (c) 1987, I.P. Sharp Associates|    ;;;; ; ; ; s have  00010000ERROR(-IO-DMTCNL)DM, PC 00020000# WARNING: The X variables must not be in the package!!! In 00030000# For now I don't do any testing of this. variants:  00040000# NOTE: Cannot be used in run-time systems that don't have DEF. new workspac  00050000>(/71)/ SYNTAX ERROR>(R )/ DOMAIN ERROR>(-  )/ RANK ERROR>(/  )/ DOMAIN ERRORe see the 00060000         .(  ) me varian 00070000    >( )/ DOMAIN ERROR supp 00080000 0(; )/[1]PDEF 222PACK 3[(3)~4;] an axis gr 00090000>(/ )/PEX DEF ERROR torage, 00100000# Copyright (c) 1987, I.P. Sharp Associatess ~    ;;; ; ; ; POKE 303  00010000ERROR(-IO-DMTCNL)DMn APL*PLUS  00020000# WARNING: The X variables must not be in the packages!!!-- 00030000# For now I don't do any testing of this.ACK -- pack 00040000# NOTE: Cannot be used in run-time systems that don't have DEF. -- will no 00050000>((/  )/  )/ DOMAIN ERROR 00060000       -- signal 00070000 0(; )(; )=[1]PDEF 11PDEF 221PACK(,' ',3),,' ',4 00080000>(/ )/PINS DEF ERROR   00090000# Copyright (c) 1987, I.P. Sharp Associates    ;;  00010000ERROR(-IO-DMTCNL)DM.(/ , ( DPNAMES) ) > [  0;]# Copyright (c) 1987, I.P. Sharp AssociatesNOPQR    ;;;   00010000ERROR(-IO-DMTCNL)DM987, I.P. S 00020000>(/  )/ DOMAIN ERROR 00030000.(/71) >(R )/ DOMAIN ERROR>(-  )/ RANK ERROR 00040000       7 >( )/ DOMAIN ERROR. ,( 00050000 :    7 (PEX 00060000 : /  (0 ) (  )  CDEF 00070000# Copyright (c) 1987, I.P. Sharp AssociatesEF   ;;; ; ; ed. This may 00010000ERROR(-IO-DMTCNL)DMure release 00020000# WARNING: The X variables must not be in the package!!!  00030000# For now I don't do any testing of this.sed to APL, 00040000# NOTE: Cannot be used in run-time systems that don't have DEF. 303. APL ve  00050000>(/71)/ SYNTAX ERROR>(R )/ DOMAIN ERROR>(-  )/ RANK ERROR>(/  )/ DOMAIN ERRORthat cont 00060000         .(  )  variable 00070000>(   )/ DOMAIN ERRORn is running 00080000 0(; )[1]PDEF 222PACK 1illegal" na 00090000>(/ )/PSEL DEF ERROR y whic 00100000# Copyright (c) 1987, I.P. Sharp Associatesnc   00010000 ([ ])0[]R HPGSEP90PAp:CKXE:p2,2O2,ZErZZZZZ}tt 5{5{[oNd.@@)%     .V.X.*..,.7s.6t8B....>,5v / u..x.>,6v5P t.R.