Supercalc und dBASEII auf dem KC 85

von Hans-Rudolf Stoeßer

Für alle die sich nicht nur darüber freuen, was sich durch schöpferische Arbeit an Hardware, Betriebssystem und Software aus dem KC 85 herausholen läßt, ergibt sich die Frage für welche ganz profanen alltäglichen Arbeiten der KC außerdem noch brauchbar ist. Dabei denkt man sicherlich sofort an die Textverarbeitung, die wohl jeder nutzt. Aber wer arbeitet regelmäßig mit dBASEII oder sogar mit SC? Dabei ist die Ausstattung mit der sogenannten Unisoftware durchaus geeignet alle Rechnerarbeiten für einen kleinen Handwerks- oder Industriebetrieb und erst recht für die im privaten Bereich anfallenden Arbeiten zufriedenstellend zu erledigen.

Zur Unisoftware gehört mindestens:
(für KC geeignet)

  • ein Textverarbeitungssystem
    WordStar oder TPKC
  • ein Kalkulationsprogramm
    Supercalc oder KP
  • ein relationales Datenbanksystem
    dBASEII oder Redabas

darüberhinaus empfiehlt sich:

  • eine Programmiersprache
    Turbopascal
  • ein Diskettenmanipulationsprogramm
    Power oder Dienst

Schwerpunkt der weiteren Ausführungen sollen dBASEII und SC sein. Allerdings wird das keine vollständige Einführung in dBASEII und Supercalc sein. Vielmehr sollen die, die diese Komponenten der Unisoftware noch nicht nutzen angeregt werden, sich damit zu beschäftigen. Weiterhin sollen Tips und Hinweise denen helfen, die mit dBASEII irgendwann mal Schwierigkeiten hatten oder noch haben. Diese Hinweise resultieren u. a. aus eigenen Mißerfolgen die vor allem darauf zurückzuführen sind, daß die Literatur über dBASEII entweder lückenhaft ist oder wichtige Angaben an Stellen enthält wo man sie nicht sucht. Der Beitrag wird mit einer Kurzbeschreibung von Supercalc abgeschlossen.

Zuerst aber sollen die folgenden Komponenten kurz beschrieben werden:

Textverarbeitung:
WS und TPKC sind praktisch identisch. Sie sind für alle Schreibarbeiten einschließlich Serienbriefen einsetzbar. Die für Mailmerge (Kombodruck) erforderlichen Variablenlisten können durch dBASEII mit geringem Aufwand zur Verfügung gestellt werden. WS/TPKC kann auch als Editor für Turbopascal und dBASEII verwendet werden. Damit ist der Komfort größer als bei den internen Editoren.
Programmiersprache:
Für Aufgaben, die nicht mit dBASEII bearbeitet werden können oder sollen empfiehlt sich Turbopascal. Wegen der Vielzahl der Dialekte ist Basic unzweckmäßig. Compilierte Turbopascalprogramme können (z. B. für laufzeitkritische Programmteile) in Redabas- oder dBASEII-Programme höherer Version eingebunden werden. Zum Programmieren ist der eigene Editor oder WS/TPKC nutzbar.
Diskettenmanipulationsprogramm:
Das Programm Power/Dienst ist gewissermaßen eine Betriebssystemergänzung.

1. Datenbanksystem dBASEII

1.1 Allgemeines

Bei der Bearbeitung von Datenbanken mit den üblichen Programmiersprachen entstehen starre Verknüpfungen. Alle Änderungen in Verknüpfung von Daten in Inhalt und Aufbau der Datei erfordern umfangreiche Programmänderungen. Das gleiche gilt für Programme die auf die Datenbanken zurückgreifen. Hierarchische Datenbanksysteme vermeiden einen Teil der Mängel, haben aber noch Abhängigkeiten und Verzeigerungen zwischen den verschiedenen Dateistrukturen. Dadurch sind Änderungen und Anpassungen schwierig.

In relationalen Datenbanksystemen gibt es praktisch keine fest bestehenden Abhängigkeiten und Beziehungen zwischen den Datenbanken. Es kann praktisch jede Relation (Beziehung) durch Einzelbefehle flüchtig hergestellt werden. Wird sie nicht mehr benötigt zerfällt sie wieder so, daß sie dem Aufbau einer anderen Beziehung nicht mehr im Wege steht. dBASEII erfüllt diese Anforderungen, ist also ein relationales Datenbanksystem und hat darüberhinaus eine Menge mächtiger Befehle, die weiteren Komfort in die Arbeit mit Datenbanken bringen.

