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 )