Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

@PARAMS - Definieren von Prozedur-Parametern

&pagelevel(3)&pagelevel

Mit der Anweisung @PARAMS können symbolischen Parameter definiert werden, die innerhalb einer @DO-Prozedur benutzt werden. Man unterscheidet Stellungsparameter und Schlüsselwortparameter.

Die Parameter können als Zeichenvariablen betrachtet werden, die vor dem Ausführen der EDT-Prozedur durch den jeweiligen Wert ersetzt werden, der beim Aufruf der Prozedur in der @DO-Anweisung angegeben wurde oder der bei Schlüsselwortparametern als Standardwert in der @PARAMS-Anweisung selbst definiert ist.

Operation

Operanden

@PROC

@PARAMS

[formal[,...] ] [ [,] {formal=param} [,...] ]

formal

Formaler (symbolischer) Parameter. Ein Parameter beginnt mit dem
Zeichen &. Ihm folgt ein Buchstabe (A..Z, a..z), dem bis zu sechs weitere
Buchstaben oder Ziffern folgen können. Es dürfen auch Kleinbuchstaben
verwendet werden. Dabei ist aber zu beachten, dass der EDT zwischen
Groß- und Kleinbuchstaben unterscheidet. Die Angaben &A und &a
bezeichnen also zwei verschiedene Parameter. Die in einer Arbeitsdatei
verwendeten Parameternamen gelten nur innerhalb dieser Arbeitsdatei.
Bei Angabe eines unzulässigen formalen Parameters wird die Ausführung
der Prozedur mit der Meldung EDT4924 abgelehnt.

param

Standardwert des Schlüsselwortparameters. Der angegebene Wert wird in
der Prozedur eingesetzt, wenn beim Aufruf der Prozedur mit der
@DO-Anweisung für diesen Schlüsselwortparameter kein anderer Wert
spezifiziert wird. Schlüsselwortparameter müssen nach allen
Stellungsparametern vereinbart werden.

Die Anweisung @PARAMS muss in der ersten Zeile einer @DO-Prozedur stehen. Eine @PARAMS-Anweisung in Folgezeilen führt zur Ausgabe der Meldung EDT5479 und wird ignoriert. Fehler in der @PARAMS-Anweisung verhindern die Ausführung der Prozedur und werden von @DO gemeldet. Die @PARAMS-Anweisung ist nicht eigentlicher Bestandteil der Prozedur, kann also z.B. auch nicht angesprungen werden, wird bei der Ausführung mit @DO...PRINT nicht protokolliert und wird bei Prozeduren mit äußeren Schleifen auch nicht mehrfach ausgeführt.

Es muss mindestens ein formaler Parameter angegeben werden, sonst wird die Ausführung der Prozedur mit der Meldung EDT4918 abgelehnt. Die gleiche Meldung erfolgt, wenn ein Parameter nicht mit & beginnt oder nach einem Komma kein weiterer Parameter folgt.

Werden Stellungsparameter nach Schlüsselwortparametern angegeben, erfolgt die Meldung EDT4948. Wird ein Schlüsselwortparameter mehrfach angegeben, wird die Fehlermeldung EDT3910 ausgegeben. Für sonstige Fehler wird die Meldung EDT5478 ausgegeben.

Die Anzahl der in @PARAMS möglichen formalen Parameter ist nur durch die maximale Länge einer EDT-Anweisung beschränkt.

Der EDT ignoriert in der @PARAMS-Anweisung Leerzeichen, die unmittelbar vor bzw. nach einem Parameternamen auftreten. Die im Kompatibilitäts-Modus mögliche Angabe von Leerzeichen innerhalb des Parameternamens wird nicht mehr unterstützt.

