Der Makro CMDSTA bewirkt, dass das Programm informiert wird über
die aktivierten Syntaxdateien
die Festlegungen, die für die Kommando-/Anweisungseingabe und -verarbeitung gelten.
Operation | Operanden |
CMDSTA | OUTAREA = addr / (r) ,CALLID = *NO / addr / (r) ,FORM = SHORT / LONG / USER [ ,MF = |
OUTAREA = addr / (r)
Adresse eines Übergabebereichs bzw. Register, das diese Adresse enthält. Die Information wird in diesen Bereich geschrieben. Der Bereich kann mit dem Makro CMDMEM generiert werden. Dieses Feld muss auf Halbwortgrenze ausgerichtet sein.
Der Übergabebereich wurde ab SDF V2.0A vergrößert. Näheres siehe "CMDCST Semantikfehlerdialog anstoßen".
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 und ist für die BS2000-Entwicklung reserviert.
*NO
Die aktuelle aktivierte Syntaxdateihierarchie wird verwendet.
addr / (r)
Adresse eines 4 Byte langen Feldes oder Register, das diese Adresse enthält. Der Aufrufende übermittelt die callid dem Kontext (=Syntaxdateihierarchie), den er verwenden will. Dieses Feld muss auf Wortgrenze ausgerichtet sein.
FORM =
gibt an, ob die Ausgabeinformationen in Kurzform, in Langform oder zusätzlich mit allen Benutzersyntaxdateien in den Übergabebereich OUTAREA geschrieben werden.
SHORT
Ausgegeben werden nur Informationen über die aktivierte Basis-Systemsyntaxdatei (nicht die aktivierten Subsystem-Syntaxdateien), über die aktivierte Gruppensyntaxdatei, über die zuletzt aktivierte Benutzersyntaxdatei sowie die aktuellen Optionen für die Eingabe und die Verarbeitung von Kommandos und Anweisungen. In der Kurzform werden 530 Byte ausgegeben.
LONG
wie SHORT; zusätzlich werden alle Informationen über Subsystem-Syntaxdateien ausgegeben. In diesem Fall müssen die ersten zwei Byte des Übergabebereiches seine Länge enthalten. Der Übergabebereich muss für die Langform größer als 530 Byte sein. Die Anzahl der ausgegebenen Subsystem-Informationen hängt davon ab, wieviel Platz im Übergabebereich zur Verfügung steht. Passten nicht alle Subsystem-Informationen in den Übergabebereich, so wird ein entsprechender Return-Code übergeben.
USER
wie LONG; zusätzlich werden Informationen zu allen aktivierten Benutzersyntaxdateien ausgegeben.
MF =
definiert besondere Anforderungen an die Makroauflösung (Einzelheiten siehe Typen von Makroaufrufen und Handbuch „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
Register 15 enthält im rechtsbündigen Byte einen Returncode. EQUATE-Anweisungen dafür können mit dem Makro CMDANALY generiert werden.
X’00’ | normale Beendigung |
Der Übergabebereich hat bei FORM=SHORT folgenden Aufbau:
Byte | Inhalt | ||
0 |
| ||
1 | Umfang der Benutzerführung (siehe SET-GLOBALS ..., | ||
| |||
2 | Art der Eingabeprotokollierung (siehe SET-GLOBALS ..., | ||
X'04' | |||
3 bis 56 | Name der aktivierten Basis-Systemsyntaxdatei | ||
57 bis 68 | Versionsnummer der aktivierten Basis-Systemsyntaxdatei | ||
69 bis 122 | Name der für die Task aktivierten Gruppensyntaxdatei | ||
123 bis 134 | Versionsnummer der für die Task aktivierten Gruppensyntaxdatei | ||
135 bis 188 | Name der zuletzt aktivierten Benutzersyntaxdatei | ||
189 bis 200 | Versionsnummer der zuletzt aktivierten Benutzersyntaxdatei | ||
201 bis 230 | Name des Programms, das der Kommandoprozessor im Testmodus zur Analyse der | ||
231 bis 234 | aktuelle SDF-Version in der Form nn.n | ||
235 | Funktionstastenbelegung (siehe SET-GLOBALS...,FUNCTION-KEYS= und | ||
X'04' | |||
236 bis 237 | Anzahl zu speichernder Eingaben | ||
238 | sicherheitsrelevante Einstellungen | ||
| |||
239 bis 243 | reserviert | ||
244 bis 245 | Anzahl der aktivierten Benutzersyntaxdateien | ||
246 bis 531 | reserviert für künftige Erweiterungen |
Wenn bei der Ausführung von MODIFY-SDF-OPTIONS eine Substitution von Aliasnamen durchgeführt wurde, stehen die Syntaxdateinamen mit <cat-id> und <user-id> im CMDSTA-Übergabebereich.
Für FORM=LONG wird der Übergabebereich wie folgt erweitert:
Byte | Inhalt |
239 | reserviert |
240 bis 243 | Adresse der Liste aller für die Task aktivierten Benutzersyntaxdateien |
244 bis 245 | Anzahl der aktivierten Benutzersyntaxdateien |
246 bis 531 | reserviert für künftige Erweiterungen |
532 bis 533 | Anzahl der aktivierten Subsystem-Syntaxdateien |
534 bis 587 | Name der ersten aktivierten Subsystem-Syntaxdatei |
588 bis 599 | Versionsnummer der ersten aktivierten Subsystem-Syntaxdatei |
600 bis 653 | Name der zweiten aktivierten Subsystem-Syntaxdatei |
654 bis 665 | Versionsnummer der zweiten aktivierten Subsystem-Syntaxdatei |
. . . |
Für FORM=USER wird der Übergabebereich wie folgt erweitert:
Byte | Inhalt |
(im Anschluss an die Informationen über Subsystemsyntaxdateien) | Name der ersten aktivierten Benutzersyntaxdatei (54 Byte) |
Versionsnummer der ersten aktivierten Benutzersyntaxdatei (2 Byte) | |
Name der zweiten aktivierten Benutzersyntaxdatei (54 Byte) | |
Versionsnummer der zweiten aktivierten Benutzersyntaxdatei (2 Byte) | |
. . . |