DE102004007638A1 - Verfahren zum Erzeugen von Quellcode in einer prozeduralen, reentrantfähigen Programmiersprache aus einer Spreadsheet-Darstellung - Google Patents

Verfahren zum Erzeugen von Quellcode in einer prozeduralen, reentrantfähigen Programmiersprache aus einer Spreadsheet-Darstellung Download PDF

Info

Publication number
DE102004007638A1
DE102004007638A1 DE102004007638A DE102004007638A DE102004007638A1 DE 102004007638 A1 DE102004007638 A1 DE 102004007638A1 DE 102004007638 A DE102004007638 A DE 102004007638A DE 102004007638 A DE102004007638 A DE 102004007638A DE 102004007638 A1 DE102004007638 A1 DE 102004007638A1
Authority
DE
Germany
Prior art keywords
cell
spreadsheet
data
der
cells
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
DE102004007638A
Other languages
English (en)
Inventor
Bruno Jäger
Matthias Rosenau
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xapio GmbH
Original Assignee
Xapio GmbH
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Xapio GmbH filed Critical Xapio GmbH
Priority to DE102004007638A priority Critical patent/DE102004007638A1/de
Priority to US11/057,430 priority patent/US8015481B2/en
Publication of DE102004007638A1 publication Critical patent/DE102004007638A1/de
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting
    • G06F40/177Editing, e.g. inserting or deleting of tables; using ruled lines
    • G06F40/18Editing, e.g. inserting or deleting of tables; using ruled lines of spreadsheets

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Die Erfindung betrifft ein Verfahren zum Erzeugen von Quellcode in einer prozeduralen, reentrantfähigen Programmiersprache aus einer Spreadsheet-Darstellung, wobei aus einer Darstellung von Algorithmen und/oder Daten in einem oder mehreren Spreadsheet (s) ein Quellcode derart erzeugt wird, daß Zellbereiche gleicher Formelstruktur auf eine oder mehrere Methoden der Programmiersprache abgebildet werden. Aus der Darstellung von Algorithmen und/oder Daten in einem Spreadsheet wird automatisch ein Programm in einer herkömmlichne Programmiersprache, wie Java, C, C++, derart erzeugt, daß Zellbereiche gleicher Formelstruktur auf eine oder mehrere Methoden oder Sprache abgebildet werden, die diese Zellen in einfacher oder doppelter Schleifenkonstruktion berechnen.

Description

  • 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:
    Figure 00080001
  • 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.
  • Ein weiteres Beispiel:
    Figure 00080002
  • 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)
      Figure 00140001
  • Der Bereich E9:E10 würde expandiert werden, weil er vom expansionsfähigen Bereich D9:D10 referenziert wird.
  • Figure 00150001
  • 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.
  • Figure 00200001
  • Figure 00210001
  • 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.
  • Zellexpansion
    Figure 00230001
  • 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)
    Figure 00250001
  • 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):
    Figure 00260001
  • 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.
  • Beispiel:
    Figure 00270001
  • 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:
    Figure 00280001
  • 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.
  • Beispiel:
    Figure 00310001
  • 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.

Claims (4)

  1. Verfahren zum Erzeugen von Quellcode in einer prozeduralen, reentrantfähigen Programmiersprache aus einer Spreadsheet-Darstellung, wobei aus einer Darstellung von Algorithmen und/oder Daten in einem oder mehreren Spreadsheet(s) ein Quellcode derart erzeugt wird, dass Zellbereiche gleicher Formelstruktur auf eine oder mehrere Methoden der Programmiersprache abgebildet werden.
  2. Verfahren gemäß Anspruch 1, wobei dann, wenn eine oder mehrere der gebildeten Methoden rekursiv abhängig ist/sind, für diese die Berechnungsreihenfolge dynamisch ermittelt wird, indem für jede Zelle der betroffenen Formelbereiche gespeichert wird, ob sie bereits in einem Durchlauf berechnet wurde.
  3. Verfahren gemäß Anspruch 1 oder 2, wobei dann, wenn rekursive Abhängigkeiten einer oder mehrerer der gebildeten Methoden statisch nicht erkennbar sind, eine oder mehrere der fogenden Maßnahmen ergriffen wird: Treffen einer plausiblen Annahme über die Methoden-Berechnungsreihenfolge; Erzeugen einer Warnungsmeldung; Anfordern einer Eingabe einer Berechnungsreihenfolge; dynamisches Ermitteln einer Berechnungsreihenfolge.
  4. Computerprogrammprodukt, welches in einen Computer geladen das Verfahren gemäß einem der Ansprüche 1 bis 3 auszuführen vermag.
