INCLUDE

#### Search Results

Search

# INCLUDE

`INCLUDE` copycode-name [operand1 99]

Dieses Dokument behandelt folgende Themen:

- Funktion

- Syntax-Beschreibung

- Beispiele

Eine Erläuterung der in dem Syntax-Diagramm verwendeten Symbole entnehmen Sie dem Abschnitt Syntax-Symbole.

## Funktion

Das Statement `INCLUDE` dient dazu, den Sourcecode eines externen Objekts vom Typ Copycode bei der Kompilierung in ein anderes Objekt einzufügen.

Das `INCLUDE`-Statement wird bei der Kompilierung ausgewertet. Die Sourcecode-Zeilen des Copycodes werden nicht physisch in den Sourcecode des Programms eingefügt, das das `INCLUDE`-Statement enthält, und der eingefügte Copycode ist als Teil des Objektmoduls im kompilierten Programm enthalten.

Anmerkung
Eine Sourcecode-Zeile, die ein `INCLUDE`-Statement enthält, darf kein anderes Statement enthalten.

## Syntax-Beschreibung

Operanden-Definitionstabelle:

Operand | Mögliche Struktur | Mögliche Formate | Referenzierung erlaubt | Dynam. Definition
--- | --- | --- | --- | ---
operand1 | C |  |  |  |  | A | U |  |  |  |  |  |  |  |  |  |  |  | nein | nein

Syntax-Element-Beschreibung:

Syntax-Element | Beschreibung
--- | ---
`copycode-name` | Copycode-Name: Als copycode-name geben Sie den Namen des Copycodes an, dessen Source eingefügt werden soll. Die Groß-/Kleinschreibung des Namens wird nicht verändert. Der copycode-name kann ein Kaufmännisches Und (&) enthalten; bei der Kompilierung wird dieses Zeichen durch den aus einem Zeichen bestehenden Code ersetzt, der dem aktuellen Wert der Systemvariablen `*LANGUAGE` entspricht. Diese Funktion ermöglicht die Verwendung mehrsprachiger Copycode-Namen. Das Objekt, dessen Namen Sie angeben, muss vom Objekttyp Copycode sein. Der Copycode muss entweder in derselben Library gespeichert sein wie das Programm, das das `INCLUDE`-Statement enthält, oder in der betreffenden Steplib (Standard-Steplib ist `SYSTEM`). Wenn der Sourcecode des Copycodes verändert wird, müssen alle Programme, in denen der Copycode eingefügt ist, neu kompiliert werden, damit die Änderungen in den Objektmodulen zum Tragen kommen. Der Sourcecode des Copycodes muss aus syntaktisch vollständigen Statements bestehen.
`operand1` | Dynamisch einzufügende Werte: In den einzufügenden Copycode können Sie dynamisch Werte einsetzen. Diese Werte werden mit operand1 angegeben. Im Copycode werden die Werte mit der folgenden Notation referenziert:
    &n&
d.h. Sie markieren die Stelle, an der ein Wert eingesetzt werden soll, mit `&n&`. n ist die laufende Nummer des mit dem `INCLUDE`-Statement übergebenen Wertes. Zum Beispiel würde sich `&3&` auf den dritten übergebenen Wert beziehen. Für jede `&n&`-Notation im Copycode müssen Sie im `INCLUDE`-Statement einen Wert angeben. Wenn der Copycode beispielsweise `&5&` enthält, muss operand1 mindestens fünfmal angegeben werden. Sie können einen Copycode-Parameter (`&n&`) hinter dem anderen ohne Leerzeichen (d.h. `&1&&2&&3&`) schreiben. Diese Methode wird zur Verkettung mehrerer Copycode-Parameter mit einer Source benutzt. Eine Zeichenkette kann einem oder mehreren Copycode- Parametern ohne ein Leerzeichen folgen (d.h. `&1&abc` oder `&1&&2&abc`). Diese Methode wird zur Verkettung einer Zeichenkette mit mehreren Copycode-Parametern benutzt. Anmerkung Da `&n&` ein gültiger Teil eines Namens ist, darf diese Notation nicht als Ersatzzeichen für einen Copycode-Parameter in anderen, oben beschriebenen Positionen (d.h. `abc&1&` or `&1&abc&2&`) benutzt werden. Mit anderen Worten kann eine Zeichenkette nur hinter Copycode-Parametern auftreten, nicht davor oder dazwischen. Mit dem `INCLUDE`-Statement angegebene Werte, die im Copycode nicht referenziert werden, werden ignoriert.

## Beispiele

- Beispiel 1 - INCLUDE-Statement mit einzufügendem Copycode

- Beispiel 2 - INCLUDE-Statement mit einzufügendem Copycode mit Parametern

- Beispiel 3 - INCLUDE-Statement mit geschachtelten Copycodes

- Beispiel 4 - INCLUDE-Statement mit verketteten Parametern in Copycode

### Beispiel 1 - INCLUDE-Statement mit einzufügendem Copycode

`INCEX1` ist das Programm, das das `INCLUDE`-Statement enthält:

    ** Example 'INCEX1': INCLUDE  (include copycode)
    ************************************************************************
    *
    WRITE 'Before copycode'
    *
    INCLUDE INCEX1C
    *
    WRITE 'After copycode'
    *
    END

Einzufügender Copycode `INCEX1C`:

    ** Example 'INCEX1C': INCLUDE (copycode used by INCEX1)
    ************************************************************************
    *
    WRITE 'Inside copycode'

