#include <stdio.h>  // Program vynechavajuci pri exporte pole 910 a meniaci jednotky z30 obsahujuce BA001 nazad do 910
#include <string.h> // --------------
#include <stdlib.h>

void main()         // Brano Kovar 22.april.2003
{

 char htag[7] = "BA001";      // HLADANA SIGLA



 FILE* vstsub;
 FILE* vystsub;
 char pati[80]= "/d02/exlibris/aleph/u51_5/skp01/scratch/skpba.dat";    // VSTUP
 char pato[80]= "/d02/exlibris/aleph/u51_5/skp01/scratch/skpba001.dat";     // VYSTUP
 char sysno[12];
 char ssysno[12];
 char tag[5];
 char nic[7];
 char obsah[3002];
 char obsahv[3002];
 char podp;
 long z,n;
 int x,y,a,za,b;


 if ((vstsub=fopen(pati,"r"))==NULL)
       {
        fprintf(stderr, "Error: Can't open file: %s\n", pati);
        fprintf(stderr, " Nahrajte prosim do scratchu export databazy!\n");
        exit(1);
       }
 if ((vystsub=fopen(pato,"w")) == NULL )
       {
        fprintf( stderr, "Error: Can't open file: %s\n", pato);
        exit(1);
       }
printf("\nKonvertujem hladane jednotky do 910..\n");
z=0; za=0; n=0;

fgets( sysno, 11, vstsub); // ssysno inicializacia :-) prve je aj tak FMT
strcpy( ssysno, sysno);
fgets( tag, 4, vstsub);
fgets( nic, 6, vstsub);
fgets( obsah, 3001, vstsub);


do {                    //  ---- HLAVNY CYKLUS
 strcpy ( ssysno, sysno);
 fgets( sysno, 11, vstsub);
 fgets( tag, 4, vstsub);
 fgets( nic, 6, vstsub);
 fgets( obsah, 2001, vstsub);

// if (strcmp(tag, "910") == 0) { x=0; }
//                        ODKOMENTOVAT AK SA MA POVODNE POLE 910 z BIB.ZAZNAMU VYNECHAT
//  else
 if (strcmp(tag, "Z30") == 0)   // V TOMTO TAGU HLADAME
  {
    x=0; y=19; a=1;

    do {
        if (htag[x] != obsah[y]) { a=0; }  // byte-by-byte compare
        x++; y++;
    } while (x < 5);

    if (a == 1)     // JE TO HLADANA JEDNOTKA, TUTO SKONVERTIT NA 910
     {
       fputs( sysno, vystsub); fputs( "910   L ", vystsub);

       x=0; y= strlen(obsah)-1;
       do { 
//        fprintf(vystsub , "!!%c!!",obsah[x+2]);
        b=0;

        if (obsah[x+2] == '1')  {  fputs( "$$a", vystsub); b=1; } // KONVERZIA PODPOLI
        if (obsah[x+2] == 'h')  {  fputs( "$$r", vystsub); b=1; } // vlavo podpolia v povodnom poli (z30)
        if (obsah[x+2] == '7')  {  fputs( "$$p", vystsub); b=1; } // vpravo podpolia v skonvertovanom (910)
        if (obsah[x+2] == '3')  {  fputs( "$$b", vystsub); b=1; }
        if (obsah[x+2] == 'e')  {  fputs( "$$u", vystsub); b=1; }
        if (obsah[x+2] == '9')  {  fputs( "$$c", vystsub); b=1; }

        if (b == 1)  // zname podpole -> skonvertovat
          {
            x=x+2;
            do
             {
              x++;
              fprintf( vystsub, "%c",obsah[x]);
             } while ((obsah[x+1] != '$') && (x < y));
          } else
        do { x++; } while ( (obsah[x] != '$') && (obsah[x+1] != '$') && (x<y));

       } while (x<y);

      n++; // fprintf( vystsub, "\n");
     }
//    fprintf(vystsub," !!!!! "); for (x=19; x<=22; x++) { fprintf( vystsub, "%c",htag[x-19]); }
  }
  else        // ZVYSNE POLIA SKOPIRUJE DO VYSTUPU
  {
   fputs( sysno, vystsub);
   fputs( tag, vystsub);
   fputs( nic, vystsub);
   fputs( obsah, vystsub);
  }

 if (strcmp(sysno,ssysno) != 0)   // pocitadlo zaznamov
   {
     z++; za++;
     if (za >= 25000) { za=0; fprintf(stdout,"%d\n",z); }
   }
} while (!feof(vstsub));

fclose(vstsub);
fclose(vystsub);
printf("\nuspesne vygenerovany vystup pre %d zaznamov (najdenych %d)\n\n",z,n);

}



