<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://freem-wiki.coherent-logic.com/index.php?action=history&amp;feed=atom&amp;title=Original_README_from_Shalom_ha-Ashkenaz</id>
	<title>Original README from Shalom ha-Ashkenaz - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://freem-wiki.coherent-logic.com/index.php?action=history&amp;feed=atom&amp;title=Original_README_from_Shalom_ha-Ashkenaz"/>
	<link rel="alternate" type="text/html" href="https://freem-wiki.coherent-logic.com/index.php?title=Original_README_from_Shalom_ha-Ashkenaz&amp;action=history"/>
	<updated>2026-04-17T20:57:11Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.34.4</generator>
	<entry>
		<id>https://freem-wiki.coherent-logic.com/index.php?title=Original_README_from_Shalom_ha-Ashkenaz&amp;diff=180&amp;oldid=prev</id>
		<title>Smw: Created page with &quot;{{Historic}} &lt;pre&gt;                               *                              * *                             *   *                        ***************...&quot;</title>
		<link rel="alternate" type="text/html" href="https://freem-wiki.coherent-logic.com/index.php?title=Original_README_from_Shalom_ha-Ashkenaz&amp;diff=180&amp;oldid=prev"/>
		<updated>2024-12-20T22:30:05Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;{{Historic}} &amp;lt;pre&amp;gt;                               *                              * *                             *   *                        ***************...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Historic}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                              *&lt;br /&gt;
                             * *&lt;br /&gt;
                            *   *&lt;br /&gt;
                       ***************&lt;br /&gt;
                        * *       * *&lt;br /&gt;
                         *  MUMPS  *&lt;br /&gt;
                        * *       * *&lt;br /&gt;
                       ***************&lt;br /&gt;
                            *   *&lt;br /&gt;
                             * *&lt;br /&gt;
                              *&lt;br /&gt;
&lt;br /&gt;
Shalom ha-Ashkenaz, 1998/06/18 CE&lt;br /&gt;
&lt;br /&gt;
RE: FreeMUMPS and its source code files&lt;br /&gt;
&lt;br /&gt;
Shalom!&lt;br /&gt;
&lt;br /&gt;
Someone set out to purchase all MUMPS vendors. What is good for Terry&lt;br /&gt;
may not be good for the traditional MUMPS community.&lt;br /&gt;
&lt;br /&gt;
MUMPS is fun. MUMPS is OPEN. MUMPS puts YOU in control of affairs.&lt;br /&gt;
&lt;br /&gt;
Somebody is monopolising MUMPS, is cache-ing MUMPS.&lt;br /&gt;
&lt;br /&gt;
So we need a FreeMUMPS, i.e. something even Terry-Bill cannot buy!&lt;br /&gt;
&lt;br /&gt;
Here are files of a preliminary version of FreeMUMPS.&lt;br /&gt;
&lt;br /&gt;
I put them in the hands of MUG with the following guidelines:&lt;br /&gt;
&lt;br /&gt;
1) The aim of the project is to make available FreeMUMPS to&lt;br /&gt;
   everybody (even private use for Terry shall be granted :-).&lt;br /&gt;
&lt;br /&gt;
2) As long as there is no manual (preferably in the English language)&lt;br /&gt;
   available to the public and as long as there is an unresolved list&lt;br /&gt;
   of known problems, FreeMUMPS is ***NOT*** to be made available to&lt;br /&gt;
   the general public. Let lousy products be the privilege of MS-Bill.&lt;br /&gt;
&lt;br /&gt;
3) MUG may forward FreeMUMPS at this stage to individuals&lt;br /&gt;
   or to non-profit organizations who volunteer to contribute to the&lt;br /&gt;
   project. When there is a manual (TeX or LaTeX recommended!, HTML is&lt;br /&gt;
   not bad either) and when a MUG task force declares&lt;br /&gt;
   FreeMUMPS free of known problems then FreeMUMPS is to be made&lt;br /&gt;
   available to the general public.&lt;br /&gt;
   &lt;br /&gt;
4) FreeMUMPS is not to be placed under the GNU General Public Licence.&lt;br /&gt;
   Anybody who wants to produce a proprietary product with parts of&lt;br /&gt;
   FreeMUMPS is free to do so: Either with FreeMUMPS as part of&lt;br /&gt;
   application programs or with FreeMUMPS as the basis of a new&lt;br /&gt;
   commercial MUMPS implementation. However, who passes FreeMUMPS&lt;br /&gt;
   or products based on it, must inform the recipient of the&lt;br /&gt;
   FreeMUMPS Copyright, and he has to provide the FreeMUMPS&lt;br /&gt;
   source codes without additional charges.&lt;br /&gt;
