Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

Makro-Syntax für GUARDS-Makros

Die Makro-Operanden können in zwei Gruppen eingeteilt werden:

  • Formatoperanden, die die Form und die Generierung des Makros festlegen; Formatoperanden sind im Handbuch „Makroaufrufe an den Ablaufteil“ [16] beschrieben. Ihre Metasyntax entspricht der üblichen von BS2000-Makro-Formatoperanden.

  • Funktionsoperanden, die schnittstellenspezifisch den Inhalt des Parameterbereichs festlegen.

Die Metasyntax der Funktionsoperanden und deren Werte sind in diesem Abschnitt beschrieben.

Beschreibung eines Funktionsoperanden

Die Beschreibung eines Funktionsoperanden hat die folgende Form:

operandenname = operandenwerte

Operanden mit Standardwerten sind optional. Operanden, die keinen Standardwert besitzen, sind für die Form MF=L Pflichtoperanden. Ausnahmen finden sich bei der Beschreibung der Operanden.

Operandenwerte können direkt oder indirekt angegeben werden. Bei der direkten Angabe wird der Wert als Literal oder als Schlüsselwort angegeben. Bei der indirekten Angabe wird der Wert über eine Variable oder in einem Register übergeben.

Direkte Angabe

Die Datentypen der Operandenwerte werden in spitzen Klammern eingeschlossen:

operandenname = <datentyp n..m>

operandenname = <c-string: sdf-datentyp n..m>

Der Zusatz n..m zu Datentypen ermöglicht die Angabe eines zulässigen Wertebereichs oder einer zulässigen Länge. Wenn für den Datentyp ein Wertebereich angegeben ist, gilt dieser auch für die Variablen- oder Registerangabe und wird dort nicht erneut angegeben.

Beispiel
  • im Syntaxdiagramm: TYPE=<integer 0..255>

  • bei der Eingabe: TYPE=100

  • im Syntaxdiagramm: NAME=<c-string: filename 1..40>

  • bei der Eingabe: NAME=’MYGUARD’

Variable Angabe

Wenn als Operandenwert auch eine Variable angegeben werden kann, wird der Typ der Variablen in spitze Klammern eingeschlossen und mit „var:“ eingeleitet. Dies bedeutet, dass der Inhalt der Variable dem angegebenen Typ entsprechen muss. Bei der Eingabe ist nur der Variablenname (Bezeichner) anzugeben.

operandenname = <var: variablentyp(n)>

Beispiel
  • im Syntaxdiagramm: NAME=<var: char(24)>

  • bei der Eingabe: NAME=MYGUARD

Dabei ist MYGUARD der Bezeichner für das Datenfeld der Länge 24, in dem der Name abgelegt ist.

Der Zusatz n in runden Klammern bezeichnet die Länge des Datenfelds.

Registerangabe

Wenn als Wert eines Operanden auch eine (in Klammern stehende) Registerangabe möglich ist, müssen zwei Fälle unterschieden werden:

Das Register enthält den Wert direkt:

operandenname = (<reg: variablentyp(n)>)

Beispiel
  • im Syntaxdiagramm: TYPE=(<reg: integer(1)>)

  • bei der Eingabe: TYPE=(9)
    Dabei enthält Register 9 die entsprechende Zahl

Das Register enthält die Adresse, die auf das Datenfeld zeigt, in dem der Wert zu finden ist:

operandenname = (<reg: A(variablentyp(n))>)

Beispiel
  • Im Syntaxdiagramm: IOAREA=(reg: A(<char(8)>))

  • bei der Eingabe: IOAREA=(9)
    wobei Register 9 die Adresse des Bereichs enthält.

Elemente der Metasyntax

Kennzeichen

Beschreibung

GROSSBUCHSTABEN

Großbuchstaben bezeichnen Schlüsselwörter oder Konstanten, die in dieser Form vom Benutzer angegeben werden müssen. Schlüsselwörter beginnen mit *.
Beispiel: DIALOG=*STD

Kleinbuchstaben

Kleinbuchstaben bezeichnen Typen der Werte oder Variablen, die vom Benutzer angegeben werden können.
Beispiel: NAME=<var:char(40)>

Unterstreichung

Der Unterstrich kennzeichnet den Standardwert eines Operanden für MF=L.
Beispiel: DIALOG=*STD

Gleichheitszeichen =

Das Gleichheitszeichen „=“ trennt den Operanden vom Operandenwert.

Schrägstrich /

