Format eines Makroaufrufs
Das Makroaufruf-Format ist aus zwei Feldern aufgebaut.
Das obere Feld enthält das optionale Namensfeld und den Makronamen. Das untere Feld enthält die möglichen Operanden.
[name] Makroname |
<operand1> ,<operand2> |
Ein Eintrag im Namensfeld ist grundsätzlich erlaubt. Der hier angegebene Name stellt die symbolische Adresse des ersten Befehls der Makroauflösung dar. Der Benutzer kann diese Adresse z.B. als Sprungziel oder als Haltepunkt für die Dialogtesthilfe benutzen.
Die Aufruf-Formate in diesem Handbuch verzichten allgemein auf die Darstellung des Namensfeldes außer in den Fällen, wo einer Angabe im Namensfeld besondere Bedeutung zukommt. Ein Beispiel dafür ist der Aufruf eines Makros vom Typ S in der L-Form (siehe "S-Typ-Makroaufrufe"): die im Namensfeld angegebene symbolische Adresse ist nötig zur Verknüpfung des Datenbereichs mit dem Befehlsteil des Makros (E-Form). Weitere Beispiele sind die Makros ARDS, CUPAB, DCSTA und TMODE, wo der Standardname des generierten Pseudoabschnittes durch die Angabe im Namensfeld ersetzt werden kann. Die Formatdarstellung dieser Makros umfasst auch das Namensfeld.
Der Makroname bezeichnet den gewünschten Makro. Das Zeichen „$“ als erstes Zeichen kommt bei Makros für Benutzer nicht vor, da es den privilegierten Makroaufrufen vorbehalten ist.
Das Operandenfeld kann eine beliebige Anzahl von Operanden enthalten, die durch Kommas getrennt sind. Es kann auch leer sein. Die Art und Anzahl der Operanden, die angegeben werden können oder müssen, ist der Formatdarstellung des jeweiligen Makroaufrufs zu entnehmen.
Beim Aufruf des Makros im Assemblerprogramm müssen das Namensfeld, der Makroname und der erste Operand mit mindestens einem Leerzeichen getrennt sein. Mehrere Operanden müssen durch Kommas getrennt werden.
Fehler im Format eines Makroaufrufs, die bereits bei der Verarbeitung durch den Assembler erkannt werden, sind durch MNOTE-Meldungen (siehe die Kapitel zur Makrosprache im Handbuch „ASSEMBH“ [2]) im Übersetzungsprotokoll gekennzeichnet.
Operandenformen
Stellungsoperanden
Stellungsoperanden werden vom Assembler anhand ihrer Stellung im Operandenfeld identifiziert, weshalb in ihrer Schreibweise eine bestimmte Reihenfolge eingehalten werden muss. Beispiel: MAKRO A,B,C
Soll der zweite Operand (B) entfallen, so muss dennoch das zweite Komma (unmittelbar hinter dem ersten Komma) geschrieben werden, um die Stellung des dritten Operanden (C) beizubehalten: MAKRO A,,C
Entfallen dagegen die letzten Stellungsoperanden, so müssen die trennenden Kommas nicht geschrieben werden. Im vorliegenden Beispiel bedeutet dies, dass beim Wegfall der Operanden B und C der Makroaufruf wie folgt geschrieben werden kann: MAKRO A
Schlüsselwortoperanden
Ein Schlüsselwortoperand wird vom Assembler durch das ihm eindeutig zugeordnete Schlüsselwort identifiziert. Deshalb ist auch die Reihenfolge dieser Operanden beliebig. Einem Schlüsselwortoperanden wird durch ein Gleichheitszeichen ein Operandenwert zugewiesen, welcher aus einem definierten Wertevorrat stammt.
Die Schreibfolge ist: <Schlüsselwort>=<gewünschter Wert>
Beispiel: MAKRO AREA=X,LENGTH=100
Gemischte Operanden
Ein Operandenfeld kann beide Arten, Stellungs- und Schlüsselwortoperanden, enthalten. Dabei müssen jedoch alle Stellungsoperanden den Schlüsselwortoperanden vorangehen. Beispiel: MAKRO A,B,C,AREA=X,LENGTH=100
Die Regeln für das Weglassen von Stellungs- und Schlüsselwortoperanden gelten entsprechend auch für gemischte Operandenfelder. Sollen z.B. die Operanden B, C und AREA entfallen, so lautet obiges Beispiel wie folgt: MAKRO A,LENGTH=100
Operanden-Unterlisten
Eine Unterliste besteht aus einem oder mehreren durch Kommas getrennten Stellungsoperanden, wobei die gesamte Liste in Klammern eingeschlossen ist. Sie wird als ein Operand betrachtet, d.h. sie besetzt entweder eine einzelne Stelle im Operandenfeld oder ist einem einzelnen Schlüsselwort zugeordnet. Die Verarbeitung des Inhalts einer Unterliste geschieht ähnlich wie bei Stellungsoperanden. Beispiel: (A,B,C)
oder (A)
Wenn die Unterliste aus nur einem Operanden besteht (wie im zweiten Beispiel), so müssen die einschließenden Klammern dennoch geschrieben werden, da hierdurch die Unterliste als solche gekennzeichnet ist.
Metasyntax
Bei der Darstellung des Makroaufruf-Formats werden bestimmte Metazeichen verwendet und Vereinbarungen vorausgesetzt, die im Folgenden erläutert werden.
Formale | Erläuterung | Beispiel |
| Großbuchstaben bezeichnen Schlüsselwörter oder |
|
GROSSBUCH | Großbuchstaben in Halbfett kennzeichnen erlaubte |
|
| Kleinbuchstaben bezeichnen Datentypen der Werte, die |
|
| Spitze Klammern kennzeichnen Variablen, deren |
|
| Geschweifte Klammern schließen Alternativen ein, d.h. |
Anzugeben ist: |
| Der Schrägstrich trennt alternativ zu verwendende Angaben |
|
| Die Unterstreichung hebt einen Standardwert hervor. |
(keine Angabe impliziert |
Tabelle 1: Makro-Syntax
Formale | Erläuterung | Beispiel |
| Eckige Klammern schließen Wahlangaben ein, d.h. |
Anzugeben ist z.B.: |
| Aus den list-poss folgenden Operandenwerten kann eine | FLAG=list-poss(3): *SLI/*SKIP/*DC Anzugeben ist: FLAG=*SKIP FLAG=(*SLI,*DC) |
| Punkte bedeuten eine Wiederholung. Sie zeigen an, |
Anzugeben ist: (FILE1,FILE2,FILE3) etc. |
'BLANK' | Dieses Zeichen kennzeichnet ein Leerzeichen (X'40') |
(ohne Hochkommas) |
| Das Gleichheitszeichen verbindet den Operandennamen |
|
Tabelle 1: Makro-Syntax
Datentypen der Operandenwerte
Datentyp | Zeichenvorrat | Anmerkungen |
| EBCDIC-Zeichen | ist in Hochkommata einzuschließen |
| [+-] 0..2147483647 | ist eine dezimale Zahl |
| leitet eine variable Angabe ein. |
|
| Register 0..15 |
|
Zusätze zu Datentypen
Zusatz | Bedeutung |
| für Datentyp |
für Datentyp | |
| bei Datentyp |
Die Operandenwerte können direkt als Zeichenkette oder Integer-Zahl (siehe Datentypen c-string
und integer
) eingegeben werden oder indirekt über eine Variable (siehe Datentyp var:
) bezeichnet werden. Die nachfolgende Tabelle enthält die Datentypen, die für Variablen möglich sind.
Datentypen der Variablen
Datentyp | Beschreibung | Definition im |
| Die Variable ist eine Zeichenkette von n Zeichen. |
|
| Die Variable ist eine Integer-Zahl, die |
|
| Die Variable ist die Aufzählung |
|
| Die Variable ist eine Adresse oder ein Adresswert. |
|