connectionService()

Die Systemfunktion vgLib.connectionService() hat zwei Vorteile:

Wenn Sie mit vgLib.connectionService() eine neue Verbindung erstellen, geben Sie die Isolationsstufe an, indem Sie die Systemvariable vgVar.sqlIsolationLevel festlegen. Wenn Sie den VisualAge Generator-Kompatibilitätsmodus ausführen und vgVar.sqlIsolationLevel ist '0', weist die neue Verbindung die Isolationsstufe 'repeatableRead' auf. Andernfalls verwendet die neue Verbindung 'serializableTransaction'. Weitere Informationen finden Sie unter der Funktion 'sqlLib.connect()'.

vgLib.connectionService() kann nur in Programmen verwendet werden, die aus VisualAge Generator und EGL 5.0 migriert wurden. Die Funktion wird während der Entwicklung unterstützt, wenn die EGL-Einstellung VisualAge Generator-Kompatibilität ausgewählt wird, oder sie wird während der Generierung unterstützt, wenn die Erstellungsdeskriptoroption VAGCompatibility auf YES gesetzt ist.

Verwenden Sie für neue Programme stattdessen diese Systemfunktionen:

vgLib.connectionService() gibt keinen Wert zurück.

Syntax

  vgLib.connectionService(
    userID CHAR(8) in,
    password CHAR(8) in,
    serverName CHAR(18) in
    [, product CHAR(8) inOut,
       release CHAR(8) inOut
    [, connectionOption STRING in
    ]])
userID
Benutzer-ID für den Zugriff auf die Datenbank. Das Argument ist erforderlich, wird aber bei der COBOL-Generierung ignoriert. Lesen Sie den Abschnitt zur Kompatibilität in diesem Thema.
password
Kennwort für den Zugriff auf die Datenbank. Das Argument ist erforderlich, wird aber bei der COBOL-Generierung ignoriert.

Dieses Kennwort wird automatisch verschlüsselt, wenn Sie ein Zeichenfolgeliteral an die Funktion übergeben. Weitere Informationen finden Sie unter 'Kennwörter verschlüsseln' im EGL-Programmiererhandbuch. Lesen Sie auch den Abschnitt zur Kompatibilität in diesem Thema.

serverName
Gibt eine Verbindung an und verwendet diese Verbindung, um Werte den Argumenten product und release zuzuweisen, wenn diese Argumente in den Aufruf von vgLib.connectionService() eingeschlossen sind.
Das Argument serverName ist erforderlich. Folgende Werte sind gültig:
blanks (kein Inhalt)
Wenn eine Verbindung besteht, behält vgLib.connectionService() diese Verbindung bei. Ist keine Verbindung vorhanden, besteht das Ergebnis (abgesehen vom Zuweisen von Werten) darin, zum gültigen Verbindungsstatus am Anfang einer Ausführungseinheit zurückzukehren. Weitere Informationen finden Sie im EGL-Generierungshandbuch.
RESET
In Beziehung zu COBOL schreibt RESET Änderungen fest, schließt Cursors, gibt Sperren frei, trennt die Verbindung zur aktuellen Datenbank und kehrt zum Verbindungsstatus zurück, der zu Beginn einer Ausführungseinheit gültig war. Wenn Sie dennoch vorhaben, RESET in diesem Fall anzugeben, rufen Sie sysLib.commit() oder sysLib.rollback() auf, bevor Sie vgLib.connectionService() aufrufen.

Im Hinblick auf ein Java™-Programm stellt RESET wieder eine Verbindung zur Standarddatenbank her. Wenn die Standarddatenbank jedoch nicht verfügbar ist, bleibt der Verbindungsstatus unverändert.

Weitere Informationen zur Standarddatenbank finden Sie im EGL-Generierungshandbuch.

databaseName
Gibt eine Datenbank an.
Wenn der Code als COBOL-Programm ausgeführt wird, treffen die folgenden Aussagen zu:
  • Der Wert von databaseName muss ein Wert in der Standortspalte der Tabelle SYSIBM.LOCATIONS sein, die sich im DB2 UDB-Subsystem befindet (in CICS ist dieses Subsystem an die CICS-Region angehängt).
  • Durch die Angabe einer Datenbank werden alle Cursors geschlossen, Sperren freigegeben, vorhandene Verbindungen getrennt und Verbindungen zur angeforderten Datenbank hergestellt. Wenn Sie dennoch vorhaben, einen Wert für databaseName anzugeben, rufen Sie sysLib.commit() oder sysLib.rollback() auf, bevor Sie vgLib.connectionService() aufrufen.
Wenn der Code als Java-Programm ausgeführt wird, treffen die folgenden Aussagen zu:
  • Sie finden den Namen der physischen Datenbank, indem Sie nach der Eigenschaft vgj.jdbc.database.server suchen, wobei server der Name des im vgLib.connectionService()-Aufruf angegebenen Servers ist. Wenn diese Eigenschaft nicht definiert ist, wird der Name des im vgLib.connectionService()-Aufruf angegebenen Servers unverändert verwendet.
  • Das Format des Datenbanknamens unterscheidet sich zwischen J2EE-Verbindungen und Nicht-J2EE-Verbindungen:
    • Wenn Sie das Programm für eine J2EE-Umgebung generiert haben, verwenden Sie den Namen, an den die Datenquelle in der JNDI-Registrierung gebunden ist, z. B. 'jdbc/MyDB'. Diese Situation tritt ein, wenn die J2EE-Erstellungsdeskriptoroption auf YES gesetzt wurde.
    • Wenn Sie das Programm für eine Nicht-J2EE-JDBC-Umgebung generiert haben, verwenden Sie eine Verbindungs-URL, z. B. 'jdbc:db2:MyDB'. Diese Situation tritt auf, wenn die J2EE-Option auf NO gesetzt wurde.
