Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

Prozedurzeilen

&pagelevel(4)&pagelevel

In den Prozedurzeilen stehen die Kommandos, Anweisungen und Daten einer Prozedur.

Wichtige Punkte, die dabei zu beachten sind:

  • Länge von Prozedurzeilen

  • Erstes Zeichen von Prozedurzeilen

  • Länge von Kommandos

  • Trennung von Kommandos

  • Fortsetzungsbehandlung

  • Kommentar-Syntax

  • Marken

Länge von Prozedurzeilen

In welcher Länge Prozedurzeilen ausgewertet werden, wird beeinflusst über den Operanden INPUT-FORMAT des Kommandos SET-PROCEDURE-OPTIONS. (Das Kommando SET-PROCEDURE-OPTIONS ist Bestandteil des Prozedurkopfs, es ist im Abschnitt„Prozedurkopf erstellen“ (Prozedurkopf erstellen ) ausführlich beschrieben).

Die Standardeinstellung für die Länge der Prozedurzeile ist INPUT-FORMAT = *FREE-RECORD-LENGTH. Damit werden in S-Prozeduren im Gegensatz zu Nicht-S-Prozeduren Prozedurzeilen in voller Länge ausgewertet oder bis zum Fortsetzungszeichen (siehe AAbschnitt „Prozedurzeilen“).

Aus Kompatibilität zu Nicht-S-Prozeduren wurde im Kommando SET-PROCEDURE-OPTIONS der Operand INPUT-FORMAT = *BY-SDF-OPTION eingeführt. Er bewirkt, dass Prozedurzeilen, die Kommandos enthalten, nur bis Spalte 72 ausgewertet werden. In welcher Spalte das Fortsetzungszeichen dann stehen muss, hängt davon ab, wie im SDF-Kommando MODIFY-SDF-OPTIONS der Operand CONTINUATION eingestellt wurde.

Hinweis

ISAM-Dateien werden nur mit KEY-POS = 5 und KEY-LEN = 8 als S-Prozeduren akzeptiert.

Erstes Zeichen von Prozedurzeilen

Folgendes ist zu unterscheiden:

  • Die erste Prozedurzeile muss mit einem Schrägstrich (/) beginnen.

  • Sonstige Prozedurzeilen, die mit nur einem Schrägstrich beginnen, enthalten Kommandos. Kommandos erwartet SDF aus der logischen Systemdatei SYSCMD (siehe dazu Handbuch „Kommandos“ [3]).

  • Prozedurzeilen, die mit zwei Schrägstrichen beginnen, enthalten Anweisungen im SDF-Format (an ein Programm mit SDF-Schnittstelle). Anweisungen erwartet SDF aus der logischen Systemdatei SYSSTMT, für die dieselbe Zuweisung gilt, die für die Systemdatei SYSDTA getroffen wurde (siehe Handbuch „Kommandos“ [3]).

  • Prozedurzeilen, die nicht mit Schrägstrich beginnen, sind Datenzeilen. Sie enthalten Programm-Eingabe-Daten.

  • Fortsetzungszeilen für Kommandos müssen als erstes relevantes Zeichen einen Schrägstrich enthalten. Fortsetzungszeilen für Anweisungen müssen als erste relevante Zeichen zwei Schrägstriche enthalten. Die Fortsetzungsbehandlung von Datenzeilen ist vom verarbeitenden Programm abhängig.

  • Kommandos, Anweisungen und Daten dürfen nicht in einer Prozedurzeile verkettet werden.

Länge von Kommandos

Wenn die Länge von Kommandos geprüft wird, ist zu berücksichtigen, ob im Kommandoaufruf eine Ausdrucksersetzung vorgesehen ist. Kommandos dürfen nach einer Ausdrucksersetzung nicht länger als 16364 Zeichen sein.

Trennung von Kommandos

Jede Prozedurzeile kann mehrere Kommandos enthalten. Diese Kommandos müssen durch Semikolon voneinander getrennt werden.

Das erste Kommando steht am Anfang der Prozedurzeile und muss mit einem Schrägstrich (/) beginnen. Wenn in dieser Prozedurzeile mehrere Kommandos stehen sollen, müssen sie durch Semikolon voneinander getrennt werden und dürfen nicht mit einem Schrägstrich eingeleitet werden.

Kommandos, die nach AID-Kommandos durch Semikolon getrennt geschrieben werden, werden als Teil der AID-Kommandofolge bearbeitet, d.h. sie sind nicht Teil der Prozedureingabe, sondern werden direkt von AID verarbeitet.

Fortsetzungsbehandlung

Kommandos, Kommandofolgen oder Anweisungen können über mehrere Zeilen verteilt werden. Die „Fortsetzungsbehandlung“ bestimmt, wie zusammengehörende Zeilen erkannt und ausgewertet werden.

In S-Prozeduren können über Fortsetzungszeilen bis zu 16364 Zeichen miteinander zu einer Kommandofolge verbunden werden. (Bei ISP-Kommandos bis zu 4090 Zeichen.)

Das Fortsetzungszeichen ist der Bindestrich (-). An welcher Stelle der Prozedurzeile das Fortsetzungszeichen stehen darf, ist implizit über den Operanden INPUT-FORMAT im Kommando SET-PROCEDURE-OPTIONS eingestellt.

