Debugging für IMS, ZOSBATCH und DL/I mit der gespeicherten Prozedurverbindung mithilfe des EGL-Debuggers

Sie können für EGL-Programme, die ferne IMS- oder ZOSBATCH-Programme aufrufen, ein Debug ausführen.

Das Programm, dessen Debug ausgeführt wird, kann auf eine SQL-Datenbank und/oder eine DL/I-Datenbank zugreifen. Analog kann das aufgerufene ferne IMS- oder ZOSBATCH-Programm auf eine SQL-Datenbank und/oder eine DL/I-Datenbank zugreifen. Der Debugger nimmt Datenbankaufrufe an den Host und auch Aufrufe an generierte Programme auf dem Host vor, interpretiert jedoch andernfalls den Code auf dem lokalen Clientsystem.

Bei dieser Debugunterstützung für IMS und DL/I gelten die folgenden Einschränkungen:
Beim Debug eines Programms, das auf DL/I zugreift oder einen fernen Aufruf an IMS oder ZOSBATCH ausgibt, müssen Sie stets wie folgt vorgehen:

Hostumgebung konfigurieren

Auf dem Host werden zum Debug mehrere Voraussetzungen benötigt.
  • Stellen Sie sicher, dass die folgenden Anwendungen verwendet werden:
    • TCP/IP
    • DB2 Version 7 oder höher
    • IMS Version 7 oder höher
      • Open Database Access (ODBA)
    • Resource Recovery Services (RRS)
    • Workload Manager (WLM)
  • Beachten Sie, dass der EGL-DL/I-Debugger zur Kommunikation mit den DL/I-Datenbankfunktionen in IMS ODBA verwendet. RRS/MVS (Resource Recovery Services) ist erforderlich. Die OS/390-Mindeststufe, die die ODBA-Schnittstelle unterstützen kann, ist Release 3.
Führen Sie die folgenden Aktionen auf dem Hostsystem aus. Führen Sie die Schritte 1 bis 5 nur ein einziges Mal aus. Schließen Sie den letzten Schritt ab, bevor Sie die Debugsitzung auf der Workstation starten.
  1. Erstellen Sie eine EGL-Version der Lademodule AIBTDLI und CBLTDLI (ELADL1). Dieser Schritt ist nur dann erforderlich, wenn Ihre Debugsitzung einen Fernaufruf für ein Programm ausführt, das auf eine DL/I-Datenbank zugreift. Diese EGL-Version der Module stellt sicher, dass das aufgerufene Programm in derselben Arbeitseinheit wie die Debugsitzung auf der Workstation ausgeführt wird. Weitere Informationen finden Sie im vorliegenden Abschnitt unter 'EGL-Version von AIBTDLI und CBLTDLI erstellen'.
  2. Erstellen Sie die Starttabelle für den Datenbankressourcenadapter (ELADRA). Weitere Informationen finden Sie im vorliegenden Abschnitt unter 'Starttabelle für Datenbankressourcenadapter'.
  3. Erstellen Sie den Workload Manager (ELADBWLM). Weitere Informationen finden Sie unter 'Workload Manager' im Abschnitt 'DB2 für gespeicherte Prozedurverbindung konfigurieren'.
  4. Erstellen Sie die gespeicherte DB2-Prozedur (EZESP1CR und EZESP1GR). Weitere Informationen finden Sie unter 'Gespeicherte DB2-Prozedur' im Abschnitt 'DB2 für gespeicherte Prozedurverbindung konfigurieren'.
  5. Stellen Sie die Informationen für den PSB (Programmspezifikationsblock) bereit. Details können Sie unter 'Konfiguration des lokalen Arbeitsbereichs' weiter unten in diesem Abschnitt nachlesen.
  6. Starten Sie den EGL-DL/I-Debug-Server. Weitere Informationen finden Sie unter 'DL/I-Debug-Server auf z/OS-Host starten'.
    • Zusätzliche Angaben über die Jobsteuersprache (JCL) für den Proxy-Start (ELADBGPX) können Sie unter 'Vorgehensweise' im Abschnnitt 'DL/I-Debug-Server auf z/OS-Host starten' nachlesen.
    • Weitere Informationen zur JCL für den Start des Debug-Servers (ELADBGRN) enthält der Abschnitt 'JCL für Start des Debug-Servers' unter 'DL/I-Debug-Server auf z/OS-Host starten'.