Es ist für die Verwaltung riesiger Datenmengen in Tabellen hervorragend geeignet. Es kann wegen der mächtigen Befehle weitgehend direkt im Anwenderbereich (im Dialog) genutzt werden. Programme werden recht einfach und übersichtlich. Es können auch Aufgaben programmiert werden die nichts mit Datenbanken zu tun haben. Datenbanken können für die Bearbeitung in Programmiersprachen auch im Systemdatenformat (sdf) bereitgestellt werden.

Die Robotronversion Redabas ist weitgehend identisch, gestattet aber wie die leider nicht sehr weitverbreitete letzte Version von dBASEII das Laden und Starten von Maschinenprogrammen und in einigen Versionen den Hardwarezugriff. Der Editor verkraftet je nach Version nur 2000 oder 4000 Zeichen und hat wenig Komfort. Daher sollte für lange Programme WS/TPKC genutzt werden.dBASEII arbeitet interpretativ (Compiler erst ab dBASE4).

dBASEII ist besonders in Verbindung mit WS-Mailmerge geeignet auf einfache Weise Mahnungen, Bestellungen, Einladungen, Gratulationen usw. herzustellen. dBASEII sucht die richtigen Adressen, Daten und Werte heraus und bereitet sie für Serienbriefe auf. Mit dBASEII lassen sich Lagerhaltung mit Bestandskontrolle und Bestellauslösung auf der Grundlage einer Bestands- und einer Lieferantendatei organisieren.

Anhand von Mitgliederlisten mit Adressen, Telefonnr. und Geburtstag erstellt der KC Einladungen und Gratulationen. Es sind Dateien für planmäßige Instandhaltung und Ersatzteilbestellung, Kundendateien mit Termin- und Zahlungskontrolle, Dateien für Lohnberechnung, Preisberechnung, Rechnungslegung und Bilanzen möglich. Zu den Serienbriefen können direkt von dBaseII Postetiketten auf Leporellolabels gedruckt werden (Etikettendruckprogramm).

Für ein mittelgroßes Einkaufszentrum mit ca. 30000 Artikeln erlaubt dBASEII eine Warendatei für alle Artikel zu führen (maximal ca. 60000 Artikel, siehe auch dBASEII-Leistungsparameter). Wenn jeder Satz nur 100 byte belegt (1000 möglich) wird aber für eine Datei bereits ein Massenspeicher von 3 Mbyte benötigt. Das heißt, lange bevor wir an die Grenzen von dBASEII stoßen sind wir an der Grenze der KC-Hardware angelangt.

1.2 dBASEII-Leistungsparameter

max. Anzahl von Dateien beliebig
Anzahl der während der Verarbeitung eröffneten Dateien max. 16
Sätze pro Datei max. 65535
Zeichen pro Satz max. 1024
Feldvariable pro Satz max. 32
Zeichen pro Feldvariable max. 254
Darstellungstyp alphanumerisch, numerisch, logisch
Größte Zahl ca.+/-1.8*10+63
Kleinste Zahl ca.+/-1.0*10-63
Numerische Genauigkeit 10 Stellen
Zeichenkettenlänge max. 254 Zeichen
Zeilenlänge eines Befehls max. 254 Zeichen
Länge einer Kommandozeile im Programm (incl.0D) max. 75 Zeichen *
"Report"-Listenkopflänge max. 254 Zeichen
"Report"-Spalten pro Liste max. 24
Indexschlüssellänge (incl.0D) max. 100 Zeichen
Anzahl Speichervariablen max. 64
Anzahl Ausdrücke im SUM-Befehl max. 5
Anzahl pending GET's max. 64 **
Länge einer Programmdatei unbegrenzt ***

* - Befehle über 75 Zeichen auf mehrere Zeilen aufteilen. (über 75 Zeichen auf !unsichtbare! Leerzeichen achten)

** - schwebende Eingaben. Unter Programmkontrolle eingegebene aber noch nicht mit "read" eingelesene Variablenwerte

*** - nur wenn mit WS/TPKC bearbeitet. Der dBASEII-Editor macht je nach Version ab 2000/4000 Zeichen Schwierigkeiten

1.3 Datenbankbearbeitung

In erster Linie ist dBASEII auf die Bearbeitung von Feldvariablen in Datenbanken und die Verarbeitung von Datenbanken orientiert. Dazu dienen u.a.die im folgenden gezeigten Befehle.

