PDA

View Full Version : ODP in einem Server-Job schliessen



Seiten : [1] 2

V_P
23-02-07, 14:30
Hallo zusammen,

bin heute auf ein Problem gestoßen.
Ein Server-Job führt folgende Routine aus:
- ruft CL-Pgm A
- CL-Pgm A ruft RPG-Pgm B
- RPG-Pgm B liest die Datei X
- beim RPG-Pgm wird der Schlater *INLR nicht gesetzt

Im CL-Pgm A möchte ich steuern auf welche Datei das RPG-Pgm B zugreifen soll. D.h. es gibt die gleiche Datei X in unterschiedlichen Bibliotheken (B1, B2, etc).
Die Routine, welche die Bibliothekliste entsprechend anpasst, ist in CL-Pgm A implementiert.
Es klappt aber nicht!
Dadurch, dass beim 1-ten Durchlauf der Dateipfad zu Datei X in der Bibliothek z.B. B1 aufgebaut und nicht geschlossen wird, wird bei jeden weitern Durchlauf immer noch auf die Datei X in der Bibliothek B1 zugegriffen.

Meine Frage ist also, gibt es eine Möglichkeit in einen CL-Pgm die offenen Datenpfade zu schliessen?

Bin für jeden Ratschlag dankbar.

Gruß
Vladimir

Fuerchau
23-02-07, 14:32
Das Zauberwort heisst:
Für OPM: RCLRSC
Für ILE: RCLACTGRP

V_P
23-02-07, 14:37
Diese Befehle habe ich auch bereits ausprobiert, aber ohne Erfolg.
Vielleicht liegt es daran, dass alle Pgme innerhalb dieses Job in einen und derselben Aktivierungsgruppe sind?

V_P
23-02-07, 14:54
Das Problem ist jetzt gelöst.

Habe RCLRSC anstatt am Anfang des CL-Pgms ans Ende verschoben. Und sieh an, es funktioniert. :)

Fuerchau
23-02-07, 15:33
RCLRSC ist im Prinzip direkt nach dem CALL aufzurufen.
Klar, wenn du direkt am Anfang RCLRSC durchführst werden offene ODP's auch gelöscht.
Haupsache es findet innerhalb deiner Schleife statt.

schatte
05-12-07, 16:23
Hallo,

gibt es eine Möglichkeit die Anzahl der offenen Datenpfade eines Jobs zu ermitteln? In WRKJOB Auswahl 14 wird die Anzahl der offenen Datenpfade angezeigt. Kann dieser Wert auch programmtechnisch ermittelt werden?

Gruß
Matthias

schatte
05-12-07, 19:43
Man sollte das ganze wohl mit dem API QDMLOPNF hin bekommen.

Hat jemand zufällig ein Beispiel Programm?

kuempi von stein
06-12-07, 09:35
Man sollte das ganze wohl mit dem API QDMLOPNF hin bekommen.

Hat jemand zufällig ein Beispiel Programm?


meint er sowas?
Think400 - iSeries (AS/400) API interfaces (http://www.think400.dk/apier_6.htm#eks0002)

k.

BenderD
06-12-07, 09:45
Hallo,

warum öffnest und schließt du die Datei dann nicht einfach user controlled im RPG??? den OVRDBF kannst due ebenfalls dort per system (oder QCMDEXC) einfacher erledigen.

D*B


Hallo zusammen,

bin heute auf ein Problem gestoßen.
Ein Server-Job führt folgende Routine aus:
- ruft CL-Pgm A
- CL-Pgm A ruft RPG-Pgm B
- RPG-Pgm B liest die Datei X
- beim RPG-Pgm wird der Schlater *INLR nicht gesetzt

Im CL-Pgm A möchte ich steuern auf welche Datei das RPG-Pgm B zugreifen soll. D.h. es gibt die gleiche Datei X in unterschiedlichen Bibliotheken (B1, B2, etc).
Die Routine, welche die Bibliothekliste entsprechend anpasst, ist in CL-Pgm A implementiert.
Es klappt aber nicht!
Dadurch, dass beim 1-ten Durchlauf der Dateipfad zu Datei X in der Bibliothek z.B. B1 aufgebaut und nicht geschlossen wird, wird bei jeden weitern Durchlauf immer noch auf die Datei X in der Bibliothek B1 zugegriffen.

Meine Frage ist also, gibt es eine Möglichkeit in einen CL-Pgm die offenen Datenpfade zu schliessen?

Bin für jeden Ratschlag dankbar.

Gruß
Vladimir

schatte
06-12-07, 11:31
meint er sowas?
Think400 - iSeries (AS/400) API interfaces (http://www.think400.dk/apier_6.htm#eks0002)

k.

Ja genau, das meine ich. Wobei ich immer hoffe, dass jemand auch mal ein API Beispiel in Cobol schreibt.

Viele Dank!