Rational COBOL Runtime for zSeries stellt Beispieldateien bereit. Die Namen der Teildateien sind in Klammern angegeben. Alle JCL- und SQL-Beispiele befinden sich in der COBOL-Laufzeit, entweder in ELA.V6R0M1.SELAJCL oder in ELA.V6R0M1.SELASAMP.

EGL-Version von AIBTDLI und CBLTDLI erstellen

Beim Debug eines Programms, das ein Programm mit den folgenden Merkmalen aufruft, gelten bestimmte Einschränkungen:
  • Es wird unter IMS oder ZOSBATCH ausgeführt.
  • Es befindet sich auf dem Host.
  • Es greift auf eine DL/I-Datenbank zu.

In diesem Fall setzt der EGL-Debugger die Verwendung von EGL-Versionen der Lademodule AIBTDLI und CBLTDLI anstelle der von IMS bereitgestellten Lademodule voraus. Rational COBOL Runtime for zSeries stellt ein Beispiel für die Jobsteuersprache (JCL) bereit, mit der diese Module in ELA.V6R0M1.SELAJCL(ELADL1) erstellt werden. Sie können die JCL bearbeiten und gemäß Ihren Systemanforderungen ändern. Anhand der Kommentare in der JCL können Sie ermitteln, welche Teile Sie ändern müssen. Stellen Sie nach der Ausführung des Jobs sicher, dass Sie die partitionierte Datei, die die resultierenden Lademodule AIBTDLI und CBLTDLI enthält, zu STEPLIB für die JCL des Workload-Managers hinzufügen.

Starttabelle für Datenbankressourcenadapter erstellen

Rational COBOL Runtime for zSeries stellt ein Beispiel für die Jobsteuersprache (JCL) bereit, mit der die Starttabelle für den Datenbankressourcenadapter in ELA.V6R0M1.SELASAMP(ELADRA) erstellt wird. In der folgenden Tabelle sind die Änderungen aufgelistet, die Sie vor der Ausführung des Jobs vornehmen müssen. Stellen Sie nach der Ausführung des Jobs sicher, dass Sie die partitionierte Datei, die die resultierende Starttabelle für den Datenbankressourcenadapter enthält, zu STEPLIB für den DLI-Debug-Proxy hinzufügen. Weitere Informationen finden Sie unter 'DL/I-Debug-Server auf z/OS-Host starten'.

Tabelle 1. Änderungen an ELADRA.JCL
Von In
  Jobkarte hinzufügen
SYSLIB Muss gemäß der Systemkonfiguration geändert werden.
#dbctlid #dbctlid muss durch die Datenbanksteuer-ID für Ihre Datenbank ersetzt werden. Dieser Wert wird auch für die Builddeskriptoroption imsID übernommen.
Der Wert stammt aus der Jobsteuersprache (JCL), die zum Starten von IMS verwendet wird. Der IMS-JCL-Parameter sollte folgendermaßen aussehen:
IMSID   XXXX  IMS SUBSYSTEM IDENTIFIER
In diesem Beispiel steht XXXX für die Datenbanksteuer-ID.
IMS.SDFSRESL SDFSRESL der partitionierten Datei für das System.
MAXTHRD=99 99 muss durch die maximale Anzahl gleichzeitiger Debugsitzungen ersetzt werden (Mindestwert ist 3).
CNBA=0 (FPBUF+FPBOF)*MAXTHREAD *
FPBUF=0 FPBUF ist die Anzahl der Puffer, die jedem Thread für die FP-Verwendung zugeordnet sein soll. *
FPBOF=0 FPBOF ist die Anzahl der Puffer und Überlaufpuffer, die jedem Thread für die FP-Verwendung zugeordnet sein soll. *
TIMEOUT=60 Legen Sie den Startparameter TIMEOUT möglichst hoch fest und länger als die UOR mit der längsten Ausführungsdauer fest.
AGN=IVP Informationen zum Konfigurieren der IMS-Sicherheit enthält das Administratorhandbuch für IMS 7.
//SYSLMOD DD DSN=ELA.V6ROM1.SELADBGL ELA.V6ROM1.SELADBGL muss durch die partitionierte Datei ersetzt werden, in der sich die Startangaben für den Datenbankressourcenadapter befinden sollen.
NAME DFSIVP10(R) DFSIVP10 muss durch DFS, gefolgt vom obigen Wert für #dbctlid, ersetzt werden.
* Weitere Informationen zum Festlegen dieser Felder enthält das Administratorhandbuch für IMS.

