[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte
  1. #1
    Registriert seit
    Feb 2003
    Beiträge
    41

    Externe Java Procedur / Parameterübergabe

    Hallo,

    In meiner neuen Aufgabe muss (darf) ich Java-Classen in RPG-Programm einbinden. Das funktioniert an sich einwandfrei und ist nicht so schwer wie sich anhört, jetzt habe ich aber bei zwei classen folgendes problem: Der kompiler streikt schon mit der meldung *RNF5406 Aufruf hat weniger Parameter übergeben als laut Prototyp erforderlich sind. Die codierung sieht wie folgt aus:
    Variablen:
    d InputStream s O CLASS(*JAVA
    d :'java.io.FileInputStream ')
    d POI_FS s O CLASS(*JAVA
    d :'org.apache.poi.poifs.filesystem.-
    d POIFSFileSystem')
    d CurInpStream s like(InputStream)

    Procedur:
    D new_POI_FS PR like(POI_FS)
    d EXTPROC(*JAVA
    D :'org.apache.poi.poifs.filesystem.-
    D POIFSFileSystem'
    D :'*CONSTRUCTOR')
    D InpStream like(InputStream)

    Und der Aufruf selbst:
    CurFs = new_POI_FS(CurInpStream);

    Kann mir jemand einen Tip geben?
    Vielen Dank
    Roman

  2. #2
    Registriert seit
    Aug 2001
    Beiträge
    2.873

    Objekt 1. Parameter

    Hallo,

    kann es sein, dass mit den JAVA-Methoden Objetke bearbeitet werden müssen?

    Wenn ja, muss das entsprechende Objekt zuerst durch Aufruf der Constructor-Methode instantiiert werden.

    Abschliessend muss das Objekt als 1.Parameter übergeben werden.
    Im Prototyp wird das Objekt allerdings nicht hinterlegt.

    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
    KM is offline [professional_User]
    Registriert seit
    Apr 2003
    Beiträge
    1.005
    Hallo Roman,
    bei mir sieht das ganze so aus:

    Prototypen:

    * new POIFSFileSystem (InputStream) - FileSystem CONSTRUCTOR --------
    D createfs PR O ExtProc(*JAVA
    D :'org.apache.poi.poifs.filesystem-
    D .POIFSFileSystem'
    D :*CONSTRUCTOR)
    D Class(*JAVA
    D :'org.apache.poi.poifs.filesystem-
    D .POIFSFileSystem')
    D inpFile O Class(*JAVA
    D :'java.io.InputStream')

    * new FileInputStream(String file) - FileInputStream CONSTRUCTOR ----
    D FileInputStream...
    D PR O ExtProc(*JAVA
    D :'java.io.FileInputStream'
    D :*CONSTRUCTOR)
    D Class(*JAVA
    D :'java.io.FileInputStream')
    D file O Class(*JAVA:'java.lang.String')

    Aufruf:

    is = FileInputStream(tfileName);
    fs = createfs(is);

    Das funktioniert bei mir. Kannst es ja mal mit Deinem Code vergleichen.

    Gruß,
    KM

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Da sträubt sich ja alles. Warum Java-Funktionen, wenn es entsprechende C-Funktionen gibt ? Die sind allemal leichter einzubinden und erheblich performanter (der riesige Overhead und die ganze ständige Typumwandlung entfallen dabei).

    Diese FileStream-Funktionen deuten für mich auf IFS-Zugriffe hin, die in C-Funktionen wesentlich leichter zu realisieren sind.
    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
    Feb 2003
    Beiträge
    41
    hallo,

    vielen dank, leider kenne ich keine c-funktionen, die excel lesen, verändern und dann ausgeben. falls es aber welche gibt - her damit, werde sehr dankbar. bin auch der meinung, dass man immer versuchen soll mit einfachen mitteln zu arbeiten.

    mfg roman

  6. #6
    KM is offline [professional_User]
    Registriert seit
    Apr 2003
    Beiträge
    1.005
    @Fuerchau

    Hier geht es um die Verarbeitung von Excel-Tabellen. Erkläre mir doch bitte mal wie Du das mit Deinen C-Funktionen machen willst ???? Das würde mich dann schon mal interessieren.

    KM

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    @KM
    DAS geht ja nicht aus DIESEM sondern aus einem anderen Beitrag hervor

    Deshalb:
    Bitte nicht immer neue Beträge erstellen, wenn der andere noch nicht abgeschlossen ist. Sonst geht der Zusammenhang verloren (wie mir ja passiert).

    Und was diese Excel-Lösung angeht: warum wird diese dann nicht komplett in Java gemacht (mit SQL auf die DB), als diesen Mischmasch mit RPG ?
    Das würde wesentlich weniger problemanfällig und, denke ich, auch performanter als dieses ständige hin und her !!!
    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

  8. #8
    KM is offline [professional_User]
    Registriert seit
    Apr 2003
    Beiträge
    1.005
    @Fuerchau

    OK, ich gebe zu, dass man nicht unbedingt wissen kann, dass sich POI hauptsächlich mit der Verarbeitung von Excel-Tabellen und Word-Dokumenten beschäftigt. Aber dann solltest Du auch solche Bemerkungen wie "Da sträubt sich ja alles" besser bleiben lassen, wenn Du nicht weißt worum es geht.

    Du hast vollkommen Recht, dass es sauberer und deutlich performanter wäre, wenn man das komplett in Java machen würde. Aber die Frage bezog sich nun mal auf RPG+Java. Und Roman scheint es da wohl genauso zu gehen wie mir, dass nämlich fast sämtliche Applikationen auf der iSeries in RPG laufen und man natürlich dazu verleitet wird Bausteine von anderen Programmiersprachen mit einzubinden, wenn schon die Möglichkeit besteht. Aber das soll jeder für sich selbst entscheiden. Wer aus der RPG-Welt kommt, tut sich halt recht schwer gleich komplett auf Java umzusteigen.

    Gruß,
    KM

  9. #9
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    Hallo,

    diese Probleme sind im wesentlichen von dem Hersteller des Systems zu verantworten und weniger von den beteiligten Programmierern.

    IBM hat in den RPG Compiler einen Mechanismus eingebaut, der halt nur fast funktioniert, aber relativ einfach zu benutzen ist, bietet aber andererseits nur Work arounds an, was die Java Integration angeht.

    Java hat eine komplette Palette an Standardwegen zur Einbindung von heterogenen Komponenten und zur universellen Verwendung von Java Komponenten. Ob CORBA, WebServices oder Message driven Beans, da ist alles da, aber die AS400 darf oder kann das nicht, oder nur in Verbindung mit teurer Software (MQ Series) und die Dokumentationslage ist grausam: dicke Wälzer über Toolbox und WebsFear, Fehlanzeige über RPG und offene Standards!. Und das enge vernähen von RPG und Java wird von führenden Köpfen der RPG Fraktion auch noch als der wahre Jakob verkauft.

    mfg

    Dieter Bender

    Zitat Zitat von Fuerchau

    Und was diese Excel-Lösung angeht: warum wird diese dann nicht komplett in Java gemacht (mit SQL auf die DB), als diesen Mischmasch mit RPG ?
    Das würde wesentlich weniger problemanfällig und, denke ich, auch performanter als dieses ständige hin und her !!!
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  10. #10
    Registriert seit
    Feb 2003
    Beiträge
    41
    also ich werde mich vom fenster stürzen - ich mache es ganauso und bei mir geht es halt nicht. könnte sein, dass das ein compilerproblem ist? sonst noch ideen.

    Ansonsten vielen dank,
    mfg roman

  11. #11
    Registriert seit
    Feb 2003
    Beiträge
    41
    hallo birgitta,

    danke für deinen tip, leider ist das nicht so. das sind beide prototypen zum erstellen eines objekts, aber alle beide haben parameter. es sind bei den classen mehrere constructors möglich, halt ohne und mit parametern, ich schätze mal, dass das problem daran liegt. solltest du noch eine idee haben, bitte um mitteilung, bin an grenze der verzweiflung.
    noch mal vielen dank
    roman

  12. #12
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    Hallo,

    das hilft meistens auch nicht...
    Compilerproblem eher nicht, eher Problem von der Sorte: mit Brille wär das nicht passiert. Vielleicht solltest du mal das Programm so klein wie möglich machen und dann das Compile Listing posten.

    mfg

    Dieter Bender

    Zitat Zitat von roko
    also ich werde mich vom fenster stürzen - ich mache es ganauso und bei mir geht es halt nicht. könnte sein, dass das ein compilerproblem ist? sonst noch ideen.

    Ansonsten vielen dank,
    mfg roman
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

Similar Threads

  1. Java und Fehlermeldung jva0122 bei simplen "Hello World"
    By TARASIK in forum IBM i Hauptforum
    Antworten: 21
    Letzter Beitrag: 30-03-11, 13:48
  2. Java Version
    By Muchi in forum NEWSboard Java
    Antworten: 2
    Letzter Beitrag: 07-11-06, 11:00
  3. Externe Prozeduren/Bindeverzeichnisse
    By GraueEminenz in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 18-07-06, 09:05
  4. Antworten: 3
    Letzter Beitrag: 06-06-06, 15:57
  5. Java Developer Kit 1.4
    By usafft in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 25-04-06, 07:23

Berechtigungen

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