/macrocalc

MacroCALC is a Lotus 1-2-3 compatible character based spreadsheet

Primary LanguageCBSD 2-Clause "Simplified" LicenseBSD-2-Clause

MACROCALC
=========
mc - MacroCALC is a Lotus 1-2-3 compatible character based spreadsheet that
supports 100000 rows, 700 columns, 40 functions, display formats, file
linking, macro programming and user definable functions. MacroCALC is fully
integrated with [nt]roff, units, man, awk, perl and sh.

As it should be in the UNIX-environment, mc can act as a filter enabling users
to use pipes to perform complex transforms on streams of data. It contains a
C programming interface as well as Lotus WKS and dBASE file support. mc's own
file-format is flat ASCII, easy to understand and can therefore be directly
manipulated with awk, perl or other standard UNIX-tools, or even with editors
like vi.

MacroCALC is the only spreadsheet that manages units: 1 mile + 1 km = 1.62
miles; 1 km / 1 hour * 30 sec = 8.33 m. This can be seen as a physics engine.

It's git-maintained, lint-clean ANSI-C source is based on yacc, lex and
[n]curses. It runs on every terminal or emulation that has a correct
terminfo-entry. The user-interface is very convenient and well-known by 1-2-3
users. Function- and cursor-keys and extended video attributes are supported.

The menus and messages are in separate editable files and can be easily
translated into any language (english and german are included in the
distribution). Every command in the package has a detailed man-page.

mc is a professional product, sold a couple hundred times for UnixWare, SCO,
Coherent and Interactive during the 1990-2005 years - now going open-source
under the "Simplified BSD License".

BUILD
=====
mc was born in 1992 on Coherent (16-bit 286 Unix-Clone) - there was no
networking and a 64k (kilobyte!) address-room. So no automake. The
portability lies in a flexible Makefile and a portability-layer (like apaches
portable runtime). This layer lives in arx/.  mc is an os-independent ansi-c
source and lives in mc/.

Building mc needs a c-development environment with compiler and tools. From
the top-level run "./configure" followed by "make". Any messages should
indicate missing components clearly. 

INSTALL
=======
"make install" will install mc in /opt/arx/ after a successfull build.
Nothing outside /opt/arx/ will be touched in any way by the installation.
Removing mc is simply done by a recursive "rm -r /opt/arx". For convenience
/opt/arx/bin should be added to the PATH in a system appropriate manner. mc
can also be run by its alias "321" if "mc" is used for another program. If
/opt/arx is not appropriate for the admin the arx-directory can be moved or
renamed anywhere. In this case an environment-variable ARX should be exported
with the full path of the moved directory. MANPATH should also get the
man-directory. Here is an example for Linux's /etc/profile.d/arx.sh

  ARX=/opt/arx
  export ARX
  PATH=$PATH:$ARX/bin
  MANPATH=$MANPATH:$ARX/man

LICENSE
=======
BSD 2-Clause License

Copyright (c) 2022, Axel K. Reinhold
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice, this
   list of conditions and the following disclaimer.

2. Redistributions in binary form must reproduce the above copyright notice,
   this list of conditions and the following disclaimer in the documentation
   and/or other materials provided with the distribution.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.