Das Beispiel für die Jobsteuersprache ist nachfolgend dargestellt:

//ASM EXEC PGM=IEV90,
//       PARM='DECK,NOOBJECT,LIST,XREF(SHORT),ALIGN',
//       REGION=4096K
//SYSLIB DD DSN=IMS.OPTIONS,DISP=SHR
//       DD DSN=IMS.SDFSMAC,DISP=SHR
//       DD DSN=SYS1.MACLIB,DISP=SHR
//SYSUT1 DD UNIT=SYSDA,SPACE=(1700,(400,400))
//SYSUT2 DD UNIT=SYSDA,SPACE=(1700,(400,400))
//SYSUT3 DD UNIT=SYSDA,SPACE=(1700,(400,400))
//SYSPUNCH DD DSN=&&OBJMOD;,
//       DISP=(,PASS),UNIT=SYSDA,
//       DCB=(RECFM=FB,LRECL=80,BLKSIZE=400),
//       SPACE=(400,(100,100))
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
PZP      TITLE 'DATABASE RESOURCE ADAPTER STARTUP PARAMETER TABLE'
DFSIVP10 CSECT
**********************************************************************
*        MODULE NAME: DFSIVP10                                       *
*        DESCRIPTIVE NAME: DATABASE RESOURCE ADAPTER (DRA)           *
*                  STARTUP PARAMETER TABLE.                          *
*        FUNCTION: TO PROVIDE THE VARIOUS DEFINITIONAL PARAMETERS    *
*                  FOR THE COORDINATOR CONTROL REGION. THIS          *
*                  MODULE MAY BE ASSEMBLED BY A USER SPECIFYING      *
*                  THEIR PARTICULAR NAMES, ETC. AND LINKEDITED       *
*                  INTO THE USER RESLIB AS DFSPZPXX.  WHERE XX       *
*                  IS EITHER 00 FOR THE DEFAULT, OR ANY OTHER ALPHA- *
*                  NUMERIC CHARACTERS.                               *
**********************************************************************
         EJECT
         DFSPRP DSECT=NO,                                              X
               DBCTLIB=#dbctlid,                                       X
               DDNAME=,                                                X
               DSNAME=IMS.SDFSRESL,                                    X
               MAXTHRD=99,                                             X
               MINTHRD=2,                                              X
               TIMER=60,                                               X
               USERID=,                                                X
               CNBA=10,                                                X
               FPBUF=5,                                                X
               FPBOF=3,                                                X
               TIMEOUT=60,                                             X
               SOD=A,                                                  X
               AGN=IVP
         END
//LNKEDT EXEC PGM=IEWL,
//       PARM='LIST,XREF,LET,NCAL'
//SYSUT1 DD UNIT=SYSDA,SPACE=(1024,(100,50))
//SYSPRINT DD SYSOUT=*
//SYSLMOD  DD DSN=ELA.V6R0M1.SELADBGL,DISP=SHR
//SYSLIN   DD DISP=(OLD,DELETE),DSN=&&OBJMOD;
//         DD DDNAME=SYSIN
//SYSIN    DD *
   NAME  DFSIVP10(R)

Konfiguration des lokalen Arbeitsbereichs

