Modifica sperimentale per apprendimento di Nicola

git-svn-id: svn://10.65.10.50/trunk@59 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
nik 1994-08-25 09:02:59 +00:00
parent 635e73f1b4
commit 84ecc65375

View File

@ -1,329 +1,331 @@
#include <checks.h> #include <checks.h>
#define __TABUTIL_CPP #define __TABUTIL_CPP
#include <tabutil.h> #include <tabutil.h>
#include <extcdecl.h> #include <extcdecl.h>
#include <utility.h> #include <utility.h>
int TTable::name2log(const char* n) int TTable::name2log(const char* n)
{ {
return *n == '%' ? LF_TABCOM : return *n == '%' ? LF_TABCOM :
*n == '#' ? LF_TABGEN : *n == '#' ? LF_TABGEN :
LF_TAB; LF_TAB;
} }
TTable::TTable(const char* tabname, bool linkrecinst)
: TLocalisamfile(name2log(tabname), linkrecinst)
{ TTable::TTable(const char* tabname, bool linkrecinst)
if ((*tabname == '%') || (*tabname == '#')) tabname++; : TLocalisamfile(name2log(tabname), linkrecinst)
_tabname = tabname; {
_tabname.upper(); if ((*tabname == '%') || (*tabname == '#')) tabname++;
settab(TRUE); _tabname = tabname;
} _tabname.upper();
settab(TRUE);
}
int TTable::first(word lockop)
{ int TTable::first(word lockop)
TRecfield codtab(curr(), "CODTAB");
{
curr().zero(); TRecfield codtab(curr(), "CODTAB");
codtab = _tabname;
TBaseisamfile::read(_isgteq, lockop); curr().zero();
const char *c = (const char *) codtab; codtab = _tabname;
if (good()) TBaseisamfile::read(_isgteq, lockop);
if (strncmp(_tabname, c, 3) != 0) setstatus(_isemptyfile); const char *c = (const char *) codtab;
if (bad()) curr().zero(); if (good())
else if (strncmp(_tabname, c, 3) != 0) setstatus(_isemptyfile);
codtab = c + 3; if (bad()) curr().zero();
return status(); else
} codtab = c + 3;
return status();
}
int TTable::last(word lockop)
{ int TTable::last(word lockop)
TRecfield codtab(curr(), "CODTAB");
{
curr().zero(); TRecfield codtab(curr(), "CODTAB");
codtab = format("%s%c", (const char*) _tabname, 0xFF);
TBaseisamfile::read(_isgteq); curr().zero();
if (!eof()) TBaseisamfile::prev(lockop); codtab = format("%s%c", (const char*) _tabname, 0xFF);
else setstatus(NOERR); TBaseisamfile::read(_isgteq);
const char *c = (const char *) codtab; if (!eof()) TBaseisamfile::prev(lockop);
if (good()) else setstatus(NOERR);
if (strncmp(_tabname, c, 3) != 0) setstatus(_isemptyfile); const char *c = (const char *) codtab;
if (bad()) curr().zero(); if (good())
else if (strncmp(_tabname, c, 3) != 0) setstatus(_isemptyfile);
codtab = c + 3; if (bad()) curr().zero();
return status(); else
} codtab = c + 3;
return status();
}
int TTable::next(word lockop)
{ int TTable::next(word lockop)
TRecfield codtab(curr(), "CODTAB");
{
read(); TRecfield codtab(curr(), "CODTAB");
if (bad()) return status();
read();
TRecnotype nrec = recno(); if (bad()) return status();
TBaseisamfile::next(lockop); TRecnotype nrec = recno();
const char *c = (const char *) codtab;
if (strncmp(_tabname, c, 3) != 0) TBaseisamfile::next(lockop);
{ const char *c = (const char *) codtab;
if (lockop == _lock) TBaseisamfile::reread(_unlock); if (strncmp(_tabname, c, 3) != 0)
TBaseisamfile::readat(nrec, lockop); {
setstatus(_iseof); if (lockop == _lock) TBaseisamfile::reread(_unlock);
} TBaseisamfile::readat(nrec, lockop);
codtab = c + 3; setstatus(_iseof);
return status(); }
} codtab = c + 3;
return status();
}
int TTable::prev(word lockop)
{ int TTable::prev(word lockop)
TRecfield codtab(curr(), "CODTAB");
{
read(); TRecfield codtab(curr(), "CODTAB");
if (bad()) return status();
read();
TRecnotype nrec = recno(); if (bad()) return status();
TBaseisamfile::prev(lockop); TRecnotype nrec = recno();
const char *c = (const char *) codtab;
if (strncmp(_tabname, c, 3) != 0) TBaseisamfile::prev(lockop);
{ const char *c = (const char *) codtab;
if (lockop == _lock) TBaseisamfile::reread(_unlock); if (strncmp(_tabname, c, 3) != 0)
TBaseisamfile::readat(nrec, lockop); {
setstatus(_isbof); if (lockop == _lock) TBaseisamfile::reread(_unlock);
} TBaseisamfile::readat(nrec, lockop);
codtab = c + 3; setstatus(_isbof);
return status(); }
} codtab = c + 3;
return status();
}
int TTable::reread(word lockop, TDate&)
{ int TTable::reread(word lockop, TDate&)
TRecfield codtab(curr(), "CODTAB");
{
TFixed_string s((const char*) codtab, 80); TRecfield codtab(curr(), "CODTAB");
s.insert(_tabname, 0); TFixed_string s((const char*) codtab, 80);
codtab = s;
TBaseisamfile::reread(lockop); s.insert(_tabname, 0);
const char *c = (const char *) codtab; codtab = s;
codtab = c + 3; TBaseisamfile::reread(lockop);
return status(); const char *c = (const char *) codtab;
} codtab = c + 3;
return status();
}
int TTable::reread(TRectype& rec, word lockop, TDate&)
{ int TTable::reread(TRectype& rec, word lockop, TDate&)
TRecfield codtab(rec, "CODTAB");
TFixed_string s((const char*) codtab, 80); {
TRecfield codtab(rec, "CODTAB");
s.insert(_tabname, 0); TFixed_string s((const char*) codtab, 80);
codtab = s;
TBaseisamfile::reread(rec, lockop); s.insert(_tabname, 0);
const char *c = (const char *) codtab; codtab = s;
codtab = c + 3; TBaseisamfile::reread(rec, lockop);
return status(); const char *c = (const char *) codtab;
} codtab = c + 3;
return status();
}
int TTable::skip(TRecnotype nrec, word lockop)
{ int TTable::skip(TRecnotype nrec, word lockop)
TRecfield codtab(curr(), "CODTAB");
{
if (!nrec) return NOERR; TRecfield codtab(curr(), "CODTAB");
TBaseisamfile::skip(nrec, lockop);
const char *c = (const char *) codtab; if (!nrec) return NOERR;
if (strncmp(_tabname, c, 3) != 0) TBaseisamfile::skip(nrec, lockop);
{ const char *c = (const char *) codtab;
if (nrec > 0) if (strncmp(_tabname, c, 3) != 0)
{ {
if (lockop == _lock) TBaseisamfile::reread(_unlock); if (nrec > 0)
last(lockop); {
setstatus(_iseof); if (lockop == _lock) TBaseisamfile::reread(_unlock);
} last(lockop);
else setstatus(_iseof);
{ }
if (lockop == _lock) TBaseisamfile::reread(_unlock); else
first(lockop); {
setstatus(_isbof); if (lockop == _lock) TBaseisamfile::reread(_unlock);
} first(lockop);
} setstatus(_isbof);
codtab = c + 3; }
return status(); }
} codtab = c + 3;
return status();
}
int TTable::read(word op, word lockop, TDate&)
{ int TTable::read(word op, word lockop, TDate&)
TRecfield codtab(curr(), "CODTAB");
{
CHECKD(op >= _iscurr && op <= _isgteq, "Invalid read operation : ", op); TRecfield codtab(curr(), "CODTAB");
TFixed_string s((const char*) codtab, 80);
s.insert(_tabname, 0); CHECKD(op >= _iscurr && op <= _isgteq, "Invalid read operation : ", op);
codtab = s; TFixed_string s((const char*) codtab, 80);
TBaseisamfile::read(op, lockop); s.insert(_tabname, 0);
const char *c = (const char *) codtab; codtab = s;
if (good() && strncmp(_tabname, c, 3) != 0) TBaseisamfile::read(op, lockop);
{ const char *c = (const char *) codtab;
if (lockop == _lock) TBaseisamfile::reread(_unlock); if (good() && strncmp(_tabname, c, 3) != 0)
last(lockop); {
setstatus(_iseof); if (lockop == _lock) TBaseisamfile::reread(_unlock);
} last(lockop);
codtab = c + 3; setstatus(_iseof);
return status(); }
} codtab = c + 3;
return status();
}
int TTable::read(TRectype& rec, word op, word lockop, TDate&)
{ int TTable::read(TRectype& rec, word op, word lockop, TDate&)
TRecfield codtab(rec, "CODTAB");
{
CHECKD(op >= _iscurr && op <= _isgteq, "Invalid read operation : ", op); TRecfield codtab(rec, "CODTAB");
TFixed_string s((const char*) codtab, 80);
CHECKD(op >= _iscurr && op <= _isgteq, "Invalid read operation : ", op);
s.insert(_tabname, 0); TFixed_string s((const char*) codtab, 80);
codtab = s;
TBaseisamfile::read(rec, op, lockop); s.insert(_tabname, 0);
const char *c = (const char *) codtab; codtab = s;
if (good() && strncmp(_tabname, c, 3) != 0) TBaseisamfile::read(rec, op, lockop);
{ const char *c = (const char *) codtab;
setstatus(_iseof); if (good() && strncmp(_tabname, c, 3) != 0)
if (lockop == _lock) TBaseisamfile::reread(_unlock); {
last(lockop); setstatus(_iseof);
} if (lockop == _lock) TBaseisamfile::reread(_unlock);
codtab = c + 3; last(lockop);
return status(); }
} codtab = c + 3;
return status();
}
int TTable::readat(TRecnotype nrec, word lockop)
{ int TTable::readat(TRecnotype nrec, word lockop)
TRecfield codtab(curr(), "CODTAB");
TBaseisamfile::readat(nrec, lockop); {
TFixed_string s((const char*) codtab); TRecfield codtab(curr(), "CODTAB");
TBaseisamfile::readat(nrec, lockop);
CHECKS(_tabname == s.left(3), "Invalid position : Table ", (const char *)_tabname); TFixed_string s((const char*) codtab);
codtab = &s[3];
return status(); CHECKS(_tabname == s.left(3), "Invalid position : Table ", (const char *)_tabname);
} codtab = &s[3];
return status();
}
int TTable::readat(TRectype& rec ,TRecnotype nrec, word lockop)
{ int TTable::readat(TRectype& rec ,TRecnotype nrec, word lockop)
TRecfield codtab(rec, "CODTAB");
TBaseisamfile::readat(rec, nrec, lockop); {
TFixed_string s((const char*) codtab); TRecfield codtab(rec, "CODTAB");
TBaseisamfile::readat(rec, nrec, lockop);
CHECKS(_tabname == s.left(3), "Invalid position : Table ", (const char*)_tabname); TFixed_string s((const char*) codtab);
codtab = &s[3];
return status(); CHECKS(_tabname == s.left(3), "Invalid position : Table ", (const char*)_tabname);
} codtab = &s[3];
return status();
}
int TTable::write(TDate&)
{ int TTable::write(TDate&)
TRecfield codtab(curr(), "CODTAB");
TFixed_string s((const char*) codtab, 80); {
TRecfield codtab(curr(), "CODTAB");
s.insert(_tabname, 0); TFixed_string s((const char*) codtab, 80);
codtab = s;
TBaseisamfile::write(); s.insert(_tabname, 0);
const char *c = (const char *) codtab; codtab = s;
codtab = c + 3; TBaseisamfile::write();
return status(); const char *c = (const char *) codtab;
} codtab = c + 3;
return status();
}
int TTable::write(const TRectype& rec, TDate&)
{ int TTable::write(const TRectype& rec, TDate&)
TRecfield codtab((TRectype&)rec, "CODTAB");
TFixed_string s((const char*) codtab, 80); {
TRecfield codtab((TRectype&)rec, "CODTAB");
s.insert(_tabname, 0); TFixed_string s((const char*) codtab, 80);
codtab = s;
TBaseisamfile::write(rec); s.insert(_tabname, 0);
const char *c = (const char *) codtab; codtab = s;
codtab = c + 3; TBaseisamfile::write(rec);
return status(); const char *c = (const char *) codtab;
} codtab = c + 3;
return status();
}
int TTable::rewrite(TDate&)
{ int TTable::rewrite(TDate&)
TRecfield codtab(curr(), "CODTAB");
TFixed_string s((const char*) codtab, 80); {
TRecfield codtab(curr(), "CODTAB");
s.insert(_tabname, 0); TFixed_string s((const char*) codtab, 80);
codtab = s;
TBaseisamfile::rewrite(); s.insert(_tabname, 0);
const char *c = (const char *) codtab; codtab = s;
codtab = c + 3; TBaseisamfile::rewrite();
return status(); const char *c = (const char *) codtab;
} codtab = c + 3;
return status();
}
int TTable::rewrite(const TRectype& rec, TDate&)
{ int TTable::rewrite(const TRectype& rec, TDate&)
TRecfield codtab((TRectype&)rec, "CODTAB");
TFixed_string s((const char*) codtab, 80); {
TRecfield codtab((TRectype&)rec, "CODTAB");
s.insert(_tabname, 0); TFixed_string s((const char*) codtab, 80);
codtab = s;
TBaseisamfile::rewrite(rec); s.insert(_tabname, 0);
const char *c = (const char *) codtab; codtab = s;
codtab = c + 3; TBaseisamfile::rewrite(rec);
return status(); const char *c = (const char *) codtab;
} codtab = c + 3;
return status();
}
int TTable::remove(TDate&)
{ int TTable::remove(TDate&)
TRecfield codtab(curr(), "CODTAB");
TFixed_string s((const char*) codtab, 80); {
TRecfield codtab(curr(), "CODTAB");
s.insert(_tabname, 0); TFixed_string s((const char*) codtab, 80);
codtab = s;
TBaseisamfile::remove(); s.insert(_tabname, 0);
const char *c = (const char *) codtab; codtab = s;
codtab = c + 3; TBaseisamfile::remove();
return status(); const char *c = (const char *) codtab;
} codtab = c + 3;
return status();
}
int TTable::remove(const TRectype& rec, TDate&)
{ int TTable::remove(const TRectype& rec, TDate&)
TRecfield codtab((TRectype&)rec, "CODTAB");
TFixed_string s((const char*) codtab, 80); {
TRecfield codtab((TRectype&)rec, "CODTAB");
s.insert(_tabname, 0); TFixed_string s((const char*) codtab, 80);
codtab = s;
TBaseisamfile::remove(rec); s.insert(_tabname, 0);
const char *c = (const char *) codtab; codtab = s;
codtab = c + 3; TBaseisamfile::remove(rec);
return status(); const char *c = (const char *) codtab;
} codtab = c + 3;
return status();
}