-
Die
vorliegende Erfindung betrifft ein Verfahren zum Erzeugen von Quellcode
in einer prozeduralen, reentrantfähigen Programmiersprache aus
einer Spreadsheet-Darstellung sowie weitere Verbesserungen hinsichtlich
der Verarbeitung von Algorithmen und/oder Daten in Spreadsheets.
-
Sog.
Spreadsheets (z.B. erzeugt mit den Standard-Anwendungs-Tabellenkalkulationsprogrammen EXCEL,
LOTUS etc.) enthalten Algorithmen und/oder Daten in einer 2-dimensionalen
statischen Darstellung. Die Daten können in den Spreadsheets selbst
nicht dynamisch berechnet werden. Damit ist es in der Regel nicht
möglich,
Daten aus Datenbeständen
wie Datenbanken automatisch durch die in einem Spreadsheet definieren
Berechnungen zu verarbeiten. Außerdem
sind die gängigen
Spreadsheets nur auf PC-Umgebungen lauffähig, auf denen die Standard-Anwendungs-Tabellenkalkulationsprogramme
laufen.
-
Aufgabe
der Erfindung ist die Bereitstellung eines Verfahrens und eines
Computerprogrammproduktes, mit dem die in einem Spreadsheet dargestellten
Algorithmen und/oder Daten dynamisch verarbeitet werden können.
-
Zur
Lösung
bringt die Erfindung das im Patentanspruch 1 angegebene Verfahren
in Vorschlag.
-
Durch
das erfindungsgemäße Verfahren,
mit dem aus einer Darstellung von Algorithmen und/oder Daten in
einem oder mehreren Spreadsheet(s) automatisch ein Quellcode derart
erzeugt wird, dass Zellbereiche gleicher Formelstruktur auf eine
oder mehrere Methoden einer prozeduralen Programmiersprache wie
z.B. C und Java abgebildet werden, Algorithmen zunächst nicht-prozedural
mit herkömmlichen
Spreadsheet-Programmen zu formulieren, aber die Ausführung der
Berechnungen auf unterschiedlichen Plattformen durchzuführen, auf
denen die Spreadsheet-Programme an sich nicht ablauffähig sind
(z.B. auf Grossrechnern, Rechnernetze). Ferner wird in der prozeduralen
Programmiersprache die dynamische Berechnung großer Datenbestände bzw.
umfangreicher Datensätze
möglich.
-
Diese
Erfindung sowie weitere erfindungsgemäß Verbesserungen hinsichtlich
der Verarbeitung von Algorithmen und/oder Daten in Spreadsheets
werden im folgenden unter Bezugnahme auf die Zeichnungen genauer
beschrieben.
-
Erzeugung von Quellcode
in reentrant-fähigen,
prozeduralen höheren
Programmiersprachen aus Spreadsheets
-
Prinzip:
-
Aus
der Darstellung von Algorithmen und/oder Daten in einem oder in
mehreren Spreadsheets wird automatisch ein Programm in einer prozeduralen,
reentrantfähigen
Programmiersprache (z.B. herkömmliche Programmiersprachen
wie Java, C, C#) derart erzeugt, dass Zellbereiche gleicher Formelstruktur
auf eine oder mehrere Methoden der Sprache abgebildet werden, die
diese Zellen in einfacher oder doppelter Schleifenkonstruktion berechnen.
Dieses Prinzip ist in 1 schematisch verdeutlicht.
-
Erläuterungen:
-
„Spreadsheet", „Zellen" , „Zellbereiche
gleicher Formelstruktur", „Methode", „reentrant-fähig", „prozedural" siehe Glossar.
-
„Zellbereiche
gleicher Struktur auf eine Methode abbilden": den Programmcode einer Methode in
der prozeduralen Programmiersprache erzeugen, die für diesen
Zellbereich – eingebettet
in die Gesamtrechnung – die
im Prinzip gleichen Werte berechnet wie durch die Spreadsheetlogik
festgelegt.
-
„Im Prinzip
gleich" soll sagen,
dass Rundungsunterschiede und Unterschiede aufgrund anderer „Basismethoden" (s. Glossar) möglich sind,
die prinzipielle Funktionalität
aber identisch ist.
-
Beispielhafte
Lösungsansätze für einige
Problembereiche:
Sind so entstandene Methoden rekursiv abhängig (das
bedeutet nicht, dass Einzelzellen rekursiv abhängig sind), wird ausschließlich für diese
rekursiv durch Methodenaufruf verbundenen „Ketten" von Methoden die Berechnungsreihenfolge
dynamisch – also
zur Berechnungszeit – ermittelt,
indem für
jede Zelle der betroffenen Formelbereiche darüber Buch geführt wird,
ob sie bereits (in diesem Durchlauf) berechnet wurde. Damit wird gewährleistet,
dass ihre Berechnung erst im konkreten „Bedarfsfall" durchgeführt wird.
Für diesen
Lösungsansatz
wird vorausgesetzt, dass die Zielsprache reentrantfähig ist.
-
Sind
Abhängigkeiten
statisch nicht erkennbar – das
ist z.B. bei der Excel-Funktion „offset" der Fall, bei der die Zellreferenz über ggf.
komplexe Formeln als Zeilen/Spalten-Offset zu einer Basisadresse berechnet wird –, wird
- • eine
plausible Annahme über
die Methoden-Berechnungsreihenfolge
getroffen; bei offset z.B. gleiche Abhängigkeit der errechneten Zieladresse
wie für
die Basisadresse
- • eine
Warnung erzeugt
- • dem
Benutzer die Möglichkeit
gegeben, durch Generierangaben Einfluss auf die Berechnungsreihenfolge zu
nehmen, indem er für
die Zellbereiche mit solcher indirekten Adressierung (so wird diese
Situation im Folgenden genannt) Angaben über die Lage des adressierten
Bereiches macht
- • dem
Benutzer die Möglichkeit
gegeben, die Berechnungsreihenfolge dynamisch ermitteln zu lassen.
-
Technischer Nutzen:
-
Durch
die Abbildung von Spreadsheets auf prozedurale Sprachen wie z.B.
C und Java ist es möglich, Algorithmen
nicht-prozedural
mit herkömmlichen
Spreadsheet-Programmen zu formulieren, die Ausführung der Rechnungen auf unterschiedlichen
Plattformen durchzuführen,
auf denen die Spreadsheet-Programme nicht ablauffähig sind
(z.B. auf Grossrechnern, Rechnernetze). Man kann dadurch Spreadsheet-Algorithmen für Programme
verfügbar
machen, indem die generierten Programme als Unterprogramme genutzt
werden – das
Spreadsheet-Programm, mit dem die Logik entwickelt wurde, muss auf
diesen Ausführungs-Plattformen nicht
ablauffähig
sein. Man kann aber auch einfach wünschen, den Performance-Vorteil von Grossrechnern
für die
Berechnungen nutzen.
-
Der
beschriebene Generatoransatz hat gegenüber einem interpretierenden
in vielen Fällen
den Vorteil, dass die Logik des Spreadsheets zum Zeitpunkt der Programmausführung nicht
mehr analysiert werden muss sondern in der generierten Befehlsfolge
bereits enthalten ist. Damit wird – bei Einsatz der gleichen
Programmiersprache – eine
bessere Performance erreicht.
-
Kooperation prozeduraler
und nicht prozeduraler Formelbereiche bzw. Beschreibungen in einer
Spreadsheetdarstellung
-
Prinzip:
-
Zusammenhängende Zellbereiche
eines Spreadsheets beschreiben prozedurale Abläufe, d.h. die Zellen werden
in diesen Bereichen von links oben nach rechts unten ausgewertet.
Die Anweisungen können
Zellen ausserhalb des prozeduralen Bereiches referenzieren, die
dann zu diesem Zeitpunkt berechnet werden (genauer: alle Zellen,
die für
die Berechnung dieser Zelle direkt und indirekt nötig sind
und schließlich
sie selbst). Unterprogramm-Technik wird durch Referenzierung anderer
prozeduraler Bereiche ermöglicht.
-
Dies
wird im folgenden anhand des in 2 gezeigten
Beispiels erläutert.
-
Durch „proc(„A";A1:A10)" in Zelle A1 wird
ein prozeduraler Zellbereich definiert (Zellen A1 bis A10) und dieser
Prozedur der Name „A" gegeben.
-
Durch „proc(„B";B1:B10)" wird ein weiterer
prozeduraler Bereich definiert (B1 bis B10) und mit „B" benannt. Prozedur
A wird eine Schleife durchlaufen (=for(..) bis =endFor()). =for(C1;D1;E1)
hat hier die Bedeutung:
führe
die folgenden Zellen (von links nach rechts, oben nach unten) im
Prozedurbereich A durch, bis ein „=endfor()" erreicht wird, führe dann E1 aus (Erhöhung des
Schleifenzählers)
und wiederhol den Durchlauf, wenn D1 „wahr" ist, sonst setze nach dem „=endFor()" fort.
-
„=setValue(B6;C1)" in A3 überträgt den Wert
der Zelle C1 nach B6.
-
„=Callx(„B")" startet die Prozedur B, die ein Workbook „test.xls" berechnet, nachdem
sie darin die Zelle „myValue" (also eine mit Namen
versehene Zelle) mit dem Wert von B6 belegt hat. Anschliessend re-initialisiert sie
das Workbook „test.xls".
-
Technischer Nutzen:
-
Spreadsheet-Darstellung
stellen formelmässige
Zusammenhänge
dar. Für
jede Einzelzelle wird die formelmässige Berechnung dargestellt,
es wird jedoch keine Reihenfolge der Berechnung festgelegt. Das
ist die zentrale Stärke
der Darstellung, aber manchmal eine wesentliche Schwäche. Iterative
Lösungen
sind nur mit Schwierigkeiten darzustellen. „Management"-Funktionen jenseits
des reinen Algorithmus – z.B.
die dialoggestützte
Eingabe von Daten durch den Anwender – kaum zu formulieren.
-
Aus
diesem Grund wurden „Makro"-Sprachen entwickelt,
die die Spreadsheet-Programme ergänzen (z.B. Visual Basic for
Applications für
Excel). Allerdings befindet man sich mit ihnen sofort in einer völlig anderen
Sprachumgebung.
-
Die
dargestellte Kooperation prozeduraler und nicht-prozeduraler Spreadsheet-Bereiche hat
den Vorteil, zumindest kleinere prozedurale Aufgaben im Spreadsheet-Kontext
darzustellen (und keine weitere Programmiersprache lernen zu müssen).
-
Dynamische Erzeugung von
Worksheet-Instanzen während
eines Programmablaufs und verbunden damit Konstrukte, mit denen
Zellen mehrfach instanziierter Worksheets referenziert werden können.
-
Prinzip:
-
Das
Konzept eines Workbooks, das aus mehreren Worksheets besteht, wird
erweitert um die Möglichkeit
der dynamischen Instanziierung zusätzlicher Kopien eines Sheettyps
(eines Sheets, das vom Entwickler entworfen wurde). Dynamische Instanziierung
heisst: während
des Programmablaufs (= der Berechnung) wird durch vom Entwickler
entworfene Algorithmen die Erzeugung und Initialisierung mit Daten
von weiterer Kopien eines gegebenen Sheets veranlasst. Diese Sheets
werden in die Berechnung einbezogen. Dieses Konzept ist in 3 schematisch
gezeigt.
-
Zu
diesem Konzept gehören
folgende Teilaspekte:
- • Der Bezug auf Zellen eines
mehrfach instanziierten Sheets ist über zwei Mechanismen möglich:
o
referenziert wird das jeweils erste Sheet einer gegebenen Sheetmenge
o
Quantoren, d.h. Spreadsheet-Grundfunktionen, deren Parameter auch
Zellbereiche sein können,
können – wo es
sinnvoll ist – auch
eine Sheet-Menge verarbeiten.
-
Beispiel:
-
Die
Funktion „Summe" liesse sich so erweitern,
dass mit „=Summe(
Sheet1!A1)" die
Summe der Werte der Zelle A1 aller Exemplare von Sheet1 berechnet
wird.
- • Diese
Sprachmittel werden verfeinert durch Bildung von Sheet-Tupeln: man
kann den Bereich (=die Sheets eines Sheettyps), den eine Zellformel
referenziert, auf eine Menge von Sheet-Tupeln beschränken.
-
Beispiel 1: =Ifrelational(Fachlich!A1=1;Fachlich!A1+1)
-
Selektiert
werden in dem Beispiel die Sheets vom Typ „Fachlich", in deren Zelle „A1" eine 1 steht. Auf diese Menge von Sheets
wird die Operation „Fachlich!A1+1" durchgeführt. In
konkreten Fall (Addition ist kein Quantor): gibt es nur ein Sheet „Fachlich", das die Bedingungen
erfüllt,
wird genau dieses genommen, sonst das „erste" der selektierten (in der oben skizzierten
beliebigen, aber bei vorliegender Instanzenmenge eindeutigen Ordnung).
-
Beispiel 2: =Ifrelational(Fachlich!A1=AuchFachlich!C1;Summe(Fachlich
!A1))
-
Selektiert
werden die Kombinationen von Fachlich/AuchFachlich-Sheets, für die die
Bedingung gilt. Für
das Ergebnis kann es hier bedeuten, dass der Wert in A1 eines Fachlich-Sheets
mehrfach addiert wird. Das Vorgehen orientiert sich an dem Selektverhalten
von Joins in SQL und ist in sich schlüssig.
-
Erläuterungen:
-
Ein
Beispiel der expliziten dynamischen Instanziierung könnte fogendermassen
aussehen:
-
Das
Worksheet, das in einer seiner Zellen diese Formel enthält, würde instanziiert
werden, wenn die darin beschriebene Bedingung von keinem der schon
existierenden Sheets dieses Typs erfüllt wird. Es würde nur
in diesem Fall und nur einmal instanziiert werden. Eine sinnvolle
Anwendung besteht in der Verdichtung von Daten aus Einzeltransaktionen,
wenn man diese Verdichtungs-Sheets überdies nach bestimmten Kriterien gruppieren
will (Hier: z.B. Altersklassen von jeweils 5 Jahren in ein Sheet).
„init"-Formeln werden unmittelbar
mit dem Instanziieren berechnet.
-
-
In
diesem Beispiel wird das Sheet mit der "createSheet"-Formel
eventuell mehrfach konstruiert. „MyInstance" liefert die laufende
Instanznummer. Im vorliegenden Fall werden solange Sheets instanziiert,
bis im Sheet1 unter der Zelle A1 eine leere Zelle auftritt. Durch „init" wird die Zelle A2
der neuen Sheetinstanz belegt, die Belegung erfolgt unmittelbar
nach der Instanziierung. Sinnvoll ist diese Technik etwa im Zusammenspiel mit
Datenquellen, die ihre Treffermenge in das Excelworkbook eintragen,
wenn die anschließende
Bearbeitung eines Treffers (also einer Zeile) so komplex ist, dass
man dies nicht in weiteren Zellen dieser Zeile beschreiben möchte sondern
in jeweils einem eigenen Worksheet.
-
Technischer Nutzen:
-
Die üblichen
Spreadsheet-Programme unterstützen
die Vervielfältigung
von Zellen oder Zeilen mit Formeln und das Kopieren von Speadsheets
durch den Enwickler, aber nur durch ihn. Diese Vorgänge sind
Entwicklungsschritte. Durch die dynamische Instanziierung wird ein
Mittel geboten, zum Berechnungszeitpunkt durch Algorithmen zu ermitteln,
wieviel Kopien eines Sheets benötigt
werden und sie dann anzulegen. Auf diese Weise kann man sich z.B.
wechselnden Datenmengen anpassen.
-
Beschreibung zyklischer
Ablaufstrukturen durch Definition von verketteten Datenquellen und
damit verbundenen nicht-zyklischen
Quellen sowie Datensenken in einem Spreadsheet.
-
Die
Prinzipien haben zu tun mit der nichtprozeduralen Beschreibung von
Datenbank- und Unterprogrammaufrufen bzw. Hauptprogramm-Einstiegen
mit ihren logischen Abhängigkeiten,
der automatischen, dynamischen Expansion von Worksheets anhand von
Spreadsheet-by-Example-Entwürfen,
der Einführung
von Workbook-Zuständen
mit den zugehörigen
Instrumenten zur Abfrage und gezielten Aktionen und mit Zell-Datentypen,
die ein Gedächtnis
haben.
-
Definiton
einer Verarbeitungsstruktur durch logische Verkettung von Datensenken
und -quellen sowie ihre Verknüpfung
mit Zellbereichen
-
Prinzip:
-
Zellbereiche
der Spreadsheets, die als Datenquellen/senken identifiziert sind,
werden logisch miteinander zu einer Kette verknüpft und definieren eine geschachtelte
Verarbeitungsstruktur. Weitere Datenquellen sind über Parameter
der Quelle mit den verketteten Quellen/Senken verknüpft und
werden entsprechend dieser Abhängigkeit
gelesen. Dieses Prinzip ist in 4 verdeutlicht.
-
Erläuterungen, Anmerkungen zu möglichen
Realisierungen:
-
Datenquellen
können
Datenbanken sein, Dateien, Sheet-Bereiche,
Unterprogramme, Programmparameter des aufrufenden Programmes usw.
Datensenken können
keine Programmparameter sein.
-
In
der Spreadsheet-Darstellung wird zu Datenquellen/Senken angegeben:
- • Die
Angabe der Quelle/des Ziels. Die Details der Angabe hängen ganz
von Quelle/Ziel ab. Bei einer Datebankquelle gehört dazu neben der Datenbank
auch ein SQL-Selectstatement,
bei Dateien der Dateiname (und ggf. Typ), bei Sheetbereichen eine
Bereichsangabe, bei Unterprogrammen der Name der Methode mit Signatur
(=Reihenfolge und Typ der Parameter und des Ergebnisses) und z.B.
Angaben zum Systemverhalten.
- • Bei
Datenquellen die Angabe, ob sie einen Transaktionsschritt triggert
(und deswegen nur jeweils eine Zeile bereitstellen) („T-Quellen/Senken", im Unterschied
dazu die „nicht-transaktionsschritttriggernden Quellen „NT-Quellen")
- • Bei
T-Quellen/Senken: ggf. eine Vorgänger-T-Quelle.
Durch diese Verkettung wird eine Schachtelung der Verarbeitungsschritte
realisiert. Senken müssen
in die Kette eingehängt
werden, um den Zeitpunkt des Wegschreibens der Daten festzulegen
- • Die
Angabe eines Datenbereiches im Sheet. Bei T-Quellen sind dies neben
einem Header-Bereich (Bereich von Spaltenüberschriften) ein oder mehrere
Zellen nebeneinander, bei anderen Quellen/Senken können es
auch offene Bereiche sein, also solche, deren Spalten in Richtung
wachsender Zeilen keine belegten Zellen enthalten (ausgenommen:
Speadsheet-Entwurfszeilen)
- • Bei
allen Quellen/Senken möglich:
quelltypabhängig
Referenzen auf Zellen, deren Inhalte für die Quellen/Senken-Bedienung
erforderlich ist, z.B. Name der Datenbank
- • NT-Quellen
können
Bezüge
auf Datenbereiche anderer Quellen haben, woraus sich implizit die
Reihenfolge des Quell-Lesens dieser NT-Quellen ergibt, jedoch ist
diese Abhängigkeit
allein eine, die auf referenzierten Daten beruht. Der wesentliche
Unterschied zu T-Quellen: T-Quellen
sind in einer explizit angegebenen Kette aller T-Quellen eindeutig
eingeordnet und stellen pro Verarbeitungsschritt genau eine "Datenzeile" bereit, NT-Quellen werden nicht
in die Kette gestellt und werden immer dann vollständig in
das Worksheet eingelesen, wenn sich Dateninhalte des Spreadsheets ändern, die
für das
Einlesen der Quelle Bedeutung haben, d.h. von der NT-Quellendefinition
referenziert haben (Beispiel dafür: Änderung
einer Zelle, deren Inhalt in dem SQL-Select einer NT-Datenbankquelle
verwendet wird).
-
Automatische Expansion
von Formelbereichen und Bereichsreferenzen nach Übernahme von Daten aus einer Datensenke.
-
Prinzip:
-
- • Als
Folge der Übertragung
von Daten aus externen Datenquellen in einen Datenquellen-Bereich
des Spreadsheets werden Formelbereiche gleicher Struktur der gegenüber dem
Entwurfssheet veränderten Grösse von
Datenquellenbereichen automatisch angepasst. Die Anpassung richtet
sich nach den logischen Beziehungen der Zellfomeln durch direkte
und mittelbare (über
andere Zellen vermittelte) Referenzen auf die Datenquellbereiche
und die aus dem Entwurfssheet durch Beispiel-Datenquellbelegungen
und darauf angepasste Formelbereichsgrössen erkennbaren Absichten
des Entwicklers.
- • Bereichsreferenzen
auf expandierte Bereiche werden ebenfalls expandiert, d.h. der referenzierte
Bereich wächst
ebenfalls.
- • Die
implizite Expansion ist nicht auf das Worksheet beschränkt, das
den auslösenden
erweiterten Datenbereich enthält.
-
Dieses
Prinzip ist in 5 verdeutlicht.
-
Erläuterungen, beispielhafte Algorithmen:
-
- • A1:
Damit ein Formelbereich (Bereich strukturell gleicher Formeln) expandiert
wird, muss er im Entwurfssheet (dem Original-Spreadsheet) genauso
viel Zeilen haben wie das Datenbeispiel für eine Datenquelle (NT-Quelle),
mindestens aber 2. Die Formel des Bereiches muss sich mit relativen
Zeilenreferenzen auf Zellen oder Zellbereiche dieses Datenbereiches
beziehen (z.B. =$C1, aber nicht =$C$1). Der Zellbereich nach diesen
Zellen (also die Zellen in den folgenden Zeilen) muss leer sein.
- • A2:
Bezieht sich ein Formelbereich in der beschriebenen Weise statt
auf den Datenbereich einer NT-Quelle auf einen Formelbereich, der
selbst expandierbar ist, ist auch er selbst expandierbar (Transitivität der Expansion
durch Referenz).
- • A3:
bezieht sich der Bereich auf mehrere Datenquellen und soll er nicht
mit allen synchronisiert werden, müssen die Entwurfsbereiche mit
unterschiedlicher Anzahl von Beispielzeilen beschrieben werden.
Synchronisiert wird ein referenzierender Bereich nur mit denen,
die genauso viele Zeilen in sich gleicher Formelstruktur haben wie
er.
- • A4:
Wird ein Formelbereich von einem expandierbaren Bereich bezüglich der
Zeile relativ referenziert, hat er im Entwurf die gleiche Anzahl
von Zeilen und folgen ihm ausschließlich leere Zeilen, so ist
auch er expandierbar.
- • A5:
Expandiert wird ein expandierbarer Bereich um jeweils eine Bereichszeile
für jede
Zeile eines Datenbereiches, die dieser über den Entwurfsbereich hinaus „wächst" (durch Datenübernahme
aus der Datenquelle). Berücksichtigt
werden dabei alle Datenbereiche der Datenquellen, die mit dem expandierbaren
Bereich direkt oder indirekt über
die oben beschriebenen Expansions-Abhängigkeiten verbunden sind.
Der Bereich kann auch „negativ" expandieren.
- • A6:
Bei Expansionsmodus fitToMinimum wird die Expansion beendet, wenn
andernfalls Formelreferenzen in leere Bereiche referenzieren würden. Nicht
berücksichtigt
werden bei dieser Abbruchprüfung
Zellreferenzen im Entwurfssheet, die leere Zellen adressieren, die
sich „nach" einem expansionsfähigen Bereich
befinden (also in einer leeren Zeile, die einem solchen Bereich
folgt). Ebenso werden solche Referenzen nicht berücksichtigt,
die explizit auf Belegung abfragen. Bei Expansionsmodus fitToMaximum
sind Referenzen in leere Zellen kein Abbruchkriterium.
- • Referenzen
auf expandierte Bereiche werden expandiert, wenn sie im Entwurfssheet
mindestens zwei Zeilen umfassen und die Adresse der unteren rechten
Ecke des Bereiches die letzte Zeile eines expansionsfähigen Bereiches
referenziert. Das gilt allerdings nicht, wenn die Formel zu einem
Formelbereich gehört,
bei der diese Bedingung nur in einer von mehreren Zeilen des Bereiches
zutrifft. Aus dieser Situation geht ja hervor, dass ein mehrzeiliger
Bereich adressiert wird, dessen Lage sich aber von Zelle zu Zelle
im Formelbereich „verschiebt". Überdeckt
die Bereichsreferenz im Entwurf (direkt oder indirekt) mehrere Datenbereiche
von NT-Quellen und gelten die genannten Voraussetzungen für mehrere
dieser Bereiche, richtet sich die Expansion bei „fitToMinimum" nach dem kleinsten,
bei „fitToMaximum" nach dem größten dieser Bereiche.
- • Bereiche
von Inserts, Updates und Deletes haben eine Besonderheit: expandiert
werden auch Zellen mit Konstanten, sofern sie in allen, jedoch mindestens
2 Zeilen des Entwurfsheets der gleichen Spalte des Selectbereiches
(Bereich, der unter den Spaltenheadern unmittelbar folgt) den gleichen
Wert haben.
-
Ein
Beispiel ist in 6 gezeigt und wird im folgenden
erläutert:
Mit
dem NT-Bereich (NT_Select liest aus der Datenbank) unter den Headerzellen
B8 und B10 würden
- • D9:D10
wachsen (Formelbereich gleicher Struktur, 2 Zeilen, gleiche Größe wie T-Select-Entwurfsbereich, relativer
Zeilenbezug in den NT-Select-Entwurfsbereich)
- • E9:E10
aus dem gleichen Grund wachsen
- • F9:F10
nicht wachsen, weil die Formelstruktur in diesem Bereich nicht einheitlich
ist
- • G9:G10
nicht wachsen, weil der Bezug in den NT-Select-Entwurfsbereich bezüglich der Zeile absolut ist
- • H9:H10
nicht wachsen, weil keine Zelle in den NT-Select-Entwurfsbereich referenziert.
- • I1:I2
wachsen (s. D9:D10 und Transitivität der Expandierbarkeit)
- • J1:J2
nicht wachsen, weil dem Bereich nicht-leere Zellen (J9) folgen
- • K1
nicht wachsen, weil der Formelbereich nur eine Zeile umfasst
- • L1:L3
nicht wachsen, weil der Bereich nicht die Größe des NT-Select-Entwurfbereiches
hat.
- • M9:M10
nicht wachsen, weil dies kein Formelbereich gleicher Struktur ist
(relative Bezüge
auf Zeilen/Spalten müssen
für jede
Zelle eines Formelbereiches zum gleichen Abstand von der referenzierten
Zelle/Zeile/Spalte führen)
-
Der
Bereich E9:E10 würde
expandiert werden, weil er vom expansionsfähigen Bereich D9:D10 referenziert
wird.
-
-
Bereichsreferenzen
würden
in
- • D2
wachsen, wie die letzte Zeile des NT-Select-Entwurfsbereiches als unterer Rand des
Bereichs definiert ist
- • D3
wachsen, weil der Bezug auf die letzte Zeile des NT-Select-Entwurfbereiches
auch absolut sein kann
- • In
D9:D10 wachsen (s. D2), überdies
würde der
Formelbereich expandiert werden
- • In
E2:E3 nicht wachsen, weil zwar in E2 die Voraussetzungen wie bei
D2 gegeben wären,
die Zelle jedoch zu einem Formelbereich gleicher Struktur gehört, bei
dem die Bedingungen für
die Bereichsexpansion nur in dieser einen Zelle erfüllt sind.
Der Formelbereich wird expandiert.
-
Zerlegung des einzelnen
Berechnungsvorgangs von Excelsheets in Takte, die jeweils bestimmte „Zustände" (z.B. Wechsel der
Datenkonstellationen der Datenquellen) berücksichtigen
-
Prinzip:
-
Die
Berechnung von Worksheets in Takten, von denen unterschiedliche
Zellmengen betroffen sind:
- o Berechnung aller
Zellen (Grundtakt)
- o Anschliessend: Berechnung nur von Zellen mit Formeln, die
bestimmte Gruppen von Worksheetzuständen mit bestimmten Funktionen
abfragen (zustandssensible Formeln).
-
Es
sind mehrere Takte für
unterschiedliche Zustandsdimensionen denkbar (z.B. ein Takt für „Gruppenwechsel
von Daten in Datenquellen steht bevor" und einen für „Ende des Programmablaufs
steht bevor").
-
Erläuterungen:
-
Mit
der Taktung wird ein „Kurzfristgedächtnis" möglich: man
kann sich auf Ergebnisse eines vorausgegangenen Taktes beziehen,
ohne die Zellen dadurch automatisch neu zu berechnen. Oder anders
formuliert: In einem Takt kann man sich in ausgewählten Zellen
auf Zellen des vorigen Taktes beziehen, ohne sie durch die Referenz
automatisch neu zu berechnen.
-
Das
folgende Beispiel beschreibt eine Datenquelle (Datenbereich B2:C2),
in die sequentiell die Umsätze
von Vertretern (nach Vertreter sortiert) eingelesen werden, jeweils
eine Zeile. In D2 wird ein Zähler
implementiert, der durch „this" die eigene Zelle
referenziert (Zelle mit Gedächtnis)
und auf diese Weise hochzählt. In
D3 wird der Umsatzdurchschnitt Schritt für Schritt gerechnet. Das Ergebnis
kommt in die Datensenke D2:F2, die geschrieben wird, wenn F2 „wahr" ist.
-
Der
Vertreter 4711 hat zwei Umsätze.
In 7 ist die Berechnung nach Einlesen des ersten
Satzes (50000 Umsatz) dargestellt, in Bild 8 die Berechnung nach
Einlesen des zweiten und letzten Satzes von Vertreter 4711. Die
Werte der Zellen nach der Berechnung stehen jeweils in eckigen Klammern
([]), die im jeweiligen Takt überhaupt
berechneten Zellen werden rot dargestellt.
-
Der
beispielhaft eingeführte
Befehl „changes" hat die Syntax „changes(<Zelladresse>;<tu dies>;<tu das>)". Steht ein Gruppenwechsel in <Zelladresse> bevor, wird im Takt „Gruppenwechsel" <tu dies> ausgeführt, <tu das> wird im Grundtakt (im Beispiel: Takt
1) ausgeführt,
nie im Gruppenwechsel-Takt.
-
Technischer Nutzen:
-
Der
Nutzen ergibt sich in Zusammenhängen,
in denen Spreadsheet-Technik in zyklisch arbeitenden Anwendungen
eingesetzt werden. Definiert man ein Verarbeitungsschema mit Datenquellen
und Datensenken, ergibt sich rasch die Notwendigkeit, Gruppenwechsel
erkennen und darauf angemessen reagieren zu können. Das dargestellte Prinzip
des „Kurzzeitgedächtnisses" ist eine Möglichkeit,
diesen Wechsel von Datenkonstellationen zu behandeln.
-
Zellorientierte
Funktionalitäten
mit Gedächtnis
-
Prinzip:
-
Eine
Spreadsheet-Zelle hat die Fähigkeit,
auf den letzten von ihr selbst berechneten Wert zuzugreifen, ebenso
auf jeden ihrer berechneten Werte bis zurück zur letzten Initialisierung
der Zelle oder Programmbeginn.
-
Erläuterungen:
-
Klassische
Spreadsheets haben keine Erinnerung an vorhergehende Berechnungen.
Die Transaktionszyklen machen es jedoch sinnvoll, auch Zellfunktionen
bzw. Zell-Datentypen einzuführen,
durch die der alte Zustand (Wert)/Zustände nicht vergessen wird. Die
Mechanismen können
z.B. sein:
- • Durch
unmittelbare Selbstreferenz der Zelle in ihrer Zellformel wird implizit
festgelegt, dass diese Zelle ihren Wert nach dem Ende einer Berechnung
beibehält
und in der nächsten
Berechnung auf ihm aufsetzen kann. Referenz dieser Zellen in den
Formeln anderer Zellen führt – wie üblich – zur Ausführung der
Formel mit der Selbstreferenz in diesem Berechnungszyklus, die Selbstreferenz
bezieht sich jedoch auf den alten Wert der Zelle als Ergebnis der
vorangegangenen Berechnungen.
Indirekte Selbstreferenz in Spreadsheets
ist in manchen Spreadsheetprogrammen möglich, um Rechnungen innerhalb
eines Workbooks zu erlauben, die Iterationen verlangen. Damit ist
auch eine spezielle Form des Gedächtnisses
verbunden: in eine der rekursiv verbundenen Zellen wird zunächste ein
Wert eingetragen, mit dem nicht-rekursiv eine Rechnung durchgeführt wird.
Wird die Zelle, die diesen Startwert enthält mit einer Formel überschrieben,
wird die rekursive Berechnung durchgeführt und dabei der Startwert
verwendet, der gar nicht mehr in der Zelle steht.
Dies ist
allerdings ein ganz anderer als der zuvor beschriebene Mechanismus
des allgemeinen Gedächtnisses:
um einen Algorithmus vollständig
zu beschreiben (Rechenregeln plus Startwert), wird in diesem speziellen
Fall das Gedächtnis
an eine andere Zellstruktur bewahrt. Das hier vorgestellte Verfahren
erlaubt jedoch explizit die Referenz „historischer" Werte in einem Algorithmus,
beruht also nicht auf der Fähigkeit der
Entwicklungsumgebung des Spreadsheets, aus zwei Algorithmenentwürfen auf
die Absicht des Autors zu schliessen.
- • Durch
eine Variante der gezielten, unmittelbaren Referenz der eigenen
Zelle wird in der Zelle die Historie aller Werte gespeichert und
damit verfügbar.
- • Durch
eine weitere Variante der gezielten, unmittelbaren Referenz der
eigenen Zelle wird der Wert des jeweiligen Einzelzyklus mit einem „Schlüssel" (irgendeinem anderen
Wert) verknüpft,
gespeichert und unter diesem Schlüssel in diesem und folgenden
Zyklen der Verarbeitung verfügbar
gemacht.
-
Einige Beispiele:
-
=this+1
-
„this" referenziert die
Zelle selbst, die die Formel enthält. Im Beispiel wird durch
die Formel ein Transaktionszähler
implemetiert (vorausgesetzt, Datenzellen werden mit 0 initialisiert).
Mit der Technik können
z.B. Verdichtungen (Akkumulation) von Daten über mehr als eine Transaktion
hinweg erfolgen. Voraussetzung ist eine differenzierte Re-Initialisierung der
Zellen nach jeder Einzeltransaktion.
-
this(): Referenz auf den
Vektor der Zellwerte
-
=this(1)
-
In
diesem Fall wird nicht verdichtet, sondern ein Vektor aufgebaut,
der für
jede Transaktion einen Eintrag (hier: immer 1) enthält.
-
this(..,..): Referenz
auf die HashMap der Zellwerte
-
=this (Sheet1!a1; Sheet1!b5)
-
Auch
hier wird nicht verdichtet, sondern eine Hashmap erstellt, deren
Suchschlüssel
das erste, deren Wert das zweite Argument ist. Werte mit gleichen
Schlüssen
werden überschrieben.
-
Die
Verwendung, d.h. den Zugriff auf historische Werte kann man einfach
gestalten, indem die historischen Werte in einen temporären Zellbereich
(Range) umgewandelt werden und bestehenden Funktionen so übergeben
werden, z.B.
=summe(makeRange(sheet1!a1))
-
Der
Vektor a1 (sofern in Sheet1!a1 ein Vektor aufgebaut wurde) wird
der Funktion Summe als Zellbereich präsentiert. Ergebnis ist die
Summe seiner Zellwerte. makeRange könnte verschiedenen Anforderungen angepasst
werden (z.B. kann man sowohl an den Schlüsseln, als auch an den Werten
oder an beidem einer Hashmap interessiert sein).
-
Technischer Nutzen:
-
Durch
die zyklische Verwendung von Spreadsheets wird mit den gedächtnis-behafteten
Zellen die Kumulierung von Werten ermöglicht. Die Gesamthistorie
ist interessant, wenn nichtlineare Funktionen der Einzelwerte berechnet
werden sollen (z.B. die Varianz) oder lineare, die sich nicht inkrementell
berechnen lassen.
-
Beispiele
-
T-Quellen, NT-Quellen,
this, Status
-
Das
folgende Beispiel dokumentiert die Verkettung von Datenquellen (T-Quellen),
die Verwendung von NT-Quellen/Senken,
das Status-Konzept und den Einsatz von Zellen mit Gedächtnis.
-
-
-
Mit
dem T-Select 1 (Beispiel einer T-Datenquelle) werden Wertpapiernummern
gelesen (SQL-Selects sind hier nicht dargestellt), mit der weiteren,
verketteten T-Quelle T-Select
2 die zugehörigen
Kovarianzen mit anderen Wertpapieren (D8 und E8). In C12 wird der
Durchschnitt der Kovarianz (Zelle E8) Stück für Stück weitergerechnet. Dazu wird
ein Satzzähler
benötigt,
der in C11 gebildet wird und dadurch eine Zelle mit Gedächtnis ist.
Der unmittelbar bevorstehende Wechsel der Wertpapiernummer in B8
bewirkt:
- ñ Im
ersten Takt der Worksheetberechnung dieses Zyklusses passiert nichts,
d.h. alle Zellen werden beim letzten Satz des T-Selects 2 zum Wertpapier
4711 gerechnet, „changes(B8;...)" führt die
False-Klausel aus, d.h. den Ausdruck im 3. Parameter. changes bezieht
sich auf den logisch „wahren" Gruppenwechsel,
ist also nur in dem Gruppenwechsel-Takt „wahr".
- ñ Im
zweiten Schritt sind Gruppenwechsel, die beim nächsten Lesen auftreten, logisch „wahr". Im Beispiel wird
jetzt der Zähler
C11 auf 0 gesetzt, das Insert-Flag ist „TRUE", mit der Folge, das die Row E14:F14
nach diesem Aufruf der Gruppenwechsel-Zellen geschrieben wird. Wichtig:
o
Der Durchschnitt C12 wurde in diesem Schritt nicht neu berechnet,
das wäre
auch unerwünscht
und hätte zu
einer Division mit 0 geführt.
o
T_Insert 3 ist direkt mit T_Select 2 verknüpft, d.h. es wird nach jedem
Einlesen durch T_Select 2 und den nötigen Berechnungen der Formeln
des T_Insert 3-Datenbereiches geprüft, ob geschrieben werden kann (InsertFlag=true).
Das geschieht für alle
Takte der Berechnung. Würden
die Formeln sich noch nicht berechnen lassen, weil eine T-Quelle
in der Kette hinter der T-Senke steht, würde dies einen Generierfehler verursachen.
-
-
Im
vorliegenden Beispiel wird für
ausgewählte
Wertpapiere (T-Quelle: T-Select) ein Vergleich ihrer täglichen
Kursgewinne und Verluste der letzten maximal 220 Tage mit denen
eines festen Vergleichs-Wertpapiers (NT-Quelle NT-Select 2) durchgeführt. Tage,
an denen das selektierte Wertpapier (Kursdaten durch NT-Quelle NT-Select
1) um mindestens 1% stieg und gleichzeitig das Vergleichs-Wertpapier um mindestens
1% sank, werden mit Datum und Differenz des %-Gewinns protokolliert.
-
In
H11 wird – zur
Demonstration – die
Varianz des Kursgewinns/Verlusts des Vergleichswertpapiers berechnet,
in H12 die des selektierten Wertpapiers.
-
Die
Kurse des Wertpapiers 2 sind vom T-Select unabhängig und werden daher nur einmal
eingelesen.
-
Der
NT-Select 1 wird zum Ablaufzeitpunkt zuerst und nur einmal durchgeführt und
führt,
sofern er mehr als 4 Rows hat – also
größer ist,
als im Entwurfssheet -, zur Expansion des Worksheets.
-
Bei
der Expansionsvariante „fitToMinimum" erfolgt die Expansion
als Folge von NT-Selects derart, dass Zellreferenzen nie in leere
Datenbereiche dieser oder anderer NT-Selects zeigen können. Im
Falle „fitToMaximum" bestimmt der am
stärksten
expandierte NT-Select -Bereich (im Vergleich zur Entwurfsgroesse)
die Expansion der Zellbereiche.
-
Ist
beispielsweise die Anzahl der Rows von NT-Select 1 kleiner als die
von NT-Select 2 bedeutet das bei „fitToMinimum": sämtliche
Formelbereiche, die sich direkt oder indirekt auf den Bereich des
NT-Selects 1 beziehen, werden in der Länge dieses Bereiches expandiert
bzw. verkürzt.
Im Beispiel betrifft das die Bereiche E16:E19, H16:H19, D16:D19,
K16:K19, L16:L19. Der Bereich G16:G19 bezieht sich nur auf das Vergleichswertpapier
und hat dessen Länge.
-
Die
Bereichsreferenz in H12 (=Var(E16:E19)) wird auf die Länge des
Bereichs von NT-Select 1 erweitert, die von H11 auf die von NT-Select
2.
-
Datenquellen und Senken
durch aufgerufene/aufrufende Progamme
-
Subsystem
mit Gedächtnis
(statefull)
-
Wieder
geht es um die Berechnung der Kovarianz der Kursgewinne von Wertpapieren.
In diesem Fall soll das Workbook als Subsystem
- • ein Vergleichswertpapier
samt Kursdaten erhalten (NT-Quelle
ist das aufrufende Programm, im Worksheet implementiert durch „NT Call" in F14),
- • mit
einer Wertpapiernummer aufgerufen werden (T-Quelle wiederum das
aufrufende Programm, implementiert mit „T Call" in C9),
- • die
Kurse dazu lesen (T-Quelle ist eine Datenbank, implementiert mit
NT-Select 1 in C14),
- • die
Tage ermittlen und dem Aufrufer bereitstellen, an dem die Kurse
und Vergleichskurse bestimmten Kriterien genügen, Ergebnisbereich ist über I14 „programResponse" definiert (Senke)
-
Die
Aufrufabfolge könnte
in Java beispielsweise so aussehen (allerdings müssten dazu weitere Informationen
im Spreadsheet bereitgestellt werden, etwa Unterprogramm-Namen):
-
Subsystem ohne Gedächtnis (stateless)
-
Wird
das Subsystem "ohne
Gedächtnis" erzeugt, gibt es
nur eine einzige Methode, mit der es aufgerufen wird und über die
man im gleichen Aufruf das Ergebnis erhält. Deswegen ist nur ein einziges
mulipleProgramParm-Statement im Spreadsheet sinnvoll und möglich, ebenso
nur ein programResponse-Staternent.
-
-
Wiederum
das Beispiel mit dem Wertpapier-Vergleich. In diesem Fall werden
zwei Wertpapiernummern übergeben
und in zwei T- Selects
ihre Kurse eingelesen. Die Ergebnisse sind wiederum in dem Bereich des
programResponse.
-
Der
Ablauf wäre
in Java z.B. so:
Vergleich[] vgl = Wpcomp.vergleich (4711,4712);
-
Die
Klasse „Vergleich" würde vom
Generator erzeugt werden:
-
Slave-Betrieb
-
Die
Kommunikation mit den Subsystem erfolgt in diesem Fall über Userexits
(Callback-Funktionen). T-Call und NT-Call bedeuten in diesem Fall,
dass Subsystem-externe Programme aufgerufen werden, die einen (T-Call
= T-Quelle) oder auch mehrere Treffer (NT-Call = NT-Quelle) zurückliefern
können.
Anders als im Master-Fall können
Gruppenwechsel abgefragt werden, die Prüfung wird über den Userexit weitergereicht. programResponse-Anweisungen
können
genauso auf Userexits abgebildet werden.
-
Die
Integration in die Ablaufsteuerung entspricht vollständig der
Situation, in der die T-Calls durch T-Selects, NT-Calls durch T-Selects
und programResponses durch DB-Inserts ersetzt sind.
-
Gemischter Betrieb
-
Das
ist ein Master-Betrieb, bei dem einzelne T-/NT-Calls oder programResponses
im slave-Verfahren generiert werden.
-
Glossar
-
Basismethoden
-
Methoden,
die in Zellformeln eines Spreadsheets aufgerufen werden können. Sie
sind Bestandteil des Spreadsheet-Programmes.
Beispiel: die Methode MAX(a;b), die den grössten ihrer Parameterwerte
als Ergebnis liefert.
-
Entwurfs-Sheet
-
Da
sich die Bereichsgrößen von
Sheets durch Expansion verändern
können,
wird das Sheet, in dem der Programmierer seine Logik beschreibt,
als Entwurfs-Sheet bezeichnet, diese Form der Programmierung als
Worksheet-by-Example.
-
Formel (= Zellformel in
Spreadsheets)
-
Programmbefehl,
der – ausser
durch übliche
Klammerung in mathematischen Ausdrücken – keine explizite Angabe zur
Ausführungsreihenfolge
der Einzelschritte des Befehls enthält. Das schliesst die indirekte Beeinflussung
der Reihenfolge nicht aus, z.B. durch die Stellung der Argumente
eines logischen „oder": A oder B würde bei
A „wahr" die Prüfung von „B" nicht mehr verlangen.
Das Ergebnis ist bei derartigen kommutativen Ausdrücken aber
von der Reihenfolge unabhängig,
der Entwickler kann auch nicht sicher sein, dass der erwartete Effekt
(Verzicht auf Auswertung von „B") eintritt, da Details
der Formelausführung
von Spreadsheetprogrammen nicht unbedingt offengelegt werden.
-
Indirekte Adressierung
-
In
der Formel einer Zelle können
andere Zellen nicht nur über
die direkte Angabe einer Zeilen/Spaltennummer referenziert werden.
In Excel erlaubt z.B. die Funktion offset die folgende Adressierung:
=
OFFSET(A1,2·2;15)
-
In
der dargestellten Formel wird die Zelle E16 angesprochen, also die
Zelle, die 4 (=2·2)
Reihen unter A1 und 15 Spalten neben A1 liegt. Solche Adressierungen,
die die Berechnung eines Teilausdrucks einer Formel verlangen, heissen
hier indirekt.
-
Methode
-
Programmeinheit,
deren Ablauf von anderen Programmeinheiten angestossen werden kann,
die Daten beim Anstoss („Aufruf") vom „Aufrufer" erhält („Parameter") und Daten zurückliefern
kann. Beispiele: C-Funktion, Java-Methode.
-
NT-Quelle
-
Datenquelle,
die ihre gesamten Daten in einem Zug in ein Worksheet überträgt. Bei
Datenbanken wird das NT-Select, bei Programmen NT-Call genannt.
-
Prozedurale Programmiersprachen
-
Sprachen,
in denen der Programmentwickler festlegt, in welcher Reihenfolge
die einzelnen Befehle ausgeführt
werden sollen.
-
Reentrant-fähig
-
Eine
Methode ist reentrant-fähig,
wenn sie geschachtelt aufgerufen werden kann, d.h. wenn sie sich selbst
aufrufen kann oder wenn sie über
Methoden, die sie aufruft, aufgerufen wird, bevor sie beendet ist,
z.B. A ruft B auf ruft C auf ruft A auf.
-
Eine
Programmiersprache ist reentrantfähig, wenn Methoden dieser Sprache
prinzipiell reentrantfähig sind
-
Spreadsheet
-
Programmschema
für eine
Form der nichtprozeduralen Programmierung. Ein Blatt (Sheet) besteht
aus Zeilen und Spalten, wodurch es in Zellen zerlegt wird. In den
Zellen können
Werte (Daten, z.B. Zahlen und Strings) stehen, aber auch Formeln,
die sich wiederum auf Konstanten oder dem Ergebnis der Formeln anderer
Zellen beziehen können.
Der Programmierer beschreibt lediglich Formeln und Werte, die Reihenfolge
der Berechnung wird ohne sein Zutun aus den Abhängigkeiten der Formeln untereinander
ermittelt.
-
Spreadsheet-Programm
-
Programm,
das die in Spreadsheets dargestellte Logik unmittelbar ausführen kann.
Für das
Spreadsheet-Programm sind die Spreadsheet-Beschreibungen Daten,
die analysiert werden und deren darin beschriebenes Algorithmen
aufgrund der Analyse in der richtigen Reihenfolge ausgeführt werden.
Normalerweise sind bei Spreadsheet-Programmen Entwicklungs- und Ausführungskompontenten
in einer Umgebung zusammengefasst. Beispiele: Excel, Lotus-1-2-3
-
Strukturell gleiche Formelbereiche
-
Spreadsheetbereich
von Zellen mit gleichen Formeltexten – wenn man von Referenzen auf
andere Zellen absieht. Zellreferenzen definieren entweder direkt
eine Zeile und Spalte oder nennen den symbolischen Namen einer Zelle
oder eines Zellbereiches. Referenzen an gleicher Position in dem
Formeltext müssen
entweder konstant sein oder teilkonstant (d.h. bezüglich Spalte
oder Zeile konstant) und in den nicht-konstanten Teilen für alle Zellen des Bereiches
zum gleichen Zeilen- bzw. Spalten-Offset (= Abstand der betrachteten
zur referenzierten Zelle) führen.
-
-
A1
bezieht sich auf B1, A2 auf B2. Es ist jeweils die direkt rechts
benachbarte Zelle, der Zeilenoffset jeweils 0, der Spaltenoffset
1. A1:A2 ist also ein strukturell gleicher Formelbereich.
-
Werden
Zellen eines anderen Sheets referenziert (z.B. Sheet1!A1), gilt
die gleiche Definition wenn man berücksichtigt, dass die Spreadsheetreferenz
(hier also „Sheet1") immer gleich sein
muss. Mit Offset von der eigenen Zelle ist dann der Abstand (in
Anzahl Zellen) von der Zelle gemeint, die im anderen Sheet die gleichen
Koordinaten hat wie die hier betrachtete Zelle.
-
T-Quelle
-
Datenquelle,
die einen Verarbeitungsschritt steuert, indem sie ihre Daten in
logischen Teilmengen (bei Datenbank-Selects jeweils einen Treffer
der Treffermenge) an das Worksheet übergibt. Bei Datenbanken wird T-Select
verwendet, bei Programschnittstellen T-Call
-
Workbook
-
Sammlung
von Worksheets, die logisch miteinander verbunden sind und in einer
Datei abgespeichert werden. In den Formeln sind alle Zellen des
eigenen Workbooks referenzierbar. Die Berechnung erfolgt i.a. auf Ebene
des Workbooks, um die Gesamt-Konsistenz auf dieser Ebene zu sichern.
-
Worksheetbereich
-
„Rechteckiger" Ausschnitt eins
Speadsheets
-
Zellen
-
Orientiert
an der graphischen Darstellung in den Spreadsheet-Dialogprogrammen
sind Zellen die – über Zeilen-Spaltenadresse
adressierten – Grundelemente
eines Spreadsheets.