Ressourcenzuordnungsvariable (resourceAssociation) für Datei-Ein-/Ausgabe

Wenn Ihr Programm einen Datensatz in einer E/A-Operation verwendet, geht EGL davon aus, dass die datensatzspezifische Variable 'Datensatzname.resourceAssociation' den Namen der physischen Datei enthält, die den Datensatz enthält (sofern die betreffende Variable den entsprechenden Dateityp unterstützt).

EGL initialisiert die Variable entsprechend dem ResourceAssociation-Abschnitt, der zur Generierungszeit verwendet wird. Weitere Informationen finden Sie unter ++ Ressourcenzuordnungsabschnitte. Sie können das Objekt Ihrer E/A-Operationen zur Ausführungszeit ändern, indem Sie einen anderen Wert in die Variable 'Datensatzname.resourceAssociation' stellen.

In den meisten Fällen müssen Sie die Syntax 'Datensatzname.resourceAssociation' verwenden. Wenn EGL den gewünschten Datensatz ermitteln kann, brauchen Sie den Teil 'Datensatzname' nicht anzugeben, wie in den folgenden Fällen:

Kenndaten von 'resourceAssociation':
Basiselementtyp (primitiver Typ)
CHAR
Datenlänge
300 Zeichen für Java™-Generierung und Debugging, 65 Zeichen für COBOL-Generierung.
Segmentübergreifendes Speichern?
Ja

Hinweise zur Definition

Der Wert, den Sie in 'Datensatzname.resourceAssociation' versetzen, muss ein gültiger Systemressourcenname für den System- und Dateityp sein, die Sie beim Generieren des Programms angegeben haben. Wenn mehr als ein Datensatz denselben Dateinamen angibt und Sie 'resourceAssociation' für einen beliebigen Datensatz mit diesem Dateinamen ändern, wird der Wert von 'resourceAssociation' für alle Datensätze im Programm geändert, die denselben Dateinamen aufweisen.

Eine in 'resourceAssociation' angegebene Systemressource wird in den folgenden Fällen geschlossen:
  • Eine Ein-/Ausgabe-Option trifft auf einen Datensatz, der denselben EGL-Dateinamen aufweist wie der Datensatz, der 'resourceAssociation' qualifiziert.
  • Die Datensatzvariable wird geändert.

Um die Datei zu schließen, die der aktuellen Einstellung von 'resourceAssociation' zugeordnet ist, verwenden Sie die Anweisung 'close'. EGL schließt automatisch alle offenen Dateien, wenn eine Ausführungseinheit endet oder eine Anweisung 'converse' im Segmentmodus auftritt.

In COBOL-Umgebungen wandelt EGL den Inhalt von 'resourceAssociation' in Großbuchstaben um, bevor dieser Inhalt für den Zugriff auf eine Datei verwendet wird. Der Wert, den Sie in 'resourceAssociation' stellen, bleibt zu Vergleichszwecken jedoch unverändert.

Von Programmen gemeinsam genutzte Dateien

Wenn mehrere Programme eine Systemressource gemeinsam nutzen, muss jedes Programm 'resourceAssociation' entsprechend setzen, um auf dieselbe Ressource zu verweisen. Wenn zwei Programme in einer Ausführungseinheit auf dieselbe logische Datei zugreifen, muss jedes Programm 'resourceAssociation' zur Generierungszeit auf denselben Systemressourcennamen setzen, um sicherzustellen, dass beide Programme zur Ausführungszeit auf dieselbe Systemressource zugreifen.

Wenn zwei Programme denselben EGL-Dateinamen verwenden, muss jede der datensatzspezifischen Variablen 'resourceAssociation' denselben Wert enthalten. Andernfalls wird die zuvor geöffnete Systemressource geschlossen, wenn eine neue Ressource geöffnet wird.

Um sicherzustellen, dass beide Programme denselben Wert verwenden, müssen Sie den Systemressourcennamen zur Generierungszeit oder zur Laufzeit wie folgt setzen:
Zur Generierungszeit
Wenn zwei Programme in derselben Ausführungseinheit auf dieselbe logische Datei zugreifen, müssen Sie zur Generierungszeit denselben Systemressourcennamen für die logische Datei angeben, um sicherzustellen, dass beide Programme zur Ausführungszeit auf dieselbe physische Datei zugreifen.
Zur Ausführungszeit
Wenn Sie 'Datensatzname.resourceAssociation' verwenden, muss jedes Programm, das auf die Datei zugreift, für die Datei 'resourceAssociation' festgelegt haben. Wenn zwei Programme in derselben Ausführungseinheit auf dieselbe logische Datei zugreifen, muss jedes Programm 'resourceAssociation' auf denselben Systemressourcennamen setzen, um sicherzustellen, dass beide Programme zur Ausführungszeit auf dieselbe physische Datei zugreifen.

WebSphere MQ-Datensätze

