quereser
17-03-09, 15:26
Hallo,
ich benötige bitte Hilfe bei folgendem Problem:
Ich bekomme in meiner Subprocedure ein Array von einer Datenstruktur welches ich abarbeiten muss.
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
ich benötige bitte Hilfe bei folgendem Problem:
Ich bekomme in meiner Subprocedure ein Array von einer Datenstruktur welches ich abarbeiten muss.
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