[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    May 2004
    Beiträge
    444

    Rückgabe eines Arrays aus einer Funktion

    Hallo zusammen,

    ich habe folgendes Problem.
    Ich habe eine selbt geschriebene Funktion die als Rückgabewert ein Array hat

    PHP-Code:
    dGetLngTxt        pr           256    dim(10)               
    d                                6    const                 
    d                                9    const                 
    d                                2    const options(*nopass
    Habe ich in meinem Programm in welchem ich die Funktion benutzen möchte die Möglichkeit auf das 2. Element zuzugreifen ????

    Also z.B. Text = getLngTxt('XXX':'XXXX')(2)

    So gehts natürlich nicht. Das habe ich mir zwar erhofft aber ging leider nicht.

    Habt ihr eine Idee ? Sonst müsste ich in allen Programmen ein Hilfsarray verwenden und dort erst rein stellen.

  2. #2
    Registriert seit
    Aug 2001
    Beiträge
    2.873
    Zitat Zitat von harkne
    Habt ihr eine Idee ? Sonst müsste ich in allen Programmen ein Hilfsarray verwenden und dort erst rein stellen.
    Da wird wohl nichts anderes übrig bleiben. Es gibt keine Möglichkeit direkt auf eine Element in einem Rückgabe-Wert zuzugreifen.

    Eine andere Möglichkeit wäre, Du schreibst eine weitere Funktion, mit einem zusätzlichen Parameter, in dem Du das gewünschte Element angibst. Diese Funktion ruft dann die erste auf und gibt nur das entsprechende Element zurück.
    Da man in RPG leider nicht überladen kann, muss die neue Funktion natürlich auch anders heißen als die bereits bestehende.

    Birgitta
    Birgitta Hauser

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

  3. #3
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Ein Hilfsarray spart sogar ggf. Aufrufe, wenn man auf mehr als 1 Element zugreifen will. Was anderes wäre mit dieser Funktion sowieso schlecht. Warum sollte ein Array zurückgegeben werden, wenn immer nur 1 Element benötigt wird ?
    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
    May 2004
    Beiträge
    444
    Ihr habt alle recht und ich danke Euch allen.
    Ich hätte natürlich nicht ein Array zurückgegeben wenn es nicht an manchen Stellen von nöten wäre. Damit spare ich mir die Funktion 10mal aufzurufen. Im Moment da >ICH< sie zum ersten mal selbst verwende bin ich schlauer und hätte einfach einen String zurückgegeben den ich mit substring hätte auflösen können, nur hat mein Kollege inzwischen die Funktion bereits in ca 40 Programme eingebaut und das wollte ich ihm dann doch nicht antun .
    Ansonsten hab ich mir jetzt halt auch eine Funktion gemacht die diese Funktion aufruft und nur das erste Element zurück gibt.

    Also nochmals danke an alle.

    Aber irgendwie finde ich hat da IBM ein bischen gepatzt. Eine Funktion ist sozusagen ein Array aber ich kann nicht auf dessen Elemente zugreifen.

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Diese Aussage ist da etwas falsch. Die Funktion ist eine Funktion und kein Array, deshalb erlaubt die RPG-Syntax da keine Erweiterung.

    Andere Programmiersprachen (VB/C++/Java) können den Rückkehrwert einer Funktion als temporäre Variableoder oder Adresse übernehmen und daher auf diese mittels Array-Index auch zugreifen.
    Du kannst dir dies auch als allgemeine BuiltIn-Funktion denken, die als Argument ein Array bekommt und als Ergebnis ein Element liefert.
    Das funktioniert aber nur durch o.g. überladene Funktionen, die RPGLE nun mal (leider oder Gott-sei-Dank) nicht kennt. (Gerade Überladungen dienen häufig der Verwirrung des Programm-Lesers, machmal auch des programmierers.)

    Du könntest dir also auch eine eigene Funktion schreiben, die speziell für dieses Array das Problem löst.
    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. SQL: Ausführungsverhalten einer Funktion in einem CASE-Statement
    By mwithake in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 04-08-09, 14:57
  2. Funktion in WRKACTJOB wiederherstellen
    By Marsman in forum NEWSboard Programmierung
    Antworten: 8
    Letzter Beitrag: 27-09-06, 12:32
  3. sql funktion
    By steven_r in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 01-06-06, 12:16
  4. Erstellen Trigger über SQL / Read Funktion
    By GHoffmann in forum IBM i Hauptforum
    Antworten: 0
    Letzter Beitrag: 07-07-05, 09:18
  5. Funktion in WRKACTJOB
    By Robi in forum IBM i Hauptforum
    Antworten: 6
    Letzter Beitrag: 28-07-04, 10:30

Berechtigungen

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