[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Oct 2004
    Beiträge
    251
    Dazu muss ich etwas raten:

    Java-Ausnahme:"java.io.FileNotException: Funktion nicht zulässig..."
    ...und das noch bei einer Ausgabeoperation.

    Meine Klasse "JGlaskugel" hätte anzubieten:

    - Verzeichnis nicht gefunden (File muss bei Output nicht vorhanden sein!!!)

    - keine Berechtigung zur Fileanlage in diesem Verzeichnis

    - Java mag das QDLS nicht (ich auch nicht)

    - POI will vielleicht anhängen (eher unwahrscheinlich)

    Zur Einschränkung:
    Test mit fixen Dateinamen außerhalb der QDLS, Berechtigungen im Verzeichnis prüfen

    Robert P.

    Nachtrag: Versuch aus dem Job (ev. Spoolfile) noch irgendwo die orginale Javafehlermeldung zu finden, die "beschnittene" ist mir etwas unsicher.
    Normalerweise wird ein FileNotFound im Format:
    Filename (Fehlermeldung) ausgegeben

    noch eine Variante:
    - der Dateiname hat führende Leerzeichen oder heißt "Funktion nicht ....."

  2. #2
    Registriert seit
    Jun 2005
    Beiträge
    11
    Danke für den Tip.
    Hatte wirklich mit den Berechtigungen im QDLS zu tun.
    Die .XLS Datei wird jetzt an einem anderen Ort generiert.

    Jetzt komme ich aber schon wieder zu einem Problem.

    Ich hätte gerne folgenden Ablauf in einem CL:

    Erstelle Datei
    Kopiere die Datei ins QDLS
    Öffne sie via STRPCCMD

    Problem bei der Sache ist, dass die Datei gesperrt ist, wenn das Programm über einen Call aufgerufen wird. Erst wenn ich mich komplett aus der Sitzung abmelde ist diese wieder frei.

    Wenn ich im CL das Programm mit submitjob aufrufe weiss das CL ja nicht, wann das Programm beendet ist und er versucht das kopieren zu früh.

    Gibt es hier eine Lösung?
    Gibt es einen Befehl der alle Datei/Ojektsperren aufhebt?

    [edit]
    Habe gerade im Forum etwas gesucht und werde mal CHKIN testen ...
    [/edit]

    danke im Voraus ...

  3. #3
    Registriert seit
    Jun 2005
    Beiträge
    11

    Unhappy

    Also ich habe jetzt ein wenig getest, allerdings ohne erfolg:

    ich habe 2 varianten getestet:
    1. rufe ich am ende des progammes ein CL auf.
    2. Ein CL, dass erst das PGM aufruft und dann den rest abarbeitet.

    Bei beiden Varianten bekomme ich dann stets die Meldung, dass die Datei noch im Zugriff wäre ...

    Code:
    PGM                                                       
    CALL       PGM(YGXLS)                                     
    MONMSG     MSGID(CPF0000)                                 
    CHKIN      OBJ('/XLTEST/ZR9T00.XLS')                      
    MONMSG     MSGID(CPF0000)                                 
    STRPCO                                                    
    MONMSG     MSGID(CPF0000)                                 
    STRPCCMD   PCCMD('NET USE L: \\xx.xx.xx.xx\XLTEST PASSWORT + 
                 /USER:USERNAME') PAUSE(*YES)                 
    MONMSG     MSGID(CPF0000)                                 
    CHKIN      OBJ('/XLTEST/ZR9T00.XLS')                      
    MONMSG     MSGID(CPF0000)                                 
    STRPCCMD   PCCMD('L:\ZR9T00.XLS') PAUSE(*YES)   
    MONMSG     MSGID(CPF0000)                                           
    ENDPGM
    Das YGXLS Programm erstellt mir die ZR9T00.XLS in /XLTEST/
    Das Verbinden des Netzwerklaufwerks funktioniert auch wunderbar. Aber die Datei bekomme ich nicht mit dem Befehl angezeigt ...

    Warum bringt hier chkin nix? Habe ich hier einen Denkfehler?

    Seltsamerweise kann ich die Datei aber über den Explorer im Excel öffnen ...

    Kann mir hier jmd. weiterhelfen?
    Danke im Voraus ...

  4. #4
    Registriert seit
    Aug 2004
    Beiträge
    923
    Hello,

    bin gerade nicht in der Materie drin... aber...
    der MONMSG CPF000 lässt doch das CLP weiterlaufen, auch wenn der CHKIN ins Leere läuft?

    k.

  5. #5
    Registriert seit
    Oct 2004
    Beiträge
    251
    Ich denke das dein Problem zu 90% daran liegt, das du den FileOutputStream nicht mit close() zumachst.

    Da die JVM in einem anderen Job läuft, hilft auch das CHKIN nicht.

    Robert P.




  6. #6
    Registriert seit
    Jun 2005
    Beiträge
    11
    das hört sich logisch an, wenn das noch nicht im beispielcode drin ist ... Blos wie binde ich das ganze denn nur ein ...

    Ich teste gerade erfolglos einen Prototypen im Code einzubauen und diesen dann aufzurufen:

    Code:
      *
     Dclose            PR                  EXTPROC(*JAVA                        
     D                                     :'java.io.FileOutputStream'          
     D                                     :'close')                            
      *
    ...
    
    writeWB(wb:outFile);
    outFile.close();
    Habe jetzt schon mehrere Versuche gemacht den Prototypen einzubinden ...

    Die Methode java.io.FileOutputStream.close wird doch mit keinem Parameter aufgerufen und gibt (void) auch keinen zurück?

    Wo liegt hier schon wieder mein Denkfehler?

    Danke im Voraus ...

  7. #7
    KM is offline [professional_User]
    Registriert seit
    Apr 2003
    Beiträge
    1.012
    Probier's mal mit

    close(outFile);

    So steht's in meiner Source.

    Gruß,
    KM

  8. #8
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Da RPGLE nicht mit Objekten arbeitet, musst du den Funktionsnamen immer so angeben, wie du ihn mit D-Bestimmung benennst:

    DMeier PR EXTPROC *JAVA
    D :'java.io.FileOutputStream'
    D :'close')
    *

    Meier(outFile);
    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

  9. #9
    Registriert seit
    Jun 2005
    Beiträge
    11
    Wenn ich folgendes verwende:
    Code:
    close(outFile);
    bekomme ich folgende Fehlermeldung:

    Code:
        close(outFile);   
    ==> ggggg abcdef
          
    *RNF5048 20 a      029300  Die Operationserweiterung ist nicht A, D, E, H, M, N, P, R,
                               T oder Z.
    *RNF5048 20 b      029300  Die Operationserweiterung ist nicht A, D, E, H, M, N, P, R, 
                               T oder Z.                                                   
    *RNF5049 20 c      029300  Die Operationserweiterung ist für den angegebenen           
                               Operationscode ungültig.                                    
    *RNF5048 20 d      029300  Die Operationserweiterung ist nicht A, D, E, H, M, N, P, R, 
                               T oder Z.                                                   
    *RNF5048 20 e      029300  Die Operationserweiterung ist nicht A, D, E, H, M, N, P, R, 
                               T oder Z.                                                   
    *RNF5048 20 f      029300  Die Operationserweiterung ist nicht A, D, E, H, M, N, P, R, 
                               T oder Z.                                                   
    *RNF5023 30 g      029300  Für diese Operation wurde kein Operand in Faktor 2          
                               angegeben.
    Bei der Zeile hätte der Prototyp doch auch etwas anders aussehen müssen, oder?

    Meiner Meinung nach müsste der doch dann so aussehen:
    Aber ich bekomme in beiden Fällen die gleiche Meldung ... somit bin ich mit meiner Annahme also falsch

    Code:
    ---> alt:
    
    Dclose            PR                  EXTPROC(*JAVA                  
    D                                     :'java.io.FileOutputStream'    
    D                                     :'close')                      
    
    ---> neu:
    
    Dclose            PR                  EXTPROC(*JAVA                
    D                                     :'java.io.FileOutputStream'  
    D                                     :'close')                    
    Dparm                             O   CLASS(*JAVA                  
    D                                     :'java.io.FileOutputStream')

  10. #10
    KM is offline [professional_User]
    Registriert seit
    Apr 2003
    Beiträge
    1.012
    Verwende doch mal einen anderen Begriff (z.B. closeFile anstatt close). Close ist ja schon ein RPG-Befehl.

    Gruß,
    KM

  11. #11
    Registriert seit
    Jun 2005
    Beiträge
    11
    @KM: ... grins ... da hätte ich ja auch mal draufkommen können
    Nach Umbenennung der Methode funktioniert die Umwandlung.

    vielen dank nochmals ...

Similar Threads

  1. Starten Java auf dem PC
    By mk in forum NEWSboard Java
    Antworten: 4
    Letzter Beitrag: 11-12-06, 08:51
  2. Emailprotokoll auf i5?
    By Blaumeise in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 17-11-06, 12:19
  3. Jobwarteschlangen einrichten auf i520 V5.3
    By Blaumeise in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 24-05-06, 11:31
  4. Information Center V5R3 auf i5 installieren?
    By Stoeberl in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 23-09-05, 08:49
  5. oxaion erfolgreich auf i5 getestet
    By ralfmh in forum Archiv NEWSboard Events
    Antworten: 1
    Letzter Beitrag: 07-10-04, 11:17

Berechtigungen

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