Ausgabe des Programms `INCEX1`:

    Page      1                                                  05-01-25  16:26:36

    Before copycode
    Inside copycode
    After copycode

### Beispiel 2 - INCLUDE-Statement mit einzufügendem Copycode mit Parametern

`INCEX2` ist das Programm, das das `INCLUDE`-Statement enthält:

    ** Example 'INCEX2': INCLUDE  (include copycode with parameters)
    ************************************************************************
    DEFINE DATA LOCAL
    1 EMPL-VIEW VIEW OF EMPLOYEES
      2 NAME
    END-DEFINE
    *
    *
    INCLUDE INCEX2C 'EMPL-VIEW' 'NAME' '''ARCHER''' '20' '''BAILLET'''
    *
    END

Einzufügender Copycode `INCEX2C`:

    ** Example 'INCEX2C': INCLUDE (copycode used by INCEX2)
    ************************************************************************
    * Transferred parameters from INCEX2:
    *
    * &1& : EMPL-VIEW
    * &2& : NAME
    * &3& : 'ARCHER'
    * &4& : 20
    * &5& : 'BAILLET'
    *
    *
    READ (&4&) &1&  BY &2&  = &3&
      DISPLAY &2&
      IF &2& = &5&
        WRITE 5X 'LAST RECORD FOUND' &2&
        STOP
      END-IF
    END-READ
    *
    * Statements above will be completed to:
    *
    * READ (20) EMPL-VIEW  BY NAME  = 'ARCHER'
    *   DISPLAY NAME
    *   IF NAME = 'BAILLET'
    *     WRITE 5X 'LAST RECORD FOUND' NAME
    *     STOP
    *   END-IF
    * END-READ

Ausgabe des Programms `INCEX2`:

    Page      1                                                  05-01-25  16:30:43

            NAME
    --------------------

    ARCHER
    ARCONADA
    ARCONADA
    ARNOLD
    ASTIER
    ATHERTON
    ATHERTON
    ATHERTON
    AUBERT
    BACHMANN
    BAECKER
    BAECKER
    BAGAZJA
    BAILLET
         LAST RECORD FOUND BAILLET

### Beispiel 3 - INCLUDE-Statement mit geschachtelten Copycodes

`INCEX3` ist das Programm, das das `INCLUDE`-Statement enthält:

    ** Example 'INCEX3': INCLUDE  (using nested copycodes)
    ************************************************************************
    DEFINE DATA LOCAL
    1 #A (I4)
    END-DEFINE
    *
    MOVE 123 TO #A
    WRITE 'Program  INCEX3  ' '=' #A
    *
    INCLUDE INCEX31C '#A' '5'            /* source line is #A := 5
    *
    *
    MOVE 300 TO #A
    WRITE 'Program  INCEX3  ' '=' #A
    *
    INCLUDE INCEX32C '''#A'''  '''20'''  /* source line is #A := 20
    *
    WRITE 'Program  INCEX3  ' '=' #A
    END

Einzufügender Copycode `INCEX31C`:

    ** Example 'INCEX31C': INCLUDE (copycode used by INCEX3)
    ************************************************************************
    * Transferred parameters from INCEX3:
    *
    * &1& : #A
    * &2& : 5
    *
    *
    &1& := &2&
    *
    WRITE 'Copycode INCEX31C' '=' &1&

Einzufügender Copycode `INCEX32C`:

    ** Example 'INCEX32C': INCLUDE (copycode used by INCEX3)
    ************************************************************************
    * Transferred parameters from INCEX3:
    *
    * &1& : '#A'
    * &2& : '20'
    *
    *
    WRITE 'Copycode INCEX32C' &1& &2&
    *
    INCLUDE INCEX31C &1& &2&

Ausgabe des Programms `INCEX3`:

    Page      1                                                  05-01-25  16:35:36

    Program  INCEX3   #A:         123
    Copycode INCEX31C #A:           5
    Program  INCEX3   #A:         300
    Copycode INCEX32C #A 20
    Copycode INCEX31C #A:          20
    Program  INCEX3   #A:          20

### Beispiel 4 - INCLUDE-Statement mit verketteten Parametern in Copycode

`INCEX4` ist das Programm, das das `INCLUDE`-Statement enthält:

    ** Example 'INCEX4': INCLUDE  (with concatenated parameters in copycode)
    ************************************************************************
    DEFINE DATA LOCAL
    1 #GROUP
      2  ABC(A10) INIT <'1234567890'>
    END-DEFINE
    *
    INCLUDE INCEX4C  '#GROUP.'  'ABC'  'AB'
    *
    END

Einzufügender Copycode `INCEX4C`:

    ** Example 'INCEX4C': INCLUDE (copycode used by INCEX4)
    ************************************************************************
    * Transferred parameters from INCEX4:
    *
    * &1& : #GROUP.
    * &2& : ABC
    * &3& : AB
    *
    *
    WRITE  '=' &2&          /* 'ABC'             results into ABC
    WRITE  '=' &1&ABC       /* '#GROUP.' ABC     results into #GROUP.ABC
    WRITE  '=' &1&&2&       /* '#GROUP.' 'ABC'   results into #GROUP.ABC
    WRITE  '=' &1&&3&C      /* '#GROUP.' 'AB' C  results into #GROUP.ABC

Ausgabe des Programms `INCEX4`:

    Page      1                                                  05-01-25  16:37:59

    ABC: 1234567890
    ABC: 1234567890
    ABC: 1234567890
    ABC: 1234567890

### On this page

- Funktion
- Syntax-Beschreibung
- Beispiele