Führen Sie im lokalen Arbeitsbereich die folgenden Aktionen aus, um das ferne Debugging zu aktivieren:
  • Wählen Sie unter Fenster > Benutzervorgaben > EGL > Debug die Option systemType auf DEBUG setzen ab. Dies weist EGL an, den Systemtyp aus der Builddeskriptoroption zu verwenden.
  • Auf dem Clientsystem muss JDBC vorhanden sein. Welche JAR-Dateien tatsächlich benötigt werden, ist von der ausgeführten JDBC-Version abhängig.
  • Stellen Sie sicher, dass eine funktionsfähige DB2-JDBC-Standardverbindung zum Host besteht. Der EGL-Debugger verwendet diese Verbindung für den Zugriff auf DL/I.
  • Falls Sie sowohl im Code, dessen Debug ausgeführt wird, als auch in einem aufgerufenen Programm auf eine DB2-Datenbank zugreifen, muss für die JDBC-Standardverbindung die Einstellung NOAUTOCOMMIT festgelegt sein.
  • Setzen Sie die Builddeskriptoroption imsID auf den Namen Ihres IMS-Subsystems im Format CHAR(4).
  • Vergewissern Sie sich, dass eine Benutzervorgabenseite für IMS DLI unter Fenster > Benutzervorgaben > EGL > Debug vorhanden ist. Wenn dies nicht der Fall ist, wählen Sie die Optionen Fenster > Benutzervorgaben > Allgemein > Funktionen aus und klicken Sie auf Erweitert. Erweitern Sie im Fenster 'Erweitert' den Eintrag EGL-Entwickler und wählen Sie das Kontrollkästchen EGL-DLI aus. Schließen Sie das Fenster 'Benutzervorgaben' und öffnen Sie es erneut, damit die Seite 'Debug' für IMS DLI angezeigt wird.
  • Geben Sie auf der Benutzervorgabenseite 'Debug' für IMS DLI die folgenden Informationen ein.
    Name der gespeicherten Prozedur
    Die gespeicherte Prozedur auf dem Host. Dies kann der vollständig qualifizierte Name sein. Wenn dieses Feld leer ist, wird vom Standardwert EZESP1 ausgegangen. Der Wert der Eigenschaft sqlSchema aus dem Builddeskriptor wird diesem Wert vorangestellt. Der Name der gespeicherten Prozedur folgt den Regeln für 'procedure-name', die in der SQL-Referenz für ZOS DB2 beschrieben sind.
    Host-Port
    Die Nummer des Ports, an dem der Debugger-Server empfangsbereit ist.
    Konvertierungstabelle
    Definiert die Sprache des Hosts. Dies ist die Tabelle, die auch bei der Konvertierung für Aufrufverbindungen verwendet wird.
    Proxy-Zeitlimit
    Gibt an, wie lange der Proxy inaktiv (also ohne DL/I-Aktivität) sein kann, bevor der Debugger-Server seinen Abbruch anweist. Der Zeitraum sollte lang genug für die Verarbeitungszeit, aber auch kurz genug sein, damit bei einer wiederholten Freigabe der Verbindung nicht alle verfügbaren Prozesse belegt werden.
    PSB-Name
    Wählen Sie eine der folgenden Optionen für die Angabe des PSB-Namens aus:
    Builddeskriptoroption 'imsPSB' prüfen
    Wenn für die Builddescriptoroption imsPSB ein Wert angegeben ist, hat dieser Wert Vorrang vor allen anderen Quellen für den PSB-Namen.
    Benutzer für Angabe des PSB-Namens auffordern
    Bei jedem Start einer Debugsitzung wird der Benutzer aufgefordert, den PSB-Namen für den Zugriff auf DL/I-Daten anzugeben. Bei der ODBA-Schnittstelle muss der PCB benannt und mit einem PCB in dem PSB übereinstimmen, der entweder im Programm für IMS oder in dliLib.psbData für CICS definiert ist.
    PSB-Name aus DLILib.psbData verwenden
    Der Standardwert für CICS. Das Programm ermittelt Commit/Rollback für Transaktionen weiterhin anhand einer DL/I-Eigenschaft, aber der PSB-Name stammt aus dem Datensatz psbData in dliLib.
    Programmname als PSB-Name verwenden
    Der Standardwert für IMS. Dies ist entweder der Wert der Eigenschaft alias (sofern verwendet) oder der Programmname. Dieser Wert wird in Großbuchstaben umgesetzt.

Feedback