Business-KontoCheck
view release on metacpan or search on metacpan
konto_check.c view on Meta::CPAN
if(anzahl)*anzahl=0;
if(such2 && such1>such2)return INVALID_SEARCH_RANGE;
if((init_status&7)<7)return LUT2_NOT_INITIALIZED;
if(lut_id_status==FALSE)return LUT1_FILE_USED;
if(!pz_methoden)return LUT2_PZ_NOT_INITIALIZED;
retval=suche_int2(such1,such2,anzahl,start_idx,zweigstellen_base,blz_base,&pz_f,&sort_pz_f,qcmp_pz_f,LUT2_PZ_SORT,1);
if(base_name)*base_name=pz_f;
return retval;
}
/* Funktion lut_suche_plz() +§§§2 */
DLL_EXPORT int lut_suche_plz(int such1,int such2,int *anzahl,int **start_idx,int **zweigstellen_base,int **base_name,int **blz_base)
{
if(anzahl)*anzahl=0;
if(such2 && such1>such2)return INVALID_SEARCH_RANGE;
if((init_status&7)<7)return LUT2_NOT_INITIALIZED;
if(lut_id_status==FALSE)return LUT1_FILE_USED;
if(!plz)return LUT2_PLZ_NOT_INITIALIZED;
if(base_name)*base_name=plz;
return suche_int2(such1,such2,anzahl,start_idx,zweigstellen_base,blz_base,&plz,&sort_plz,qcmp_plz,LUT2_PLZ_SORT,0);
}
/* Funktion lut_suche_regel() +§§§2 */
DLL_EXPORT int lut_suche_regel(int such1,int such2,int *anzahl,int **start_idx,int **zweigstellen_base,int **base_name,int **blz_base)
{
if(anzahl)*anzahl=0;
if(such2 && such1>such2)return INVALID_SEARCH_RANGE;
if((init_status&7)<7)return LUT2_NOT_INITIALIZED;
if(lut_id_status==FALSE)return LUT1_FILE_USED;
if(!iban_regel)return LUT2_IBAN_REGEL_NOT_INITIALIZED;
if(base_name)*base_name=iban_regel;
return suche_int2(such1*100,such2*100+99,anzahl,start_idx,zweigstellen_base,blz_base,&iban_regel,&sort_iban_regel,qcmp_iban_regel,LUT2_IBAN_REGEL_SORT,0);
}
#line 22597 "konto_check.lxx"
/* Funktion lut_suche_bic_h() +§§§2 */
DLL_EXPORT int lut_suche_bic_h(char *such_name,int *anzahl,int **start_idx,int **zweigstellen_base,
char ***base_name,int **blz_base)
{
if(anzahl)*anzahl=0;
if((init_status&7)<7)return LUT2_NOT_INITIALIZED;
if(lut_id_status==FALSE)return LUT1_FILE_USED;
if(!bic_h)return LUT2_BIC_NOT_INITIALIZED;
if(base_name)*base_name=bic_h;
return suche_str(such_name,anzahl,start_idx,zweigstellen_base,blz_base,&bic_h,&sort_bic_h,qcmp_bic_h,LUT2_BIC_H_SORT);
}
/* Funktion bic_info() +§§§2
* Die Funktion bic_info() sucht Banken mit einem bestimmten BIC und gibt
* die gefundene Anzahl sowie den Startindex in den internen Arrays zurück.
* Sie ist für die Funktionsgruppe biq_* gedacht, falls mehrere Werte aus der
* BLZ-Datei bestimmt werden sollen (z.B. verschiedene Felder oder Werte für
* mehrere Zweigstellen einer Bank). So erspart man sich die relativ aufwendige
* Suche; sie ist nur einmal notwendig.
*
* Parameter:
* bic1: BIC zu dem die Banken bestimmt werden sollen (komplett oder teilweise)
* mode: Suchmodus; er kann die folgenden Werte annehmen:
* mode=1: Suche in allen BICs der BLZ-Datei (Haupt- und Nebenstellen)
* mode=2: Suche nur in den BICs der Hauptstellen
* mode=0: zunächst Suche bei den Hauptstellen, dann bei Haupt- und Nebenstellen;
* falls dann noch nichts gefunden wurde, werden die drei letzten Stellen
* (Filialcode) mit XXX gefüllt und noch einmal eine Suche gemacht.
* anzahl: in diesem Parameter wird die Anahl der gefundenen Banken zurückgegeben
* start_idx: Startindex in den internen Arrays, positiv für das Hauptstellen-Array,
* negativ für das allgemeine BIC-Array. Dieser Index wird als Parameter für
* die Funktionsgruppe biq_* benutzt.
*/
DLL_EXPORT int bic_info(char *bic1,int mode,int *anzahl,int *start_idx)
{
char *ptr,bic2[12];
int *s_idx,retval,cnt;
switch(mode){
case 0:
default:
retval=lut_suche_bic_h(bic1,&cnt,&s_idx,NULL,NULL,NULL);
if(start_idx)*start_idx=(s_idx-sort_bic_h)+1;
if(!cnt){ /* Suche bei allen BICs (inklusive Nebenstellen) */
retval=lut_suche_bic(bic1,&cnt,&s_idx,NULL,NULL,NULL);
if(start_idx)*start_idx=(sort_bic-s_idx)-1; /* negativer Startindex */
}
if(!cnt){ /* noch nichts gefunden, Zweigstellenteil des BIC mit XXX auffüllen (z.B. für Postbank) */
memcpy(bic2,bic1,8); /* Hauptstellenteil kopieren */
*(ptr=bic2+8)='X'; /* Nebenstellenteil mit 'X' füllen */
*++ptr='X';
*++ptr='X';
*++ptr=0;
retval=lut_suche_bic(bic2,&cnt,&s_idx,NULL,NULL,NULL);
if(retval>=OK)retval=OK_SHORT_BIC_USED;
if(start_idx)*start_idx=(sort_bic-s_idx)-1; /* negativer Startindex */
}
break;
case 1:
retval=lut_suche_bic(bic1,&cnt,&s_idx,NULL,NULL,NULL);
if(start_idx)*start_idx=(sort_bic-s_idx)-1; /* negativer Startindex */
break;
case 2:
retval=lut_suche_bic_h(bic1,&cnt,&s_idx,NULL,NULL,NULL);
if(start_idx)*start_idx=(s_idx-sort_bic_h)+1;
break;
}
if(anzahl)*anzahl=cnt;
if(start_idx && !cnt)*start_idx=0;
return retval;
}
/* Funktion bic_\bic_*(), biq_* und iban_* +§§§2 */
/* Diese Funktionen entsprechen weitgehend den Funktionen lut_*; sie können
* benutzt werden, um Daten zu einem BIC oder einer IBAN zu bestimmen.
*
* Die Funktionen bic_*() bestimmen die Felder der BLZ-Datei zu einem BIC.
* Der Parameter mode bestimmt dabei, wie der BIC gesucht wird (s.o. bei der
* Funktion bic_info()). Zu einem BIC werden üblicherweise mehrere Banken gefunden;
* diese werden nach BIC sortiert ausgegeben.
*
* Da der BIC nur ein sehr grobes Merkmal ist (bei der Postbank ist z.B. der Filialteil bei
* allen Filialen auf XXX gesetzt, so daß alle Postbanken sich einen BIC teilen), wurden
( run in 0.604 second using v1.01-cache-2.11-cpan-0bb4e1dffa6 )