Standardmäßig kann das Fortsetzungszeichen in einer beliebigen Spalte der Prozedurzeile stehen (INPUT-FORMAT = *FREE-RECORD-LENGTH). Allerdings dürfen dem Fortsetzungszeichen keine weiteren Zeichen folgen; es muss das letzte Zeichen der Prozedurzeile (abgesehen von Leerzeichen) sein.

Gilt INPUT-FORMAT = *BY-SDF-OPTION, muss die Einstellung des Operanden CONTINUATION im Kommando MODIFY-SDF-OPTION berücksichtigt werden:

  • Bei CONTINUATION = *OLD-MODE muss das Fortsetzungszeichen für Kommandos genau auf der Spalte 72 stehen.

  • Bei CONTINUATION = *NEW-MODE kann das Fortsetzungszeichen auf einer beliebigen Spalte zwischen den Spalten 2 und 72 stehen.

Kommentare in Anführungszeichen

Kommentare in Anführungszeichen werden zur internen Dokumentation von Prozeduren eingesetzt. Innerhalb eines Kommandos oder einer Anweisung werden Kommentare überall dort zugelassen, wo Leerzeichen erlaubt sind. (Ausnahme: nicht nach Fortsetzungszeichen.)

Als Kommentar ist beliebiger Text zugelassen, der in Anführungszeichen (" ") eingeschlossen ist.

Auch wenn ein Kommentar separat in eine Zeile geschrieben wird, muss er nach dem einleitenden Schrägstrich (/) in Anführungszeichen eingeschlossen werden. SDF-P interpretiert eine solche Prozedurzeile als Kommando, das nur aus einem Kommentar besteht. Es wird nicht ausgeführt und nicht protokolliert. Wenn ein solches „Kommentar-Kommando“ mit einer Marke versehen ist, wird nur die Marke protokolliert. Außerdem findet für solche separat in eine Zeile geschriebenen Kommentare keine Ausdrucksersetzung statt.

Zeilenende-Kommentare

Zeilenende-Kommentare sollen vor allem der Entwicklung von S-Prozeduren Rechnung tragen. Zeilenende-Kommentare werden durch das Zeichenpaar „&*“ markiert. Der Text nach diesem Zeichenpaar wird ignoriert, wenn die Prozedur ausgewertet wird. Fortsetzungszeichen, Zeichenseparatoren (wie das Semikolon) und &-Zeichen müssen deshalb vor diesem Zeichenpaar geschrieben werden.

Beispiele

Man kann mithilfe des Zeichenpaars „&*“ einen Hinweis hinter ein Kommando anfügen:

/PRINT-DOC &DATEI &* Hier wird meine Datei ausgedruckt.

oder man kann damit die Eingabe abstimmen:

(1)

PRINT-DOC &FILE ,PRINT-JOB-NAME='&(SUBSTRING(FILE,1,8))'

(2)

PRINT-DOC &FILE &*,PRINT-JOB-NAME='&(SUBSTRING(FILE,1,8))'

So wird bei (1) das PRINT-DOCUCMENT-Kommando modifiziert, während bei (2) nur durch Einfügung von „&*“ auf die Standardeinstellung zurückgegriffen wird. Dabei kann der Zustand (1) sehr leicht wieder hergestellt werden. Es muss nur „&*“ wieder gelöscht werden.

Hinweise

  • Die Zeichenfolge „&*“ war bisher in S-Prozeduren - sogar in eingeschlossenen Anführungszeichen - nicht erlaubt. Lediglich in Kommentarzeilen ohne Operationsnamen waren sie in der Vergangenheit nicht verboten: z.B. „ cmt1 &* cmt2 “.
    Das sollte bei eventuell auftretenden Inkompatibilitäten mit früher erstellten Prozeduren berücksichtigt werden.

  • Das Zeichenpaar „&*“ darf nicht durch Leerzeichen oder sonstige Zeichen getrennt werden.

  • Es gibt eine Möglichkeit das Zeichenpaar „&*“ zum Teil der Eingabe zu machen, und zwar durch Verdoppelung des &-Zeichens: &&*.
    Allerdings muss dabei aufgepasst werden, dass das &-Zeichen nicht zu oft verdoppelt wird. So wird durch „&&&*“ die Absicht zunichte gemacht, für das Zeichenpaar „&*“ die Sonderfunktion aufzuheben. In diesem Fall leitet diese Zeichenfolge wieder einen Zei-lenende-Kommentar ein.

Marken

Prozedurzeilen können mit Marken versehen werden. Diese Marken können bei der Schachtelung von Kommandoblöcken oder bei Sprüngen mit den Sprungkommandos als Sprungziele verwendet werden. Sie werden auch als S-Marken bezeichnet.

Für S-Marken gelten folgende Regeln:

  • SDF-Datentyp: <structured-name>

  • Maximale Länge: 255 Zeichen

  • Zeichenvorrat: A...Z, 0...9, $, #, @, -

  • Erstes Zeichen: Buchstabe

  • Letztes Zeichen: Doppelpunkt

  • Der Doppelpunkt muss ohne Leerzeichen an die Marke anschließen.

  • Marken dürfen nicht durch Ausdrucksersetzung erzeugt werden.

  • Marken müssen vor dem Operationsnamen stehen und von ihm mindestens durch ein Leerzeichen getrennt sein. („Operationsname“ ist der Name, mit dem ein Kommando aufgerufen wird.)

Zur Behandlung von Nicht-S-Marken (.marke) siehe auch Umstellhinweise im Kapitel „Nicht-S-Prozeduren umstellen“.