[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jul 2005
    Beiträge
    12

    Datenstruktur-Array auf NULL prüfen

    Hallo,

    ich benötige bitte Hilfe bei folgendem Problem:

    Ich bekomme in meiner Subprocedure ein Array von einer Datenstruktur welches ich abarbeiten muss.

    Code:
    
    diCrtGA           pi            10I 0
    d   mTestDS                          likeds(dsTEST) dim (30)
    ...
     
    Max = 30;    //--- oder die tatsächliche Anzahl wenn diese wo ermittelt werden kann
    ...
    monitor;
       For Idx = 1 to Max;
          chain (mTestDS(Idx).iPnr) testpf;    // iPnr ist ein numerischer Key (7S0)
          ...
       EndFor;
    on-error;
       //--- Abbruch
    endmon;
    Bei weniger als 30 übergebenen Sätzen im Array stützt das Programm (auch bei Prüfung auf 0) natürlich mit einem Dezimaldatenfehler ab wenn iPnr vorher nicht für alle 30 Einträge ordnungsgemäß initialisiert wurde.

    Nun kann / will ich mich aber nicht darauf verlassen, dass das aufrufende Programm das Array vor dem Call ordnungsgemäß (vollständig) initialisiert (Serviceprogramm wird von verschiedenen RPG, Java, ... -Anwendungen aufgerufen). --> Will mich auch nicht darauf verlassen, dass ich die korrekte Anzahl als Parameter bekomme.

    In C++ oder Java würde ich jetzt einfach die Datenstruktur für den jeweiligen Index auf NULL überprüfen - (geht dass in RPGLE - wenn ja wie? - hab bisher nichts passendes gefunden).

    Mein derzeitiger Workaround ist, dass ich das ganze monitore und den Fehler einfach mit on-error abfange, was zwar funktioniert, mir aber nicht sehr gut gefällt.

    Kann mir jemand einen Tip geben wie das am einfachsten zu lösen ist (ich vermute dass es eine ganz einfache Lösung gibt, ich schau nur immer drüber.)

    Danke

    lg Martin
    INIMEO
    Martin Quereser, BSc
    Leondingerstraße 52/22
    4050 Traun
    Austria
    Tel.: 00 43 (0) 72 29 / 7 88 55
    Fax.: 00 43 (0) 72 29 / 91 888
    mail: martin.quereser@inimeo.at
    web: www.inimeo.at

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Sorry

    Da RPG keine Dynamischen Strukturen kennt, hast du ein Problem.
    Du musst die Anzahl Elemente als Parameter mit übergeben, da du sonst auf Speicherbereiche hinter der Übergabe zugreifst !
    Ein "monitor" muss nämlich nicht fehlschlagen, wenn zufällig ein gültiger Wert an der Adresse steht.
    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

  3. #3
    Registriert seit
    Jul 2005
    Beiträge
    12
    Hallo,

    danke für die schnelle Antwort.

    Wenn ich die Anzahl der Elemente übergebe, hängt es aber auch wieder davon ab dass das aufrufende PGM richtig funktioniert (wovon ich jetzt nicht zu 100% ausgehen kann).

    Dass monitor nicht zwingend auf einen Fehler läuft ist auch der Grund warum mir diese (Not-)Lösung nicht wirklich gefällt.

    Schade, ich hatte gehofft dass es eine einfache Lösung gibt und ich nur zu komplex gedacht habe.

    Falls trotzdem noch jemand eine Idee hat bitte melden.

    Danke

    lg Martin
    INIMEO
    Martin Quereser, BSc
    Leondingerstraße 52/22
    4050 Traun
    Austria
    Tel.: 00 43 (0) 72 29 / 7 88 55
    Fax.: 00 43 (0) 72 29 / 91 888
    mail: martin.quereser@inimeo.at
    web: www.inimeo.at

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Das Problem ist doch, dass RPG mit statischen Adressen umgeht.
    Jedes offengelegte Interface (hier dein Aufruf) schreibt nun mal bestimmte Parameter vor.

    Schau dir sämtliche IBM-API's an.
    Wenn du da falsche Längenangaben machst, kann's genauso knallen.

    Beschreib deine Übergabe und verlass dich halt drauf.

    Ganze ERP-Systeme arbeiten so.
    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. AS400 auf SQL Server
    By DEVJO in forum IBM i Hauptforum
    Antworten: 7
    Letzter Beitrag: 12-10-06, 18:28
  2. ILE RPG und dynamisches Array
    By Squall in forum NEWSboard Programmierung
    Antworten: 9
    Letzter Beitrag: 10-10-06, 08:53
  3. Zeit auf IFS
    By scherm in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 04-10-06, 10:48
  4. Druckereinrichtung auf AS400?
    By stephanr1 in forum NEWSboard Drucker
    Antworten: 7
    Letzter Beitrag: 20-07-06, 14:00
  5. Antworten: 5
    Letzter Beitrag: 03-08-05, 15:11

Berechtigungen

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