[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Aug 2002
    Beiträge
    77

    Question Pointer ins Nirwana nach Proc Aufruf???

    Ich habe ein Modul mit einer Procedure.
    Diese Proc soll den Inhalt einer Datenstruktur ermitteln und den Pointer auf diese DS an das Hauptprogramm zurückgeben.
    Wenn der pointer an das Hauptprogramm zurückgegeben wird weisst er ins Nirwana.
    Was mache ich falsch???
    Ach ja: die Proc ist direkt mit ADDBNDDIRE in mein Bindeverzeichnis eingestellt.

    Sieht in etwa so aus:

    Main Programm:

    D Proc PR *
    D 18A VALUE
    D 10S 0 VALUE
    D 3A OPTIONS(*OMIT)

    D DS DS based(Ptr_DS)
    D Anzahl 5S 0
    D Matn 18A 0 DIM(50)
    D Menge 8S 0 DIM(50)

    C eval Ptr_DS = Proc(Feld1:Feld2)

    .. Der inhalt der DS ist nach dem Aufruf Schrott
    *********

    Procedure:
    Prototyp wie oben...
    H Nomain
    P P#CHK_BEST B EXPORT
    D PI *
    D E#MATN 18A VALUE
    D E#MNG_POS 10S 0 VALUE
    D I#MAND 3A OPTIONS(*OMIT)

    D DS DS INZ
    D Anzahl 5S 0
    D Matn 18A 0 DIM(50)
    D Menge 8S 0 DIM(50)

    D Ptr_DS S *

    C Eval Matn(1) = '4711'
    C Eval Meng(1) = 1
    C Eval Ptr_DS = %ADDR(DS)
    C Return Ptr_DS
    P E

    Andreas
    ***Wer einen Schreibfehler findet darf ihn behalten***

  2. #2
    Registriert seit
    Jan 2001
    Beiträge
    340

    Post

    <BLOCKQUOTE><font size="1" face="Verdana, Arial">Zitat:</font><HR>
    Wenn der pointer an das Hauptprogramm zurückgegeben wird weisst er ins Nirwana.
    [/quote]
    wohin denn sonst ? die Prozedur ist ja beendet, oder?

    Gruß
    Rolf

  3. #3
    Registriert seit
    Mar 2002
    Beiträge
    5.287

    Post

    Hallo,
    erst mal eine Anmerkung zur Frage:
    wenn irgendwas nicht tut, dann ist es sinnvoll den Original Code anzugeben und nicht den Ungefähren, oder keinen. Das erhöht die Antwortquote.

    Um Rolfs frotzelige Antwort zu erläutern: der zurück gegebene Pointer darf nicht auf lokalen Speicher der Prozedur verweisen und es steht zu vermuten, dass er das tut. Alle lokalen Deklarationen einer Prozedur werden mit automatic storage hinterlegt, der nach Beendigung der Prozedur weg ist. Wenn er global deklariert wird, dann sollte dieses Problem weg sein, solange kein RCLACTGRP oder ACTGRP(*NEW) im Spiel ist.

    Dieter


    <BLOCKQUOTE><font size="1" face="Verdana, Arial">Zitat:</font><HR>Original erstellt von rmittag:
    Wenn der pointer an das Hauptprogramm zurückgegeben wird weisst er ins Nirwana.
    wohin denn sonst ? die Prozedur ist ja beendet, oder?

    Gruß
    Rolf
    [/QUOTE]

    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 2001
    Beiträge
    340

    Cool

    hi Dieter,
    just couldn't resist ...



    Rolf

  5. #5
    Registriert seit
    Aug 2002
    Beiträge
    77

    Post

    Hallo Dieter und Rolf,
    danke für die Antworten.
    Gruß
    Andreas
    Andreas
    ***Wer einen Schreibfehler findet darf ihn behalten***

Similar Threads

  1. ASCII-Spoolfile ins IFS kopieren
    By Souljumper in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 23-01-07, 10:02
  2. Problem mit Java-Methoden Aufruf aus ILE RPG?
    By Stoeberl in forum NEWSboard Programmierung
    Antworten: 8
    Letzter Beitrag: 10-01-07, 10:58
  3. QueryManager / Query ---> Aufruf mit Variablen
    By Kaufmann in forum IBM i Hauptforum
    Antworten: 6
    Letzter Beitrag: 29-11-06, 18:07
  4. Aufruf STRDBG dauert ewig!
    By schatte in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 04-09-06, 08:50
  5. STRQSH Aufruf als Job dauerhaft laufen lassen
    By QSECOFR-1 in forum IBM i Hauptforum
    Antworten: 7
    Letzter Beitrag: 14-06-06, 18:02

Berechtigungen

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