home *** CD-ROM | disk | FTP | other *** search
/ pc.louisiana.edu/pub/unix/ / Louisiana_UNIX.tar / Louisiana_UNIX / xspread3.0.zoo / doc / xspread_prog.asc < prev    next >
Text File  |  1994-03-25  |  8KB  |  170 lines

  1.                         Xspread Programmer's Reference
  2.  
  3.     This Xspread Programmer's Reference is divided into three parts:
  4.         1.  Implementation Theory
  5.         2.  Relevant Files
  6.         3.  Existing Bugs and Needed Improvements
  7.  
  8.  
  9.                             Implementation Theory
  10.  
  11.     Xspread is an improved version of a Unix-based spreadsheet program called 
  12. sc, for "spreadsheet calculator".  Sc was originally developed in 1982.  It 
  13. was based on the standard Unix text terminal metaphor.  Keystroke entry and 
  14. screen drawing were done through a Unix support package called "curses".
  15.  
  16.     Improvements to sc, mostly through course work for Computer Science 536 
  17. (Introduction to Software Engineering), led to xspread.  Prior to our work, 
  18. the biggest improvement was the addition of X Windows based graphs.  Our team 
  19. completely converted the input and output to X Windows and repaired the 
  20. graphing routines.
  21.  
  22.     Xspread is based on maintaining tables to hold the spreadsheet data.
  23.  
  24.  
  25.                                 Relevant Files
  26.  
  27.    There are a lot of relevant files in xspread.  This section will list the 
  28. major files of importance and what each of them does.
  29.  
  30.     Document Files.  There are several documents for xspread.  Here is a 
  31. list of the different documents, their descriptions, and their file names.
  32.  
  33. Document                            Description                             _
  34. Xspread On-Line Manual          The on-line help document that you can get
  35.                                 using the Unix man command.
  36.                                 File Name:  xspread.1
  37.  
  38. Xspread Reference Manual        The detailed reference manual to xspread which
  39.                                 explains all of its commands.
  40.                                 File Name for LaTeX Source:  xspread.tex
  41.                                 File Name for Printable:  xspread.dvi
  42.  
  43. Xspread Programmer's Reference  This document which explains the implemen
  44.                                 tation theory, the documentation, and known
  45.                                 bugs and needed improvements.
  46.                                 File Name:  xspread_prog.txt
  47.  
  48.  
  49.     Source Files.  All of the source code for xspread is in the "C" 
  50. programming language.  
  51. Here is a list of the files and a brief description of each one.
  52.  
  53. File Name                           Description
  54. cmds.c              Command routines, Row/Column and miscellaneous 
  55. crypt.c             Encryption / decryption facility
  56. gram.c              Grammar for defining commands
  57. graphic_main.c      All functions in the /Graphic command tree
  58. help.c              Help facility
  59. interp.c            Expression interpreter and support
  60. lex.c               Lexical analyzer
  61. psc.c               ASCII to table converter (separate program)
  62. range.c             /Range commands
  63. sc.c                Main program segment for xspread
  64. scXstuff.c          X Windows input and output for worksheet window
  65. xmalloc.c           Memory allocation for X Windows
  66. plot_XY.c           XY graph display
  67. plot_bar.c        Bar graph display
  68. plot_line.c        Line grpah display
  69. plot_pie.c        Pie graph display
  70. plot_stacked.c        Stack Bar graph display
  71.  
  72.     Header Files.  The source code files reference many different header 
  73. files.  All of these header files are in the "C" programming language.  
  74. Here is a list of the files and a brief description of each one.
  75.  
  76. File Name                           Description                             _
  77. experres.h        Global expresions that contain info for "@" commands
  78. graphic_gvar.h      Global variables for creating graphs
  79. sc.h                Global variables for the whole program
  80. scXstuff.h          Global variables for X Windows support in worksheet window
  81. sc_menu.h        GLobal variables for menu area
  82. pattern.h        Pattern used for graphing part of program
  83. plot.h              Global variables for displaying graphs
  84.  
  85.  
  86.                     Existing Bugs and Needed Improvements
  87.  
  88.                                 Existing Bugs
  89.  
  90.     Here is a list of the bugs that we identified that we were unable to 
  91. resolve.
  92.  
  93.     2.  @EXT() Function Results.  Xspread saves only one value from any call 
  94. to external functions via @ext().  If @ext() is used more than once in a 
  95. spreadsheet and external functions are enabled and then disabled, the last 
  96. returned value pops up in several places.
  97.  
  98.                              Needed Improvements
  99.  
  100.     In addition to the bugs, we identified many areas which needed im
  101. provement.  A lot of these recommendations will be a lot of work to implement, 
  102. especially if they are done properly.  However, avoiding the temptation to 
  103. engage in corner cutting will make life a lot easier for people who use this 
  104. spreadsheet and for later programmers who upgrade it.
  105.  
  106.    Here is the list.  It is in no particular order of importance.
  107.  
  108.     2.  There is no way of inspecting the values of global parameters without 
  109. changing them.  Xspread needs something like the Lotus 1-2-3 /Worksheet Global 
  110. Default Status command.  The implementation of global settings is awkward.  
  111. Instead of being in one place, the xspread global commands are scattered all 
  112. over.  Xspread needs something like the Lotus 1-2-3 /Worksheet Global command 
  113. tree.
  114.  
  115.     3.  Right now, there is little function key support.  This makes sense in 
  116. an environment where you cannot be sure if the terminals have function keys 
  117. available.  After porting xspread to X Windows, this no longer makes sense 
  118. since X terminals have full function key support.
  119.  
  120.     4.  Editing is crude.  The only way to edit a cell's existing contents is 
  121. to backspace over the text and retype it.  Xspread should support complete 
  122. line editing with thoughtful and well documented editing commands.
  123.  
  124.     6.  Xspread right now does not support natural order recalculation, only 
  125. rowwise and columnwise.  Implementing natural order recalculation would make 
  126. recalculation much more efficient.
  127.  
  128.     7.  The source code needs to be much more thoroughly documented.  Right 
  129. now, it's difficult to figure out the intent of designers.
  130.  
  131.     8.  Xspread needs to support more functions, especially in the statistical 
  132. and financial areas.
  133.  
  134.     9.  There is no indicator of what operating mode you are in (e.g., Ready, 
  135. Edit, Point, Command, etc.) nor is there a status line, which holds such 
  136. information as date, time, amount of virtual memory available, operating mode, 
  137. and similar useful information.
  138.  
  139.    10.  Currently, the column width is set by terminal settings or by the 
  140. user's environment.  It is bad policy to set any internal parameters in this 
  141. way.  Column width and similar things should be part of the worksheet's global 
  142. parameters.
  143.  
  144.    11.  There is no support for worksheet macros or else the documentation is 
  145. so sketchy that it is impossible to figure out what the macro capability is.  
  146. Future programmers should provide the macro capability and document it 
  147. thoroughly.
  148.  
  149.    12.  There are no display formats for numerical information.  Future 
  150. programmers should provide the common spreadsheet display formats, such as 
  151. scientific, general, fixed, percent, comma, and currency.
  152.  
  153.    13.  The support for printing worksheets is next to nonexistent.  Future 
  154. programmers should provide a capability similar to the Lotus 1-2-3 /Print 
  155. command tree.
  156.  
  157.    14.  Some commands apparently use an optional repeat count.  This area 
  158. needs to be investigated and documented.  Even better would be to implement a 
  159. more intuitive method for commands that handle a variable number of cells.  
  160. For inspiration, look at how commercial spreadsheets tackle this problem.
  161.  
  162.    15.  Xspread needs a much simpler and more intuitive way of copying and 
  163. moving ranges of data.
  164.  
  165.    16.  The help facility needs to be much more detailed and thorough.
  166.  
  167.    17.  Command Feedback.  Many commands do not give any warning to the user 
  168. (e.g. a message or beep) if they do nothing.  Some commands should give 
  169. confirmation of their action but do not do so.
  170.