80 lines
1.5 KiB
C++
Executable File
80 lines
1.5 KiB
C++
Executable File
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <stdtypes.h>
|
|
#include <strings.h>
|
|
#include <scanner.h>
|
|
#include <isam.h>
|
|
#include <tabutil.h>
|
|
#include <utility.h>
|
|
|
|
int main(int argc,char** argv)
|
|
|
|
{
|
|
init_global_vars();
|
|
if (argc > 2)
|
|
{
|
|
argv++;
|
|
TScanner dfile(*argv);
|
|
TLocalisamfile* of;
|
|
TString s(dfile.line());
|
|
TToken_string w(s);
|
|
const char* work = w.get();
|
|
const int nf = atoi(work);
|
|
const TString nt(work);
|
|
const int reclen = w.get_int();
|
|
|
|
if (nf) of = new TLocalisamfile(nf);
|
|
else of = new TTable(nt);
|
|
|
|
TToken_string d(40, ',');
|
|
|
|
while (*(work = dfile.line()))
|
|
d.add(work);
|
|
|
|
argv++;
|
|
TScanner ifile(*argv);
|
|
|
|
TString name, ws(256), depcom(10);
|
|
int ncodi = 2, ncodd = 2;
|
|
|
|
while (*(work = ifile.line()))
|
|
{
|
|
s = work;
|
|
s.left_just(reclen);
|
|
d.restart();
|
|
w = d.get();
|
|
int st = w.get_int();
|
|
int len = w.get_int();
|
|
name = w.get();
|
|
ws = s.mid(st, len);
|
|
if (ws != depcom)
|
|
{
|
|
if (depcom.not_empty()) of->rewrite();
|
|
ncodi = 2;
|
|
ncodd = 2;
|
|
of->zero();
|
|
of->put(name, ws);
|
|
of->read();
|
|
if (of->good()) depcom = ws;
|
|
else depcom = "";
|
|
}
|
|
w = d.get();
|
|
st = w.get_int();
|
|
len = w.get_int();
|
|
name = s.mid(st, len);
|
|
w = d.get();
|
|
st = w.get_int();
|
|
len = w.get_int();
|
|
ws = s.mid(st, len);
|
|
if (name == "UI")
|
|
name = format("UFFIVA%1d", ncodi++);
|
|
else
|
|
name = format("UFFIIDD%1d", ncodd++);
|
|
of->put(name, ws);
|
|
}
|
|
if (depcom.not_empty()) of->rewrite();
|
|
delete of;
|
|
}
|
|
free_global_vars();
|
|
}
|