'Description: X: ASCII Tabellenverbund
'usedby: always

dim ziel as string
dim erg as long
dim i as long
dim ss as string
dim anzahl as long
dim abbruch as long
dim feldart as string
dim feldname as string
dim laenge as long

dim idateiname as string
dim is as string
dim izeile as long
dim itrennzeichen as string
dim iansi as long
dim ipos as long

  @export = 1
  @import = 0
  @ansi = 1
end

@ok.onpress:
  if @import = 1 then
    if (@ascii_datei = "") then
      erg = messagebox("Quelldatei wurde nicht angegeben!", 2)
      return
    end if
    if fileexist(@ascii_datei) = 0 then
      erg = messagebox("Quelldatei wurde nicht gefunden!", 2)
      return
    end if  
    lese_import
  end if
  if @import = 0 then
    if (@tabelle = "") then
      erg = messagebox("Quelltabelle wurde nicht angegeben!", 2)
      return
    end if
    if (ziel = "") then
      ziel = "\VERB\" + @tabelle
    end if  
    if instr(1, ziel, "\") = 0 then 
      ziel = "\" + ziel
    end if
    schreibe_export
  end if
return

sub lese_import
  iianfang( @ascii_datei, @trenner, @ansi)
  opentable( @tabelle)
  anzahl = iireccount
  do while iidatensatz <> "EOF"
    abbruch = screeninfo( "Datensatz: " + str$(izeile) + " wird importiert!", anzahl, izeile, 0)
    i = 1
    appendblank( @tabelle)
    do while field( @tabelle, i) <> ""
      ss = upper$(field( @tabelle, i))
      feldart = mid$( ss, instr( 1, ss, "#") + 1, 255)
      feldart = mid$(feldart, 1, 1)
      if (feldart = "A") or (feldart = "I") or (feldart = "S") or (feldart = "N") or (feldart = "M") then
        feldname = mid$( ss, 1, instr( 1, ss, "#") - 1)
        laenge = val(mid$( ss, instr( 1, ss, "#") + 2, 255))
        if feldart = "A" then putfield( @tabelle, feldname, iifeld_s( laenge))
        if feldart = "N" then putfield( @tabelle, feldname, iifeld_d( 23))
        if feldart = "I" then putfield( @tabelle, feldname, iifeld_i( 10))
        if feldart = "S" then putfield( @tabelle, feldname, iifeld_i( 10))
        if feldart = "M" then putfield( @tabelle, feldname, iifeld_s( 1024))
      end if
      i = i + 1
    loop
    store( @tabelle)
  loop
  abbruch = screeninfo("", 0, 0, 0)
end sub

sub schreibe_export
  ianfang( @ascii_datei, 1, @trenner, @ansi)
  opentable( @tabelle)
  anzahl = reccount( @tabelle)
  do while eof( @tabelle) = 0
    abbruch = screeninfo( "Datensatz: " + str$(izeile) + " wird exportiert!", anzahl, izeile, 0)
    i = 1
    do while field( @tabelle, i) <> ""
      ss = upper$(field( @tabelle, i))
      feldart = mid$( ss, instr( 1, ss, "#") + 1, 255)
      feldart = mid$(feldart, 1, 1)
      if (feldart = "A") or (feldart = "I") or (feldart = "S") or (feldart = "N") or (feldart = "M") then
        feldname = mid$( ss, 1, instr( 1, ss, "#") - 1)
        laenge = val(mid$( ss, instr( 1, ss, "#") + 2, 255))
        if feldart = "A" then ifeld_s( getfield( @tabelle, feldname), laenge) 
        if feldart = "N" then ifeld_d( getfield( @tabelle, feldname), 23, 6)
        if feldart = "I" then ifeld_i( getfield( @tabelle, feldname), 10)
        if feldart = "S" then ifeld_i( getfield( @tabelle, feldname), 10)
        if feldart = "M" then ifeld_s( getfield( @tabelle, feldname), 1024)
      end if
      i = i + 1
    loop
    idatensatz
    skip( @tabelle, 1)
  loop
  abbruch = screeninfo("", 0, 0, 0)
  iende
end sub

'$INCLUDE \BAS\XADR_ART
'$INCLUDE \BAS\XIIMPEXP
