Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

@SDFTEST - Syntaxprüfung durch SDF

&pagelevel(3)&pagelevel

Mit der Anweisung @SDFTEST kann geprüft werden, ob ein Zeilenbereich syntaktisch korrekte SDF-Kommandos bzw. syntaktisch korrekte SDF-Anweisungen enthält.

Für die Überprüfung der SDF-Syntax von SDF-Anweisungen kann ein Programmname bekannt gemacht werden.

Ist die SDF-Option GUIDANCE=MIN|MED|MAX eingestellt, wird im Dialogbetrieb bei einer fehlerhaften SDF-Syntax in den geführten Korrektur-Dialog von SDF übergegangen.
Im Stapelbetrieb werden die von SDF ausgegebenen Syntax-Fehlermeldungen nach SYSLST protokolliert. Ist die Ausgabe von Meldungen nach SYSOUT umgeleitet (Auftragsschalter 8 bei Start gesetzt), so werden auch diese Meldungen nach SYSOUT anstelle von SYSLST ausgegeben.

Bricht der Anwender den Korrektur-Dialog ab oder ist ein solcher nicht möglich, so wird bei einer fehlerhaften SDF-Syntax die Fehlermeldung EDT4310 ausgegeben.

Ist die SDF-Syntax korrekt bzw. wurde sie korrigiert, wird der Text in die Arbeitsdatei aufgenommen. Das Format, in dem die Anweisung übernommen wird, wird durch die SDF-Option LOGGING bestimmt (siehe Beschreibung des Kommandos /MODIFY-SDF-OPTIONS und Beschreibung im Handbuch SDF [6]).

Es gelten die aktuellen SDF-Einstellungen, die mit /MODIFY-SDF-OPTIONS verändert werden können.

Operation

Operanden

F-Modus, L-Modus

@SDFTEST

[lines[,...] ] [PROGRAM [= progname [INTERNAL | EXTERNAL] ] ]

lines

Einer oder mehrere Zeilenbereiche, in denen die SDF-Syntax von SDF-Kommandos und ggf. auch von SDF-Anweisungen überprüft werden soll.

Ist lines nicht angegeben, soll die SDF-Syntax aller SDF-Kommandos und ggf. auch aller SDF-Anweisungen der Arbeitsdatei überprüft werden.

PROGRAM=

Bewirkt, dass auch die SDF-Syntax von SDF-Anweisungen analysiert wird.

Ist PROGRAM nicht angegeben, dann wird nur die SDF-Syntax von SDF-Kommandos analysiert.

progname

Name des Programms, dessen Anweisungen gemäß der SDF-Syntaxdatei-Hierarchie auf Anweisungs-Syntax geprüft werden sollen.

Ist progname nicht angegeben, dann wird der Name verwendet, der durch die Anweisung @PAR SDF-PROGRAM voreingestellt wurde. Existiert keine Voreinstellung, wird die Anweisung @SDFTEST mit der Meldung EDT5320 zurückgewiesen. Ist der Programmname in der aktuellen SDF-syntaxdatei-Hierarchie nicht bekannt, wird die Anweisung @SDFTEST mit der Meldung EDT5321 zurückgewiesen.

INTERNAL

Der Programmname ist der maximal 8-stellige interne Name. Der interne Name kann mit SDF-A ermittelt werden, falls er nicht dem Namen des Programms entspricht.

EXTERNAL

Der Programmname ist der maximal 30-stellige externe Name (z.B. LMS, SDF-A oder HSMS).

Wird als Namenstyp weder INTERNAL noch EXTERNAL angegeben, wird der Namenstyp verwendet, der durch eine Anweisung @PAR SDF-NAME-TYPE voreingestellt ist. Nach dem Starten des EDT ist der Namenstyp INTERNAL voreingestellt.

Der EDT unterscheidet 3 Arten von Satzinhalten:

  1. Sätze, die mit einem (nur einem) '/' in Spalte 1 beginnen:

    Sie werden gemäß der SDF-Syntaxdatei-Hierarchie auf Kommando-Syntax geprüft. Die Zulässigkeit bezüglich Privilegien oder Systemumgebung ist durch den aktuellen Benutzer und die aktuelle Umgebung bestimmt.

  2. Sätze, die mit '//' beginnen:

    Diese werden an SDF zur Anweisungsüberprüfung übergeben, falls PROGRAM angegeben wurde.

  3. sonstige Datenzeilen:

    Sätze, die weder mit '/' noch mit '//' beginnen, werden ignoriert.

Zeilen, die mit '/' beginnen und als letztes Zeichen ein Fortsetzungszeichen ('-') enthalten, werden mit der Folgezeile, sofern diese ebenfalls mit '/' beginnt, verkettet und bei der Bearbeitung der Anweisung @SDFTEST gemeinsam an SDF übergeben. Die Fortsetzungszeilen müssen in keinem der angegebenen Zeilenbereiche enthalten sein. Es genügt, wenn die erste Zeile in einem der angegebenen Zeilenbereiche enthalten ist. Ist PROGRAM angegeben, trifft diese Vorgehensweise auch auf diejenigen Zeilen zu, die mit '//' beginnen.

Das geprüfte Kommando bzw. die Anweisung überschreibt das alte Kommando bzw. die Anweisung inklusive aller Folgezeilen in der Arbeitsdatei. Wenn das Kommando bzw. die Anweisung bei der Prüfung durch SDF verändert wurde (z.B. weil in einem vorangegangenen /MODIFY-SDF-OPTIONS-Kommando LOGGING=INVARIANT eingestellt wurde), werden die betroffenen Zeilen neu formatiert und evtl. in mehrere Fortsetzungszeilen aufgeteilt. Das Fortsetzungszeichen wird in der 72. Spalte gesetzt. Wenn nötig, werden die nachfolgenden Zeilen umnummeriert. Die Zeilennummernvergabe erfolgt dabei nach dem Verfahren „Einfügen zwischen zwei Zeilen“ (siehe Abschnitt „Zeilennummernvergabe“). Können die von SDF erzeugten Zeilen nicht eingefügt werden, wird die Anweisung mit der Meldung EDT5364 bzw. EDT5365 abgebrochen.

Im F-Modus wird nach Abschluss aller Prüfungen die Meldung EDT0285 ausgegeben, wenn keine Fehler auftraten oder wenn nach Fehlern die Verarbeitung fortgesetzt wurde. Im L-Modus werden für Anweisungen (nicht Kommandos) die SDF-Ausgaben nach SYSOUT ausgegeben.

Enthält ein geprüftes Kommando bzw. eine Anweisung Fehler und wird kein erfolgreicher Korrektur-Dialog geführt, so gibt der EDT die Meldung EDT4310 aus. Im Dialogbetrieb wird außerdem abgefragt, ob die Prüfung fortgesetzt werden soll:

%

%

EDT4310 SDF: SYNTAX ERROR IN LINE (&00)

EDT0911 CONTINUE PROCESSING? REPLY(Y=YES; N=NO)?

Wird die Meldung im Dialogbetrieb mit N beantwortet, so wird die @SDFTEST-Anweisung mit der Meldung EDT5324 abgebrochen und im F-Modus die fehlerhafte Zeile an der obersten Fensterposition angezeigt. Wird dagegen die Meldung mit Y beantwortet, so wird mit der Syntaxkontrolle bei der nächsten noch nicht untersuchten Zeile fortgeführt. Im Stapelbetrieb wird die Syntaxkontrolle immer fortgesetzt.

Hat die Arbeitsdatei mit den zu prüfenden Zeilen einen anderen Zeichensatz als EDF03IRV muss man Besonderheiten beim Umgang mit SDF beachten, insbesondere sind Zeichen die nicht zum EBCDIC-Kern gehören natürlich nur in Literalen oder Kommentaren zulässig. Darüber hinaus führt SDF einen Korrekturdialog immer in dem mit /MODIFY-TERMINAL-OPTIONS eingestellten Zeichensatz und interpretiert die ihm übergebenen Byte-Sequenzen auch immer in diesem Zeichensatz.

Daher konvertiert der EDT die Anweisungen oder Kommandos vor Übergabe an SDF in den mit /MODIFY-TERMINAL-OPTIONS eingestellten Zeichensatz, falls der aktuell eingestellte GUIDANCE-MODE einen Korrekturdialog ermöglicht. Gelingt das nicht wird die @SDFTEST-Anweisung mit der Meldung EDT5327 abgebrochen.

Ist kein Korrekturdialog möglich, konvertiert der EDT nach anderen (großzügigeren) Regeln. Hat die Arbeitsdatei einen EBCDIC-Zeichensatz, wird dieser ohne Konvertierung benutzt. Hat die Arbeitsdatei einen ISO-Zeichensatz, wird der entsprechende EBCDIC-Referenzzeichensatz verwendet. In allen anderen Fällen verwendet der EDT den Zeichensatz UTFE. Ist die Konvertierung nicht möglich, wird die @SDFTEST-Anweisung mit der Meldung EDT5453 abgebrochen.

Wenn SDF Daten zurückliefert, werden diese wieder in den Zeichensatz der Arbeitsdatei umgewandelt. Ist das nicht möglich, wird die @SDFTEST-Anweisung mit der Meldung EDT5453 abgebrochen.

Wird die Anweisung mit [K2] unterbrochen und der EDT-Lauf mit /INFORM-PROGRAM fortgesetzt, so wird die Bearbeitung der Anweisung abgebrochen und die Meldung EDT5501 ausgegeben.

Hinweis

Bei GUIDANCE=EXPERT werden von SDF gemeldete Fehler von EDT IM Dialogbetrieb nur in Form der Meldung EDT4310 angezeigt. Zur genaueren Fehleranalyse empfiehlt es sich GUIDANCE=MIN, MED oder MAX einzustellen.

Kennwörter und andere Operanden, die mit OUTPUT=SECRET-PROMPT definiert wurden, werden bei GUIDANCE-Einstellung MIN, MED oder MAX durch P ersetzt.

Fehlerhafte Operanden bei ISP-Kommandos werden von SDF nicht erkannt.

Ist mit /MODIFY-TERMINAL-OPTIONS der Zeichensatz UTFE eingestellt, ist das Bildschirmlayout beim Korrekturdialog von SDF verschoben, wenn Zeichen vorkommen, die außerhalb von EDF03IRV liegen. Das liegt daran, dass SDF derzeit Unicode nicht unterstützt, stellt aber normalerweise keine funktionelle Einschränkung dar.

Ein Kommando oder eine Anweisung darf sowohl bei der Ein- als auch bei der Ausgabe eine maximale Länge von 16379 Byte nicht übersteigen. Andernfalls wird die Anweisung @SDFTEST mit der Meldung EDT5325 bzw. EDT5326 abgebrochen.