Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

CORSTMT Semantikfehlerdialog anstoßen

&pagelevel(4)&pagelevel

Der Makro CORSTMT bewirkt, dass SDF mit dem Benutzer einen Dialog führt, in dem dieser Semantikfehler in einer Anweisung korrigiert. SDF hat die Anweisung unmittelbar zuvor analysiert und als syntaktisch richtig an das Programm übergeben. Verdeckt eingegebene Operandenwerte muss der Benutzer während des Korrekturprozesses noch einmal eingeben.

Voraussetzungen für den Semantikfehlerdialog sind:

  • das Programm läuft in einer interaktiven Task und bei der Syntaxanalyse war ein Fehlerdialog zugelassen, d.h.:

    • temporär oder permanent geführter Dialog musste eingestellt sein

    • in Prozeduren musste die SDF-Option PROCEDURE-DIALOGUE=*YES eingestellt sein

    • wenn CORSTMT nach TRSTMT aufgerufen wird, musste bei TRSTMT DIALOG=ERROR eingestellt sein.

  • es steht die gleiche Syntaxdatei wie bei der ersten Analyse der Anweisung zur Verfügung (kein zwischenzeitlicher Wechsel der Syntaxdatei).

Sind diese Voraussetzungen nicht erfüllt, lehnt SDF den Dialog ab (Fehlercode X’20’).

Operation

Operanden

CORSTMT

INOUT = addr / (r1)

,MESSAGE = addr / (r3)

[ ,DEFAULT = *NO / (addr,...) ]

[ ,INVAR = *NO / addr / (r) ]

[ ,CALLID = *NO / addr / (r7) ]

[ ,CCSNAME = *NO / *EXTEND / name ]



[ ,MF =]


INOUT = addr / (r1)
Adresse des normierten Übergabebereichs bzw. Register, das diese Adresse enthält. Der Bereich muss auf Wortgrenze beginnen. In ihm steht das zuvor von SDF an das Programm übergebene Analyseergebnis der fehlerhaften Anweisung. Das Programm hat die von ihm als fehlerhaft erkannten Operandenwerte gekennzeichnet. Änderungen von

Eingabewerten durch das Programm übernimmt SDF nicht. Nach dem Fehlerdialog und der erneuten Analyse legt SDF das geänderte Analyseergebnis wieder in diesem Bereich ab (siehe Abschnitt „Format des normierten Übergabebereiches bis SDF V4.0“).

MESSAGE = addr / (r3)
Adresse des auszugebenden Textes für den Fehlerdialog bzw. Register, das diese Adresse enthält. Dieser wird im geführten Dialog in das Anweisungsmenü integriert. Der Text wird als Satz variabler Länge erwartet und darf maximal vier Zeilen auf der Datensichtstation belegen. Enthält der Text Bildschirmsteuerzeichen, so kann die Menü-Maske zerstört werden. Dieser Bereich muss auf Halbwortgrenze ausgerichtet sein.

DEFAULT =
Bestimmt, ob SDF folgende Werte durch vom Programm dynamisch erzeugte Werte ersetzt:

  • eingegebene Operandenwerte oder

  • Default-Werte der Operanden

In der Syntaxdatei müssen die Operanden bzw. Operandenwerte entsprechend definiert sein (siehe ADD-OPERAND ...,OVERWRITE-POSSIBLE=*YES,... bzw. ADD-VALUE..., VALUE=<c-string> (OVERWRITE-POSSIBLE=*YES),...). Der vom Programm erzeugte Wert muss gültiger Operandenwert sein.
Im geführten Dialog zeigt SDF die vom Programm erzeugten Werte im Fragebogen.

Beispiel:

