[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte
  1. #1
    Registriert seit
    Jun 2005
    Beiträge
    11

    Java POI API auf I5 installieren / einrichten

    Hallo zusammen,
    ich würde gerne die POI API auf der AS/400 nutzen, aber für meinen QSECOFR ist Java Neuland ... Kann mir hier jmd. helfen?
    Wo bekomme ich die Dateien für die I5 her?
    Wie füge ich die entsprechende API in die I5 ein?
    Mit welchen Befehlen wird das ganze installiert?
    Hat jmd. einen Link mit einer guten Doku?

    Danke im Voraus ...

  2. #2
    Registriert seit
    Aug 2004
    Beiträge
    923
    Hello,
    das hat nicht was mit den APIs auf der AS/400 zu tun? Nö, oder?
    Soweit ich die Zusammenhänge sehe, ist da immer die Rede von Notes/Domino und Java und Excel Worksheets die Rede.

    Why POI?
    It is a much lamented fact that it's difficult to interoperate with Microsoft's proprietary file formats.
    The Apache Software Foundation has answered this problem with a project known as POI (POI stands for Poor Obfuscation Implementation).
    The goal of POI is to make Microsoft Office files based on Microsoft's OLE 2 Compound Document format easy to manipulate through a set of Java APIs.
    POI APIs have been developed for only the most common Microsoft Office files, Word and Excel; other APIs exist for general OLE 2 Compound Documents and property files.
    The Apache POI website at http://jakarta.apache.org/poi/index.html can provide you with a wealth of additional information about the POI project and these APIs.

  3. #3
    Registriert seit
    May 2002
    Beiträge
    2.642

    POI

    Hallo,
    ich denke da hilft Dir dies weiter (es kann aber bereits eine neuere Version geben):

    GETTING THE POI JAVA CLASSES
    You can download the Java classes from the Jakarta Web site. To do
    that, follow these steps:

    a) Navigate to http://jakarta.apache.org/poi/*.

    b) Click "Download."

    c) A list of "download mirrors" will be displayed. These all have the
    same software on them, so pick one that's close to you to get the best
    download speeds.

    d) On the mirror site, you'll have to choose between "dev"
    (development) or "release." The development code will have the latest
    and greatest features, but may have bugs in it. The released code has
    been tested more thoroughly, but may lag behind in features. For my
    company, I chose "release."

    e) The next choice will be "bin" or "src." These are the pre-compiled
    and "source code" versions of POI, respectively. Rather than compile
    it myself, I decided to click "bin."

    f) Finally, it lists the files for download. At this time, the latest
    version is 2.5.1. The file that I downloaded is called poi-bin-2.5.1-
    final-20040804.zip.

    g) Inside this ZIP file are the Java classes, documentation, and legal
    information. The documentation is in the "docs" subdirectory and the
    legal information is in the "legal" subdirectory. The JAR files in the
    main directory of the ZIP file are the Java classes themselves.

    h) The .JAR files are needed on the iSeries to create Excel documents.
    To keep things simple, upload them to the /QIBM/userdata/Java400/ext
    directory on the iSeries.

    i) If for some reason you're not allowed to put things in this
    directory, you can put them elsewhere in the IFS. If you do this, you
    must include the JAR files in your Java CLASSPATH. The CLASSPATH is
    not necessary if you put them in the location specified in step H,
    above.

  4. #4
    Registriert seit
    Oct 2004
    Beiträge
    240
    Schritt 1: feststellen ob Java installiert ist

    QSH (in PASE-Umgebung wechseln)
    java -version

    Ausgabe etwa:
    Java-Version "1.4.2"
    weiter bei 3.

    Schritt 2: wenn kein Java installiert ist:
    GO LICPGM
    Auswahl 11 (installieren)
    Produkt 5722JV1 (JavaDeveloperKit) *BASE + Version + Toolbox installieren

    vorher mit F11 prüfen ob es wirklich nicht installiert wird

    Schritt 3:
    Ein IFS-Verzeichnis aussuchen oder anlegen, wo das/die eigenen Javaprogramme und die verwendeten Java-API's (ev. Subordner Lib oder Ext)
    Dateien hinkopieren (OpNavigator, FTP, Win-Freigabe...)

    Aufruf
    z.B.

    Code:
     QSH CMD('java -classpath /etc/PDF400:/etc/PDF400/MeinJava.jar:/etc/PDF400/POI.jar MeinJava')
    wobei das IFS-Verzeichnis hier /etc/PDF400 ist.

    Robert P.

  5. #5
    Registriert seit
    Jun 2005
    Beiträge
    11
    Hmm vielleicht habe ich mich auch etwas unglücklich ausgedrückt. Nochmal etwas ausführlicher:

    Ich habe hier ein ILE RPG/Java Beispielprogramm vor mir liegen. In dem ILE Programm wird nun die Java POI API verwendet um eine Excel Datei als Ausgabedatei aufzubauen, welche dann auf das IFS gespeichert werden soll.

    Java (JDK 1.3 und 1.4) ist bereits auf unserer I5 installiert.

    Wie sehe ich nun, ob die POI Bibliotheken/Klassen schon installiert sind und wenn nein wie kann ich diese auf die I5 installieren/kopieren ... ?


    [EDIT]Oh hier sind ja gerade noch ein paar Antworten reingekommen ... mal schauen, ob cih dieser post erledigt hat ...[/EDIT]

  6. #6
    Registriert seit
    Oct 2004
    Beiträge
    240
    Zitat Zitat von User23
    Wie sehe ich nun, ob die POI Bibliotheken/Klassen schon installiert sind und wenn nein wie kann ich diese auf die I5 installieren/kopieren ... ?
    Wie gesagt, die Datei liegt wenn überhaupt (was ich aber nicht glaube) im IFS. Das kann man mit dem OpNavigator suchen oder auch in der QSH.

    Generische Suchen von der Root weg, sind etwas problematisch, da auch die QSYS dabei ist, was dann sehr langsam wird.

    Externe Zusätze legt IBM (ich hab aber nur V5R2) normalerweise unter:
    /QIBM/ProdData/Java400/ext
    /QBIM/UserData/Java400/ext

    ab. Quick&Dirty könnte man dort die Java-POI dazukopieren. Gehört aber nicht dorthin, ist dann automatisch im Classpath.

    Sauberer ist es ein eignes Verzeichnis dafür zu haben. Dann man die jar allerdings im Classpath unterbringen.

    Da es bei mir schnell gehen muss, habe ich mit Direktaufrufen auf RPG keine Erfahrungen. Falls sich dort der Classpath nicht angeben läßt, muss man das mit xxxENVAR CLASSPATH erledigen (ADD, CHG..).

    Wie schon oft im Forum erwähnt: Die Variante RPG direkt auf Java ist die langsamste und verbraucht am meisten Resourcen (jedes mal eine JVM aufmachen und compilieren).

    Um dass Startverhalten ein wenig zu optimieren, kann man mit CRTJVAPGM eine vorkompilierte Version erstellen lassen (je höher der Level desto schneller).

    Robert P.

  7. #7
    Registriert seit
    Jun 2005
    Beiträge
    11
    Hallo zusammen,
    vielen dank für die hilfreichen tips.
    ich hatte jetzt endlich etwas zeit zum probieren.

    Java 1.4.2 ist auf unserer I5 installiert.

    Die 3 Archive
    - poi.jar
    - poi-contrib.jar
    - poi-scratchpad.jar
    habe ich nach /QIBM/UserData/java400/ext/ kopiert.

    In den Umgebungsvariablen habe ich
    die /QIBM/UserData/java400/ext/poi.jar hinzugefügt ...

    Bei folgendem Testprogramm:

    Code:
          /title Anwenderdatei in Excel erstellen
          *
         H dftactgrp(*no)
          *
         FZR9T00    if   e             Disk
          *
         DCount            S              5  0 Inz(0)
         DC                S              5  0 Inz(0)
         DIFSFile          S           1024    Inz('/QDLS/DURESP/TEST.XLS')
         DSn               S             10I 0 Inz(0)
         DTableName        S           1024    Inz('Anwender')
         DvalueAlf         S           1024
         DvalueNUM         S              8F
         DvalueShort       S              5I 0
         Dcol              S              5I 0
         Dwidth            S              5I 0
          *
          *
          * OBJECT Variables *******************************************************
          *
          * // String.
          *
         Dstring           S               O   CLASS(*JAVA
         D                                     :'java.lang.String')
          *
          * // String with fileName.
          * // Short.
          *
         Dshort            S               O   CLASS(*JAVA
         D                                     :'java.lang.Short')
          * // Column.
          *
         Dcolumn           S               O   CLASS(*JAVA
         D                                     :'java.lang.Short')
          * // ColumnWidth.
          *
         DcolumnWidth      S               O   CLASS(*JAVA
         D                                     :'java.lang.Short')
          *
         Dfilename         S               O   CLASS(*JAVA
         D                                     :'java.lang.String')
          *
          * // FileOutputStream.
          *
         DoutFile          S               O   CLASS(*JAVA
         D                                     :'java.io.FileOutputStream')
          *
          * // Workbook.
          *
         Dwb               S               O   CLASS(*JAVA
         D                                     :'org.apache.poi.hssf.usermodel-
         D                                     .HSSFWorkbook')
          *
          * // Sheet.
          *
         Ds                S               O   CLASS(*JAVA
         D                                     :'org.apache.poi.hssf.usermodel-
         D                                     .HSSFSheet')
          *
          * // Row.
          *
         Drow              S               O   CLASS(*JAVA
         D                                     :'org.apache.poi.hssf.usermodel-
         D                                     .HSSFRow')
          *
          * // Cell.
          *
         Dcell             S               O   CLASS(*JAVA
         D                                     :'org.apache.poi.hssf.usermodel-
         D                                     .HSSFCell')
          *
          * CONSTRUCTOR Methods. ***************************************************
          *
          * // String CONSTRUCTOR
          * // new String(byte b[])
          *
         DcreateString     PR              O   EXTPROC(*JAVA
         D                                     :'java.lang.String'
         D                                     :*CONSTRUCTOR)
         D                                     CLASS(*JAVA
         D                                     :'java.lang.String')
         Dparm                         1024
          *
          * // Short CONSTRUCTOR
          * // new Short(byte b[])
          *
         DcreateShort      PR              O   EXTPROC(*JAVA
         D                                     :'java.lang.Short'
         D                                     :*CONSTRUCTOR)
         D                                     CLASS(*JAVA
         D                                     :'java.lang.Short')
         Dparm                            5I 0 value
          *
          * // FileOutputStream CONSTRUCTOR
          * // new FileOutputStream(String file)
          *
         DcreateFile       PR              O   EXTPROC(*JAVA
         D                                     :'java.io.FileOutputStream'
         D                                     :*CONSTRUCTOR)
         D                                     CLASS(*JAVA
         D                                     :'java.io.FileOutputStream')
         Dparm                             O   CLASS(*JAVA
         D                                     :'java.lang.String')
          *
          * // WorkBook CONSTRUCTOR
          *
         DcreateWB         PR              O   EXTPROC(*JAVA
         D                                     :'org.apache.poi.hssf.usermodel-
         D                                     .HSSFWorkbook'
         D                                     :*CONSTRUCTOR)
         D                                     CLASS(*JAVA
         D                                     :'org.apache.poi.hssf.usermodel-
         D                                     .HSSFWorkbook')
          *
          * // write(java.io.OutputStream)
          *
         DwriteWB          PR                  EXTPROC(*JAVA
         D                                     :'org.apache.poi.hssf.usermodel-
         D                                     .HSSFWorkbook'
         D                                     :'write')
         Dparm                             O   CLASS(*JAVA
         D                                     :'java.io.OutputStream')
          *
          * METHODS ****************************************************************
          *
          * // java.lang.trim()
          *
         DtrimString       PR              O   EXTPROC(*JAVA
         D                                     :'java.lang.String'
         D                                     :'trim')
         D                                     CLASS(*JAVA
         D                                     :'java.lang.String')
          *
          * // shortValue()
          *
         DshortValue       PR              O   EXTPROC(*JAVA
         D                                     :'java.lang.Short'
         D                                     :'shortValue')
         D                                     CLASS(*JAVA
         D                                     :'java.lang.Short')
         Dparm                             O   CLASS(*JAVA
         D                                     :'java.lang.Short')
          *
          * // WorkBook.createSheet()
          *
         DcreateSheet      PR              O   EXTPROC(*JAVA
         D                                     :'org.apache.poi.hssf.usermodel-
         D                                     .HSSFWorkbook'
         D                                     :'createSheet')
         D                                     CLASS(*JAVA
         D                                     :'org.apache.poi.hssf.usermodel-
         D                                     .HSSFSheet')
         Dparm                             O   CLASS(*JAVA
         D                                     :'java.lang.String')
          *
          * // Sheet.createRow()
          *
         DcreateRow        PR              O   EXTPROC(*JAVA
         D                                     :'org.apache.poi.hssf.usermodel-
         D                                     .HSSFSheet'
         D                                     :'createRow')
         D                                     CLASS(*JAVA
         D                                     :'org.apache.poi.hssf.usermodel-
          *                                    .HSSFSheet')
         D                                     .HSSFRow')
         Dparm                            5I 0 value
          *
          * // Sheet.setColumnWidth()
          *
         DsetColumnWidth   PR                  EXTPROC(*JAVA
         D                                     :'org.apache.poi.hssf.usermodel-
         D                                     .HSSFSheet'
         D                                     :'setColumnWidth')
         Dparm1                           5I 0 value
         Dparm2                           5I 0 value
          *
          * // Row.setHeight()
          *
         DsetHeight        PR                  EXTPROC(*JAVA
         D                                     :'org.apache.poi.hssf.usermodel-
         D                                     .HSSFRow'
         D                                     :'setHeight')
         Dparm                            5I 0 value
          *
          * // Row.createCell()
          *
         DcreateCell       PR              O   EXTPROC(*JAVA
         D                                     :'org.apache.poi.hssf.usermodel-
         D                                     .HSSFRow'
         D                                     :'createCell')
         D                                     CLASS(*JAVA
         D                                     :'org.apache.poi.hssf.usermodel-
         D                                     .HSSFCell')
         Dparm1                           5I 0 value
          *
          * // Cell.setCellType(int)
          *
         DsetCellType      PR                  EXTPROC(*JAVA
         D                                     :'org.apache.poi.hssf.usermodel-
         D                                     .HSSFCell'
         D                                     :'setCellType')
         Dparm1                          10I 0 value
          *
          * // Cell.setCellValue(String)
          *
         DsetCellValStr    PR                  EXTPROC(*JAVA
         D                                     :'org.apache.poi.hssf.usermodel-
         D                                     .HSSFCell'
         D                                     :'setCellValue')
         Dparm                             O   CLASS(*JAVA
         D                                     :'java.lang.String')
          *
          * // Cell.setCellValue(double)
          *
         DsetCellValD      PR                  EXTPROC(*JAVA
         D                                     :'org.apache.poi.hssf.usermodel-
         D                                     .HSSFCell'
         D                                     :'setCellValue')
         Dparm                            8F   value
          *
          /Free
           //
            Count = 0;
           //
            // Create a Workbook.
           //
            wb = createWB();
           //
            // setSheetName.
           //
            valueALF = Tablename;
            string = createString(valueALF);
            string = trimString(String);
           //
            // Create a Worksheet.
           //
            s = createSheet(wb:string);
           //
            // Set Column Width, 1/256 of a character width.
           //
            col = 0;
            width = 3840;
            setColumnWidth(s:col:width);
            col = 1;
            width = 1024;
            setColumnWidth(s:col:width);
            col = 2;
            width = 8192;
            setColumnWidth(s:col:width);
            col = 3;
            width = 5120;
            setColumnWidth(s:col:width);
            col = 4;
            width = 15360;
            setColumnWidth(s:col:width);
           //
            // Run through book records.
           //
            Read ZR9T00;
            Dow not %eof(ZR9T00);
               Exsr DBRec2Excel;
               Read ZR9T00;
            Enddo;
           //
            // Create String filename.
           //
            IFSFile = %trim(IFSFile);
            filename = createString(IFSFile);
           //
            // Trim filename (50A).
           //
            filename = trimString(filename);
           //
            // Create FileOutputStream.
           //
            outFile = createFile(filename);
           //
            // Write Workbook to output file.
           //
            writeWB(wb:outFile);
           //
            // End of program.
           //
            *inlr = *on;
           //
          /End-Free
          *
          *
          *
          **************************************************************************
          *
          /Free
           //
            Begsr DBRec2Excel;
           //
           // Create a row.
           //
            row = createRow(s:Count);
           //
            c = 0;
           //
           // FIN.
           //
            cell = createCell(row:c);
            setCellType(cell:1);
            valueALF = Z9TFIN;
            string = createString(valueALF);
            string = trimString(String);
            setCellValStr(cell:string);
            c = c+1;
           //
           // Z9T004.
           //
            cell = createCell(row:c);
            setCellType(cell:1);
            valueALF = Z9T004;
            string = createString(valueALF);
            string = trimString(String);
            setCellValStr(cell:string);
            c = c+1;
           //
           // Z9T004.
           //
            cell = createCell(row:c);
            setCellType(cell:1);
            valueALF = Z9T004;
            string = createString(valueALF);
            string = trimString(String);
            setCellValStr(cell:string);
            c = c+1;
           //
            // Z9T004.
           //
            cell = createCell(row:c);
            setCellType(cell:1);
            valueALF = Z9T004;
            string = createString(valueALF);
            string = trimString(String);
            setCellValStr(cell:string);
            c = c+1;
           //
            // Z9T004.
           //
            cell = createCell(row:c);
            setCellType(cell:1);
            valueALF = Z9T004;
            string = createString(valueALF);
            string = trimString(String);
            setCellValStr(cell:string);
            c = c+1;
           //
            // Count record number.
           //
            Count  = Count +1;
           //
            Endsr;
           //
          /End-Free
    Das Umwandeln im PDM lief fehlerfrei.

    Beim Aufruf bekomme ich aber folgende Fehlermeldung:

    Code:
    Nachricht . . . :   Java-Ausnahme beim Aufrufen der Java-Methode empfangen (C  
      G D F).                                                                      
    
    Ursache  . . . . : RPG-Prozedur YGXLS in Programm xxxxxxxx/YGXLS hat           
      Java-Ausnahme "java.lang.NoSuchMethodError: createRow" empfangen, als die    
      Methode "createRow" mit Kennung                                              
      "(S)Lorg.apache.poi.hssf.usermodel.HSSFSheet;" in Klasse                     
      "org.apache.poi.hssf.usermodel.HSSFSheet" aufgerufen wurde.                  
    
    Fehlerbeseitigung: Mit Hilfe des Benutzers, der für die Programmpflege         
      verantwortlich ist, die Fehlerursache bestimmen.                             
    Auswahlmöglichkeiten  . . . . . . . . . . . . . . . . . . . . . . . . . :      
      D -- Einen RPG-formatierten Speicherauszug erstellen.                        
      S -- Einen Systemspeicherauszug erstellen.                                   
      G -- Die Verarbeitung bei *GETIN fortsetzen.                                 
      C -- Abbruch.                                                                
      F -- Einen vollständig formatierten Speicherauszug erstellen.                
    
    Technische Beschreibung . . . . . . . : Gibt die Ausnahme an, dass die         
      Java-Klasse nicht gefunden wurde, sicherstellen, dass sich die Klasse für    
      die Methode in dem Klassenpfad befindet. Gibt die Ausnahme an, dass die      
      Java-Methode nicht gefunden wurde, den Methodennamen und die Kennung         
      überprüfen. Ist die Kennung nicht korrekt, den RPG-Prototyp für die Methode  
      ändern oder die Java-Methode ändern, damit die Rückgabeart und die           
      Parameterarten übereinstimmen. Die Kennungen für alle Methoden in der Klasse 
      XYZ können mit dem Befehl QSH CMD('javap -s XYZ') bestimmt werden.
    Kann mir hier jemand weiterhelfen?
    Habe ich die POI API nicht richtig eingebunden, oder stimmt hier was mit der Java Syntax nicht?

    Mich wundert vorallem diese Zeile hier in der Fehlermeldung:

    (S)Lorg.apache.poi.hssf.usermodel.HSSFSheet;

    Wird hier irgendwas nicht richtig umgesetzt wegen dem (S)L ?!

    Danke im voraus

  8. #8
    Registriert seit
    Oct 2004
    Beiträge
    240
    Ich denke das die Kennung in dem Fall nichts mit dem Problem zu tun hat.

    Wegen der Möglichkeit des "Überladens", ist die Fehlermeldung "java.lang.NoSuchMethodError: createRow" mit Vorsicht zu genießen.

    Das heißt jetzt nicht unbedingt, dass die Methode createRow nicht gefunden wird, sondern das createRow für die verwendeten Parameter nicht gefunden wird.

    Theoretisch könnte es
    createRow()
    createRow(int)
    createRow(String) ....
    geben.
    Je nach Parameter würde die entsprechende Methode ausgewählt.


    Laut Poi-API gibt es nur createRow(int).

    Ich hab zwar nur wenig Erfahrung mit RPG und gar keine mit der RPG-Java-JNI, ich denke, dass du Count mit 10I0 definieren musst.

    5I 0 wird für Short verwendet
    10I 0 für int
    createRow benötigt int!!

    Leider ist die Java-Fehlermeldung "beschnitten". Normalerweise lautet die Fehlermeldung etwa so:

    java.lang.NoSuchMethodError: ...createRow(java.lang.Short)

    Damit schaut man dann in die POI-API und sieht dann ob das Short passt.

    Grüße
    Robert P. (der einen reinen Javadienst vorziehen würde...)

  9. #9
    Registriert seit
    Jun 2005
    Beiträge
    11
    @RobertPic:
    Danke. Das mit dem Überladen war der richtige Ansatz. Ich habe die Variable und den Parameter auf 10I geändert. Er bleibt jetzt zumindest nicht mehr an dieser Stelle stehen ...

    Jetzt kommt allerdings die Meldung:
    Code:
     Nachricht . . . :   Java-Ausnahme beim Aufrufen der Java-Methode empfangen (C 
       G D F).                                                                     
     Ursache  . . . . : RPG-Prozedur YGXLS in Programm xxxxxx/YGXLS hat          
       Java-Ausnahme "java.io.FileNotFoundException: Funktion nicht zulÀssig.     
       /QDLS/DURESP/TEST.XL" empfangen, als die Methode "<init>" mit Kennung       
       "(Ljava.lang.String;)V" in Klasse "java.io.FileOutputStream" aufgerufen     
       wurde.                                                                      
     Fehlerbeseitigung: Mit Hilfe des Benutzers, der für die Programmpflege        
       verantwortlich ist, die Fehlerursache bestimmen.                            
     Auswahlmöglichkeiten  . . . . . . . . . . . . . . . . . . . . . . . . . :     
       D -- Einen RPG-formatierten Speicherauszug erstellen.                       
       S -- Einen Systemspeicherauszug erstellen.                                  
       G -- Die Verarbeitung bei *GETIN fortsetzen.                                 
       C -- Abbruch.                                                                
       F -- Einen vollständig formatierten Speicherauszug erstellen.                
     Technische Beschreibung . . . . . . . : Gibt die Ausnahme an, dass die         
       Java-Klasse nicht gefunden wurde, sicherstellen, dass sich die Klasse für    
       die Methode in dem Klassenpfad befindet. Gibt die Ausnahme an, dass die      
       Java-Methode nicht gefunden wurde, den Methodennamen und die Kennung         
       überprüfen. Ist die Kennung nicht korrekt, den RPG-Prototyp für die Methode  
       ändern oder die Java-Methode ändern, damit die Rückgabeart und die           
       Parameterarten übereinstimmen. Die Kennungen für alle Methoden in der Klasse 
       XYZ können mit dem Befehl QSH CMD('javap -s XYZ') bestimmt werden.
    Der erste Gedanke war natürlich, dass das Feld für den Dateinamen zu kurz ist, weil er TEST.XL statt TEST.XLS schreibt. Aber auch ein kürzerer Dateiname bringt eine ähnlich Meldung. Weiss hier nochmal jmd. Rat?

    Danke im Voraus.

  10. #10
    Registriert seit
    Oct 2004
    Beiträge
    240
    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 ....."

  11. #11
    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 ...

  12. #12
    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 ...

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
  •