Der Schrägstrich trennt einfache alternative Operandenwerte.
Beispiel: DIALOG=*STD / *NO

< >

Spitze Klammern kennzeichnen den Datentyp des Operanden.
Beispiel: <var:char(40)>

list-poss(n):

Aus den Operandenwerten, die list-poss folgen, kann eine Liste gebildet werden. n beschreibt die maximale Anzahl Elemente in der Liste.
Die Liste muss in runde Klammern eingeschlossen werden, falls mehr als ein Element angegeben wird.
Beispiel: list-poss(3): *YOU / *HE / *US

structure(n):

Der Operandenwert besteht aus einer Liste von n Werten unterschiedlicher Bedeutung (vergl. array). Die Bedeutung der Werte ist von ihrer Stellung in der Liste abhängig. Der Datentyp der einzelnen Elemente wird unter „(m) elementbezeichner:“ beschrieben. Die Liste muss in runden Klammern eingeschlossen sein.
Beispiel: CHKPROC=structure(2):

(m) elementbezeichner:

Beschreibt das m-te Element einer „structure“-Liste. „elementbezeichner“ beschreibt die Bedeutung des Elements in der structure-Liste.
Beispiel:
(1) name: <c-string 32>
(2) address: A(<name>)
name und address sind hier die Elementbezeichner.

array(n):

Der Operandenwert besteht aus einer Liste von maximal n gleichartigen Elementen. Die Liste muss in runde Klammern eingeschlossen sein, falls sie mehr als ein Element hat.

Datentypen der Operandenwerte

Datentyp

Zeichenvorrat    

Besonderheiten

c-string

EBCDIC-Zeichen

ist in Hochkommata einzuschließen und ohne einleitendes „C“ anzugeben. Hochkommata in der Zeichenkette sind doppelt anzugeben. Eine inhaltliche Bedeutung der Angabe wird anschließend in SDF-Schreibweise angegeben, abgetrennt durch Doppelpunkt. Der Zusatz n..m beschreibt die Eingabelänge.
Beispiel:
im Syntaxdiagramm:
GUARD=<c-string: filename 1..54>
bei der Eingabe:
GUARD=’GUARDEXA’

x-string

Sedezimal
00..FF

Ist in Hochkommata einzuschließen, der Buchstabe X muss vorangestellt werden: X’xxxx’. Der Zusatz n..m beschreibt die maximale Eingabelänge in Bytes
Beispiel:
im Syntaxdiagramm: PASSWORD=<x-string 1..10>
bei der Eingabe: PASSWORD=X’FF00AA1122

name

A..Z, 0..9, $, #, @

Bezeichner. Das Format ist der jeweiligen Operandenbeschreibung zu entnehmen.
Beispiel:
im Syntaxdiagramm: PARAM=<name 1..8>
bei der Eingabe: PARAM=MYPARAM

label

A..Z
0..9
$,#,@

Kennzeichnet eine Marke.
Beispiel:
OUTAREA=structure (2):
(1) address: <label>

integer

0..9,+,-

„+“ bzw. „-“ kann nur erstes Zeichen sein. Der Zusatz n..m beschreibt den zulässigen Wertebereich.
Beispiel:
im Syntaxdiagramm: TIMEN=<integer 1..4>
bei der Eingabe: TIMEN=1

var:


Leitet eine variable Angabe ein. Nach dem Doppelpunkt folgt der Datentyp der Variablen.
Beispiel:
im Syntaxdiagramm: GUARD=<var: char(40)>
bei der Eingabe: GUARD=GUARDVAR

reg:


Leitet eine Register-Angabe ein. Nach dem Doppelpunkt folgt der Datentyp des Registerinhalts. Bei der Eingabe kann ein Register oder ein Register-EQUATE verwendet werden.

Datentypen der Variablen und Registerinhalte

Datentyp

Bedeutung

char(n)

Kennzeichnet eine Zeichenkette der Länge n. Fehlt die Längenangabe, wird n=1 angenommen.

integer (n)

Kennzeichnet eine Ganzzahl, die n byte belegt, wobei n<=4 gilt. Fehlt die Längenangabe, wird n=1 angenommen.

enum NAME(n)

Kennzeichnet eine Aufzählung, die n byte belegt, wobei n<=4 gilt. Fehlt die Längenangabe, wird n=1 angenommen.

A(variablentyp(n))

Adresse des Datenfeldes.

pointer

Zeiger (die Adresse wird übergeben).