&lt;br /&gt;
5) Everybody passing FreeMUMPS or products based on it should encourage&lt;br /&gt;
   the recipient to join in a MUMPS Users Group of her choice.&lt;br /&gt;
&lt;br /&gt;
6) Current FreeMUMPS runs under LINUX and under SCO-UNIX. Minor modifications&lt;br /&gt;
   may be needed to make it compile &amp;amp; run under other Unixes. A Windows-98 or&lt;br /&gt;
   Windows-NT Version is desirable. char is &amp;quot;signed char&amp;quot;.&lt;br /&gt;
   under SCO-UNIX you call it with &amp;quot;mumps.sco&amp;quot;&lt;br /&gt;
   under LINUX    you call it with &amp;quot;mumps.linux&amp;quot;&lt;br /&gt;
   use mcc and mutil to compile FreeMUMPS and associated untilities.&lt;br /&gt;
&lt;br /&gt;
Unresolved List of Known Problems in FreeMUMPS:&lt;br /&gt;
&lt;br /&gt;
- no manual&lt;br /&gt;
  main features in a nutshell:&lt;br /&gt;
  ,,standard'' MUMPS&lt;br /&gt;
  255 char max string length&lt;br /&gt;
  no controls in global subscripts&lt;br /&gt;
  $C(129) is EOL = EndOfLine character, cannot be used&lt;br /&gt;
  $C(130) is subscript delimiter, cannot be used&lt;br /&gt;
  $V(17) non standard intrinsic commands&lt;br /&gt;
    za zb zd zg zh zi zj zl zn zp zq zr zs zt zw&lt;br /&gt;
    zallocate zbreak zdeallocate zgo zhalt zinsert zjob&lt;br /&gt;
    zload znew zprint zquit zremove zsave ztrap zwrite&lt;br /&gt;
  with VIEW 17 you can remove items from this list&lt;br /&gt;
  use of a non standard command that is not in this list&lt;br /&gt;
  is processed as a user defined command. &amp;quot;ZFOO argument&amp;quot;&lt;br /&gt;
  is processed as&lt;br /&gt;
  XECUTE &amp;quot;NEW % SET %=argument DO ^%zfoo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  $V(18) non standard intrinsic functions&lt;br /&gt;
    zb zc zd ze zh zht zk zl zm zn zo zr zs zt&lt;br /&gt;
    zboolean zcall zcr zcrc zdata zdate zedit zhorolog&lt;br /&gt;
    zkey zlength zlsd zname znext zorder zpiece&lt;br /&gt;
    zprevious zreplace zsyntax zsort ztime&lt;br /&gt;
  with VIEW 18 you can remove items from this list&lt;br /&gt;
  use of a non standard function that is not in this list&lt;br /&gt;
  is processed as a user defined function. &amp;quot;$ZFOO(argument)&amp;quot;&lt;br /&gt;
  is processed as &amp;quot;$$^%Zfoo(argument)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  $V(19) non standard intrinsic special variables&lt;br /&gt;
    za zb zc zd ze zf zh zi zj zl zn zo zp zr zs zt zv&lt;br /&gt;
    zcontrolc zdate zerror zname zhorolog zinrpt zjob&lt;br /&gt;
    zlocal zorder zprecision zsystem ztime ztr ztrap&lt;br /&gt;
    zreference zversion&lt;br /&gt;
  with VIEW 19 you can remove items from this list&lt;br /&gt;
 &lt;br /&gt;
  routines are stored as LINUX files with extension &amp;quot;.mps&amp;quot;&lt;br /&gt;
  use $V(98) for inspection; VIEW 98 to change this&lt;br /&gt;
&lt;br /&gt;
  globals are stored as LINUX files with prefix &amp;quot;^&amp;quot; and&lt;br /&gt;
  with no extension&lt;br /&gt;
  use $V(96),$V(97) for inspection; VIEW 96,97 to change this&lt;br /&gt;
&lt;br /&gt;
  use SET $H (with root permissions!) to set the system date/time&lt;br /&gt;
  use $V(99) and VIEW 99 to set an offset on $H for the current&lt;br /&gt;
  job only. This is of tremendous value for date dependend tests (Y2K!).&lt;br /&gt;
&lt;br /&gt;
  %-Routines and %-Globals reside in /usr/lib/mumps. All other routines&lt;br /&gt;
  reside in the current directory (There is no UCI).&lt;br /&gt;
  change/inspect this with VIEW/$VIEW 3 through 8.&lt;br /&gt;