SDF-A ersetzt in den eingegebenen MODIFY-Anweisungen den Wert UNCHANGED durch den aktuellen Wert. Stehen die Operanden, die mit einem Default-Wert versehen werden sollen, in einer Struktur, deren Einleiter mit LIST-ALLOWED=*YES definiert ist (siehe ADD-VALUE), so kann folgender Fall eintreten:
Die Umsetzbeschreibung enthält mehrere Listenelemente, an denen eine Struktur mit Operanden hängt, die mit einem Default-Wert versehen werden sollen. Auf der anderen Seite gibt der Anwender ebenfalls mehrere Listenelemente ein, an denen eine Struktur mit Operanden hängt, die mit einem Default-Wert versehen werden sollen. SDF versucht zunächst, die vom Anwender eingegebenen und die in der Umsetzbeschreibung angegebenen Strukturen einander über den Wert des Struktureinleiters zuzuordnen. Ist über den struktureinleitenden Wert keine eindeutige Zuordnung möglich, weil keiner der eingegebenen Werte mit denen in der Umsetzbeschreibung übereinstimmt oder weil der Anwender den übereinstimmenden Wert mehrfach eingegeben hat, so erfolgt die Zuordnung über die Position des Struktureinleiters in der Liste.

*NO
die angegebenen Operandenwerte werden nicht durch vom Programm dynamisch erzeugte Werte ersetzt

(addr,...)
In einer oder in mehreren der möglichen Anweisungen sind angegebene Operandenwerte durch vom Programm dynamisch erzeugte Werte zu ersetzen. Unter den angegebenen Adressen (addr,...) stehen in dem Programm die Umsetzbeschreibungen für diese Anweisungen. Die Umsetzbeschreibung enthält u.a. den internen Anweisungsnamen und die Information, welche angegebenen Operandenwerte in welche Werte umzusetzen sind.
Die Bereiche für die Umsetzbeschreibungen, die für die Standardwerte des Programms übergeben werden, müssen auf Wortgrenze ausgerichtet sein. Dies gilt ebenso für den Ausgabebereich der Makros (OUTPUT-Operand).

INVAR =
Legt fest, ob die INVARIANT-INPUT-Form der Anweisung abgespeichert wird. Das heißt, dass die Anweisung mit allen eingegebenen Operanden, allen durch Default-Werte vorbelegten Operanden und mit allen Operandenwerten abgelegt wird, die für die Task zu dieser Zeit erlaubt sind. Die INVARIANT-INPUT-Form ist damit die größtmögliche Eingabeform für eine Anweisung, die für einen Benutzer mit bestimmten Privilegien und im gewählten Dialogmodus zulässig ist. Im Gegensatz zur Protokollierungsform LOGGING=*INVARIANT-FORM (siehe MODIFY-SDF-OPTIONS) werden Kennwörter und geheime Operanden jedoch nicht ausgeblendet.

*NO
Die INVARIANT-INPUT-Form der Anweisung wird nicht abgespeichert.

addr / (r)
Gibt die Adresse eines Puffers an, in den SDF die INVARIANT-INPUT-FORM der Anweisung schreibt. Der Puffer muss auf Wortgrenze ausgerichtet sein und das erste Halbwort muss die Länge des Puffers enthalten. SDF legt die INVARIANT-INPUT-Form ab dem zweiten Halbwort als Satz mit variabler Satzlänge ab. Der Puffer hat dann folgenden Inhalt:

1. HW    2. HW  3. HW (Halbwort)


buflen

reclen

filler

invariant-input

buflen:Länge des Puffers
reclen:Länge des Satzes, den SDF schreibt
filler:Füllzeichen
invariant-input:

INVARIANT-INPUT-Form der Anweisung, beginnt beim 7. Byte.



CALLID =
Bezieht sich auf einen Kontext (=Syntaxdateihierarchie), der durch einen OPNCALL-Makro eröffnet wurde. Der Name der Syntaxdateihierarchie (callid) muss den 4 Byte langen Wert haben, der von SDF an das Feld zurückgegeben wird, welches durch den Operanden CALLID im Open-Context-Makro bezeichnet wurde.
Diese Funktion bezieht sich auf den Gebrauch der Makros OPNCALL und CLSCALL.

