[Hwgd] Ersetzung von Knoten in Unternetzwerken

aus dem Protokoll (Arbeitskreis April 2012)

Fakt1: EOR ermöglicht es uns, Knoten durch Aktivierungs-Symbole zu ersetzen.
Fakt2: Symbole werden rekursiv ersetzt, d.h. in übergeordneten Symboltabellen definierte Symbole werden “automatisch nach unten durchgereicht”.

Leider funktioniert (zumindest in unseren Tests) Fakt1 nicht zusammen mit Fakt2, d.h. das Knotensymbol muss auf unterer Ebene definiert werden und kann nicht “automatisch nach unten durchgereicht” werden. Die aus dem Großrechnerbereich bekannte und dort verwendete Lösung über “SUBMIT-NODE” ist für unsere Zwecke ungeeignet, da nicht generell alle Jobs an einen Knoten sondern selektiv bestimmte Jobs an bestimmte Knoten geschickt werden sollen.

Implementierungsidee 1 (Matthias Schnatbaum):
Analog zu den reservierten Symbolen P-C-OWNER, P-C-NETWORK, usw. für die Information über den Caller, wird es 2 neue reservierte Symbole geben:

  • “P-CE” caller execution node
  • “P-CJ” caller JCL node

Die Symbole müssen so kurz sein, damit sie mit Escape-Zeichen in die ‘Knoten’-Felder hineinpassen.

Das ist für mich eine geeignete Methode, um die Knoten an die die Unternetze durchzureichen.

Implementierungsidee 2 (Matthias Schnatbaum):
Ich habe zu diesem Thema noch ein paar Versuche angestellt, und bin momentan auf folgendem Stand:

  • Es macht Sinn, die vordefinierten ‘Caller’-Symbole (P-C-…) zu erweitern um P-C-EXEC-NODE und P-C-JCLNODE. Sie werden bei der Aktivierung des Unternetzes zusätzlich in dessen Symboltabelle geschrieben. Diese neuen Symbole wird es ab NOP 531 SP 6 geben.
  • Damit habe ich einen ‘Symbol Prompting’ Exit für ein Unternetz geschrieben (siehe unten). Der Exit setzt die Symbole CEN1 und CJN1 in die Unternetz-Symboltabelle, vor der Aktivierung der Jobs. Im Unternetz habe ich Ausführungsknoten mit &CEN1 und JCL-Knoten mit &CJN1 definiert.
  • Der Symbol Prompting Exit kann natürlich noch weitere Knoten-Symbole CEN2, … bzw. CJN2, … für die Jobs des Unternetzes setzen. Die Quelle der Knoten-Symbole ist beliebig. Sie können z.B. regelbasiert für Eigentümer und Netzwerke bestimmt werden oder aus einer Datei bzw. View gelesen werden.

Ihre Fragestellung ‘Symbolersetzung schon vor der [Unternetz-]Aktivierung’ sollte damit abgedeckt werden können. Die Frage ‘Woher kommen die Knoten-Symbole für das / die Unternetze?’ sollte noch weiter diskutiert werden.


DEFINE DATA PARAMETER USING NOPSYP2A
LOCAL
1 #FUNCTION (A01)
1 #RC3 (N03)
1 #BLANK-10 (A10) CONST <' '>
1 #SYMBOL (A40)
1 #FORMAT (A01)
1 #VALUE (A80)
1 #MOD-USER (A08)
1 #MOD-TIME (T)
1 #TRACE-MSG (A70/1:2)
END-DEFINE
* -------------------------------------------------------------------
#FUNCTION := '1' /* test, recursive
#SYMBOL := 'P-C-JCL-NODE'
PERFORM DO-SYMBOL
*
#FUNCTION := 'S' /* set
#SYMBOL := 'CJN1'
PERFORM DO-SYMBOL
*
#FUNCTION := '1' /* test, recursive
#SYMBOL := 'P-C-EXEC-NODE'
PERFORM DO-SYMBOL
*
#FUNCTION := 'S' /* set
#SYMBOL := 'CEN1'
PERFORM DO-SYMBOL
*
P-RC := 0
COMPRESS *PROGRAM 'end - rc' P-RC INTO P-RT
CALLNAT 'LGW1---N' P-RT
*
* ================================================== end main =======
*
DEFINE SUBROUTINE DO-SYMBOL
* ---------
CALLNAT 'NOPUSY6N' #FUNCTION (AD=O)
#RC3 #BLANK-10 P-OWNER (AD=O)
P-NETWORK (AD=O) P-NETWORK-VERSION (AD=O) P-RUN (AD=O) P-JOB (AD=O)
P-NETWORK-SYMTAB (AD=O) P-NETWORK-SYMTAB-VERSION (AD=O)
#SYMBOL #FORMAT #VALUE #MOD-USER #MOD-TIME
*
COMPRESS *PROGRAM '-' #FUNCTION #SYMBOL '- rc' #RC3
INTO #TRACE-MSG(1)
COMPRESS '. f' #FORMAT 'value' #VALUE INTO #TRACE-MSG(2)
CALLNAT 'LGW1---N' #TRACE-MSG(1:2)
END-SUBROUTINE
END