[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Oct 2003
    Beiträge
    12
    Zitat Zitat von BenderD
    Hi,

    poste mal deine Parameter vom open, irgendwas machst du da verkehrt

    Dieter Bender

    p readFile b export

    d readFile pi 256 dim(9999)
    d pFileName 100a

    * //Work Variables
    d BytesRead s 10i 0 inz(1)
    d File s 100
    d FileOpen s 10i 0
    d DataRead s 32767a
    d Data s 32767a
    d Eor s 2a inz(X'0D25')
    d PosStart s 5 0 inz(1)
    d PosEnd s 5 0 inz(1)
    d PosDiff s 5 0

    d ayReadResult s 256 dim(9999)
    d ayReadI s 5 0 inz(0)

    d ofl s 10i 0
    d mode s 10u 0
    d codep s 10u 0

    * //Open File! If error, FileOpen return '-1'
    c eval File = %trim(pFileName) + x'00'
    c eval ofl=O_RDONLY+O_TEXTDATA
    c eval mode = S_IRUSR
    c eval codep = 273
    c eval FileOpen = open(%add
    (Filepenflags
    c :mode:codepage)
    c eval FileOpen = open(%addr(File)fl)

    * //Bei Fehler leeres Array zurückliefern
    c if FileOpen < 0
    c eval ayReadI = (ayReadI + 1)
    c eval ayReadResult(ayReadI) = *blank
    c return ayReadResult(ayReadI)
    c endif

    c dow BytesRead > 0

    * //Read file and save in buffer DataRead
    c eval BytesRead = read(FileOpen
    c : %addr(DataRead)
    c : %size(DataRead))
    c if BytesRead > 0

    * //Read from first blank till second blank and save the diff in Array
    c dou PosEnd = *zero
    c if %scan(EorataRead:PosStart) = PosStart
    c eval PosStart = (PosStart + 1)
    c endif
    c eval PosEnd = %scan(EorataRead:PosStart)
    c if PosEnd <= 0
    c leave
    c endif
    c eval ayReadI = (ayReadI + 1)
    c eval PosDiff = (PosEnd - PosStart)
    c eval ayReadResult(ayReadI) = %subst

    (DataRead
    c : PosStart: PosDiff)
    c eval PosStart = PosEnd
    c enddo
    c endif

    c enddo

    * //Close the File
    c callp close(FileOpen)

    c return ayReadResult

    preadFile e

    Kannst du den Fehler erkennen??

  2. #2
    Registriert seit
    Mar 2002
    Beiträge
    5.379
    Hallo,


    Zitat Zitat von PGMR
    * //Open File! If error, FileOpen return '-1'
    c eval File = %trim(pFileName) + x'00'
    c eval ofl=O_RDONLY+O_TEXTDATA
    c eval mode = S_IRUSR
    c eval codep = 273
    c eval FileOpen = open(%add
    (Filepenflags
    c :mode:codepage)
    c eval FileOpen = open(%addr(File)fl)

    Kannst du den Fehler erkennen??
    der erste open sollte klappen, der zweite geht wohl in den Wind, weil das File schon open ist (denke ich mir), wenn die CCSID der Datei korrekt ist, dann wird ohne Angabe geöffnet, was bei Textdata automatisch konvertiert.
    Mit anderen Worten: prüfe ob der Inhalt der Konstanten O_RDONLY und O_TXTDATA richtig ist und lass den ersten open weg.

    mfg

    Dieter Bender
    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. RPG aus Java aufrufen
    By Vicky-B in forum NEWSboard Java
    Antworten: 17
    Letzter Beitrag: 06-05-08, 12:05
  2. Problem mit Java-Methoden Aufruf aus ILE RPG?
    By Stoeberl in forum NEWSboard Programmierung
    Antworten: 8
    Letzter Beitrag: 10-01-07, 11:58
  3. ILE RPG aus Stored Procdure aufrufen
    By pfpk0997 in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 15-11-06, 10:40
  4. Java Programm aus ILE RPG aufrufen
    By PGMR in forum NEWSboard Programmierung
    Antworten: 0
    Letzter Beitrag: 02-02-05, 14:10
  5. Umwandeln ILE RPG Programm
    By alex in forum IBM i Hauptforum
    Antworten: 7
    Letzter Beitrag: 06-08-02, 08:13

Berechtigungen

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