INCLUDE

INCLUDE   copycode-name   [operand1 99]

Dieses Dokument behandelt folgende Themen:

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

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