this.curr=(byte)dtaus.charAt(127);
if (this.curr!=CURR_DM && this.curr!=CURR_EUR) {
throw new HBCI_Exception("*** Invalid currency: "+this.curr);
}
this.myAccount=new Konto("DE",myBLZ,myNumber);
this.myAccount.curr=(this.curr==CURR_EUR)?"EUR":"DEM";
this.myAccount.name=myName;
// satz C beginn
int posi=128;
// schleife f�r einzelne auftr�ge (c-sets)
while (true) {
Transaction entry=new Transaction();
if (dtaus.charAt(posi+4)!='C') {
// gefundener abschnitt ist kein c-set
break;
}
int setCLen=Integer.parseInt(dtaus.substring(posi,posi+4));
posi+=4;
HBCIUtils.log("SetCLen = "+setCLen+" data bytes (--> "+((setCLen-187)/29.0)+" extensions)", HBCIUtils.LOG_DEBUG);
// "C" �berspringen
posi++;
// skip myBLZ
posi+=8;
String otherBLZ=dtaus.substring(posi,posi+8).trim();
posi+=8;
String otherNumber=dtaus.substring(posi,posi+10).trim();
posi+=10;
entry.internalCustomerId=dtaus.substring(posi+1,posi+1+11).trim();
posi+=13;
entry.key=dtaus.substring(posi,posi+2).trim();
posi+=2;
entry.addkey=dtaus.substring(posi,posi+3).trim();
posi+=3;
// skip bankintern
posi++;
String value_st=null;
if (this.curr==CURR_EUR) {
value_st=dtaus.substring(posi+29,posi+29+11).trim();
} else {
value_st=dtaus.substring(posi,posi+11).trim();
}
posi+=40;
// skip reserve
posi+=3;
String otherName=dtaus.substring(posi,posi+27).trim();
posi+=27;
// skip fillbytes
posi+=8;
// skip myName
posi+=27;
entry.addUsage(dtaus.substring(posi,posi+27).trim());
posi+=27;
// skip w�hrung
// TODO: hier konsistenz �berpr�fen
posi++;
// skip reserve
posi+=2;
int nofExtensions=Integer.parseInt(dtaus.substring(posi,posi+2));
posi+=2;
HBCIUtils.log("field 'nofExtensions' = "+nofExtensions,HBCIUtils.LOG_DEBUG);
String otherName2=null;
for (int i=0;i<nofExtensions;i++) {
if ((posi%128)+29 > 128) {
posi=((posi/128)+1)*128;
}
String code=dtaus.substring(posi,posi+2).trim();
posi+=2;
String data=dtaus.substring(posi,posi+27).trim();
posi+=27;
if (code.equals("01")) {
otherName2=data;
} else if (code.equals("02")) {
entry.addUsage(data);
} else if (code.equals("03")) {
this.myAccount.name2=data;
}
}
posi=((posi/128)+1)*128;
entry.otherAccount=new Konto("DE",otherBLZ,otherNumber);
entry.otherAccount.curr=(this.curr==CURR_EUR)?"EUR":"DEM";
entry.otherAccount.name=otherName;
entry.otherAccount.name2=otherName2;
entry.value=new Value(Long.parseLong(value_st), (this.curr==CURR_EUR)?"EUR":"DEM");