View Full Version : CBLLE
Claudia Lange
22-11-01, 11:13
Hallo zusammen,
wer weiß, wie man in einem CL-Programm folgende Informationen bekommt, die über DSPOBJD für normale CBL-Programme zurückgegeben werden. Es geht um die Quellendatei, die Bibliothek und die Teildatei. Da wir ohne ein Modul zu erstellen mit CRTBNDCBL umwandeln, liefert uns dieser Befehl die o.g. Felder nicht zurück. Hat jemand eine Idee, wie das innerhalb eines CL gehen kann (DSPPGM liefert es, aber das nützt mir nichts, da ja keine Dateiausgabe möglich ist).
mfg
Claudia Lange
Matthias.Hayn
22-11-01, 11:22
Hallo,
DSPOBJD mit Ausgabe *OUTFILE und DETAIL(*SERVICE) gibt die benötigten Angaben als Datei aus.
*Nachtrag*: Stimmt ja gar nicht, nächstes mal lese ich die Frage auch bis zum Ende durch:-)
Wie wärs aber mit DSPPGM Ausgabe *PRINT und die Spooldatei umwandeln und auslesen?
Gruß
Matthias
[Dieser Beitrag wurde von Matthias.Hayn am 22. November 2001 editiert.]
Claudia Lange
22-11-01, 11:35
Hallo Matthias,
leider hat der spool mit *PRINT nicht die gleichen Informationen wie *. Die Anzeige liefert diese Werte zurück!
mfg
Claudia Lange
Rene Marquardt
22-11-01, 12:05
Hallo,
nimm DSPFD und ausgabe in Datei damit klappt es Parameter TYPE *MBR
gruß René
Andreas Guentert
22-11-01, 12:20
Hallo Claudia Lange,
hast du schon mal überlegt, ob du mit RTVOBJD weiterkommst, dieser Command liefert die Informationen direkt in CL-Variablen.
BSP:
/* RETRIEVE MEMBER NAME */
RTVOBJD OBJ(&OBJLIB/&OBJ) +
OBJTYPE(&TYPE) +
SRCF(&SRCFILE) +
SRCFLIB(&SRCLIB) +
SRCMBR(&SRCMBR)
Gruß Andi
Claudia Lange
22-11-01, 13:53
Vielen Dank für die Tips,
aber leider bringt mir der Befehl DSPFD nichts, denn die Programme stehen als Objekte in einer Bibliothek, eben nicht in einer Teldatei wie z.B. QLBLSRC. (Ich wil ja genau diese Information ermitteln).
Und der Befehl RTVOBJD ist schön, aber bringt mir diesen Wert auch nicht zurück! Ich habe es eben ausprobiert.
mfg
Claudia Lange
Bruno Jakob
23-11-01, 08:01
Ich finde den Tip von Andi ok und bei mir geht der auch.
Gruß
Bruno
Claudia Lange
23-11-01, 08:42
Bei den normalen Cobol-Programmen(Attribut CBL) liefert er mir ja die gewünschten Werte, aber es handelt sich hier bei dem erstellten Objekt nicht um das Attribut CBL, sondern um das Attribut CBLLE! Und das Programm wurde direkt mit CRTBNDCBL umgewandelt! Wenn Sie dieses Proramm-Objekt haben, liefert er mit RTVOBJD leider keinen Wert zurück! Es wurde nicht ein CRTCBLMOD und dann mit dem erstellten Modul ein CRTPGM durchgeführt, sondern die Source mit CRTBNDCBL umgewandelt(dieser Befehl macht beide Schritte intern, und da existiert das Modul nur tempörär).
mfg
Claudia Lange
Unter ILE ist das ein 2-Stufiger Prozess.
1) mit DSPPGM eine Modulliste erzeugen
2) dann für jedes Modul die Information abrufen
Dafür gibt's auch API's :
- Retrieve Program Information (QCLRPGMI) API
- List Module Information (QBNLMODI) API
Heinz Bretthauer
23-11-01, 09:39
Das Problem ist hier aber wohl, dass das Modul nur temporär existiert, wenn mit CRTBNDCBL gearbeitet wird, und der Befehl DSPMOD (Qtemp/modulname) natürlich nichts liefert.
Heinz Bretthauer
[Dieser Beitrag wurde von Heinz Bretthauer am 23. November 2001 editiert.]