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:
- Die Ein-/Ausgabe erfolgt nur für einen einzigen Datensatz im Programm.
- 'resourceAssociation' wird in einer Funktion verwendet, bei der die Ein-/Ausgabe nur für einen einzigen Datensatz erfolgt.
- Die Ein-/Ausgabe erfolgt für mehrere Datensätze im Programm, aber alle Datensätze haben denselben Dateinamen. In diesem Fall wird der erste Datensatz in einer E/A-Anweisung als implizites Qualifikationsmerkmal verwendet.
- 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 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.
- 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 |
|
| 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 |
|
| iSeries COBOL | Der Dateityp (fileType) muss 'seq' (sequenziell) oder 'vsam'
sein.
Sie können den Wert wie folgt in 'resourceAssociation' versetzen:
Wenn Sie den Wert in
'resourceAssociation' ändern, funktioniert der
iSeries-Befehl OVRDBF wie folgt:
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:
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 |
|
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