[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Zitat Zitat von dabeda Beitrag anzeigen
    ... stürzt die UDF mit Bomben und Granaten ab ...
    kannst du die genaue fehlermeldung posten?

  2. #2
    Registriert seit
    Aug 2001
    Beiträge
    2.940
    m.E. ist das Problem die Aktivierungsgruppe *CALLER (mit einer benannten Aktivierungsgruppe hat es ja funktioniert!). Wenn die Funktion in einem eigenen Thread aufgerufen wird, gibt es in diesem Thread keine rufende Aktivierungsgruppe.
    Die Overrides u.ä. führen in einem separaten Thread ebenfalls zu Problemen. RPG ist nun mal nicht Thread Safe!

    Versuch mal das folgene:
    Füge in die H-Bestimmungen das Schlüsselwort Thread(*SERIALIZE) ein. Dies sollte bewirken, dass in einer multi-threaded Umgebung kein neuer Thread eröffnet wird und die Funktion im gleichen Thread läuft.
    Die Funktion anschließend wieder mit FENCED registrieren und ausprobieren.

    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

  3. #3
    Registriert seit
    Sep 2004
    Beiträge
    129
    Werde das heute gleich mal testen.
    Das Problem ist, dass in diesem Serviceprogramm viele Prozeduren drinnen sind, hoffe nur es wirkt sich sonst auf keine aus. Sind aber alle RPG und eben nur diese eine SQL.

    @andreas
    Die Fehlermeldung hab ich nicht mehr, finde nur mehr einen Satz im Joblog: "Der Symptomzeichenfolge wurde ein ungültiges Symptom hinzugefügt". Hört sich an wie beim Arzt ...
    Wer andren eine Bratwurst brät, hat ein Bratwurstbratgerät!

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.774
    Daher sollte man SQL-Functions/Proceduren in einem Service-Programm nicht mit anderen Nicht-SQL-Prozeduren mischen.

    Gliedere die Funktion besser in ein eigenes Serviceprogramm aus.
    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

  5. #5
    Registriert seit
    Sep 2004
    Beiträge
    129
    So, hab das jetzt versucht mit THREAD(*SERIALIZE) aber das wars nicht. Wieder ein Absturz der UDF.
    Die Maschine behauptet "Zeiger für angegebene Position nicht gesetzt", aber es sind alle Parameter gefüllt.
    Habs mir im Debugmodus angeschaut, sobald die Funktion aufgerufen wird crashed das Programm und nimmt gleich noch alles im Aufrufstapel mit.

    Nochmal der Ablauf:

    In der Kundenstammwartung wird auf den Kundenstamm geschrieben, ein Trigger wird ausgelöst, darin wird mittels SQL-Cursor eine Datei gelesen in der die aufzurufenden Triggerprogramme stehen. Das erste Programm wird aufgerufen und sieht in einer Steuerungsdatei nach ob gewissen Dinge zu tun sind oder nicht. Das geschieht mittels eines Prozeduraufrufs an ein Serviceprogramm das wiederum eine UDF enthält die die Datei liest und den gewünschten Wert zurückgibt.

    Da die UDF in anderen Programmen, Views und dergleichen auch genutzt wird, dort aber direkt angesprochen wird, macht mir das schon Kopfzerbrechen wenn ich NOT FENCED angeben muß. Weiß ja nicht wie sich das auswirken kann.
    Wer andren eine Bratwurst brät, hat ein Bratwurstbratgerät!

  6. #6
    Registriert seit
    Sep 2004
    Beiträge
    129
    Also laut IBM Handbuch ist NOT FENCED nur ein Vorschlag an die Datenbank, die dann wieder selbst entscheidet ob es auch so gemacht wird.
    Denke ich lass das jetzt mal so laufen und beobachte es ein bißchen.
    Wer andren eine Bratwurst brät, hat ein Bratwurstbratgerät!

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.774
    NOT FENCED ist eine Prozedur/Funktions-Deklaration und wird nur von SQL verwendet.
    Rufst du eine Servicefunktion native auf, interressiert sich keiner für diese Deklaration.

    Wichtig ist halt nur die ACTGRP.
    Ich habe mir daher ein 2-stufiges Konzept angewöhnt:
    1. SQL-Funktion/Prozedure in eigenem Programm als reiner Rahmen
    2. Aufruf der verarbeitenden OPM/ILE-Programme über Schnittstellen
    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

Similar Threads

  1. RPGLE - SQL
    By christian_lettner in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 16-11-06, 11:15
  2. SQL UDF Function ausführung mit Fehler
    By jakarto in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 24-07-06, 14:41
  3. SQL - Fehler
    By Kaufmann in forum IBM i Hauptforum
    Antworten: 11
    Letzter Beitrag: 28-06-06, 15:11
  4. SQL .. for update of (RPG embedded SQL)
    By loeweadolf in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 01-06-06, 10:43
  5. SQL - Problem
    By muadeep in forum IBM i Hauptforum
    Antworten: 6
    Letzter Beitrag: 27-07-05, 16:17

Berechtigungen

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