[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Mar 2002
    Beiträge
    5.392
    ... was verbirgt sich bei Dir hinter readline()???
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.809
    Du verwendest aber die Funktion "fopen"!
    "open()" übergibt einen sog. HANDLER, "fopen()" einen sog. POINTER.
    Ein HANDLER ist >= 0 oder bei Fehler -1.
    Ein POINTER ist NULL (für RPG eben 0) oder <> NULL.

    readline() könnte dann "fgets()" sein.
    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
    Aug 2014
    Beiträge
    181
    Hallo,
    was hälst Du von der Möglichkeit mit den Directory API's die Files im Verzeichnis zu lesen und dann die jeweilige Datei. Im Feld streamfile ist dann der Dateiname.
    PHP-Code:
             ctl-opt main(maindftactgrp(*nooption(*nounref);
          
    //------------------------------------------------------------------//
          //                                                                  //
          // Directory lesen                                                  //
          //                                                                  //
          //-----------------                                                 //
          // R.Ross 06.2017 *                                                 //
          //------------------------------------------------------------------//
          // Open-Directory                                                   //
          //------------------------------------------------------------------//

             
    dcl-pr opendir      pointer extproc(*dclcase);
                     
    dirname     pointer value options(*string);
             
    end-pr;

          
    //------------------------------------------------------------------//
          // Read-Directory                                                   //
          //------------------------------------------------------------------//

             
    dcl-pr readdir      pointer extproc(*dclcase);
                     
    dir_p       pointer value options(*string);
             
    end-pr;

          
    //------------------------------------------------------------------//
          // Close-Directory                                                  //
          //------------------------------------------------------------------//

             
    dcl-pr closedir     int(10extproc(*dclcase);
                     
    dirname     pointer value options(*string);
             
    end-pr;

          
    //------------------------------------------------------------------//
          // Array Directory Data                                             //
          //------------------------------------------------------------------//

             
    dcl-s   dirent_p    pointer;                 // DirectoryEntryPtr

             
    dcl-ds  dsdirent    qualified based(dirent_p);
                      *
    n         char(16);
                      *
    n         uns(10);
                      
    fileno     uns(10);
                      
    reclen     uns(10);
                      *
    n         int(10);
                      *
    n         char(08);
                      
    nlsinfo    char(12);
                      
    nlsccsid   int(10)  overlay(nlsinfo:01);
                      
    nlsentry   char(02overlay(nlsinfo:05);
                      
    nlslang    char(03overlay(nlsinfo:07);
                      
    nlsreser   char(03overlay(nlsinfo:10);
                      
    namelen    uns(10);
                      
    name       char(640);
             
    end-ds;

          
    //------------------------------------------------------------------//
          // Main                                                             //
          //------------------------------------------------------------------//
             
    dcl-proc main;

             
    dcl-s   directory   varchar(256);            // Directory
             
    dcl-s   file        varchar(256);            // File
             
    dcl-s   streamfile  varchar(256);            // StreamFile
             
    dcl-s   dir_p       pointer;                 // Directory-Pointer

               
    directory '/home/import/xml';

               
    dir_p opendir(directory);                // Open Directory

               
    if dir_p = *null;                          // Directory not exist
                  
    return;
               endif;

               
    dou dirent_p = *null;                      // Loop ReadDir
                 
    dirent_p readdir(dir_p);               // ReadDir
                 
    if dirent_p <> *null;                    // DirEntry exist
                    
    file = %str(%addr(dsdirent.name));    // FileName
                    
    if file <> '.' and file <> '..';
                       
    streamfile = %trim(directory) + '/' + %trim(file);
                    endif;
                 endif;
               
    enddo;

               
    closedir(directory);                       // Close Directory

             
    end-proc;
          
    //------------------------------------------------------------------// 
    Herzliche Grüße
    Rainer Ross

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.809
    Er hat ja nicht das Problem, das Verzeichnis zu lesen, sondern die gefundenen Dateien in der inneren Schleife zu lesen, da der "fopen" ggf. auch einen negativen Datei-POINTER zurückgeben kann.
    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
    Mar 2002
    Beiträge
    5.392
    Zitat Zitat von Fuerchau Beitrag anzeigen
    readline() könnte dann "fgets()" sein.
    readline ist kein IBM API, sondern irgendwo abgetippselt und falsch angewendet. Wahrscheinlich liest das Ding in einen Buffer, scanned nach CR oder LF oder beides. Wenn der Buffer groß genug ist, passiert genau das beschriebene.

    D*B
    der immer misstrauisch wird, wenn Code in Homöopathischen Dosen geoutet wird und immer wieder feststellt, dass das Problem meist vor dem Bildschirm sitzt.
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  6. #6
    Registriert seit
    Aug 2003
    Beiträge
    163
    Wahrscheinlich liest das Ding in einen Buffer, scanned nach CR oder LF oder beides.
    Genau so ist es. Dann werde ich wohl das Lesen der Dateien ändern müssen.

    Vielen Dank für Eure Hilfe

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.809
    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
    Registriert seit
    Aug 2014
    Beiträge
    181
    Anbei zwei Lösungen

    1) Lesen des Verzeichnisses mit den Directory API's, dann lesen der Datei mit den File-API's
    2) Lesen des Verzeichnisses mit den Directory API's, dann lesen der Datei mit get_clob_from_file
    Angehängte Dateien Angehängte Dateien

Similar Threads

  1. SQL über zwei Partitions
    By Rainer Ross in forum NEWSboard Programmierung
    Antworten: 9
    Letzter Beitrag: 27-02-17, 18:16
  2. Job Informationen lesen
    By svit in forum IBM i Hauptforum
    Antworten: 14
    Letzter Beitrag: 28-08-15, 20:25
  3. RSTOBJ von zwei Bändern
    By MB in forum IBM i Hauptforum
    Antworten: 6
    Letzter Beitrag: 16-05-03, 13:26
  4. Umfrage: Splittung des Hauptforums in zwei Unter und ein Hauptforum
    By Burgy Zapp in forum Intern - Hilfe - Feedback - Tests-Forum
    Antworten: 20
    Letzter Beitrag: 12-07-02, 11:52
  5. Datenbank auf zwei Systemen
    By KB in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 16-05-01, 11:30

Berechtigungen

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