&lt;br /&gt;
  see views.c to see more features to customize FreeMUMPS.&lt;br /&gt;
&lt;br /&gt;
  there is no explicit limit on the size of routines, local symbol table,&lt;br /&gt;
  globals (but it can be controlled via VIEW/$VIEW).&lt;br /&gt;
&lt;br /&gt;
  !  shell escape&lt;br /&gt;
  !&amp;lt; shell escape with output to %-array&lt;br /&gt;
  !&amp;gt; shell escape with input from % array&lt;br /&gt;
  !! shell escape afer HALTing FreeMUMPS&lt;br /&gt;
  ***manual should be produced with TeX or LaTeX***&lt;br /&gt;
&lt;br /&gt;
  on startup the routine login.mps is executed. Unless this HALTS,&lt;br /&gt;
  programmer mode (directmode) is entered on termination of login.mps&lt;br /&gt;
&lt;br /&gt;
  ,,utilites'' are not needed, as there in a convenient way to call&lt;br /&gt;
  LINUX utilies from with FreeMUMPS&lt;br /&gt;
&lt;br /&gt;
  Database errors can be diagnosed with fix/gvalidate. They can be&lt;br /&gt;
  repaired with grestore.&lt;br /&gt;
  &lt;br /&gt;
- accuracy of power operator (**) with non-integer exponents needs&lt;br /&gt;
  careful evaluation.&lt;br /&gt;
&lt;br /&gt;
- accuracy of division may be controlled with $ZPRECISION, but&lt;br /&gt;
  is not clean.&lt;br /&gt;
&lt;br /&gt;
- local variable module handles arrays inefficiently.&lt;br /&gt;
&lt;br /&gt;
- call by reference has a problem: if the formal name and the&lt;br /&gt;
  actual name differ, all action should be visible under both&lt;br /&gt;
  names, with the exception of the NEW command. FreeMUMPS does&lt;br /&gt;
  not honor this exception.&lt;br /&gt;
&lt;br /&gt;
- $QUERY with negative second argument returns wrong results.&lt;br /&gt;
  $ORDER with arbitrary second argument (intexpr) is OK.&lt;br /&gt;
&lt;br /&gt;
- standard error handling not implemented. So far only traditional&lt;br /&gt;
  non-standard error handling with SET $ZTRAP=&amp;quot;entryref&amp;quot;&lt;br /&gt;
&lt;br /&gt;
- transaction processing not implemented. But probably it is not&lt;br /&gt;
  possible to do so in an efficient manner.&lt;br /&gt;
&lt;br /&gt;
- MERGE, KVALUE, KDATA not implemented&lt;br /&gt;
&lt;br /&gt;
- ssvn not implemented, but hook in expr.c included.&lt;br /&gt;
&lt;br /&gt;
- &amp;amp;sql{} binding, OMI, MWAPI, GKS binding not implemented.&lt;br /&gt;
&lt;br /&gt;
- extentions for values (i.e. number+unit) so far only implemented&lt;br /&gt;
  for CURRENCY with the official conversion rates for the currencies of&lt;br /&gt;
  the euro club.&lt;br /&gt;
  try IF 1DEM&amp;lt;1EUR WRITE 1DEM+.5EUR WRITE 10EUR#2ATS&lt;br /&gt;
 &lt;br /&gt;
- there are restrictions in the use of characters. Printable ASCII&lt;br /&gt;
  are OK. ASCII-Controls cannot be used in global subscripts.&lt;br /&gt;
  Otherwise all 7-bit chars are O.K.&lt;br /&gt;
  Strings in LINUX are delimited with $C(0). $C(0) is no problem. But&lt;br /&gt;
  $C(129) -lowest possible value in signed chars- is used as EOL =&lt;br /&gt;
  End_Of_Line symbol in FreeMUMPS strings. $C(130) is internally used&lt;br /&gt;
  as a separator in subscripts of (local/global) arrays. All other&lt;br /&gt;
  values may be used ( control this with VIEW/$VIEW 80)&lt;br /&gt;
  it is desirable to change FreeMUMPS either to use unsigned chars&lt;br /&gt;
  with $C(254) as DELIMiter in subscripts and $C(255) as EOL. Or&lt;br /&gt;
  even better: Instead of defining a string as a sequence of characters&lt;br /&gt;
  being terminated by a certain char, a better implentasion uses a counter&lt;br /&gt;
  plus a number of arbitrary (UNICODE?) chars.&lt;br /&gt;
&lt;br /&gt;
- VIEW/$VIEW should be retired completely. All functionality currently&lt;br /&gt;
  using VIEW should be changed to ssvn.&lt;br /&gt;
