Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

Syntaxdarstellung der Makroaufrufe

&pagelevel(3)&pagelevel

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
Darstellung

Erläuterung

Beispiel

GROSSBUCHST

ABEN

Großbuchstaben bezeichnen Schlüsselwörter oder
Konstanten, die in dieser Form vom Benutzer angegeben
werden müssen. Schlüsselwörter müssen mit * beginnen,
falls alternativ sowohl Schlüsselwörter als auch
Namen von Konstanten oder Variablen angegeben werden
können

DIB

FORCED=*YES

GROSSBUCH
STABEN
in Halbfett

Großbuchstaben in Halbfett kennzeichnen erlaubte
Abkürzungen der Schlüsselwörter.

GLOBAL=YES
Anzugeben ist:
GLOBAL=YES oder

GLOBAL=Y

kleinbuchst

aben

Kleinbuchstaben bezeichnen Datentypen der Werte, die
vom Benutzer angegeben werden können, oder Variablen,
die bei der Eingabe vom Benutzer durch aktuelle
Werte ersetzt werden müssen.

DIB=<var: pointer>

FILE dateiname

< >

Spitze Klammern kennzeichnen Variablen, deren
Wertevorrat durch die Datentypen beschrieben wird.

<var: pointer>

{ }

Geschweifte Klammern schließen Alternativen ein, d.h.
aus den eingeschlossenen Größen muss eine Angabe
ausgewählt werden.
Ausnahme: Standardwerte

TAPE={YES/NO}

Anzugeben ist:
TAPE=YES oder TAPE=NO

/

Der Schrägstrich trennt alternativ zu verwendende Angaben
und hat dieselben Funktionen wie geschweifte
Klammern.

FORCED=*NO/*YES
Anzugeben ist:
FORCED=*NO oder

FORCED=*YES

 Unterstreic

 hung

Die Unterstreichung hebt einen Standardwert hervor.
Das ist der Wert, den das System einsetzt, wenn der
Benutzer keine Angabe macht (= Voreinstellung).
Hat ein Operand keinen Standardwert, so ist die Angabe
eines Operanden Pflicht.

FORCED=*NO/*YES
Anzugeben ist:
FORCED=*NO oder

FORCED=*YES

(keine Angabe impliziert
FORCED=*NO)

Tabelle 1: Makro-Syntax

Formale
Darstellung

Erläuterung

Beispiel

[ ]

Eckige Klammern schließen Wahlangaben ein, d.h.
Angaben, die weggelassen werden können. Steht bei
Wahlangaben das Komma innerhalb der Klammer, so
muss es nur bei Verwendung dieser Wahlangabe
geschrieben werden. Steht es hingegen außerhalb der
Klammer, so muss es stets geschrieben werden, auch
wenn die Wahlangabe nicht gemacht wird.
(Runde Klammern müssen eingegeben werden!)

dateiname[,ERASE]

Anzugeben ist z.B.:
FILE,ERASE oder
FILE oder
XYZ,ERASE etc.

l
listposs(n)

Aus den list-poss folgenden Operandenwerten kann eine
Liste gebildet werden. n gibt die maximale Anzahl der
Listenelemente an. Enthält die Liste mehr als ein
Element, muss sie in runden Klammern eingeschlossen
werden.

FLAG=list-poss(3):
*SLI/*SKIP/*DC

Anzugeben ist:

FLAG=*SKIP
FLAG=(*SLI,*DC)

...

Punkte bedeuten eine Wiederholung. Sie zeigen an,
dass die davor stehende Einheit mehrmals hintereinander
wiederholt werden kann.

(dateiname,...)

Anzugeben ist:
FILE       oder
(FILE,XYZ) oder

(FILE1,FILE2,FILE3) 
etc.

'BLANK'

Dieses Zeichen kennzeichnet ein Leerzeichen (X'40')

STD'BLANK'
Anzugeben ist:

'STD '

(ohne Hochkommas)

=

Das Gleichheitszeichen verbindet den Operandennamen
mit den dazugehörenden Operandenwerten.

DATA=<var:pointer>

Tabelle 1: Makro-Syntax

Datentypen der Operandenwerte

Datentyp

Zeichenvorrat

Anmerkungen

c-string

EBCDIC-Zeichen

ist in Hochkommata einzuschließen


integer

[+-] 0..2147483647

ist eine dezimale Zahl

var:

leitet eine variable Angabe ein.
Nach dem Doppelpunkt folgt der Typ der Variablen
(siehe Tabelle „Datentypen der Variablen“).

<var: var-type>

reg:

Register 0..15

(<reg: var-type>)

Zusätze zu Datentypen

Zusatz

Bedeutung

n..m

für Datentyp integer bedeutet n..m eine Intervallangabe;
n: Mindestwert
m: Maximalwert

für Datentyp c-string bedeutet n..m eine Längenangabe in Bytes;
n: Mindestlänge
m: Maximallänge
mit n < m

n

bei Datentyp c-string bedeutet n eine Längenangabe in Bytes;
n muss exakt eingehalten werden.

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
Programm

char: n

Die Variable ist eine Zeichenkette von n Zeichen.
Fehlt die Längenangabe, wird n = 1 angenommen.

CLn

int: n

Die Variable ist eine Integer-Zahl, die n Bytes belegt. Fehlt die
Längenangabe, wird n = 1 angenommen. Bedingung: n <= 4

FLn

enum-of E: n

Die Variable ist die Aufzählung E, die n Bytes belegt. Fehlt die
Längenangabe, wird n = 1 angenommen (n <= 4).

XLn

pointer

Die Variable ist eine Adresse oder ein Adresswert.

A