In Schlüsselwortparametern steht hinter dem Parameternamen (Schlüsselwort) ein Gleichheitszeichen. Dem Gleichheitszeichen folgt der Standardwert dieses Parameters. Schlüsselwortparameter erhalten den aktuellen Wert ebenfalls aus der Parameterliste im @DO-Aufruf. Falls er dort fehlt, wird der vordefinierte Standardwert aus @PARAMS eingesetzt. Der zugewiesene Standardwert ergibt sich aus allen angegebenen Zeichen, einschließlich der Leerzeichen. Soll einem Schlüsselwortparameter kein Standardwert zugewiesen werden, ist unmittelbar nach dem Gleichheitszeichen ein Komma anzugeben oder @PARAMS zu beenden. Alternativ kann auch die leere Zeichenfolge '' explizit als Standardwert angegeben werden.

Der Standardwert eines Schlüsselwortparameters kann in Hochkommas eingeschlossen werden, diese werden nicht übernommen, wenn sie als erstes und letztes Zeichen des Parameterwerts auftreten und dazwischen entweder keine oder nur doppelte Hochkommas auftreten. In allen anderen Fällen bleiben alle angegebenen Hochkommas Bestandteil des Parameters (siehe Beispiele). Die Zeichen Komma und schließende Klammer können nur Bestandteil eines Parameters sein, wenn sie innerhalb einer durch Hochkomma eingeschlossenen Teilzeichenfolge des Parameterwertes vorkommen. Hochkommas müssen immer paarig in einem Parameterwert vorkommen. Ein einzelnes Hochkomma kann nicht in einem Parameterwert übergeben werden. Wurde zuvor mit @QUOTE einem anderen Zeichen die Funktion des Hochkommas zugeordnet, gilt dies nicht für die den Standardwert einschließenden Hochkommas.

Wird für einen Stellungsparameter beim Aufruf der Prozedur mit @DO kein Wert angegeben, so erhält er als Wert die leere Zeichenfolge. Wird für einen Schlüsselwortparameter beim Aufruf der Prozedur mit @DO kein Wert angegeben, so erhält er als Wert den in der @PARAMS-Anweisung definierten Standardwert.

Die Stellungsparameter müssen bei @PARAMS und bei @DO in der gleichen Reihenfolge angegeben sein. Die Reihenfolge der Schlüsselwortparameter kann bei @PARAMS und bei @DO verschieden sein (siehe @DO-Anweisung).

Kommt in der Prozedurdatei eine Zeichenfolge vor, die mit & beginnt und syntaktisch einen formalen Parameter bezeichnen könnte, der aber in der @PARAMS-Anweisung nicht deklariert ist oder fehlt die @PARAMS-Anweisung ganz, findet für diese Zeichenfolgen keine Ersetzung statt.

Die Parameter können innerhalb der Prozedur an beliebiger Stelle verwendet und mit anderen Zeichenfolgen und Parametern verkettet werden.

Folgt innerhalb der Prozedur auf den formalen Parameter unmittelbar ein Buchstabe, eine Ziffer oder ein Punkt, muss der formale Parameter von diesem Zeichen durch einen Punkt abgetrennt werden (außer für Parameternamen mit maximaler Länge 7).

Ein einzelner Punkt nach einem formalen Parameter wird als Trennzeichen interpretiert und bei der Ersetzung des formalen Parameters durch seinen Wert nicht übernommen (siehe Beispiele). Dies gilt unabhängig von dem Zeichen, das auf den Punkt folgt.

Soll eine Zeichenfolge, die mit & beginnt und einem bei @PARAMS angeführten formalen Parameter entspricht, in der Prozedurdatei nicht durch den aktuellen Parameterwert ersetzt werden, ist das Zeichen & doppelt anzugeben. Beim Ablauf der Prozedur wird eines der beiden & entfernt. Auch sonstige doppelt auftretende & werden durch nur ein & ersetzt, wenn die Prozedur eine @PARAMS-Anweisung enthält.

Wird in der Prozedur ein formaler Parameter durch den aktuellen Parameterwert ersetzt, kann dies zur Folge haben, dass die Zeile die maximal erlaubte Zeilenlänge überschreitet. Das führt zur Fehlermeldung EDT1938 bei der Ausführung der Prozedur. Die betroffene Zeile wird dann nicht ausgeführt.

Zur Behandlung von Zeichensätzen bei der Parameterbearbeitung sei auf den Abschnitt „EDT-Prozeduren“ und die Anweisung @DO verwiesen.

Eine indirekte Operandenangabe ist bei dieser Anweisung nicht erlaubt.

Beispiel 1

Angabe Parameterwert

substituierte Zeichenfolge

&F=A,...

&F=,...

&F='',...

&F='BLANK'ABC'BLANK',...

&F='X',...

&F='X''X',...

&F='X'Y'X',...

&F='AB'C,...

&F='BLANK''ABC',...

&F='BLANK',...

&F=',)',...

&F=A','B,...

A

leere Zeichenfolge

leere Zeichenfolge

'BLANK'ABC'BLANK'

X

X''X

'X'Y'X'

'AB'C

'BLANK''ABC'

'BLANK'

,)

A','B

Beispiel 2

Zeile in Prozedurdatei

Parametereingabe

Erzeugte Zeile

&PARAM(BC)

&PARAM.(BC)

&PARAM..(BC)

&PARAM..BC

&PARAM.2BC

&PARAMBC

&PARAM,.2B

BC&PARAM

BC,&PARAM

B2&PARAM

&PARAM.&PARAM

&PARAM&PARAM

&PARAM..&PARAM

&PARAM&&PARAM

@ON &F'&SEARCH'

@SET #S1=&STR

&DATA

@P RANGE

&CMD #S1

&PARAM=A

&PARAM=A

&PARAM=A

&PARAM=A

&PARAM=A

&PARAM=A

&PARAM=A

&PARAM=A

&PARAM=A

&PARAM=A

&PARAM=A

&PARAM=A

&PARAM=A

&PARAM=A

&SEARCH=A''B

&STR='BLANK''TEXT'

&DATA='A'B

&RANGE='3,7'

&CMD=@PRINT

A(BC)

A(BC)

A.(BC)

A.BC

A2BC

&PARAMBC

A,.2B

BCA

BC,A

B2A

AA

AA

A.A

A&PARAM

@ON &F'A''B'

@SET #S1='BLANK''TEXT'

'A'B

@P 3,7

@PRINT #S1

Beispiel 3

   7.     @PRINT
   1.0000 WAS JETZT
   2.0000 AUSGEGEBEN
   3.0000 WERDEN SOLL,
   4.0000 WIRD ERST
   5.0000 IM @DO-KOMMANDO
   6.0000 ENTSCHIEDEN
   7.     @SET #S3 = '*** SO IST ES ***'
   7.     @PROC 1
   1.     @ @PARAMS &ZEILEN -------------------------------------------- (1)
   2.     @ @NOTE Gib &ZEILEN aus
   3.     @ @PRINT &ZEILEN --------------------------------------------- (2)
   4.     @END
   7.     @DO 1(2-4) --------------------------------------------------- (3)
   2.0000 AUSGEGEBEN
   3.0000 WERDEN SOLL,
   4.0000 WIRD ERST
   7.     @DO 1(#S3),PRINT
   7.     @NOTE Gib #S3 aus -------------------------------------------- (4)
   7.     @PRINT #S3
     #S03 *** SO IST ES ***
   7.     @DO 1(2,4N) -------------------------------------------------- (5)
 %  EDT4963 TOO MANY OPERANDS
   7.     @DO 1('2,4N') ------------------------------------------------ (6)
   2.0000 AUSGEGEBEN
WIRD ERST
   7.
(1)Innerhalb der Arbeitsdatei 1 wird in der ersten Zeile der Stellungsparameter &ZEILEN vereinbart.
(2)Dieser Parameter taucht innerhalb von @PRINT auf. Welche Zeilen nun ausgegeben werden sollen, hängt von dem in der @DO-Anweisung genannten Parameterwert ab.
(3)Die Arbeitsdatei 1 wird ausgeführt. Vor der Ausführung der einzelnen Anweisung wird jedoch dem Parameter &ZEILEN der Wertbereich 2-4 zugeordnet.
(4)Besonders deutlich kommt das Einsetzen des Parameterwertes zum Ausdruck, wenn man sich die einzelnen Prozeduranweisungen vor ihrer Ausführung auf dem Bildschirm ausgeben lässt, weil hier bereits das Einsetzen des Parameterwertes vorgenommen wurde.
(5)Versucht man beispielsweise, die Zeile 2 mit Zeilennummer und die Zeile 4 ohne Zeilennummer auszugeben, wird ein Komma, das Bestandteil des Parameterwertes ist, als Trennzeichen zweier Parameter interpretiert und dieses @DO damit abgelehnt.
(6)Ein Parameterwert lässt sich auch innerhalb von Hochkommas übergeben. Hierbei wird dem Parameter &ZEILEN der Wert zugeordnet, der zwischen den Hochkommas steht. Damit können auch Kommas als Bestandteil eines Parameterwertes übergeben werden.


Beispiel 4

   1.     @PROC 2
   1.     @ @PARAMS &STRVAR1,&STRVAR2,&INHALT1=**** --------------------- (1)
   2.     @ @SET &STRVAR1 = '&INHALT1'
   3.     @ @SET #S2 = '&STRVAR1'
   4.     @ @SET #S3 = &STRVAR1
   5.     @ @SET &STRVAR2 = &STRVAR1
   6.     @ @SET #S4 = 'VON &STRVAR1 BIS &STRVAR2'
   7.     @ @PRINT &STRVAR1,&STRVAR2,#S2,#S3,#S4
   8.     @END
   1.     @DO 2(#S0,#S1) ------------------------------------------------ (2)
     #S00 ****
     #S01 ****
     #S02 #S0
     #S03 ****
     #S04 VON #S0 BIS #S1
   1.     @DO 2(#S15,#S13,INHALT1=AUWEIA) ------------------------------- (3)
     #S15 AUWEIA
     #S13 AUWEIA
     #S02 #S15
     #S03 AUWEIA
     #S04 VON #S15 BIS #S13
1.
(1)2 Stellungs- und 1 Schlüsselwortparameter werden für die Arbeitsdatei 2 definiert.
(2)Die Werte für die Stellungsparameter müssen bei @DO in der Reihenfolge angegeben werden, die der Reihenfolge der Stellungsparameter in der @PARAMS-Zeile entspricht. Hierbei wird bei Durchführung der Arbeitsdatei 2 für &STRVAR1 der Wert #S0 eingesetzt, für &STRVAR2 der Wert #S1. Da kein Wert für den Schlüsselwortparameter &INHALT1 angegeben ist, wird bei Durchführung der Standardwert – also **** – angenommen.
(3)Wird für einen Schlüsselwortparameter ein Parameterwert bei @DO angegeben, wird dadurch der Standardwert ersetzt.


Beispiel 5

1.     @PROC 3
1.     @ @PARAMS &A,&B,&C,&X=111,&Y=222,&Z=333 ----------------------- (1)
2.     @ @CREATE #S10: '&A','&B','&C','&X','&Y','&Z'
3.     @ @PRINT #S10
4.     @END
1.     @DO 3 (AAAAA,BB,CCCCCCC) -------------------------------------- (2)
  #S10 AAAAABBCCCCCCC111222333
1.     @DO 3 (AA,BBBB,C,Y=****,X=########) --------------------------- (3)
  #S10 AABBBBC########****333
1.
(1)Innerhalb der Arbeitsdatei 3 werden 3 Stellungs- und 3 Schlüsselwortparameter definiert.
(2)Die Arbeitsdatei 3 wird ausgeführt. Da jedoch kein Wert für einen Schlüsselwortparameter angegeben ist, werden hierfür die Standardwerte angenommen.
(3)Nun werden auch Werte für 2 Schlüsselwortparameter angegeben. Man beachte, dass die Reihenfolge der angegebenen Werte für die Schlüsselwortparameter nicht übereinstimmt mit der Reihenfolge der Definition der Schlüsselwortparameter in der @PARAMS-Zeile.