M.H., nach einen Tipp von Gary Guthrie, News/400 USA und einem News-Beitrag von Babara Morris, IBM
Henne-und-Ei Problem bei Serviceprogrammerstellung
Ich hatte bisher zwei Serviceprogramme A und B, deren Prozeduren aus Anwendungs- bzw. anderen Service-Programmen aufgerufen werden. Soweit kein Problem. Nun sind jedoch Funktionen aus A und B in einem neuen Serviceprogramm C modularisiert worden, das aber gleichzeitig Prozeduren aus A verwendet. Die Umwandlung von A schlägt nun fehl, weil die Prozeduren aus C noch nicht zur Verfügung stehen, umgekehrt lässt sich C nicht erstellen, weil A noch nicht als Programmobjekt vorliegt. Abgesehen davon, dass dieses Problem durch ein rechtzeitig durchdachtes Moduldesign hätte vermieden werden können – gibt es eine Möglichkeit aus diesem Dilemma herauszukommen?
Diese Möglichkeit gibt es tatsächlich: wandeln Sie Ihre Service-Programme wie folgt um:- a) CRTSRVPGM C … Option(*unrslvref) b) CRTSRVPGM A … c) CRTSRVPGM B … d) CRTSRVPGM C , aber diesmal ohne Option(*unrslvref)
Option(*unrslvref) unterbindet die Auflösung der Importbestimmungen und ermöglicht so eine „provisorische„ Programmerstellung. Das Serviceprogramm ist in dieser Form allerdings nicht lauffähig (Zur Laufzeit würde ein Fehler MCH3203 – „Funktionsfehler in Maschineninstruktion..„ auftreten!). Deshalb müssen Sie zum Schluss das Service-Programm C erneut umwandeln, diesmal aber ohne diese Option.
Nach einem News-Beitrag von Babara Morris, IBM
Mehrfach-Datenstruktur als Parameter übergeben
Frage
Ich möchte eine Mehrfach-Datenstruktur von einem RPG IV Programm A an ein anderes RPG-Programm B übergeben, genauer gesagt den Pointer, der auf die Datenstruktur verweist. Der folgende Programmausschnitt aus Programm A zeigt das von mir gewählte Verfahren:
Bei (1) wird der Prototyp für Pgm B definiert, mit einem Pointer als Aufrufparameter. Bei (2) erfolgt die Definition der Mehrfachdatenstruktur mit Hilfe einer externen Dateibeschreibung (Datei1) und die Definition des zugehörigen Adresspointers (3). Bei (4) wird der Pointer mit dem Adresswert gefüllt und das Unterprogramm B aufgerufen Im Prinzip funktioniert dies auch. Ein Programmprototyp, mit dem ich das Verfahren getestet habe, hat fehlerfrei gearbeitet. Aber im Echtbetrieb scheinen am Anfang der Mehrfachdatenstruktur mehr oder weniger viele Zeilen zu fehlen. Wo könnte das Problem liegen?
Noch nicht Abonnent? Sonderaktion nutzen.