Der Systemressourcenname für WebSphere MQ-Datensätze definiert den Namen des WS-Managers und den Warteschlangennamen. Geben Sie den Namen im folgenden Format an:

  Name_des_WS-Managers:Warteschlangenname
Name_des_WS-Managers
Name des Warteschlangenmanagers
Warteschlangenname
Name der Warteschlange

Wie im Beispiel gezeigt, werden die Namen durch einen Doppelpunkt voneinander getrennt. Sie können jedoch 'Name_des_WS-Managers' und den Doppelpunkt auslassen. Der Systemressourcennamen ist der Anfangswert für das datensatzspezifische Feld 'resourceAssociation' und gibt die Standardwarteschlange an, die dem Datensatz zugeordnet ist. Weitere Informationen finden Sie unter Zugriff auf WebSphere MQ-Nachrichtenwarteschlangen.

Kompatibilität

Plattform Problem
CICS für z/OS
SPOOL
Der Wert ist der Eingabe- oder Ausgabedateiname für eine JES-SPOOL-Datei, die einer seriellen Datei zugeordnet ist.
Eingabedateiname: Benutzer-ID.Klasse. Der Parameter 'Benutzer-ID' ist ein 4 bis 8 Zeichen langer Name eines externen Writers oder ein Stern (*). Wenn Sie den Namen eines externen Writers verwenden, ist für CICS erforderlich, dass die ersten vier Zeichen des externen Writer-Namens den ersten vier Zeichen der CICS-Anwendungs-ID entsprechen, mit der die CICS-Region für ACF/VTAM angegeben wird. Der Parameter Klasse ist ein Zeichen, das die Spoolklasse angibt. 'Klasse' ist optional und hat standardmäßig den Wert "A". Die maximale Länge des Namens beträgt zehn Byte. Weitere Informationen enthält das Handbuch für CICS-Anpassung.
Ausgabedateiname: Knoten-ID.Benutzer-ID.Klasse. Der Parameter 'Knoten-ID' ist entweder eine ein bis acht Zeichen lange Systemknoten-ID oder ein Stern (*). Der Parameter 'Benutzer-ID' ist entweder eine aus ein bis 8 Zeichen bestehende Systembenutzer-ID oder ein Stern (*). Der Parameter Klasse ist ein Zeichen, das die Spoolklasse angibt. 'Klasse' ist optional und hat standardmäßig den Wert "A". Wenn 'Klasse' nicht angegeben ist, ist 'Benutzer-ID' optional und verwendet standardmäßig den Wert für die CICS-Benutzer-ID (den in 'sysVar.userID' gespeicherten Wert). Die maximale Länge des Namens liegt bei 19 Byte. Weitere Informationen enthält das Handbuch für CICS-Anpassung.
TEMPMAIN
Der Wert ist ein Warteschlangenname aus 8 Byte für eine temporäre Hauptspeicherwarteschlange, die einer relativen oder seriellen Datei zugeordnet ist. Einige Warteschlangennamen sind für EGL reserviert und haben das Präfix 'EZE'.
Wenn der Name einer temporären Speicherwarteschlange in die datensatzspezifische Variable 'Datensatzname.resourceAssociation' versetzt wird, wird die Warteschlange dynamisch erstellt, sofern sie noch nicht vorhanden ist. Eine einzelne Warteschlange für temporären Speicher kann nicht von mehreren Benutzern gleichzeitig gemeinsam genutzt werden. Eine CICS-Anforderung ENQ serialisiert den Zugriff auf die Datei, sobald erstmals auf diese Datei im Programm verwiesen wird. DEQ wird abgesetzt, wenn das Programm die Datei schließt.
TEMPAUX
TEMPAUX entspricht TEMPMAIN, mit der Ausnahme, dass der Wert für eine Hilfswarteschlange für temporären Speicher verwendet wird.
TRANSIENT
Ein DCT-Name aus 4 Byte für eine Warteschlange mit transienten Daten, die einer seriellen Datei zugeordnet ist. Der Name der Warteschlange mit transienten Daten muss für CICS definiert werden.
VSAM
Ein FCT-Name aus 8 Byte für eine VSAM-Datei, die einer indexierten, relativen oder seriellen Datei zugeordnet ist.
IMS BMP IMS BMP unterstützt dieselben Dateitypen, die für IMS/VS unterstützt werden, und zwar zusätzlich zu denjenigen Typen, die für z/OS Batch unterstützt werden.
IMS/VS
MMSGQ
Wird nur für Ausgabe unterstützt. Der Wert (ein aus 8 Byte bestehender logischer Terminalname oder Transaktionscode) wird für das IMS-System definiert und einer Nachrichtenwarteschlange zugeordnet, die Nachrichten mit mehreren Segmenten akzeptiert. In dem ResourceAssociation-Abschnitt, der zur Generierungszeit verwendet wird, ist der Dateiname einem änderbaren alternativen PCB oder einem änderbaren, sofort wirksamen alternativen PCB zugeordnet.
Der Wert in 'resourceAssociation' wird nicht in Großbuchstaben umgesetzt.
SMSGQ
Wird nur für Ausgabe unterstützt. Der Wert (ein aus 8 Byte bestehender logischer Terminalname oder Transaktionscode) wird für das IMS-System definiert und einer Nachrichtenwarteschlange zugeordnet, die Nachrichten mit einem Segment akzeptiert. In dem ResourceAssociation-Abschnitt, der zur Generierungszeit verwendet wird, ist der Dateiname einem änderbaren alternativen PCB oder einem änderbaren, sofort wirksamen alternativen PCB zugeordnet.
Der Wert in 'resourceAssociation' wird nicht in Großbuchstaben umgesetzt.
iSeries COBOL Der Dateityp (fileType) muss 'seq' (sequenziell) oder 'vsam' sein. Sie können den Wert wie folgt in 'resourceAssociation' versetzen:
LIB/FILE MEMBER
Gibt explizit die Bibliothek, die Datei und das Member an.
LIB/FILE
Es wird das erste Member in der Datei verwendet.
FILE MEMBER
Verwendet '*LIBL' für die Suche nach der Datei.
FILE
Verwendet '*LIBL' für die Suche nach der Datei und verwendet das erste Member in dieser Datei.
Wenn Sie den Wert in 'resourceAssociation' ändern, funktioniert der iSeries-Befehl OVRDBF wie folgt:
  1. Er schließt die alte Datei.
  2. Er überschreibt den alten mit dem neuen Wert.
  3. Er öffnet die neue Datei.