DE102004007638A 2004-02-17 2004-02-17 Verfahren zum Erzeugen von Quellcode in einer prozeduralen, reentrantfähigen Programmiersprache aus einer Spreadsheet-Darstellung Withdrawn DE102004007638A1 (de)

Priority Applications (2)

Application Number Priority Date Filing Date Title
DE102004007638A DE102004007638A1 (de) 2004-02-17 2004-02-17 Verfahren zum Erzeugen von Quellcode in einer prozeduralen, reentrantfähigen Programmiersprache aus einer Spreadsheet-Darstellung
US11/057,430 US8015481B2 (en) 2004-02-17 2005-02-14 Method for generating source code in a procedural, re-entrant-compatible programming language using a spreadsheet representation

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102004007638A DE102004007638A1 (de) 2004-02-17 2004-02-17 Verfahren zum Erzeugen von Quellcode in einer prozeduralen, reentrantfähigen Programmiersprache aus einer Spreadsheet-Darstellung

Publications (1)

Publication Number Publication Date
DE102004007638A1 true DE102004007638A1 (de) 2005-09-01

Family

ID=34813449

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102004007638A Withdrawn DE102004007638A1 (de) 2004-02-17 2004-02-17 Verfahren zum Erzeugen von Quellcode in einer prozeduralen, reentrantfähigen Programmiersprache aus einer Spreadsheet-Darstellung

Country Status (2)

