In der beliebten Reihe „Einst kommerziell, jetzt Freeware“ geht es diesmal um 3D-Calc, eine Tabellenkalkulation mit grafischer Auswertung.
3D-Calc ist eine Tabellenkalkulation aus den Niederlanden, die Anfang der 90er Jahre wahrscheinlich kommerziell vertrieben wurde. Der Programmierer Frank Schoonjans hat es als Freeware freigegeben, das Handbuch lässt sich als MS-Word-Text (also auch mit papyrus lesbar) herunterladen. Sowohl Programm als auch Handbuch sind in englischer Sprache.
Nach dem Start des Programms fühlt man sich gleich 10 Jahre jünger, denn es wird gleich ein eigener Desktop installiert, der an frühere Versionen von 1st Word erinnert. Das Copyrightdatum von 3D-Calc wird im Info-Dialog mit 1990-2001 angegeben, aber das Programm wird wohl schon etwas länger brachliegen.
Im unteren Bereich des Desktops befindet sich eine Übersicht über die Funktionstastenbelegung. Die F-Tasten sind zum Teil dreifach belegt, daneben kennt das Programm jedoch auch „normale" Shortcuts, die sich jedoch an keine Standards halten. Wer z.B. instinktiv [Control]+[X] drückt, bekommt statt „Ausschneiden" „Speichern als...".
Links liegen die drei leeren Arbeitsblätter. Dies stellt auch gleichzeitig das Limit der zu öffnenden Dateien dar.
3D-Calc verfügt über „gefakete" Fensterdialoge. Eigentlich sind es normale, mit der Maus bewegbare Dialoge, die das Multitasking anhalten. Der Programmierer hat ihnen jedoch eine Fensterzeile verpasst. Damit konnte man 1990 sicherlich einige täuschen, aber wer heutzutage 3D-Calc unter MagiC oder auch nur dem Falcon-TOS startet, wird die Maskerade schnell durchschauen. Mindestens genauso konspirativ sind die Positionen des Abbruch-und OK-Buttons. Beide gibt es auf dem ersten Blick nicht, aber ein genauer Blick auf die Fensterzeile verrät es: Der „OK"-Button befindet sich rechts oben in jedem Dialog, der „Abbruch"-Button links oben. Weitere Überraschungen enthalten die Dialogboxen nicht.
Mit dem Menüpunkt „Read file" lässt sich ein Arbeitsblatt einlesen. Diese dürfen entweder im 3D-Calc-eigenen 3DD- oder im Lotus 1-2-3-Format vorliegen. Mehrere Beispieldateien liegen bei. Das Arbeitsblatt erscheint nun in einem Standard-GEM-Fenster. Mit den Cursortasten kann die Feldmarkierung bewegt werden, zur Markierung mehrerer Felder lässt sich mit der Maus ein Rechteck aufziehen. Entscheidet man sich für letzteres, erscheint gleich ein Dialog, mit dem man für den Block Attribute (Verstecken, Schützen, Kursivschrift), Graphen-Informationen, die Präzision und den Inhalt bestimmen kann.
Natürlich beherrscht auch 3D-Calc verschiedene Formeln. Die einfachste und wohl auch am häufigsten benötigte ist SUM zum Zusammenzählen von Tabellenzellen:
SUM(A1 :A4)
Anders als z.B. Microsofts Excel werden Formeln kein spezielles Zeichen vorangestellt. 3D-Calc erkennt, ob der eingegebene Text einer der bekannten Formeln entspricht. Für den seltenen Fall, dass man eines der Schlüsselwörter als Text und nicht als Formel benutzen will, muss man nur ein Anführungszeichen zuerst eingeben. Alle Werte werden sofort ausgerechnet, gibt man einen unmöglichen Wert für eine Zelle ein, erscheint ,, + ERR". Das Ergebnis wird jedoch trotzdem angezeigt - fehlerhafte bzw. unbrauchbare Zellen werden bei der Berechnung einfach ignoriert.
Neben den einfachen mathematischen Berechnungen gibt es auch viele weitere Schlüsselwörter.
AVG (Average) berechnet den Durchschnitt der Zellen. COUNT zählt die Anzahl der Zellen mit numerischen Werten.
CODE konvertiert das erste Zeichen eines Strings in dessen ASCII-Wert - so lässt sich auch herausbekommen, was das mathematische Ergebnis von Cindy + Bert ist: genau 123. FIND findet einen Suchbegriff in einem String und gibt die Position zurück. MID kann einen String „zerschnippeln" und liefert einen Teilstring zurück: MID("ST-Computer",1,2) gibt „ST“ zurück. Die erste Zahl gibt dabei die Start-, die zweite die Anzahl der Zeichen an.
Um die Groß-/Kleinschreibung zu beeinflussen gibt es LOWER (Wörter kleinschreiben), PROPER (Wörter kapitalisieren) und UPPER (großschreiben!).
Auch Befehle zur Konvertierung sind verfügbar. STR konvertiert einen String zu einer Zahl mit einer wählbaren Anzahl von Dezimalstellen. Dazu existiert noch VAL, bei dem es letztere Wahlmöglichkeit nicht gibt.
Lassen die vorangegangen Befehle schon Ambitionen in Richtung Programmiersprache erkennen, werden diese mit weiteren Befehlen ausgebaut. Fallentscheidungen mit dem aus verschiedenen Programmiersprachen bekannten „IF" interpretiert 3D-Calc in folgender Weise:
IF(D4>17, "Sie sind volljährig","Sie sind nicht volljährig")
Nach der Klammer folgt die Bedingung, auf die geprüft wird. Im Beispiel wird auf die Volljährigkeit geprüft, ist diese Bedingung erfüllt (also D4 größer als 17), wird in die Zelle der Text „Sie sind volljährig" geschrieben. Ist dies nicht der Fall, wird der andere Text geschrieben. Es kann statt einem String auch eine Zahl ausgegeben werden, mit der weiter gerechnet wird.
ISNUMBER/ISSTRING prüft, ob es sich bei einer Zelle um einen String oder Zahl handelt.
Absolut exotisch ist SYS, mit der verschiedene Programminformationen ausgegeben werden können: u.a. die Versionsnummer, Anzahl der Spalten/ Reihen, Spaltenbreite, Dateiname, freier Speicher und die GEMDOS-Versionsnummer (!).
Die Tabellenkalkulation kann auch einfache Datenbankanwendungen ausführen. Da 3D-Calc nur in einer Tabellenübersicht arbeiten kann und von der Bedienung her kaum mit echten Datenbanken konkurrieren kann, eignet sich das Programm nur für kleine Datenbanken. Die Reihen der Tabelle entsprechen den einzelnen Einträgen, die Spalten den einzelnen Feldern.
Der Aufbau der Datenbank erfolgt ähnlich wie eine normale Tabelle, anschließend kann das Blatt noch um Abfragefunktionen ergänzt werden. Dazu dienen weitere Befehle, die nach einem String in einem gegebenen Bereich suchen und die Position zurückgeben. Der größte Teil der Datenbank-Befehle entspricht denen der Tabellenkalkulation, mit zwei Unterschieden: Für die Datenbank-Befehle lässt sich ein Kriterium angeben. Dieses Kriterium muss erfüllt sein, damit die entsprechende Zelle bei der Berechnung berücksichtigt wird. Der zweite Unterschied ist rein optischer Natur: Datenbank-Befehlen wird ein „D" vorangestellt.
Datenbank und Tabellenkalkulation sind nicht getrennt, selbst wenn man also auf dem Blatt eine kleine Datenbank aufgebaut hat, können weiterhin alle Befehle der Tabellenkalkulation verwendet werden.
Eine der spannendsten Möglichkeiten einer Tabellenkalkulation ist die graphische Auswertung. In Texel ist dies nur in Verbindung mit ArtWorx möglich, in 3D-Calc ist dies hingegen eingebaut. Im Graph-Menü lässt sich das Aussehen auswählen. Im anschließend erscheinenden Dialog wird die Position der Beschriftung und die der Daten festgelegt. Wenn der Graph schließlich angezeigt wird, kann dessen Füllmuster durch Klick auf den Graphen verändert werden. Die Größe paßt sich automatisch der Fenstergröße an.
Neben dem Balkendiagramm beherrscht 3D-Calc Liniengrafiken und das Kuchendiagramm.
Das Textmenü lässt einen einfachen Texteditor erscheinen. 3D-Calc-Programme oder Notizen können damit einfach im Programm geschrieben werden. Nur mit den Zeilenlängen sollte man es nicht übertreiben, denn das Editorfenster kennt weder Zeilenumbruch noch horizontale Scrollbalken.
3D-Calc liest (ältere) Lotus 1-2-3 sowie ASCII-Dateien ein. Versierte Programmierer können sich Konvertierer schreiben, denn das .3DD-Format wird im Handbuch beschrieben.
Trotz seines Alters lief das Programm im Test sehr stabil.
3D-Calc ist eine sehr leistungsfähige Tabellenkalkulation, die es von der reinen Leistungsfähigkeit durchaus mit Texel aufnehmen kann. Allerdings nagt doch ziemlich der Zahn der Zeit an dem Programm. Die Benutzeroberfläche wirkt nicht unbedingt einladend, die Dialogelemente sind verwirrend angeordnet und der Desktop lässt sich nicht abschalten. Die Gestaltungsfreiheit eines Texel bietet 3D-Calc nicht, und natürlich werden auch lange Dateinamen nicht unterstützt. Auch die Maus-Bedienung ist nicht so gelungen wie bei modernen Vertretern der Programmsparte, z.B. lässt sich die Spaltenbreite nicht mit der Maus verändern.
Gelungen ist hingegen das Handbuch, das zurzeit leider nur im Word97-Format vorliegt. Beispiele werden gegeben und durch Bilder veranschaulicht. Das verwendete Englisch ist mit normalem Schulenglisch weitgehend verständlich. Dazu gibt es noch eine Hilfefunktion im Programm, die ähnlich dem gewohnten ST-Guide funktioniert.
Wäre 3D-Calc konsequent weiterentwickelt worden, hätte man eine uneingeschränkte Empfehlung aussprechen können. Für Einsteiger ist das Programm nicht empfehlenswert. Wer häufiger Tabellenkalkulationen benutzen muss und auch etwas komplexere Berechnungen anstellt, findet in 3D-Calc ein zwar ziemlich angestaubtes, aber brauchbares Programm.
Eventuell sollte der Programmierer überlegen, den Quellcode für Weiterentwicklungen freizugeben.
Status: Freeware
medcalc.be/stwww
Der Sprachumfang von 3D-Calc ähnelt stark dem der Programmiersprache BASIC, und so ist das Programm auch gleichzeitig eine Programmiersprache. Ein Programm in 3D-Calc sieht z.B. so aus:
PROCEDURE stc;
ClrScr;
Print('________________'); PrintLn;
Print('ST-Computer '); PrintLn;
Print('________________'); PrintLn;
RETURN
stc;
Pauze;
END.
Wer einige Programmiersprachen kennt, dem wird sicherlich die Ähnlichkeit zu PASCAL auffallen. Die Befehle der Programmiersprache von 3D-Calc unterscheiden sich von denen der Tabellenkalkulation, obwohl sich die Aktionen nach wie vor auf die Tabellenfelder beziehen. Das obige Beispiel gibt den Text „ST-Computer" aus. „Pauze" lässt den Computer auf einen Tastendruck warten. Etwas Farbe lässt sich mit den Kommandos „REVERSE", „TEXT COLOR" und „BACKGROUND COLOR" erzielen.
Zu Beginn jedes Programms werden die Prozeduren definiert, damit überhaupt etwas erscheint, muss der Bildschirm gelöscht werden (ClrSc').
Eine Variante dieses Programms erlaubt die Eingabe von Text:
ClrScr;
GotoXY(6,2);
Print('Welchen ST-Computer benutzen Sie?');
Input(A0);
PrintLn;
Pauze;
END.
„GotoXY" positioniert den Ausgabecursor auf die angegebene Position (Spalte 6, Zeile 2). Input verlangt vom Benutzer die Eingabe eines Textes. Um Text auf den Drucker auszugeben, existiert der Befehl „LPrint".
3D-Calc kann per Befehl neue Datenblätter laden, sie abspeichern und zwischen den drei Blättern wechseln. Ein komplexeres Beispiel für Dateioperationen liefert das Handbuch:
ClrScr;
Print('Dieses Programm liest eine'); PrintLn;
Print('mit Kommas getrennte Text-Datei ein. '); PrintLn;
Print('Dateiname : '); Input(A0);
Openfile(A0);
In „A0" wird der Dateiname eingegeben, die dann in der nächsten Zeile mit Openfile geöffnet wird.
IF SYS(108)="0"
THEN Print("Datei nicht gefunden.");
Pauze;
HALT
ENDIF;
Der „SYS"-Befehl kann zum Abfangen von Fehlern benutzt werden. „HALT" bricht ein 3D-Calc-Programm ab.
Print('Processing : ');
Clear;
row=1; column=0;
REPEAT Read(1,A0);
A0="'"+CELL(A0);
IF A0<>CHR(10)
THEN IF (A0<>CHR(13))AND(A0<>",")
THEN B0=CELL(B0)+A0;
ELSE C(column,row)=B0;
B0="";
IF A0=CHR(13)
THEN column=0; row=row+1;
ELSE column=column+1;
ENDIF;
Print('.');
ENDIF;
ENDIF;
UNTIL SYS(108)="0";
Der Hauptbestandteil des Programms liest den Text zeilenweise ein (Read(1,A0)) und konvertiert die Textzeilen zu einer richtigen Tabelle. Die Textzeilen werden gespalten und in die Tabellenzellen verteilt. Ist das Dateiende erreicht (SYS(108)=0), wird das Programm abgeschlossen:
A0=""; B0="";
Closefile;
PrintLn;
Pauze;
END.
In dem Beispielprogramm waren auch Schleifen zu sehen. 3D-Calc kennt die Schleifentypen FOR...NEXT, REPEAT...UNTIL, WHILE...WEND, LOOP...ENDLOOP. Unterbrochen wird eine Schleife entweder durch Erfüllung ihrer Bedingung oder mit dem Befehl Exit.
Ein 3D-Calc-Programm kann weitere Programme starten:
RUN('calc\prog2.3dt')