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();
 | 
						|
}
 |