Country Link
US (1) US8015481B2 (de)
DE (1) DE102004007638A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3370163A1 (de) * 2017-03-02 2018-09-05 Palantir Technologies Inc. Automatische übersetzung von spreadsheets in programmcode

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7251776B2 (en) * 2001-07-13 2007-07-31 Netview Technologies, Inc. System and method for efficiently and flexibly utilizing spreadsheet information
US20040268226A1 (en) * 2003-06-26 2004-12-30 International Business Machines Corporation, Armonk, New York Facilitating the development of computer programs
US9501463B2 (en) * 2005-12-08 2016-11-22 Microsoft Technology Licensing, Llc Spreadsheet cell-based notifications
US20080046861A1 (en) * 2006-08-15 2008-02-21 Grieser Maria A Method and interface for creating a workbook to implement a business process
US20080243763A1 (en) * 2007-03-27 2008-10-02 International Business Machines Corporation System, method and program to provide data to another program
US9037959B2 (en) * 2008-09-30 2015-05-19 Apple Inc. Formula display and search in a spreadsheet
US8396776B2 (en) * 2009-02-05 2013-03-12 Oracle International Corporation Dynamic calculations in an employee compensation system
US8645911B2 (en) * 2009-04-20 2014-02-04 Exigen Properties, Inc. Systems, methods and machine readable mediums for defining and executing new commands in a spreadsheet software application
US8676808B2 (en) 2009-07-09 2014-03-18 Dillon Software Services, Llc Data store interface that facilitates distribution of application functionality across a multi-tier client-server architecture
US9075787B2 (en) * 2010-11-30 2015-07-07 Think-Cell Software Gmbh Defining a reusable spreadsheet-function by extracting the function from a complex calculation in a spreadsheet document
US9141393B2 (en) 2011-11-17 2015-09-22 EnterCalo, Inc. Business content authoring and distribution
US9075519B2 (en) * 2012-10-11 2015-07-07 Apple Inc. System and method for interacting with a displayed work space
US8856234B2 (en) * 2013-02-28 2014-10-07 Workiva Llc System and method for performing distributed asynchronous calculations in a networked environment
US20140359417A1 (en) * 2013-06-04 2014-12-04 Omer Bar-On Systems and methods for graphically modulating structured data
CN110263121B (zh) * 2019-05-07 2023-12-19 平安科技(深圳)有限公司 表格数据处理方法、装置、电子装置及计算机可读存储介质
US20230153518A1 (en) * 2021-11-17 2023-05-18 Adaptam Inc. Methods and systems for sorting spreadsheet cells with formulas

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4575813A (en) * 1983-02-23 1986-03-11 International Business Machines Corporation Automatically balancing and vertically justifying a plurality of text/graphics-columns
US6578027B2 (en) * 1996-08-20 2003-06-10 Business Objects, Sa Relational database access system using semantically dynamic objects
AU4783796A (en) * 1995-02-22 1996-09-11 Plougmann, Ole Graphical environment for managing and developing applications
US5857211A (en) * 1996-01-29 1999-01-05 Apple Computer, Inc. System for automatically detecting cyclical and recursive links between document components
US5987517A (en) * 1996-03-27 1999-11-16 Microsoft Corporation System having a library of protocol independent reentrant network interface functions for providing common calling interface for communication and application protocols
US6339772B1 (en) * 1999-07-06 2002-01-15 Compaq Computer Corporation System and method for performing database operations on a continuous stream of tuples
US6631497B1 (en) * 1999-07-19 2003-10-07 International Business Machines Corporation Binding data from data source to cells in a spreadsheet
US7117435B1 (en) * 2000-06-21 2006-10-03 Microsoft Corporation Spreadsheet fields in text
AUPQ836500A0 (en) * 2000-06-26 2000-07-20 Dstc Pty Ltd Parallel execution mechanism for spreadsheets
GB2364580A (en) * 2000-07-07 2002-01-30 Ibm Error detection mechanisms in spreadsheet packages
EP1204048A1 (de) * 2000-11-03 2002-05-08 Sun Microsystems, Inc. Verfahren und Vorrichtung zur Szenarien-Handhabung in einen Kalkulationsblatt
US6898760B2 (en) * 2001-01-05 2005-05-24 Microsoft Corporation Reporting status of external references in a spreadsheet without updating
US6983270B2 (en) * 2001-01-24 2006-01-03 Andreas Rippich Method and apparatus for displaying database search results
US7177855B2 (en) * 2001-06-20 2007-02-13 Oracle International Corporation Compile-time optimizations of queries with SQL spreadsheet
US7761403B2 (en) * 2001-06-20 2010-07-20 Oracle International Corporation Run-time optimizations of queries with SQL spreadsheet
EP1456786A2 (de) * 2001-08-09 2004-09-15 International Business Machines Corporation Tabellenkakulationsystem und -verfahren für den transfer des inhalts von eingabezellen zwischen skalierbaren schabloneninstanzen
US20040205524A1 (en) * 2001-08-15 2004-10-14 F1F9 Spreadsheet data processing system
US7467350B2 (en) * 2002-03-28 2008-12-16 International Business Machines Corporation Method in an electronic spreadsheet for copying and pasting displayed elements of a range of cells
KR100465111B1 (ko) * 2002-09-11 2005-01-05 삼성전자주식회사 분할 기반 고차원 유사 조인 방법
AU2003900913A0 (en) * 2003-02-28 2003-03-13 Xemplex Pty Ltd Graphically defining a formula within a spreadsheet program
US20040181748A1 (en) * 2003-03-10 2004-09-16 International Business Machines Corporation Thin client framework deployment of spreadsheet applications in a web browser based environment
US9448860B2 (en) * 2003-03-21 2016-09-20 Oracle America, Inc. Method and architecture for providing data-change alerts to external applications via a push service
US8782508B2 (en) * 2003-04-18 2014-07-15 International Business Machines Corporation Manipulating labelled data for data entry in management applications
ATE345533T1 (de) * 2003-04-18 2006-12-15 Ibm System und verfahren in einer datentabelle um rekursive, skalierbare schabloneninstanzen herzustellen
US7512614B2 (en) * 2003-06-12 2009-03-31 International Business Machines Corporation System and method for data ETL in a data warehouse environment
US7882427B2 (en) * 2003-07-24 2011-02-01 Balenz Software, Inc. System and method for managing a spreadsheet
US7617443B2 (en) * 2003-08-04 2009-11-10 At&T Intellectual Property I, L.P. Flexible multiple spreadsheet data consolidation system
US7233956B2 (en) * 2003-08-12 2007-06-19 International Business Machines Corporation Method and apparatus for data migration between databases
US7930626B2 (en) * 2003-10-31 2011-04-19 Hewlett-Packard Development Company L.P. Determining a location for placing data in a spreadsheet based on a location of the data source
US7146378B2 (en) * 2003-11-10 2006-12-05 Bellsouth Intellectual Property Corporation Methods, systems and computer program products for segmented presentation of service order status information
US7707486B2 (en) * 2004-08-06 2010-04-27 The Board Of Trustees Of The Leland Stanford Junior University Logical spreadsheets
US7530077B2 (en) * 2004-10-07 2009-05-05 International Business Machines Corporation Dynamic update of changing data in user application via mapping to broker topic
US9047266B2 (en) * 2004-10-07 2015-06-02 International Business Machines Corporation Methods, systems and computer program products for processing cells in a spreadsheet
US20060107196A1 (en) * 2004-11-12 2006-05-18 Microsoft Corporation Method for expanding and collapsing data cells in a spreadsheet report
US8621340B2 (en) * 2004-12-20 2013-12-31 Microsoft Corporation Block properties and calculated columns in a spreadsheet application

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3370163A1 (de) * 2017-03-02 2018-09-05 Palantir Technologies Inc. Automatische übersetzung von spreadsheets in programmcode
US10180934B2 (en) 2017-03-02 2019-01-15 Palantir Technologies Inc. Automatic translation of spreadsheets into scripts
US10762291B2 (en) 2017-03-02 2020-09-01 Palantir Technologies Inc. Automatic translation of spreadsheets into scripts
US11200373B2 (en) 2017-03-02 2021-12-14 Palantir Technologies Inc. Automatic translation of spreadsheets into scripts