&lt;br /&gt;
- UNICODE should be adopted as the internal character set.&lt;br /&gt;
&lt;br /&gt;
- if COLOR is made undefined /* commented in mpsdef0 */ FreeMUMPS&lt;br /&gt;
  works under SCO-UNIX, but it crashes immediately under LINUX.&lt;br /&gt;
  Therefore let it compile with COLOR defined, even if LINUX does&lt;br /&gt;
  not honor the color codes meant for scounix.&lt;br /&gt;
&lt;br /&gt;
Have much fun, get involved with FreeMUMPS, and do not forget&lt;br /&gt;
to observe Sabbath Kaddish,&lt;br /&gt;
&lt;br /&gt;
Yours,&lt;br /&gt;
&lt;br /&gt;
Shalom ha-Ashkenaz&lt;br /&gt;
&lt;br /&gt;
Filenames under MS-DOS are uppercase only.&lt;br /&gt;
For use under unix                        -&amp;gt; please rename&lt;br /&gt;
&lt;br /&gt;
COPYRIGH          1322 11.01.99   14:51   -&amp;gt; COPYRIGHT&lt;br /&gt;
README            8198 11.01.99   16:26&lt;br /&gt;
BENCH    MPS      1567 11.01.99   14:51   -&amp;gt; bench.mps&lt;br /&gt;
COMPACT  C        9324 11.01.99   14:51   -&amp;gt; compact.c&lt;br /&gt;
EXPR     C      109452 11.01.99   14:52   -&amp;gt; expr.c&lt;br /&gt;
FIX               6024 11.01.99   14:52   -&amp;gt; fix&lt;br /&gt;
FIX      C        6334 11.01.99   14:53   -&amp;gt; fix.c&lt;br /&gt;
GCOMPACT         30400 11.01.99   14:53   -&amp;gt; gcompact&lt;br /&gt;
GL                6700 11.01.99   14:53   -&amp;gt; gl&lt;br /&gt;
GL       C        8335 11.01.99   14:53   -&amp;gt; gl.c&lt;br /&gt;
GLOBAL   C       68467 11.01.99   14:54   -&amp;gt; global.c&lt;br /&gt;
GRESTORE         30128 11.01.99   14:54   -&amp;gt; grestore&lt;br /&gt;
GVALIDAT          7976 11.01.99   14:54   -&amp;gt; gvalidate&lt;br /&gt;
LOCKS             4820 11.01.99   14:54   -&amp;gt; locks&lt;br /&gt;
LOCKS    C        7562 11.01.99   14:54   -&amp;gt; locks.c&lt;br /&gt;
LOGIN    MPS       135 11.01.99   14:54   -&amp;gt; login.mps&lt;br /&gt;
MCC                554 11.01.99   14:54   -&amp;gt; mcc&lt;br /&gt;
MPS      MAK      1186 11.01.99   14:59   -&amp;gt; mps.make&lt;br /&gt;
MPSDEF           18076 11.01.99   14:59   -&amp;gt; mpsdef&lt;br /&gt;
MPSDEF0           9908 11.01.99   14:59   -&amp;gt; mpsdef0&lt;br /&gt;
MUMPS    C       45641 11.01.99   15:00   -&amp;gt; mumps.c&lt;br /&gt;
MUMPS    LIN    215296 11.01.99   15:01   -&amp;gt; mumps.linux&lt;br /&gt;
MUMPS    SCO    224480 11.01.99   15:02   -&amp;gt; mumps.scounix&lt;br /&gt;
MUTIL              953 11.01.99   15:02   -&amp;gt; mutil&lt;br /&gt;
OPERATOR C       45021 11.01.99   15:03   -&amp;gt; operator.c&lt;br /&gt;
RESTORE  C        8674 11.01.99   15:03   -&amp;gt; restore.c&lt;br /&gt;
SERVICE  C       97693 11.01.99   15:04   -&amp;gt; service.c&lt;br /&gt;
STRINGS  C        2477 11.01.99   15:04   -&amp;gt; strings.c&lt;br /&gt;
SYMTAB   C       39881 11.01.99   15:04   -&amp;gt; symtab.c&lt;br /&gt;
VALIDATE C       13897 11.01.99   15:04   -&amp;gt; validate.c&lt;br /&gt;
VIEWS    C       45765 11.01.99   15:05   -&amp;gt; views.c&lt;br /&gt;
XECLINE  C       78992 11.01.99   15:06   -&amp;gt; xecline.c&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Smw</name></author>
		
	</entry>
</feed>