Im Folgenden soll die Mächtigkeit einiger dBASEII-Befehle dargestellt werden. Dabei sollte man sich vorstellen, welcher Aufwand in einer üblichen Programmiersprache getrieben werden müßte.

  • beliebige Verknüpfungen - versch.Einzelbefehle
  • Direktzugriff auf Satz und Feld - 2 Befehle
  • Indexdir. Zugriff - 2 Befehle
  • Konvert. dBASEII in sdf - 1 Befehl
  • Konvert. sdf in dBASEII - 1 Befehl
  • Änderung der Dateistruktur - 1 Befehl
  • Sortierung - 1 Befehl
  • Anhängen und Einfügen!! von Sätzen - 1 Befehl
  • Zusammenfügen zweier Dateien - 1 Befehl
  • Erstellen von Reports - 1 Befehl

Die meisten Befehle, nicht nur diese haben Optionen, die den Komfort erheblich erhöhen z. B. für Datensätze, Quellen, Umformung mit und ohne Eingaben, Feldlisten, Masken (mit Joker), Ausdrücke, Begrenzungen, Strukturen, auf- und absteigende Zählung etc. Wenn z. B. ein Handwerksbetrieb eine Kundendatei führt, kann mit folgendem Befehl die Datei erzeugt werden, die WS für einen Serienbrief braucht, der als Mahnung an die Schuldner herausgehen soll.

copy to mahnung for guthaben < 0 sdf delimited with ,

Bei der Abarbeitung dieses Befehls sucht dBASEII bei entsprechender Gestaltung der Kundendatei die Schuldner heraus und stellt Daten über den Namen, die Adresse, die Schuldsumme und die Fälligkeit bereit und kopiert alles in das sdf damit WS es zu einem Serienbrief verarbeiten kann.

1.4 Programmierung

Wenn auch, wie man sieht, recht umfangreiche Rechneraktivitäten im Dialog veranlaßt werden können, gibt es oft auch Gründe die Rechnerarbeit unter Programmkontrolle zu stellen z. B. umfangreiche Operationen, Datensicherheit, Bedienkomfort usw. Dazu stellt dBASEII eine Reihe von Programmkomponenten zur Verfügung. Die wichtigsten dieser dBASEII-Programmierkomponenten sind:

  • Die Programmierung ist in verschiedenen Ebenen möglich (Unterprogramme - Prozeduren). Aus Unterprogrammen können wiederum Unterprogramme aufgerufen werden. Die Staffeltiefe ist nur dadurch begrenzt, daß nicht mehr als 16 Dateien gleichzeitig offen sein dürfen.
  • Da mit den in den Datenbanken verwalteten Feldvariablen keine Programmabläufe programmiert werden können stellt dBASEII 64 Speichervariable für diesen Zweck bereit.
  • do (Programmname)
    Start von dBASE-Programmen
  • return
    Programmende - zurück auf höhere Programebene
  • fast alle Dialogbefehle im Programm verwendbar
  • Der Abschluß der Befehle für Schleife, Verzweigung und mehrzeiligen Text mit end... macht Programme übersichtlich.
  • do while -> enddo
    kopfgesteuerte Schleife
  • do case (.) -> case (.) -> case (.) -> otherwise (.) -> endcase
    Mehrfachverzeigung
  • if -> else -> endif
    Verzweigung
  • text -> endtext
    mehrzeiliger Text für Bediener
  • mit der Befehlskombination @ zeile/spalte say/get ..... ist eine komfortable formatierte Aus- und Eingabe am Bildschirm und Ausgabe auf dem Drucker möglich. Mit einem Befehl (read) können bis zu 64 in der Bildschirmmaske eingegebene Variable (sowohl Feld- wie Speichervariable) gleichzeitig eingelesen werden. Bei der Eingabe erfolgt eine Prüfung von Datentyp und Länge ohne aufwendige Programmkonstruktionen. Dabei besteht eine Korrekturmöglichkeit für alle eingegebenen Werte vor dem Einlesen.
  • Eingabemaske:
    set format to screen
    @ zeile,spalte say
    (zeile 0...23)
    @ zeile,spalte get (spalte 0..79)
    read

    set format to print
    @ zeile,spalte say
    (zeile0...254) (spalte 0..254)
    je nach Papierformat
    @ zeile,spalte get nicht zulässig!
  • &(stringvariable)
    Makroersetzung erlaubt Variable wo nur Konstante erlaubt.
  • reset
    Rücksetzung nach Diskettenwechsel
  • * / remark / note
    Text
  • erase
    Bildschirm löschen
  • Systemeinstellungen:
    --- set on /off ---
    set debug / set echo / set step
    set talk set confirm
    set bell set colon
    set console set escape

Um dBASEII optimal zu nutzen muß die Programmierstrategie die Mächtigkeit und die Besonderheiten der Befehle berücksichtigen

1.5 Einige Tips zum Umgang mit dBASEII