*NO
Die aktuelle Syntaxdateihierarchie (Kontext) der Task wird für die Analyse der Anweisung verwendet.

addr / (r7)
Adresse des Aufrufprüfungsfeldes bzw. Register, das diese Adresse enthält. Der Bereich muss auf Wortgrenze ausgerichtet sein.

CCSNAME =
Gibt den Namen des Zeichensatzes an, der für den Korrekturdialog auf 8-bit-Terminals und für die Konvertierung von Klein- in Großbuchstaben verwendet wird. Jedes Terminal arbeitet mit einem bestimmten Zeichensatz. Ein codierter Zeichensatz (CCS, Coded Character Set) ist die eindeutige Darstellung der Zeichen eines Zeichensatzes in binärer Form. Jeder codierte Zeichensatz wird durch seinen Namen (Coded Character Set Name, CCSN) bestimmt (siehe Handbuch „XHCS“ [11]). Die Ausgabe von Meldungen wird durch diesen Parameter nicht beeinflusst.

*NO
Der 7-bit-Standard-Code wird für Ein-/Ausgabeoperationen verwendet.

*EXTEND
Der 8-bit-Standard-Code wird für Ein-/Ausgabeoperationen verwendet.

name
Gibt den Namen eines speziellen 8-bit-Code an, der für Ein-/Ausgabeoperationen verwendet wird. Der Name muss 8 Byte lang sein.

MF =
Definiert besondere Anforderungen an die Makroauflösung (siehe Benutzerhandbuch

„Makroaufrufe an den Ablaufteil“ [8]).

L
Es wird nur der Datenteil der Makroauflösung (Operandenliste) generiert. Das erfordert, dass im Makroaufruf keine Operandentypen mit ausführbarem Code auftreten. Der generierte Datenteil hat die im Namensfeld des Makroaufrufs angegebene Adresse.

(E,(1)) / (E,opadr)
Es wird nur der Befehlsteil der Makroauflösung generiert. Auf den zugehörigen Datenteil (Operandenliste) wird mit der Adresse „opadr“ verwiesen. Diese steht entweder in Register 1 oder wird direkt angegeben.

Rückinformation und Fehleranzeigen
Der Aufbau des Übergabebereichs ist auf den Format des normierten Übergabebereiches bis SDF V4.0 beschrieben.

Register 15 enthält im rechtsbündigen Byte einen Returncode. EQUATE-Anweisungen dafür können mit dem Makro CMDANALY generiert werden.

X’00’

X’04’

X’08’

X’0C’

X’10’

normale Beendigung

nicht behebbarer Systemfehler

Operandenfehler im Makroaufruf

Übergabebereich zu klein

Eingabeende (EOF) oder Anweisung fehlerhaft, danach wurde Eingabeende (EOF)
erkannt

X’14’

X’18’

Anweisung fehlerhaft, danach wurde Kommando erkannt

Anweisung ist zwar in Ordnung, die vom Programm übergebenen Defaultwerte sind
aber fehlerhaft

X’1C’

X’20’

X’24’

X’2C’

X’34’

X’38’

X’44’

X’4C’

Anweisung fehlerhaft, danach wurde STEP erkannt

Fehlerdialog nicht möglich

Fehlerdialog wurde vom Anwender abgelehnt (Exit-Funktion ausgelöst)

END-Anweisung wurde gelesen

Anweisung fehlerhaft, danach wurde END erkannt

SDF ist nicht verfügbar

Syntaxdatei nicht gefunden

Das Programm ist oberhalb der 16 MByte-Grenze nicht ablauffähig, weil SDF nicht
geladen ist. Bitte Systembetreuung verständigen.

X’5C’

X’64’

INVAR-Puffer zu klein, INVARIANT-INPUT abgeschnitten

XHCS-Fehler