home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 18 REXX / 18-REXX.zip / rxlepsom.zip / RXLEPSOM.INF (.txt) < prev    next >
OS/2 Help File  |  1995-09-14  |  70KB  |  1,233 lines

  1.  
  2. ΓòÉΓòÉΓòÉ 1. Copyrights ΓòÉΓòÉΓòÉ
  3.  
  4. Copyright (c) Virtual Objects Software 1995 
  5. Author Vitaly Gumirov 
  6.  
  7. Also this document containes the following trademarks: 
  8.  
  9.    OS/2, EPM, SOM, REXX, and ObjectREXX are trademarks of IBM Corp.
  10.    Lotus 123, 123G and Datalence are trademarks of Lotus Development.
  11.  
  12.  
  13. ΓòÉΓòÉΓòÉ 2. Introduction and general concepts ΓòÉΓòÉΓòÉ
  14.  
  15. The REXX is a quite simple and nice language. It is very simple to learn to 
  16. write  not complex programs on it. Therefore,  many OS/2 programs use it  a 
  17. macro language.  For  example, Enhanced  Editor  (EPM), which  is located in 
  18. OS/2  system/Productivity Folder allows user to write scripts to perform more 
  19. complex word processing functions then one can  do using menus.  Moreover,  the 
  20. power of the  REXX  could be extended by  loading additional libraries of 
  21. functions written in  C/C++.  There  exist  many useful REXX libraries which 
  22. could be found over the net. 
  23.  
  24. I've been  very surprised  when I've found that the  OS/2 version of the 
  25. world's best known spreadsheet Lotus 123 does not allow to use REXX as a 
  26. scripting language.  So, 'cause  one our client will have  a need to use Lotus 
  27. 123G in the client  server  environment to process some data  from the object 
  28. database having no Datalence  drivers for it. So, we have got to write some 
  29. Lotus 123G interface for this database. We have known that the  above  object 
  30. database  will  have  an ObjectREXX interface  (more exactly  SOM interface 
  31. ;-).  Therefore, we have  decided  to build  SOM interface classes for  Lotus 
  32. 123G. The  interfaces of this  classes  are included in this  package. They 
  33. could  be directly used  from  ObjectREXX programs. But some testing shows us 
  34. that the current beta  of ObjectREXX could not  be generally used as a  macro 
  35. language  for 123G. The  loading time of the ObjectREXX interpreter on  the 
  36. 486DX2 machine with 8M RAM is not, imho,  suitable for this  purpose. 
  37. Therefore, the decision to build the API for an ordinary REXX has been made. 
  38.  
  39. Now about this guide.  If you're planning to use RXLEPSOM package  in an 
  40. ordinary REXX environment you will need no to read the chapter 4 related to the 
  41. ObjectREXX and SOM  interfaces.  Thus in this case after  reading the chapters 
  42. 1, 2 and 3 you should go directly to the chapter 5. 
  43.  
  44.  
  45. ΓòÉΓòÉΓòÉ 3. Packaging ΓòÉΓòÉΓòÉ
  46.  
  47. This package includes the following files 
  48.  
  49.  ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  50.  Γöé 123REXX.DLL  Γöé  macro library for Lotus 123G, it should be pointed       Γöé
  51.  Γöé              Γöé  by the {library-attach} macro;                           Γöé
  52.  Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  53.  Γöé LEPSOM.DLL   Γöé  DLL containing SOM  interface  classes for Lotus 123G, itΓöé
  54.  Γöé              Γöé  should be placed somewhere in your LIBPATH;              Γöé
  55.  Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  56.  Γöé RXLEPSOM.DLL Γöé  DLL containing REXX interface to SOM the above SOM       Γöé
  57.  Γöé              Γöé  classes it should be placed somewhere in your LIBPATH;   Γöé
  58.  Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  59.  Γöé LEPSOM.IR    Γöé  Interface Repository database, you will need it only if  Γöé
  60.  Γöé              Γöé  you are going to use ObjectREXX with 123G, in this case  Γöé
  61.  Γöé              Γöé  it should be added to the SOMIR environment variable in  Γöé
  62.  Γöé              Γöé  your CONFIG.SYS;                                         Γöé
  63.  Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  64.  Γöé *.CMD        Γöé  sample REXX macro files for Lotus 123G;                  Γöé
  65.  Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  66.  Γöé *.ORX        Γöé  sample ObjectREXX macro files for Lotus 123G;            Γöé
  67.  Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  68.  Γöé *.WG2        Γöé                                                           Γöé
  69.  Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  70.  Γöé LEPRXMM.INI  Γöé  the profile file, containing sample macro definitions;   Γöé
  71.  Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  72.  Γöé RXLEPSOM.DOC Γöé  this documentation file;                                 Γöé
  73.  Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  74.  Γöé RXLEPSOM.INF Γöé  the on-line version of this documentation;               Γöé
  75.  ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  76.  
  77.  
  78. ΓòÉΓòÉΓòÉ 4. How to register ΓòÉΓòÉΓòÉ
  79.  
  80. The RXLEPSOM package is a copyrighted software owned by Virtual Objects 
  81. Software. This is the demo beta version of the RXLEPSOM package. It displays 
  82. the special message box every 5th REXX macro call. The full featured version 
  83. which costs $60+shippment has no such restriction. 
  84.  
  85. We are glad to here from you about all errors and inconviniences you'll find 
  86. from using this product. Moreover, if you'll find this product useful for you 
  87. and decide to get the full featured copy of this product, please contact us to 
  88. define more precisely the method of money transfer and other . 
  89.  
  90. How to reach us: 
  91.  
  92.  Mail:
  93.     Vitaly Gumirov
  94.     Virtual Objects Software
  95.  
  96.     6 Lavrentyeva St
  97.     Novosibirsk 630090
  98.     Russia
  99.  
  100.  E-mail:
  101.     vos@ifshop.ict.nsk.su
  102.  
  103. WARRANTY:
  104. THE  AUTHOR  HEREBY  DISCLAIMS  ALL  WARRANTIES  RELATING  TO  THIS SOFTWARE, 
  105. WHETHER  EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY  IMPLIED 
  106. WARRANTIES  OF  MERCHANTABILITY  OR  FITNESS  FOR  A PARTICULAR PURPOSE.  THE 
  107. AUTHOR WILL NOT BE LIABLE FOR ANY  SPECIAL, INCIDENTAL,  CONSEQUENTIAL, 
  108. INDIRECT OR SIMILAR DAMAGES DUE TO LOSS OF DATA OR ANY OTHER REASON, EVEN  IF 
  109. THE AUTHOR OR AN AGENT OF THE AUTHOR HAS BEEN ADVISED OF THE POSSIBILITY OF 
  110. SUCH DAMAGES.  IN  NO EVENT  SHALL  THE AUTHOR'S LIABILITY FOR ANY DAMAGES EVER 
  111. EXCEED THE PRICE PAID FOR THE LICENSE  TO  USE  THE SOFTWARE, REGARDLESS OF THE 
  112. FORM OF THE CLAIM.  THE PERSON USING THE SOFTWARE BEARS ALL RISK  AS TO THE 
  113. QUALITY AND PERFORMANCE OF THE SOFTWARE. 
  114.  
  115.  
  116. ΓòÉΓòÉΓòÉ 5. Installation ΓòÉΓòÉΓòÉ
  117.  
  118. To install the RXLEPSOM package run create some directory for it and unzip this 
  119. archieve there then run install.cmd  and follow its instructions. 
  120.  
  121.  
  122. ΓòÉΓòÉΓòÉ 6. Lotus 123 macro interface ΓòÉΓòÉΓòÉ
  123.  
  124. This section describes how to use RXLEPSOM package from Lotus 123G. 
  125.  
  126.  
  127. ΓòÉΓòÉΓòÉ 6.1. Special 123G macro commands to be used ΓòÉΓòÉΓòÉ
  128.  
  129. Lotus 123G has a special macro command {attach-library}  which allows to load a 
  130. DLL with an additional  macro commands and @functions. So, to use the RXLEPSOM 
  131. with the 123G you should execute a macro:  {library-attach 123REXX}
  132.  Note, that you will  get an error message while executing this  macro if all 
  133. the RXLEPSOM's DLLs are not located somewhere in your LIBPATH.  123REXX.DLL 
  134. adds  the {rxadd} macro command, which  you  could  execute after attaching. It 
  135. allows you to  register the new REXX macro for 123G. This macro command should 
  136. be executed with the following parameters:  {rxadd <macro_name>;<macro_file>;<macro_arguments'_types>}
  137.     where 
  138.  
  139.  Argument Description 
  140.  
  141.  <macro_name> 
  142.       is a string containing the name of the new macro to register; 
  143.  
  144.  <macro_file> 
  145.       is a  string  containing  the  name of  REXX or ObjectREXX program  file, 
  146.       which implements  your new macro; 
  147.  
  148.  <macro_arguments'_types> 
  149.       is an  address  or name of the range containing the definitions of 
  150.       arguments of  your new macro. 
  151.   The last parameter  needs  more details. The above  range  should be one 
  152.  sheet and  one column vertical range one cell  per new macro's argument. Each 
  153.  cell  should  contain  the  type  definition of the  corresponding argument. 
  154.  This definition is a number  of the type or a special formula. For  the 
  155.  purpose of  simplification,  123REXX.DLL  adds  the  following @functions to 
  156.  the 123G:  @TYPESTRING(1),  @TYPENUMBER(1), @TYPERANGE(1). These functions 
  157.  are ignoring any  attributes, but the syntax of writing Lotus 123 formulae 
  158.  requires @function to receive at least one parameter. We  recommend  you  to 
  159.  use  these  @functions for  defining  new  macro attributes.  Thus,  for 
  160.  example,  let  us register  the  new REXX  macro command  {rxtest}  located 
  161.  in  the  file  "c:\lotus\rexx\tst.cmd"  and receiving the following 
  162.  parameters: {rxtest <"string">;<INRANGE>;<OUTRANGE>;<number>}
  163.  To do so we should go thru the following steps. 
  164.  
  165.  
  166. ΓòÉΓòÉΓòÉ 6.2. Steps to register new REXX macro ΓòÉΓòÉΓòÉ
  167.  
  168. ΓòöΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòñΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòù
  169. Γòæ Cell   Γöé Cell value to be entered or key to be pressed                Γòæ
  170. Γòæaddress Γöé                                                              Γòæ
  171. ΓòáΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòºΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòú
  172. Γòæ   Step 1: Filling  the  range containing  the  definitions of the  newΓòæ
  173. Γòæ         macro arguments. (See Macro Arguments Types)                  Γòæ
  174. ΓòƒΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓòó
  175. Γòæ A:D1   Γöé formula "+@TYPESTRING(1)"                                    Γòæ
  176. Γòæ A:D2   Γöé formula "+@TYPERANGE(1)"                                     Γòæ
  177. Γòæ A:D3   Γöé formula "+@TYPERANGE(1)"                                     Γòæ
  178. Γòæ A:D4   Γöé formula "+@TYPENUMBER(1)"                                    Γòæ
  179. ΓòáΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòºΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòú
  180. Γòæ           Step 2:  Entering the registering macro commands.           Γòæ
  181. ΓòƒΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓòó
  182. Γòæ A:B1   Γöé {library-attach 123REXX}                                     Γòæ
  183. ΓòƒΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓòó
  184. Γòæ A:B2   Γöé<Del> Erase  the cell A:B2 (place  here the cursor  and press Γòæ
  185. Γòæ        Γöé       Del button).                                           Γòæ
  186. ΓòƒΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓòó
  187. Γòæ A:B3   Γöé{rxadd "rxtest";"c:\lotus\rexx\tst.cmd";A:D1..A:D4}           Γòæ
  188. ΓòƒΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓòó
  189. Γòæ A:B4   Γöé{library-detach 123REXX}                                      Γòæ
  190. ΓòƒΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓòó
  191. Γòæ A:B5   Γöé <DEL> Erase  the cell A:B5 (place  here the cursor  and pressΓòæ
  192. Γòæ        Γöé Del button).                                                 Γòæ
  193. ΓòáΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòºΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòú
  194. Γòæ               Step 3: Attaching the RXLEPSOM support DLL              Γòæ
  195. ΓòƒΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓòó
  196. Γòæ A:B1   Γöé  press consequently keys "Alt-F3","Esc","Enter"              Γòæ
  197. ΓòáΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòºΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòú
  198. Γòæ Step 4: Executing of the register macro:                              Γòæ
  199. ΓòƒΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓòó
  200. Γòæ A:B3   Γöé  press consequently keys "Alt-F3","Esc","Enter"              Γòæ
  201. ΓòáΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòºΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòú
  202. Γòæ             Step 3: Re-attaching the RXLEPSOM support DLL             Γòæ
  203. ΓòƒΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓòó
  204. Γòæ A:B1   Γöé  press consequently keys "Alt-F3","Esc","Enter"              Γòæ
  205. ΓòÜΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòºΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓò¥
  206.  After these steps you could execute {rxtest} macro 
  207.  
  208.  
  209. ΓòÉΓòÉΓòÉ 6.3. Macro Arguments Types ΓòÉΓòÉΓòÉ
  210.  
  211. Definition of the new macro needs you to specify this new macro arguments' 
  212. types. When you adding the new macro from 123G you should fill the range of 
  213. cells containing the numbers of types of the new macro arguments. To simplify 
  214. this procedure RXLEPSOM adds the special @functions: 
  215.  
  216.     @TYPERANGE  corresponds to range arguments.
  217.     @TYPESTRING  corresponds to string arguments.
  218.     @TYPENUMBER  corresponds to number arguments.
  219.  
  220.  Note:  these @functions need any one argument to be specified, when used in 
  221. 123G cell formulas.  For example, you should enter in the 123G cell 
  222. "+@TYPESTRING(1)" but not "+@TYPESTRING()". 
  223.  
  224. When you adding new macro using LEPRexxMacroManager :: AddNewMacro  method you 
  225. should specify the array of unsigned shorts containing the numbers of types of 
  226. the macro arguments: 
  227.  
  228.      0 corresponds to string arguments.
  229.      1 corresponds to number arguments.
  230.      4 corresponds to range arguments.
  231.  
  232.  
  233. ΓòÉΓòÉΓòÉ 7. ObjectREXX and SOM API ΓòÉΓòÉΓòÉ
  234.  
  235.  ObjectREXX  API is  based  on the fact  that  ObjectREXX programs  could 
  236. directly  use  SOM  classes (on how  to  use  SOM  classes in ObjectREXX 
  237. programs see  ObjectREXX  documentation).  RXLEPSOM package includes the 
  238. following SOM classes: 
  239.  
  240.    1. Interface classes  representing  an  abstraction of Lotus 123 macro 
  241.       argument types: 
  242.  
  243.                   NOTE: LEPValue class is an abstract class, that  is you could
  244.                   ΓöÇΓöÇΓöÇΓöÇ  not use it directly from your programs.
  245.  
  246.    2. The class  LEPArgumentsArray implements an abstraction of the macro 
  247.       arguments'  list.  Any  REXX  macro  receives  as  its argument a 
  248.       pointer  to  the LEPArgumentsArray instance. This array object contains 
  249.       an  arguments  of the macro taken from the issued 123G  macro  command. 
  250.       Each argument is represented as an object of the LEPValue's successor. 
  251.  
  252.    3. The class  LEPRexxMacroManager  having  the only one instance implements 
  253.       a  macro manager. It  has a methods to add, delete or query an 
  254.       information on REXX macros. 
  255.  
  256.    4. Miscellaneous additional classes. Class LEPCoord implements an 
  257.       abstraction of the 123G table coordinates. 
  258.  
  259.  
  260. ΓòÉΓòÉΓòÉ 7.1. Class LEPValue ΓòÉΓòÉΓòÉ
  261.  
  262.  
  263.     Inherits: SOMObject
  264.  
  265.  
  266. ΓòÉΓòÉΓòÉ 7.1.1. Methods ΓòÉΓòÉΓòÉ
  267.  
  268.  
  269. ΓòÉΓòÉΓòÉ 7.1.1.1. unsigned short lepType(); ΓòÉΓòÉΓòÉ
  270.  
  271.    Qualification: public
  272.  
  273.   Arguments: none
  274.  
  275.   Notes:   This method should be overridden in the inheritors.
  276.  
  277.   Returns:  It should return LEPC_PROT_TYPE* constant from the LEP.H
  278.  
  279.  
  280. ΓòÉΓòÉΓòÉ 7.1.1.2. unsigned short lepSize(); ΓòÉΓòÉΓòÉ
  281.  
  282.    Qualification: public
  283.  
  284.   Arguments: none
  285.  
  286.   Notes:   This method should be overridden.
  287.  
  288.   Returns:  It returns the  size of the  value attribute to  be  used
  289.         with Lep*GetArgValue function.
  290.  
  291.  
  292. ΓòÉΓòÉΓòÉ 7.1.1.3. void* value_attribute_address() ΓòÉΓòÉΓòÉ
  293.  
  294.    Qualification: protected
  295.  
  296.   Arguments: none
  297.  
  298.   Notes:   This method should be overridden.
  299.  
  300.   Returns:  It returns  the  address  of  value  attribute  in  the
  301.         successor's instance
  302.  
  303.  
  304. ΓòÉΓòÉΓòÉ 7.2. Class LEPInteger ΓòÉΓòÉΓòÉ
  305.  
  306.  
  307.     Inherits classes: LEPValue
  308.     Overrides methods:
  309.             lepType
  310.             lepSize
  311.             value_attribute_address
  312.  
  313.  
  314. ΓòÉΓòÉΓòÉ 7.2.1. Attributes ΓòÉΓòÉΓòÉ
  315.  
  316.     See bellow 
  317.  
  318.  
  319. ΓòÉΓòÉΓòÉ 7.2.1.1. long value ΓòÉΓòÉΓòÉ
  320.  
  321.     Qualification: public
  322.  
  323.     Notes:     this attribute contains an integer value
  324.  
  325.  
  326. ΓòÉΓòÉΓòÉ 7.3. Class LEPString ΓòÉΓòÉΓòÉ
  327.  
  328.  
  329.     Inherits classes: LEPValue
  330.     Overrides methods:
  331.             lepType
  332.             lepSize
  333.             value_attribute_address
  334.  
  335.  
  336. ΓòÉΓòÉΓòÉ 7.3.1. Attributes ΓòÉΓòÉΓòÉ
  337.  
  338.  
  339.  
  340. ΓòÉΓòÉΓòÉ 7.3.1.1. string value ΓòÉΓòÉΓòÉ
  341.  
  342.  
  343.     Qualification: public
  344.     Notes:     this attribute contains a string value
  345.  
  346.  
  347. ΓòÉΓòÉΓòÉ 7.4. Class LEPReal ΓòÉΓòÉΓòÉ
  348.  
  349.  
  350.     Inherits classes: LEPValue
  351.     Overrides methods:
  352.             lepType
  353.             lepSize
  354.             value_attribute_address
  355.  
  356.  
  357. ΓòÉΓòÉΓòÉ 7.4.1. Attributes ΓòÉΓòÉΓòÉ
  358.  
  359.  
  360.  
  361. ΓòÉΓòÉΓòÉ 7.4.1.1. double value ΓòÉΓòÉΓòÉ
  362.  
  363.  
  364.     Qualification: public
  365.     Notes:     this attribute contains real value
  366.  
  367.  
  368. ΓòÉΓòÉΓòÉ 7.5. Class LEPRange ΓòÉΓòÉΓòÉ
  369.  
  370.  
  371.     Inherits classes: LEPValue
  372.     Overrides methods:
  373.             lepType
  374.             lepSize
  375.             value_attribute_address
  376.  
  377.  
  378. ΓòÉΓòÉΓòÉ 7.5.1. Attributes ΓòÉΓòÉΓòÉ
  379.  
  380.  
  381.  
  382. ΓòÉΓòÉΓòÉ 7.5.1.1. LEP_PRANGE pRange ΓòÉΓòÉΓòÉ
  383.  
  384.  
  385.     Qualification: private
  386.     Notes:     this attribute contains pointer to the 123G range
  387.  
  388.  
  389. ΓòÉΓòÉΓòÉ 7.5.1.2. LEPCoord dimension ΓòÉΓòÉΓòÉ
  390.  
  391.  
  392.     Qualification: public
  393.     Notes: this attribute contains the dimension of this range
  394.  
  395.  
  396. ΓòÉΓòÉΓòÉ 7.5.2. Methods ΓòÉΓòÉΓòÉ
  397.  
  398.  
  399.  
  400. ΓòÉΓòÉΓòÉ 7.5.2.1. void InitRange(in LEP_PRANGE range_ptr) ΓòÉΓòÉΓòÉ
  401.  
  402.  
  403.  
  404.   Qualification: public
  405.  
  406.   Arguments:
  407.       LEP_PRANGE range_ptr contains  a  pointer to the range which
  408.       is used to initialize pRange attribute
  409.  
  410.   Notes: This method is used to initialize this object's  attributes (pRange and
  411.       dimension)
  412.  
  413.   Returns:
  414.  
  415.  
  416. ΓòÉΓòÉΓòÉ 7.5.2.2. LEP_LEPC_RET GetCellType(cell_coord, pType, pSize) ΓòÉΓòÉΓòÉ
  417.  
  418.  
  419.   Qualification: public
  420.   Arguments:
  421.     in LEPCoord cell_coord:  cell coordinates
  422.     out unsigned short pType: type of the cell at
  423.                  the given coordinates
  424.     out unsigned short pSize: size of the value in the cell
  425.                  at the given coordinates
  426.   Notes:
  427.      This method retrieves the type and the size for
  428.      the cell of this range defined by its cell_coord.
  429.  
  430.   Returns: LEP error code
  431.  
  432.  
  433. ΓòÉΓòÉΓòÉ 7.5.2.3. LEP_LEPC_RET GetCellInteger(cell_coord, value) ΓòÉΓòÉΓòÉ
  434.  
  435.  
  436.  
  437.   Qualification: public
  438.  
  439.   Arguments:
  440.     in LEPCoord cell_coord:  cell coordinates
  441.     out long value: value of the cell at the given coordinates
  442.  
  443.   Notes:
  444.      This method retrieves the integer value of
  445.      the cell at the given coordinates
  446.  
  447.   Returns: LEP error code
  448.  
  449.  
  450. ΓòÉΓòÉΓòÉ 7.5.2.4. LEP_LEPC_RET GetCellString(cell_coord, value) ΓòÉΓòÉΓòÉ
  451.  
  452.  
  453.   Qualification: public
  454.  
  455.   Arguments:
  456.     in LEPCoord cell_coord:  cell coordinates
  457.     out string value: returned string value of the
  458.              cell at the given coordinates
  459.   Notes:
  460.      This method retrieves the string value of
  461.      the cell at the given coordinates
  462.  
  463.   Returns: LEP error code
  464.  
  465.  
  466. ΓòÉΓòÉΓòÉ 7.5.2.5. LEP_LEPC_RET GetCellValue(cell_coord,value) ΓòÉΓòÉΓòÉ
  467.  
  468.  
  469.   Qualification: public
  470.   Arguments:
  471.     in LEPCoord cell_coord:  cell coordinates
  472.     out string value: returned string value of the
  473.              cell at the given coordinates
  474.   Notes:
  475.      This method retrieves the string value of
  476.      the cell at the given coordinates
  477.  
  478.   Returns: LEP error code
  479.  
  480.  
  481. ΓòÉΓòÉΓòÉ 7.5.2.6. LEP_LEPC_RET GetCellDouble(cell_coord,value) ΓòÉΓòÉΓòÉ
  482.  
  483.  
  484.   Qualification: public
  485.   Arguments:
  486.     in LEPCoord cell_coord:  cell coordinates
  487.     out double value: returned double value of the
  488.              cell at  the given coordinates
  489.   Notes:
  490.      This method retrieves the double value of
  491.      the cell at the given coordinates
  492.  
  493.   Returns: LEP error code
  494.  
  495.  
  496. ΓòÉΓòÉΓòÉ 7.5.2.7. LEP_LEPC_RET GetCellFormula(in LEPCoord cell_coord,inout string value); ΓòÉΓòÉΓòÉ
  497.  
  498.  
  499.  
  500.   Qualification: public
  501.  
  502.   Arguments:
  503.     in LEPCoord cell_coord:  cell coordinates
  504.     out string value: returned formulae
  505.              at  the given coordinates
  506.   Notes:
  507.      This method retrieves formula string in
  508.      the cell at the given coordinates
  509.  
  510.   Returns: LEP error code
  511.  
  512.  
  513. ΓòÉΓòÉΓòÉ 7.5.2.8. LEP_LEPC_RET SetCellInteger(in LEPCoord cell_coord,in long value ); ΓòÉΓòÉΓòÉ
  514.  
  515.  
  516.  
  517.   Qualification: public
  518.   Arguments:
  519.     in LEPCoord cell_coord:  cell coordinates
  520.     in long value: value to be placed in the cell
  521.            at the given coordinates
  522.   Notes:
  523.      This method sets the given long value to
  524.      the cell at the given coordinates
  525.  
  526.   Returns: LEP error code
  527.  
  528.  
  529. ΓòÉΓòÉΓòÉ 7.5.2.9. LEP_LEPC_RET SetCellString(in LEPCoord cell_coord,in string value); ΓòÉΓòÉΓòÉ
  530.  
  531.  
  532.  
  533.   Qualification: public
  534.   Arguments:
  535.     in LEPCoord cell_coord:  cell coordinates
  536.     in string value: value to be placed in the cell
  537.            at the given coordinates
  538.   Notes:
  539.      This method sets the given string value to
  540.      the cell at the given coordinates
  541.  
  542.   Returns: LEP error code
  543.  
  544.  
  545. ΓòÉΓòÉΓòÉ 7.5.2.10. LEP_LEPC_RET SetCellValue(in LEPCoord cell_coord,in string value); ΓòÉΓòÉΓòÉ
  546.  
  547.  
  548.  
  549.   Qualification: public
  550.   Arguments:
  551.     in LEPCoord cell_coord:  cell coordinates
  552.     in string value: value to be placed in the cell
  553.            at the given coordinates
  554.   Notes:
  555.      This method sets the given string value to
  556.      the cell at the given coordinates
  557.  
  558.   Returns: LEP error code
  559.  
  560.  
  561. ΓòÉΓòÉΓòÉ 7.5.2.11. LEP_LEPC_RET SetCellDouble(in LEPCoord cell_coord,in double value); ΓòÉΓòÉΓòÉ
  562.  
  563.  
  564.  
  565.   Qualification: public
  566.   Arguments:
  567.     in LEPCoord cell_coord:  cell coordinates
  568.     in double value: value to be placed in the cell
  569.            at the given coordinates
  570.   Notes:
  571.      This method sets the given double value to
  572.      the cell at the given coordinates
  573.  
  574.   Returns: LEP error code
  575.  
  576.  
  577. ΓòÉΓòÉΓòÉ 7.5.2.12. LEP_LEPC_RET SetCellFormula(in LEPCoord cell_coord, in string value); ΓòÉΓòÉΓòÉ
  578.  
  579.    Qualification: public
  580.   Arguments:
  581.     in LEPCoord cell_coord:  cell coordinates
  582.     in string value: formula to be placed in the cell
  583.            at the given coordinates
  584.   Notes:
  585.      This method places the given formula in the  cell at the
  586.      given coordinates and  forces  123G to calculate the value
  587.      of this formula.
  588.  
  589.   Returns: LEP error code
  590.  
  591.  
  592. ΓòÉΓòÉΓòÉ 7.5.2.13. void DisplayError(in string err_msg); ΓòÉΓòÉΓòÉ
  593.  
  594.  
  595.   Qualification: public
  596.  
  597.   Arguments:
  598.     in string err_msg: error message to be displayed
  599.  
  600.   Notes: This method displays the error message window
  601.       with the given message.
  602.  
  603.   Returns: none
  604.  
  605.  
  606. ΓòÉΓòÉΓòÉ 7.6. Class LEPArgumentsArray ΓòÉΓòÉΓòÉ
  607.  
  608.  
  609.     Inherits classes: SOMObject
  610.  
  611.  
  612. ΓòÉΓòÉΓòÉ 7.6.1. Attributes ΓòÉΓòÉΓòÉ
  613.  
  614.  
  615.  
  616. ΓòÉΓòÉΓòÉ 7.6.1.1. sequence<LEPValue> args ΓòÉΓòÉΓòÉ
  617.  
  618.  
  619.    Qualification: public
  620.    Notes: this is the list of the LEPValue objects contained in this array
  621.  
  622.  
  623. ΓòÉΓòÉΓòÉ 7.6.2. Methods ΓòÉΓòÉΓòÉ
  624.  
  625.  
  626.  
  627. ΓòÉΓòÉΓòÉ 7.6.2.1. long     Size(); ΓòÉΓòÉΓòÉ
  628.  
  629.  
  630.  
  631.   Qualification: public
  632.  
  633.   Arguments: none
  634.  
  635.   Notes:
  636.  
  637.   Returns: the size of this array
  638.  
  639.  
  640. ΓòÉΓòÉΓòÉ 7.6.2.2. LEPValue GetByNo(in long i); ΓòÉΓòÉΓòÉ
  641.  
  642.  
  643.  
  644.   Qualification: public
  645.  
  646.   Arguments:
  647.     in long i: the number of the element to be returned
  648.  
  649.   Notes:
  650.  
  651.   Returns: the i-th element of this array
  652.  
  653.  
  654. ΓòÉΓòÉΓòÉ 7.6.2.3. boolean  InitArray(in long size); ΓòÉΓòÉΓòÉ
  655.  
  656.  
  657.  
  658.   Qualification: public
  659.  
  660.   Arguments:
  661.     in long size: the size of the array to be allocated
  662.  
  663.   Notes: Allocates the array with the given size
  664.  
  665.   Returns: TRUE on success
  666.        FALSE on any error occurred while allocating
  667.  
  668.  
  669. ΓòÉΓòÉΓòÉ 7.6.2.4. boolean  AddLEPValue(in LEPValue lv); ΓòÉΓòÉΓòÉ
  670.  
  671.  
  672.  
  673.   Qualification: public
  674.  
  675.   Arguments:
  676.     in long size: the size of the array to be allocated
  677.  
  678.   Notes: Adds the given LEPValue to the end of this array
  679.  
  680.   Returns: TRUE on success
  681.        FALSE on any error occurred while adding
  682.  
  683.  
  684. ΓòÉΓòÉΓòÉ 7.7. LEPRexxMacroManager ΓòÉΓòÉΓòÉ
  685.  
  686.  
  687.   Inherits classes: SOMObject
  688.  
  689.  
  690. ΓòÉΓòÉΓòÉ 7.7.1. Types ΓòÉΓòÉΓòÉ
  691.  
  692.  
  693. ΓòÉΓòÉΓòÉ 7.7.1.1. MacroEntry ΓòÉΓòÉΓòÉ
  694.  
  695.    struct MacroEntry {
  696.     string macroName;
  697.     string macroFile;
  698.     unsigned short argsNumber;
  699.     unsigned short *argsPrototypes;
  700.   };
  701.  
  702.  
  703. ΓòÉΓòÉΓòÉ 7.7.1.2. LEPMacroFunctionPtr ΓòÉΓòÉΓòÉ
  704.  
  705.    typedef void *LEPMacroFunctionPtr;
  706.  
  707.  
  708. ΓòÉΓòÉΓòÉ 7.7.2. Attributes ΓòÉΓòÉΓòÉ
  709.  
  710.  
  711. ΓòÉΓòÉΓòÉ 7.7.2.1. attribute sequence<MacroEntry> mtable; ΓòÉΓòÉΓòÉ
  712.  
  713.    attribute sequence<MacroEntry> mtable;
  714.  
  715.   This attribute contains rexx macro definitions 
  716.  
  717.  
  718. ΓòÉΓòÉΓòÉ 7.7.2.2. readonly attribute unsigned long size; ΓòÉΓòÉΓòÉ
  719.  
  720.    readonly attribute unsigned long size;
  721.  
  722.   This is the number of registered macroses in this object 
  723.  
  724.  
  725. ΓòÉΓòÉΓòÉ 7.7.3. Methods ΓòÉΓòÉΓòÉ
  726.  
  727.  
  728. ΓòÉΓòÉΓòÉ 7.7.3.1. AddNewMacro ΓòÉΓòÉΓòÉ
  729.  
  730.    Syntax
  731.       macroId=AddNewMacro(name,
  732.            file,
  733.            argsNum,
  734.            argsProts);
  735.  
  736.   Qualification: public
  737.  
  738.   Arguments:
  739.     in string name:
  740.         The new macro's name.
  741.  
  742.     in string file:
  743.         The name of the
  744.         file which containes this new
  745.         macro implementation.
  746.  
  747.     in unsigned short argsNum:
  748.         The number of arguments.
  749.  
  750.     in unsigned short * argsProts:
  751.         The array which containes the
  752.         types of the macro arguments. For definition
  753.         of the macro arguments types see
  754.          Macro Arguments Types
  755.  
  756.   Notes:
  757.     This method new adds macro entry to this macro manager table.
  758.     NOTE: all strings and arrays will be copied, so you could
  759.     free those of parameters which you've allocated before the call
  760.     and need no longer.
  761.  
  762.   Returns:
  763.     This method returns the number of the new record in the mtable,
  764.     correponded to the newly registered macro.
  765.     On any error returns -1.
  766.  
  767.  
  768. ΓòÉΓòÉΓòÉ 7.7.3.2. GetName ΓòÉΓòÉΓòÉ
  769.  
  770.    Syntax
  771.         string macroName=GetName(macroId);
  772.   Qualification: public
  773.  
  774.   Arguments:
  775.     in long macroId:
  776.         The id number of the macro which name you want to know.
  777.  
  778.   Notes:
  779.     This method is used to get name of the macro specified by
  780.     it's id number.
  781.  
  782.   Returns:
  783.     This method returns the name of the macro having the given
  784.     id. It returns NULL string if there was no macro with the given
  785.     id registered.
  786.  
  787.  
  788. ΓòÉΓòÉΓòÉ 7.7.3.3. GetFilename ΓòÉΓòÉΓòÉ
  789.  
  790.    Syntax
  791.         string macroFile=GetFilename(macroId);
  792.   Qualification: public
  793.  
  794.   Arguments:
  795.     in long macroId:
  796.         The id number of the macro which filename you want to know.
  797.  
  798.   Notes:
  799.     This method is used to get filename of the macro specified by
  800.     it's id number.
  801.  
  802.   Returns:
  803.     This method returns the filename of the macro having the given
  804.     id. It returns NULL string if there was no macro with the given
  805.     id registered.
  806.  
  807.  
  808. ΓòÉΓòÉΓòÉ 7.7.3.4. GetArgsNumber ΓòÉΓòÉΓòÉ
  809.  
  810.    Syntax
  811.         unsigned short macroArgs=GetArgsNumber(macroId);
  812.   Qualification: public
  813.  
  814.   Arguments:
  815.     in long macroId:
  816.         The id number of the macro which arguments number
  817.         you want to know.
  818.  
  819.   Notes:
  820.     This method is used to get number of arguments of the macro
  821.     specified by it's id number.
  822.  
  823.   Returns:
  824.     This method returns the number of the arguments of
  825.     the macro having the given id.
  826.     It returns 0 if there was no macro
  827.     with the given id registered.
  828.  
  829.  
  830. ΓòÉΓòÉΓòÉ 7.7.3.5. GetArgsPrototypes ΓòÉΓòÉΓòÉ
  831.  
  832.    Syntax
  833.     unsigned short *macroTypes=GetArgsPrototypes(macroId);
  834.  
  835.   Qualification: public
  836.  
  837.   Arguments:
  838.     in long macroId:
  839.         The id number of the macro which arguments types
  840.         you want to know.
  841.  
  842.   Notes:
  843.     This method is used to get the types of the arguments of the macro
  844.     specified by it's id number.
  845.  
  846.   Returns:
  847.     This method returns the array containing the types
  848.     of the arguments of the macro having the given id.
  849.     It returns NULL if there was no macro
  850.     with the given id registered.
  851.  
  852.  
  853. ΓòÉΓòÉΓòÉ 7.7.3.6. GetArgType ΓòÉΓòÉΓòÉ
  854.  
  855.    Syntax
  856.         unsigned short macroType=GetArgType(macroId, argNo);
  857.   Qualification: public
  858.  
  859.   Arguments:
  860.     in long macroId:
  861.         The id number of the macro which argument type
  862.         you want to know.
  863.     in long argNo:
  864.  
  865.   Notes:
  866.     This method is used to get type of argument argNo of the macro
  867.     specified by it's id number.
  868.  
  869.   Returns:
  870.     This method returns the type of the argument number argNo of
  871.     the macro having the given id.
  872.     It returns (unsigned short)(-1) if there was no macro
  873.     with the given id registered or the specified macro does not have
  874.     the specified argument.
  875.  
  876.  
  877. ΓòÉΓòÉΓòÉ 7.7.3.7. DeleteMacroById ΓòÉΓòÉΓòÉ
  878.  
  879.    Syntax
  880.         boolean ret=DeleteMacroById(macroId);
  881.  
  882.   Qualification: public
  883.  
  884.   Arguments:
  885.     in long macroId:
  886.         The id number of the macro which you want to delete.
  887.  
  888.   Notes:
  889.     This method is used to deregister the specified macro and
  890.     remove its definition from the LEPRexxMacroManager table.
  891.  
  892.   Returns:
  893.     This method returns TRUE on success and FALSE if any error occurrs.
  894.  
  895.  
  896. ΓòÉΓòÉΓòÉ 7.7.3.8. DeleteMacroByName ΓòÉΓòÉΓòÉ
  897.  
  898.    Syntax
  899.         boolean ret=DeleteMacroByName(macroName);
  900.  
  901.   Qualification: public
  902.  
  903.   Arguments:
  904.     in long macroName:
  905.         The name of the macro which you want to delete.
  906.  
  907.   Notes:
  908.     This method is used to deregister the specified macro and
  909.     remove its definition from the LEPRexxMacroManager table.
  910.  
  911.   Returns:
  912.     This method returns TRUE on success and FALSE if any error occurrs.
  913.  
  914.  
  915. ΓòÉΓòÉΓòÉ 7.7.3.9. AddMacro ΓòÉΓòÉΓòÉ
  916.  
  917.    Syntax
  918.       macroId=AddMacro(name,
  919.            file,
  920.            argsNum,
  921.            argsProts);
  922.  
  923.   Qualification: public
  924.  
  925.   Arguments:
  926.     in string name:
  927.         The new macro's name.
  928.  
  929.     in string file:
  930.         The name of the
  931.         file which containes this new
  932.         macro implementation.
  933.  
  934.     in unsigned short argsNum:
  935.         The number of arguments.
  936.  
  937.     in unsigned short * argsProts:
  938.         The array which containes the
  939.         types of the macro arguments. For definition
  940.         of the macro arguments types see
  941.          Macro Arguments Types
  942.  
  943.   Notes:
  944.     If there was no macro with the specified name registered
  945.     before this call this method issues AddNewMacro .
  946.     If there was some one this method calls DeleteMacroByName(name) before
  947.     calling AddNewMacro .
  948.     NOTE: all strings and arrays will be copied, so you could
  949.     free those of parameters which you've allocated before the call
  950.     and need no longer.
  951.  
  952.   Returns:
  953.     This method returns the number of the new record in the mtable,
  954.     correponded to the newly registered macro.
  955.     On any error returns -1.
  956.  
  957.  
  958. ΓòÉΓòÉΓòÉ 7.7.3.10. GetId ΓòÉΓòÉΓòÉ
  959.  
  960.    Syntax
  961.         long macroId=GetId(macroName);
  962.  
  963.   Qualification: public
  964.  
  965.   Arguments:
  966.     in long macroName:
  967.         The name of the macro which id you want to get.
  968.  
  969.   Notes:
  970.     This method is used to get the id of the macro by its name.
  971.  
  972.   Returns:
  973.     This method returns -1 if any error occurrs.
  974.  
  975.  
  976. ΓòÉΓòÉΓòÉ 7.7.3.11. DisplayError ΓòÉΓòÉΓòÉ
  977.  
  978.    Syntax
  979.         DisplayError(err_msg);
  980.  
  981.   Qualification: public
  982.  
  983.   Arguments:
  984.     in string err_msg:
  985.         The error message to be displayed in
  986.         the special 123G message box.
  987.  
  988.   Notes:
  989.     This method is used to display the given
  990.     error message in the special 123G macro error message box.
  991.  
  992.   Returns:
  993.     Nothing (void).
  994.  
  995.  
  996. ΓòÉΓòÉΓòÉ 8. RXLEPSOM REXX API ΓòÉΓòÉΓòÉ
  997.  
  998.  
  999. ΓòÉΓòÉΓòÉ 8.1. LepSomLoadFuncs ΓòÉΓòÉΓòÉ
  1000.  
  1001. Syntax:
  1002.     call LepSomLoadFuncs
  1003.  
  1004. This function registers all the RXLEPSOM REXX API functions. 
  1005.  
  1006. Example:
  1007.     call RxFuncAdd 'LepSomLoadFuncs', 'rxlepsom', 'LepSomLoadFuncs'
  1008.     call LepSomLoadFuncs
  1009.  
  1010.  
  1011. ΓòÉΓòÉΓòÉ 8.2. LepDisplayError ΓòÉΓòÉΓòÉ
  1012.  
  1013. Syntax:
  1014.     call LepDisplayError msg
  1015.  
  1016. This function displays the given error message msg. 
  1017.  
  1018. Example:
  1019.     call LepDisplayError 'Macro error'
  1020.  
  1021. This call displays the string 'Macro error' in the Lotus 123G error window. 
  1022.  
  1023.  
  1024. ΓòÉΓòÉΓòÉ 8.3. LepAAnew ΓòÉΓòÉΓòÉ
  1025.  
  1026. Syntax:
  1027.     lepAA=LepAAnew(argv.1)
  1028.  
  1029. This function returns a LEPArgumentsArray object, whose address it receives as 
  1030. a long value. It is usually used in the REXX macro prolog (see the given 
  1031. example). 
  1032.  
  1033.  
  1034. ΓòÉΓòÉΓòÉ <hidden> Example ΓòÉΓòÉΓòÉ
  1035.  
  1036. call RxFuncAdd 'LepSomLoadFuncs', 'rxlepsom', 'LepSomLoadFuncs'
  1037. call LepSomLoadFuncs
  1038.  
  1039. parse arg args
  1040. n=words(args)
  1041. call lineout tst.log,'Arguments are ='args
  1042. do i=1 to n
  1043.         argv.i=word(args,i)
  1044. end
  1045.  
  1046. lepAA=LepAAnew(argv.1)
  1047. if LepGetClassName(lepAA)\='LEPArgumentsArray' then do
  1048.         cr=x2c('0D');
  1049.         msg='Internal error in 123REXX.DLL RexxAddMacro function.'
  1050.         msg=msg||cr||'Please contact us to inform about the conditions of this error.'
  1051.         LepDisplayError(msg);
  1052. end
  1053.  
  1054. argNum=LepAAGetByNo(lepAA)
  1055. lepArg.0=argNum
  1056. do i=1 to argNum
  1057.         lepArg.i=LepAAGetByNo(lepAA, i-1) /* Lep arguments are
  1058.                                         enumerated starting from 0 */
  1059.         call lineout tst.log, 'lepArg.'i' is a 'LepGetClassName(lepArg.i)
  1060. end
  1061.  
  1062.  
  1063. ΓòÉΓòÉΓòÉ 8.4. LepAAGetByNo ΓòÉΓòÉΓòÉ
  1064.  
  1065. Syntax:
  1066.  retVal=LepAAGetByNo (lepAA [, no])
  1067. This function returns the element number no of the specified LEPArgumentsArray 
  1068. lepAA object. If there is no 2nd argument given it returns the size of the 
  1069. specified array. See the following example . 
  1070.  
  1071.  
  1072. ΓòÉΓòÉΓòÉ 8.5. LepGetClassName ΓòÉΓòÉΓòÉ
  1073.  
  1074. Syntax:
  1075.      retVal=LepGetClassName(obj)
  1076. If the given obj is a valid RXLEPSOM object representation this function 
  1077. returns its class name. Else it returns "". 
  1078.  
  1079.  
  1080. ΓòÉΓòÉΓòÉ 8.6. LepGetRangeSheets ΓòÉΓòÉΓòÉ
  1081.  
  1082. Syntax:
  1083.      retVal=LepGetRangeSheets(range)
  1084. Here range should be a valid RXLEPSOM representation of the LEPRange instance 
  1085. object, i.e. for example LepGetClassName(range) should return 'LEPRange' 
  1086. string. In this case this function returns the number of sheets in the given 
  1087. range object. 
  1088.  
  1089.  
  1090. ΓòÉΓòÉΓòÉ 8.7. LepGetRangeCols ΓòÉΓòÉΓòÉ
  1091.  
  1092. Syntax:
  1093.      retVal=LepGetRangeCols(range)
  1094. Here range should be a valid RXLEPSOM representation of the LEPRange instance 
  1095. object, i.e. for example LepGetClassName(range) should return 'LEPRange' 
  1096. string. In this case this function returns the number of columns in the given 
  1097. range object. 
  1098.  
  1099.  
  1100. ΓòÉΓòÉΓòÉ 8.8. LepGetRangeRows ΓòÉΓòÉΓòÉ
  1101.  
  1102. Syntax:
  1103.      retVal=LepGetRangeRows(range)
  1104. Here range should be a valid RXLEPSOM representation of the LEPRange instance 
  1105. object, i.e. for example LepGetClassName(range) should return 'LEPRange' 
  1106. string. In this case this function returns the number of rows in the given 
  1107. range object. 
  1108.  
  1109.  
  1110. ΓòÉΓòÉΓòÉ 8.9. LepGetObjValue ΓòÉΓòÉΓòÉ
  1111.  
  1112. Syntax:
  1113.      retVal=LepGetObjValue(obj)
  1114.  
  1115. Here obj should be a valid RXLEPSOM representation of the LEPValue instance 
  1116. object, i.e. for example LepGetClassName(obj) should return the string 
  1117. containing a name of some of the LEPValue's ancestor class. In this case the 
  1118. returned depends on the class of the given obj. For classes LEPReal, 
  1119. LEPInteger, LEPString the retVal is the REXX string representation of the value 
  1120. stored in the given object.  If the given object is a LEPRange this functions 
  1121. simply returns the given obj. 
  1122.  
  1123.  
  1124. ΓòÉΓòÉΓòÉ 8.10. LepSetCellString ΓòÉΓòÉΓòÉ
  1125.  
  1126. Syntax:
  1127.      retc=LepSetCellString(range, sheet, column, row, str)
  1128.  
  1129. This function places the given string value str into the cell having the given 
  1130. coordinates (sheet, column, row) inside the given range. 
  1131.  
  1132. Returns the LEP error code. 
  1133.  
  1134.  
  1135. ΓòÉΓòÉΓòÉ 8.11. LepSetCellNumber ΓòÉΓòÉΓòÉ
  1136.  
  1137. Syntax:
  1138.      retc=LepSetCellNumber(range, sheet, column, row, number)
  1139.  
  1140. This function places the given number into the cell having the given 
  1141. coordinates (sheet, column, row) inside the given range. 
  1142.  
  1143. Returns the LEP error code. 
  1144.  
  1145.  
  1146. ΓòÉΓòÉΓòÉ 8.12. LepGetCell ΓòÉΓòÉΓòÉ
  1147.  
  1148. Syntax:
  1149.      value=LepGetCell(range, sheet, column, row)
  1150.  
  1151. This function retrieves the value from the cell having the given coordinates 
  1152. (sheet, column, row) inside the given range and returns it. 
  1153.  
  1154.  
  1155. ΓòÉΓòÉΓòÉ 8.13. LepMacroGetName ΓòÉΓòÉΓòÉ
  1156.  
  1157. Syntax:
  1158.      macroName=LepMacroGetName(macroId)
  1159.  
  1160. This function queries the name of the macro having the given macroId in the 
  1161. LEPRexxMacroManager object. If there are no macros registered under the given 
  1162. macroId the error signal will be raised. 
  1163.  
  1164.  
  1165. ΓòÉΓòÉΓòÉ 8.14. LepMacroGetId ΓòÉΓòÉΓòÉ
  1166.  
  1167. Syntax:
  1168.      macroId=LepMacroGetId(macroName)
  1169.  
  1170. This function queries the macroId of the macro having the given macroName in 
  1171. the LEPRexxMacroManager object. If there are no macros registered under the 
  1172. given macroId the '-1' value will be returned. 
  1173.  
  1174.  
  1175. ΓòÉΓòÉΓòÉ 8.15. LepMacroGetFile ΓòÉΓòÉΓòÉ
  1176.  
  1177. Syntax:
  1178.      macroFile=LepMacroGetFile(macroId)
  1179.  
  1180. This function queries the file name of the macro having the given macroId in 
  1181. the LEPRexxMacroManager object. If there are no macros registered under the 
  1182. given macroId the error signal will be raised. 
  1183.  
  1184.  
  1185. ΓòÉΓòÉΓòÉ 8.16. LepMacroGetArgs ΓòÉΓòÉΓòÉ
  1186.  
  1187. Syntax:
  1188.      argsNumber=LepMacroGetArgs(macroId)
  1189.  
  1190. This function queries the number of arguments of the macro having the given 
  1191. macroId in the LEPRexxMacroManager object. If there are no macros registered 
  1192. under the given macroId the error signal will be raised. 
  1193.  
  1194.  
  1195. ΓòÉΓòÉΓòÉ 8.17. LepMacroGetProt ΓòÉΓòÉΓòÉ
  1196.  
  1197. Syntax:
  1198.      argsPrototype=LepMacroGetProt(macroId, argNo)
  1199.  
  1200. This function queries the type of the argument with the given argNo of the 
  1201. macro having the given macroId in the LEPRexxMacroManager object. If there are 
  1202. no macros registered under the given macroId the error signal will be raised. 
  1203. Note, that argNo should be less than the value returned by the 
  1204. LepMacroGetArgs(macroId) call. 
  1205.  
  1206.  
  1207. ΓòÉΓòÉΓòÉ 8.18. LepMacroDeleteById ΓòÉΓòÉΓòÉ
  1208.  
  1209. Syntax:
  1210.      retc=LepMacroDeleteById(macroId)
  1211.  
  1212. This function removes the macro specified by its macroId from the 
  1213. LEPRexxMacroManager object's table. If there are no macros registered under the 
  1214. given macroId the error signal will be raised. It returns FALSE (0) if any 
  1215. error occurs while removing. 
  1216.  
  1217.  
  1218. ΓòÉΓòÉΓòÉ 8.19. LepMacroDeleteByName ΓòÉΓòÉΓòÉ
  1219.  
  1220. Syntax:
  1221.      retc=LepMacroDeleteByName(macroName)
  1222.  
  1223. This function removes the macro specified by its macroName from the 
  1224. LEPRexxMacroManager object's table. It returns FALSE (0) if any error occurs 
  1225. while removing. 
  1226.  
  1227.  
  1228. ΓòÉΓòÉΓòÉ 8.20. LepMacroNum ΓòÉΓòÉΓòÉ
  1229.  
  1230. Syntax:
  1231.      macrosNum=LepMacroNum()
  1232.  
  1233. This function returns the number of registered RXLEPSOM macros.