DE2312193A1 - Uebersetzer und quellencode-erzeuger fuer eine problemorientierte sprache fuer rechenanlagen - Google Patents
Uebersetzer und quellencode-erzeuger fuer eine problemorientierte sprache fuer rechenanlagenInfo
- Publication number
- DE2312193A1 DE2312193A1 DE19732312193 DE2312193A DE2312193A1 DE 2312193 A1 DE2312193 A1 DE 2312193A1 DE 19732312193 DE19732312193 DE 19732312193 DE 2312193 A DE2312193 A DE 2312193A DE 2312193 A1 DE2312193 A1 DE 2312193A1
- Authority
- DE
- Germany
- Prior art keywords
- code
- language
- computer
- input
- instructions
- 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.)
- Ceased
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Executing Machine-Instructions (AREA)
Description
Aktenzeichen: Neuanmeldung
datum: 2. März 1973
datum: 2. März 1973
eine Gesellschaft nach den Gesetzen des Staates Michigan, Second Avenue at Burroughs, Detroit,
Michigan 48232, Vereinigte Staaten von Amerika.
Übersetzer und Quellencode-Erzeuger für eine problemorientierte Sprache für Rechenanlagen.
Die Erfindung beschäftigt sich mit einem Verfahren zur Erzeugung von digitalen Rechenbefehlen für die Lösung
eines in Form von problemorientiert geschriebenen Daten in eine Datenverarbeitungsanlage eingegebenen Problems.
Die Verwendungsmöglichkeit von Rechenanlagen als Werkzeug zum Lösen von Problemen 1st bislang noch nicht in
vollem Umfang ausgenutzt worden. Einer der Hauptgründe, warum Rechner bisher nicht so wirkungsvoll eingesetzt wurden, wie es theoretisch ihren Möglichkeiten
entspräche, liegt darin, daß der Benutzer, der ein Problem lösen wollte, erst über eine Reihe von beruflichen Ausbildungsstufen, z.B. als Systeatprogrammierer,
Zugang zu den Rechner und zu seiner Benutzung für .die Problemlösung erhielt. Dieses Inter-
HZ/gs
309840/0825
face-Problem beruht weitgehend auf der Kompliziertheit
des Rechenverfahrens und auf den Schwierigkeiten, die auch bei der Verwendung der hochentwickelten
Programmiersprachen, wie z.B. COBOL und FORTRAN auftraten. ·
In jedem Falle besteht ein wesentliches Erfordernis in der F ähigkeit, das Problem in eindeutiger und genauer
Sprache zu formulieren. Tatsächlich bildet daher die Entwicklung der Schreibweise für die Formulierung
eines Problems einen Teil des Verfahrens zur Problemlösung. Jeder Problembereich oder jede Klasse von Problemen
besitzt ein besonderes Bezeichnungssystem; z.B. benutzt ein Ingenieur bei der Darstellung eines
Wärmeleitungsproblems ein Bezeichnungssystem, das für die' Thermody namik eigentümlich ist. Diese Schreibweise
unterscheidet sich vollkommen von dem Bezeichnungssystem eines Arztes, der das Befinden eines Patienten
diagnostiziert und die Symptome einer Krankheit beschreibt. Es ist daher offensichtlich, daß das
Vermögen, ein sachgemäßes und bekanntes Bezeichnungssystem zu benutzen, von großer Bedeutung für die Lösung
des Problems ist· Leider wirken die Strenge und die manchmal seltsame und unbekannte Schreibweise einer
Compilersprache leicht als Erschwerung bei der Formulierung eines Problems. Soll daher der Rechner ein bequemes
Hilfsmittel für die Lösung von Problemen werden, so muß das Bezeichnungssystem in natürlicher Weise
und mit möglichst wenigen künstlichen Zwangsbedingungen aus dem individuellen Denkprozeß hervorgehen.
Ein weiteres wichtiges Merkmal ist das iterative Vorgehen beim Aufsuchen von Problemlösungen. In den meisten
Fällen formuliert der Benutzer eine Auegangssituation
in bekannten Ausdrücken und legt bestimmte sachdienliche
309840/0825
Parameter dieser Ausgangslage fest. Nach Prüfung der Ergebnisse der ersten Problemlösung kann der Benutzer
sich dafür entscheiden, die Formulierung des Problems zu erweitern oder die Ausgangsparameter zu modifizieren,
um verschiedene Änderungen abzuschätzen. Eine Reihe von Vorteilen sprechen für die Verwendung eines Rechners
in diesem Bereich, unter anderem die Geschwindigkeit, mit der man die Ergebnisse erhalten kann und die Möglichkeit,
eine größere Anzahl von Abänderungen unter verschiedenen Bedingungen abzuschätzen.
Bekanntlich lassen sich die meisten Probleme in große Klassen einteilen, in denen die Formulierung der Probleme
in einer besonderen Schreibweise oder einer spezialisierten Sprache möglich ist. Die Kennzeichen
des Verfahrens zur Problemlösung deuten also darauf hin, daß eine vom Benutzer bestimmbare Schreibweise,
d.h. eine -ein« problemorientierte Sprache, (POL= Problem Orient ated Language^ die erste Voraussetzung
für den Vorgang der Problemlösung ist. In der Vergangenheit verlangte die Erzeugung einer problemorientierten
Sprache (POL) eine mühseliges Verfahren, wobei der mit dem Problem Beschäftigte, z.B. ein Ingenieur, Wissenschaf
tier. .oder Geschäftsmann, und ein Systemspezialist
oder Programmierer in gemeinsamer Anstrengung zunächst die zu verwendende POL bestimmen mußten und dann die
ermüdende Aufgabe hatten, eine Verwirklichung dieser POL in einer Compiler- oder Assembler-Sprache zu schreiben.
Der nötige Arbeitsaufwand wuchs gewöhnlich exponentiell mit der wachsenden Breite des Problems an, und es
ergaben sich allzu oft ziemlich begrenzte und nicht flexible problemorientierte Sprachen.
Angesichts dieser Probleme wurde die vorliegende Erfindung entwickelt, um den Vorgang der Schaffung einer
309840/0825
am Benutzer orientierten, für den Rechner verwendbaren
Sprache so weit wie möglich zu automatisieren, sowie
um nach Möglichkeit die Verwendung von ausgebildeten Programmieren für Datenverarbeitungsanlagen zu vermeiden.
Es ist hervorzuheben, daß das erfindungsgemäße Verfahren ohne Bezug auf eine besondere Gestaltung eines
ÖigitaIi-Rechners entwickelt wurde, und daß keine bestimmte
Programmiersprache vorausgesetzt wird. Es ist daher für den Fachmann selbstverständlich, daß die Verwirklichung
des erfindungsgemäßen Verfahrens nicht en einen besonderen Rechnertyp oder an eine besondere Programmiersprache
gebunden ist.
Die vorliegende Erfindung soll ein Verfahren schaffen, dae sich zur Verwendung in einem Digital-Allzweckrechner
für die Erzeugung ÜRäfChisr-^ Rechenbefehle eignet,
die in einem Digital-AHzweckrechner ^ie Verarbeitung
eines in einer von dem Benutzer angegebenen Sprache aufgezeichneten Problems bewirken. Ferner soll die Erfindung
ein Verfahren zur Analysierung der Grammatik und der Syntax einer problemorientieren Sprache schaffen·
Weiterhin soll die Erfindung ein verallgemeinertes Verfahren zur Erzeugung eines ^^^^.JRechner-Quellencodes
in einer beliebigen Compiler-Sprache liefern»
Diese und weitere Merkmale der Erfindung werden nachfolgend in Form eines Verfahrens oder eines Vorganges
beschrieben, der in einem ij&Jyij^ifciia^Allzweckrechner verwirklicht
werden kann.
Der erste Schritt des Arbeitsvorgangs besteht in der Ausstattung des Generators für den Sprachenübersetzer
mit der Grammatik der problsmorientierten Sprache« Diese
Grammatik wird als Hilfsmittel für die Lösung der allgemeinen Klasse von Problemen ausgebildet, an welcher der
309840/0825
Benutzer interessiert ist. Die Grammatik der problemorientierten
Sprache (POL) besteht aus der Syntax, welche die logische Struktur der Sprache darstellt,
und aus den semantischen Funktionen, welche die tatsächlichen von der Sprache ausgeführten Prozeduren
oder Funktionen darstellen. Der Generator für den Übersetzer der problemorientierten Sprache (POL)
verwandelt die Sytax der problemorientierten Sprache
in eine Grammatiktafel, die eine Netzwerkstruktur-Darstellung
der Sprachstruktur mit der Bezeichnung der passenden semantischen Funktionen ist. Wenn die
Sprachenstruktur keine logischen Fehler enthält, wandelt der ■ ' Pol- generator die Grammatiktafel in einen
Befehlscode um. Nach der Einführung des Befehlscodes in die POL-Grammatikdatei erzeugt der POL-Übersetzer-Generator
einen problemorientierten Übersetzer in Form eines Digital-Rechner-Quellencodes.
An dieser Stelle ist ein Übersetzer für problemorientierte Sprache entstanden, welcher Daten, die in dieser
problemorientierten Sprache aufgezeichnet sind, aufnehmen und in Verbindung mit dem in der Grammatikdatei
gespeicherten Befehlscode in Parameter,<J#fin±tioia*-Anweisungen
umwandeln kann, die als Eingangssignale für den Quellencode-Generator dienen. Der nächste Schritt
des ;_ __L Verfahrens besteht in der Belieferung der
Skelett l-*u· Mischdateien mit einer Reihe von Prozeßsteuer-Anweisungen
und Quellensprachen-Routinen durch die Dateilade-Routinen. Diese Prozeßsteuer-Anweisungen
haben die Funktion, den Quellencode—Generator beim Aufbau
einzelner Quellencode-Anweisungen zu steuern· Vor dem Aufbau dieser einzelnen Quellencode-Befehle, bildet
der Quellencode-Generator eine Γιιι inn 11 ijj^flh|tiuüä,'i
Tafel in dem Speicher des Rechners aus den Parameter-Anweisungen, die von dea POL-Übersetzer (Übersetzer für
309840/0825
problemorientierte Sprache) erzeugt worden sind. Der Quellencode-Generator, der die in der. Skeletel-Datei
(Skeletal File) gespeicherteren Prozeßsteueranweisungen verarbeitet, wählt die geeigneten Quellensprach-Prozeduren
aus, die in der Misch-Datei gespeichert worden sind und anzeigen, wann diese Quellensprachprozeduren
in' den Quellensprach-Code einzuschließen sind. Die meisten der Quellensprach-Routinen, die für
die tatsächlichen Arbeitsgänge und Berechnungen für die Lösung der Problemklasse benötigt werden, für welche
die problemorientierte Sprache (POL) bestimmt ist, werden in der Misch-Datei gespeichert. Zusätzlich zu
den in der Misch-Datei gespeicherten Quellensprach-Routinen können bestimmte Prozeßsteuer-Anweisungen
eingeführt werden, die in die Quellensprach-Routinen eingefügt werden können, um diese Quellensprach-Routinen
enger auf die Parameter des speziellen zu lösenden Problems des Benutzers abzustimmen. Die Misch-Datei
kann daher sowohl Quellensprach-Routinen als Prozeßsteuer-Anweisungen enthalten.
Nachdem der POL-Übersetzer erzeugt worden ist und die
Prozeßsteueranweisungen und die Quellencode-Routinen dem Quellencode-Generator zugeführt worden sind, ist
das gesamte System bereit für die Erzeugung eines Di— gital-Rechner-Quellen-Code in Abhängigkeit von in Form
der problemorientierten Sprache (POL) eingegebenen Daten. An dieser Stelle des Arbeitsverfahrens führt
der Benutzer dem POL-Übersetzer Problemdaten zu; diese Daten erscheinen in der Form der problemorientierten
Sprache. Unter Benutzung des in der Grammatik-Datei enthaltenen Befehls-Code wandelt der problemorientierte
Übersetzer diese Daten in Parameter-BefiiriLfclöfct-Anweisungen
um. Der Quellencode-Generator nimmt automatisch diese von dem POL-Übersetzer erzeugten Parameterbestim-
309840/0825
mungs-Anweisungen auf und bildet eine Parametertafel
in dem Rechnerspeicher. An dieser Stelle des ■"■-" "."":■ ■·.<■
Verfahrens gelangt der Code-Generator unter die Steuerung
der Prozeßsteuer-Anweisungen in der Skftl*fe«l#ftten, und
unter Benutzung der Parametertafeln und der Quellensprach-Routinen in der Misch-Datei erzeugt das System
einen Quellensprach-Code, der sich für die Qewinnung
der exakten Lösung der eingegebenen Problemdaten eignet.
Der auf diese Weise erzeugte Quellencode kann einem Compiler zugeführt und dann auf einem !Digital- Rechner
ausgeführt werden und liefert eine spezifische Antwort auf das Problem, zu welchem der Benutzer Daten eingegeben
hat. Zusätzlich kann als Nebenprodukt des Verfahrens die Aufstellung des Quellencode als Programmdokumentation
betrachtet werden.
Die nachfolgende ausführliche Beschreibung der Erfindung stützt sich auf die beigefügten Zeichnungen. Es zeigen:
Fig. 1 ein Flußdiagramm, das die gesamte Logik und die Programmbestandteile der Erfindung darstellt;
Fig. 2 ein Flußdiagramm mit der Darstellung der gesamten
Logik des Generators für den Übersetzer der problemorientierten Sprache (Problem orientated language translator
generator);
Fig. 3,4 und 5 Flußdiagramme mit der Darstellung
der Logik von Unterprogrammen in dem Generator für den Übersetzer der problemorientierten
Sprache;
Fig. 6 eine Möglichkeit für die Darstellung der Gramraatikdatei in einem Rechnerspeicher;
Fig. 7 ein Flußdiagramm mit der Darstellung der
gesamten Logik des Übersetzers der problemorientierten Sprache (Problem orientated
language translator);
Fig. 8 ein Flußdiagramm mit der Darstellung der ge-
309840/0825
\ samten Logik des verallgemeinerten Quellencode-Generators
(GENOL);
Fig. 9,10,11,12,13,14 und 15 Beispiele von GENOL-Steueranweisungen
und der programmatischen Logik, die sie ingangsetzen;
Fig. 16 und 17 ein repräsentatives Beispiel einer Reihe von GENOL-=Steueranweisungen und den
von diesen Anweisungen erzeugten Zeichen und
Fig. 18 ein schematisches Blockschaltbild einer
Ausführungsform der vorliegenden Erfindung.
Das in Fig. 1 gezeigte Flußdiagramm zeigt die gesamte
Logik dieses Verfahrens zur Erzeugung eines Digital-Rechner-Quellencode
für die Lösung eines angegebenen Problems bei Benutzung in einem Digital-Allzweckrechner.
Die logischen Blöcke in dem äußeren Block 46 bezeichnen die einzelnen Schritte des Verfahrens, während die Symbole
außerhalb des äußeren Blockes 46 den Eingang 12 und die Ausgänge 10,40,42,44 des Verfahrens angeben.
Der erste Schritt des in Fig. 1 dargestellten Verfahrens
besteht in der Schaffung eines Übersetzers 20 für problemorientierte Sprache (POL-Übersetzer) so daß die
Problemdaten 12 in das System in einer dem Benutzer der Anlage bekannten Form eingegeben werden können.
Dies wird durch die Verwendung des POL-Übersetzer-Generators (POLGEN) 18 erreicht. An dieser Stelle entwickelt
bei einer praktischen Anwendung des Systems ein Systemanalysist eine problemorientierte Sprache,
in welcher die spezifische Problemart oder Problemklasse des Benutzers formuliert wird« Die Syntax der POL und
die semantischen Funktionen der POL werden in den POL-Generator (POLGEN) 18 gegeben. Der POLGEN erzeugt den
POL-Übersetzer und eine Grammatikdatei 22, welche
in Codeform die Grundstruktmr der Sprache enthält. Zusätzlich
enthält die Grammatikdatei eine Reihe von
3 0 9 8 A 0 / ■ 0 8 2 B
semantischen Funktionen oder Prozeduren, die ebenfalls in den POLGEN 18 gegeben wurden. Diese semantischen
Funktionen in der Form von Quellencode-Segmenten haben die Funktion, die POL-Eingabedaten in GENOL-Parameter
24 umzuwandeln. Zusätzlich kann POLGEN 18 eine Liste oder Dokumentation 10 der Grammatik erzeugen, welche
graphisch die Struktur der Grammatik darstellt und sämtliche logischen Fehler in der Sprache anzeigt, so
daß eine Korrektur mö glich ist. Wenn eine zufriedenstellende Grammatikdarstellung 10 erzeugt worden ist,
so ist der POL—Übersetzer 20 für die Annahme der Pro— blemdaten 12 in Form der problemorientierten Sprache
bereit.
Die Problemdaten werden, gewöhnlich in Kartenformat, in den POL-Übersetzer 20 eingegeben und der POL-Übersetzer
20 erzeugt eine Reihe von Quellencode-Generator Parametern 24 (GENOL-Parametern), wobei der in der
Grammatikdatei 22 enthaltene POL-SpracherwCqde benutzt
wird.
Bevor der endgültige Quellencode 40 in diesem Verfahren durch den Code-Generator 30 erzeugt werden kann, ist es
nötig, eine Reihe von GENOL—Steuer—Anweisungen und Quel—
lensprach-Routinen 28 in die Skeletal-Datei 38 (Skeletal
File) und die Misch-Datei 34 (Merge File) einzuführen. Die Quellensprach-Routinen 28 können z.B. aus linearen
Programmierungsalgorithmen, aus verschiednen Tabellier- oder Buchhaltungs—Prozeduren oder aus statistischen Prozessen
bestehen. Diese verschiedenen Quellensprach-Routinen 28 werden durch eine Dateilade-Routine 36
in die Mischdatei 34 geladen, so daß sie ausgewählt und in den resultierenden Quellencode 40 placiert werden
können, falls sie in dem endgültigen Programm 40 erforderlich sind. Die Steueranweisungen für den Code-Generator
30 werden so aufgezeichnet, daß der Qnellen-
309840/0825
code-Generator (GENOL 30) die von dem POL-Übersetzer
20 in Abhängigkeit von den tatsächlichen Problemdaten erzeugten GENOL-Parameter 24 interpretiert, daß der
Quellencode-Generator 30 weiter die richtigen Quellensprach- Routinen auswählt und sie in richtiger Ordnung
in dem resultierenden Quellencode 40 anordnet. Das Dateilade-Programm 36 dient zum Laden der GENOL-Steuer-Anweisungen
in die Skeletal—Datei 38 und der Quellensprach-Routinen
in die Misch-Datei. Diese GENOL-Steueranweisungen werden in der Reihenfolge ihrer Benutzung
geladen, denn sie werden von dem Code-Generator 30 nacheinander gelesen. Die GENOL—Steuer—Anweisungen 26
können ebenfalls in die Misch-Datei 34 zusammen mit den Quellensprach-Routinen 28 eingegeben werden als
Hilfsmittel für die Einführung von Werten aus der Parametertafel 32 direkt in den Quellencode.
Nachdem sämtliche GENOL-Steuer-Anweisungen 26 und Quel—
len-Sprach-Routinen 28 in die Skeletal-Datei 38 und in
die Mischdatei 34 eingegeben wordenrsind und nachdem
die GENOL-Parameter von dem POL-Übersetzer 20 erzeugt worden sind, erzeugt der Code-Generator 30 einen Satz Parameter-Tafeln
32 i» Rechnerspeicher aus den GENOL-Parametern 24.
Wenn die Parametertafeln 32 fertig sind, steht der Code-Generator 30 für die Erzeugung des Endproduktes
des erfindungsgemäßen Verfahrens, des_Sdgi€el*Rechner-Quellencodes
bereit. Die GENOL-Steueranweisungen, die in
aufeinanderfolgender Reihe ' in der Skeletal-Datei
38 gespeichert sind, dienen zum Betrieb des Code-Generators 30. Während das GENOL-Programm durch die GENOL-Steuer-Anweisungen
fortschreitet, führt es eine Anzahl von Funktionen aus, darunter den Aufbau von einzelnen
Quellencode—Anweisungen, die Auswahl von Gruppen
309840/0 8 25
von Quellencode-Anweisungen aus der Mischdatei 34 sowie die Einfügung von verschiedenen Parametern
aus dem Parametertafeln 32 in die Quellencode-Anweisungen. Am Ende des Vorganges ist ein vollständiges
Quellencode-Programm 40 erzeugt worden, das spezifisch auf das Auffinden einer Lösung für die bei 12 eingegebenen
Problemdaten abgestimmt ist. Dieses Quellen— code-Programm kann dann bei 42 einem Compiler zugeführt
und von einem Rechner ausgeführt werden, so daß sich bei 44 eine Antwort auf das gestellte Problem ergibt.
POLGEN 18 ist der Generator für den problemorientierten
Sprachübersetzer. Wie oben bei der Beschreibung des gesamten logischen Programm-Flusses des Verfahrens
dargestellt wurde, ist ein POLGEN in dieser Erfindung nötig, damit eine hochflexible benutzerorientierte oder
problemorientierte Sprache (POL) relativ leicht konstruiert werden kann. Die gesamte Logik von POLGEN in dieser
Ausführungsform der Erfindung ist in Fig. 2 dargestellt,
während verschiedene Teile des POLGEN in den Fig. 3,4,
5,6,7 und 8 im einzelnen dargestellt sind und in Verbindung mit einem Beispiel des Befehlscode, den POLGEN sowohl
verwendet als erzeugt, anhand von Tabelle 1 diskutiert werden. {
Der erste logische Block 60 in Fig. 2 wird für das Ingangsetzen des POLGEN-Systems benötigt. Der erste Schritt
bei diesem Einleitungsvorgang it if) Fig« 2 wird bei
in Fig. 3 gezeigt und besteht in der öffnung der Grammatikdatei für POLGEN. Der zweite Schritt des Einleitungsvorgangs für das POLGEN-System in Fig· 3 besteht in dem
Einlesen der Abtasterttf *ln ί««MÄertibl«)Ö*i, «2* A»ie
Abtast tafeln dienen zur Bestimmung der Größen, nach denen <ter POLGEN-Äbtä»**·*' ■ <
:: ^m zu suchen hat. Diese Größen sind für gewöhnlich als Zeichen oder als
309840/0825
Ketten von Zeichen definiert. Der letzte Schritt des ! Einleitungsvorgangs 84 besteht in dem Einlesen der j
ersten Seite der POLGEN-Grammatik aus der POLGEN-Grammatikdatei
in den Speicher des Rechners«,
Als nächstes in dieser Ausführungsform der Erfindung
gemäß Fig. 2 eine Routine 62 in dem POLGEN nötig, um den Zufluß vom Benutzer herzustellen. Diese Routine
für die Einschaltung des Benutzers ist in Fig. 4 dargestellte Der erste Schritt der Routine besteht in der ·
Öffnung oder Erzeugung einer neuen Grammatikdatei oder
Ausgabedatei für das POLGEN-System. Zusätzlich muß eine
Markentafeldatei im Speicher des Rechners eröffnet werden, welche die Marken und Klassifizierungen der Eingabe-Daten
oder -Größen enthält. Dazu gehören die Größen, welche die POLdes Benutzers bilden, z.B. Wörter, spezielle
Zeichen, Zahlen usw. Diese Tafeldateien besitzen Ähnlichkeit mit den AbtaetftT.afeln 82 in Fig. 3. Weiterhin
ist die Eröffnung einer Druckdatei (Print File) erforderlich, so daß die Art der Träger für die Ausgabedaten
für den Benutzer bestimmt werden kann.
Für das POLGEN-System ist ferner sine Ablese-Routine
64 (Read Line Routine) gemäß Pig. 2 erforderlich, damit der Übersetzer für problemorientierte Sprache für Eingabedaten
bereit sein kann. Ein Beispiel einer Ablese-Routine ist in Fig. 5 dargestellt, 4elbei 102 eine Karte
abgelesen und bei 104 das Kartenbild gedruckt wird. Wenn
die letzte Karte gelesen ist, wird ein Schalter bei 106 gestellt, bevor die Routine den Ausgang zu dem Übersetzer
108 erreicht, wie es nach der Ablesung jeder Karte geschieht. Dieser Schalter informiert den Übersetzer darüber,
ob noch weitere Karten für die Ablesung übrig geblieben sind.
30 98 40/08 25
Die restlichen logischen Blöcke in Fig. 2, der Interpreter 68, ^s^AfctaeterprogjHMHtr 66 und die Routinen
70, werden insgesamt als der Übersetzer betzeichnet.
An dieser Stelle ist zu betonen, daß die in Fig. 2 für das POLGEN-System gezeigte Logik im wesentlichen
mit der Logik für den POL-Sprach-Übersetzer übereinstimmt. D.h., der POL-Sprach-Übersetzer besteht aus
denselben logischen Blöcken 68,66,70 in Fig. 2 wie der POLGEN-Übersetzer.
Eins der Grundelemente des POLGEN-Übersetzers ist die Abfrage-Vorrichtung, die in Fig. 2 mit 66 und in Fig.8
mit 142 bezeichnet ist. Die hauptsächliche Funktion eines Abtasterprograneas (Scanner) ist das Erkennen
verschiedener Größen, wie sie in die Datenverarbeitungsanlage eingegeben werden, und das Übertragen dieser Größen
in einer solchen Form, daß sie für den Übersetzer erkennbar sind. Ein typisches Äbtast«rpjrogramm ist für Karteneingabe
geschrieben und für die Erkennung von auf einer Karte gelochten Zeichenketten und für die Klassifizierung
dieser Größen oder Zeichenketten programmiert. Diese Klassifizierungen können alphabetische Ketten, numerische
Ketten, spezielle Zeichen, erlaubte Kombinationen und Folgen von Zeichen enthalten. FehlerabtMtterprogranme
: sind so eingerichtet, daß sie bestimmte Größen in
Abhängigkeit von ihrer Zusammensetzung akzeptieren oder zurückweisen; z.B. kann die Vermischung von Buchst
aben-und Zahlen-Zeichen in derselben Kette oder der falsche Gebrauch eines besonderen Zeichens,wie etwa eines
Kommas ein Zurückweisungsgrund sein· Xn der vorliegenden Ausführungsform der Erfindung gibt '<"iSmm "Willi! Hai μι Uljiiliü'
jede Größe in vier verschiedenen Formen wieder: Die Größe selbst, die eine exakt4 Kopie des Elementes ist,
wie es von jjjfsi*btimt*»yl uyifrlM uiyg auf genommen wurde;
der Wert der Größe, wobei bei einer Buchstabeneingabe nur der Buchstabe selbst erscheint und bei einer nuweri-
3098A0/0825
BAD
sehen Eingabe alle numerischen Verbindungszeichen, wie
z.B· Kommas oder Perioden weggelassen sind; der ganzzahlige Größenwert im Falle einer Zahl; und der Bruchwert
der Größe im Falle einer Zahl. Zusätzlich gibt das Abta.sterprograiB» .. auch die Dimensionen der Größe
wieder; dazu gehört, wo die Größe beginnt und wo sie endet sowie die Länge der Große, so daß Art und Umfang
der Größe vollständig bestimmt sind. Die Speicherung der Größen in· sieben verschiedenen Formen macht es
möglich, jede Größe rasch und wirkungsvoll mit jeder Art von grammatischer Angabe zu vergleichen.
Das Schlüsselelement in dem POLGEN-System und dem POL-Übersetzer ist die Grammatik-Datei 22 in Fig. 1. Das
POLGEN-System verwendet eine besonders bezeichnete Grammatikdatei für die Erzeugung einer Grammatikdatei
für den POL-Übersetzer 20 in Fig. 1. Das Format der in
dieser Ausführungsform der Erfindung verwendeten Grammatikdatei
ist in Fig. 6 dargestellt, wo eine Grammatik-Datei 110 in einer Reihe von Sätzen in dem Rechnerspeicher
gespeichert ist. Der erste Satz 112 enthält die verschiedene, für die Grammatik-Datei benötigte Bezugsinformation, z.B. Identifikation, Länge usw. Jeder der
folgenden Sätze 114-116 besteht aus 224 Unterabschnitten (Subnode), wobei jede SetendBÄfcJK—>^ -'eine Zeile des
Befehlscode (OP-CODE) darstellt. Jeder jJRj&Hode
120 in Fig. 6 entspricht daher jeder Zeile des Befehls-Code in der Grammatikdatei. Bei dieser Struktur der
Datei enthält >äer Satz 118,2241^Juteeji*«*· <;-."_ wobei
jede;Subiiödef;^";: --" zu einer Zeile des Befehlscode
äquivalent ist. Jed^' 5ιο»ηοιφϊ=_2^M *:%. 120 in Fig. 6 besteht
aus vier Bytes, und jedes Byte ist in zwei ZEJVärn
oder ;_ Stellen eingeteilt« Durch die Verwendung dieses
Befehls-Code wird die Struktur oder die Syntak der Sprache in der Grammatikdatei dargestellt. In Tafel 1 ist ein Bei~
309840/0825
BAD ORiQiMAL
spiel einer Sprachdefinition durch Verwendung eines Befehls-Code dargestellt, und die Art der Information,
die in jedejr Stitpiipue "'.-'' gespeichert ist, wird durch
die Regeln angegeben, die in Tafel 2 aufgezeichnet sind; derartige Tafeln bilden einen Teil der Offenbarung und
sind unmittelbar vor den Patentansprüchen zusammengestellt.
Die Arbeitsweise des Befehls-Code und die Darstellung der Struktur der Sprache durch den Befehls-Code wird
nachstehend erläutert. Die Syntax der Sprache ist als Netzwerkstruktur dargestellt, wobei jede Node · einen
Verzweigungspunkt anzeigt. Der Übersetzer sucht bei jeder "Bode "iKn^tänhach einer Anzahl verschiedener Größen.
Die erste in Tabelle I ίIa)aufgeführte Größe "DECLARATION"
wäre die erste Größe, nach der der Übersetzer suchen müßte, da dies die erste Größe unter de« ersten .*
«ode in der Grammetik-Datel l*t. Aas der Tabelle IX(ZXa)
ist zu ersehen, daß das erste Bit des Befehls-Code, IA, anzeigt, daß es sich um eine Testangabe handelt,
oder daß der Übersetzer zu bestimmen;"versucht, ob die
Größe in der Grammatikdatei, Tafel 2, mit der von dem Abtaster (Scanner) weitergegebenen Größe übereinstimmt.
XiIM Code-Ziffin? ' ; s?- besitzt den Wert Null, was
an dieser Stelle anzeigt, daß bei positivem Ausfall.', des Tests und bei Übereinstimmung eine Durchgangsbedingung (fall through condition) eintritt, was bedeutet,
daß die nächste von dem Abtaster weitergegebene Größe mit der nächsten Größe "Terminal" unter {<iiitjier
Dckie ~ * "Ti^T verglichen wird. Das zweite Byte des
Befehls-Code, die^ffffcriv^i^JfcB'^'zeigen die Mindestlänge
der zu vergleichenden Größe an, in diesem Fall die ersten vier Zeichen. Daher muß der Benutzer lediglich "DECL" auf seiner Eingabekarte setzen, damit ein
erfolgreicher Vergleich zustandekomnt. Einzelne Zei-
3098A0/0825
BAD
chen der Größe, die weitergegeben wird, werden mit den
Zeichen verglichen, die in den Ijiufc«*■:'-■?- LhIj.-■—
noden in den Zeilen 2,3 und 4 von Tebelle I<Ia} gespeichert
sind. In dem Beispiel der ersten Zeile in dem Befehlscode'. Tabelle KIa) zeigt das dritte Byte, die Ziffern 3Ä_.und
3B, die Maximallänge der zu prüfenden Größe an, in diesem
Fall 11 Zeichen. Das vierte Byte ist eine Zählung der Anzahl von Abschnitten, die das System vorwärts
überspringen müßte, um den Verzweigungsbefehl zu erreichen.
In diesem Falle hat das Byte 4 mit den Stellen 4A
und 4B den Wert 06, was anzeigt, daß der nächste Verzweigungsbefehl sich in der Zeile ,mit der Nummer 6 befindet.
Auf diese Weise wird die Struktur der Sprache in der Grammatik—Datei gespeichert.
Tabelle I(Ia) enthält ' ein Beispiel dafür, wie der Benutzer
seine Sprache für die Eingabe in das POLGEN-System konstruiert. Die Sprache ist im wesentlichen
eine Netzwerkstruktur mit einer Reihe von 'N©3en
welche die logischen Regeln oder die Syntax der Sprache bilden. Aus dem in Tabelle T(Ia)dargestellten Beispiel ist
ersichtlich, daß die ersten Wörter, die von dem System erwartet werden, die Wörter "DECLARATION", "TERMINAL",
"ABA", "EVENT" und »PERIOD" sind, da diese Wörter unter die an erster Stell· Aufgeführt« Nod« fallen. Beim
Erkennen eines dieser Wörter befiehlt die Grammatik-Darstellung (grammar graph) dem System, sich entweder
zu anderen Teilen der Grammatik-öarsteilung zu verzweigen
oder bestimmte Operationen auszuführen. T»l>ell· ΪΙΙ «teilt
in graphischer Form die Sprache dar, die für die #%BjfiiS(· ;
in den POLGEN benutzt wird. Die POLGEN-Grammatikdatei
enthält einen Befehls-Code für diese Sprachdarstellungj
309840/08 2 5
Des*«nSorm Ähnlichkeit mit dem Befehls-Code in Tabelle II
zeigt. Es ist daher die wesentliche Aufgabe des Übersetzers, wie in Fig. 8 gezeigt, in der Grammatik-Datei
22 des Benutzers in Fig. 1 einen Befehls-Code für die vom Benutzer angegebene problemorientierte Sprache
(POL) zu erzeugen. Dies erfolgt wiederum durch Verwendung der Grammatik, die in der POLGEN—Grammatik-Datei
gespeichert ist.
Der Übersetzer, der eine in Fig.2 gezeigte Kombination
aus dem Interpretierer 68, dem Abtaster 66 und den Routinen 70 darstellt, ist in Fig. 7 imeinzelnen gezeigt.
Der erste Schritt bei 134 ist die Erkundung, ob die erste Grammatikseite vorliegt. Ist dies nicht
der Fall, muß die erste Grammatikseite von einer Speicherplatte oder einem anderen Speicherträger bei 136 abgelesen
werden, und die erste Grammatik— Node wird bei 138 in den Rechnerspeicher geholt. An dieser
Stelle setzt die Funktion des Abtasters ein, und die Stellung des Abtaster-Zeigers wird bei 140 geprüft.
Wenn der Abtaster bei 142 keine Größe bei 144 lokalisieren kann, werden neue Karten bei 146 und 148 geteen,
bis eine Größe gefunden ist. Die Grammatik—Nod·
wird dann dekodiert, wie in Tebelle II,und «it der Größe
verglichen, die bei 150 zurückkommt. Wenn der Fehlersuch-Monitor
in Tätigkeit ist, werden ~ die Mode
und der Inhalt des Schlüsselbereichs bei 154 dargestellt und ausgedruckt, wie der Benutzer bei 156 angegeben hat*r
Dies ist eine der Funktionen, der Schreib-Zeilen-Routine
156. Die graphische Ausgabestelle wird in dem Flußdiagramm in Fig. 1 bei 10 gezeigt. Nachdem „dtÜ Gramma tile—
- Node ~ bei 150 auf Fehler geprüft worden ist, zeigt
der Befehls-Code an, ob eine Prozedur ausgeführt werden muß oder ob eine vom Benutzer gelieferte Funktion in den
Code eingefügt werden soll. Nachdem dies ausgeführt worden
309840/0825
ist,kehrt das Programm zu dem Block 138 zurück, wo die
nächste Grammatik- Mod· -.<
geholt, wird und eine neue Größe von dem Abtaster zurückkommt; auf diese Weise wiederholt
sich der Vorgang, bis das gesamte angegebene Material erschöpft ist.
In der beschriebenen Weise erzeugt das POLGEN-System die Grammatikdatei 22 in Fig. 1, welche die Struktur oder
die Syntax der vom Benutzer angegebenen problemorientierten Sprache darstellt. Weiterhin wird durch den Zusatz
von bestimmten Parametern und Angaben, z.B. Abtaster-Tafeln, zu dieser Syntax ein vollständiger Übersetzer
entwickelt. Der PQLGEN gelangt daher zu der Erzeugung des POL-Übersetzers bei 20 in Fig. 1. Die Grammatik-Datei,
welche der Übersetzer benutzt, ist bei 22 in Fig. 1 gezeigt. Im Endergebnis ist der POL-Übersetzer dafür geschaffen,
Eingangscodes in POL—Sprache zu interpretieren und als semantische Prozeduren Parameter zu erzeugen, die
sich·zur Eingabe in den Codegenerator bei 30 in Fig. 1
eignen.
Das andere Hauptprogramm oder die Programmtechnik, die bei diesem Verfahren zur Erzeugung eines Digital— Rechner-Quellencodes
erforderlich ist, ist der verallgemeinerte Code-Generator (GENOL). Dieser wird in Verbindung mit
dem POLGEN-Sprach-Übersetzer-Generator und dem POL-Übersetzer benutzt. Dieser verallgemeinerte Code-Generator
GENOL ist in Fig. 8 dargestellt. Der Einleitungsvorgang 182 in Fig. 8 umfaßt den Aufbau von Parameter?-Tafeln
32 in Fig.l, so daß die von dem POL-Übersetzer 20 in
Fig. 1 empfangene Information ein für die Eingabe in das ■
GENOL-Programm geeignete Format erlangt. Zusätzlich dienen zur Eingabe in GENOL die beiden in Fig« I gezeigten Dateien, die Skeletal-Datei 38 und die Mischdatei
34. Die Skeletal-Datei 38 enthält die Folge der
309840/08 25
GENOL-Steuer-Anweisungen, welche tatsächlich "#*n Generator,
d.h.GENOL, taM$jMBU -i..L In einer getrennten
Datei, der Mischdatei 34, werden die Quellen-Sprach— Routinen gespeichert, so daß sie in das Erzeugnis,
den Quellencode 40, in den richtigen Zeitpunkten und der geeigneten Folge eingefügt werden können. Diese
Einfügungen erfolgen unter der Steuerung der GENOL-Steueranweisungen in der Skeletal-Datei 38.
Die Logik des GENOL-Systems ist hauptsächlich in der Schleife 184 in Fig. 8 enthalten. Der erste Schritt
in der Schleife 184 in Fig.8 besteht in der Auswahl der geeigneten Eingabeeinrichtung 186 und in der
Ablesung des Datensatzes. Anfänglich wäre das der erste in der Skeletal—Datei 38 in Fig. 1 gespeicherte
Satz oder GENOL-Steuer-Anweisung. Wenn es sich um ein
GENOL-Steuer-Wort 188 in Fig. 8 handelt, was anfangs
der Fall wäre, so würde die GENOL-Logik sich zu dem Übersetzer 190 verzweigen. Der Übersetzer 190 arbeitet
in ähnlicher Weise wie der oben beschriebenen POL-Übersetzer.
Unter Verwendung der GENOL-Grammatikdatei 192 dekodiert der Übersetzer die GENQL-Steuer-Anweisung
und ruft bei 194 die geeignete semantische Funktion oder erzeugende Prozeduren. Diese erzeugenden Prozeduren
umfassen allgemein den Aufbau einer Quellensprach-Anweisung, die Einfügung von Parametern in eine
Quellensprach-Anweisung aus den bei 32 in Fig. 1 dargestellten Parametertafeln, und die Einfügung von einer
oder mehreren in der Mischdatei enthaltenen Quellensprach-Anweisungen.
Diese Vorgänge erfolgen bei 196 in Fig.8.
Das angeforderte, von dem GENOL-Übersetzer 192 in Fig.8
bestimmte Unterprogramm oder der Vorgang wird bei ausgeführt, und das Ergebnis wird in dem Zwischenspeicher
309840/0825
gespeichert. Der Zwischenspeicher ist ein Bereich in
dem Rechnerspeicher, der die 80 Zeichen eines Lochkartenbildes aufnimmt. Die durch den GENOL konstruierten
Quellensprach-Anweisungen besitzen das Quellenformat, ebenso wie die auf eine Karte,gelochten Quellensprach-Anweisungen.
Das GENOL-System prüft sodann bei 200 in Fig. 8, ob der laufende Satz vollständig ist. Wenn der
Quellensprach-Satz nicht vollständig ist, wird er in dem Zwischenspeicher zurückgehalten, und das GENOL-^
System verzweigt sich bis zu der Schleife A bei 184,
um die nächste GENOL-Steueranweisung bei 186 aus der Skeletal-Dabei zu lesen. Falls die Vollständigkeitsprüfung "bei 200 ergibt, daß ein vollständiger Satz
aufgezeichnet worden ist, schreibt das GENOL-System den vorangehenden Satz aus dem Zwischenspeicher in den
Quellensprach-Ausgabe-Datenträger 40 in Fig. 1 und bringt einen neuen Satz in den Zwischenspeicher.
Falls die Prüfung der Art des bei 188 in Fig. 8 aus der Skeletal-Datei zurückkehrenden Satz es ergibt,
daß es sich nicht um eine GENOL-Steueranweisung handelt, so wird angenommen, daß es sich um eine Quellencode-Anweisung
oder um ein Segment davon handelt, und der Satz wird direkt in den Zwischenspeicher 198 gegeben.
Da angenommen wird, daß der Satz vollständig ist, so wird der Inhalt direkt in den Ausgabedatenträger
202 ausgeschrieben. .
Der geschilderte Vorgang geht weiter, bis ein vollständiger
Durchgang durch die Skeletal-Datei erfolgt ist. An dieser Stelle ist bei 206 in Fig. 8 der ganze
Quellencode 40 in Fig. 1 vervollständigt und kann gemäß Fig. 1 einem Compiler in einem Rechner zugeführt
werden. .·.·
309840/0825
Für jede Klasse von Problemen, die nach dem erfindungsgemäßen
Verfahren gelöst werden soll, muß eine Folge von GENOL-Steueranweisungen erzeugt werden, welche die
erforderlichen Quellensprach-Anweisungen erzeugen, wobei diese GENOL-Steueranweisungen so ausgewählt werden, daß
die richtige Information aus den Parametertafeln 32 in Fig. 1 gewonnen wird. Durch Auswahl der richtigen Folge
der GENOL-Steueranweisungen kann ein D±«|it*I-Rechner~
code für die Problemlösung in jeder gewünschten Quellensprache erzeugt werden, z.B. in FORTRAN, COBOL, ALGOL
und in einer großen Auswahl anderer Assemblierersprachen. Zusätzlich kann das GENOL-Programm eine Anweisung vom
ZIP-Typ enthalten, die den Compilierer zum automatischen Compilieren des Quellencode in den Objektcode bei 42
in Fig. 1 und nach der Compilierung die Ausführung des Objektcodes veranlaßt, so daß der Benutzer sich nicht
mehr in den Vorgang bei der Berechnung der Lösung für eine besondere Folge von Problemdaten einschalten muß.
Die ZIP-Anweisung ist ein Bild eines Steuerbefehls in dem Betriebssystem (Master-Steuer-Programm) bei den
BURROUGHS-Datenverarbeitungssystemen B35OO,B4700,B6700,
wobei der Steuerbefehl den Rechner zur Compilierung des Quellencodes und nötigenfalls zur Ausführung des
Code veranlaßt.
Die verschiedenen Unterprogramme oder Vorgänge, die der GENOL-Übersetzer 190 in Fig. θ für die Konstruktion der
verschiedenen Quellensprach-Anweisungen abruft, sind in den Figuren 9,10,11,12,13,14 und 15 dargestellt· Die
Figuren 9-15 enthalten jeweils einen GENOL-Steuerbefehl
sowie die Art ihrer Formatbildung in der Skeletal-Datei
in Verbindung mit einem Flußdiagramm der von diesen QENOL-Steuerbefehl
verwendeten/"loejtki' ·*&**■ Itnv*n. Der GENOL-Übersetzer
190 in Fig·8 hat die Aufgabe, den GENOL-Steuerbefehl
zu erkennen und die passenden GENOL-Unter-
309840/0825
programme bei 194 in Pig. 8 abzurufen. Diese GENOL-Steueranweisungen
werden im allgemeinen mit drei Sternen ■(♦··) vor der Anweisung bezeichnet. Durch die Verwendung
dieser GENOL-Steuerbefehle werden die tatsächlichen
Quellensprach-Anweisungen konstruiert und die geeigneten Parameter in die Quellensprach-Anweisungen
eingefügt.
Der wichtigste der GENOL-Steuerbefehle, die BRING-Anweisung
("MOVE-statement), ist in'Fig. 9 dargestellt. Der
in Fig. 9 erläuterte Zweck der BRING-Anweisung besteht
in der Modifizierung der Quellensprach-Anweisungen durch die Übertragung von Werten in besondere Zeichenplatze in dem Quellencode-Ausgabedaten-Zwischenspeicher!
In derBRING-Anweisung 226 :in Fig. 9 bedeutet S(I) den Buchstaben oder den Wert, der in die Zeichenplätze
in dem Zwischenspeicher gebracht werden soll, und S(2) bedeutet dieKolönn«f in die der Buchstabe oder
der Wert S(I) eingefügt werden soll. Der erste Schritt
in dem Unterprogramm 212 in Fig. 9 ist das Auffinden der Länge von S(I) in Zeichenanzahl. Der zweite Schritt
besteht darin, festzustellen, ob die Steueranweisung ein "FOR" enthält. Wenn das "FOR" vorhanden ist, so
bestimmt der Wert S(3) die Länge oder die Anzahl der Zeichen, die in dem' Quellencode-Zwischenspeieher für
S(I)zuzuordnen sind. An dieser Stelle 222 wird geprüft,
ob die Länge von S(I) größer ist als die von S(3) angezeigte Länge. Wenn die Länge von S(I) größer
ist als S(3), so wird sie bei 224 in Fig.9 abgerundet,
und die abgerundete Form von S(I) wird in den zugeordneten Raum in dem Qüellencode-Ausgabedaten-Zwischenspeicher bei
218 in Fig. 9 gespeichert. Falls das "FOR" nicht benutzt ist, wird bei 216 eine LeerfepiouiMin dem Quellencode-Ausgabedaten-Zwischenspeicher
zugeordnet, die gleich der Länge von S(I) in Fig. 9 ist. Nachdem der Buchstabe
* In diesem Sinne kann die Bringe nweisussg aech als -«
Art Transportanweieung verstanden werden.
309840/0825
oder der Wert. S(I) in dem Quellencode-Ausgabe-Daten-Zwischenspeicher
aufgenommen ist, kehrt die Steuerung zu dem Haupt-GENOL-Programm fcei 218 zurück.
Der wahrscheinlich zweitwichtigste GENOL-Steuer-Befehl
ist die Ktisch-Anweisung (MERGE-stätement), die in Fig.
10 dargestellt ist. Die Misch-Anweisung hat die Punktion,
verschiedene Quellensprach-Routinen, die in die Misch-Datei
34 von Fig. 1 gebracht wurden und die bei 2 32 in Fig. 10 dargestellt sind, zu nehmen und diese Quellensprach-Routinen
zu dem endgültigen Erzeugnis oder dem Quellencode 40 in Fig. 1 zu mischen. In der Anweisung
selbst mit dem Bezugszeichen 254 in Fig. 10 bezeichnet, wiederum nach drei Sternchen, H(i) den Satz, in dem sich
die qewünschten Quellensprach-Anweisungen befinden. Der Aufdruck S(I) in dem Steuerbefehl 254 in Fig. 10 ist
der Name von oder die Kennzeichnung von der Misch-Datei selbst. Der erste Schritt des Mischvorganges besteht bei
236 in Fig. 10 in der Öffnung der Misch-Datei, die sich in einem mit Speicherplatten arbeitenden Rechnerspeicher
befinden kann. Nachdem die geeignete Datei, S(I), gefunden und aeöffnet worden ist, besteht der nächste Schritt
bei 2 38 in Fig. 10 in der Auffindung des richtigen Satzes H(i). Wenn der richtige Satz in der Mischdatei gefunden
worden ist, wird das erste Element in dem Satz gelesen. Jedes Element ist mindestens 80 Zeichen lang, so daß ein
qanzes Kartenbild einer Quellensprach-Anweisung in einem Element gespeichert werden kann. Da in der Mischdatei
auch GENOL-Steuer-Befehle gespeichert werden können,
muß das Element bei 244 in Fig. 10 geprüft werden, um festzustellen, ob es sich tatsächlich um eine GENOL-Steuer-Anweisung
handelt. Beim Vorliegen eines GENOL-Steuer-Befehls verzweigt das Unterprogramm sich bei
in Fig. 10 und führt den GENOL-Steuer-Befehl so durch wie der GENOL-Übersetzer bei 190 in Fig. 8. Falls das
309840/0825
Element kein GENOL-Steuer-Befehl ist, führt die Routine
bei 244 in Fig. 10 einfach die Quellencode-Segmente in den Zwischenspeicher ein. Dieser Vorgang wird wiederholt,
bis las letzte Element des Satzes bei 248 in Fig.
10 qelesen ist, wonach sich da,s Unterprogramm nach 250 in Fiq.10 verzweigt, wobei die Plattendatei geschlossen
wird und eine Rückkehr zu dem GENOL-Programm bei 196
in Fig. 8 erfolgt. Da es möglich ist, GENOL-Steuer-Be-.fehle in die Mischdatei einzuführen, und diese Befehle
während einer Mischoperation auszuführen, ist es möglich, Hischanweisungen zu vers'chachteln und Parameter zu modifizieren
oder in einzelne Quellensprach—Anweisungen einzufinden.
3 η Fi α. 11 ist ein weiterer wichtiger GENOL-Steuer-Befehl
dargestellt, der als Schleifen-Anweisung (LOOP-statement)
bezeichnet wird. Die Anweisung selbst ist mit dem,. Bezugs—
zeichen 292 in Fig. 11 wiederum mit drei vorangehenden
Sternchen dargestellt. Dieser Befehl hat den Zweck, fine Reihe von Anweisungen eine angegebene Anzahl von
Malen ausführen zu lassen. In der Schleifen-Anweisung
selbst bedeutet S(D ein Wort, dem verschiedene Werte beigelegt werden können und das anfangs auf den Wert
eins eingestellt ist. Falls S(2) ein arithmetischer Ausdruck ist, muß das Wort P(n) "TIMES" sein und bewirkt,
daß die Reihe von Anweisungen, die durch S(I) gekennzeichnet wird, S(2) Male durchgeführt wird. Im anderen
Falle ist das Wort S(2) "EACH" und das Wort P(n) ist indiziert; und der Wert von S(I) muß gleich einem seiner
indizierten Werte von P(n') erscheinen. Diese Wahl gestattet es, die Anzahl der durch S(I) bezeichneten Anweisungen
so viele Male durchzuführen, wie benachbarte Werte von P(n), beginnend mit dem Wert 1, vorhanden sind.
Die Logik ' dieser Subroutine beginnt bei 262 in Fig. 11, wo der Wert von S(I) auf 1 gestellt wird. Im
3098A0/0825
Im nächsten Schritt bei 264 wird das Wort S(2) geprüft, um festzustellen, ob es sich um das Wort
"EACH" r -irvielt; falls dies nicht der Fall ist, verzweigt
s.cri das Programm nach 266. An der Stelle
wird der Wert von S(I) mit, dem Wert des Wortes S(?)
verdienen, der einen numerischen Wert oder einen arithmetischen Ausdruck darstellt, um festzustellen,
ob S(I) größer ist als S(2). Wenn S(I) gleich oder größer ist als S(2), nimmt das Programm an, daß die
Anzahl der Anweisunnen in der Schleife (LOOP) die richtige Anzahl von Malen durchgeführt worden sind,
und verzweigt sich zu der END- Anweisung bei 282 und der Rückkehr zu dem GENOL—Programm' bei 2 90. Wenn
sncerprseits S(I) niedriger ist als S(2), verzweigt sich das Unterprogramm nach 272, wo die nächsten
GENOL-Befehle durchgeführt werden. Nach Durchführung
dieser Befehle prüft das Programm bei 270, ob die nächste Anweisung eine END-Anweisung ist, und wenn ja,
ob ihre ID (Identification) gleich dem Wort S(I) ist.
Falls dieser nächste Befehl keine END-Anweisung ist, oder die ID nicht mit der LOOP-Anweisung übereinstimmt,
wird der nächste GENOL-Befehl bei 272 durchgeführt.
Diese Folge von GENOL-Steuer-Befehlen wird durchgeführt,
bis eine gültige END-Anweisung gefunden ist. Wenn bei 270 eine gültige END-Anweisung gefunden wurde,
deren ID gleich S(I) ist, verzweigt das Unterprogramm sich nach 268, wo zu dem Wert von S(I) 1 addiert wird.
Wieder wird der Wert von S(I) mit dem Wert von S(2)
bei 266 verglichen, und wenn der Wert von S(I) immer noch unter dem von S(2) liegt, geht die beschriebene
Folge von Befehlen weiter, bis der Wert von S(I) gleich oder größer ist als S(2). Auf diese Weise wird die Folge
von Befehlen nach der LOOP-Anweisung so oft durchgeführt, wie der arithmetische Ausdruck S(2) angibt. Falls je-
309840/0825
doch die Prüfung an der Stelle 264 des Programms ergibt,,
daß S(2) aleich dem Wort "EACH" ist8 verzweigt sich das
Unterprogramm nach 276, wo festgestellt wird, ob der Wert des Wortes S(I) gleich η ist, dem Index des Wortes
P(n) in der LOOP-Anweisung. Wenn keine Übereinstimmung zwischen S(I) und dem Indexwert η eines der Wörter P(n)
festnesteilt werden kann, verzweigt sich das Programm
nach 278, wo der nächste GENOL-Steuer-Befehl durchgeführt wird. Nach Durchführung dieses Befehls verzweigt
sich das Programm nach 280, wo der nächste GENOL-Steuer-Befehl geprüft wird, um festzustellen, ob es sich um
eine END-Anweisung handelt, deren ID gleich S(I) ist. Wenn dies nicht der Fall ist, wird der nächste Befehl
bei 278 durchgeführt, bis bei 280 die END-Anweisung irit übereinstimmender ID gefunden ist. So werden tatsächlich
alle GENOL-Steuer-Befehle in der Schleife durchaeführt
und wenn die geeignete END-Anweisung gefunden ist, verzweigt das Programm sich nach 274, wo zu dem Wert
von S('l) eine 1 addiert wiord. Hier wird wieder der Wert
von S(I) mit dem Wert einer der indizierten Variablen P(n) verglichen. Wenn schließlich eine Übereinstimmung
festgestellt ist, veranlaßt das Unterprogramm die Verzweigung des Programms direkt zu der END—Anweisung, und
die Steuerung kehrt bei 290 zu dem GENOL-Programm zurück. Die Schleifen-Anweisung (LOÖP-statement) ist darum ein
besonders wichtiger GENOL-Steuer-Befehl, das sie die
recursive Ausführung einer Reihe von GENOL-Steuer-Befehlen
und gleichzeitige Änderungen in den Werten der verschiedenen Parameter gestattet. Es ist ferner wichtig, daß
für die geeignete Verwirklichung der Schleifen-Anweisung die GENOL-Steuer-Befehle in der Skeletal-Datei in einem
Speicher mit direktem Zugriff" (random access) gespeichert werden, z.B. ein Plattenspeicher oder Kernspeicher.
Auf diese Weise kann das GENOL^ Programm die Schleifen-Anweisungen
ausführen, indem der Plattenschlüssel oder die Speicheradresse der ersten Anweisung nach den» Schlei-
309340/0825
.27-
fenbefehl (command) gespeichert wird; so ist bei dem Auffinden cer entsprechenden END-Anweisung die Rückkehr
zu d«*n richtigen Platz oder der Speicherstelle
möglich. ■ .NOL-Steuer-Befehle, die sich in Dateien
mit sequen ti ellem Aufbau befinden, z.B. Karten oder
bänder, k.:-inen nur einmal ausgeführt werden, wobei
das recursive Merkmal der Schleifen-Anweisung verlorenaeht.
Sine weitere bedeutungsvolle und sehr wichtige GENOL-Anweisunq
ist die Dollar-Zeichen ($)-Anweisung, die
bei 306 in Fig. 12 dargestellt ist. Diese Anweisung soll einen Parameter festlegen und Parameterwerte anaeben.
Die Anweisung wird mit drei Sternchen, einem Dollar-Zeichen, dem Parameternamen P und einer Reihe
von Parameterindizes bezeichnet. Auf der rechten Seite des Gleichheitszeichens der Gleichung 306 stehen die
entsprechenden, durciiy getrennten Werte für die Parameter.
Diese Parameter können entweder Zahlen oder Buchstaben sein. Die Buchstaben werden von Anführungsstrichen
benrenzt, z.B.: ·♦·$ PARANAME="PEANUT BUTTER". So oft
das GENCL-Proqramm auf ein Dollarzeichen trifft, werden
cie entsprechenden Werte für den Parameter in die Parametertafeln 32 in Fig. 1 placiert. Zusätzlich ist hier
zu bemerken, daß die Parameter-Anweisungen, die in Fig. 12 gezeigt werden, dasselbe Format besitzen, das die
Ausgabedaten des POLGEN-Übersetzers bei 24 in Fig. erzeugen. Mit anderen Worten, der POLGEN-Übersetzer
hat die Hauptfunktion, die Problemdaten 12 in Fig. in qeeignefce GENOL-Parameter 24 in Fig. 1 umzusetzen.
Eine Alternative zur Erzeugung der GENOL-Parameter-Anweisunqen
in Dollarzeichenform durch den POLGEN-Übersetzer besteht darin, den POLGEN-Übersetzer die Benutzerdaten
1? direkt in die Parametertafeln 32 in Fig. 1 umsetzen zu lassen·
309840/0825
In Fig. 13 ist der Verzweigungsbefehl IF dargestellt. Die Syntax der Anweisung 322 in Fig. 13 gibt an, in
welcher Weise die GENOL-Steuer-Anweisung gebraucht werden k->nn. S(I) bei 322 ist eine Beziehungs-Anweisung
(relation Statement), deren Richtigkeit durch das Unterprogramm bei 312 geprüft wird. Wenn' die Beziehung S(I)
richtig ist, führt das Unterprogramm die Befehle C(I) bei 316 durch. Wenn jedoch S(I) nicht richtig ist, verzweiat
sich das Unterprogramm zu einem Entscheidungspunkt 314, um festzustellen, ob auf C(I) ein "ELSE"
folgt.>Falls auf C(I) ein "ELSE" folgt, wird die Anweisung
C(?) durchgeführt und die Steuerung kehrt zu dem GENOL-I rogramm bei 320 in Fig. 13 zurück. Falls
kein "ELSE" vorhanden ist, wenn S(I) bei 312 falsch ist, kehrt diö Steuerung sofort bei 320 zu dem GENOL-Programm
zurück. Die Aufgabe der IF-Anweisung besteht"darin, die
Ausführung oder Nichtausführung einer Folge von GENOL-Steueranweisungen
oder Befehlen zu veranlassen, je nach Ausfall der Relationsprüfung S(I).
In vielen Anwendungen ist es nötig, eine Folge von GENOL-Steuer-Befehlen
während der Erzeugung eines spezifischen Quellencodes auszulöschen. Das ist die Aufgabe der in
Fig. 14 gezeigten Auslösch-Anweisung (DELETE -Statement). Die Syntax der Auslösch-Anweisung ergibt- sich aus 346 in
Fig. 14 und enthält grundsätzlich zwei Wahlmöglichkeiten.. Die erste dieser Wahlmöglichkeiten betrifft die Verwendung
einer arithmetischen Anweisung in S(I) für die Angabe
der Anzahl von Zeilen oder Steueranweisungen, die ausgelassen werden. Bei dieser Wahl ist "LINES" das
Wort S(2)., um es von der zweiten Wahlmöglichkeit zu unterscheiden.
Die zweite Wahl wird dann dadurch angezeigt, daß "UNTIL" das Wort S(I) ist, gefolgt von S(2), das in
diesem Fall die Kennmarke (label ID) eines Markenbefehls (LABEL-command) wäre. Dadurch könnten alle dazwischenlie-
309840/0825
e Bis zum
genden GENOL-Anweisungen oder Steuerbefehle Bis Zusammentreffen mit der in S(2) angegebenen Marke
übergangen werden. Dieses Unterprogramm beginnt bei 332 in FLa. 14, wo S(I) geprüft wird, um festzustellen,
ob sein ^rt"UNTIL" ist. Wenn dies der Fall ist, holt
das Unterprogramm bei 340 die nächste Zeile oder die GENOL-Steuer-Anweisung und prüft bei 342, ob deren Marke
mit der von S(2) übereinstimmt. Wenn die Marken nicht übereinstimmen, werden die nächsten Zeilen oder Befehle
geholt, bis die Marke gefunden ist. Falls S(I) eine arithmetische Anweisung oder einfach einen Wert darstellt,
verzweigt sich das Unterprogramm nach 334 in· Fig. 14. Wenn S(I) tatsächlich eine arithmetische Anweisung
ist, wird die arithmetische Anweisung durchgeführt und das Ergebnis nach S(I) gebracht. Das Unterprogramm
überspringt oder übergeht dann bei 338 in Fig. 14 die gleiche Anzahl von Zeilen oder GENOL-Steuer-Anweisungen,
die durch den Wert S(I) angezeigt wird. Wenn die erforderliche Anzahl von Zeilen übersprungen
ist, kehrt das Unterprogramm zu dem GENOL-Programm bei 344 zurück.
Die Berechnungs-Anweisung (COMPUTE-statement) mit dem
Bezugszeichen 372 in Fig.15 dient zur Berechnung eines Wertes für eine vorläufige Variable. Diese vorläufigen
Variablen sind Register, in denen numerische Daten gespeichert sind. Der Berechnungsanweisung gehen drei
Sternchen voran, die anzeigen, daß es sich um einen GENOL-Steuer-Befehl handelt, auf den unmittelbar ACC(n)
folgt, wobei η der Index ist, der das Register angibt, in dem der Wert gespeichert wird. Auf der rechten Seite
der Gleichung bei 172 in Fig.15 bedeutet S(I) die arithmetische
Anweisung oder den Wert,der in den Akkumulator zu bringen ist. Das Flußdiagramm zeigt in Fig. 15, wie
das Unterprogramm bei 352 feststellt, ob S(I) tatsächlich eine arithmetische Anweisung ist5 in diesem Falle
3098 40/0825
wird die arithmetische Anweisung bei 354 durchgeführt und das Ergebnis zu dem Akkumulator ACCCn-) gebracht·
Anderenfalls wird der Wert S(I) direkt in den Akkumulator
oebracht. Ein einmal in eine Berechnungs-Anweisung ■ ersetztes Register behält seinen Wert, bis es
von einer anderen Berechnungsanweisung zurückgestellt wird. Man kann sich auf sie als Teil eines arithmetischen
Ausdrucks wie auf jeden anderen Parameter mit numerischem Wert beziehen. Die Akkumulatoren können
auch als Indizes für eine Parameter- -Referenz benutzt werden.
Die Fig. 16 und 17 zeigen ein Beispiel der Verwendung einiger der hier beschriebenen GENOL—Steuer-Befehle.
In Fig. 16 sind neun GENOL-Steuer-Befehle als Beispiel
für die Entwicklung oder Erzeugung verschiedener Zeilen von Zeichen dargestellt. Die Ergebnisse eines sequentiellen
Durchgangs über diese Befehle befinden sich in Fig. 17, wo eine Reihe von Zeichen in spezifischen
Gruppen auf dem Ausqabedatentrager angeordnet sind. Dieses Beispiel zeigt, wie einer Reihe von Zeichen in
einer vorbestimmten Form unter Verwendung der erwähnten GENOL-Steuer-Befehle angeordnet werden kann.
Für jede Klasse von Problemen, die gemäß dem erfindungs— gemäßen Verfahren gelöst werden sollen, ist die Erzeugung
einer Folge von GENOL-Steuer-Anweisungen nötig, welche die erforderliche Quellensprach-Anweisung erzeugen. Diese
GENOL-Steuer-Anweisungen werden so ausgewählt, daß man die richtige Information aus den Parametertafeln 32
in Fig. 1 erhält. Aus dem in den Figuren 16 und 17 dargestellten
Beispiel geht klar hervor, daß durch die Auswahl der richtigen Folge von GENOL-Steuer-Anweisungen
ein digitaler Rechnercode für die Problemlösung in jeder gewünschten Quellensprache erzeugt werden kann, z.B. in
309840/0825
FORTRAN, COBOL, ALGOL oder jeder anderen aus einer großen
Auswahl von \ssemblierersprachen. Ferner ist zu bemerken,
daß für die vollste Verwirklichung der hier offenbarten Erzeugun r tochnik die GENOL-Steuer-Befehle der Skelatal-Datei
in einem Rechnerspeicher mit direktem Zugriff (random access) oespeichert werden sollten, z.B. einem Plattenspeicher,
Magnettrommelspeicher oder Kernspeicher. Auf diese Weise kann das GENOL-Programm z.B. die Schleifen-Anweisunqen
ausführen, in dem der Plattenschlüssel der Anwei sung nach dem Schleifenbefehl gespeichert wird;
so kann das I rogramm zu der richtigen Stelle oder dem richtigen Platz im Speicher zurückkehren, wenn die entsprechende
END~Anweisung gefunden ist.
Die vorliegende Erfindung wurde speziell für die Verwendung in Verbindung mit einem digitalen Allzweckrechner
entwickelt; Fig. 18 enthält die Darstellung eines repr S.-.'
sentativen Beispiels für einen solchen Rechner. Diese Vorrichtung enthält die gewöhnlich in einem digitalen
Allzweckrechner, z.B. einem Burroughs B3500, enthaltenen
Bauteil« ,welche die Ausführung des erfindungsgemäßen
Verfahrens erleichtern. Die verschiedenen Bauteile der Vorrichtung, die in Fig. 18 dargestellt sind, umfassen
ein Zentrales Leitwerk 384, das die übrigen Bauteile der Vorrichtung in Abhängigkeit von den verschiedenen
in den Rechnerprogrammen enthaltenen Befehlen koordiniert und in Tätigkeit setzt. Die anderen Hauptteile dieser Vorrichtung
sind der Prozessor 382, der Magnetkernspeicher 394 und die Ein/Ausgabe-Kanäle 400, 402, 404, 406, 408
und 410. Die zusätzlichen Teile in Fig. 18, das Basisregister 386, das Grenzregister 388 und die Speicheradressenregister
390 und 392 dienen zur Lokalisierung oder zur Plazierung verschiedener Informationsgrößen
in dem Magnetkernspeicher 394. Bei dieser Ausführungsform der Erfindung wird starker Gebrauch von dem schnellen
309840/0825
Magnetkernspeicher 394 mit direktem Zugriff gemacht,
bei dem diejenigen Datengrößen, die mit der größten Häufigkeit gebraucht werden, z.B. eine Seite aus dem
Operationscode in Tafel 1, oder die Zwischenergebnisse von arithmetischen Rechnungen, gespeichert sind. Zusätzlich
dient der Magnetkernspeicher 394 zur Speicherung des Objektcode für das Programm, das gerade ausgeführt
wird,z.B. den POL-Übersetzer oder den GENOL-Code sowie
die verschiedenen Tafeln, die häufig von diesen Programmen benutzt werden, beispielsweise die bei 32 in Fig. 1 gezeigten
Parametertafeln» Um Information in oder aus der Vorrichtung in Fig. 18 zu übertragen, muß einer der
Ein/Ausgabekanäle 400,402,404,406,408 und 410 benutzt werden. Die Haupteingabestelle in die Vorrichtung dieser
Ausführungsform ist der Lochkartenleser 426. ϊη dieser
Vorrichtung steht der Lochkartenleser unter der Führung der Ein/Aüsgabe-Steuer-Einheit 412, die mit dem ersten
Ein/Ausgabekanal 400 verbunden ist. Der Kartenleser 426 dient für die Eingabe von verschiedenen Informationsarten in die erfindungsgemäße Vorrichtung, darunter die
POL-Semantik 14 und die POL-Syntax 16 in Fig. 1 zusammen mit den GENOL'-Steuer-Befehlen 26 und den verschiedenen
Quellensprach-Routinen 28 in Fig. 1, die in die Skeletal-Datei 38 und in die Mischdatei 34 in Fig. 1 geladen werden.
Der Kartenleser 426 in Fig. 18 wäre auch die Haupt— einqabestelle für die Problemdaten des Benutzers in Fig.l.
Es liegt jedoch in dem Bereich der vorliegenden Erfindung, Daten auch durch andere äußere Einrichtungen, z.B. durch
entfernte Anschlüsse und durch CRT-Einrichtungen, einzugeben. Diese Ausführungsform macht ebenfalls starken Gebrauch
von Plattenspeichern 428,430 und 432 in Fig. 18 für die Speicherung von großen Datenmengen, die weniger
oft benutzt werden. Da das Lesen oder Schreiben einer
Datengröße in den Plattenspeicher erst erfolgen kann,
wenn die Platte unter den richtigen Lese/Schreibkopf
309840/0825
rotiert ist, ist die Wiederauffindungszeit für die Daten
relativ langsamer als bei Magnetkernspeichern. Jeder Plattenspeicher ist mit dem zentralen Leitwerk 384 des
Rechners 4r Fig. 18 durch eigene Ein/Ausgabekanäle 402,
404 und 4<H- und durch ,Ein/Ausgabe-Steuereinheiten 416,
418 und 420 verbunden. Zu der'in den Plattenspeichereinheiten aufgenommenen Information gehören verschiedene
der in Fig. 1 dargestellten Größen, z.B. die Grammatikdatei 22, die Skeletaldatei 38 und die Mischdatei 34.
Zusätzlich können in dieser Ausführungsform auch der Quellencode und der Objektcode für die Rechnerprogramme
in den Plattenspeichereinheiten gespeichert werden. Die Plattenspeichereinheiten sind deshalb in dieser Ausführungsform
besonders nützlich, da jedes Segment oder jeder Satz in beliebiger Reihenfolge ausgewählt oder
qelesen werden kann, wodurch die Verwirklichung von verschiedenen Merkmalen dieser Erfindung, z.B. der bei
23? in Fig. 10 dargestellten Mischdatei, erleichtert wird, da z.B. bei dieser Datei verschiedene Datenelemente
völlig ungeordnet ausgewählt werden müssen. Ein dritter Typ einer Ein/Ausgabe-Einrichtung ist· die Magnetbandeinheit,
die bei dieser Ausführungsform zur Speicherung von sequentiellen Daten dient, z.B. den Quellencode-Ausgabedaten
bei 40 in Fig. 1. Die Magnetbandeinheit bei 434 in Fig. 18 ist ebenfalls mit dem zentralen
Leitwerk 384 über einen Ein/Ausgabe-Kanal 408 und eine Ein/Ausgabe-Steuereinheit 422 verbunden. Die vorliegende
Erfindung benötigt ferner eine Einrichtung für die Ausgabe von Daten oder Ergebnissen in einer dem Benutzer
verständlichen Form, da an verschiedenen Stellen des Verfahrens Daten ausgegeben werden müssen, z.B. die endgültige
Problemlösung bei 44 in Fig. 1 oder die Grammatik-Darstellung 10 in Fig. 1, Eine geeignete Einrichtung
dafür ist der Drucker 436 in Fig. 18. Der Drucker 436 besitzt ebenfalls einen Ein/Ausgabe-Kanal 410 und eine
309840/0825
Ein/Ausgabe-Steuereinheit 424 als Verbindung zu dem zentralen Leitwerk 384. Zusätzlich zu dem Drucker
436 in Fig. 18 können weitere Ausgabe-Vorrichtungen
bei dieser Äusführungsform vorhanden sein, darunter entfernte Anschlüsse und Einrichtungen für sichtbare
Darstellungen, z.B. CRT-Einrichtungen. Das zentrale Leitwerk 284 in Fig. 18 arbeitet unter der Führung
des Objektcode des Programmes, das gerade ausgeführt wird, z.B. des POL-Übersetzers 20 in Fig. lf des
POL-Übersetzer-Generators 18 in Fig. 1, des verallgemeinerten
Code-Generators 30 oder der Datei-Lade-Routine
36. Das zentrale Leitwerk 384 bewirkt ferner das Laden der von den äußeren Einrichtungen 426,428,
430,432,434 und 436 gesammelten Information in den Magnetkernspeicher 394 und die Auswahl und Verarbeitung
von Daten in dem Prozessor 382.
Die bevorzugte Ausführungsform der Erfindung wurde so beschrieben, wie ein Fachmann sie auf einem digitalen
Allzweckrechner, z.B. einem BURROUGHS B 3500-Rechner, mit einer Assemblierersprache oder COBEL,
FORTRAN oder einer anderen Compilierer-Programmiersprache verwirklichen kann. Verschiedene Modifizierungen
und Abänderungen können in Abhängigkeit von der Bauweise des verwendeten Rechners, der benutzten
Programmiersprache und von anderen Faktoren getroffen werden und sind für den Fachmann naheliegend, ohne daß
damit über den Bereich der vorliegenden Erfindung hinausgegangen wird.
Insgesamt wurde ein Verfahren beschrieben, daß die Eingabe
von Daten in Form einer problemorientierten Sprache erlaubt und welches einen Rechner-Quellencode erzeugt,
der nach Verarbeitung durch einen Compilierer und einen
3 0 9 8 4 0/0825
digitalen Allzweckrechner eine Lösung für das Problem
liefert- Das Verfahren verwendet einen Problemsprachen-Generator für die Erzeugung eines Übersetzers für die
problemorientierte Sprache und einen digitalen Rechner-Quellencode-Generator*
Der Quellencode-Generator nimmt Problemparameter aus dem Sprachenübersetzer auf und erzeugt
eine Folge von digitalen Rechner-Quellencode-Befehlen, die nach Compilierung in einen Objelctcode den
digitalen Rechner zur Berechnung einer Problemlösung veranlassen.
In den beigefügten Tabellen I bis III wurde soweit wie möglich eine deutschsprachige Terminologie verwendet.
Es wird jedoch ausdrücklich auf die anliegenden, vollständig englisch—sprachigen Tabellen Ia - IHa mit dem
Bemerken hingewiesen, daß auf dem Gebiet des Anmeldungsgegenstandes die englischen Fachausdrucke auch in
Deutschland gebräuchlich sind.und daß demzufolge bei Abweichungen
zwischen dem Offenbarungsgehalt der Tabellen
I bis III und demjenigen der Tabellen Ia bis IHa der letztere maßgebend ist.
30 9 840/0825
NODE GROSSE NODEN | SECTION-IDS: | Seite | »DECLARATION11 C 4 ) PSEUDEWiEXIT | DECL- | "TERMINAL" (4) PSEUDO-EXIT | TERM- | "ABA" PSEUDO-EXIT | ABA- | "EVENT"(4) PSEUDO-EXIT | EVENT- | Zeile OP. | CODE |
OPERATION | GEHE NACH | 1 | FÜHRE AUS | 1 | FÜHRE AUS | 1 | FÜHRE AUS | 1 | ||||
Abschnitt | TEST-I | TE S T-2 | TEST-3 | |||||||||
GEHE NACH | GEHE NACH | 1 | GEHE NACH | |||||||||
Abschnitt | 1 | Abschnitt | 1 | Abschnitt | 1 | 20041106 | ||||||
1 | 1 | 1 | 1 | 1 | DECL | |||||||
1 | 1 | 1 | 2 | ARAT | ||||||||
3 | ION | |||||||||||
4 | 30120000 | |||||||||||
5 | 47701039 | |||||||||||
"." GEHE NACH | 1 | 6 | ||||||||||
Abschnitt | ||||||||||||
IDS. | 1 | |||||||||||
ENDE | ||||||||||||
20040806 | ||||||||||||
1 | 7 | TERM | ||||||||||
•SW7· GEHE NACH | 1 | 8 | INAL | |||||||||
DER KARTEN | 9 | 30120000 | ||||||||||
10 | 50003100 | |||||||||||
11 | 47701113 | |||||||||||
12 | ||||||||||||
20030305 | ||||||||||||
13 | ABA | |||||||||||
14 | 30120000 | |||||||||||
15 | 50003109 | |||||||||||
16 | 47702032 | |||||||||||
17 | ||||||||||||
20040506 | ||||||||||||
18 | EVEN | |||||||||||
19 | T | |||||||||||
20 | 30120000 | |||||||||||
21 | 50003118 | |||||||||||
22 | 47702086 | |||||||||||
23 | ||||||||||||
20010103 | ||||||||||||
24 | ||||||||||||
25 | 47701001 | |||||||||||
26 | ||||||||||||
70000702 | ||||||||||||
27 | 47703084 | |||||||||||
28 |
309840/08
NODEN | .Seite | / ERR (11) | 1 | 3. | 1 | 3 | 1 | 2312193 | CODE | |
NODE GROSSE | OPERATION | GEHE NACH HELP | Zeile OF. | |||||||
PSEUDO-EXIT | 1 | |||||||||
«OPTIONS« (4) | FÜHRE AUS | 1 | 1 | 1 | ||||||
TEST-4 | 1 | 1 | ||||||||
GEHE NACH OPTION- | 1 | |||||||||
Abschnitt.' | 1 | 20040706 | ||||||||
/ ERR (7) | 1 | OPTI | ||||||||
GEHE NACH HELP | 29 | ONS | ||||||||
1 | 30 | 30120000 | ||||||||
1 | 31 | 50003127 | ||||||||
1 | 32 | 4??03066 | ||||||||
1 | 33 | |||||||||
MARK- | 34 | 600????? | ||||||||
EXIT. | Abschnitt (1). | 1 | ||||||||
35 | 30160015 | |||||||||
ERR (15). | ||||||||||
PERFORM GET-PERIOD. | )GEHE NACH | 1 | 36 | 50003095 | ||||||
MAXIMAL-TERM | 4??01001 | |||||||||
37 | ||||||||||
GO TO SECTION-IDS. | 38 | |||||||||
DECL-SECTION: | ||||||||||
"SECTION"(4) | 21040705 | |||||||||
SECT | ||||||||||
GEHE NACH | 39 | ION | ||||||||
MAXIMAL-ABA | 40 | 30160011 | ||||||||
41 | 4??03089 | |||||||||
42 | ||||||||||
43 | ||||||||||
11 tf | 21010104 | |||||||||
• | ||||||||||
44 | 30160007 | |||||||||
45 | 4??03089 | |||||||||
46 | ||||||||||
47 | ||||||||||
30330001 | ||||||||||
48 | ||||||||||
DECL-ATTRIBUTES: | ||||||||||
»Maxterminals"(4; | 20041205 | |||||||||
MAXT | ||||||||||
49 | ERMI | |||||||||
50 | NALS | |||||||||
51 | 4??01077 | |||||||||
52 | ||||||||||
53 | ||||||||||
"MAXABA-NUMBERS" | 20041406 | |||||||||
(4) | MAXA | |||||||||
54 | BA-N | |||||||||
55 | UMBE | |||||||||
56 | ||||||||||
57 | ||||||||||
309840/0825
"MAXLIST"(4)
PERFORM SECTION-IDS.
ERR (10).
GO TO HELP
PERIOD-I:
It ti
MAXTERM:
■INTEGER· (3)
MAXABA:
"-" OR "IS".
•INTEGER* (4)
•38- | /ERR (7) | Seite | 231 | 2133 |
NODEN | GEHE NACH HELP 3. | Zeile | OP. | |
OPERATION | CODE | |||
1 | 58 | RS | ||
59 | 47701086 | |||
GEHE NACH | 1 | |||
MAXIMAL EVENTS | GEHE NACH DECL- | 60 | 20040.90 5- | |
ATTRIBUTEN. | 61 | MAXE | ||
62 | VENT | |||
1 | 63 | S | ||
64 | 47701095 | |||
GEHE NACH | ||||
MAXIMAL LISTE | 1 | |||
SPEICHERE-MAX(l) | 65 | 20040704 | ||
/ERR (8). | 66 | MAXL | ||
1 | 67 | IST | ||
1 | 68 | 47701104 | ||
1 | 69 | 50001001 | ||
1 | 70 | 30160010 | ||
i | GEHE NACH PERIODE | 71 | 4??03089 | |
-1. | ||||
1 | ||||
72 | 21010104 | |||
1 | 73 | |||
1 | 74 | 30160007 | ||
SPEICHERE-MAX (2) | 75 | 4?703089 | ||
/ERR (16). | ||||
1 | ||||
1 | 76 | 47701049 | ||
77 | 21010104 | |||
1 | 78 | |||
79 | 21020202 | |||
80 | IS | |||
1 | ||||
1 | 81 | 10031603 | ||
1 | 82 | 30290001 | ||
1 | 83 | 47701085 | ||
84 | 30160008 | |||
1 | ||||
1 | 85 | 47701072 | ||
86 | 21010104 | |||
1 | 87 | ac | ||
88 | 21020202 | |||
89 | IS | |||
1 | ||||
90 | 10041603 |
309840/0825
-39- | Seite | MAX (3) | 1 | PERIODE | 1 | MAX (4) | 1 | PERIODE | 1 | HELP 2. | 1 | HELP 2. | 1 | MARK-Abschnitt | 2312193 | CODE | |
NODE GRÖS^E | NODEN | 1 | • | 1 | (2). | Zeile OP. | 30290002 | ||||||||||
OPERATION | 1 | 1 | 1 | 1 | 4?701094 | ||||||||||||
1 | 1 | 1 | 1 | 1 | 1 | 91 | 30160016 | ||||||||||
1 | 1 | 92 | |||||||||||||||
1 | 93 | ||||||||||||||||
GEHE NACH | 47701072 | ||||||||||||||||
PERIODE -1 | 1 | ||||||||||||||||
94 | |||||||||||||||||
MAXEVENTS: | 21010104 | ||||||||||||||||
"*"OR "IS"* | 1 | SS | |||||||||||||||
95 | 21020202 | ||||||||||||||||
1 | 96 | IS | |||||||||||||||
97 | |||||||||||||||||
98 | |||||||||||||||||
•INTEGER·(4) | SPEICHERE | 10041603 | |||||||||||||||
/ ERR (8). | 30290003 | ||||||||||||||||
99 | 47701103 | ||||||||||||||||
100 | 30160008 | ||||||||||||||||
101 | |||||||||||||||||
102 | |||||||||||||||||
GEHE NACH | 47701072 | ||||||||||||||||
-1. | |||||||||||||||||
103 | |||||||||||||||||
MAXLIST: | 21010104 | ||||||||||||||||
··«" OR "IS11. | |||||||||||||||||
104 | 21020202 | ||||||||||||||||
105 | IS | ||||||||||||||||
106 | |||||||||||||||||
107 | |||||||||||||||||
•INTEGER* (4) | SPEICHERE | 10041603 | |||||||||||||||
/ ERR (16) | 30290004 | ||||||||||||||||
108 | 47701112 | ||||||||||||||||
109 | 30160016 | ||||||||||||||||
110 | |||||||||||||||||
111 | |||||||||||||||||
GEHE NACH | 47701072 | ||||||||||||||||
-1. | |||||||||||||||||
112 | |||||||||||||||||
TERM-SECTION: | |||||||||||||||||
"SECTION"(4) | / ERR (11) | 21040705 | |||||||||||||||
GEHE NACH | SECT | ||||||||||||||||
113 | ION | ||||||||||||||||
114 | 30160011 | ||||||||||||||||
115 | 47703087 | ||||||||||||||||
116 | |||||||||||||||||
117 | |||||||||||||||||
ft H
• |
/ ERR(7) | 21010104 | |||||||||||||||
GEHE NACH | • | ||||||||||||||||
118 | 30160007 | ||||||||||||||||
119 | 47703087 | ||||||||||||||||
120 | |||||||||||||||||
121 | |||||||||||||||||
309840/0825
NODEN
OPERATION
OPERATION
Seite Zeile OP. CODE
TERM-ATTRIBUTES: "TERMINAL"(4)
.%LEITE erstmalig Wahrheits-Test ein durch
Test COMPLETE (0,0,0,111,100,0)
122 30330002
1 | ■ 123 | 30173000 | |
124 | 000 000 | ||
125 | "iii Ίο ο | ||
126 | "... 000 000 | ||
SETZE SCHALTER | |||
ZURÜCK (0). | |||
1 | 127 | 30080000 | |
GEHE NACH TERM-Nr | • | ||
1 | 128 | 20040804 | |
129 | TERM | ||
130 | INAL | ||
1 | 131 | 4??01152 | |
2) GEHE NACH | |||
TERM -ID. | |||
1 | 132 | 20021406 | |
133 | IDEN | ||
134 | TIFI | ||
135 | CATI | ||
136 | ON |
3098AO/0825
TABELLE I1 231219"?
STRUKTUR DER POLGEN GtAIiIATIK-DATEI ■ Jli I3J
12 3 4 Bytes
A B .A . B TJ. Hi pi ΓΊΠ Ziffern
B .A . B TJ. Hi pi Γ
SUBNODE auf B 3500
Maximum von 224 Subnoden pro Satz laufend erlaubt.
Maximum von 224 Subnoden pro Satz laufend erlaubt.
1) Test Klasse
Operations Code: IA Code 1
bejahendes/verneinendes Signal; IB (Entscheidung, ob
relative Verzweigung) (Code-0 Bejahung, Code-1 Verneinung)
Minimale Länge: 2
Maximale Länge: 3
Relatives Verzweigungsimkrement: 4
Maximale Länge: 3
Relatives Verzweigungsimkrement: 4
2) Spezieller Test
Operationscode: IA Code 2
Bejahendes/verneinendes Signal: IB (Entscheidung, wann
relative Verzweigung)
Code 0 - Übereinstimmung ist Durchgangsbedingung.
Code 1 - Nichtübereinstimmung ist Durchgangsbedingung·
Minimale Länge: 2
Maximale Länge: 3
Maximale Länge: 3
Relatives Verzweigungsinkrement: 4 (Anzahl von Subnoden vor Verzweigung)
Anmerkung: Die tatsächliche Kette ist in den folgen-
Subnoden gespeichert (4 Zeichen pro Subnode)
3) Ausführung:
- Operations Code: IA Code 3
Prozedur-Zahlϊ IB, 2A, 2B
Anzahl der Subnoden mit Parametern: 3A Parameter - 1: 3B, 4A, 4B,
Prozedur-Zahlϊ IB, 2A, 2B
Anzahl der Subnoden mit Parametern: 3A Parameter - 1: 3B, 4A, 4B,
4) Verzweigung (Transfer von Steuerung) Operationscode: IA Code 4
Nicht benutzt: IB, IA
309840/0825
Grammatik-Seitenzahl: 2B, 3A Subnodenzahl: 3B,4Af4B
5) Durchführung (Grammatik-Unterprogramm—Abruf)
Operationskode: IA Code 5 Durchführungs-Indent.: IB, 2A
Grammatik-Seitenzahl: 2B, 3A Subnodenzahl: 3B, 4A, 4B
6) Exit (Rückkehr von Unterprogramm) Operationscode: IA Code 6.
Durchführungs-Ident.: IB, 2A
7) Spezieller Test (· toggle · oder * SW3 ·, etc.)
Operationscode: IA Code 7 Bejahendes/verneinendes Signal: IB
Code 0 Übereinstimmung Code 1 Nichtübereinstimmung.
Nicht benutzt: 2 . "
Funktionsindex: 3 Relativer Zweig: 4
3098AO/0825
III
NODE
GROSSE NODEN
OPERATION
OPERATION
i£-ii—2-
opening-words
grammar-ident
grammar-ident
OPTIONS
3 4 5 6 7
PROCEED-LIST
"GRAMMARS" (7) GEHE NACH GRAM-HEAD
/Irrtum (1,3,15) "GRAMMAR-IDENTIFICATION" (10) ' GEHE NACH GRAM-ID
"OPTIONS" (6) '·$"
GEHE NACH OPT-LIST.
DEFINE-PROCEDURE (0,0,0)
GEHE NACH DEFINE-ROUTINE.
"PROCEDURES" (9) od."INTERLUDES" (9)
GRAPH-SECTION
••GRAPHS" (5) . od."NODES" (4) GEHE NACH PROCEED
/Irrtum (1,3,9)ν
θ/ .it O
SET-CHARGE
GEHE NACH NODE-HEAD GEHE NACH END-OF-NODES.
Irrtum (1,5,21) GEHE AUF LEITUNG GEHE NACH ANFANGSWORTERN
3 4 5 6 7
•INTEGER· (5)
■?
GRAM-HEAD
SPEICHERE KEINE LADUNG GEHE AUF LEITUNG /Irrtum (1, 3, 49). GEHE NACH GRAMMAR-IDENT.
"DEFINITIONS"
(10> od."SECTION·1
M." /Irrtum (1,22,23)
GEHE NACH GRAMMAR-IDENTi
GRAM-ID
•WORD· /Irrtum (1,22,23). SPEICHERE GRAMMAR-ID /Irrtu» "(1,22,8)
GEHE NACH ANFANGSWÖRTERN /Irrtum (1,22,23). GEHE NACH OPTIONS.
309840/0825
NODE
GROSSE
OPERATI
£312193-
OPT-LIST
LIST-TOP
LIST-TOP
3- 4
: "ARE" OR "IS"
: "NODES" (4) "LIST" "COMPILE" "COBOL "SHARED-GRAMMAR"
tf (t
•TOGGLE*
5. 6 7
LÖSCHE LOOP-COUNT (2) SETZE-OPTION (1). SETZE-OPTION (2).
SETZE-OPTION (3). SETZE-OPTION (4). SETZE-OPTION (5). GEHE NACH TEXT-CHK PRÜPE-LOOP-COUNT.
GEHE NACH TEXT-CHK /GEHE NACH LIST-TOP.
"TEXT-SIZE" (4)
It-Il
•INTEGER· (3) ' "BYTES" /GEHE ZU DEPINE-ERROR
/GEHE ZU DEFINE-ERROR /GEHE ZU DEFINE-ERROR SETZE OPTION (10).
DEFINE-ERROR
c/_ ι ______;>_.
c/_ ι ______;>_.
fQ— J_ — ^ — — — ^ —· ■— ^ -^ W
PROCEED
ELEM-ONE
ELEM-ONE
"LISTS" (4)
If fl
: «WORD·
"GRAPHS" (5) od. "NODES" (4) GEHE ZU PROCEED-LIST
Irrtum (1,3,51).
GEHE AUF LEITUNG
GEHE NACH PROCEED-LIST.
:—_ 5 _-_ 6 7
/Irrtum (1,22,23). " TANK-PROCEDUREN.
UNTERDRÜCKE GROSSE /GEHE NACH ELEM-ONE-CONT.
ELAM-ONE CONT
• ti κ f
'INTEGER'
GEHE NACH NODE-HEAD. BAUE PROCEDUREN EINGANG AUF
HOLE GROSSE.
SETZE PARAMETERGRENZEN (O)
SCHREIBE-PROCEDUREN-EINGANG
GEHE NACH ELEM-ONE SETZE PARAMETERGRENZEN (O)
SCHREIBE-PROCEDUREN-EINGANG
SCHREIBE-PROCEDUREN-EINGANG
GEHE NACH GRAPH-ABSCHNI1 SETZE PARAMETERGRENZEN (1)
309840/0825
NODE
GROSSE
NODEN
OPERATION
OPERATION
GEHE NACH PERIOD-CHECK,
"THRU" | GEHE NACH INT-PAR-CHK. | |
PAR-CHK | : "PARAMETERS" | |
(3) | • | |
H If
f |
SCHREIBE PROCEDUREN- | |
EINGANG | ||
GEHE NACH ELEM-ONE | ||
/GEHE NACH PERIOD CHECK | ||
INT-PAR-CHK | i "INTEGER· | SETZE PARAMETER |
GRENZEN (2) | ||
/Irrtum (1,4,25). | ||
GEHE NACH PAR-CHK. | ||
PERIOD-CHECK |
• It !I
• · |
SCHREIBE PROCEDUREN |
EINGANG. |
"GRAPHS" (5) od. "NODES" (4)
. 2
NODE-HEAD
weMams^m^mmm·β^e JMISH''MIMa*M*M 'A ™* "^ ^" ^» ■"·"·■
: "DEFINITIONS" (10) od."SECTIONS" (7).
GEHE NACH NODE-HEAD /Irrtum (1,5,35)
HOLE GROSSE
GEHE NACH ELEM-ONE. — 5 6 7
/Irrtum (1,22,23). ERÖFFNE NODES OUT BEGINNE NEW NODE.
GEHE ZUM ERSTEN WORT.
2
FIRST-WORD
3 4 $™*L™gl 7
"PAGE" "PERFORM"
"GO"
"GOTO" GEHE NACH PAGE-SET. GEHE NACH PERFCRM-NCüE_,
GEHt; NACH GO-TO-NODE.
GEHE NACH GOTC-NODF.
"END"
"PROGRAM" "EXIT" •LITERAL*
"PROGRAM" "EXIT" •LITERAL*
It It Il
•WORD* Od. •INTEGER*
GEHE NACH END-CF-KCUES.
GEHE NACH START-PROGRAM.
GEHE NACH EXIT-NODE.
GEHE NACH CLASS-TEST-NODE.
GEHE NACH SPEC-TEST-NODE.
GEHE NACH NODE-OR-PROCEDURE-NODE. Irrtum (1,5,35) GEHE AUF LEITUNG
GEHE ZUM ERSTEN WORT
309840/0825
NODE
GROSSE NODEN
OPERATION
OPERATION
56-1 -2 ,——3 —-4—-—-5- .-—6 · 7
GO-TO-NODE GO-TO-NODE
GO-FOUND
ELSE-CHECK
FINNISH-NODE
: "TO" : »WORD·
"NEXT-NODE"
: "/"od. "ELSE"
It It
INTEGER-LABEL : »INTEGER·
%_ i—. 2 · 3 4-
CLASS-TEST-NODE :
•SW5» NÄCHSTER CODE. UNTERDRÜCKE GROSSE
/GEHE NACH INTEGER-LABEL. GEHE NACH ELSE-CHECK. BAUE BRANCH-NODE AUF
STAPELE NODE
HOLE GROSSE,
irgendwo lokalisiert GEHE ZUM ZWEITEN WORT.
HOLE GROSSE,
irgendwo lokalisiert GEHE ZUM ZWEITEN WORT.
BEENDE NODE
BEGINNE NEUE NODE 2 GEHE NACH ERSTEM WORT GEHE NACH GO-FOUND /Irrtum (1,6,14) GEHE NACH ZWEITEM WORT.
BEGINNE NEUE NODE 2 GEHE NACH ERSTEM WORT GEHE NACH GO-FOUND /Irrtum (1,6,14) GEHE NACH ZWEITEM WORT.
, 5 6 · 7
Il ( Il
BOUND-CHECK
STACK-CLASS SYNONYM-TEST
: »INTEGER· (2)
η )
"OR"
TEST CHK-SYN : »LITERAL*
1 2 3
SPEC-TEST-NODE :
BAUE CLASS-TEST-AUF SETZE SCHALTER (5) ZURÜC GEHE NACH SPEC-TEST-NODE-t.
NÄCHSTE NODE
NÄCHSTE NODE
/GEHE NACH STACK-CLASS. SPEICHERE LÄNGENUMFANG
/Irrtum (1,30) NÄCHSTE NODE
/Irrtum (1,4,19). STAPELE CLASS-TEST. MARKIERE-SYNONYM GEHE NACH TEST-CHK-SYN
/GEHE NACH ZWEITEM WORT GEHE NACH CLA33-TEST-NODE
/Irrtum (1,3,35) GEHE NACH FEHLER-ERKENNUNG. (ERR-RECOVERY)
— 5 6~ 7
SPEC-TEST-NODE
It / Il HOLE GROSSE
BAUE SPECIALTEST AUF HOLE GROSSE
/Irrtum (1,5,35) HOLE GROSSE.
BAUE SPECIALTEST AUF HOLE GROSSE
/Irrtum (1,5,35) HOLE GROSSE.
NÄCHSTE NODE /STAPELE SPECIFIC TEST GEHE NACH SYNONYM TEST,
309840/0825
NODE
GROSSE NODEN
OPERATION
OPERATION
•INTEGER* (2)
M) H SPEICHERE LÄNGENUMFANG /Irrtum (1,30).
STAPELE SPECIPIC-TEST
GEHE NACH SYNONYM-TEST /Irrtum (1,4,19)
GEHE NACH ZWEITEM WORT
SETZE SEITENZAHL (!)
GEHE NACH PAGE-OUT.
SETZE SEITENZAHL (O) /Irrtum (1,22,23).
GEHE NACH ERSTEM WORT. /Irrtum (1,22,23)
GEHE AUF LEITUNG.
GEHE ZU ERSTEM WORT. 2 3 4 5 6 7
•WORD·
PAGE-SET | : »INTEGER· |
11.11 | |
PAGE-OUT |
PERFORM-NODE
•INTEGER·
BOUND-CHECK-2
ItJ Il
2 3
EXIT-NODE
BAUE PERFORM AUF /Irrtum (1,16,14)
GEHE NACH ZWEITEM WORT. /SETZE PERFORM EXIT ID
(2)
(O)
/Irrtum (1,5,39)
GEHE ZU ZWEITEM WORT. /Irrtum (1,4,19).
GEHE ZU ZWEITEM WORT.
5 6 7
BAUE EXIT AUF
GEHE NACH BOUND-CHECK-2
•INUEGER· (2)
%_ 1 2 3 4 5 6 7
NODE-OR-PROCEDURE-NODE
ti · η BEWAHRE GROSSE HOLE GROSSE ZURÜCK
DEFINIERE MODE-BEZEICHNUNG
HOLE GROSSE
LÖSCHE GROSSE GEHE NACH TEST-CHK /BEWAHRE GROSSE HOLE GROSSE ZURÜCK (2) BAUE EXECUTE-NODE AUF
HOLE GROSSE
LÖSCHE GROSSE GEHE NACH TEST-CHK /BEWAHRE GROSSE HOLE GROSSE ZURÜCK (2) BAUE EXECUTE-NODE AUF
309840/0
NODE
2-
SECOND-WORD
-48-
GROSSE NODEN 2312193
■ . ■ ' OPERATION
•TOGGLE· LÖSCHE GROSSEN
UNTERDRÜCKE GROSSE GEHE NACH ERR-RECOVERY HOLE GROSSE ZURÜCK
LÖSCHE GROSSEN GEHE NACH PARAMETERPRÜFUNG (PARAM CHECK)
3 4-. ,5„ 6 7
PARAM-CHECK
TWO-COMMA
DEL-COMMA
CHECK-AND-OUT
"PERFORM" "GO"
"GOTO"
"EXIT"
"GOTO"
"EXIT"
"/" odi "ELSE"
"NEXT-NODE" •WORD*
•TOGGLE*
•INTEGER· (3)
•INTEGER* (3)
Il Il
Il \ Il
'TOGGLE1
GEHE NACH PERFORM-NODE.
GEHE NACH GO-TO-NODE.
GEHE NACH GOTO-NODE.
GEHE NACH EXIT-NODE-
IRGENDWO LOKALISIERT GEHE ZUM ZWEITEN WORT GEHE NACH FINISH-NODE.
GEHE NACH ELSE-CHECK. /Irrtum (1,5,35)
HOLE GROSSE
GEHE NACH ZWEITEM WORT. ,-CSECOND WCRiJ)
BAUE EXECUTE NODE AUF. /GEHE NACH PARAM=-CHECK.
UNTERDRÜCKE GROSSE GEHE NACH ERR-RECOVERY. /GEHE NACH NONE-GIVEN.
SPEICHERE PARAMETER (O) GEHE NACH TWO-COMMA. SPEICHERE PARAMETER (1) GEHE NACH DEL-COMMA.
Irrtum (1,5,35) GEHE NACH ERR-RECOVERY. SPEICHERE PARAMETER (O) GEHE NACH TWO-COMMA.
SPEICHERE paramter (1) GEHE NACH DEL-COMMA. SPEICHERE PARAMETER (O) GEHE NACH CHECK-AND-OUT
Irrtum (1,5,35) GEHE NACH ERR-RECOVERY. GEHE NACH TWO-COMMA. GO TO CHECK-AND-OUT.
Irrtum (1,5,35) GEHE NACH ERR-RECOVERY. STAPELE EXECUTE-NODE.
HOLE GROSSE
GEHE NACH ZWEITEM WORT.
309840/0825
NODE
NONE GIVEN
TEST-SEQ
GROSSE
•TOGGLE* ♦TOGGLE·
%i —— 9———————— "^-——„———A.
ERR-RECOVERY :
•TOGGLE·
RECOVERY-CHK
11 ( Il
Il ) I»
"ELSE" Od."/" "NEXT-NODE" od,
"GO11Od. "GOTO"
•LITERAL· "PERFORM" "EXIT"
"END"
SEC-WRD-EXT
FIRST-WRD-EXT
FIRST-WRD-EXT
2—
END-OF-NODES
OPERATION
SPEICHERE PARAMTER (O) STAPELE-EXECUTE-NODE-r
GEHE NACH ZWEITEM WORT UNTERDRÜCKE GROSSE IRGENDWO LOKALISIERT
GEHE NACH ZWEITEM WORT /GEHE NACH ZWEITEM WORT. 6 7
FÜHRE AUS RECOVERY-CHK, GEHE NACH ERSTEM WORT. /GEHE NACH ZWEITEM WORT.
SETZE TOGGLE
GEHE AUF LEITUNG EXIT
GEHE AUF LEITUNG EXIT
GEHE NACH RECOVERY-CHK. GEHE NACH Recovery-CHK. GEHE NACH SEC-WRD-EXT.
GEHE NACH SEC-WRD-EXT.
GEHE NACH SEC-WRD-EXT.
GEHE NACH FIRST-WRD-EXT, GEHE NACH END-OF-NODES.
HOLE GROSSE
GEHE NACH RECOVERYJ-CHK.
UNTERDRÜCKE GROSSE EXIT..
GEHE NACH RECOVERY-CHK.
UNTERDRÜCKE1 Grosse
EXIT.
GEHE NACH RECOVERY-CHK.
5 6 7
TOGGLE
START-PROGRAM
ARBEITE AUF (9). SETZE SCHALTER (6).
SCHLIESSE QUELLENBAND.
GEHE NACH ANFANGSWORTERl ARBEITE AUF
ÖFFNE QUELLENBAND GEHE AUF LEITUNG
309840/0825
NODE
%—EMMITTER-
EMIT-PART
GROSSE
OPERATION
: "PROGRAM"
PROGRAM-ID-SRCH : "PROGRAM-ID"
"ENVIRONMENT" od."SELECT" Od, "DATA"
TOOGLE-CHK-I
: «TOGGLE·
t» it
♦WORD*
♦WORD*
ft It
FILE-CONTROL-SRCH
: "FILE-CONTROL"
"SELECT" od. "DATA" odV'FILE"
TOGGLE-CHK-2
1 TOGGLE· ÖFFNE QUELLENBAND
/Irrtum (1,5,35) GEHE AUF LEITUNG GEHE NACH EMIT-PART. TEST-POSITION (1)
GEHE NACH TOGGLE-CHK-I.
Irrtum (1,40,22,48) GEHE NACH FILE-CONTROL-SRCH
/STELLE EINGANG WIEDER HER
/STELLE EINGANG WIEDER HER
GEHE NACH PROGRAM-J-ID-
SRCH.
/STELLEEINGANGWIEDER
/STELLEEINGANGWIEDER
HER
. GEHE NACH PROGRAMM-ID-SRCH.
. GEHE NACH PROGRAMM-ID-SRCH.
SETZE TEIL (8). /Irrtum (1,3,23).
SETiZE PROGRAM-ID.
STELLE EINGANG WIEDER HER.
TEST-POSITION (1) GEHE NACH TOGGLE-CHK-2»
Irrtum (1,41,22,48) GEHE NACH FILE-SECTION-
SRCH
/ STELLE EINGANG WIEDER HER
/ STELLE EINGANG WIEDER HER
GEHE NACH FILE-CONTROL-SRCH.-
STELLE EINGANG WIEDER HER
FÜGE EIN DATEI (FILE) ( /STELLE EINGANG WIEDER HER
GEHE NACH FILE-CONTROL SRCH.
SETZE TEIL (1)
SETZE TEIL (1)
309840/0825
NODE
GROSSE
operation2 312193
FILE-SECTION-SRCH
TOGGLE-CHK-3
W0RKING-STORAGE-SRCH
T0GGLE'-CHK-4
SEVEN-SEVEN-SRCH
"FILE"
HPD"?od."01"
od."77"
•TOGGLE' TEST-POSITION (1) GEHE NACH TOGGLE-CHK-3
Irrtum (1,42,22,48) GEHE NACH WORKING-STORAGE-SRCH
/STELLE EINGANG WIEDER HER
GEHE NACH FILE-SECTION-SRCH.
STELLE EINGANG WIEDER HER
/STELLE EINGANG WIEDER HER
GEHE NACH FILE-SECTION-SRCH.
SETZE-TEIL (2).
SETZE-TEIL (2).
"WORKING-STORAGE" TEST-POSITION (1)
"77" odJ'PROCEDURE"
•TOGGLE1
"77"
"01" od. "PROCEDURE"
309840/082 GEHE NACH TOGGLE-CHK-4.
Irrtum (1,43,22,48) GEHE NACH SEVEN-SEVEN-SRCH
/STELLE EINGANG WIEDER HER
GEHE NACH WORK J NG-STORAGE-SRCH.
FÜGE DATEI (FILE) (2) EIN
/STELLE EINGANG WIEDER HER
GEHE NACH WORKING-STORA-GE-SRCH.
STELLE EINGANG WIEDER HER (3).
TEST-POSITION (1) GEHE NACH TOGGLE-CHK-5.
Irrtum (1,44,22,48) GEHE NACH OH-ONE-SRCH /STELLE EINGANG WIEDER HER
GEHE NACH SEVEN-SEVEN SRCH.
NODE
GROSSE
NODEN
OPERATION
OPERATION
TOGGLE-CHK-5
»TOGGLE1
OH-ONE-SRCH : "01"
"PROCEDURE"
TOGGLE-CHK-6
'TOGGLE' SETZE TEIL (PART) (4) FÜGE EIN DATEI (FILE) (2
BEREITE VOR LIST STELLE EINGANG WIEDER
HER
/STELLE EINGANG WIEDER HER
/STELLE EINGANG WIEDER HER
GEHE NACH SEVEN-SEVEN-SRCH.
TEST-POSITION (1) GEHE NACH TOGGLE-CHK-6.
Irrtum (1,45,22,48)
GEHE NACH PROCEDURE-SRCf /STELLE EINGANG WIEDER HER
GEHE NACH OH-ONE-SRCH.
FÜGE DATEI (FILE) (4) EIN
PROCEDURE-SRCH
"PROCEDURE"
"GO"od. "MOVE" Od."READ" od. "WRITE11Od. "IF"
TOGGLE-CHK-7
♦TOGGLE'
EOJ-SRCH
"END-OF-JOB"
"END"
STELLE EINGANG WIEDER HER
SETZE TEIL-(PART) (5) /STELLE EINGANGWIEDER
HER
GEHE NACH OH-ONE-SRCH. TEST-POSITION "( 1)
GEHE NACH TOGGLE-CHK-7
Irrtum (1,46,22,48) GEHE NACH EDJ-SRCH
/STELLE EINGANG WIEDER HER
GEHE NACH PROCEDURE-SRCH.
STELLE EINGANG WIEDER HER
SETZE TEIL (PART) (6) FÜGE DATEI (FILE) (5) EIN
/STELLE EINGANG WIEDER HER
GEHE NACH PROCEDURE-SRCH.
TEST-POSITION (1) GEHE NACH TOGGLE-CHK-8.
Irrtum (1,47,22,48) UNTERDRÜCKE GROSSE GEHE NACH END-CHK
309840/0825
NODE
TOGGLE-CHK-8
END-CHK
DEFINES-ROUTE
DEFINE-ROUTE
RECOVER-DEF:
DEF-ESCAPE
-53-GRÖSSE
: *TOGGLE«
END
"DEFINE"
"ESCAPE"
"SYMBOL"
"LEADING" . "PUNCTUATION" "GROUP"
"IGNORABLE" "COMMON"
"CONNECTORS" "SIZE"
"SYMBOL"
"LEADING" . "PUNCTUATION" "GROUP"
"IGNORABLE" "COMMON"
"CONNECTORS" "SIZE"
"SCANNING" (4) "PRECEDENCE" (4) OdJ1PREClDENCE"
(4)
NODEN
OPERATION
OPERATION
/STELLE EINGANG WIEDER HER
GEHE NACH EOJ-SRCH. SETZE TEIL (PART) (7)
FÜGE EIN DATEI (FILE) (6) FÜGE EIN GO-TO FÜGE EIN DATEI (FILE) (7)
STELLE EINGANG WIEDER
HER
/STELLE EINGANG WIEDER HER
/STELLE EINGANG WIEDER HER
GEHE NACH EOJ-SRCH.
SCHLIESSE QUELLEN BAND
GEHE NACH OPENING-WORDS /STELLE EINGANG WIEDER HER
GEHE AUF LEITUNG
GEHE NACH END-CHK. /DEFINIERE PROZEDUR (3,0,0)
GEHE NACH PROCEED-LIST.
GEHE NACH DEF-ESCAPE.
GEHE NACH DEF-SIGN.
GEHE NACH DEF-LEADING.
GEHE NACH DEF-PUNCT, GEHE NACH DEF-GROUP.
GEHE NACH DEF-IGNOR.
GEHE NACH DEF-COMMON.
GEHE NACH DEF-CONNECT.
GEHE NACH DEF-SIZE* GEHE NACH DEF-SCAN.
GEHE NACH DEF-PREC. IRRTUM (1,3,49) HOLE GROSSE
GEHE NACH DEFINES-ROUTE /GEHE NACH RECOVER-DEF.
DEF-SIGN
"FOR"
"POSITIVE" (3)
"POSITIVE" (3)
"NEGATIVE" (3) DEFINIERE PROZEDUR (2,2
GEHE NACH CHAR-PART.
DEFINIERE PROZEDUR (2,14,
GEHE NACH CHAR-PART.
DEFINIERE PROZEDUR (2, 15,0)
GEHE NACH CHAR-PART.
309840/0825
NODE
DEF-LEADING
GROSSE
"DECIMAL" (3) NODEN
OPERATION
OPERATION
1 O 1 Q *>.
2.0,0)
GEHE NACH CHAR-PART.
IRRTUM (1,3,52) GEHE NACH RECOVER-DEF.
: "ALPHABETIC" (5) "NUMERIC"(3) DEFINIERE PROZEDUR (2,
12, O)
DEFINIERE PROZEDUR (2, 13,0)
GEHE NACH CHAR-PART.
IRRTUM (1,3,52).
GEHE NACH RECOVER-DEF.
DEF-PUNCT
DEFINIERE-PROZEDUR (2, 11,0)
GEHE NACH CHAR-PART
DEF-GROUP
: "BEGINNING" (5)
"ENDING" (3) DEFINIERE PROZEDUR (2, 3,0)
GEHE NACH CHAR-PART.
DEFINIERE PROZEDUR (2, 4,0)
GEHE NACH CHAR-PARTi IRRTUM (1,3,52).
GEHE NACH RECOVER-DEF.
DEF-IGNOR
DEFINIERE PROCEDUR (2, 6,0).
DEF-COMMON
DEFINIERE PROZEDUR (2, 1,0)
GEHE NACH CHAR-PART.
DEF-CONNECT
ALPHA-TO
: "FOR" . "ALPHABETIC"
(5)
"NUMERIC" (3)
: "TO"
"ALPHABETIC" (5)
"NUMERIC" (3) GEHE NACH ALPHA-TO. GEHE NACH NUMBER-TO.
IRRTUM (1,3,52) GEHE NACH RECOVER-DEF,
DEFINIERE PROZEDUR (2, 7,0)
GEHE NACH CHAR-PART.
DEFINIERE PROZEDUR (2, 8,0)
309840/0 825
NODE
GROSSE NODEN
OPERATION
OPERATION
NUMBER-TO
"TO"
ALPHABETIC"
(5)
"NUMERIC" (3) GEHE NACH CHAR-PART.
Irrtum (1,3,52) GEHE NACH RECOVER-DEF.
DEFINIERE-PROZEDUR (2, 10,0)
GEHE NACH CHAR-PART.
DEFINIERE PROZEDUR (2, 9,0)
GEHE NACH CHAR-PART.
Irrtum (1,3,52) GEHE NACH RECOVER-DEF.
CHAR-PART
CONT-DEF
"CHARACTERS" (4)
tlj.lt
•LITERAL*
"NULL" /IRRTUM (1,3,52) GEHE NACH RECOVER-DEF. DEFINIERE-PROZEDUR (1,
0,0)
GEHE NACH CONT-DEF.
GEHE NACH CONT-DEF.
DEFINIERE-PROZEDUR (1, 1,0)
«LITERAL·
END-CHECK-DEF ","
TOGGLE-CHAECK-1 ί »TOGGLE* GEHE NACH
IRRTUM (1
GEHE NACH
DEFINIERE
0,0)
IRRTUM (1
GEHE NACH
DEFINIERE
0,0)
GEHE NACH
GEHE NACH
Irrtum (1
GEHE NACH
GEHE NACH
GEHE NACH
GEHE NACH
Irrtum (1
GEHE NACH
GEHE NACH
GEHE NACH
END-CHECK-DEF. ,3,52)
RECOVER-DEF. PROZEDUR (1,
TOGGLE-CHAECK·} DEFINES-ROUTE.
,3,52)
RECOVER-DEF. RECOVER-DEF. CONT-DEF.
DEF-SIZE
DEF-USER-AREA
"TEXT"
•INTEGER* (3) "BYTES"
Il It
"USER-DATA"
It-Il /GEHE NACH DEF-USER-AREA. /GEHE NACH DEFINE-ERROR.
/GEHE NACH DEFINE-ERROR. SETZE OPTION (10)
GEHE NACH DEFINES^ROUTE-/GEHE NACH DEFINE-ERROR.
/GEHE NACH DEFINE-ERROR.
3098A0/0825
NODE
DEF-SCAN
GROSSE
♦INTEGER· (S)
"HUNDRED" "BYTES"
tt Il
NODEN
OPERATION
/GEHE NACH DEPINE-ERROR, SETZE-OPTION (99),
ALPHA-TC5-SCAN
NUM-TO-SCAN
A-N-! 2
RESET-5
N-A-2
DEF-PREC
DEF-PREC-A
"PATTERN"
"NOT"
»ALLOWED"
"FROM"
"ALPHABETIC·1 (5) "NUMERIC" (3)
"TO" "NUMERIC" (3)
"TO" "ALPHABETIC" (5)
: »SW5·
'SW5'
: "OF"
"ALPHABETIC" (5) "NUMERIC" (2)
"TO" "ALPHABETIC" (5)
"NUMERIC" (3) SETZE SCHALTER (SWITCH)( /IRRTUM (1,3,55) GEHE NACH RECOVER-DEF.
GEHE NACH ALPHA-TO-SCAN.
GEHE NACH NUM-TO-SCAN. IRRTUM (1,3,52) GEHE NACH RECOVER-DEF.
GEHE NACH A-N-2.
IRRTUM (1,3,52) GEHE NACH RECOVER-DEF.
GEHE NACH N-A-2. IRRTUM (1,3,52) GEHE NACH RECOVER-DEF.
DEFINIERE PROZEDUR (4,1, O)
/DEFINIERE PROZEDUR (4,2 O).
SETZE ZURÜCK SCHALTER (SWITCH) (5)
GEHE NACH END-CHECK-DEF. DEFINIERE PROZEDUR (4,3,
DEFINIERE PROZEDUR (4,4, O).
GEHE NACH RESET-5.
GEHE NACH DEF-PREC-A. GEHE NACH DEF-PREC-N. IRRTUM (1,3,52)
GEHE NACH RECOVER-DEF.
DEFINIERE PROZEDUR (4,
1,0)
GEHE NACH DEF-CONT.
DEFINIERE PROZEDUR (4,
2,0)
GEHE NACH DEF-CONT.
IRRTUM (1,3,52)
GEHE NACH RECOVER-DEF.
9840/0825
NODE
GRÖSSE
NODEN
OPERATION
OPERATION
DEF-PREC-N
DEF-CONT
DEF-CYCLE
DEF-CYCLE
AND-DEF-CHK
DEF-NOT
: "TO"
"ALPHABETIC" (5)
»NUMERIC" (3)'
: "CONNECTORS" : »LITERAL· (4)
"DOES"
"NOT"
"NOT"
"FOLLOWS" (6) •LITERAL· (4)
"AND"
"FOLLOWS" (6) •LITERAL· (4)
DEFINIERE PROZEDURE (4, 4,0)
GEHE NACH DEF-CONT.
DEFINIERE' PROZEDUR (4, 3,0)
GEHE NACH DEF-CONT.
IRRTUM (1,3,52).
GEHE NACH RECOVER-DEF.
/IRRTUM (1,3,52).
DEFINIERE PROZEDUR (5,
1,0)
/IRRTUM (1,3,52)
/IRRTUM (1,3,52)
GEHE NACH RECOVER-DEF.
GEHE NACH DEF-NOT.
/IRRTUM (1,3,52)
GEHE NACH RECOVER-DEF. GEHE NACH DEF-CYCLE.
GEHE NACH DEFINES-ROUTE, IRRTUM (1,3,52)
GEHE NACH RECOVER-DEF.
GEHE NACH RECOVER-DEF. GEHE NACH DEF-CYCLE.
GEHE NACH DEFINES-ROUTE, IRRTUM (1,3,52)
GEHE NACH RECOVER-DEF.
DEFINE PROZEDUR (5,
2,0)
2,0)
/IRRTUM (1,3,52)
GEHE NACH RECOVER-DEF. DEFINIERE PROZEDUR (6, 0,0).
GEHE NACH AND-DEF-CHK.
GEHE NACH RECOVER-DEF. DEFINIERE PROZEDUR (6, 0,0).
GEHE NACH AND-DEF-CHK.
309840/0825
Claims (18)
- Patentansprüchefly Verfahren zur Erzeugung mehrerer Befehlsvorräte, mit deren Hilfe eine digitale Rechenan&age Lösungen zu einer Klasse von Problemen liefern kann, wobei die Lösungen von in solcher .Sprache eingegebenen Daten abhängen, die der Natur der Problemklasse entspricht, dadurch gekennzeichnet, daß ein Rechner-Übersetzer (20) erzeugt wird, der den Eingang (12) in der Form einer problemorientierten Sprache aufnehmen und den Eingang in Parameter (24) umsetzen kann, die für einen verallgemeinerten Codegenerator (30) annehmbar sind; und daß mit dem verallgemeinerten Codegenerator (30) eine Abfolge von mehreren Rechnerquelleneode-Anweisungen erzeugt werden.
- 2. Verfahren zur Erzeugung von Befehlen, insbesondere nach Anspruch 1, die eine digitale Rechenan&age zur Verarbeitung eines in einer vom Benutzer angegebenen Sprache geschriebenen Problems veranlassen, dadurch gekennzeichnet, daß ein Generator (18) für den Übersetzer (20) mit der Syntax (16) und der Semantik (14) eines vom Benutzer angegebenen Problems ausgestattet wird, daß weiter «fet" verallgemeinerter Code-Generator (30) mit einer Reihe von Prozeßsteuer-Anweisungen (26) und Quellensprach-Routinen (28) versehen wird, daß ferner mit Hilfe des Übersetzer-Generators (18) ein Übersetzer (20) erzeugt wird, der den Eingang (12) in Form der Syntax der angegebenen fSroblemorientierten Sprache in eine.„f Abfolge von Parameter-Definitions-Anweisungen (32) übersetzen kann; und daß schließlich der309840/0825verallgemeinerte Code-Generator (30) aus den Prozeß-Steuer-Anweisungen, den Quellensprach-Routinen und den Parameter-Definitions-Anweisungen einen Rechner-Quellencode (40) erzeugt.
- 3. Verfahren nach Anspruch 2, dadurch gekennzeichnet, daß bei der Erzeugung des Übersetzers (20) die Größen der Syntax und der Semantik der problemorientierten Sprache einzeln einem Abtaster (66) zugeführt wird, daß jede Größe bei der Rückkehr von dem Abtaster (66) von einem Interpretierer (68) interpretiert wird, daß ferner eine Grammatikdarstellung der vom Benutzer angegebenen problemorientierten Sprache in der Form eines Operations-Code erzeugt wird, daß weiterhin ein Rechner-Quellencode und Abtastertafeln erzeugt werden, die Elemente von Anweisungen in der problemorientierten Sprache identifizieren können, und daß schließlich diese Elemente in Parameter-Definitions-Anweisungen übersetzt werden·
- 4. Verfahren nach Anspruch 3j dadurch gekennzeichnet, daß die Struktur der vom Benutzer angegebenen Sprache in Form einer Grammatik-Definitions-Darstellung (10) dargestellt wird·
- 5. Verfahren nach Anspruch 4, dadurch gekennzeichnet, daß bei der Erzeugung der Grammatikdarstellung logische Fehler in der Syntax der probleraorientierten Sprache bestimmt und in der Grammatikdefinitions-Darstellung dargestellt werden.
- 6. Verfahren nach Anspruch 2, dadurch gekennzeichnet, daß der Rechner-Quellendode (40) von einem CoMptlicrer (42) automatisch in einen Maschinencod· coapiliert wird.309840/0826
- 7. Verfahren nach Anspruch 6, dadurch gekennzeichnet, daß der Maschinencode automatisch von dem digitalen Rechner ausgeführt und eine Lösung für das angegebene Problem erzeugt wird.
- 8. Verfahren zur automatischen, von bestimmten Problemparametern abhängigen Erzeugung eines Rechner-Quellen-Code, der einen digitalen Rechner zur Ausführung von bestimmten geforderten Datenverarbeitungs-und Berech-. nungsvorgängen veranlaßt, insbesondere nach Anspruch 1, dadurch gekennzeichnet, daß die angegebenen Problem-Parameter und Daten in für einen verallgemeinerten Code-Generator (30) annehmbare Tafeln (32) übersetzt werden, daß weiter individuelle Quellensprach-Anweisungen mit Hilfe des verallgemeinerten Code-Generators (30) konstruiert werden, daß ferner individuelle Quellensprach-Routinen aus dem Rechnerspeicher ausgewählt und daß die Quellencode-Routinen in die richtige von dem verallgemeinerten Code-Generator bestimmte Folge eingefügt werden und daß .schließlich die konstruierten Quellen-Code-Anweisungen und die ausgewählten Quellen-Code-Routinen in einen Rechner-Quellen-Code gemischt werden, der einen digitalen Allzweckrechner zur Ausführung der geforderten Datenverarbeitungs-und Berechnungsvorgänge veranlaßt.
- 9. Verfahren nach Anspruch 8, dadurch gekennzeichnet, daß bei der Übersetzung der angegebenen Problem-Parameter und Daten jede Größe der Problem-Parameter- und Datentafeln abgetastet, identifieiert und klassifiziert wird und daß aus j$der Größe gemäß der Struktur der problemorientierten Sprache Parameter mit einem für c$en verallgemeinerten Code-Generator (30) annehmbaren Format erzeugt werden· -309340/0 82 5
- 10. Verfahren nach Anspruch 8, dadurch gekennzeichnet, daß bei der Übersetzung der angegebenen Problem-Parameter und -Daten die logische Struktur einer problemorientierten Sprache in einen Operations-Code umgesetzt wird, der die Struktur der problemorientierten Sprache darstellt, daß mehrere Umsetzungs-Prozeduren für das Umsetzen von Daten in Parameter, die als Eingang für einen verallgemeinerten Code-Generator (30) annehmbar sind, in den Operations-Code eingefügt werden, daß aus annehmbaren Größen Abtasttafeln erzeugt werden, daß weiter der Operations-Code und die Abtasttafeln in mehreren Befehlen für einen digitalen Rechner in einem Rechner-Speicher kombiniert werden, daß zur Identizierung und Klassifizierung jeder Größe jeder Problem-Parameter und jede Datengröße abgetastet wird, und daß schließlich in Abhängigkeit von jeder Eingangsgröße Parameter erzeugt werden, deren Format für den verallgemeinerten Code-Generator annehmbar ist·
- 11. Verfahren nach Anspruch 10, dadurch gekennzeichnet, daß bei der Umsetzung der logischen Struktur einer problemorientierten Sprache in einen Operations—Code der logische Zusammenhang der Struktur der problemorientierten Sprache bestimmt wird.
- 12. Verfahren nach Anspruch 10, dadurch gekennzeichnet, daß die aus der Kombination des Operations-Code und der Abtastertafeln entstandenen Rechnerbefehle in die Auswahl der Quellensprach-Routinen eingeschlossen werden, so daß eine automatische Compilierung des resultierenden Quellen-Code in den Rechner-Objekt-Code und die sofortige Ausführung des Objekt-Codes ermöglicht wird.
- 13. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß bei der Erzeugung des Übersetzers für die Übersetzung309840/0825eines Eingangs in problemorientierter Sprache und für die Bildung von für einen verallgemeinerten Code-Generator annehmbaren Parametern ein Operations-Code erzeugt wird, der die logische Struktur der problemorientierten Sprache darstellt·, daß ferner mit dem Operations-Code Parameter erzeugende Prozeduren verknüpft werden, daß ferner ein Abtaster für die Erkennung und Klassifizierung der Größen der problemorientierten Sprache erzeugt wird und daß schließlich der Operations-Code und der Abtaster in einem vollständigen Übersetzerprogramm für einen digitalen Rechner kombiniert werden.
- 14. Verfahren nach Anspruch 13, dadurch gekennzeichnet, daß bei der Umsetzung einer Angabe in der problemorientierten Sprache in den Operations-Code und bei der Bildung des Abtasters die gemeinsame Struktur sämtlicher Sprachen mit den Benennungen einer spezialisierten problemorientierten Sprache definiert wird, daß weiter die Struktur der spezialisierten problemorientierten Sprache in dem Rechnerspeicher durch einen spezialisierten Operationscode dargestellt wird, daß ferner mehrere Befehlsvorräte für einen digitalen Rechner geschaffen werden, die nach Auswahl durch den spezialisierten Operations-Code eine problemorientierte Sprache in ihren äquivalenten Operations-Code umsetzen, wobei ferner ein Verknüpfungsmechanismus und die Erzeugung eines Abtasters vorgesehen ist, und daß schließlich ein Interface zwischen einem spezialisierten Abtaster für die Erkennung von Elementen der spezialisierten problemorientierten Sprache und zwischen dem spezialisierten Operations-Code geschaffen wird.
- 15. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß bei dem Verfahren zur Erzeugung einer Folge von30 9 8 40/0825Rechner-Quellen-Code-Anweisungen mehrere , Generator-Steuer-Anweisungen für den generalisierten Code-Generator und mehrere entsprechende Rechner-Befehle für die Benutzung zur Assemblierung individueller Code-Zeilen erzeugt werden, daß ferner mehrere Befehle in entsprechenden Rechnerbefehlen geschaffen werden, welche die Placierung der in dem Rechnerspeicher vorhandenen Quellen-Code—Anweisungen in dem Ausgabe-Code gestatten, und daß schließlich*jede geschaffene Quellen-Code-Anweisung auf einen Ausgabe-Datenträger aufgezeichnet wird.
- 16. Verfahren nach Anspruch 15, dadurch gekennzeichnet, daß die Ünlvereal »Genera tor-Steueranweisungen durch ein Verfahren konstruiert werden, bei dem die Syntax der Unive.rs«l>S teuer-Anwei sungen in der Form einer problemorientierten Sprache geschrieben wird, bei de» ferner die Steueranweisungen in einen Operations-Code umgesetzt werden, der die logische Struktur der Sprache der Steueranweisungen darstellt, wobei weiter mehrere Prozeduren für die Assemblierung individueller Quellen-Code-Zeilen und für die Auswahl von Teilen von in einem Rechnerspeicher vorhandenen Quellen-Code-Routinen in den Operations-Code eingefaßt werden, bei dem außerdem ein Abtastmechanismus für die Erkennung und Identifizierung jedes Ausdrucks der Steueranweisungen erzeugt.wird und bei dem schließlich ein Interface zwischen dem Operations-Code und dem Abtastmechanismus geschaffen wird·
- 17. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß bei dem Verfahren zur Erzeugung mehrerer Rechner-Befehls-Vorräte, nit deren Hilfe ein digitaler Allzweckrechner Lösungen fir eine Klasse von Problemen erzeugt, die notwendigen Rechner-Betriebs-System-Befehle309840/0825erzeugt werden, die den Hschner zu der Compilierung der Rechner-Befehls-Vorräte in.einen Rechner-Objektcode und zur weiteren Ausführung des Objektcode veranlassen.
- 18. Digitale Datenverarbeitungsanlage, insbesondere zur Ausführung des Verfahrens nach einem der vorstehenden Ansprüche, für die Berechnung der Lösungen von verschiedenen Klassen von Problemen in Abhängigkeit von in problemorientierter Sprache kodierten Daten, gekennzeichnet durch ein zentrales Leitwerk (384) für die gesamte Steuerung der Anlage durch mehrere Rechner-Befehlsvorräte, die das Verfahren zur Berechnung der Lösung für verschiedene einzelne Problemklassen wiedergeben; ferner durch mehrere Ein/Ausgabe-Kanäle (400... 410) für die Übertragung von Daten zwischen dem zentralen Leitwerk (384) und mehreren peripheren Einrichtungen (426 ...436); durch eine mit jedem Ein/Ausgabe— Kanal verbundene Ein/Ausgabe-Steuereinheit (412„».424) für die Regelung des Betriebs der peripheren, mit dem Ein/Ausgabe«sKanal verbundenen peripheren Einheit; ferner durch eine über eine Ein/Ausgabe-Steuereinheit (418) mit einem Ein/Ausgabe-Kanal (404) gekoppelte Plattenspeichereinheit (430) für die wirksame Speicherung von Daten und Befehlssätzen in Form von mehreren elektrischen Signalen auf einer routierenden Platte; weiter durch eine über einer Ein/Ausgabe-Steuereinheit 412) mit einem weiteren Ein/Ausgabe-Kanal 4400) gekoppelte Dateneingabestelle (426), über die Befehlsvorräte und Daten der Anlage zugeführt werden; ferner durch eine über einer Ein/Ausgabe-Stetaereinh@It (424) mit einem weiteren Ein/Ausgabe-Kanal (410) gekoppelte Datenausgabeeinrichtung (436) für die Ausgabe der von der Anlage errechneten Ergebnisse; weiter durch einen schnellen Magnetkern-Speicher (394), in dem jeder Plats in direktem30 98 40/082Zugriff adressiert werden kann, für die Speicherung und Bereitstellung häufig benutzter Daten und Befehlsvorräte; ferner durch mehrere Register (390,392) für die Kodierung und Dekodierung der Adressen des Speicherplatzes von Daten in den Magnetkernspeicher; und schließ lich durch einen mit dem zentralen Leitwerk gekoppelten und von dem Leitwerk gesteuerten Prozessor (382), der die arithmetischen und Datenverarbeitungs-Vorgänge ausführen kann, die zur Erlangung von Lösungen für die Eingabedaten in Abhängigkeit von den Rechner-Befehlsvorräten benötigt werden.309840/0825Leerseite
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US23747572A | 1972-03-23 | 1972-03-23 |
Publications (1)
Publication Number | Publication Date |
---|---|
DE2312193A1 true DE2312193A1 (de) | 1973-10-04 |
Family
ID=22893874
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19732312193 Ceased DE2312193A1 (de) | 1972-03-23 | 1973-03-12 | Uebersetzer und quellencode-erzeuger fuer eine problemorientierte sprache fuer rechenanlagen |
Country Status (7)
Country | Link |
---|---|
JP (1) | JPS4915333A (de) |
BE (1) | BE796255A (de) |
DE (1) | DE2312193A1 (de) |
FR (1) | FR2177284A5 (de) |
GB (1) | GB1407761A (de) |
IT (1) | IT982527B (de) |
NL (1) | NL7303314A (de) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS519022A (en) * | 1974-07-15 | 1976-01-24 | Imp Metal Ind Kynoch Ltd | Inkyoku oyobi kensuibokumitatetai |
DE2752002C3 (de) * | 1977-11-22 | 1980-09-11 | Fa. Friedrich Theysohn, 3012 Langenhagen | Verfahren zur Erzeugung einer verschleißfesten Schicht auf der inneren Oberfläche des Gehäuses eines Doppelschneckenextruders |
JPS5576281A (en) * | 1978-12-04 | 1980-06-09 | Kawasaki Heavy Ind Ltd | Composite pipe for high temperature gas furnace |
JPS5631142A (en) * | 1979-08-23 | 1981-03-28 | Fujitsu Ltd | Cobol conversion processing method |
JPS5680748A (en) * | 1979-12-06 | 1981-07-02 | Fujitsu Ltd | Data processor programmable in ideographic language |
EP0053549A1 (de) * | 1980-11-28 | 1982-06-09 | The Bendix Corporation | Verfahren zum Befestigen und hermetischen Abdichten eines Stahlgehäuses in der Öffnung eines Aluminiumgehäuses |
JP2535836B2 (ja) * | 1986-07-29 | 1996-09-18 | 石川島播磨重工業株式会社 | 容器等における異種金属継手 |
JPH07121460B2 (ja) * | 1986-07-29 | 1995-12-25 | 石川島播磨重工業株式会社 | 容器等における異種金属継手 |
US5213904A (en) * | 1991-11-05 | 1993-05-25 | Explosive Fabricators, Inc. | Aluminum/steel transition joint |
US5190831A (en) * | 1991-11-05 | 1993-03-02 | Explosive Fabricators, Inc. | Bonded titanium/steel components |
CN107250982B (zh) * | 2015-11-25 | 2020-11-06 | 华为技术有限公司 | 用于加速器的程序生成方法和系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3319226A (en) * | 1962-11-30 | 1967-05-09 | Burroughs Corp | Data processor module for a modular data processing system for operation with a time-shared memory in the simultaneous execution of multi-tasks and multi-programs |
US3492654A (en) * | 1967-05-29 | 1970-01-27 | Burroughs Corp | High speed modular data processing system |
-
1973
- 1973-01-15 FR FR7301276A patent/FR2177284A5/fr not_active Expired
- 1973-03-05 BE BE128350A patent/BE796255A/xx unknown
- 1973-03-09 NL NL7303314A patent/NL7303314A/xx unknown
- 1973-03-09 IT IT2145173A patent/IT982527B/it active
- 1973-03-12 GB GB1172273A patent/GB1407761A/en not_active Expired
- 1973-03-12 DE DE19732312193 patent/DE2312193A1/de not_active Ceased
- 1973-03-13 JP JP48029925A patent/JPS4915333A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
IT982527B (it) | 1974-10-21 |
GB1407761A (en) | 1975-09-24 |
NL7303314A (de) | 1973-09-25 |
BE796255A (fr) | 1973-07-02 |
JPS4915333A (de) | 1974-02-09 |
FR2177284A5 (de) | 1973-11-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69726339T2 (de) | Verfahren und Apparat zur Sprachübersetzung | |
DE69400869T2 (de) | System zum transkribieren von texteingaben | |
DE3650417T2 (de) | Informationsaufzeichnungs- und Wiederauffindungssystem. | |
DE2554442C2 (de) | Vorrichtung zum Vergleich logischer Größen mit einer Gruppe logischer Bezugsgrößen | |
DE3650156T2 (de) | Auf regeln basiertes datenwiederauffindverfahren und anordnung. | |
DE69030815T2 (de) | Apparat und verfahren zur erzeugung von dokumenten | |
DE3587501T3 (de) | Gerät, Verfahren und Struktur zur Umwandlung eines Dokumentes einer Struktur in ein Dokument einer anderen Struktur. | |
EP0424803B1 (de) | Verfahren zur mindestens teilweisen Umsetzung von Bilddaten in Text mit Vorbereitung für nachfolgende Speicherung oder Weiterverarbeitung | |
DE19960050A1 (de) | Grafische Benutzerschnittstelle zur Entwicklung von Anwendungsbeispielen unter Verwendung einer Testobjektbibliothek | |
DE2633536A1 (de) | Sprachuebertragungsgeraet und -verfahren | |
DE3503119A1 (de) | Verfahren zum automatischen erzeugen eines quellenprogramms | |
DE2550268A1 (de) | Schnelldrucker fuer datenverarbeitungssysteme | |
DE2505843A1 (de) | Datenverarbeitungsanlage mit datenstromgesteuerter simultanverarbeitung | |
DE2312193A1 (de) | Uebersetzer und quellencode-erzeuger fuer eine problemorientierte sprache fuer rechenanlagen | |
DE2054947A1 (de) | Adressenvorbereitungseinnchtung und verfahren und Speicherzugnffan forderungseinnchtung fur ein Infor mationsver arbeitungssystem | |
DE2365543A1 (de) | Elektronischer rechner | |
DE10256990A1 (de) | Programmcodegenerator und Programm | |
EP3968149A1 (de) | Erzeugung von steuerungsvorschriften aus schematisierten regelwerken | |
DE69219420T2 (de) | Verfahren und gerät zur rechnercode-verarbeitung in einem codeübersetzer | |
DE2249852A1 (de) | Computersystem | |
DE2613703C2 (de) | Schaltungsanordnung zum Übersetzen von Programmtexten | |
DE102016114265A1 (de) | Verfahren zum zumindest teilweise maschinellen Transferieren einer in einer Quellsprache abgefassten Wortfolge in eine Wortfolge einer Zielsprache | |
DE3511920A1 (de) | Elektronischer ratgeber | |
EP0206214A1 (de) | Verfahren zur einheitlichen symbolischen Beschreibung von Dokumentenmustern in Form von Datenstrukturen in einem Automaten | |
DE2941824A1 (de) | Programmeingabesystem |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OD | Request for examination | ||
8131 | Rejection |