Funktion
Die REPLACE-Anweisung wird verwendet, um Quelltext zu ersetzen.
Format 1
REPLACE {==pseudotext-1== BY ==pseudotext-2==}... .
Format 2
REPLACE OFF.
Syntaxregeln
Einer REPLACE-Anweisung muss - wenn sie nicht die erste Anweisung in einem separat übersetzten Programm ist - ein Trennzeichen Punkt oder ein anderes Trennsymbol vorangehen. Die REPLACE-Anweisung muss beendet werden, bevor eine andere REPLACE-Anweisung begonnen werden kann.
Eine REPLACE-Anweisung wird wird innerhalb eines Programms überall erkannt, ausgenommen
in Kommentarzeilen,
innerhalb nichtnumerischer Literale.
pseudotext-1 muss mindestens ein Textwort enthalten, während pseudotext-2 auch leer (
====
) sein oder nur Leerzeichen, Komma, Semikolon und Kommentarzeilen enthalten kann.
Allgemeine Regeln
Format-1 der REPLACE-Anweisung gibt an, dass jedes Auftreten von pseudotext-1 durch pseudotext-2 ersetzt werden soll.
Format-2 der REPLACE-Anweisung bewirkt, dass die laufende Textersetzung abgebrochen wird.
Eine REPLACE-Anweisung gilt von ihrer Spezifizierung bis zur nächsten REPLACE-Anweisung oder bis zum Ende eines getrennt übersetzten Programms.
Alle REPLACE-Anweisungen, die in einer Übersetzungseinheit oder einem Bibliothekstext enthalten sind, werden erst nach der Ausführung aller COPY-Anweisungen in der Übersetzungseinheit oder Bibliothekstext abgearbeitet. Die Operanden einer
REPLACE-Anweisung können nicht durch eine REPLACING-Angabe geändert werden.Der Text, der durch die Ausführung einer REPLACE-Anweisung entsteht, darf weder eine REPLACE- noch eine COPY-Anweisung enthalten.
Kleinbuchstaben, die in Textwörtern verwendet werden, sind äquivalent zu den entsprechenden Großbuchstaben.
Die Vergleichsoperation, die über Textersetzung entscheidet, läuft auf folgende Weise ab (Übersetzungseinheittext und Bibliothekstext sind unter dem Begriff „Quelltext“ zusammengefasst):
Beginnend mit dem ersten auf die REPLACE-Anweisung folgenden Textwort des Quelltexts und dem ersten Wort von pseudotext-1, wird pseudotext-1 mit der glei
chen Anzahl von aufeinanderfolgenden Textwörtern verglichen.pseudotext-1 stimmt genau dann mit dem Quelltext überein, wenn die Folge von Textwörtern in pseudotext-1 Zeichen für Zeichen mit der entsprechenden Textwort
folge im Quelltext übereinstimmt.Wenn keine Übereinstimmung festgestellt wird, wird der Vergleich mit jedem folgenden Auftreten von pseudotext-1 ausgeführt, bis entweder eine Übereinstimmung
festgestellt wird oder kein pseudotext-1 mehr vorkommt.Wenn jeder angegebene pseudotext-1 verglichen wurde, ohne dass eine Übereinstimmung gefunden wurde, wird das nächste Textwort des Quelltexts als erstes
Textwort betrachtet. Der Vergleich beginnt erneut mit dem ersten pseudotext-1.Wenn eine Übereinstimmung zwischen pseudotext-1 und dem Programmtext festgestellt wird, wird diese Stelle durch den entsprechenden pseudotext-2 ersetzt.
Das Textwort im Quelltext, das unmittelbar auf den ersetzten Text folgt, wird dann
als erstes Textwort angesehen. Der Vergleich beginnt erneut mit dem ersten
pseudotext-1.Die Vergleichsoperation läuft solange, bis das letzte von der REPLACE-Anweisung betroffene Textwort entweder ersetzt wurde oder als erstes Textwort mit jedem
pseudotext-1 verglichen wurde.
Kommentar- oder Leerzeilen, die im Quelltext oder im pseudotext-1 vorkommen, werden beim Vergleich wie ein Leerzeichen behandelt. Die Reihenfolge von Textwörtern im Quelltext und im pseudotext-1 ist durch das Referenzformat festgelegt (siehe Abschnitt „Anweisungen und Programmsätze"). Kommentar- oder Leerzeilen von pseudotext-2 werden ggf. unverändert in die Übersetzungseinheit übertragen. Eine Kommentar- oder Leerzeile im Quelltext, die in einer Folge von Textwörtern steht, die mit pseudotext-1 übereinstimmt, erscheint nicht mehr im endgültigen Programmtext.
Testhilfezeilen sind im Pseudotext erlaubt. Textwörter in pseudotext-1, die in einer Testhilfezeile stehen, werden beim Vergleich berücksichtigt, als ob kein ’D’ im Anzeigebereich (Spalte 7) stünde.
Außer bei den COPY- und REPLACE-Anweisungen selbst kann die syntaktische Rich-tigkeit von Quelltexten nicht festgestellt werden, bevor nicht alle COPY- und REPLACE-Anweisungen vollständig ausgeführt worden sind.
Textwörter, die als Ergebnis einer REPLACE-Anweisung eingesetzt werden, werden entsprechend dem Referenzformat in den Programmtext gebracht.
Wenn Textwörter von pseudotext-2 in den Programmtext gebracht werden, werden zusätzliche Leerzeichen nur eingefügt, wo im Originaltext oder pseudotext-2 Leerzeichen stehen. Eingeschlossen ist dabei das implizite Leerzeichen zwischen den Übersetzungseinheitzeilen.Wenn als Ergebnis der Ausführung einer REPLACE-Anweisung zusätzliche Zeilen in die Übersetzungseinheit eingefügt werden, enthält der Anzeigebereich der eingefügten Zeilen das Zeichen, das die erste Zeile des ersetzten Bereichs enthalten hat.
Ausnahme: Wenn die Übersetzungseinheitzeile einen Bindestrich enthält, steht in der eingefügten Zeile ein Leerzeichen.
Wenn durch eine REPLACE-Anweisung eine Zeile so verlängert wird, dass zusätzliche Zeilen erforderlich sind, dann werden entsprechende zusätzliche Zeilen erzeugt, die eventuell in Spalte 7 ein Fortsetzungskennzeichen enthalten.
Wenn die Ersetzung die Fortsetzung des Literals in einer Testhilfezeile verlangt, ist die Übersetzungseinheit fehlerhaft.Das Referenzformat, das für die REPLACE-Anweisung gilt, muss dasselbe sein, das für die ggf. zu ersetzenden Teile im Bibliothekstext gilt.