[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Nicht OK.
    Zur Laufzeit befindet sich dein Programm in der Aktivierungsgruppe QILE (Schau mal per DSPPGM).
    Ein RCLRSC wirkt nur auf die *DFTACTGRP (OPM), den kannst du dir sparen, solange du keine OPM-Programme aufrufst.

    Bei Serviceprogrammen mag das mit den Aktivierungsgruppen ja stimmen, bei normalen Programmen stimmt das so aber nicht.
    Ich habe viele OPM-Programme per CVTRPGSRC in "ILE" überführt um bestimmte Vorteile zu nutzen (%builtin's, bessere Tabellen, mehr Speicher) ohne am Grundsatz der Programme was zu ändern.
    Dies sind sicherlich keine Service-Programme und beenden sich häufig mit *INLR = *OFF.
    Ob die Dinger nun aus dem Hauptspeicher entfernt werden oder nicht lässt sich nun mal nicht prüfen (da gabs früher mal Programme, ob es die heute noch gibt...), aber nach einen RCLRSC und erneutem Aufruf des Programmes wird die *INZSR wieder aufgerufen und alle Dateien wieder geöffnet.
    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

  2. #2
    Registriert seit
    Dec 2004
    Beiträge
    204
    Hallo.

    Vor dem "Ende" kommt ja noch, wie ich bereits geschrieben habt, ein CALL auf ein anderes PGM welches keine inlr = *on hat. Lasse ich das mit dem R... dann bleiben in der interaktiven Session die Dateien offen.
    Gruß,
    Ralf

  3. #3
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Zitat Zitat von TheDevil Beitrag anzeigen
    Hallo.

    Vor dem "Ende" kommt ja noch, wie ich bereits geschrieben habt, ein CALL auf ein anderes PGM welches keine inlr = *on hat. Lasse ich das mit dem R... dann bleiben in der interaktiven Session die Dateien offen.
    Gruß,
    Ralf
    Noch ein Grund die Programme in einer benannten Aktivierungsgruppe auszuführen.
    Die benannte Aktivierungsgruppe kann dann jederzeit mit RCLACTGRP (NameAktGrp) beendet werden.
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 5. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  4. #4
    Registriert seit
    Dec 2004
    Beiträge
    204
    Hallo.
    Habe das mit den Aktivierungsgruppen noch nie benutzt. Kann jemand mir das evtl. in kurzen
    Worten beschreiben ...
    Gruß,
    Ralf

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Auch wenn Birgitta da anderer Meinung ist...
    Nun, ich wandle ja mit DFTACTGRP(*NO) und ACTGRP(*CALLER).
    Wird das Programm von OPM aufgerufen wird es in *DFTACTGRP ausgeführt.
    Wird das Programm von ILE mit benannter oder *NEW aufgerufen läuft es halt da.
    RCLRSC wirkt sich ausschließlich auf die *DFTACTGRP aus.
    RCLACTGRP eben auf alle anderen.
    Was die *INZSR angeht, so wird diese natürlich vom Zyklus aufgerufen allerdings merkt sich dieser sowas im statischen Speicher, ergo muss dieser initialisiert sein um INZSR erneut aufzurufen.
    Das sind meine persönlichen Erfahrungen.

    Die ACTGRP kann Birtgitta sicherlich perfekter erklären als ich.
    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

  6. #6
    Registriert seit
    Jun 2001
    Beiträge
    2.044
    Stell dir eine ACTGRP einfach wie eine 'gekapselte Laufzeitumgebung' vor.
    Innerhalb einer ACT werden Recourcen gemeinsam verwendet, in anderen fängst du wieder von vorne an.
    Ein OVR oder das Commit kann auf JOB oder ACT Ebene gemacht werden.

    Pgmme werden entweder in
    *dftactgrp, in
    *caller (d.h. die ACTGRP des rufenden Pgms bestimmt die ACTGRP) in
    *new (d.H. es wird IMMER eine neue Laufzeitumgebung gestartet = recht langsam!) oder mit
    einem beliebigen Namen gebildet.

    Du kannst damit einiges ermöglichen.
    U.a. Ist, wenn man *new verwendet, Rekursion möglich (Hoffe du Weist was du tust!)

    Robi
    Das Notwendige steht über dem technisch machbaren.
    (klingt komisch, funktioniert aber!)

  7. #7
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Und nur so als Hinweis am Rande:
    Wenn bei Native I/O *INLR = *ON angegeben wird, dann sollte dies immer als eines der ersten Operationen in einem Programm sein und nicht am Ende.
    Wenn aus irgendeinen Grund nicht wie vorhergesehen beendet wird, bleiben die ODPs offen da die Zeile mit *INLR = *ON nicht durchgeführt wird.

  8. #8
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Bei Serviceprogrammen mag das mit den Aktivierungsgruppen ja stimmen, bei normalen Programmen stimmt das so aber nicht.
    Ich habe viele OPM-Programme per CVTRPGSRC in "ILE" überführt um bestimmte Vorteile zu nutzen (%builtin's, bessere Tabellen, mehr Speicher) ohne am Grundsatz der Programme was zu ändern.
    Dies sind sicherlich keine Service-Programme und beenden sich häufig mit *INLR = *OFF.
    Ob die Dinger nun aus dem Hauptspeicher entfernt werden oder nicht lässt sich nun mal nicht prüfen (da gabs früher mal Programme, ob es die heute noch gibt...), aber nach einen RCLRSC und erneutem Aufruf des Programmes wird die *INZSR wieder aufgerufen und alle Dateien wieder geöffnet.
    Wir wollen jetzt keine Grundsatzdiskussion durchführen, aber ein Programm von RPGIII nach RPGIV zu konvertieren und im Anschluss daran zu kompilieren, macht daraus noch KEIN ILE Programm.
    Auch wenn der ILE-Kompilier zur Umwandlung verwendet wird.
    Programme, die direkt in der Default-Aktivierungsgruppe erstellt werden, sind OPM und keine ILE-Programme. Nur Programme, die mit DFTACTGRP(*NO) kompiliert sind, sind ILE-Programme.
    ILE-Ojekte werden mit RCLRSC NICHT aus dem Speicher entfernt.

    Ob *INZSR aufgerufen wird oder nicht hat mit "Entfernen aus dem Speicher" nichts zu tun, sondern mit dem RPG Cycle.

    ... und in dieser Hinsicht glaube ich, was zum einen in der Dokumentation steht und mir zum anderen Barabara Morris erzählt hat.

    Hier übrigens ein Auszug aus den ILE-Konzepten:
    Reclaim Resources Command for OPM Programs
    The Reclaim Resources (RCLRSC) command may be used to close open files and free static storage for OPM programs that have returned without ending.

    Reclaim Resources Command for ILE Programs
    For programs that are created by the CRTBNDRPG and CRTBNDCL commands with
    DFTACTGRP(*YES) specified, the RCLRSC command frees static storage just as it does for OPM programs.
    For programs that are not created by the CRTBNDRPG or CRTBNDCL commands with
    DFTACTGRP(*YES) specified, the RCLRSC command reinitializes any activations that have been created in a default activation group but does not free static storage.

    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 5. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

Similar Threads

  1. Dynamisches embedded SQL
    By Tschabo in forum NEWSboard Programmierung
    Antworten: 10
    Letzter Beitrag: 11-03-21, 09:14
  2. MSG aus embedded SQL
    By malzusrex in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 02-06-15, 11:26
  3. embedded sql substring
    By tarkusch in forum NEWSboard Programmierung
    Antworten: 7
    Letzter Beitrag: 29-06-14, 15:12
  4. EMBEDDED SQL in RPG
    By Ludger Muhmann in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 30-07-02, 09:49
  5. Embedded SQL
    By Stefan_R in forum IBM i Hauptforum
    Antworten: 0
    Letzter Beitrag: 12-10-01, 09:47

Berechtigungen

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