[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jan 2008
    Beiträge
    16

    ILE: IMPORT / EXPORT

    Hallo zusammen,

    ich habe zwei ILE-Pogramme, die mittels EXPORT-/IMPORT-Schlüsselwort kommunizieren.
    Programm A schreibt etwas in die Variable und B ließt es aus.
    Beide Programme sind korrekt gebunden und die Übertragung klappt wunderbar.
    Nachdem die Verarbeitung abgeschlossen ist, bleibt der Variableninhalt weiterhin erhalten. Das ist ein Feature dieser Konstruktion.

    Meine Frage lautet: Wie kann der Variableninhalt dennoch gelöscht werden, ohne gleich einen neuen Job starten zu müssen? Geht es über Befehle wie RCLACTGRP oder dergleichen?!


    Gruß, jc

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    RCLACTGRP ist wohl eher die harte Methode.
    Normalerweise sollte es reichen, wenn das Hauptprogramm mit *INLR = *ON verlassen wird.
    Andererseits müsste das Hauptprogramm doch eher wissen, wann der Inhalt gelöscht werden sollte.

    Hinweis:
    Eine Kommunikation über Import/Export sollte besser nicht durchgeführt werden, da der Status ggf. nicht eindeutig ist.
    Ein Serviceprogramm kann innerhalb der Aktivierungsgruppe von verschiedenen Stellen aufgerufen werden und den exportierten Inhalt verändern.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  3. #3
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    export macht die Variable global für die ACTGRP sichtbar (soweit sie in einem Modul importiert wird), die Variable wird mit der Erzeugung der Activationgroup erzeugt und lebt bis zum Ende der Activationgroup und behält über die gesamte Lebensdauer ihren jeweiligen Inhalt bis zur nächsten Änderung.
    RCLACTGRP impliziert das löschen des Inhalts aller global deklarierter Variablen, auch der exportierten, hat allerdings auch Nebenwirkungen und kann heimatlose Pointer zur Folge haben.
    (BTW: LR ist hier nicht Zielführend).
    Besser als Export/Import ist es; Prozeduraufrufe mit Parameter zu verwenden oder statt HUGO zu exportieren, Zugriffsprozeduren getHugo und setHugo zu exportieren, das ist besser kontrollierbar.

    D*B

    Zitat Zitat von jc_denton Beitrag anzeigen
    Hallo zusammen,

    ich habe zwei ILE-Pogramme, die mittels EXPORT-/IMPORT-Schlüsselwort kommunizieren.
    Programm A schreibt etwas in die Variable und B ließt es aus.
    Beide Programme sind korrekt gebunden und die Übertragung klappt wunderbar.
    Nachdem die Verarbeitung abgeschlossen ist, bleibt der Variableninhalt weiterhin erhalten. Das ist ein Feature dieser Konstruktion.

    Meine Frage lautet: Wie kann der Variableninhalt dennoch gelöscht werden, ohne gleich einen neuen Job starten zu müssen? Geht es über Befehle wie RCLACTGRP oder dergleichen?!


    Gruß, jc
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  4. #4
    Registriert seit
    Jan 2008
    Beiträge
    16
    @Fuerchau:
    Wie BenderD schon sagte, INLR führt nicht zur Initialisierung. Auszug aus der Doku:
    "The initialization for the storage occurs when the program entry procedure (of the program containing the module) is first called. RPG IV will not do any further initialization on this storage, even if the procedure ended with LR on, or ended abnormally on the previous call."

    @BenderD:
    Ich habe in diesem Fall leider keinen Einfluss auf die Art der Deklaration. Ich kann nur mit dem Gegebenen arbeiten.

    @All:
    Gibt es evtl. andere Möglichkeiten die Variablen zu löschen?

    Danke für die Antworten!


    Gruß, jc

  5. #5
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    ... so wie immer, HUGO = 0, bzw.HUGO = ' ', or whatever might be desired, in einem beliebigen Modul, das HUGO importiert

    D*B

    Zitat Zitat von jc_denton Beitrag anzeigen
    @Fuerchau:
    Wie BenderD schon sagte, INLR führt nicht zur Initialisierung. Auszug aus der Doku:
    "The initialization for the storage occurs when the program entry procedure (of the program containing the module) is first called. RPG IV will not do any further initialization on this storage, even if the procedure ended with LR on, or ended abnormally on the previous call."

    @BenderD:
    Ich habe in diesem Fall leider keinen Einfluss auf die Art der Deklaration. Ich kann nur mit dem Gegebenen arbeiten.

    @All:
    Gibt es evtl. andere Möglichkeiten die Variablen zu löschen?

    Danke für die Antworten!


    Gruß, jc
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

Similar Threads

  1. Problem mit Java-Methoden Aufruf aus ILE RPG?
    By Stoeberl in forum NEWSboard Programmierung
    Antworten: 8
    Letzter Beitrag: 10-01-07, 10:58
  2. iNavigator und der Export von Spooldateien
    By Nergal in forum NEWSboard Drucker
    Antworten: 3
    Letzter Beitrag: 05-01-07, 17:11
  3. ILE Umwandlung per FNDSTRPDM
    By horni in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 07-12-06, 18:51
  4. Return ILE RPG
    By Squall in forum IBM i Hauptforum
    Antworten: 31
    Letzter Beitrag: 28-09-06, 17:53
  5. Antworten: 0
    Letzter Beitrag: 12-06-06, 08:23

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •