[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Sep 2004
    Beiträge
    129
    Also das min *INLR wars nicht ...
    Wer andren eine Bratwurst brät, hat ein Bratwurstbratgerät!

  2. #2
    Registriert seit
    Sep 2004
    Beiträge
    129
    Ich habs!

    Danke Birgitta, das mit der Aktivierungsgruppe war schuld!

    Ist es klug das UDF-RPG jetzt mit ACTGRP(*NEW) zu wandeln, oder mit ACTGRP(PGMNAME) ??
    Wer andren eine Bratwurst brät, hat ein Bratwurstbratgerät!

  3. #3
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    UDF's MÜSSEN mit *CALLER laufen und dürfen selber keine Commit's enthalten !
    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

  4. #4
    Registriert seit
    Sep 2004
    Beiträge
    129
    Hm, Commits sind nur im Serviceprogramm das von der UDF benutzt wird.
    In der UDF sind eigentlich nur 5 Zeilen Code.

    Warum müssen UDFs mit *CALLER gewandelt werden?
    Ich meine, wie wirkt sich das aus?
    Wer andren eine Bratwurst brät, hat ein Bratwurstbratgerät!

  5. #5
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Warum müssen UDFs mit *CALLER gewandelt werden?
    Müssen nicht!
    SQL UDFs werden standardmäßig mit der Aktivierungsgruppe *CALLER erstellt und kann dies nicht ändern.

    Externe UDFs erhalten die Aktivierungsgruppe, die für das Service-Programm, in denen sich die Prozeduren befinden gesetzt wurde. Bei Service-Programmen ist der Unterlassungswert *CALLER, aber es macht durchaus auch Sinn Service-Programme in einer benannten Aktivierungsgruppe laufen zulassen, z.B. wenn in dem Service-Programm viele Prozeduren sind, die von vielen (Service-)Programmen verwendet werden z.B. Datumsrechnung. In diesem Fall wird das Service-Programm nur ein einziges Mal im Job-Speicher aktiviert und kann von allen Programmen verwendet werden. Im anderen Fall (Aktivierungsgruppe *CALLER), würde für jeden Aufruf aus einer anderen Aktivierungsgruppe eine Kopie des Programms aktiviert werden.
    Aktivierungsgruppe *NEW ist für Service-Programme nicht erlaubt!

    Service-Programme, in denen allerdings Insert, Updates oder Deletes (oder die entsprechenden native I/O Befehle) verwendet werden, sollten mit Aktivierungsgruppe *CALLER erstellt werden, um eine hohe Transaktionssicherheit zu garantieren. Der Unterlassungswert für Commitment Scope im Befehl STRCMTCTL ist Aktivierungsgruppe, d.h. ein Commit oder Rollback erfolgt nur innerhalb der gleichen Aktivierungsgruppe. (... und was viele nicht wissen, wird mit SQL und Commitment Control gearbeitet, startet SQL die Commitment Control selber, sofern sie nicht gestartet ist und zwar mit Default-Werten!).

    In UDFs sollten die Anzahl der Dateizugriffe auf ein Minimum reduziert werden, und keine Inserts, Updates oder Deletes erfolgen. (Dazu sind Stored Procedures da!). Der Grund dafür liegt darin, dass UDFs normalerweise aus einem Select-Statement aufgerufen werden.
    Enthält eine Funktion keine Dateizugriffe, oder nur wenige Lesezugriffe, erübrigt sich das Thema Commit oder Rollback in der UDF verwenden zu wollen.

    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

  6. #6
    Registriert seit
    Sep 2004
    Beiträge
    129
    Tja, wie immer gibt es noch viel zu lernen ...

    Mit Stored Procedures kann ich leider noch nichts anfangen, da muß ich mir erst noch ein bisschen Literatur gönnen.

    Vielen Dank für die Infos!

    Mfg Peter
    Wer andren eine Bratwurst brät, hat ein Bratwurstbratgerät!

Similar Threads

  1. LibraryList mit VB.NET auslesen
    By DoktorNo in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 16-07-08, 14:13
  2. Wie ein 3582 Tapelibrary ohne BRMS nutzen?
    By cs400_de in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 14-01-08, 12:55
  3. Tape von einer AS400 von anderer AS400 aus nutzen?
    By hs in forum IBM i Hauptforum
    Antworten: 15
    Letzter Beitrag: 07-11-06, 19:28
  4. Problem ODBC und VB.NET
    By Marsman in forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 11-07-06, 10:50
  5. Freigaben auf anderen Servern nutzen
    By ltsrole in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 21-10-04, 16:20

Berechtigungen

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