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 |
PROGRAM= | Bewirkt, dass auch die SDF-Syntax von SDF-Anweisungen analysiert wird. Ist |
progname | Name des Programms, dessen Anweisungen gemäß der SDF-Syntaxdatei-Hierarchie auf Anweisungs-Syntax geprüft werden sollen. Ist |
INTERNAL | Der Programmname ist der maximal 8-stellige interne Name. Der interne Name kann mit |
EXTERNAL | Der Programmname ist der maximal 30-stellige externe Name (z.B. LMS, SDF-A oder HSMS). Wird als Namenstyp weder |
Der EDT unterscheidet 3 Arten von Satzinhalten:
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.
Sätze, die mit
'//'
beginnen:Diese werden an SDF zur Anweisungsüberprüfung übergeben, falls
PROGRAM
angegeben wurde.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:
|
|
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.