A N A L Y T I C A L C Brought to you courtesy of Glenn and Mary Everhart 25 Sleigh Ride Rd. Glen Mills, PA 19342 USA ABSTRACT: AnalytiCalc and AnalyRIM are general purpose spreadsheet packages featuring exceptional power and capability, ease of user extension, and many features unavailable even in the most expensive commercial spreadsheets. This package now also includes AnalyRIM, which contains a complete relational DBMS as well as all AnalytiCalc functions. AnalyRIM permits disk-based storage of relational data. It may be selected, sorted, operated on relationally, and relations or sections thereof can be moved between the spreadsheet screen and relations on disk at will. This avoids the problems of running out of space for one's data bases. The command language for the DBMS is close to SQL and it may be driven by spreadsheet macros if desired. AnalyRIM as supplied is tested for VMS and Unix (specifically Sun4) and sources for Amiga are supplied. Address space limits prevent it from fitting in MSDOS or RSX. AnalyRIM also allows operation with an arbitrary number of dimensions as cell coordinates. The AnalytiCalc spreadsheet provides an address space of up to 32,000 rows, up to 32,000 columns, and up to 32,000 pages. Each cell may have one or more equations stored within it, and the cells can be displayed on screen in an unlimited number of windows. Cells may also reference external programs, access databases, control or be controlled by other applications. There are around 100 builtin functions (depending on how one counts variants) and around 10 cell address modes, with variants adding more. User functions can be added internally or externally. Built in features cover all normal function, including things like built-in matrix math, FFTs, goalseeking in up to 8 dimensions, access to any number of datafiles, internal and external macros, journaling, free-form cell annotation, address math, as well as the usual math, business, statistical, logical, and time functions one expects in a full function spreadsheet. A document integration feature also makes it simple to use AnalytiCalc as a text/numeric integration tool and an outliner. A substantial collection of additional routines which can be linked in with AnalytiCalc for specialized math or statistics is provided also, so that if for example you want a filter design function as a built-in, pick one out of the math libraries supplied, fill in a couple tables, and link it in. AnalytiCalc is controlled either by function keys, by user commands, or with / commands along the lines of commercial spreadsheets. The function key interface is user extensible. A complete Datatrieve interface exists, and the package comes with a relational DBMS also. Some graphics programs and DIF format interchange functions are supplied with the package. VAX users are referred to DECUS VAX-212 as a presentation graphics interface also. Since unmodified user programs can be linked in, or controlled via mailboxes from code within AnalytiCalc, the plot packages can be made to appear seamlessly connected to AnalytiCalc. Some samples of this are included. Other sample code includes a project planning system in AnalytiCalc, a business expense report handler, and a (somewhat dated) US Federal Income Tax template. Versions are supplied for VAX/VMS (any version), PDP11 (RSX11M, RSX11M+, or P/OS), MSDOS (requires 256K ram minimum), Unix (tested on Sun4), and Amiga (Requires 512K ram). Complete sources are supplied as well as objects, so no compilers are needed. In addition a number of virtual disk drivers and utilities are supplied for VMS and for RSX. These provide some features which facilitate sharing and privacy for spreadsheet and other uses. On VMS, Unix, or RSX, essentially any direct cursor addressing terminal can be used. Under AmigaDos or MS-DOS, local facilities are used to handle console I/O directly, though terminals attached to those machines can be made to work with AnalytiCalc with minimal effort. In addition to the spreadsheet/spreadbase, the package includes a collection of virtual disks offering VMS users remote disk, remote tape, cryptodisks, file disks, memory disks using process memory instead of nonpaged pool, and more. Historical Overview Version 26-1A; Fall 1991 AnalyRIM has been added, merging AnalytiCalc and the RIM relational DBMS. Also, unix support has been added and tested, using curses() for screen access. (Thus, the Unix version now is written in Fortran and C.) AnalytiCalc now has the ability to address cells in memory as if the spreadsheet were a stack of pages. Cells can be addressed with three dimensions (row, column, and page), ranges can be in the page dimension as well as row and column dimensions, and the display can quickly be configured to show horizontal or vertical slabs through the page dimension. Page numbers can be either coded into the cell names, or determined at run time. Version 23.2A, Winter 1988 Why buy a spreadsheet somebody sells? This program is designed to be superior to the high-priced models for PDP11 and VAX (also on 8088), and is easier to customize if you need to. NOTE that for your convenience, task images for RSX and P/OS are supplied, and object libraries for VMS are present. If you prefer to start quickly, use them. (For RSX and POS, be sure the .TSK images are copied contiguous onto your disks!) The current release adds an "Enter-mostly" mode of operation that provides a command structure similar to commercial spreadsheets on micros (numbers, formulas, and text just get typed in, commands prefixed with /) as an option, plus various additional capabilities. The prompt changes to indicate which mode you're in. Documentation has been improved also. The scrolling now preserves all windows too, making the program significantly easier to use. An ANNotate capability for cells is new in V21, permitting you to document your work in free format and quickly view the notes in order to be sure the spreadsheets you create make sense. Spreadsheet maximum dimensions are 32000 by 32000 for VAX, 10000 by 10000 on PDP11. A Datatrieve-32 interface and a generic "input area and output area" interface for VAX versions, with many string and parsing functions, are provided in addition to other built-in database access routines. These new interfaces are bi-directional. AnalytiCalc can do "3-dimensional" accesses, matrix math, FFTs, and iterative searches in up to 8 dimensions at a time. In addition, the VAX version permits DCL commands to be spawned so you don't have to leave the spreadsheet to interact with other sorts of applications (e.g., databases, the graphics utility). Numerous additions and bugfixes make the versions of the sheet here more capable than older ones. The database-access facility from each cell has been debugged and improved and the programmability of cells now includes ability to test ascii values of formulae and to execute arbitrary commands from inside a cell program (except help, exit, and interactive mode). In addition, since the advent of V10.9, a powerful text integration feature has been added permitting onscreen display of external files and integration with output, or screen controlled insertion of word processing files into spreadsheet outputs with screen controlled indentation. You now also get free project management software and extra support functionality. AnalytiCalc has symbolic names and macros, area addressing, random numbers, and many more enhancements. Note that "instant" flush to disk of logfiles is enabled by recompiling XQTCMD.FOR for VAX. A "large space" version of AnalytiCalc is now present in the [.BIG] area. This allows 300,000 cells distinct by default on VAX/VMS, and can be configured for more, subject to limits on virtual address space. Precis: AnalytiCalc is a powerful 3 dimensional spreadsheet/database and analysis system with easy user extensibility designed to outperform most any commercial package available, running on PDP11 systems able to support the F4P compiler, or VAX systems, needing the VAX FORTRAN compiler to compile. Several terminals are supported, including the VT100 series, VT52, Datamedia Colorscan 10 and Elite 1500, Televideo 925, and ANSI color terminals. A full DTR-32 interface is supported on VAX and a command mode structure similar to Visicalc or other micro spreadsheets is available as an option. Address range maxima are 32000 rows and 32000 columns on VAX, 10000 by 10000 on PDP11 (using software virtual memory on PDP11). A mode for "connecting" arbitrary VAX applications to AnalytiCalc is now available also, with simple syntax and numerous supporting new string functions. The program is designed for power, and to be easily portable to other systems supporting Fortran, with peculiarities used documented, and its manual is designed to be turned into a system HELP file so that it can be read online. Tutorials are supplied as well. A data management system interface is built in, permitting spreadsheets to access a potentially unlimited number of files and records or parts of records in those files for user defined functions, numbers, formulas, text, or whatnot. In fact it has many of the attributes of a language. Every cell may contain far more complex formulas than most commercially sold programs, and indeed may be a complete program with the ability to execute most command-level spreadsheet commands, though with minor restrictions. In addition, a separate relational DBMS is present. Merging of multiple sheets, matrix algebra, general function solving (a la TK!SOLVER, though with a less polished user interface), and easy document load/unload make this spreadsheet very significantly more powerful than all but the most elaborate mainframe packages, and infinitely easier to customize. User commands may be entered via keyword or function key and are provided with a comprehensive HELP system permitting users to individually tailor commands to their needs. A powerful text integration function permits integration of word processing files with reports, permitting use of AnalytiCalc to integrate sections of reports which are edited with any editor. It also simplifies inserting text from external files flexibly over null cells of the spreadsheet. This package runs on PDP11, or on VAX in NATIVE MODE. Versions have been built for RSX11M, RSX11M+, VMS, and RSTS, though supplied build files are for the RSX and VMS versions only. Speed of the VAX versions is higher than many of the expensive commercial ones. An Amiga and a MS-DOS version of AnalytiCalc are presented here also. Several new trig functions and some bulletproofing corrections (thanks, Chris Doran of SIRA Ltd.) have been added to this version, plus some new code speedups. The ability to call UNMODIFIED Fortran callable subroutines (plus a few hundred example routines) has been added, and performance for really huge VAX sheets has been improved via better hashing methods. It is now trivial to add almost any desired functionality to AnalytiCalc. A "binary" save/load option speeds up these operations by a factor of 3, and other optimizations speed up the save operation still more in this version. ERRATA: The V20 release contains some minor speedups, addressing fixes for the VAX version permitting many more cells to be filled at a time even where they are clustered close, a fix for the MMPYC function that was broken, lots of string functions (even if you don't have Datatrieve), and a bit more. Also the manuals have been cleaned up and alphabetized. If you print the .LAS versions on an LN03 with the Times Roman cartridge they'll look beautiful now too. VERSIONS: The most current VAX AnalytiCalc is in the [.BIG] subdirectory. Don't use another unless there's a VERY good reason to. You'll get all the features and avoid braindamage. The [.NRM] directory contains sources that can be used to build the most current PDP11 version. The address space is so tight on PDP11 that I recommend just using the supplied task images. The PDP11 version runs MUCH faster on a memory disk. (You'll find FXDRV, a good one, in the distribution.) Some ancient versions, plus current documents, are in the [.DOC] directory. The graphics utility is in [.DOC] and the DIF access utility is in [.NRM]. MSDOS AnalytiCalc just comes in executables. Two are supplied, one for 256K and one for 320K or over. Use the larger if possible. Rename the file to ANALY.EXE before using it; the overlay loader requires this. Amiga AnalytiCalc has the same functions as VMS AnalytiCalc and the sources ARE provided. The supplied executables are also usable directly though. One is for 1MB systems; the other, having a smaller address space, can be run in 512K if the non-interlace workbench screen is selected in Preferences. There are 2 older versions, though several variants may be selected (read the build files and READMEs): 1. AnalytiCalc-VM: For VAX only, uses demand-zero pages to eliminate workfile and speed operation. Normal default build supports 16000 or 32000 cells, but size is compiler option. OBSOLETE. Don't use unless you have to; the AnalytiCalc-PC version is faster on VMS and has LOTS of enhancements. 2. AnalytiCalc-PC: for PDP11 or VAX, uses a smarter algorithm for storage management and can support a 16,000 cell array even on an RSX system without using memory mapping directives. Recommended PDP11 and VAX version. This version is buildable (using the PCCMAKIVD.COM command file) for VAX with a DTR - 32 interface and for DTR sites may be the preferred VAX version too. This version is recommended for most VMS users as only it supports project management and other new features. Use PCCMKIVD.COM whenever possible. I recommend highly that you link from PCCX.OLB (and DTRIF.OBJ if you lack DTR32) rather than recompiling; saves LOTS of time. Look at AAINSTALL.COM for hints on installation. AnalytiCalc-PC is more feature-ful than AnalytiCalc-VM. Complete source code for all versions is provided. It is assumed the F4P or F77 compiler is available for PDP11 (uses Fortran 66 for greatest portability; author has an 8088 version), or the DEC VAX FORTRAN compiler for VAX. Object libraries are provided for VAX systems not owning Fortran, and task images for RSX systems without F77. A separate graphics output task is documented in PCG.DOC and provides histograms or scatterplots of any areas of the saved spread sheets with a simple command syntax. SPECIAL HARDWARE: On VAX, screen-independent cursor routines are used for screen addressing normally. On PDP11, the software must be built for the appropriate terminal. Versions of the UVT100 subroutine for VT100, VT52, Datamedia Elite, and several other types of terminals including VT100 with Advanced Video and Colorscan 10 are supplied, with command files for most combinations. The VT52 version will show what the minimum requirements are for control. Most any terminal can be easily interfaced to the package by editing one of the UVT100 routines to correspond to the terminal's control sequences, provided direct cursor addressing is supported. TO GET UP QUICKLY: -- --- -- ------- On VAX: Use the image pre-supplied in [BIG...] and edit the SPREAD.COM file in [BIG.DK] to correspond to where you want the image to be. Either assign a system or login logical to DK: (to point to files in [BIG.DK] in the tape), or edit SPREAD.COM to do an ASSIGN/USER to DK: (such as $ Assign/user user$disk:[vsp24.analy.big.dk] dk: ) prior to running PCCBIG. On PDP11: use the supplied task images. Altermately (on VAX): Build from PCCMED.OLB (and DTRIF.OBJ if you don't have DTR-32) in the [.big] directory. (The PCCMED.OLB file produces a version of AnalytiCalc that runs in fairly default VMS systems. PCCBIG.OLB and .EXE require that one's VIRTUALPAGECNT and PAGEFLQUOTA be raised above the defaults - which are too low for general use - in order to be used.) On VAX use commands like: LIBR/REPL PCCX DTRIF (IF AND ONLY IF YOU DON'T HAVE DTR-32) LIBR/EXTR=*/OUT=PCCX PCCX (ALWAYS) LINK/NOMAP/NOTRACE PCCX+DTR/OPT (IF AND ONLY IF YOU DO HAVE DTR-32) or LINK/NOMAP/NOTRACE PCCX --> Ignore linker warnings about compiler warnings. They're normal and harmless. As long as nothing comes up undefined, all is well. Define DK on VMS or build a single user virt disk and globally assign to DK on RSX. A VMS 3.7 definition that works is ASS/SYS SYS$SYSROOT:[DK] DK: and then copy the aux keypad files (Keypad.pic and AK*.CMD, KY*.CMD) to the DK area. On VMS V4, SET TERM/NOLINE to allow arrow keys etc. to work. The new version of the VMS spreadsheet will generally preset this itself however. Build files recommended: VMS: PCCMAKIVD.COM in [003205] area if you have DTR. PCCMAKIV.COM in [003205] area if you don't have DTR (or tailor PCCMKFST.COM and use instead!) Note: For the fullest VMS version, if you have DTR, run PCCY.COM after running PCCMAKIVD.COM and then rebuild the image from the new PCCX.OLB that is created. You'll be glad you did. If you want the connect mode but don't have DTR, you'll have to write some dummy entries since DTRIF.FVX has numerous new string functions. RSX: Edit PCCPDP.COM in [003205] area and follow its' instructions. (note there are lots of glitches it's hard for me to test for in RSX systems; be careful of things like ANSI support in FCS which must not be there, etc., etc. Task images are not privileged and should generally run unaltered. P/OS: Similar to RSX but use PCCPRON.COM as your template. Look over PCCPDP.COM for some caveats. RSX and P/OS task images are fairly up to date but don't support project planning yet. Only RECALC.FOR changed however, and all other functions are there. RECALC.FFF was the source of the last built version for RSX/POS recalculation controls... The PDP11 version does not have the "micro-like" command interface due to address space limitations. It has several other limitations. AmigaDos: The Amiga version of AnalytiCalc is basically identical to the VAX version but with somewhat smaller address limits. It will run on a 512KB Amiga or larger. Sources are present to this version also. MSDOS: The MS-DOS version of AnalytiCalc has most of the functions of the VAX version, with address limits similar to those on the Amiga. However several math functions, and ability to call unmodified Fortran callable routines, are missing. A 256K version and a 320K version are present, the latter less heavily overlain than the former. Use the 256K version ONLY on PCs that small!