Die zu dBASEII/Redabas gehörenden Dateien sind weitgehend kompatibel. Unterschiede bestehen in den Dateinamen zwischen Redabas und dBASEII.

dBASEII Redabas

dbase.com redabas.com
dbaseovr.com rdbasovr.com
dbasemsg.txt rdbasmsg.txt

Als Minimalausstattung genügen die com-Dateien. Die Hilfedateien (*.txt) sind durch Austauschen des Dateinamens für das jeweils andere System nutzbar. Der Inhalt bleibt natürlich unverändert. Die Hilfedateien sind nur nutzbar, wenn die Diskette nicht schreibgeschützt ist. Sonst erfolgt Meldung eines Diskettenfehlers und dBASEII wird verlassen. Die Hilfedatei selbst kann aber schreibgeschützt sein.

Weiterhin gibt es Unterschiede in den Dateinamenergänzungen der von dBASEII/Redabas erzeugten Dateien. Diese Unterschiede resultieren aus den verschiedenen englischen und deutschen dBASEII-Versionen und nicht aus dem Unterschied zwischen dBASEII und Redabas.

Programmdateien *.cmd *.prg erzeugt mit modify command
Datenbanken *.dbf *.dbd erzeugt mit create
Indexdateien *.ndx *.idx erzeugt mit index
Memorydateien *.mem *.var erzeugt mit save
Reportdateien *.frm *.def erzeugt mit report form
SDF-Dateien *.txt erzeugt mit copy .... sdf

Wenn Dateien vom vorliegenden dBASEII/Redabas nicht akzeptiert werden empfiehlt sich die Verträglichkeit dadurch zu prüfen, daß alle Dateiarten wie o.a. erzeugt werden. Nach entsprechender Änderung der Dateinamenergänzung bei den ursprünglich nicht akzeptierten Dateien kann mit ihnen gearbeitet werden.

Für die Benennung von Variablen und Dateien sowie die Eingabe von Befehlen gibt es Regeln gegen die häufig verstoßen wird.

  • Wie bei allen Programmiersprachen dürfen für Datei- und Variablennamen keine reservierten Worte verwendet werden. Das sind z. B. T, Y, N, F, Befehle, Optionen, Funktionen. dBASEII kann, muß aber nicht mißverstehen. Die Namen müssen mit Buchstaben beginnen. Danach können Buchstaben, Zahlen und Doppelpunkte folgen. Doppelpunkte müssen jedoch beidseitig von Buchstaben oder Zahlen eingeschlossen sein. Für Dateinamen sollten sie aber trotzdem nicht verwendet werden, weil solche Dateinamen vom Betriebssystem und z. B. von PIP und TPKC nicht akzeptiert werden.
  • Variablennamen dürfen maximal 10 Zeichen lang sein
  • Dateinamen. Es gilt die CP/M-Konvention. Das heißt 1-8 Zeichen für Dateinamen, 0-3 Zeichen für Ergänzung.
  • dBASEII-Befehle sind englischer Klartext. Sie können bis auf 4 Zeichen verkürzt werden. Werden mehr Buchstaben verwendet müssen die weiteren Zeichen richtig geschrieben werden.

An dieser Stelle soll noch auf ein Problem hingewiesen werden das nicht nur für dBASEII gilt, bei dem aber häufig Programmierfehler gemacht werden. Beim Sortieren, Suchen oder Vergleichen mit Hilfe von Zahlen dürfen nur numerische Werte und keine charakter verwendet werden, sonst richtet sich der Rechner bei der Aktion nach der ASCII-Tabelle und nicht nach dem Zahlenwert und dann ist z. B. "11" kleiner als "2".

1.6 dBASEII-Programmbeispiele (mit und ohne Datenbank)

(Die Beispiele wurden bewußt auf den Einsteiger zugeschnitten)

englisch.cmd

Dieses Programm ist ein typisches Datenbankprogramm, das allerdings nur 2 der 32 möglichen Feldvariablen benötigt. Vorhandene Variable sollen dauerhaft erhalten bleiben (Wörterbuch). Die deutschen und englischen Begriffe sind in den 2 Feldern untergebracht. Es können allerdings auch in weiteren Feldern z. B. Erläuterungen untergebracht werden. Bei den wenigen Variablen geht das Suchen schnell.

Es ist jedoch nicht sinnvoll ein ganzes Wörterbuch in einer Datenbank unterzubringen, weil dBASEII auch indiziert hier zu lange sucht. Besser ist es z.B. für jeden Buchstaben und getrennt nach englischen und deutschen Anfangsbuchstaben mehrere Dateien anzulegen. Mit append kann das Wörterbuch jederzeit vervollständigt werden. Ein Programm ist dazu nicht erforderlich.