Also Published As

Publication number Publication date
US20050188352A1 (en) 2005-08-25
US8015481B2 (en) 2011-09-06

Similar Documents

Publication Publication Date Title
DE102004007638A1 (de) Verfahren zum Erzeugen von Quellcode in einer prozeduralen, reentrantfähigen Programmiersprache aus einer Spreadsheet-Darstellung
DE69117331T2 (de) Elektronischer Tabellenkalkulator
DE60133343T2 (de) Verfahren und System in einem elektronischen Kalkulationsblatt für die Handhabung von benutzerdefinierten Optionen in einer Ausschneiden-Kopieren-Einfügen-Funktion
DE60111376T2 (de) System und verfahren zur dokumentverarbeitung
EP1311989B1 (de) Verfahren zur automatischen recherche
EP1176482B1 (de) Verfahren und Computerprogramm zum Herstellen einer Regelung oder Steuerung
DE60130475T2 (de) Durchführung von kalkulationen eines tabellenkalkulationstyps in einem datenbanksystem
DE69609516T2 (de) Verfahren zur verwaltung dynamischer relationen zwischen objekten in dynamisch objektorientierten programmiersprachen
DE69129328T2 (de) Ikonobjektschnittstellesystem und -verfahren
DE10003015A1 (de) Die Erzeugung von Ereignis-Bedingungs-Aktions-Regeln aus Prozessmodellen
DE112010000947T5 (de) Verfahren zur völlig modifizierbaren Framework-Datenverteilung im Data-Warehouse unter Berücksichtigung der vorläufigen etymologischen Separation der genannten Daten
WO2010124853A2 (de) Verfahren zur erzeugung mindestens einer anwendungsbeschreibung
CH658329A5 (de) Verfahren zur steuerung des daten-zugriffes in einer datenbank und apparat zu seiner durchfuehrung.
DE10128883A1 (de) Verfahren und System für die Verteilung von Anwendungsdaten auf verteilte Datenbanken mit verschiedenen Formaten
WO2007137309A1 (de) Verfahren zum steuern eines relationalen datenbanksystems
DE10356399A1 (de) Datenverarbeitungssystem
DE4313958A1 (de) Einrichtung und verfahren zum steuern der darstellung einer vorlage
DE69526165T2 (de) Verfahren und Einrichtung für das Aufrufen von Objekten mit Schnittstellenvererbung
DE602004003230T2 (de) System und Verfahren in einer Datentabelle zur Erzeugung von rekursiven skalierbaren Vorlageninstanzen
EP2601594A1 (de) Verfahren und vorrichtung zur automatischen verarbeitung von daten in einem zellen-format
DE10103845B4 (de) Rechnersystem
DE69925108T2 (de) Ableitung einer objektklasse durch vererbung, instanzierung oder klonierung
EP1285315B1 (de) Informationsverarbeitungssystem und verfahren zu dessen betrieb
DE69925808T2 (de) Verfahren zur steuerung einer ausführbaren funktion durch für unterschiedliche software spezifische befehle
DE112011100951T5 (de) Hoch entwickelte funktionale Verhaltensweisen in einem Datenbankverwaltungssystem

Legal Events

Date Code Title Description
8110 Request for examination paragraph 44
R012 Request for examination validly filed

Effective date: 20110207

R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee