Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

Parameter

&pagelevel(5)&pagelevel

Die Anzahl der Argumente in der rufenden Quelleinheit muss gleich sein der Anzahl der formalen Parameter in der gerufenen Einheit. Eine Ausnahme bilden gegebenenfalls die formalen „trailing“ Parameter, die in der Procedure Division Überschrift der gerufenen Einheit mit einer OPTIONAL-Angabe spezifiziert sind und in der Liste der Argumente der aufrufenden Einheit nicht aufgeführt sind.
Ist entweder der formale Parameter oder das zugehörige Argument eine stark typisierte Datengruppe, müssen der formale Parameter und das Argument vom gleichen Typ sein (siehe Abschnitt „Typen").
Eine nationale Gruppe wird immer wie ein Datenelement behandelt.

Gruppenelemente

Ist entweder der formale Parameter oder das Argument ein Gruppenelement, so muss jeweils das entsprechende Argument oder der formale Parameter ein Gruppenelement oder ein alphanumerisches Datenelement sein. In diesem Fall darf der formale Parameter kürzer sein als der aktuelle Parameter.

Elementare Daten

Die Konformitäts-Regeln für Datenelemente hängen davon ab, ob ein Argument BY REFERENCE, BY CONTENT oder BY VALUE (Angaben in der CALL bzw. INVOKE-Anweisung) übergeben wird.

BY REFERENCE übergebene Datenelemente

Ist entweder der formale Parameter oder das entsprechende Argument eine Objektreferenz, so muss jeweils das zugehörige Argument oder der formale Parameter eine Objektreferenz sein, gemäß folgender Regeln:

  1. Ist entweder das Argument oder der formale Parameter eine universelle Objektreferenz, so muss die jeweilige Entsprechung auch eine universelle Objektreferenz sein.

  2. Ist entweder das Argument oder der formale Parameter mit einem Interfacenamen angegeben, so muss die jeweilige Entsprechung den gleichen Interfacenamen haben.

  3. Ist der formale Parameter mit einem Klassennamen spezifiziert, so muss das entsprechende Argument mit dem selben Klassennamen spezifiziert sein. Außerdem müssen die FACTORY- und ONLY-Angaben die gleichen sein.

  4. Ist der formale Parameter mit ACTIVE-CLASS spezifiziert, so muss eine der folgenden Bedingungen gelten:

    1. Das Argument muss mit ACTIVE-CLASS spezifiziert sein und die Methode muss mit einer der vordefinierten Objektreferenzen SELF oder SUPER oder mit einer Objektreferenz, die mit ACTIVE-CLASS spezifiziert ist, aufgerufen werden. Außerdem muss die FACTORY-Angabe für den formalen Parameter und das Argument gleich sein.

    2. Das Argument muss mit einem Klassennamen und der ONLY-Angabe spezifiziert sein und die Methode muss entweder mit diesem Klassennamen oder mit einer Objektreferenz, die mit diesem Klassennamen und der ONLY-Angabe spezifiziert ist, aufgerufen werden. Außerdem muss die FACTORY-Angabe für den formalen Parameter und das Argument gleich sein.

Ist weder der formale Parameter noch das Argument von der Klasse objekt, gelten folgende Regeln:

  1. Ist die gerufene Quelleinheit ein Programm, für das es im Repository-Paragrafen der rufenden Einheit keinen Eintrag eines Programmprototyp-Namen und in der CALL-Anweisung keine NESTED-Angabe gibt, muss der formale Parameter die gleiche Anzahl Zeichenpositionen haben, wie das entsprechende Argument.

  2. Ist die gerufene Quelleinheit eine der folgenden,

    • ein Programm, für das im Repository-Paragrafen der rufenden Einheit ein Programmprototyp-Name angegeben ist

    • ein Programm und in der CALL-Anweisung der rufenden Einheit ist NESTED angegeben

    • eine Methode

    dann muss die Definition der formalen Parameter und der Argumente die gleichen PICTURE, USAGE, SIGN, JUSTIFIED und BLANK WHEN ZERO Klauseln haben, mit folgenden zusätzlichen Bedingungen:
    • kommt in der Picture Klausel ein Dezimalpunkt vor, dann muss für die rufende und die gerufene Quelleinheit die gleiche DECIMAL-POINT IS COMMA Klausel gelten

    • hat der formale Parameter die SYNCHRONIZED Angabe, dann muss sie der aktuelle Parameter (Argument) auch haben oder auf Stufe 01 definiert sein.

    • Wenn der formale Parameter mit der ANY LENGTH-Klausel definiert ist, wird als seine Länge die Länge des entsprechenden Arguments angenommen.

    • Wenn das Argument mit der ANY LENGTH-Klausel definiert ist, muss der zugehörige formale Parameter ebenfalls mit der ANYLENGTH-Klausel definiert sein.

    • Wenn das Argument oder der formale Parameter ein typbezogener Zeiger ist, müssen beide typbezogene Zeiger und vom gleichen Typ sein.

    BY CONTENT oder BY VALUE übergebene Datenelemente

Ist der formale Parameter eine Objektreferenz, die mit ACTIVE-CLASS spezifiziert ist, so muss eine der folgenden Bedingungen gelten:

  1. Die Methode muss mit einer der vordefinierten Objektreferenzen SELF oder SUPER oder mit einer Objektreferenz, die mit ACTIVE-CLASS spezifiziert ist, aufgerufen werden und eine SET-Anweisung mit dem Argument als Sendefeld und einer mit ACTIVE-CLASS spezifizierten Objektreferenz mit gleicher FACTORY-Angabe wie der formale Parameter als Empfangsfeld muss in der rufenden Laufzeit-Einheit gültig sein.

  2. Die Methode muss mit einem Klassennamen oder mit einer Objektreferenz, die mit einem Klassennamen und der ONLY-Angabe spezifiziert ist, aufgerufen werden und eine SET-Anweisung mit dem Argument als Sendefeld und einer mit diesem Klassennamen und der ONLY-Angabe spezifizierten Objektreferenz mit gleicher FACTORY-Angabe wie der formale Parameter als Empfangsfeld muss in der rufenden Laufzeit-Einheit gültig sein.

Ist der formale Parameter eine Objektreferenz, die nicht mit ACTIVE-CLASS spezifiziert ist, dann sind die Konformitäts-Regeln die gleichen, wie wenn in der rufenden Laufzeit-Einheit eine SET-Anweisung ausgeführt wird, mit dem Argument als Sendefeld und dem entsprechenden formalen Parameter als Empfangsfeld.

Ist der formale Parameter nicht von der Klasse „objekt“, gelten folgende Konformitäts-Regeln:

  1. Ist die gerufene Quelleinheit ein Programm, für das es im Repository-Paragrafen der rufenden Einheit keinen Eintrag eines Programmprototyp-Namen und in der CALL-Anweisung keine NESTED-Angabe gibt, muss der formale Parameter die gleiche Anzahl Zeichenpositionen haben, wie das entsprechende Argument.

  2. Ist die gerufene Quelleinheit eine der folgenden,

    • ein Programm, für das im Repository-Paragrafen der rufenden Einheit ein Programmprototyp-Name angegeben ist

    • ein Programm und in der CALL-Anweisung der rufenden Einheit ist NESTED angegeben

    • eine Methode

    dann gelten folgende Regeln, abhängig von der Art des formalen Parameters:
    1. Ist der formale Parameter numerisch, muss eine COMPUTE-Anweisung, mit dem Argument als Sendefeld und dem entsprechenden formalen Parameter als Empfangsfeld, zulässig sein.

    2. Ist der formale Parameter ein Index-Datenelement oder ein Datenelement von der Klasse zeiger, muss eine SET-Anweisung, mit dem Argument als Sendefeld und dem entsprechenden formalen Parameter als Empfangsfeld, zulässig sein.

    3. In den übrigen Fällen muss eine MOVE-Anweisung, mit dem Argument als Sendefeld und dem entsprechenden formalen Parameter als Empfangsfeld, zulässig sein.

    4. Wenn der formale Parameter mit der ANYLENGTH-Klausel definiert ist, gilt:

      • Das zugehörige Argument muss von der Klasse alphabetisch, alphanumerisch oder national und mit der gleichen USAGE DISPLAY oder USAGE NATIONAL definiert sein.

      • Das zugehörige Argument darf nicht mit der ANY LENGTH-Klausel definiert sein.

      • Die Länge des formalen Parameters entspricht der Länge des Arguments.