Распределенная База Данных реального времени ССУДА
Функции работы с описаниями таблицы (вариант для UNIX)
Пример
Пример программы, формирующей и записывающей все данные таблицы
TOK, структура строки которой определена bot, после записи
следует чтение и печать подтаблицы. Предполагается, что таблица
не имеет владельца и состоит из 5 столбцов, 5 строк и 100
плоскостей.
static char buf[9600];
static short i,j,l,k;
static char r_tok[]={"TOK"},user_name[]={""};
struct bot {
short a_1;
char a_2[4];
char a_3[10];
unsigned char a_4;
short a_5;
} *ref_bot;
struct bot d_bot={100,"AAA\0","AAAAAAAAA\0",1,1000};
main()
{
if(i=inidbl(2)) pr_err(i,"DB2");
if((k=ropdbl(r_tok,user_name))<0) pr_err(k,"ROPDBL");
coord[0]=1;
coord[1]=100;
coord[2]=1;
coord[3]=5;
coord[4]=1;
coord[5]=5;
coord[6]=0;
(char*)ref_bot=buf;
for(l=coord[0];l<=coord[1];l++)
for(j=coord[2];j<=coord[3];j++)
{
ref_bot->d_bot.a1++;
for(i=0;ia2[i]=d_bot.a2[i];
if((d_bot.a2[i]&255) == 255)
d_bot.a2[i]='\A';
else
if(d_bot.a2[i]) d_bot.a2[i]++;
}
for(i=0;ia3[i]=d_bot.a3[i];
if((d_bot.a3[i]&255) == 255)
d_bot.a3[i]='\A';
else
if(d_bot.a3[i]) d_bot.a3[i]++;
}
ref_bot->a4=d_bot.a4++;
ref_bot->a5=d_bot.a5++;
++ref_bot;
if(((char*)ref_bot+sizeof(struct bot)) >
(buf+sizeof(buf))) goto bce_wr;
}
bce_wr:
if((i=dtwdbl(buf,sizeof(buf),coord,k)<0) pr_err(i,"DTWDBL);
coord[0]=45;
coord[1]=87;
coord[2]=2;
coord[3]=4;
coord[4]=2;
coord[5]=3;
coord[6]=0;
if((i=dtrdbl(buf,sizeof(buf),coord,k)<0) pr_err(i,"DTRDBL);
i=0;
for(l=coord[0];l<=coord[1];l++)
for(j=coord[2];j<=coord[3];j++)
{
printf(" a2=%s a3=%s\n",buf+i,buf+i+sizeof(d_bot.a2))
i += sizeof(d_bot.a2)+sizeof(d_bot.a3);
if(i>sizeof(buf))goto bce_r;
}
bce_r:
rcldbl(k);
}
pr_err(i,s)
int i;
char *s;
{
printf("%s --> %x\n",s,i);
exit(0);
}
Автор ©
Воеводин В.П.
|