miete1.cmd

Dieses Programm muß keine Variablen dauerhaft bewahren. Es soll lediglich unter Nutzung von Variablen eine Rechnung durchgeführt und die Ergebnisse geordnet ausgegeben werden. Es wird keine Datenbank angelegt und nur Speichervariable genutzt. Die Werte der Variablen gehen zum Ende des Programms verloren. Das Programm ist bereit für neue Berechnungen.

Die vor Aufnahme der Berechnungen nötige erstmalige Wertzuweisung für die Variablen (Konstanten) wurde unabhängig vom Programm nur einmal vorgenommmen und in einer Memorydatei niedergelegt. Von dort werden die Werte zu Beginn des Programms eingelesen. Das reduziert die Programmschritte.

miete2.cmd

Ein Programm mit gleicher Zielstellung kann natürlich auch unter Nutzung von Feldvariablen in einer Datenbank bearbeitet werden. Die Datenbank kann z. B. nur Hilfsmittel sein und zum Ende des Programms wieder geleert werden. Sie kann aber auch alle Daten aufbewahren.

Im Beispiel wird dieser Weg gewählt. Dazu wird außer der Arbeitsdatenbank eine zweite unveränderliche Datenbank angelegt, aus der der für die Berechnung erforderliche neue Datensatz mit Leerfeldern und Konstanten übernommen wird.

Für weitere (nötige!!) Informationen gibt es folgende Dateien die von Clubmitgliedern zur Verfügung gestellt wurden:

  • DBASE.DOK ca.35 Seiten (ähnlich HELP-Datei) auf NEWS-Diskette
  • LEKTION.COM Redabas Lernprogramm beim Diskothekar
  • DBASE1..DBASE14.DOK dBASEII-Handbuch (428 Seiten ausgedruckt) beim Diskothekar

2. Kurzbeschreibung von Supercalc

SC ist besonders geeignet für Planung, Kalkulation, Logistik, Koordinierung z. B. bei Kontoführung, Transportplanung, Haushaltplanung, Planung und Kalkulation beim Hausbau, Planung von Produktionsprozessen, Kalkulation der Produktionskosten unter Berücksichtigung von Arbeitszeiten / Lohn / Materialkosten / Abschreibungen usw, und vieles andere mehr.

SC greift direkt in den Anwenderbereich durch. Auf einem Arbeitsblatt mit maximal 63 Spalten (A-Z, AA-AZ, BA-BK) und 254 Zeilen (1-254) können strings (mit " vor dem string), numerische Werte und Formeln eingetragen werden. Während die strings für Überschriften und Erläuterungen verwendet werden, kann mit den numerischen Werten und Formeln auf dem Arbeitsblatt gerechnet, verknüpft und entschieden werden.

Dazu bietet SC eine Vielzahl von Funktionen an. So entsteht ein programmähnliches Schema. Bei Änderung eines Parameters rechnet SC das gesamte Blatt neu durch. So kann z.B. die Auswirkung einer Störgröße in einem kompliziert vernetzten System in wenigen Augenblicken nicht nur für die Endgrösse, sondern für alle Teilkomponenten ermittelt werden.

SC verwaltet für jedes Arbeitsblatt 2 Bilder, einmal mit den in den Zellen enthaltenen Formeln und im zweiten Bild mit den numerischen Werten. Es kann mit dem Befehl G zwischen den Bildern gewählt werden.

KP heißt die Robotronversion die in Aufbau und Wirkung identisch ist. Leider wurden aber alle Befehle umbenannt. Daher empfiehlt sich nur SC zu verwenden und vorhandene Arbeitsblätter damit weiter zu bearbeiten. Während zu allen Befehlen und Optionen in allen Phasen der Bearbeitung eines Arbeitsblattes durch Eingabe von ? Erläuterungen aufgerufen werden können, bietet SC keine Hilfe bei der Nutzung der Funktionen an.

In die NEWS-Diskette wurde daher eine Datei SC.TXT aufgenommen, die Befehle, Optionen, Funktionen und Fehlermeldungen beschreibt. Auf einer Datei TEST.CAL ist außerdem ein Arbeitsblatt vorhanden, auf dem die Funktion LOOKUP an einem Beispiel erläutert ist. Das Arbeitsblatt ist zum Üben vorgesehen.

Zu dBASEII gehören die Dateien:

ENGLISCH.CMD
ENGLISH.DBF
MIETE1.CMD
MIETE.MEM
MIETE2.CMD
MIETE.DBF
MIETE0.DBF
DBASE.DOK

Zu SC gehören die Dateien:

SC.TXT
TEST.CAL