Anmelden

View Full Version : Variablen in COBOL-Programm werden ungewollt initialisiert.



Daechsle
28-10-08, 12:17
Ein COBOL-Programm wird von einem RPG-Programm mehrmals aufgerufen. Beim 1. Aufruf werden Dateien geöffnet, verschiedene Variablen mit Werten befüllt und dann das Programm mit GOBACK verlassen. Beim 2. Aufruf erwartet das COBOL-Programm, dass die Dateien noch immer geöffnet und die Variablen befüllt sind, aber die Dateien sind geschlossen und alle Variablen initialisiert. Früher muss das aber offensichtlich so funktioniert haben, denn die Programme sind schon jahrelang im Einsatz. Woran kann es liegen, dass sich das Verhalten verändert hat?

Khholm
28-10-08, 15:16
prüf doch mal, in welcher Aktivierungsgruppe die Programme laufen. Wenn es nicht die gleiche ist, dann kann das schon die Ursache sein, bei Verlassen einer Aktivierungsgruppe werden nämlich alle offenen Dateien geschlossen, etc.

Beispiel RPG (ILE)

Programm . . . . . . . : xxxpgm
Attribut der Aktivierungsgruppe . . . . . . . : *DFTACTGRP

die Aktivierungsgruppe muss bei beiden Programmen die selbe sein.

Karl-Heinz

schatte
28-10-08, 16:09
Handelt es sich um ILE Programme, dann kannst du dir die Aktivierungsgruppe mit DSPPGM anzeigen.

Mögliche Werte sind z.B. QILE, *CALLER, *NEW.

Gruß
Matthias

Daechsle
29-10-08, 08:32
Vielen Dank für die Hinweise, das hat mir sehr weitergeholfen!

Wenn sowohl das aufrufende als auch das aufgerufene Programme mit dem Parameter ACTGRP(*CALLER) compiliert werden, dann funktioniert es wieder wie gewohnt und gewollt.

MfG
Roland

schatte
29-10-08, 08:46
Wenn sowohl das aufrufende als auch das aufgerufene Programme mit dem Parameter ACTGRP(*CALLER) compiliert werden, dann funktioniert es wieder wie gewohnt und gewollt.

Genau, weil dann die Aktivierungsgruppe vom vorherigen Programm übernommen wird.