$Id$ Datenträgeraustausch ==================== Beim Datenträgeraustausch (DTA) werden Zahlungsverkehrsdaten - also Überweisungen und Lastschriften - nicht mehr auf Papier, sondern beleglos auf Disketten an das jeweilige Geldinstitut gegeben. Die Diskette, die zur Datenträgeraustauschdiskette benutzt wird, muß formatiert und leer sein. Beschriften Sie die Diskette exakt! Die *einzige* Datei auf der Diskette muß DTAUS0.TXT heißen. Zusätzlich muß ein Begleitzettel begelegt werden. Auf einer Diskette mit 360 KByte werden etwa max. 300 Datensätze gespeichert. Pro Zahlung werden zwischen 512 Bytes für die Datei gespeichert. Hinzukommen min. 256 Bytes pro Datensatz C. Dies bedeutet, daß ungefähr 1000 Zahlungen auf eine 360 KByte Diskette übergeben werden können. Die Datei besteht aus drei Teilen: Datensatz A - Header Datensatz C - Body Datensatz E - Footer Der Body kann dabei mehrfach auftreten - einmal pro Zahlungsverkehr. Alle Informationen liegen im ASCII-Format vor, keine wilden Binärformate. Aufbau Datensatz A ------------------ 1 0 4 Zeichen Länge des Datensatzes, immer 128 Bytes, also immer "0128" 2 4 1 Zeichen Datensatz-Typ, immer 'A' 3 5 2 Zeichen Art der Transaktionen "LB" für Lastschriften Bankseitig "LK" für Lastschriften Kundenseitig "GB" für Gutschriften Bankseitig "GK" für Gutschriften Kundenseitig 4 7 8 Zeichen Bankleitzahl des Auftraggebers 5 15 8 Zeichen CST, "00000000", nur belegt, wenn Diskettenabsender Kreditinstitut 6 23 27 Zeichen Name des Auftraggebers 7 50 6 Zeichen aktuelles Datum im Format DDMMJJ 8 56 4 Zeichen CST, " " (Blanks) 9 60 10 Zeichen Kontonummer des Auftraggebers 10 70 10 Zeichen Optionale Referenznummer 11a 80 15 Zeichen Reserviert, 15 Blanks 11b 95 8 Zeichen Optionales Ausführungsdatum im Format DDMMJJJJ. Nicht jünger als Erstellungsdatum (A7), jedoch höchstens 15 Kalendertage später. Sonst Blanks. 11c 103 24 Zeichen Reserviert, 24 Blanks 12 127 1 Zeichen Währungskennzeichen " " = DM "1" = Euro -- 128 Zeichen Aufbau Datensatz C ------------------ 1 0 4 Zeichen Länge des Datensatzes, 187 + x * 29 (x..Anzahl Erweiterungsteile) 2 4 1 Zeichen Datensatz-Typ, immer 'C' 3 5 8 Zeichen Bankleitzahl des Auftraggebers (optional) 4 13 8 Zeichen Bankleitzahl des Kunden 5 21 10 Zeichen Kontonummer des Kunden 6 31 13 Zeichen 1. Zeichen "0" 2. - 12. Zeichen interne Kundennummer oder Nullen 13. Zeichen "0" Die interne Nummer wird vom erstbeauftragten Institut zum endbegünstigten Institut weitergeleitet. Die Weitergabe der internenen Nummer an den Überweisungsempfänger ist der Zahlstelle freigestellt. 7a 44 2 Zeichen Art der Transaktion 7b 46 3 Zeichen ------- "---------- "04000" Lastschrift des Abbuchungsauftragsverfahren "05000" Lastschrift des Einzugsermächtigungsverfahren "05005" Lastschrift aus Verfügung im elec. Cash-System "05006" Wie 05005 mit ausländischen Karten "05015" Lastschrift aus Verfügung im elec. Cash-System - POZ "51000" Überweisungs-Gutschrift "53000" Überweisung Lohn/Gehalt/Rente "54XXJ" Vermögenswirksame Leistung (VL) mit Sparzulage XX = 00 oder %-Satz der Sparzulage J = Endziffer des Jahres für diese Leistung "56000" Überweisung öffentlicher Kassen 8 49 1 Zeichen Reserviert, " " (Blank) 9 50 11 Zeichen Betrag 10 61 8 Zeichen Bankleitzahl des Auftraggebers 11 69 10 Zeichen Kontonummer des Auftraggebers 12 79 11 Zeichen Betrag in Euro einschließlich Nachkommastellen, nur belegt, wenn Euro als Währung angegeben wurde (A12, C17a), sonst Nullen 13 90 3 Zeichen Reserviert, 3 Blanks 14a 93 27 Zeichen Name des Kunden 14b 120 8 Zeichen Reserviert, 8 Blanks -- 128 Zeichen 15 128 27 Zeichen Name des Auftraggebers 16 155 27 Zeichen Verwendungszweck 17a 182 1 Zeichen Währungskennzeichen " " = DM "1" = Euro 17b 183 2 Zeichen Reserviert, 2 Blanks 18 185 2 Zeichen Anzahl der Erweiterungsdatensätze, "00" bis "15" 19 187 2 Zeichen Typ (1. Erweiterungsdatensatz) "01" Name des Kunden "02" Verwendungszweck "03" Name des Auftraggebers 20 189 27 Zeichen Beschreibung gemäß Typ 21 216 2 Zeichen wie C19, oder Blanks, (2. Erweiterungsdatensatz) 22 218 27 Zeichen wie C20, oder Blanks 23 245 11 Zeichen 11 Blanks -- Ende des ersten Erweiterungsdatensatzes -- 256 Zeichen So können weitere Datensaetze angehängt werden. Sie müssen im Gesamten jedoch 128 Zeichen lang sein. Also vier 29-Zeichen Blöcke und anschließend mit 12 Blanks auffüllen. Aufbau Datensatz E ------------------ 1 0 4 Zeichen Länge des Datensatzes, immer 128 Bytes, also immer "0128" 2 4 1 Zeichen Datensatz-Typ, immer 'E' 3 5 5 Zeichen Reserviert, 5 Blanks 4 10 7 Zeichen Anzahl der Datensätze vom Typ C 5 17 13 Zeichen Kontrollsumme Beträge 6 30 17 Zeichen Kontrollsumme Kontonummern 7 47 17 Zeichen Kontrollsumme Bankleitzahlen 8 64 13 Zeichen Kontrollsumme Euro, nur belegt, wenn Euro als Währung angegeben wurde (A12, C17a) 9 77 51 Zeichen 51 Blanks Begleitzettel ------------- Jede dem Geldinstitut gelieferte Diskette muß einen Begleitzettel mit folgenden Mindestangaben enthalten. Bei mehreren Disketten ist für jede Diskette ein Begleitzettel auszuschreiben. Begleitzettel Belegloser Datenträgeraustausch Sammel-Überweisung-/-einziehungsauftrag Vol-Nummer der Diskette Erstellungsdatum Anzahl der Datensätze C (Stückzahl) Summe DM der Datensätze C Kontrollsumme der Kontonummern der Überweisungsempfänger/Zahlungspflichtigen Kontrollsumme der Bankleitzahlen der endbegünstigten Kreditinstitute/Zahlungsstellen Bankleitzahl/Kontonummer des Absenders Name, Bankleitzahl/Kontonummer des Empfängers Ort, Datum Firma,Unterschrift Sie haben die Pflicht, die Disketten zusätzlich durch Klebezettel mit folgenden Angaben zu kennzeichnen. Name und Bankleitzahll/Kontonummer des Diskettenabsenders. Diskettennummer (VOL-Nummer). Dateiname: DTAUS0.TXT 5.25 -und 3.5 Diskette. API from dtaus.[ch] ------------------- void dtaus2control (char *cdtaus, char *ccontrol) Diese Routine liest eine Datentraegerdatei aus und wandelt sie in das eigene Kontrollformat zur weiteren Bearbeitung oder Kontrolle. Wird als dtaus NULL angegeben, so wird DTAUS0.TXT und dtaus0.txt probiert. Ist das zweite Argument NULL, so wird auf stdout geschrieben. int control2dtaus (char *ccontrol, char *cdtaus, char *cbeleg, char *ccheck) Wandelt eine Datei im eigenen Kontrollformat in das genormte Bankformat um. Die Vorgaben für die Kontrolldatei sind dtaus0.ctl und DTAUS0.CTL, fuer die Ausgabe dtaus0.txt. Es werden zusätzlich zwei Dateien erstellt. Die Belegdatei muß unterschrieben mit der Diskette zur Bank gebracht werden. In der letzten Datei bzw. auf stdout wird der Inhalt des Datentraegers für die Akten in einer Tabelle ausgedruckt. Weitere API-Funktionen, die es ermoeglichen, direkt die dtaus0.txt Datei zu schreiben werden in Zukunft folgen.