mwm@VIOLET.BERKELEY.EDU (Mike Meyer, I'll think of something yet) (10/09/89)
A spreadsheet would seem to be a natural for Rexx support, but I haven't been able to turn any up. Can someone out there provide a pointer to one, on any platform? Thanx, <mike
jac@muslix.llnl.gov (James Crotinger) (10/09/89)
In article <8910090133.AA09674@violet.berkeley.edu> mwm@VIOLET.BERKELEY.EDU (Mike Meyer, I'll think of something yet) writes: >A spreadsheet would seem to be a natural for Rexx support, but I >haven't been able to turn any up. Can someone out there provide a >pointer to one, on any platform? > > Thanx, > <mike There is one that I know of on the Amiga: Superplan by Precision Inc. Their ad says it does "Spreadsheet, Business Graphics, and Time Management", sideways and color printing, wall charts, Gantt charts, critical path analysis, programmable, Lotus 1-2-3 and dBase file compatible, and supports AREXX. List price is $149. Their top of the line database, Superbase Professional, also has AREXX support. I don't own either of these products, and know next to nothing about them (there was a time when I had every AREXX compatible commercial program, but that doesn't fit my budget anymore 8-( ). I haven't even heard anything about Superplan. I have heard quite a few good things about Superbase Pro, but again I have no personal experience with it. However they are both on my shopping list---an AREXX compatible spreadsheet and database sound like a very useful combo! (Actually I believe AmigaWorld gave Superplan a glowing review, but they give everything a glowing review) Jim
patterso@pilot.njin.net (Ross Patterson) (10/09/89)
I did one as a proof-of-concept under VM/CMS using XEDIT for the screen manager. All the underlying code is in REXX, no Assembler, no C, no nuthin'. It ain't fast, and it ain't pretty, but it was fun to do. As you say, REXX is a natual for this. The content-addressable arrays work very nicely as a sparse-matrix structure, so you don't have to over-allocate memory. The ability to set a default value for all variables with a common stem means that you don't have to special-case the handling of non-existent cells in the matrix. All in all, not a bad toy. Ross Patterson Rutgers University
Benton_J_Elkins@cup.portal.com (10/10/89)
Plan/IT from Intuitive Technologies is a spread sheet-database-business graphics program for Amiga with Arexx support. These are the same people who have developed UltraCard. They are in Monterey 408)646-9147.
cyosta@taux01.UUCP ( Yossie Silverman ) (10/10/89)
Gee, I wrote a simple one a few weeks ago. I'll include it here, and a sample data file. Have fun. - Yossie Please, don't look to me for help in understanding it, I don't have the time to answer. Yes, I know it isn't efficient, but it does work. It is a RIGHT TO LEFT evaluation spread-sheet, each line is done seperately, cellnames are one dimensional (huh?). Anyway, the code should be pretty clear (I hope). To execute it, XEDIT the data file and type SC. ---- SC XEDIT ---- /**/ 'TOP' $._cols = 0 /* how many data columns we have */ do $._top = 0 by 1 'NEXT'; if rc /= 0 then leave 'EXTRACT /CURLINE' if left(curline.3,1) = '*' then do /* this be a column header */ i = $._cols + 1 parse var curline.3 '*' name.i width.i value.i if left(value.i,1) = '=' then do j = 1 to $._cols do forever k = find(value.i,name.j) if k = 0 then leave value.i = subword(value.i,1,k-1) 'X.'||j subword(value.i,k+1) end end $._cols = i end else leave /* setting top in the process */ end $._top = $._top + 1 $._first = $._top $._left = 1 $._cram = 0 'EXTRACT /LSCREEN' 'SET CTLCHAR ( ESCAPE' 'SET CTLCHAR h PROTECT RED' 'SET CTLCHAR l PROTECT NOHIGH' 'SET CTLCHAR e NOPROTECT HIGH' 'SET CTLCHAR v PROTECT HIGH' 'SET PF5 LEFT'; 'SET PF17 LEFT'; 'SET PF6 RIGHT'; 'SET PF18 RIGHT' 'SET PF4 CRAM'; 'SET PF16 CRAM' do forever call update 'MAKEBUF'; q = queued() 'READ ALL TAG' do i = 1 to queued()-q /* first process all RES tags */ parse pull tag value if tag = 'RES' then call res value else queue tag value end do i = 1 to queued()-q /* now process all the rest */ parse pull tag value select when tag = 'CMD' then call cmd value when tag = 'PFK' then call cmd subword(value,2) otherwise nop end end 'DROPBUF' end res: procedure expose lscreen. $. offsets. arg y x data y = y - 4 + $._first do i = $._right - 1 to $._left by -1 if offsets.i < x then leave end x = $._left + i - 1 'LOCATE :'||y||'EXTRACT /CURLINE' z = '' do i = 1 to x-1 parse var curline.3 l ';' curline.3 z = z||l||';' end parse var curline.3 ';'curline.3 'REPLACE' z||data||';'||curline.3 return cmd: procedure expose $. lscreen. parse arg cmd parms 'EXTRACT /SIZE' select when cmd = 'LEFT' then if $._left > 1 then $._left = $._left - 1 when cmd = 'RIGHT' then if $._right <= $._cols then $._left = $._left + 1 when cmd = 'CRAM' then $._cram = ^ $._cram when abbrev('FORWARD',cmd,2) then do x = $._first + lscreen.1 - 5 if (x + lscreen.1 - 5) <= size.1 then $._first = x else do x = size.1 - (lscreen.1 - 5) + 1 if x < $._top then x = $._top end $._first = x end when abbrev('BACKWARD',cmd,2) then do x = $._first - (lscreen.1 - 5) if x < $._top then x = $._top $._first = x end when cmd = 'QUIT' then do do i = 3 to lscreen.1-2 'SET RESERVED' i 'OFF' end exit end otherwise nop end return update: procedure expose lscreen. $. width. name. value. offsets. if $._cram then do w = 0; extra = 1 title = ''; entry = '' titlesep = ''; entrysep = '' end else do w = 1; extra = 3 title = '|'; entry = '|' titlesep = '(l|'; entrysep = '(l|' end do i = $._left to $._cols offsets.i = w w = w + extra + width.i if w > (lscreen.2-1) then leave title = title||'(h'||left(name.i,width.i)||titlesep if left(value.i,1) = '=' then entry = entry||'(v'||left(' ',width.i)||entrysep else entry = entry||'(e'||left(' ',width.i)||entrysep end $._right = i 'SET RESERVED 3 N' title||'(l' do i = 4 to lscreen.1-2 x = 1; e = entry||'(l' if calc(i-4+$._first) then do j = $._left to $._right-1 y = index(e,' ',x) x = verify(e,' ',,y) e = left(e,y-1)||right(x.j,x-y)||substr(e,x) end 'SET RESERVED' i 'N' e end return calc: procedure expose name. value. $._cols x. arg lineno 'LOCATE :'lineno if rc /= 0 then return 0 'EXTRACT /CURLINE' do i = 1 to $._cols parse var curline.3 x.i ';' curline.3 if x.i = '' then x.i = 0 if left(value.i,1) = '=' then interpret 'x.i' value.i end return 1 ---- SC DATA ---- * P 2 A * SIZE_1X 8 N * RESIZE_1X 8 N * CD'S_5X 8 = ( SIZE_1X + RESIZE_1X * 2 ) * 5 * 43%_SHR 8 = 0.57 * CD'S_5X * MEBES 8 N * 5X 8 = 43%_SHR + MEBES * 1X 8 = 5X / 5 D;3;-0.63;;;0.26;;; D;3;-0.63;;;0.26;;; D;3;-0.63;;;0.26;;; D; 3;-0.63;;;0.26;;; D;3;-0.63;;;0.26;;; D;3;-0.63;;;0.26;;; D;3;-0.63;;;0.26;;; D;3;-0.63;;;0.26;;; -- Yossie Silverman What did the Caspian sea? National Semiconductor Ltd. (Israel) cyosta%taux01@nsc.nsc.COM or RPR1YOS@TECHNION.BITNET NSA LSD FBI KGB PCP CIA MOSAD NUCLEAR MI5 SPY ASSASSINATE SDI -- OOLCAY ITAY
yorkw@tippy.uucp (10/23/89)
There is a spread sheet program out for the amiga with an AREXX port. but i can't find the artical right now. I think perhaps Super Plan. i have a listing from Mr. Hawes of products with Arexx ports. He fails to get all the PD progs though. (Mabey it was MaxiPlan....... :^))