product
Empfängt den Namen des Datenbankprodukts. Das Argument, falls vorhanden, muss eine CHAR(8)-Variable sein.

Um zu bestimmen, welche Zeichenfolge Sie empfangen haben, als der Code eine Verbindung zu einer bestimmten Datenbank hergestellt hat, prüfen Sie die Produktdokumentation für die Datenbank oder den Treiber. Oder führen Sie Ihren Code in einer Testumgebung aus und schreiben Sie den empfangenen Wert in eine Datei.

release
Empfängt das Release-Level der Datenbank. Das Argument, falls vorhanden, muss eine CHAR(8)-Variable sein.

Um zu bestimmen, welche Zeichenfolge Sie empfangen haben, als der Code eine Verbindung zu einer bestimmten Datenbank hergestellt hat, prüfen Sie die Produktdokumentation für die Datenbank oder den Treiber. Oder führen Sie Ihren Code in einer Testumgebung aus und schreiben Sie den empfangenen Wert in eine Datei.

connectionOption
Dieser Parameter wird ignoriert, wenn Sie ein Programm für COBOL generieren. Folgende Werte sind gültig:
D1A
Die 1 in dem Optionsnamen gibt an, dass nur ein einphasiges Commit (one) unterstützt wird, und das A gibt an, dass jede Verbindung automatisch (automatic) getrennt wird. Diese Option weist die folgenden Merkmale auf:
  • Sie können immer nur zu einer Datenbank eine Verbindung herstellen.
  • Ein Commit oder Rollback beendet eine vorhandene Verbindung.
D1C
Die 1 im Optionsnamen gibt an, dass nur ein einphasiges Commit (one) unterstützt wird, und das C gibt an, dass bei einem Commit (commit) eine Verbindung getrennt wird, vorausgesetzt, es sind keine Cursors mit HOLD geöffnet. Merkmale dieser Option sind folgende:
  • Sie können immer nur zu einer Datenbank eine Verbindung herstellen.
  • Ein Commit oder Rollback beendet eine vorhandene Verbindung.
D1E
Der Standardwert. Die 1 im Optionsnamen gibt an, dass nur ein einphasiges Commit (one) unterstützt wird, und das E gibt an, dass Verbindungen explizit (explicit) getrennt werden müssen. In diesem Fall hat ein Commit oder Rollback keine Auswirkung auf eine bereits bestehende Verbindung.
Wenn Sie ein Java-Programm generieren, treffen die folgenden Aussagen zu:
  • Eine Verbindung zu einer Datenbank schließt keine Cursors, hebt keine Sperren auf und trennt keine bestehenden Verbindungen. Wenn die Ausführungseinheit jedoch bereits mit derselben Datenbank verbunden ist, hat das denselben Effekt wir die Angabe von DISC und dann von D1E.
  • Sie können mehrere Verbindungen verwenden, um aus vielen Datenbanken zu lesen, aber Sie können nur eine Datenbank in einer Arbeitseinheit aktualisieren, weil nur ein einphasiges Commit verfügbar ist.
DISC
Trennt die Verbindung zur angegebenen Datenbank. Beim Trennen einer Datenbankverbindung wird eine ROLLBACK-Operation ausgeführt. Außerdem werden Sperren aufgehoben, allerdings nur für diese Datenbank.
DCURRENT
Trennt die Verbindung zur aktuell verbundenen Datenbank. Beim Trennen einer Datenbankverbindung wird eine ROLLBACK-Operation ausgeführt. Außerdem werden Sperren aufgehoben, allerdings nur für diese Datenbank.
DALL
Trennt die Verbindung zu allen verbundenen Datenbanken. Das Trennen der Verbindung zu allen Datenbanken bewirkt ein Rollback in diesen Datenbanken, aber nicht in anderen wiederherstellbaren Ressourcen.
SET
Legt eine Verbindung als aktuelle Verbindung fest. (Standardmäßig ist dies die zuletzt hergestellte Verbindung für die aktuelle Ausführungseinheit.)

Die folgenden Werte werden zum Zweck der Kompatibilität mit VisualAge Generator toleriert, sind aber äquivalent zu D1E: R, D2A, D2C, D2E.

Hinweise zu Fehlern

vgLib.connectionService() legt die sqlData-Systemvariablen sowohl in 'sqlLib' als auch in 'sysVar' fest:
  • sqlData.sqlerrd[]
  • sqlData.sqlca
  • sqlData.sqlcode
  • sqlData.sqlerrmc (nur in COBOL-Code verfügbar)
  • sqlData.sqlwarn[]

Beispiel

Im folgenden Beispiel wird gezeigt, wie die Funktion vgLib.connectionService() verwendet werden soll:

  vgLib.connectionService(myUserid, myPassword, 
    myServerName, myProduct, myRelease, "D1E");

Kompatibilität

Tabelle 1. Hinweise zur Kompatibilität für 'connectionService()'
Plattform Problem
Java-Generierung Der Tomcat-J2EE-Server ignoriert die Variablen userID und password aus der Funktion vgLib.connectionService() und verwendet die Werte aus der Serverkonfiguration.

Feedback