Der in 'resourceAssociation' gesetzte Wert wird von der Aufrufebene aus weitergegeben und für alle untergeordneten Aufrufebenen geändert. Der Wert wird nicht weitergegeben, wenn die Datei zuvor vom Programm geöffnet wurde.

MQSeries

Der Systemressourcenname für WebSphere MQ-Datensätze definiert den Namen des WS-Managers und den Warteschlangennamen. Geben Sie den Namen in folgendem Format an:

  Name_des_WS-Managers:Warteschlangenname
Name_des_WS-Managers
Name des Warteschlangenmanagers.
Warteschlangenname
Name der Warteschlange.

Wie im Beispiel gezeigt, werden die Namen durch einen Doppelpunkt voneinander getrennt. Sie können jedoch 'Name_des_WS-Managers' und den Doppelpunkt auslassen. Der Systemressourcennamen wird als Anfangswert für das datensatzspezifische Feld 'resourceAssociation' verwendet und gibt die Standardwarteschlange an, die dem Datensatz zugeordnet ist.

z/OS Batch
GSAM
Wird nicht unterstützt.
SEQ
Wird nicht unterstützt.
SEQRS
Der Wert ist ein aus 54 Byte bestehender Dateiname oder ein aus 8 Byte bestehender DD-Name für eine sequenzielle Systemdatei, die einer seriellen Datei zugeordnet ist. Wenn für eine Datei kein Wert für 'resourceAssociation' gesetzt wurde, sucht das Programm zunächst anhand des logischen Dateinamens als DD-Name nach einer Datei, die vorab zugeordnet wurde. Andernfalls verwendet EGL für den Zugriff auf die Datei den Systemressourcennamen, den Sie zur Generierungszeit angegeben haben. Wenn Sie einen Dateinamen in 'resourceAssociation' versetzen, wird die Ressource mithilfe eines MVS-Supervisoraufrufs (SVC99) dynamisch dem zugehörigen Datensatzdateinamen zugeordnet. Die Zuordnung erfolgt mit der auf SHR gesetzten Option DISP, sodass die Datei jedes Mal neu geschrieben wird, wenn sie für Ausgaben geöffnet wird.
VSAM
Wird nicht unterstützt.
VSAMRS
Der Wert ist ein aus 44 Byte bestehender Dateiname oder ein aus 8 Byte bestehender DD-Name für eine VSAM-Datei, die einer indexierten, relativen oder seriellen Datei zugeordnet ist. Wenn für eine Datei kein Wert für 'resourceAssociation' gesetzt wurde, sucht das Programm anhand des logischen Dateinamens als DD-Name nach einer Datei, die vorab zugeordnet wurde. Andernfalls verwendet EGL für den Zugriff auf die Datei den Systemressourcennamen, den Sie zur Generierungszeit angegeben haben. Wenn Sie einen Dateinamen in 'resourceAssociation' versetzen, wird die Ressource mithilfe eines MVS-Supervisoraufrufs (SVC99) dynamisch dem zugehörigen Datensatzdateinamen zugeordnet. Die Zuordnung erfolgt mit der auf SHR gesetzten Option DISP, sodass die Datei jedes Mal geschrieben wird, wenn sie für Ausgaben geöffnet wird.

Beispiel

Das folgende Beispiel zeigt die Zuordnung einer Datei zur Variablen 'resourceAssociation':

  if (process == 1)
    myrec.resourceAssociation = "myFile.txt";
  else
    myrec.resourceAssociation = "myFile02.txt";
  end

Feedback