МЕНЮ


Фестивали и конкурсы
Семинары
Издания
О МОДНТ
Приглашения
Поздравляем

НАУЧНЫЕ РАБОТЫ


  • Инновационный менеджмент
  • Инвестиции
  • ИГП
  • Земельное право
  • Журналистика
  • Жилищное право
  • Радиоэлектроника
  • Психология
  • Программирование и комп-ры
  • Предпринимательство
  • Право
  • Политология
  • Полиграфия
  • Педагогика
  • Оккультизм и уфология
  • Начертательная геометрия
  • Бухучет управленчучет
  • Биология
  • Бизнес-план
  • Безопасность жизнедеятельности
  • Банковское дело
  • АХД экпред финансы предприятий
  • Аудит
  • Ветеринария
  • Валютные отношения
  • Бухгалтерский учет и аудит
  • Ботаника и сельское хозяйство
  • Биржевое дело
  • Банковское дело
  • Астрономия
  • Архитектура
  • Арбитражный процесс
  • Безопасность жизнедеятельности
  • Административное право
  • Авиация и космонавтика
  • Кулинария
  • Наука и техника
  • Криминология
  • Криминалистика
  • Косметология
  • Коммуникации и связь
  • Кибернетика
  • Исторические личности
  • Информатика
  • Инвестиции
  • по Зоология
  • Журналистика
  • Карта сайта
  • Автоматизированное рабочее место регистрации и документирования комплекса средств автоматизации

    if(x[i])

    {

    rec[i]=(unsigned int *)calloc(x[i],sizeof(RECORDHANDLE));

    z[i]=(long *)calloc(x[i],sizeof(RECORDNUMBER));

    for(j=0;j<x[i];++j) PXRecBufOpen(tblh,rec[i]+j);

    }


    // заносим в буфера значения из args

    // ( значения для одного поля разделены в args запятыми )

    for(i=3;i<=nflds;++i)

    {

    if(!x[i]) continue;

    if(x[i]==1)

    PXPutAlpha(rec[i][0],i,args[i-3]);

    else

    {

    c1=args[i-3];

    for(k=0;k<x[i];++k)

    {

    c2=arg;

    while(*c1!=',' && *c1!='\0') *c2++=*c1++;

    *c2='\0'; ++c1;

    PXPutAlpha(rec[i][k],i,arg);

    }

    }

    }

    // цикл поиска

    while(1) {

    for(i=3;i<=nflds;++i)

    {

    // 1) Для каждого буфера находим запись с значением равным занесенному в этот буфер и с номером >= max.

    // Найденные номера заносим в соотвествующие z[i][k]

    // Если искомых записей по данному буферу нет, заносим в z[i][k] номер, превышающий верхнюю

    // границу интервала поиска

    if(!x[i]) continue;

    for(k=0;k<x[i];++k)

    {

    if(max==1)

    {

    if(PXSrchFld(tblh,rec[i][k],i,SEARCHFIRST))z[i][k]=high+1;

    else PXRecNum(tblh,&z[i][k]);

    }

    else

    if (z[i][k]<max)

    {

    PXRecGoto(tblh,max-1);

    if(PXSrchFld(tblh,rec[i][k],i,SEARCHNEXT)) z[i][k]=high+1;

    else PXRecNum(tblh,&z[i][k]);

    }

    }

    // 2) Для каждого поля определяем значение s[i]

    // Если хотя бы по одному полю произошел выход за пределы интервала поиска, значит поиск закончен

    s[i]=z[i][0];

    for(k=1;k<x[i];++k) if(s[i]>z[i][k]) s[i]=z[i][k];

    if(s[i]>high)

    {

    for(i=3;i<=nflds;++i)

    if(x[i])

    {

    for(j=0;j<x[i];++j) PXRecBufClose(rec[i][j]);

    free(rec[i]); free(z[i]);

    }

    free(s); free(rec); free(z);

    return;

    }

    }

    // 3), 4)

    // Проверяем совпадение значений s[i].

    // Если значения s[i] совпадают для всех полей по которым производится поиск, значит найдена искомая

    // ( т.е. удовлетворяющая заданным условиям ) запись, в этом случае вызываем функцию recprint

    // Определяем значение max для следующей итерации, это значение равно максимуму из s[i].

    for(i=3;!x[i];++i);

    max=s[i];


    for(++i,yes=1;i<nflds;++i)

    {

    if(!x[i]) continue;

    if(s[i]!=max) yes=0;

    if(s[i]>max) max=s[i];

    }

    if(yes) { PXRecGoto(tblh,max);++max;recprint(); }

    }

    }



    // bs2_inq.prj

    // BS2_INQ\bs2_inq.c

    // main()

    // программа обработки запросов для второй формы байтов состояний


    #include <stdio.h>

    #include <stdlib.h>

    #include <string.h>

    #include <fcntl.h>

    #include <sys/stat.h>

    #include <io.h>

    #include <alloc.h>

    #include "pxengine.h"

    #include "devices.h"


    TABLEHANDLE tblh; // дескриптор таблицы

    RECORDNUMBER low,high; // границы интервала поиска

    int nflds; // кол-во полей в таблице

    int handle; // дескриптор файла


    void interval(long date1,long date2,char *time1, char *time2); // определение границ интервала поиска

    void search(char *type); // поиск

    void recprint(void); // расшифровка записи БД в строку и запись этой строки в файл


    char *sag; // шапкa таблицы

    char *sag2; // шапкa таблицы-вторая строка

    char *inqstr; // строка запроса

    int length; // длина строки в таблице


    /* строка аргументов функции main:

    argv[1] - не используется

    argv[2] - вариант поиска; 0 - поиск по всей БД, 1 - поиск в едином интервале по дате и времени, 2 - поиск в интервале

    времени по каждому дню интервала дат, 3 - поиск за один день в интервале времени;

    argv[3] - дата;

    argv[4] - время;

    argv[5] - тип устройства */


    void main(int argc,char *argv[])

    {

    long date1,date2; // граничные значения интервала дат

    int a,i;

    char *c;

    RECORDHANDLE rech;

    RECORDNUMBER num;


    // открытие файла результатов запроса (inquiry.res) и запись в него строки запроса и шапки таблицы

    handle=open("inquiry.res",

    O_CREAT | O_TRUNC | O_WRONLY,S_IREAD | S_IWRITE );

    for(i=0;strcmp(devices[i].type,argv[5]) && i<20;++i);

    switch(i)

    {

    case 0: //ШЭ-00

    case 8: //ШЭ-08

    sag=(char *)calloc(81,1);

    strcpy(sag," ДАТА ВРЕМЯ ТИП_У П ВС СОСТОЯНИЕ_ШКАФА СЕТЬ1 СЕТЬ2 \r\n");

    break;

    case 1: //ШП-01

    case 9: //ШП-09

    sag=(char *)calloc(81,1);

    strcpy(sag," ДАТА ВРЕМЯ ТИП_У П ВС СОСТОЯНИЕ_ШКАФА \r\n");

    break;

    case 4: //ШК-04

    case 12: //ШК-12

    sag=(char *)calloc(100,1);

    strcpy(sag," ДАТА ВРЕМЯ ТИП_У П ВС КАНАЛЫ ЛИНИИ КНОН ФКДТ НСПД ФЗ ПИТАНИЕ Д-Ж К--Ы Б---ЫЕ К--Ы \r\n");

    break;

    case 2: //РМ-02

    sag=(char *)calloc(81,1);

    sag2=(char *)calloc(81,1);

    strcpy(sag, " ДАТА ВРЕМЯ ТИП_У П ВС БЛОКИРОВКА ЕСТЬ СВЯЗЬ С ВК \r\n");

    strcpy(sag2," ПЭВМ1 по ФК по ЛС1 по ЛС3 \r\n");

    break;

    case 10: //РМ-10

    sag=(char *)calloc(81,1);

    sag2=(char *)calloc(81,1);

    strcpy(sag, " ДАТА ВРЕМЯ ТИП_У П ВС БЛОКИРОВКА ЕСТЬ_СВЯЗЬ_С_ВК \r\n");

    strcpy(sag2," ПЭВМ2 по ФК по ЛС2 по ЛС4 \r\n");

    break;

    case 5: //РМ05Г

    case 13: //РМ13П

    sag=(char *)calloc(81,1);

    strcpy(sag," ДАТА ВРЕМЯ ТИП_У П ВС ЛИНИИ КНОН ФКДТ НСПД ФЗ \r\n");

    break;

    case 3: //В

    case 6: //КС1

    case 14: //КС2

    case 15: //АС

    sag=(char *)calloc(81,1);

    strcpy(sag," ДАТА ВРЕМЯ ТИП_У П ВС КАНАЛЫ ЛИНИИ ФКДТ НСПД ФЗ \r\n");

    break;

    case 7: //ВМ

    sag=(char *)calloc(81,1);

    strcpy(sag," ДАТА ВРЕМЯ ТИП_У П ВС АВАРИЯ ПИТАНИЯ НЕИСПР КАН КАНАЛЫ \r\n");

    break;

    case 16: //ВУ16

    case 17: //ВУ17

    case 18: //ВУ18

    case 19: //ВУ19

    sag=(char *)calloc(81,1);

    strcpy(sag," ДАТА ВРЕМЯ ТИП_У П ВС МАГИСТРАЛЬ ПРИЕМА КНОН \r\n");

    break;

    }

    length=strlen(sag);

    inqstr=(char *)calloc(length+1,1);

    memset(inqstr+1,' ',length);

    for(c=inqstr,i=1;i<argc;++i)

    {

    strcat(c," ");

    strcat(c,argv[i]);

    }

    inqstr[strlen(inqstr)]=' ';

    strcpy(inqstr+length-2,"\r\n");

    _write(handle,inqstr,length);

    _write(handle,sag,length);

    _write(handle,sag2,length);


    // инициализация работы с БД

    i=coreleft()/1024-50;

    if(i>256) i=256;

    if(a=PXSetDefaults(i,1,30,MAXLOCKHANDLES,3,SortOrderAscii)) printf("\n%s",PXErrMsg(a));

    if(a=PXInit()) printf("\n%s",PXErrMsg(a));

    if(a=PXTblOpen("fk",&tblh,0,0)) printf("\n%s",PXErrMsg(a));

    PXRecNFlds(tblh,&nflds);


    // главный блок


    if (argv[2][0]=='0')

    {

    low=1;PXTblNRecs(tblh,&high);

    search(argv[5]);

    }

    else

    if (argv[2][0]=='1')

    {

    PXDateEncode(atoi(argv[3]),atoi(argv[3]+3),atoi(argv[3]+6),&date1);

    PXDateEncode(atoi(argv[3]+11),atoi(argv[3]+14),atoi(argv[3]+17),&date2);

    interval(date1,date2,argv[4],argv[4]+9);

    search(argv[5]);

    }

    else

    if (argv[2][0]=='2')

    {

    PXDateEncode(atoi(argv[3]),atoi(argv[3]+3),atoi(argv[3]+6),&date1);

    PXDateEncode(atoi(argv[3]+11),atoi(argv[3]+14),atoi(argv[3]+17),&date2);

    interval(date1,date2,argv[4],argv[4]+9);

    if(low==1 && !high)

    if(low==1)

    {

    PXRecBufOpen(tblh,&rech);

    PXRecGet(tblh,rech);

    PXGetDate(rech,1,&date1);

    PXRecBufClose(rech);

    }

    PXTblNRecs(tblh,&num);

    if(high==num)

    {

    PXRecBufOpen(tblh,&rech);

    PXRecLast(tblh);

    PXRecGet(tblh,rech);

    PXGetDate(rech,1,&date2);

    PXRecBufClose(rech);

    }

    for(;date1<=date2;++date1)

    {

    interval(date1,date1,argv[4],argv[4]+9);

    if(low>high) continue;

    search(argv[5]);

    }

    }

    else

    if (argv[2][0]=='3')

    {

    PXDateEncode(atoi(argv[3]),atoi(argv[3]+3),atoi(argv[3]+6),&date1);

    interval(date1,date1,argv[4],argv[4]+9);

    search(argv[5]);

    }

    if(a=PXTblClose(tblh)) printf("\n%s",PXErrMsg(a));

    PXExit();

    close(handle);

    }



    // bs2_inq.prj

    // BS2_INQ\form2.c

    // form2()

    // расшифровка байтов состояния


    #include <string.h>

    #include "devices.h"


    void form2(char *Type,char *bytes,char *text)

    {

    /* Type; тип устройства

    bytes; нерасшифрованные байты состояния

    text; буфер для расшифрованных БС */

    int i;

    for(i=0;strcmp(devices [i].type,Type) && i<20;++i);

    switch(i)

    {

    case 0: // ШЭ-00


    if(bytes[5]&0x04) strcpy(text,"НЕИСПРАВЕН");

    else strcpy(text,"ИСПРАВЕН");

    if(bytes[4]&0x02) strcpy(text+16,"CETЬ1");

    break;

    case 8: // ШЭ-08


    if(bytes[5]&0x04) strcpy(text,"НЕИСПРАВЕН");

    else strcpy(text,"ИСПРАВЕН");

    if(bytes[4]&0x04) strcpy(text+22,"СЕТЬ2");

    break;


    case 1: // ШП-01

    case 9: // ШП-09


    if(bytes[5]&0x04) strcpy(text,"НЕИСПРАВЕН");

    else strcpy(text,"ИСПРАВЕН");

    break;


    case 4: // ШК-04

    case 12: // ШК-12


    if(bytes[4]&0x04) strcpy(text,"К1");

    if(bytes[4]&0x02) strcpy(text+2,"К2");

    if(bytes[4]&0x01) strcpy(text+4,"К3");

    if(bytes[5]&0x04) strcpy(text+7,"Л1");

    if(bytes[5]&0x02) strcpy(text+9,"Л2");

    if(bytes[5]&0x01) strcpy(text+11,"Л3");

    if(bytes[3]&0x01) strcpy(text+14,"КНОН");

    if(bytes[3]&0x02) strcpy(text+19,"ФКДТ");

    if(bytes[3]&0x04) strcpy(text+24,"НСПД");

    if(bytes[2]&0x01) strcpy(text+29,"ФЗ");

    if(bytes[12]&0x04) strcpy(text+32,"П1");

    if(bytes[12]&0x02) strcpy(text+34,"П2");

    if(bytes[12]&0x01) strcpy(text+36,"П3");

    if(bytes[11]&0x04) strcpy(text+40,"ДК1");

    if(bytes[11]&0x02) strcpy(text+43,"ДК2");

    if(bytes[11]&0x01) strcpy(text+46,"ДК3");

    if(bytes[10]&0x04) strcpy(text+51,"БК1");

    if(bytes[10]&0x02) strcpy(text+54,"БК2");

    if(bytes[10]&0x01) strcpy(text+57,"БК3");

    break;


    case 3: // В

    case 6: // КС1

    case 14: // КС2


    if(bytes[4]&0x04) strcpy(text,"К1");

    if(bytes[4]&0x02) strcpy(text+2,"К2");

    if(bytes[4]&0x01) strcpy(text+4,"К3");

    if(bytes[5]&0x04) strcpy(text+7,"Л1");

    if(bytes[5]&0x02) strcpy(text+9,"Л2");

    if(bytes[5]&0x01) strcpy(text+11,"Л3");

    if(bytes[3]&0x02) strcpy(text+14,"ФКДТ");

    if(bytes[3]&0x04) strcpy(text+19,"НСПД");

    if(bytes[2]&0x01) strcpy(text+24,"ФЗ");

    break;


    case 2: // РМ-02

    if(bytes[5]&0x01) strcpy(text+3,"ЕСТЬ");

    else strcpy(text+3,"НЕТ");

    if(bytes[3]&0x04) strcpy(text+17,"НЕТ");

    else strcpy(text+17,"ЕСТЬ");

    if(bytes[2]&0x02) strcpy(text+24,"НЕТ");

    else strcpy(text+24,"ЕСТЬ");

    break;


    case 10: // РМ-10

    if(bytes[5]&0x01) strcpy(text+3,"ЕСТЬ");

    else strcpy(text+3,"НЕТ");

    if(bytes[2]&0x01) strcpy(text+17,"НЕТ");

    else strcpy(text+17,"ЕСТЬ");

    if(bytes[2]&0x04) strcpy(text+24,"НЕТ");

    else strcpy(text+24,"ЕСТЬ");

    break;


    case 5: // РМ05Г

    case 13: // РМ13П


    if(bytes[5]&0x04) strcpy(text,"Л1");

    if(bytes[5]&0x02) strcpy(text+2,"Л2");

    if(bytes[5]&0x01) strcpy(text+4,"Л3");

    if(bytes[3]&0x01) strcpy(text+7,"КНОН");

    if(bytes[3]&0x02) strcpy(text+12,"ФКДТ");

    if(bytes[3]&0x04) strcpy(text+17,"НСПД");

    if(bytes[2]&0x01) strcpy(text+22,"ФЗ");

    break;


    case 7: // ВМ


    if(bytes[5]&0x02) strcpy(text,"АВАРИЯ ПИТАНИЯ");

    if(bytes[5]&0x04) strcpy(text+15,"НЕИСПР КАН");

    if(bytes[4]&0x04) strcpy(text+26,"К1");

    if(bytes[4]&0x01) strcpy(text+28,"К2");

    if(bytes[4]&0x02) strcpy(text+30,"К3");

    break;


    case 16: // ВУ16

    case 17: // ВУ17

    case 18: // ВУ18

    case 19: // ВУ19


    if(bytes[5]&0x04) strcpy(text,"НЕИСПР МАГ ПРИЕМА");

    if(bytes[3]&0x01) strcpy(text+18,"КНОН");

    break;


    case 15: // АС

    //Подкорректировать после согласования байта состояния

    if(bytes[4]&0x04) strcpy(text,"К1");

    if(bytes[4]&0x02) strcpy(text+2,"К2");

    if(bytes[4]&0x01) strcpy(text+4,"К3");

    if(bytes[5]&0x04) strcpy(text+7,"Л1");

    if(bytes[5]&0x02) strcpy(text+9,"Л2");

    if(bytes[5]&0x01) strcpy(text+11,"Л3");

    if(bytes[3]&0x02) strcpy(text+14,"ФКДТ");

    if(bytes[3]&0x04) strcpy(text+19,"НСПД");

    if(bytes[2]&0x01) strcpy(text+24,"ФЗ");

    break;

    }

    }



    // bs2_inq.prj

    //BS2_INQ\interval.c

    // interval()

    // определение граничных номеров интервала поиска


    #include <stdio.h>

    #include <stdlib.h>

    #include "pxengine.h"

    #include "def.h"


    void interval (long date1,long date2,char *time1,char *time2)

    {

    RECORDHANDLE rech;


    itoa(atoi(time2+6)+1,time2+6,10);


    PXRecBufOpen(tblh,&rech);

    PXPutDate(rech,1,date2);

    PXPutAlpha(rech,2,time2);

    if(PXRecInsert(tblh,rech))printf("error");

    PXRecNum(tblh,&high);

    --high;

    PXRecDelete(tblh);


    PXPutDate(rech,1,date1);

    PXPutAlpha(rech,2,time1);

    if(PXRecInsert(tblh,rech))printf("error");

    if(PXRecNum(tblh,&low))printf("error");

    PXRecDelete(tblh);


    PXRecBufClose(rech);

    }




    // bs2_inq.prj

    // recprint.c

    // BS2_INQ\recprint()

    // форматирование и запись в файл найденной строки


    #include <stdio.h>

    #include <io.h>

    #include <string.h>

    #include <stdlib.h>

    #include <dos.h>

    #include "pxengine.h"

    #include "def.h"

    #include "disp.h"


    void form2(char *,char *,char *);

    // расшифровка байтов состояния


    void recprint()

    {

    long date; // дата в формате БД

    int month,day,year; // расшифрованная дата

    char *string; // результирующая строка

    char *bytes; // нерасшифрованные байты состояния

    RECORDHANDLE rech; // дескриптор записи

    int a,i;

    union REGS r;


    string=(char *)calloc(length+1,1);

    bytes=(char *)calloc(45,1);

    PXRecBufOpen(tblh,&rech);

    PXRecGet(tblh,rech);

    PXGetDate(rech,1,&date);

    PXDateDecode(date,&month,&day,&year);

    sprintf(string,"%.02d\\%.02d\\%.04d ",month,day,year);

    PXGetAlpha(rech,2,9,string+11); //t

    PXGetAlpha(rech,3,6,string+20); //тип_у

    PXGetAlpha(rech,4,2,string+26); //п

    PXGetAlpha(rech,5,4,string+28); //вс

    PXGetAlpha(rech,6,45,bytes); //бс


    form2(string+20,bytes+16,string+31);

    for(i=0;i<=length;++i) if(string[i]=='\0') string[i]=' ';

    strcpy(string+length-2,"\r\n");

    _write(handle,string,strlen(string));

    PXRecBufClose(rech);

    free(bytes);

    free(string);


    // передача управления диспетчеру

    // (только для передачи cимвола на принтер!)

    // после каждой найденной записи

    //r.h.ah=1;

    // int86(DISP,&r,&r);

    }



    // bs2_inq.prj

    //BS2_INQ\search.c

    // search()

    // поиск


    #include <stdlib.h>

    #include "pxengine.h"

    #include "def.h"


    void search(char *type)

    {

    int a,i,y[2];

    RECORDHANDLE rec[2];

    RECORDNUMBER s[2],max=low;


    PXRecBufOpen(tblh,&rec[0]);

    PXRecBufOpen(tblh,&rec[1]);

    PXPutAlpha(rec[0],3,type);

    PXPutAlpha(rec[1],5,"БС ");

    y[0]=3;y[1]=5;s[1]=s[0]=0;


    while(1)

    {

    for(i=0;i<=1;++i)

    {

    if(max==1)

    {

    if (!(a=PXSrchFld(tblh,rec[i],y[i],SEARCHFIRST)))

    PXRecNum(tblh,&s[i]);

    }

    else

    if(s[i]<max)

    {

    PXRecGoto(tblh,max-1);

    if(!(a=PXSrchFld(tblh,rec[i],y[i],SEARCHNEXT)))

    PXRecNum(tblh,&s[i]);

    }

    if(a||s[i]>high)

    {

    PXRecBufClose(rec[0]);

    PXRecBufClose(rec[1]);

    return;

    }

    }


    if(s[1]==s[0]) { ++max; recprint(); }

    else if(s[1]>s[0]) max=s[1];

    else max=s[0];

    }

    }



    // bs3_inq.prj

    // BS3_INQ\bs3_inq.c

    // main()

    // программа обработки запросов для третьей формы байтов состояния

    // вызывается из:

    // 1) main.prj, mloop2.c, bszapros()

    // 2) makeinq.prj, makeinq.c, makeinq()


    #include <stdio.h>

    #include <fcntl.h>

    #include <sys/stat.h>

    Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17


    Приглашения

    09.12.2013 - 16.12.2013

    Международный конкурс хореографического искусства в рамках Международного фестиваля искусств «РОЖДЕСТВЕНСКАЯ АНДОРРА»

    09.12.2013 - 16.12.2013

    Международный конкурс хорового искусства в АНДОРРЕ «РОЖДЕСТВЕНСКАЯ АНДОРРА»




    Copyright © 2012 г.
    При использовании материалов - ссылка на сайт обязательна.