Symbolersetzung - Grundlagen

#### Search Results

Search

# Symbolersetzung - Grundlagen

Symbole werden während der Aktivierung eines Job-Netzwerks oder Jobs oder beim Start eines Jobs ersetzt:

- Symbole mit vorangehendem Aktivierungsfluchtzeichen werden beim Laden der JCL als Teil der Jobaktivierung aufgelöst.

- Symbole mit vorangehendem Jobstartfluchtzeichen werden beim Jobstart aufgelöst.

Anmerkungen:

1. Wenn bei Jobstart ein Symbolersetzungsfehler auftritt, wird die Ereignis-JNR `'Job not run - JCL error'` auf `'occurred'` gesetzt. Falls die Ereignis-JNR nicht definiert ist, wird sie zum aktiven Job hinzugefügt.
2. BS2000: SYSJV-Referenzen (zum Beispiel `&($SYSJV.TSN)` werden nicht mehr als Entire Operations-Symbole behandelt, und zwar unabhängig davon, ob sie ein vorangestelltes kaufmännisches Und-Zeichen (`&`) haben, welches ein Aktivierungsfluchtzeichen oder Jobstartfluchtzeichen bedeutet.

Dieser Abschnitt behandelt folgende Themen:

- Fluchtzeichen zur Symbolersetzung

- Regeln und Einschränkungen für die Symbolersetzung

Siehe auch Symboltabellen-Typen und Symbol-Suchreihenfolge.

## Fluchtzeichen zur Symbolersetzung

In JCL und in Natural-Macro-Source verwendete Symbole müssen ein vorangestelltes Fluchtzeichen haben.

Sie können unterschiedliche Fluchtzeichen benutzen, um festzulegen, ob eine Symbolersetzung während der JCL-Generierung oder beim Job-Start erfolgen soll.

Folgende Fluchtzeichen können in Ihrer Entire Operations-Umgebung parallel verwendet werden:

- Aktivierungsfluchtzeichen

  Symbole mit einem vorangestellten Aktivierungsfluchtzeichen werden während der Aktivierung eines Netzwerks oder eines Jobs ersetzt.

  Wenn solche Symbole in einer JCL-Datei vorhanden sind, dann erfolgt eine Symbolersetzung:

  - Beim Editieren der JCL (temporär, unter Verwendung der Master-Symboltabelle).

  - Beim Laden der JCL (permanent, unter Verwendung der aktiven Symboltabelle).

- Startfluchtzeichen

  Symbole mit einem vorangestellten Startfluchtzeichen werden beim Jobstart ersetzt. Sie können verwendet werden, um Symbolwerte zu übergeben, die nicht zu einem früheren Zeitpunkt definiert werden können, wenn der Job aktiviert wird.

Vorsicht
Wenn Sie Fluchtzeichen-Definitionen für existierende JCL ändern, dann können zu ersetzende Symbole nicht mehr aufgefunden werden. In solchen Fällen sollten Sie in Betracht ziehen, Fluchtzeichen innerhalb Ihrer JCL oder Macro-Source zu definieren.

In diesem Abschnitt werden folgende Themen behandelt:

- Empfohlene Fluchtzeichen

- Fluchtzeichen definieren

### Empfohlene Fluchtzeichen

Es wird empfohlen, folgende Fluchtzeichen zu verwenden;

Betriebssystem | Fluchtzeichen
--- | ---
z/OS | `§` (Paragrafzeichen) und `$` (Dollarzeichen)
z/VSE | `§` (Paragrafzeichen) und `#` (Rautenzeichen)
BS2000 | `^` (Zirkumflex) und ``` (Gravisakzent) Benutzen Sie nicht das Dollarzeichen (`$`), das Paragraf-Zeichen (`§`) und das at-Zeichen (`@`), da diese Zeichen eine spezielle Bedeutung in BS2000 haben.
UNIX, Windows | Nicht empfohlen, außer bei UNIX: Benutzen Sie nicht das Dollarzeichen (`$`), da dieses eine spezielle Bedeutung in UNIX hat.

Vorsicht
Zweckmäßigerweise verwendet man keine Fluchtzeichen, die schon von anderen (betriebssystemspezifischen) JCL-Merkmalen benutzt werden, z.B. Parameter für DO-Prozeduren und SUBDTA-Zeichen in BS2000.

### Fluchtzeichen definieren

Sie können die Standard-Aktivierungsfluchtzeichen und -Startfluchtzeichen an folgenden Stellen definieren:

- Standardeinstellungen

  Das Register Netzwerk-Optionen im Dialog Entire Operations Standardwerte (siehe Systemverwaltung-Dokumentation) dient dazu, die Standardwerte für alle Netzwerke in Ihrer Entire Operations-Umgebung zu definieren.

  Auf der Registerkarte OS-Speziell können Sie außerdem die Standard-Fluchtzeichen für jedes Betriebssystem definieren.

- Netzwerk-Definition

  Definiert die Standard-Fluchtzeichen, die von allen Jobs eines Netzwerkes verwendet werden sollen.

- Job-Definition

  Definiert die Standard-Fluchtzeichen, die von einem einzelnen Job verwendet werden sollen.

- Definitionen in JCL und Macro-Source

  In JCL und Natural Macro-Source muss den zu ersetzenden Symbolen ein Fluchtzeichen vorangestellt werden.

  Sie können Standard-Fluchtzeichen in Entire Operations JCL oder in Macro-Source definieren, indem Sie eines oder beide der folgenden Meta-Statements in der (den) ersten Sourcecode-Zeile(n) kodieren:

      #EOR-ESC-ACT = activation-character
      #EOR-ESC-SUB = submit-character

  Beispiel:

      #EOR-ESC-ACT = §
      #EOR-ESC-SUB = ^

  Das Meta-Statement `#EOR-ESC-ACT = activation-character` wird ausgewertet, wenn die JCL, die dieses Statement enthält, geladen wird. Das als activation-character angegebene Zeichen setzt das aktuelle Aktivierungsfluchtzeichen in der aktuellen Datei außer Kraft. Es ist nur für die Symbolersetzung wirksam, jedoch nicht für Macro-Meta-Statements (Natural-Statements).

  Das Meta-Statement wird nach dem Laden aus der aktiven JCL entfernt.

  Das Meta-Statement `#EOR-ESC-ACT = submit-character` wird während des Jobstarts ausgewertet. Das als `submit-character` angegebene Zeichen setzt das aktuelle Startfluchtzeichen in der aktuellen Datei außer Kraft. Es ist nur für die Symbolersetzung wirksam, jedoch nicht für Macro-Meta-Statements (Natural-Statements).

  Das Meta-Statement bleibt nach dem Laden in der aktiven JCL erhalten.

  Beide Statements werden protokolliert, wenn sie beim Laden der JCL oder beim Jobstart ausgewertet werden.

  Wenn Sie ein Meta-Statement in einem Natural-Macro-Source-Objekt hinzufügen, müssen Sie die Sourcecode-Datei mit dem `MACRO`-Kommando neu katalogisieren.

  Anmerkung zur Verwendung von Trigraphen

  Bei der Trigraphen-Kodierung werden Fragezeichen (`?`) als Fluchtzeichen in der JCL-Definition verwendet. Sie können Konflikte bei der Dekodierung vermeiden, indem Sie die Trigraphen-Kodierung in der JCL aus- oder einschalten. Siehe Trigraphen-Kodierung ein- und ausschalten im Abschnitt Trigraphen-Kodierung für JCL-Start auf UNIX- und Windows-Knoten.

## Regeln und Einschränkungen für die Symbolersetzung

Dieser Abschnitt behandelt folgende Themen:

- Symboltabellen-Typen und Symbol-Suchreihenfolge

- Maßnahmen bei fehlenden Symbolen

- Verschachtelte Ersetzungen

- Rekursive Symbolersetzung

- Symbolersetzung in Job Control Language (JCL)

- Import-/Export-Einschränkungen

- Fluchtzeichen

- Beispiel: Rekursive Symbolersetzung

- Kennzeichen für das Ende eines Symbolnamens

- Algorithmus für die Symbolersetzung

- Feste Positionen in einer JCL-Zeile

- Symbolersetzung durch mehrfache Symbolwerte

- Symbolersetzung in Unternetzwerken

### Symboltabellen-Typen und Symbol-Suchreihenfolge

Im Folgenden werden die verfügbaren Symboltabellen-Typen und die in Entire Operations eingehaltene Reihenfolge beim Suchen und Ersetzen von Symbolen in Symboltabellen beschrieben.

Entire Operations sucht zuerst nach einem Symbol in der benutzerspezifischen aktiven Symboltabelle. Danach wird die benutzerspezifische Symboltabellen-Definition, die Standard-Symboltabelle des Netzwerks und zuletzt die systemweit gültige Symboltabelle durchsucht. Bei der Suche nach einem Symbol in einem Unternetzwerk werden die Symboltabellen des aufrufenden Jobs des Typs `NET` sowie, falls erforderlich, die Symboltabellen der übergeordneten Job-Netzwerke (in aufsteigender Reihenfolge) durchsucht.

Bei der Suche nach Symbolen wird folgende Reihenfolge eingehalten:

Symboltabellen-Typ | Beschreibung | Suchreihenfolge
--- | --- | ---
`JA` (Job Active) | Aktive Symboltabelle, die im aktiven Job referenziert wird. | 1
`NA` (Network Active) | Aktive Symboltabelle, die im aktiven Netzwerk referenziert wird. | 2
`NO` (Network, active, other symbol tables) | Andere aktive Symboltabellen des aktiven Netzwerks. Diese können durch das Setzen von Symbolen per API in einer Symboltabelle erstellt worden sein, die nicht auf Job- oder Netzwerkebene definiert ist. | 3
`CA` (Calling Job) | Aktive Symboltabelle, die im aufrufenden Job referenziert wird. Nur wenn der aktive Job innerhalb eines Unternetzwerks ist. Je nach Unternetzwerk-Verschachtelungsebene können mehrere Symboltabellen von aufrufenden Jobs durchsucht werden. Der Suchvorgang kann sich in aufsteigender Reihenfolge wiederholen. | 4
`CN` (Calling Network) | Aktive Symboltabelle, die im aufrufenden Netzwerk referenziert wird. Je nach Unternetzwerk-Verschachtelungsebene können mehrere Symboltabellen von aufrufenden Netzwerken durchsucht werden. Der Suchvorgang kann sich in aufsteigender Reihenfolge wiederholen. | 5
`JM` (Job Master) | Symboltabelle, die in der Job-Definition referenziert wird. | 6
`NV` (Network Version) | Symboltabelle, die in der Netzwerk-Version referenziert wird. | 7
`OD` (Owner Default) | Master-Symboltabelle `<owner> / A`. `<owner>` (Eigentümer) ist der aktuelle Eigentümer des aktiven Jobs. Die Symboltabelle `<owner> / A` wird durchsucht, auch wenn es auf der Job- und/oder Netzwerk-Ebene keine Symboltabellen-Definition gibt. | 8
`SD` (System Default) | Master-Symboltabelle `SYSDBA / A`. Die Symboltabelle `SYSDBA/A` wird durchsucht, auch wenn es auf der Job- und/oder Netzwerk-Ebene keine Symboltabellen-Definition gibt. | 9

Anmerkung
Wenn Sie die Verknüpfung zu der Symboltabelle bzw. den Symboltabellen in dem Objekt-Netzwerk, dem Master-Job oder dem aktiven Job aufrufen, erhalten Sie eine Liste mit den verwendbaren Symboltabellen für dieses Objekt in der oben genannten hierarchischen Reihenfolge.

### Maßnahmen bei fehlenden Symbolen

Wenn ein Symbol in keiner Symboltabelle gefunden werden kann, werden folgende Maßnahmen ausgelöst:

- Eine Meldung wird in das Protokoll geschrieben.
  Es wird eine Meldung in die System-Protokolldatei geschrieben, zum Beispiel:

      Symbol XYZ nicht gefunden
      ... Symboltabelle EXAMPLE/SYMTAB1

  Die protokollierte Symboltabelle (im obigen Beispiel `SYMTAB1`) ist die erste Symboltabelle, die in aufsteigender Reihenfolge in der Symboltabellen-Hierarchie durchsucht wird. Beispiel: Wenn auf Jobebene keine Symboltabelle definiert wurde, wird die für das Netzwerk definierte Symboltabelle protokolliert.

- Eine globale Nachricht wird gesendet
  Eine Nachricht `Symbol nicht gefunden`, die den Namen der durchsuchten Symboltabelle enthält, wird gesendet, wenn der globale Exit für Nachrichtenübermittlung in Ihrer Umgebung aktiviert ist. Siehe Globale Nachrichten für Ereignisse in der Systemverwaltung-Dokumentation.

- Eine globale Nachricht wird im Ereignisspeicher (Event Store) gespeichert
  Eine entsprechende Nachricht, die den Namen der durchsuchten Symboltabelle enthält, wird im Ereignisspeicher (Event Store) gespeichert, wenn in Ihrer Umgebung im Dialog Globale Nachrichten für Ereignisse bei der Nachricht Symbol nicht gefunden das Kontrollkästchen Event Store markiert ist. Siehe Globale Nachrichten für Ereignisse in der Systemverwaltung-Dokumentation.

- Das Problem wird durch einen globalen User-Exit behandelt
  Um das Problem wegen des fehlenden Symbols zu lösen und die Verarbeitung fortzusetzen, wird ein User-Exit aktiv, wenn in Ihrer Umgebung der globale Symbol nicht gefunden-Exit auf der Registerkarte Globale User Exits angegeben und aktiviert ist. Siehe Systemverwaltung-Dokumentation.

- Aktuelle Vorgänge werden abgebrochen
  Die aktuellen Vorgänge (z.B. das Laden von JCL) werden beendet, wenn ein durch fehlende Symbole verursachtes Problem nicht gelöst werden kann.

### Verschachtelte Ersetzungen

Innerhalb von verschachtelten Ersetzungen gelten folgende Regeln:

- Auf der obersten Ebene wird nur das "originäre" Fluchtzeichen geprüft und ersetzt.

- Wird das Aktivierungsfluchtzeichen auf einer verschachtelten Ebene benutzt, werden nur Aktivierungsfluchtzeichen auf tieferen Ebenen ersetzt. Dies ist erforderlich, um zu frühe Ersetzungen von Jobstartfluchtzeichen zu verhindern.

- Wird das Jobstartfluchtzeichen auf einer verschachtelten Ebene benutzt, werden Jobstartfluchtzeichen und Aktivierungsfluchtzeichen auf tieferen Ebenen ersetzt.

### Rekursive Symbolersetzung

Symbole können auch innerhalb anderer Symbole benutzt werden.

#### Beispiel:

Symbol | Wert
--- | ---
`PREFIX` | `EOR`
`STEPLIB` | `§PREFIX..EXAMPLE.LOAD`

`§STEPLIB` wird durch `EOR.EXAMPLE.LOAD` ersetzt.

Anmerkung
Falls ein Punkt ein Symbolende kennzeichnet, so wird er bei der Ersetzung gelöscht. Bei rekursiver Ersetzung geschieht diese Löschung jeweils pro Ersetzung. Es muss also eine genügende Anzahl Punkte codiert werden. Wenn am Symbolende ein Punkt erhalten bleiben soll, so müssen zwei Punkte codiert werden.

### Symbolersetzung in Job Control Language (JCL)

Bei der Symbolersetzung in Job Control Language (JCL), die auf Großrechner-Betriebssystemen (z/OS, BS2000 usw.) gestartet wird, gelten folgende Besonderheiten:

Spalte 72 enthält ein Leerzeichen und die Spalten 73 - 80 enthalten Ziffern. | Die Spalten 71 - 80 der Zeile werden vor der 1. Ersetzung gesichert und nach der letzten Ersetzung wieder zurückgeschrieben.
Spalte 72 enthält Bindestrich (-) und die Spalten 73 - 80 enthalten Leerzeichen. | Die Spalten 71 - 80 der Zeile werden vor der 1. Ersetzung gesichert und nach der letzten Ersetzung wieder zurückgeschrieben.
Spalte 71 - 80 enthält Komma (,) (8 Leerzeichen hinter dem Bindestrich) | Die Spalten 71 - 80 der Zeile werden vor der 1. Ersetzung gesichert und nach der letzten Ersetzung wieder zurückgeschrieben.
Zwischenergebnisse | Zwischenergebnisse können auch länger als 71 Zeichen sein. Sie werden erst am Ende der gesamten Ersetzung von eventuell gesicherten Strings überschrieben.

### Import-/Export-Einschränkungen

Bitte vermeiden Sie in Symbolwerten das Gleichheitszeichen (=), weil es Probleme beim Import oder Export von Symboltabellen verursacht.

### Fluchtzeichen

Zu ersetzende Symbole werden durch ein vorangehendes Fluchtzeichen JCL-weit erkannt.

Sie können vor einem Symbol ein Aktivierungsfluchtzeichen oder ein Jobstartfluchtzeichen angeben.

### Beispiel: Rekursive Symbolersetzung

    /* IN §JJ. SOFTWARE AG

wird mit J = 20 und JJ = §J.11 zu:

    /* IN 2011 SOFTWARE AG

Der Vorteil dieser Methode ist, dass die Ersetzung stellengerecht erfolgt.

### Kennzeichen für das Ende eines Symbolnamens

Der Symbolname wird durch ein Textbegrenzungszeichen begrenzt:

- Leerzeichen (`` )

- Komma (`,`)

- Semikolon (`;`)

- Punkt (`.`)

- Apostroph (`'`)

- At-Zeichen (`@`)

- Prozentzeichen (`%`)

- Nicht-Zeichen ()

- kaufmännisches Und-Zeichen (`&`)

- öffnende runde Klammer (`(`)

- schließende runde Klammer (`)`)

- Gleichheitszeichen (`=`)

Beispiel: `§SYMBOL-1;`

Ein einzelner Punkt (`.`) nach einem Symbol wird während der Symbolersetzung entfernt. Zwei aufeinanderfolgende Punkte (`..`) werden jedoch in einen Punkt (`.`) umgewandelt. Dies ist bei der dynamischen Generierung von Dateinamen wichtig.

### Algorithmus für die Symbolersetzung

Folgender Algorithmus wird bei der Symbolersetzung angewandt:

1. Suche das am weitesten links stehende Symbol.

   Falls keines (mehr) vorhanden -> Ende.

2. Ersetzung

   Falls Fehler -> Ende.

3. Schreibe geänderte Zeile zurück.

   Weiter bei (1).

   Dadurch ist eine rekursive Symbolersetzung (Symbol innerhalb von Symbolen) möglich.

### Feste Positionen in einer JCL-Zeile

Anmerkung
Dieser Abschnitt gilt nur für JCL, die auf Großrechnern gestartet wird.

Durch die Symbolersetzung kann es zu einer Verschiebung innerhalb einer Zeile kommen. Unter folgenden Voraussetzungen werden jedoch Teile der Zeile auf fester Position gehalten:

1. Symbole folgen einander nicht unmittelbar.

2. Der Spaltenbereich 72 bis 80 bleibt immer konstant. Falls Spalte 70 ein Leerzeichen und Spalte 71 ein Komma enthalten, so werden auch diese konstant gehalten.

3. Einem Symbol folgen direkt mindestens 2 Leerzeichen: Der Zeilenrest wird auf konstanter Position gehalten, außer wenn sich eine Überlappung durch den Symbolwert ergeben würde. Zum Beispiel:

       /FILE ABC.§VAR             COMMENT

   wird mit VAR=REPLACE zu:

       /FILE ABC.REPLACE          COMMENT

4. Einem Symbol folgt direkt konstanter Text, dann mindestens 2 Leerzeichen, dann weiterer konstanter Text, der mit einem Ausrufezeichen (!) markiert ist. Dann wird analog zu ? verfahren, sowie das Ausrufezeichen (!) durch Leerzeichen ersetzt. Zum Beispiel:

       /FILE ABC.§VAR..XYZ       !COMMENT

   wird mit VAR=REPLACE zu:

       /FILE ABC.REPLACE..XYZ     COMMENT

### Symbolersetzung durch mehrfache Symbolwerte

Zur Ersetzung eines Symbols durch mehrfache Symbolwerte bei der mehrfachen Parallelaktivierung eines Jobs, ist die zu ersetzende Variable durch `P-SUFFIX` zu kennzeichnen. Es handelt sich dabei um die Variable, die Sie im Feld Suffix-Symbol im Fenster Master Job-Definition angegeben haben (siehe Beschreibung für dieses Feld im Abschnitt Job-Verwaltung).

Nur durch Verwendung von `P-SUFFIX` als Platzhalter für diese Variable wird eine Mehrfachersetzung durchgeführt. Zur Definition von mehrfachen Symbolwerten siehe Register "Mehrfache Symbolwerte".

Anmerkung
Falls das Suffix-Symbol keine Ausprägungen enthält, wird der mehrfache Job als temporärer Dummy-Job aktiviert.

Eine bestimmte Ausprägung eines mehrfachen Symbols erhält man mit der Symbolfunktion MV (Multiple Value), die mit Entire Operations ausgeliefert wird.

### Symbolersetzung in Unternetzwerken

Um die Eingabe der Symbole auch für Unternetzwerke zu erreichen, können Sie eine Symboltabelle an das Hauptnetz knüpfen, die alle in den Jobs des Unternetzwerkes/der Unternetzwerke abzufragenden Symbole enthält. Gleichzeitig können die Symboltabellen mit Symbolen, deren Werte nicht abgefragt werden sollen, an die jeweiligen Jobs des Unternetzwerkes/der Unternetzwerke gelinkt werden. Dadurch werden nach Eingabe der Symbole aktive Symboltabellen erzeugt, die am Hauptnetzwerk hängen.

Auf Jobebene versucht Entire Operations die Symbole aus der/den darüber liegenden Ebenen zu laden, wenn ein Symbol in der zugehörigen Symboltabelle nicht gefunden wird, z.B. aus der aktiven Symboltabelle des Hauptnetzwerkes. Entire Operations legt auf der Jobebene der Unternetzwerke keine aktiven Symboltabellen an, da die Laufnummern zum Zeitpunkt der Aktivierung des Hauptnetzwerkes noch nicht bekannt sind und als erste Aktion der Aktivierung die Symbol-Eingabe durchgeführt wird.

### On this page

- Fluchtzeichen zur Symbolersetzung
- Regeln und Einschränkungen für die Symbolersetzung