Use strchr(3) instead of index(3) since it is POSIX compliant and not
[infodrom/dtaus] / dtaus.txt
1   $Id$
2
3   Datenträgeraustausch
4   ====================
5
6   Beim Datenträgeraustausch (DTA) werden Zahlungsverkehrsdaten - also
7   Überweisungen und Lastschriften - nicht mehr auf Papier, sondern
8   beleglos auf Disketten an das jeweilige Geldinstitut gegeben.  
9
10   Die Diskette, die zur Datenträgeraustauschdiskette benutzt wird, muß
11   formatiert und leer sein. Beschriften Sie die Diskette exakt!  Die
12   *einzige* Datei auf der Diskette muß DTAUS0.TXT heißen.  Zusätzlich
13   muß ein Begleitzettel begelegt werden.
14
15   Auf einer Diskette mit 360 KByte werden etwa max. 300 Datensätze
16   gespeichert.  Pro Zahlung werden zwischen 512 Bytes für die Datei
17   gespeichert.  Hinzukommen min. 256 Bytes pro Datensatz C.  Dies
18   bedeutet, daß ungefähr 1000 Zahlungen auf eine 360 KByte Diskette
19   übergeben werden können. 
20
21   Die Datei besteht aus drei Teilen:
22
23   Datensatz A - Header
24   Datensatz C - Body
25   Datensatz E - Footer
26
27   Der Body kann dabei mehrfach auftreten - einmal pro Zahlungsverkehr.
28
29   Alle Informationen liegen im ASCII-Format vor, keine wilden
30   Binärformate.
31
32   Aufbau Datensatz A
33   ------------------
34
35    1    0   4 Zeichen   Länge des Datensatzes, immer 128 Bytes, also immer "0128"
36    2    4   1 Zeichen   Datensatz-Typ, immer 'A'
37    3    5   2 Zeichen   Art der Transaktionen
38                         "LB" für Lastschriften Bankseitig
39                         "LK" für Lastschriften Kundenseitig
40                         "GB" für Gutschriften Bankseitig
41                         "GK" für Gutschriften Kundenseitig
42    4    7   8 Zeichen   Bankleitzahl des Auftraggebers
43    5   15   8 Zeichen   CST, "00000000", nur belegt, wenn Diskettenabsender Kreditinstitut
44    6   23  27 Zeichen   Name des Auftraggebers
45    7   50   6 Zeichen   aktuelles Datum im Format DDMMJJ
46    8   56   4 Zeichen   CST, "   " (Blanks)
47    9   60  10 Zeichen   Kontonummer des Auftraggebers
48   10   70  10 Zeichen   Optionale Referenznummer
49   11a  80  15 Zeichen   Reserviert, 15 Blanks
50   11b  95   8 Zeichen   Optionales Ausführungsdatum im Format DDMMJJJJ.
51                         Nicht jünger als Erstellungsdatum (A7), jedoch
52                         höchstens 15 Kalendertage später.  Sonst Blanks.
53   11c 103  24 Zeichen   Reserviert, 24 Blanks
54   12  127   1 Zeichen   Währungskennzeichen
55                         " " = DM
56                         "1" = Euro
57            -- 128 Zeichen
58
59   Aufbau Datensatz C
60   ------------------
61
62    1    0   4 Zeichen   Länge des Datensatzes, 187 + x * 29 (x..Anzahl Erweiterungsteile)
63    2    4   1 Zeichen   Datensatz-Typ, immer 'C'
64    3    5   8 Zeichen   Bankleitzahl des Auftraggebers (optional)
65    4   13   8 Zeichen   Bankleitzahl des Kunden
66    5   21  10 Zeichen   Kontonummer des Kunden
67    6   31  13 Zeichen   1. Zeichen        "0"
68                         2. - 12. Zeichen  interne Kundennummer oder Nullen
69                         13. Zeichen       "0"
70                         Die interne Nummer wird vom erstbeauftragten
71                         Institut zum endbegünstigten Institut
72                         weitergeleitet.  Die Weitergabe der internenen
73                         Nummer an den Überweisungsempfänger ist der
74                         Zahlstelle freigestellt.
75    7a  44   2 Zeichen   Art der Transaktion
76    7b  46   3 Zeichen   ------- "----------
77                         "04000" Lastschrift des Abbuchungsauftragsverfahren
78                         "05000" Lastschrift des Einzugsermächtigungsverfahren
79                         "05005" Lastschrift aus Verfügung im elec. Cash-System
80                         "05006" Wie 05005 mit ausländischen Karten
81                         "05015" Lastschrift aus Verfügung im elec. Cash-System - POZ
82                         "51000" Überweisungs-Gutschrift
83                         "53000" Überweisung Lohn/Gehalt/Rente
84                         "54XXJ" Vermögenswirksame Leistung (VL) mit Sparzulage
85                                 XX = 00 oder %-Satz der Sparzulage
86                                 J = Endziffer des Jahres für diese Leistung
87                         "56000" Überweisung öffentlicher Kassen
88    8   49   1 Zeichen   Reserviert, " " (Blank)
89    9   50  11 Zeichen   Betrag
90   10   61   8 Zeichen   Bankleitzahl des Auftraggebers
91   11   69  10 Zeichen   Kontonummer des Auftraggebers
92   12   79  11 Zeichen   Betrag in Euro einschließlich
93                         Nachkommastellen, nur belegt, wenn Euro als
94                         Währung angegeben wurde (A12, C17a), sonst Nullen
95   13   90   3 Zeichen   Reserviert, 3 Blanks
96   14a  93  27 Zeichen   Name des Kunden
97   14b 120   8 Zeichen   Reserviert, 8 Blanks
98            -- 128 Zeichen
99   15  128   27 Zeichen  Name des Auftraggebers
100   16  155   27 Zeichen  Verwendungszweck
101   17a 182    1 Zeichen  Währungskennzeichen
102                         " " = DM
103                         "1" = Euro
104   17b 183    2 Zeichen  Reserviert, 2 Blanks
105   18  185    2 Zeichen  Anzahl der Erweiterungsdatensätze, "00" bis "15"
106   19  187    2 Zeichen  Typ (1. Erweiterungsdatensatz)
107                         "01" Name des Kunden
108                         "02" Verwendungszweck
109                         "03" Name des Auftraggebers
110   20  189   27 Zeichen  Beschreibung gemäß Typ
111   21  216    2 Zeichen  wie C19, oder Blanks,  (2. Erweiterungsdatensatz)
112   22  218   27 Zeichen  wie C20, oder Blanks
113   23  245   11 Zeichen  11 Blanks
114            -- Ende des ersten Erweiterungsdatensatzes
115            -- 256 Zeichen
116
117   So können weitere Datensaetze angehängt werden.  Sie müssen im
118   Gesamten jedoch 128 Zeichen lang sein.  Also vier 29-Zeichen Blöcke
119   und anschließend mit 12 Blanks auffüllen.
120
121   Aufbau Datensatz E
122   ------------------
123
124    1   0   4 Zeichen    Länge des Datensatzes, immer 128 Bytes, also immer "0128"
125    2   4   1 Zeichen    Datensatz-Typ, immer 'E'
126    3   5   5 Zeichen    Reserviert, 5 Blanks
127    4  10   7 Zeichen    Anzahl der Datensätze vom Typ C
128    5  17  13 Zeichen    Kontrollsumme Beträge
129    6  30  17 Zeichen    Kontrollsumme Kontonummern
130    7  47  17 Zeichen    Kontrollsumme Bankleitzahlen
131    8  64  13 Zeichen    Kontrollsumme Euro, nur belegt, wenn Euro als
132                         Währung angegeben wurde (A12, C17a)
133    9  77  51 Zeichen    51 Blanks
134
135   Begleitzettel
136   -------------
137
138   Jede dem Geldinstitut gelieferte Diskette muß einen Begleitzettel
139   mit folgenden Mindestangaben enthalten.  Bei mehreren Disketten ist
140   für jede Diskette ein Begleitzettel auszuschreiben.
141
142     Begleitzettel
143
144     Belegloser Datenträgeraustausch
145
146     Sammel-Überweisung-/-einziehungsauftrag
147
148     Vol-Nummer der Diskette
149
150     Erstellungsdatum
151
152     Anzahl der Datensätze C (Stückzahl)
153
154     Summe DM der Datensätze C
155
156     Kontrollsumme der Kontonummern der
157
158     Überweisungsempfänger/Zahlungspflichtigen
159
160     Kontrollsumme der Bankleitzahlen der endbegünstigten
161
162     Kreditinstitute/Zahlungsstellen
163
164     Bankleitzahl/Kontonummer des Absenders
165
166     Name, Bankleitzahl/Kontonummer des Empfängers
167
168     Ort, Datum
169
170     Firma,Unterschrift
171
172   Sie haben die Pflicht, die Disketten zusätzlich durch Klebezettel
173   mit folgenden Angaben zu kennzeichnen.
174
175   Name und Bankleitzahll/Kontonummer des Diskettenabsenders.
176
177     Diskettennummer (VOL-Nummer).
178
179     Dateiname: DTAUS0.TXT 5.25 -und 3.5 Diskette.
180
181   API from dtaus.[ch]
182   -------------------
183
184   void
185   dtaus2control (char *cdtaus, char *ccontrol)
186
187     Diese Routine liest eine Datentraegerdatei aus und wandelt sie in
188     das eigene Kontrollformat zur weiteren Bearbeitung oder Kontrolle.
189
190     Wird als dtaus NULL angegeben, so wird DTAUS0.TXT und dtaus0.txt
191     probiert.  Ist das zweite Argument NULL, so wird auf stdout
192     geschrieben.
193
194   int
195   control2dtaus (char *ccontrol, char *cdtaus, char *cbeleg, char *ccheck)
196
197     Wandelt eine Datei im eigenen Kontrollformat in das genormte
198     Bankformat um.  Die Vorgaben für die Kontrolldatei sind dtaus0.ctl
199     und DTAUS0.CTL, fuer die Ausgabe dtaus0.txt.  Es werden zusätzlich
200     zwei Dateien erstellt.  Die Belegdatei muß unterschrieben mit der
201     Diskette zur Bank gebracht werden.  In der letzten Datei bzw. auf
202     stdout wird der Inhalt des Datentraegers für die Akten in einer
203     Tabelle ausgedruckt.
204
205   Weitere API-Funktionen, die es ermoeglichen, direkt die dtaus0.txt
206   Datei zu schreiben werden in Zukunft folgen.