PDA

View Full Version : programm beenden



E305GL
24-09-15, 10:00
hallo, gibts eine Möglichkeit in der 5250-Session untergeordnete CL/RPG-Programme nach Ausnahmesituationen zu beenden. Der Aufruf erfolgt durch CALL. Das Verlassen erfolgt durch RETRN und bei ordnungsgemäßer Beendigung durch LR. Gibt's eine Möglichkeit diese scheinbar aktiven Programmleichen bzw. und somit noch offenen Dateien abzufragen ? danke

Fuerchau
24-09-15, 10:25
Sicherlich mag es da API's geben, aber wirklich freigeben kannst du die Programme nur durch Beenden der ACTGRP.
Bei OPM reicht da ein RCLRSC, aber ein RCLACTGRP darf nicht für aktive ACTGRP's ausgeführt werden.

Möchte man in ILERPG sicherstellen, dass ein Programm hinter sich aufräumt, so musst du dies in eine gesamte MONITOR-Gruppe einbetten und darfst keine impliziten Opens haben, da die vor dem ersten Statement passieren.

Die frühere, nicht mehr dokumentierte, FREE-Anweisung gibt es nur für OPM-Programme.

E305GL
24-09-15, 11:00
danke für die info, so bin ich mir wenigsten sicher, dass ich keine einfache möglichkeit übersehen habe

Fuerchau
24-09-15, 11:43
In ILE-Umgebung sollte sowieso jedes Programm für sich entscheiden, ob es aufräumen will oder nicht (Cache-Funktionen).
Bei INLR = *on ist dann eine Monitor-Gruppe erforderlich.
Dann sollten allerdings Benachrichtigungsfunktionen vorhanden sein.
Der übliche Weg, dass im Dialog eine Nachricht kommt und im Batch der Job anhält, funktioniert dann nicht mehr.

Service-Programme können typischerweise eher nicht aufräumen da sie nach dem 1. Aufruf immer im Speicher verbleiben. Auch hier gilt natürlich immer eine sinnvolle Fehlerbehandlung;-).

Im CLLE passiert dies eher selten, da hier stärker mit automatischem Speicher, auch für Dateien, gearbeitet wird und dann auch bei Abbruch eher selten was übrig bleibt.
ALCOBJ's werden natürlich nicht automatisch aufgelöst, hier ist ein MONMSG im CLLE erforderlich.