... was verbirgt sich bei Dir hinter readline()???
Du verwendest aber die Funktion "f open"!
"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.
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 ( main ) dftactgrp (* no ) option (* 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 ( 10 ) extproc (* 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 ( 02 ) overlay ( nlsinfo : 05 ); nlslang char ( 03 ) overlay ( nlsinfo : 07 ); nlsreser char ( 03 ) overlay ( 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
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.
Zitat von
Fuerchau
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.
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
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
Similar Threads
By Rainer Ross in forum NEWSboard Programmierung
Antworten: 9
Letzter Beitrag: 27-02-17, 18:16
By svit in forum IBM i Hauptforum
Antworten: 14
Letzter Beitrag: 28-08-15, 20:25
By MB in forum IBM i Hauptforum
Antworten: 6
Letzter Beitrag: 16-05-03, 13:26
By Burgy Zapp in forum Intern - Hilfe - Feedback - Tests-Forum
Antworten: 20
Letzter Beitrag: 12-07-02, 11:52
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
Foren-Regeln
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
Kategorien online Artikel
Big Data, Analytics, BI, MIS
Cloud, Social Media, Devices
DMS, Archivierung, Druck
ERP + Add-ons, Business Software
Hochverfügbarkeit
Human Resources, Personal
IBM Announcements
IT-Karikaturen
Leitartikel
Load`n`go
Messen, Veranstaltungen
NEWSolutions Dossiers
Programmierung
Security
Software Development + Change Mgmt.
Solutions & Provider
Speicher – Storage
Strategische Berichte
Systemmanagement
Tools, Hot-Tips
Auf dem Laufenden bleiben
Bookmarks