1CHANGES BETWEEN Sc/X6.22 and 6.22 2Bill Lash 3 -bug in write_fd where a string value could be lost 4Jeff Buhrt 5 -'/' (range commands) is now 'r', '/' is the main menu that the mouse 6 brings up. 7 8CHANGES BETWEEN 6.22 and 6.21 9R. J. Bassett 10 -help.c to reflect the addition of the 3rd format parameter. 11Anthony A. Datri 12 -help.c fputs was missing stdout 13Steve Simmons 14 -made pass gcc -Wall 15 -SunOS 4.1.1 configuration which both allows the use of gcc and 16 does not require the SysV software set be installed 17 -'-N' command line option for no cursor 18 -SHOWCURSOR will also build into sc.doc, the start of site specific 19 building of sc.doc, etc. 20Marc Staveley 21 -noted convert_date() is redunant and got the date wrong after a 22 leap day, now uses dodts() 23** -dodts needs to be fixed for years > 2000 and < 1970 24Bruce Barnett 25 -sent his and Michael Wagner's disk partition calculator, included 26 in samples/ 27Keenan Ross 28 -noted a problem with a define not getting passed, fixed by 'FEATURES' 29Kevin Cosgrove 30 -noted the suffix sc adds for the 'W' and 'T' commands may not match 31 what is written (see below) 32Francois Pinard 33 -suggested adding command line options to scqref 34 -pointed out man page changes 35Teus Hagen 36 -suggested easier regular expression config 37Dennis R. ( Chaos Central ) Conley 38 -TIOCGWINSZ code for ultrix (and SysV R4) for window resizing 39Tom Kloos 40 -reworked 'F' formatting 41Jeff Buhrt 42 -added fsuffix to remove the .sc suffix and add a new suffix, 43 the reported default filename will now match the actual written 44 -added 'F' format type 5 (engineering exponential form) 45 46CHANGES BETWEEN 6.21 and 6.19 47Mark R. Rubin 48 -noted a problem using bison 1.16 (use any version but 1.16) 49Marco S Hyman/Ian */and others 50 -Crypt/CRYPT_PATH define problem 51Paul Eggert 52 -sc.doc $Revision: 6.21 $ 'buglet' 53Ulf Noren/Dave Lewis 54 -AIX3.1/Microport System V/AT don't have notimeout() 55 changed NONOTIMEOUT to NO_NOTIMEOUT, define if not present 56Niels Baggesen 57 -function keys may not return ascii codes that isascii() understands 58 -added an A command for vi mode (add at end of row). 59 -Special key support: DC='x' (del char in vi mode), FIND='g' (goto), 60 HELP='?', SELECT='m' 61Dave Davey 62 -noted Ultrix 4.2 curses doesn't have idlok() 63 [I added NO_IDLOK in Makefile] 64Kim DeVaughn 65 -added ${RIGHTBUG} is now passed to sc.o && screen.o 66 -suggested a better fix on SunOS 4.x dont use the Sys V 67 package (CC = /usr/5bin/cc, etc), but use the BSD 4.3 defines 68David Bonnell 69 -scqref [will produce] TROFF output instead of plain text, 70 [when] you define QREF_FMT=TROFF in the Makefile. 71 The resulting quick reference guide uses the MS macro set and you 72 build with something like: 73 scqref > quickref 74 troff -ms quickref > quickref.ps 75Kurt Cockrum 76 - sc.h: 77 If not (defined(BSD42) || defined(BSD43) && !defined(ultrix)), 78 include <memory.h> for the benefit of some USG systems... 79 - screen.c: 80 Repaired cpp logic: 81 don't mention IDLOKBAD or idlok() unless SYSV3 defined; 82 idlok() does not exist for USG pre-SYSV systems (may exist for 83 SYSV{2,3,4}). 84 - tutorial.sc: 85 Repaired a number of off-by-1 errors. 86Mats Wichmann 87 -cleaned up Robert E. Cousins MIF format support code which is 88 compatible with FrameMaker. 89Neil Skilling 90 -added @numiter which returns the number of iterations performed. 91 It allows you to solve equations by direct substitution. Taking a 92 guess from another cell if the first iteration otherwise taking the 93 last best iterate. Other uses may be found. 94Martin MacLaren 95 -MS-DOS cleanup of Makefile 96Art Mulder 97 -^T toggle: don't list crypt if not available 98John Amanatides 99 -pointed out a possible NULL ref in interp.c 100Phil Johnson 101 -sc now appends: "asc", "cln", "tbl", etc. to output files 102 -made the engineering format match that used by an engineer 103 -deleted an unused engmult[] reference 104 -added a fix to struct enode for the HP compiler 105Kevin Cosgrove 106 -noted sc should use any predefined PI 107Jeff Buhrt 108 -'make clean' now leaves the binaries and man pages [Jean-Pierre Radley] 109 -'make clobber' cleans all built files (like clean used to) [""] 110 -'-D' vs '-S' was needed on a XENIX2_3 line [""] 111 -'quit()' -> 'doquit()', function conflict [""] 112 -change xmalloc,xrealloc,xfree -> scxmalloc,scxrealloc,scxfree 113 (xmalloc is a standard malloc) 114 115CHANGES BETWEEN 6.19 and 6.18 116Tom Tkacik 117 -sc.doc and CHANGES changes 118Edgard 119 -moving right off the screen now redraws vs optimize 120Sisira Jayasinghe 121 - added build.com (VMS) and VMS fixes 122Jonathan I. Kamen && Charlie Shub 123 -noted fmod doesn't exist on BSD4.3 and Mt Xinu 124Ben Priest 125 -vi compatability: ' ' moves right as well as 'l' while line editing 126Jeff Buhrt 127 -one more possible NULL pointer fixed 128 -added NONOTIMEOUT for those that don't have notimeout() in curses 129 -undef CRYPT=-DCRYPT_PATH... if crypt isn't available 130 -merged simple fmod into interp.c if fmod() is not present 131 132CHANGES BETWEEN 6.18 and 6.17 133James Dugal 134 - NULL pointer fix for is_locked 135Kevin Pye 136 - add a new mode suitable for entry of large amounts of data. 137 moves to next cell on return, maxrow/col when to start 138 entering in the next row/col. (see help screens B&C) 139 COMMANDS ADDED: ^Tz, ^Tr, Srowlimit=?, Scollimit=? 140David Fox - added a date format so that columns whose values are the number 141 of seconds since 1/1/70 will be displayed as dates in the format 142 dd-mmm-yy, and a modification to the grammar so data entered in the 143 format dd_mm_yy will be converted into the number of seconds since 144 1/1/70. 145 COMMANDS ADDED: f # # 3 146Teus Hagen 147 - labels are centered strings 148 - constant strings with '\' preceeding character will 149 be wheeled over the column width 150 - a restart of sc on an sc file will go to last used cel 151 - added toupper, tolower and do proper word capitalization 152 COMMANDS ADDED: @toupper(), @tolower(), @capital(), @pi, "\[String] 153Jeff Buhrt 154 - external functions null/previous message was backwards 155 - cleaned up help.c by inserting a new screen 156 - found a possible NULL pointer in screen.c 157 158CHANGES BETWEEN 6.17 and 6.16 159Ulf Noren 160 - added cell locking, disallowing input, to ranges of cells 161Herr Soeryantono 162 - I added ifdef's around curses KEY_* functions his curses didn't have 163 (Sun/OS 4 on a SPARC) 164Jay Lepreau 165 - changes to tutorial.sc: how to get out, should be used w/ 24 lines 166 - IDLOKBAD was not passed to screen.c 167 - suggested error messages if the execl of crypt fails 168 - pointed out BSD's crypt is in /usr/bin/crypt 169Henk P. Penning 170 - suggested Makefile list the mode of the man page & tutorial.sc 171 - make install will now install the psc man 172 - yylval was not known in lex.c for HP-UX 7.05 173Edgard 174 - hitwinch fixes 175 - KEY_HOME now takes you to 0,0 176CHECK KEY_NPAGE/PPAGE 177Stephen (Steve) M. Brooks 178 - suggested the man pages should include Sc's revision 179Dan Banay 180 - code to set LINES and COLS after a window size change 181Bart Schaefer 182 - @myrow/@mycol fix 183Bruce Jerrick 184 - noted ln may not always work for the temporary source files 185Gene H. Olson 186 - fixes for SIGWINCH for Sun OS 4.1.1 187Teus Hagen 188 - added three functions: 189 1) allow @PI as well 190 2) @upper/@lower for casing characters in a string 191 3) @capital for upper case first char of words in a string. 192Martin Maclaren 193 - added MS-DOS support 194 COMPILER USED: Microsoft C, 5.1 195 TOOLS USED : NDMAKE GNUBISON GNUSED PCCURSES 196Cuong Bui 197 - has a working Vietnamese version of sc, noted a A_CHARTEXT 198 mask problem 199Jeff Buhrt 200 - when numeric prescale is on: 300 -> 3.0, now 300. -> 300. not 3.0 201 (numbers with a decimal aren't scaled) 202 203CHANGES BETWEEN 6.16 and 6.15 204Tom Tkacik 205 -fixed a bug in ^W 206Jonathan I. Kamens 207 - added Makefile rules so scqref and psc don't clobber .o's 208Larry Philps 209 - fixed a SCO XENIX vs M_XENIX problem 210 - fixed a problem where dosval() might not xmalloc enough memory 211Dave Close 212 - fix for Xenix 2.3 to reset terminal modes 213 214CHANGES BETWEEN 6.15 and 6.14 215Lowell Skoog 216 - fixed a bug in 'F'ormat 217Henk Hesselink 218 - format.c double neg. sign 219 - interp.c minr/minc bug, plus modflg wasn't set 220 - fixed a hardcoded path in sc.doc 221 - improvement: 222 -show current cell format in top line 223 -[buhrt: go into edit mode on the old format if it existed 224 otherwise insert mode] 225Jonathan Crompron 226 - made sure doformat() does a checkbounds() 227Stephen (Steve) M. Brooks 228 - pointed out -s in psc was broke 229Michael Richardson 230 - fixed negative numbers in exponential format 231 232CHANGES BETWEEN 6.14 and 6.13 233Mats Wichmann 234 - Sys V R4 patches, fixed 'Press RETURN ...' on a shell command 235Tim Theisen 236 - changed #define for memcpy/memset under ultrix 237Rick Walker 238 - Added @myrow and @mycol to give the row/col of the current cell 239 'The two functions are @myrow and @mycol, which return the numerical 240 row and column of the calling cell. The cell directly above a cell 241 in the D column could then be accessed by @nval("d",@myrow-1).' 242 NOTE: @myrow and @mycol can't be used in specifying ranges. 243 244CHANGES BETWEEN 6.13 and 6.12 245Rick Walker 246 - pointed out a move(x,y)-> (y,x) in sc.c 247Glenn Barry 248 - Further SunOS 4.X cleanups 249Tom Tkacik 250 - made sure 'J' moves downward 1/2 a screen even at the bottom 251David I. Dalva 252 - pointed out crypt may not be in /bin/crypt 253Gregory Bond 254 - allows the vi-mode editing of very long expressions 255 (> 1 screen width) to work on 2nd + subsequent lines 256Tom Anderson 257 - "let A1 = aaa" (where aaa is defined as A0:A0) is now valid 258 - added autolabeling 259 'When there is an empty cell to the left of a cell that has 260 just been defined (with /d), a label is created in the blank 261 cell. The label holds the definition that has just been 262 created. This labeling is only done for definitions of single 263 cells (and not for ranges).' 264 'The feature can be turned on and off with a toggle (^T) 265 command' 266Petri Wessman 267 - Added support for SLaTeX, 'a Scandinavian version of LaTeX, in 268 intensive use ... in Finland and in Sweden' 269Jeff Buhrt 270 - vmtbl.c explictly set arrays of pointers to NULL, vs memset() 271 - psc [-P] plain numbers only:a number only when there is no [-+eE] 272 [-S] all numbers are strings 273 - psc: a number must end in [0-9.eE] anything else makes it a string 274 (4, 4., 4.5, and 4e are numbers; 4-, 4+, etc are not). 275 - psc: made sure we grow enough when we call growtbl() 276 - cleaned up the Makefile w/ a few suggestions 277 - SIGWINCH is delt with next time the screen would update (testing) 278 - added IDLOKBAD to get around a SysV curses bug (see Makefile) 279 - moved screen functions into screen.c (except for one indirect 280 'repaint()' call in sc.c, and help.c) 281 282CHANGES BETWEEN 6.12 and 6.11 283James Dugal 284 - added format.c to SRCS in Makefile 285 - noted RETURN didn't enter insert mode 286Peter King 287 - pointed out iscntrl is broken on some other systems as well 288 - sent some lint cleanups 289Michael Richardson 290 - patch to stop format looping when scientific notation was selected 291Glenn T. Barry 292 - code to turn on hardware scrolling and added 'slow speed display' 293 speedups, default for SYSV3 or see -DSUNOS41SYSV in Makefile. 294Tom Tkacik 295 - fixes to make sure J and K move same amount, and re-added H code 296Jeff Buhrt 297 - fixed a possible xfree(NULL) in getent() (found when adding K_VAL) 298 - merged compiler cleanups 299* - added $(name)qref to print a Quick Reference card 300 - got rid of INVALIDS that may have been left around 301* - pressing return on a empty line puts you into insert mode 302 (like in <=Sc6.1). When entering you can also press ESC 303 to go into the editor (no change); this is also documented 304 now so it might stay around this time. 305 306CHANGES BETWEEN 6.11 and 6.10 307 308Jonathan I. Kamens 309 - sc.doc now mentions the tutorial file in the FILES section 310Andy Fyfe 311 - pointed out 3 locations where a NULL should have been '\0' 312Robert Bond 313 - pointed out the ERROR could hide a cellerror 314Piercarlo Grandi 315 - H,J,I,K now move 1/2 screen 316Ulf Noren 317 - changes for AIX V3.1 318 - defined CHTYPE and NLS for the preprocessor. CHTYPE is 319 the type of every character in a curses window. 320 - Added KEY_BACKSPACE to nmgetch 321 - strtof ifdef 322 - Iteration change: when Sc says: "Still changing after 9 iterations" 323 Sc at that point will have eval'd 9 times 324Chris Metcalf 325 - pointed out I broke setlist when adding 'goto {error,invalid}' 326James P. Dugal 327 - iscntrl() wasn't handling TABS though CRs under Pyramid OSx4.1 328Peter King 329 - BROKENCURSES patch for nl()/nonl() bug on some BSD systems 330 - backups, tutorial file, and man references now depend on $name 331 - DFLTPAGER to DFLT_PAGER fix 332 333CHANGES BETWEEN 6.10 and 6.9 334 335Tom Tkacik 336 - when moving off the current table (resizing) now move the cursor 337 on 'l' or 'k'. 338 - patches to sc.doc to correctly format the vi-mode notes 339Jim Clausing 340 - made sure / doesn't try to divide by zero. 341Tom Kloos 342 - correction to substr() example in help.c 343Piercarlo "Peter" Grandi 344 - Disable non-constant expressions while loading 345 - Added extra code in dealing w/ floating point exceptions 346 - #ifdef'd SAVENAME (vs hardcoded SC.SAVE) to allowing changing the 347 emergency save name. 348Casey Leedom 349 - Makefile changes: man extension, RINT note, make values should 350 never be left undefined and then referenced, don't leave 351 around *.old's 352Tom Anderson 353 - patches to add type of column format (note format now has 3 args) 354Jeff Buhrt 355 - xmalloc/xfree fatal() will now call diesave() 356 (MAKE SURE the saved file is ok if this were to happen) 357 - history[] is now a circular queue, this will cut down on the 358 number of data moves and also xmalloc/xfree calls 359 (idea from Keith Bostic) 360 - cells with an error (ex: divide by 0) will show 'ERROR' 361 - you can 'goto error' (or 'goto') to find an ERROR (for next ERROR) 362Robert Bond 363 - When in numeric mode the ^B, ^F, ^N, ^P key will end a numeric entry. 364 365CHANGES BETWEEN 6.9 and 6.8 366 367Jim Richardson 368 - pointed out vi mode was not documented in sc.doc 369 - found a nasty buffer limit bug in savedot() 370 - a side effect was ^D could cause a core dump (-Jeff) 371Tim Wilson 372 - Hints on compiling on Ultrix 373Eric Putz 374 -patch for printfile() (sc died on huge # of columns in a W) 375Jeffrey C Honig 376 -patch for lex.c which bombed on SunOS 4.1 if $TERM was not set 377Tom Kloos 378 -psc now calls [+-.] strings vs numbers. 379 -also pointed out a format reversal problem 380Jack Goral 381 -changes to Makefile to compile under SCO Unix V rel 3.2.0 382Mark Nagel 383 -changes to allow arbitrarily complex formatting of cells 384Kim Sanders 385 -^W generated an incorrect equation (line was not started at beginning) 386Mike Schwartz 387 -a put command will use the same encryption key as when the 388 file was read. 389 >I have a suggestion for making the encyrption option of "sc" more 390 >usable: Right now, if you use the -x option when you start up sc, it 391 >prompts you for the key (just like "vi -x" does). But when you try to 392 >write the file out using the Put command, it asks for the key again 393 >each time. Why not make it use the same key you used before (as "vi 394 >-x" does)? That would really help, because as it is, each time you try 395 >to save the file you run the risk of mistyping the key. 396 > 397 >You might think this causes a security problem, since the key is then 398 >an argument to crypt, and hence is visible from ps. But when crypt 399 >runs, the first thing it does is to copy the key to an internal buffer 400 >and then zero out the argv copy, so the window of vulnerability is 401 >vanishingly small. 402Adri Verhoef 403 - pointed out a ^D caused a core dump (fixed) 404Gene H. Olson 405 - format now grows the spreadsheet before setting the column format. 406 - removed an extra ';' that caused a possible column number trashing 407Paul Eggert 408 -sc now also has round-to-even, also known as ``banker's rounding''. 409 >With round-to-even, a number exactly halfway between two values is 410 >rounded to whichever is even; e.g. rnd(0.5)=0, rnd(1.5)=2, 411 >rnd(2.5)=2, rnd(3.5)=4. This is the default rounding mode for 412 >IEEE floating point, for good reason: it has better numeric 413 >properties. For example, if X+Y is an integer, 414 >then X+Y = rnd(X)+rnd(Y) with round-to-even, 415 >but not always with sc's rounding (which is 416 >round-to-positive-infinity). I ran into this problem when trying to 417 >split interest in an account to two people fairly. 418 -While we're on the subject, @round(X,Y) should also work when Y 419 >is negative. For example, @round(123,-2) should yield 100. 420 421 422CHANGES BETWEEN 6.8 and 6.7 423 424Jeff Buhrt (with help from some beta testers-Thank you) 425 1) added a per row memory allocation 426 -runs in about 1/2 run time and 1/3 the space of 6.6vm.1 427 -insert/delete row now just moves pointers (# == maxrow+1-currow) 428 and blanks one row (of columns (maxcol)) 429 -as the number of cells grows the size is more linear 430 (no more ##Meg images except for 100,000's of rows....) 431 -row to column pointer translation is done by a macro (ATBL) 432 that returns a pointer to the cell pointer. 433 *ATBL would be a pointer to a *ent (cell). 434 -the maximum # of columns is limited by ABSMAXCOLS or 435 sizeof(struct ent *)*maxcols (whichever is smaller) 436 (702 * 4 = 2808 is no real limit even for 286 large model) 437 -the maximum # of rows is limited by the virtual memory limit or 438 sizeof(struct ent **)*maxrows (whichever is smaller) 439 (4*X=64k, X=16384 rows (excluding malloc overhead) on 440 a '286 large model. Even w/ 3.25Meg and 10Mhz) 441 (plus of course any memory used for cells) 442 2) dolookup (int vs double) 443 3) dolookup calling eval w/ ent * not enode * 444 (dolookup called w/ ent * not enode *) 445 4) cleaned up a lot of .... *x = 0 to (.... *)0 (cmds, interp) 446 5) psc: fwidth/precision were reversed on the output 447 6) Backup copy (on save) using same mode to [path/]#file~ 448 (will prompt if a backup fails) 449 7) put y/n prompt function into yn_ask(mesg) 450 8) found a move(x,y) in sc -> move(y,x) and only move when needed 451 9) we use FullUpdate || changed (to see if ANY cells changed) 452 before trying to redraw the screen in update 453 (now we don't try to redraw every time a key is hit) 454 -if we are stand[ing]out we do not create a cell just to force a 455 standout inside the repaint section of update() 456 -only draw blank cells if we cleared it or it is standing out 457 reason: the less work (what to update) curses has to do, the faster 458 a screen update will be (less cpu required) 459 14) {insert, delete}col replaced w/ {open,close}col(currow, numcol_to_insert) 460 (limits looping) 461 6.7.1.1 462 15) goto nonexistant cell may loop 463 16) make sure that startup size will at least fill the screen w/ cells. 464 17) added version.c 465 6.7.1.2 466 18) When we would normally die w/o saving (SIGQUIT, etc), we now ask 467 if people would like to save the current spreadsheet. 468 If 'y', saves to the current file name, otherwise ~/SC.SAVE, 469 then /tmp/SC.SAVE if all else fails. 470 6.7.1.3 471 19) don't use malloc.c for production code 472 20) progname is now truncated to just the basename (systems w/ long paths 473 caused problems) 474 475CHANGES BETWEEN 6.1 and 6.7 476 477Dave Lewis - 478 Found and fixed a null pointer derefrece in the 'R' command. 479 480Rob McMahon - 481 Changed the ctl() macro to work with ANSI style compilers. 482 Cleaned up some non-readonly text problems. 483 484Rick Linck - 485 Fixed a bug in lex.c - Ann Arbor Ambassadors have long ks and ke 486 termcap entries. 487 488Sam Drake - 489 A fix for undefined C_* symbols in AIX. 490 491Peter Brower - 492 Cleaned up the INTERNATIONAL ifdefs with more portable code. 493 494Glen Ditchfield 495 Cleaned up a problem in crypt.c when the encrypted file shrank. 496 497Bob Bond - 498 Vi style editing for the command line. 499 A bug in range name aliases. 500 501Jeff Buhrt - 502 -Added "~" filename expansion. 503 -702 columns (A-ZZ) and unlimited rows/cells based on max. memory 504 -fixed a few bugs 505 -slightly decreased CPU usage 506 -MAKES backup copies of files 507 -understands ~$HOME stuff 508 509CHANGES BETWEEN 5.1 and 6.1: 510 511Andy Valencia - 512 xmalloc aligns data to a double boundary. 513 514Lawrence Cipriani - 515 Fixed a bug in the "do you want to save this" sequence. 516 517Soren Lundsgaard - 518 A null pointer derefrence. 519 520Rick Perry - 521 Cleaned up a problem with modchk() in sc.c. 522 523Gregory Bond - 524 Added code for multi argument versions of @min and @max. 525 526Tad Mannes - 527 Added code to save/restore hidden rows and columns when the 528 data base is saved or restored. 529 530Marius Olafsson - 531 INTERNATIONAL changes. Allows full 8 bit characters (if 532 curses supports them.) 533 534Kurt Horton - 535 Added support for @pv, @fv and @pmt financial functins. 536 Tested lots of different systems, linting. 537 538John Campbell - 539 Support for VMS. See VMS_NOTES. 540 541Peter King - 542 User selection of row or column order for recalculation. 543 Also affects order of traversing regions in /f and /r 544 User setting of automatic or manual recalculation. 545 User setting of number of times to try recalculation. 546 + and - commands when in non-numeric mode to do 547 increment and decrement operations. 548 @index, @stindex, @atan2, @lookup functions. 549 Save/restore options. 550 Support for TeX, LaTeX, and better support for tbl in "T" cmd. 551 Provision of a copyent function to copy entries (same code repeated 552 in several locations) 553 Forwrow, backrow, forwcol, backcol functions to replace 554 repeated code 555 Correct interpretation of ESCAPE or ^G as an abort when in a 556 two character command such as 'ar' or 'ac' 557 Cleanup in eval() - catches non-trap function errors. 558 559Bob Bond - 560 Added search options to "g". 561 Added supression of hidden columns to "W" 562 Added the mod operator "%" 563 New help functions. 564 Constant prescale "$" 565 Added string matching to @lookup. 566 Some more bug fixes. 567 Testing, integration, documentation. 568 569Alan Silverstein- 570 Greatly revised the manual entry. 571 Added menus for ^E command and row/column commands, which 572 involved a bunch of code cleanup. 573 574 Changed top row display to clearly indicate string labels 575 versus number parts, and to distinguish string functions from 576 constant labels. 577 578 When the character cursor is on a cell (not topline), ^H 579 (backspace) is like ^B (move back one cell), rather than being 580 ignored. 581 582 When the character cursor is on a cell (not topline), ^I (tab) 583 is like ^F (move forward one cell), rather than being ignored. 584 ^R is no longer identical with ^L. Now ^R highlights all cells 585 which should be entered by a user because they contain constant 586 numeric values (not the result of a numeric expression). 587 588 Added a ^X command, similar to ^R, which highlights cells which 589 have expressions. It also displays the expressions in the 590 highlighted cells as left-justified strings, instead of the 591 label and/or value of the cell. 592 593 Added indirection functions (@nval() and @sval()) for simple 594 table lookups. Given a column name and row number, they return 595 the numeric or string value of the selected cell. 596 597 Added external functions (@ext()) for non-trivial 598 computations. Given a command name and argument, it calls the 599 command and reads back one output line. 600 601 Added a ^T,e command to toggle enabling of external functions. 602 603 Changed ^T,t to only control the top line display, and added 604 ^T,c to control current cell highlighting. (Separated the 605 functions.) 606 607 "!" (shell escape) gives a vi-style warning if there were any 608 changes since the last write. (No change to manual entry.) 609 610 Fixed some startup, error, and prompt messages to be cleaner 611 and/or more consistent. (No changes to manual entry.) 612 613 Fixed a bug: If @substr() upper bound (third parameter) is 614 past the end of the string operand, return the substring 615 through the end of the string, rather than returning a null 616 string. 617 618 Fixed a bug: Reset SIGINT to default after forking before 619 calling shell escape program and before starting pipeline (for 620 commands which support this). Didn't reset SIGINT before 621 calling crypt and external functions because in both cases it 622 should be irrelevant. (No change to manual entry.) 623 624CHANGES BETWEEN 6.1 and 6.2: 625 626 627Chris Cole- 628 Compatibility with Lotus 1-2-3 629 a) @hlookup(expr,range,expr) 630 b) @vlookup(expr,range,expr) 631 c) @round(expr,expr) 632 d) @if(expr,expr,expr) 633 e) @abs(expr) 634