currentSchema (EGL-Systemvariable)

Wenn Sie die Erstellungsdeskriptoroption 'useCurrentSchema' auf YES setzen, fügt EGL die Systemvariable 'sqlLib.currentSchema' zu bestimmten Tabellennamen im generierten SQL-Code hinzu. Auf diese Weise können Sie nicht qualifizierte Tabellennamen in EGL-Datensatzeigenschaften und #sql-Direktiven verwenden und die Qualifizierung zur Laufzeit bereitstellen.

Bei der Verwendung der Variablen 'sqlLib.currentSchema' gelten die folgenden Einschränkungen:

EGL nimmt den Anfangswert Anfangswert von 'sqlLib.currentSchema' aus der Java-Laufzeiteigenschaft 'vgj.jdbc.schema'. Die Eigenschaft 'vgj.jdbc.schema' wiederum nimmt ihren Wert aus der Erstellungsdeskriptoroption 'sqlSchema' (wenn die Erstellungsdeskriptoroption 'genProperties' auf PROGRAM oder GLOBAL gesetzt ist).

Schließen Sie alle Trennzeichen in die Variablenzeichenfolge ein. Siehe hierzu die Beispiele weiter unten in diesem Thema.

Verwendung im Debugger

Auf Hostsystemen können Sie normalerweise nicht qualifizierte Tabellennamen verwenden und das Schema - je nach System - unterschiedlich festlegen. Unter iSystem können Sie die Tabelle auffinden, indem Sie die Bibliotheksliste nach einer Bibliothek (bei der es sich um das Schema handelt) durchsuchen, die die benannte Tabelle enthält. Unter z/OS wird das Schema gewöhnlich zur Bindezeit festgelegt, indem die Option QUALIFIER mit dem entsprechenden Schemanamen in die Anweisung BIND eingeschlossen wird. Sie können diese Vorgehensweise in EGL simulieren, indem Sie die Erstellungsdeskriptoroption 'useCurrentSchema' auf YES setzen und die Erstellungsdeskriptoroption 'sqlSchema' auf den Namen des Testschemas setzen, das Sie für das Debugging verwenden. Dies bedeutet, dass Sie COBOL-Code aus denselben SQL-Anweisungen generieren können, die Sie im EGL-Debugger getestet haben.

Ein zweiter Vorteil liegt darin, dass Entwickler Ihren Code üblicherweise anhand eines Schemas (oder einer ganzen Datenbank) testen, das Sie ausschließlich für Testzwecke verwenden. Bei Verwendung der Variablen 'sqlLib.currentSchema' brauchen Sie erst dann auf Ihre echten Daten zuzugreifen, nachdem Sie alle Tests abgeschlossen haben. Anschließend können Sie einfach den Wert der Erstellungsdeskriptoroption 'sqlSchema' ändern und Ihren Code neu generieren, ohne SQL-Änderungen vornehmen zu müssen.

Beispiel

Im folgenden Beispiel sind in verschiedenen Umgebungen unterschiedliche Formate für Schemas erforderlich.

if(sysVar.systemType is ZOSCICS)
  // hier ist die Variable ein Schema
  sqlLib.currentSchema = "TESTSCHEMA.";
else 
  if(sysVar.systemType is ISERIESJ)
    // hier ist es eine Benutzerbibliothek
    sqlLib.currentSchema = "TESTSCHEMA/";
  end
end

Feedback