бесплатные рефераты

Автоматизированное рабочее место регистрации и документирования комплекса средств автоматизации

Аргумент нормальной функции распределения вероятностей равен 0,32. Используя таблицу интеграла Фурье, находим значение функции Рк = 0,63. Так как значение Рк попадает в интервал 0,35 < Рк < 0,65, то сетевой график не нуждается в оптимизации.

Рис.2.1 Сетевой график.

Приложение 1

Тексты программ

// inquiry. prj

// INQUIRY\inquiry. c

// main (), initsearch (),mem_args ()

// программа обработки запросов

#include <stdio. h>

#include <stdlib. h>

#include <string. h>

#include <fcntl. h>

#include <sys/stat. h>

#include <io. h>

#include <dos. h>

#include <alloc. h>

#include "pxengine. h"

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

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

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

int nformat; // формат результата

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

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

void search3 (char *argv [], int *x); // поиск с перечислениями

void search2 (char *argv [], int *x, int n); // поиск без перечислений

void search1 (void); // поиск только по дате и времени

void initsearch (char *argv [], int *x, int p, int n); // выбор варианта поиска

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

char sag [7] [81] ={

"ДАТА ВРЕМЯ ТЕКСТ СООБЩЕНИЯ \r\n",

"ДАТА ВРЕМЯ НАПР-Е А N РР ИСТ ВС ТЕКСТ СООБЩЕНИЯ \r\n",

"ДАТА ВРЕМЯ НАПР-Е N РР ТЕКСТ СООБЩЕНИЯ \r\n",

"ДАТА ВРЕМЯ НАПР-Е К-ВО ВС 1СЛ 2СЛ 3СЛ 4СЛ ТЕКСТ СООБЩЕНИЯ \r\n",

"ДАТА ВРЕМЯ ТИП-У П ВС ТЕКСТ СООБЩЕНИЯ \r\n",

"ДАТА ВРЕМЯ КСУМ0 КСУМ1 КСУМ2 КСУМ3 \r\n",

"ДАТА ВРЕМЯ КСУП1 КСУС1 КСУП2 КСУС2 КСУП3 КСУС3 \r\n"

}; // шапки таблиц

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

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

argv [1] - имя файла БД; или "!", означающий, что строка аргументов передается через память;

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

argv [3] - дата;

argv [4] - время;

argv [5] и далее - искомые значения полей БД (argv [5] - третьего поля, argv [6] - четвертого поля и т.д.); "-" обоз-

начает любое значение данного поля; в случае нескольких искомых значений по одному полю (перечисление) они разделяются запятыми; пробелы в значениях заменены на '_'. */

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

{

int *x; // x [i] - количество искомых значений по i-му полю

int n=0; // количество полей, для которых заданы значения для поиска

int p=0; // количество полей c перечислениями

// значения x,n,p определяются без учета полей даты и времени

char *name [] ={"all_inf","opi","shk","sbkdg","fk","ksum","ksum0"};

// имена баз данных

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

int a, i,j,k;

char *c;

char **mem_args (void);

RECORDHANDLE rech;

RECORDNUMBER num;

// Получение аргументов в случае их передачи через память

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

{

argv=mem_args ();

for (argc=0; argv [argc] ! =NULL; ++argc);

}

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

// произведен запрос

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

if (! strcmp (name [i],argv [1]) ||! strcmp (name [i],argv [1] +5))

{ nformat=i; break; }

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

// запись в него строк запроса и шапки таблицы

for (i=argc-1; argv [i] [0] =='-'; - -i) argc--;

handle=open ("inquiry. res",

O_CREAT | O_TRUNC | O_WRONLY,S_IREAD | S_IWRITE);

for (i=1,j=0; i<argc;)

{

inqstr= (char *) calloc (82,1);

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

inqstr [79] ='\r';

inqstr [80] ='\n';

inqstr [81] ='\0';

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

{

if (strlen (inqstr) +strlen (argv [i]) >78+j)

{

if (strlen (argv [i]) >50 && (strlen (inqstr) <70 || strlen (argv [i]) >78))

{

for (k=j+77-strlen (inqstr); argv [i] [k] ! =','; - -k);

strcat (c," ");

strncat (c,argv [i] +j,k+1-j);

j=k+1;

}

break;

}

strcat (c," ");

strcat (c,argv [i] +j);

j=0;

}

inqstr [strlen (inqstr)] =' ';

_write (handle, inqstr,81);

free (inqstr);

}

_write (handle,sag [nformat],81);

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

j=coreleft () /1024-50;

if (j>256) j=256;

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

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

if (a=PXTblOpen (argv [1],&tblh,0,0)) printf ("\n%s",PXErrMsg (a));

PXRecNFlds (tblh,&nflds);

x= (int *) calloc (argc+1,sizeof (int));

// разбор аргументов запроса

for (i=5; i<argc; ++i)

{

if (argv [i] [0] =='-') continue;

++n;

for (c=argv [i],j=1; *c! ='\0'; ++c)

{

if (*c==',') ++j;

if (*c=='_') *c=' ';

}

x [i-2] =j;

if (j>1) ++p;

}

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

switch (argv [2] [0])

{

case '0': low=1; PXTblNRecs (tblh,&high);

initsearch (argv,x,p,n);

break;

case '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);

initsearch (argv,x,p,n);

break;

case '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) break;

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;

initsearch (argv,x,p,n);

}

break;

case '3':

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

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

initsearch (argv,x,p,n);

}

free (x);

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

PXExit ();

close (handle);

}

// initsearch

// выбор функции поиска

void initsearch (char *argv [], int *x, int p, int n)

{

if (low>high) return;

if (p) search3 (argv+5,x);

else if (n) search2 (argv,x,n);

else search1 ();

}

// Функция mem_args возвращает адрес строки параметров в случае ее передачи через память

#include "conn_mem. h"

char **mem_args ()

{

char ***dat;

dat= (char ***) conn_mem ();

return dat [ARGS_OFF/4] ;

}

// bs2_inq. prj

// INQUIRY\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);

}

// inquiry. prj

// INQUIRY\recprint. c

// recprint ()

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

#include <stdio. h>

#include <mem. h>

#include <io. h>

#include <dos. h>

#include "pxengine. h"

#include "def. h"

#include "disp. h"

void recprint ()

{

long date;

int month,day,year;

int format [7] [7] = { {21,0,0,0,0,0,0},{21,28,30,35,38,42,46},

{21,29,34,37,0,0,0},{ 21,29,35,38,43,48,53 },

{ 21,27,29,33,0,0,0 },{ 21,28,35,42,49,0,0 },

{ 21,28,35,42,49,56,63 } };

static char string [82] ; // результирующая строка

RECORDHANDLE rech;

union REGS r;

int a, i;

memset (string,' ',82);

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,10,string+11);

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

PXGetAlpha (rech, i,sizeof (string) - format [nformat] [i-2],

string+format [nformat] [i-3] -1);

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

string [79] ='\r';

string [80] ='\n';

_write (handle,string,81);

PXRecBufClose (rech);

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

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

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

r. h. ah=1;

int86 (DISP,&r,&r);

}

// inquiry. prj

// INQUIRY\search12. c

// search1 (),search2 (), (search3 () см в файле search3. c)

// search1 - все записи в заданном интервале

// search2 - задано не более одного искомого значения по каждому полю

// search3 - более одного искомого значения xотя бы по одному полю

/* исходные данные:

int *x;, где x [i] - количество искомых значений по i-му полю (только для search2)

char *argv [] - см. комментарии в inquiry. c (только для search2)

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

#include <stdlib. h>

#include "pxengine. h"

#include "def. h"

void search2 (char *argv [], int *x, int n)

{

int a, i,j=0,*y;

int yes;

char *c,*c2;

char arg [10] ;

RECORDHANDLE *rec;

RECORDNUMBER *s,max=low;

s= (long *) calloc (n,sizeof (RECORDNUMBER));

rec= (unsigned int *) calloc (n,sizeof (RECORDHANDLE));

y= (int *) calloc (n,sizeof (int));

for (i=3; j<n; ++i)

{

if (! x [i]) continue;

PXRecBufOpen (tblh,rec+j);

PXPutAlpha (rec [j], i,argv [i+2]);

y [j++] =i;

}

while (1)

{

for (i=0; i<n; ++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)

{

free (s); free (rec); free (y);

return;

}

}

for (i=1,yes=1,max=s [0] ; i<n; ++i)

{

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

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

}

if (yes) { ++max; recprint (); }

}

}

void search1 (void)

{

RECORDNUMBER i;

for (i=low; i<=high; ++i)

{

recprint ();

PXRecNext (tblh);

}

}

// inquiry. prj

// INQUIRY\search3. c

// search3 ()

// поиск

/* исходные данные:

int *x;, где x [i] - количество искомых значений по i-му полю

char *args [] - искомые значения полей БД (args [0] - третьего поля, argv [1] - четвертого поля и т.д.);

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

// search1 - все записи в заданном интервале

// search2 - не более одного искомого значения по каждому полю

// search3 - более одного искомого значения xотя бы по одному полю

#include <stdlib. h>

#include <stdio. h>

#include "pxengine. h"

#include "def. h"

void search3 (char *args [], int *x)

{

/*

rec - массив массивов буферов для поиска, его размерность равна количеству полей в таблице. Размерность каждого из массивов rec [i] равна количеству искомых значений по i-му полю таблицы (то есть == х [i]). В каждый буфер заносится одно искомое значение (например, в rec [3] [0] - заносится первое искомое значение по 3-му полю таблицы).

Каждому буферу (rec [i] [j]) соответствует элемент массива массивов z (z [i] [j]), в котором хранится текущий номер

найденной записи по данному буферу (то есть записи, в соответствующем поле которой находится значение, равное значению, занесенному в буфер).

В массиве s хранятся текущие номера найденных строк по каждому полю (s [i] минимум из всех z [i] [j] по этому i).

max - текущий номер записи при поиске (то есть записи с номерами меньше max уже просмотрены).

*/

RECORDHANDLE **rec;

int i,j,k;

int yes;

char *c1,*c2;

char arg [10] ;

RECORDNUMBER *s,**z,max=low;

int a;

// выделение памяти под массивы rec,z,s

// и открытие буферов

s= (long *) calloc (nflds,sizeof (RECORDNUMBER));

rec= (unsigned int **) calloc (nflds,sizeof (RECORDHANDLE *));

z= (long **) calloc (nflds,sizeof (RECORDNUMBER *));

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

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>

#include <io. h>

#include "pxengine. h"

#include <string. h>

void form3 (char *,char *, int);

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

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

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

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

{

int a;

int i;

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

static char bytes [45] ; // буфер для нерасшифрованных байтов состояния

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

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

// открытие файла результатов изапись в него типа устройства

handle=open ("inquiry. res",

O_CREAT | O_TRUNC | O_WRONLY,S_IREAD | S_IWRITE);

write (handle,argv [1],strlen (argv [1]));

// if (strlen (argv [1]) ==1) write (handle," ",2);

// if (strlen (argv [1]) ==2) write (handle," ",1);

write (handle,"\r\n",2);

// поиск и обработка результатов поиска

/* находится последняя по времени запись байтов

состояния для данного устройства */

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

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

PXRecBufOpen (tblh,&rec);

PXPutAlpha (rec,5,"БС");

PXPutAlpha (rec,3,argv [1]);

if ( (a=PXSrchFld (tblh,rec,3,SEARCHFIRST)) ! =PXSUCCESS)

{ if (a==PXERR_RECNOTFOUND)

PXRecBufClose (rec);

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

PXExit ();

close (handle);

return;

}

else while (! (a=PXSrchFld (tblh,rec,3,SEARCHNEXT)));

PXRecGet (tblh,rec);

PXGetAlpha (rec,6,45,bytes);

form3 (argv [1],bytes+16,handle);

PXRecBufClose (rec);

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

PXExit ();

close (handle);

}

// bs3_inq. prj

// BS3_INQ\form3. c

// form3 ()

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

#include <io. h>

#include <string. h>

#include "devices. h"

#include <dos. h>

void form3 (char *Type,char *bytes, int handle)

{

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

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

handle - дескриптор файла результатов */

int i;

/*

struct date d;

struct time t;

getdate (&d);

gettime (&t);

z. bd1. date [0] =d. da_mon;

z. bd1. date [1] =d. da_day;

z. bd1. date [2] =d. da_year;

PXRecBufOpen (tblh,&rech);

PXRecGet (tblh,rech);

PXGetDate (rech,1,&date);

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

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

*/

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

switch (i)

{

case 0: // ШЭ-00

if (bytes [5] &0x04)

write (handle," Шкаф НЕИСПРАВЕН \r\n",76);

else

write (handle," Шкаф ИСПРАВЕН \r\n",76);

if (bytes [4] &0x02)

write (handle,"НЕИСПРАВНОСТЬ первичной сети электропитания СЕТЬ 1 \r\n",76);

break;

case 8: // ШЭ-08

if (bytes [5] &0x04)

write (handle," Шкаф НЕИСПРАВЕН \r\n",76);

else

write (handle," Шкаф ИСПРАВЕН \r\n",76);

if (bytes [4] &0x02)

write (handle,"НЕИСПРАВНОСТЬ первичной сети электропитания СЕТЬ 2 \r\n",76);

break;

case 1: // ШП-01

case 9: // ШП-09

if (bytes [5] &0x04)

write (handle," Шкаф НЕИСПРАВЕН \r\n",76);

else

write (handle," Шкаф ИСПРАВЕН \r\n",76);

break;

case 4: // ШК-04

case 12: // ШК-12

if (bytes [0] &0x01)

write (handle,"ОСНОВНОЙ - шкаф ШК-12 \r\n",76);

else

write (handle,"ОСНОВНОЙ - шкаф ШК-04 \r\n",76);

write (handle," \r\n",76);

write (handle," ТЕХНИЧЕСКОЕ СОСТОЯНИЕ ШКАФА \r\n",76);

write (handle," \r\n",76);

if (bytes [5] &0x01)

write (handle," Шкаф РАБОТОСПОСОБЕН \r\n",76);

if (bytes [5] &0x02)

write (handle," Шкаф НЕИСПРАВЕН \r\n",76);

if (bytes [5] &0x04)

write (handle," Шкаф ЗАБЛОКИРОВАН по НСД \r\n",76);

if ( (! (bytes [5] &0x01)) && (! (bytes [5] &0x02)) && (! (bytes [5] &0x04)))

write (handle," Шкаф ИСПРАВЕН \r\n",76);

write (handle," \r\n",76);

if (bytes [4] &0x01)

write (handle,"НЕИСПРАВЕН 1-й канал АД \r\n",76);

if (bytes [4] &0x02)

write (handle,"НЕИСПРАВЕН 2-й канал АД \r\n",76);

if (bytes [4] &0x04)

write (handle,"НЕИСПРАВЕН 3-й канал АД \r\n",76);

if (bytes [3] &0x01)

write (handle,"НЕИСПРАВЕН 1-й канал УХК \r\n",76);

if (bytes [3] &0x02)

write (handle,"НЕИСПРАВЕН 2-й канал УХК \r\n",76);

if (bytes [3] &0x04)

write (handle,"НЕИСПРАВЕН 3-й канал УХК \r\n",76);

if (bytes [2] &0x01)

write (handle,"НЕИСПРАВНОСТЬ логической части ШК \r\n",76);

if (bytes [2] &0x02)

{write (handle,"НЕИСПРАВЕН хотя бы один или несколько элементов ИГП \r\n",76);

write (handle,"Для уточнения считай ячейку ВБШК1. ПФЗ для ШК1 или ВБШК2. ПФЗ для ШК2 \r\n",76);

}

if (bytes [2] &0x04)

{write (handle,"НЕИСПРАВНО УХК - установлена единица в 8-ом разряде уточненого слова \r\n",76);

write (handle,"состояния УХК \r\n",76);

}

if (bytes [1] &0x01)

write (handle,"БОЗУ занято более 3-х секунд \r\n",76);

if (bytes [1] &0x02)

{write (handle,"НЕИСПРАВНО УХК (неправильное сочетание 3 и 10 разрядов уточненого слова \r\n",76);

write (handle,"состояния УХК) \r\n",76);

}

if (bytes [1] &0x04)

{write (handle,"УХК ЗАБЛОКИРОВАН по причине работы с носителем 83т015. Получен 9 или 11 \r\n",76);

write (handle,"разряд в ИСС УХК (см. п.4.7 1. протокола инв.30337) \r\n",76);

}

if ( (! (bytes [12] &0x01)) && (! (bytes [12] &0x02)))

write (handle,"ПУ-1 ИСПРАВЕН \r\n",76);

if (bytes [12] &0x01)

write (handle,"Нажата кнопка ОБНАРУЖЕНА НЕИСПРАВНОСТЬ на ПУ-1 \r\n",76);

if (bytes [12] &0x02)

write (handle,"Неисправно направление связи, соединяющее с ПУ-1 \r\n",76);

if ( (! (bytes [12] &0x04)) && (! (bytes [11] &0x01)))

write (handle,"ПУ-2 ИСПРАВЕН \r\n",76);

if (bytes [12] &0x04)

write (handle,"Нажата кнопка ОБНАРУЖЕНА НЕИСПРАВНОСТЬ на ПУ-2 \r\n",76);

if (bytes [11] &0x01)

write (handle,"Неисправно направление связи, соединяющее с ПУ-2 \r\n",76);

if ( (! (bytes [11] &0x04)) && (! (bytes [11] &0x02)))

write (handle,"ПУ-3 ИСПРАВЕН \r\n",76);

if (bytes [11] &0x02)

write (handle,"Нажата кнопка ОБНАРУЖЕНА НЕИСПРАВНОСТЬ на ПУ-3 \r\n",76);

if (bytes [11] &0x04)

write (handle,"Неисправно направление связи, соединяющее с ПУ-3 \r\n",76);

if ( (! (bytes [10] &0x01)) && (! (bytes [10] &0x02)))

write (handle,"ПУ-4 ИСПРАВЕН \r\n",76);

if (bytes [10] &0x01)

write (handle,"Нажата кнопка ОБНАРУЖЕНА НЕИСПРАВНОСТЬ на ПУ-4 \r\n",76);

if (bytes [10] &0x02)

write (handle,"Неисправно направление связи, соединяющее с ПУ-4 \r\n",76);

if (bytes [10] &0x04)

write (handle,"Неисправен 1-й канал схемных узлов БУ-695 \r\n",76);

if (bytes [9] &0x01)

write (handle,"Неисправен 2-й канал схемных узлов БУ-695 \r\n",76);

if (bytes [9] &0x02)

write (handle,"Неисправен 3-й канал схемных узлов БУ-695 \r\n",76);

if (bytes [9] &0x04)

write (handle,"Неисправен 1-й канал ПРЦ \r\n",76);

if (bytes [8] &0x01)

write (handle,"Неисправен 2-й канал ПРЦ \r\n",76);

if (bytes [8] &0x02)

write (handle,"Неисправен 3-й канал ПРЦ \r\n",76);

if (bytes [8] &0x04)

{write (handle,"Неисправно направление связи С1 по передаче от ВМ к ШК и/или по приему \r\n",76);

write (handle,"от ШК к ВМ и/или по причине не получения от ШК кодограмм по времени. \r\n",76);

write (handle,"Формирует ФК-читай слово памяти ВБШК1 (2). ПФЗ \r\n",76);

if (bytes [7] &0x01)

write (handle,"ШК забракован функциональной задачей - читай слово памяти ВБШК1 (2). ПФЗ \r\n",76);

write (handle," \r\n",76);

write (handle," ИНФОРМАЦИОННОЕ СОСТОЯНИЕ ШКАФА \r\n",76);

write (handle," \r\n",76);

if (bytes [26] &0x02)

write (handle," Шкаф НЕИСПРАВЕН ПО ИНФОРМАЦИОННОМУ СОСТОЯНИЮ \r\n",76);

else

write (handle," Шкаф ИСПРАВЕН ПО ИНФОРМАЦИОННОМУ СОСТОЯНИЮ \r\n",76);

write (handle," \r\n",76);

write (handle," Состояние БХХХХХ ШХХХХХ и КХХХХ \r\n",76);

write (handle," \r\n",76);

write (handle," БХХХХХ ШХХХХХ 1-го массива СХХ \r\n",76);

if ( (! (bytes [15] &0x01)) && (! (bytes [15] &0x02)))

write (handle," НЕ ЗАПИСАНЫ \r\n",76);

if ( (bytes [15] &0x01) && (bytes [15] &0x02))

write (handle," УНИЧТОЖЕНЫ \r\n",76);

if ( (bytes [15] &0x01) && (! (bytes [15] &0x02)))

write (handle," СОХРАНЕНЫ \r\n",76);

if ( (bytes [15] &0x02) && (! (bytes [15] &0x01)))

write (handle," РАЗРУШЕНЫ \r\n",76);

write (handle," БХХХХХ ШХХХХХ 2-го массива СХХ \r\n",76);

if ( (! (bytes [17] &0x04)) && (! (bytes [16] &0x01)))

write (handle," НЕ ЗАПИСАНЫ \r\n",76);

if ( (bytes [17] &0x04) && (bytes [16] &0x01))

write (handle," УНИЧТОЖЕНЫ \r\n",76);

if ( (bytes [17] &0x04) && (! (bytes [16] &0x01)))

write (handle," СОХРАНЕНЫ \r\n",76);

if ( (bytes [16] &0x01) && (! (bytes [17] &0x04)))

write (handle," РАЗРУШЕНЫ \r\n",76);

write (handle," БХХХХХ КХХХХ ОХХ \r\n",76);

if ( (! (bytes [18] &0x04)) && (! (bytes [18] &0x02)))

write (handle," НЕ ЗАПИСАНЫ \r\n",76);

if ( (bytes [18] &0x04) && (bytes [18] &0x02))

write (handle," УНИЧТОЖЕНЫ \r\n",76);

if ( (bytes [18] &0x02) && (! (bytes [18] &0x04)))

write (handle," СОХРАНЕНЫ \r\n",76);

if ( (bytes [18] &0x04) && (! (bytes [18] &0x02)))

write (handle," РАЗРУШЕНЫ \r\n",76);

write (handle," БХХХХХ КХХХХ УХХ \r\n",76);

if ( (! (bytes [19] &0x02)) && (! (bytes [19] &0x01)))

write (handle," НЕ ЗАПИСАНЫ \r\n",76);

if ( (bytes [19] &0x02) && (bytes [19] &0x01))

write (handle," УНИЧТОЖЕНЫ \r\n",76);

if ( (bytes [19] &0x01) && (! (bytes [19] &0x02)))

write (handle," СОХРАНЕНЫ \r\n",76);

if ( (bytes [19] &0x02) && (! (bytes [19] &0x01)))

write (handle," РАЗРУШЕНЫ \r\n",76);

write (handle," БХХХХХ КХХХХ УХ \r\n",76);

if ( (! (bytes [22] &0x02)) && (! (bytes [22] &0x01)))

write (handle," НЕ ЗАПИСАНЫ \r\n",76);

if ( (bytes [22] &0x02) && (bytes [22] &0x01))

write (handle," УНИЧТОЖЕНЫ \r\n",76);

if ( (bytes [22] &0x01) && (! (bytes [22] &0x02)))

write (handle," СОХРАНЕНЫ \r\n",76);

if ( (bytes [22] &0x02) && (! (bytes [22] &0x01)))

write (handle," РАЗРУШЕНЫ \r\n",76);

write (handle," БХХХХХ КХХХХ РХХ \r\n",76);

if ( (! (bytes [23] &0x01)) && (! (bytes [24] &0x04)))

write (handle," НЕ ЗАПИСАНЫ \r\n",76);

if ( (bytes [23] &0x01) && (bytes [24] &0x04))

write (handle," УНИЧТОЖЕНЫ \r\n",76);

if ( (bytes [24] &0x04) && (! (bytes [23] &0x01)))

write (handle," СОХРАНЕНЫ \r\n",76);

if ( (bytes [23] &0x01) && (! (bytes [24] &0x04)))

write (handle," РАЗРУШЕНЫ \r\n",76);

write (handle," \r\n",76);

write (handle," Состояние УХХХХХ ШХХХХХ и КХХХХ \r\n",76);

write (handle," \r\n",76);

write (handle," УХХХХХ ШХХХХХ 1-го массива СХХ \r\n",76);

if ( (! (bytes [14] &0x01)) && (! (bytes [15] &0x04)))

write (handle," НЕ ЗАПИСАНЫ \r\n",76);

if ( (bytes [14] &0x01) && (bytes [15] &0x04))

write (handle," УНИЧТОЖЕНЫ \r\n",76);

if ( (bytes [15] &0x04) && (! (bytes [14] &0x01)))

write (handle," СОХРАНЕНЫ \r\n",76);

if ( (bytes [14] &0x01) && (! (bytes [15] &0x04)))

write (handle," РАЗРУШЕНЫ \r\n",76);

write (handle," УХХХХХ ШХХХХХ 2-го массива СХХ \r\n",76);

if ( (! (bytes [16] &0x04)) && (! (bytes [16] &0x02)))

write (handle," НЕ ЗАПИСАНЫ \r\n",76);

if ( (bytes [16] &0x04) && (bytes [16] &0x02))

write (handle," УНИЧТОЖЕНЫ \r\n",76);

if ( (bytes [16] &0x02) && (! (bytes [16] &0x04)))

write (handle," СОХРАНЕНЫ \r\n",76);

if ( (bytes [16] &0x04) && (! (bytes [16] &0x02)))

write (handle," РАЗРУШЕНЫ \r\n",76);

write (handle," УХХХХХ КХХХХ ОХХ \r\n",76);

if ( (! (bytes [17] &0x02)) && (! (bytes [17] &0x01)))

write (handle," НЕ ЗАПИСАНЫ \r\n",76);

if ( (bytes [17] &0x02) && (bytes [17] &0x01))

write (handle," УНИЧТОЖЕНЫ \r\n",76);

if ( (bytes [17] &0x01) && (! (bytes [17] &0x02)))

write (handle," СОХРАНЕНЫ \r\n",76);

if ( (bytes [17] &0x02) && (! (bytes [17] &0x01)))

write (handle," РАЗРУШЕНЫ \r\n",76);

write (handle," УХХХХХ КХХХХ УХХ \r\n",76);

if ( (! (bytes [19] &0x04)) && (! (bytes [18] &0x01)))

write (handle," НЕ ЗАПИСАНЫ \r\n",76);

if ( (bytes [19] &0x04) && (bytes [18] &0x01))

write (handle," УНИЧТОЖЕНЫ \r\n",76);

if ( (bytes [19] &0x04) && (! (bytes [18] &0x01)))

write (handle," СОХРАНЕНЫ \r\n",76);

if ( (bytes [18] &0x01) && (! (bytes [19] &0x04)))

write (handle," РАЗРУШЕНЫ \r\n",76);

write (handle," УХХХХХ КХХХХ УХ \r\n",76);

if ( (! (bytes [21] &0x01)) && (! (bytes [22] &0x04)))

write (handle," НЕ ЗАПИСАНЫ \r\n",76);

if ( (bytes [21] &0x01) && (bytes [22] &0x04))

write (handle," УНИЧТОЖЕНЫ \r\n",76);

if ( (bytes [22] &0x04) && (! (bytes [21] &0x01)))

write (handle," СОХРАНЕНЫ \r\n",76);

if ( (bytes [21] &0x01) && (! (bytes [22] &0x04)))

write (handle," РАЗРУШЕНЫ \r\n",76);

write (handle," УХХХХХ КХХХХ РХХ \r\n",76);

if ( (! (bytes [23] &0x02)) && (! (bytes [23] &0x04)))

write (handle," НЕ ЗАПИСАНЫ \r\n",76);

if ( (bytes [23] &0x02) && (bytes [23] &0x04))

write (handle," УНИЧТОЖЕНЫ \r\n",76);

if ( (bytes [23] &0x02) && (! (bytes [23] &0x04)))

write (handle," СОХРАНЕНЫ \r\n",76);

if ( (bytes [23] &0x04) && (! (bytes [23] &0x02)))

write (handle," РАЗРУШЕНЫ \r\n",76);

write (handle," \r\n",76);

write (handle," НАВЯЗЫВАНИЕ ЛОЖНОЙ ИНФОРМАЦИИ \r\n",76);

write (handle," \r\n",76);

if (bytes [24] &0x02)

write (handle,"Есть НЛИ по массиву N1 шххххх СХХ \r\n",76);

if (bytes [24] &0x01)

write (handle,"Есть НЛИ по массиву N2 шххххх СХХ \r\n",76);

if (bytes [25] &0x04)

write (handle,"Есть НЛИ по массиву кхххх УХХ \r\n",76);

if (bytes [25] &0x01)

write (handle,"Есть НЛИ по массиву кхххх УХ \r\n",76);

if (bytes [26] &0x04)

write (handle,"Есть НЛИ по массиву кхххх РХХ \r\n",76);

if ( (! (bytes [24] &0x02)) && (! (bytes [24] &0x01)) && (! (bytes [25] &0x04))

&& (! (bytes [25] &0x02)) && (! (bytes [25] &0x01)) && (! (bytes [26] &0x04)))

write (handle,"НЛИ ОТСУТСТВУЕТ по всем массивам \r\n",76);

break;

case 3: // В

case 6: // КС1

case 14: // КС2

if (bytes [5] &0x04)

write (handle," КС НЕИСПРАВЕН \r\n",76);

else

write (handle," КС ИСПРАВЕН \r\n",76);

write (handle," \r\n",76);

if (bytes [19] &0x01)

write (handle,"Прием от АК1 трех кодограмм подряд с признаком К2 \r\n",76);

if (bytes [19] &0x02)

write (handle,"Прием от АК1 трех кодограмм подряд с ВПС=1010 \r\n",76);

if (bytes [19] &0x04)

write (handle,"Отсутствие информации от АК1 на входе ПУ более 12 сек \r\n",76);

if (bytes [18] &0x01)

write (handle,"Прием от АК1 трех кодограмм подряд с признаком получения УС \r\n",76);

if (bytes [18] &0x02)

write (handle,"Отсутствие связи в тракте от ЦКС1 до АК1 \r\n",76);

if (bytes [18] &0x04)

write (handle,"Отсутствие связи в тракте от ЦКС1 до ЦКС2 для АК1 \r\n",76);

if (bytes [17] &0x01)

write (handle,"Отсутствие связи в тракте от АК1 до ЦКС1 \r\n",76);

write (handle," \r\n",76);

if (bytes [23] &0x01)

write (handle,"Прием от АК3 трех кодограмм подряд с признаком К2 \r\n",76);

if (bytes [23] &0x02)

write (handle,"Прием от АК3 трех кодограмм подряд с ВПС=1010 \r\n",76);

if (bytes [23] &0x04)

write (handle,"Отсутствие информации от АК3 на входе ПУ более 12 сек \r\n",76);

if (bytes [22] &0x01)

write (handle,"Прием от АК3 трех кодограмм подряд с признаком получения УС \r\n",76);

if (bytes [22] &0x02)

write (handle,"Отсутствие связи в тракте от ЦКС1 до АК3 \r\n",76);

if (bytes [22] &0x04)

write (handle,"Отсутствие связи в тракте от ЦКС1 до ЦКС2 для АК3 \r\n",76);

if (bytes [21] &0x01)

write (handle,"Отсутствие связи в тракте от АК3 до ЦКС1 \r\n",76);

write (handle," \r\n",76);

if (bytes [26] &0x01)

write (handle,"Прием от АК6 трех кодограмм подряд с признаком К2 \r\n",76);

if (bytes [26] &0x02)

write (handle,"Прием от АК6 трех кодограмм подряд с ВПС=1010 \r\n",76);

if (bytes [26] &0x04)

write (handle,"Отсутствие информации от АК6 на входе ПУ более 12 сек \r\n",76);

if (bytes [25] &0x01)

write (handle,"Прием от АК6 трех кодограмм подряд с признаком получения УС \r\n",76);

if (bytes [25] &0x02)

write (handle,"Отсутствие связи в тракте от ЦКС1 до АК6 \r\n",76);

if (bytes [25] &0x04)

write (handle,"Отсутствие связи в тракте от ЦКС1 до ЦКС2 для АК6 \r\n",76);

if (bytes [24] &0x01)

write (handle,"Отсутствие связи в тракте от АК6 до ЦКС1 \r\n",76);

write (handle," \r\n",76);

if (bytes [16] &0x01)

write (handle,"Прием от ВПУ трех кодограмм подряд с признаком К2 \r\n",76);

if (bytes [16] &0x02)

write (handle,"Прием от ВПУ трех кодограмм подряд с ВПС=1010 \r\n",76);

if (bytes [16] &0x04)

write (handle,"Отсутствие информации от ВПУ на входе ПУ более 12 сек \r\n",76);

if (bytes [15] &0x01)

write (handle,"Прием от АК6 трех кодограмм подряд с признаком получения УС \r\n",76);

if (bytes [15] &0x02)

write (handle,"Отсутствие связи в тракте от ЦКС1 до ВПУ \r\n",76);

if (bytes [15] &0x04)

write (handle,"Отсутствие связи в тракте от ЦКС1 до ЦКС2 для ВПУ \r\n",76);

if (bytes [14] &0x01)

write (handle,"Отсутствие связи в тракте от ВПУ до ЦКС1 \r\n",76);

write (handle," \r\n",76);

if (bytes [17] &0x04)

write (handle,"Отсутствие связи в тракте от ЦКС1 до ПУ \r\n",76);

write (handle," \r\n",76);

if (bytes [10] &0x02)

write (handle,"Отсутствие приема кодограмм в заданный интервал времени \r\n",76);

write (handle," \r\n",76);

if ( (bytes [12] &0x07) && (! (bytes [11] &0x07)))

write (handle,"Прием кодограмм с признаком отсутствия связи от ПУ до М486 \r\n",76);

if ( (bytes [11] &0x07) && (! (bytes [12] &0x07)))

{

write (handle,"Прием кодограмм с признаком искажения информации от ЦКС до М486 и/или \r\n",76);

write (handle,"прием кодограмм с признаком отсутствия импульса БИ \r\n",76);

}

if ( (bytes [11] &0x07) && (bytes [12] &0x07))

{

write (handle,"Прием кодограмм с признаком отсутствия связи от ПУ до М486 и/или \r\n",76);

write (handle,"прием кодограмм с признаком искажения информации от ЦКС до М486 и/или \r\n",76);

write (handle,"прием кодограмм с признаком отсутствия импульса БИ \r\n",76);

}

break;

case 2: // РМ-02

write (handle," \r\n",76);

if (bytes [5] &0x01)

write (handle,"АРМ ЗАБЛОКИРОВАНО по ФК оператором \r\n",76);

write (handle," \r\n",76);

if (bytes [5] &0x04)

write (handle,"НЕТ СВЯЗИ МЕЖДУ ПЭВМ1 и ВК \r\n",76);

if (bytes [4] &0x02)

write (handle,"Нет связи с ВК по одной из линий связи ЛС1 или ЛС3 \r\n",76);

if (bytes [3] &0x04)

write (handle,"Нет связи с ВК по линии связи ЛС1 \r\n",76);

if (bytes [2] &0x02)

write (handle,"Нет связи с ВК по линии связи ЛС3 \r\n",76);

break;

case 10: // РМ-10

write (handle," \r\n",76);

if (bytes [5] &0x01)

write (handle,"АРМ ЗАБЛОКИРОВАНО по ФК оператором \r\n",76);

write (handle," \r\n",76);

if (bytes [5] &0x04)

write (handle,"НЕТ СВЯЗИ МЕЖДУ ПЭВМ2 и ВК \r\n",76);

if (bytes [4] &0x02)

write (handle,"Нет связи с ВК по одной из линий связи ЛС2 или ЛС4 \r\n",76);

if (bytes [2] &0x01)

write (handle,"Нет связи с ВК по линии связи ЛС2 \r\n",76);

if (bytes [2] &0x04)

write (handle,"Нет связи с ВК по линии связи ЛС4 \r\n",76);

break;

case 5: // РМ05Г

case 13: // РМ13П

if (bytes [19] &0x01)

write (handle,"ОСНОВНОЙ АРМ - РМ-13П \r\n",76);

else

write (handle,"ОСНОВНОЙ АРМ - РМ-05Г \r\n",76);

write (handle," \r\n",76);

if (bytes [5] &0x04)

write (handle," АРМ НЕИСПРАВЕН \r\n",76);

else

write (handle," АРМ ИСПРАВЕН \r\n",76);

write (handle," \r\n",76);

if (bytes [16] &0x02)

write (handle,"Основное АРМ ИСПРАВНО \r\n",76);

if (bytes [16] &0x01)

write (handle,"Основное АРМ НЕИСПРАВНО \r\n",76);

if (bytes [16] &0x04)

write (handle,"Основное АРМ ЗАБЛОКИРОВАНО \r\n",76);

if (bytes [15] &0x01)

write (handle,"Основное АРМ РАЗБЛОКИРОВАНО \r\n",76);

if (bytes [19] &0x04)

write (handle,"Резервное АРМ ИСПРАВНО \r\n",76);

if (bytes [19] &0x02)

write (handle,"Резервное АРМ НЕИСПРАВНО \r\n",76);

if (bytes [18] &0x01)

write (handle,"Резервное АРМ ЗАБЛОКИРОВАНО \r\n",76);

if (bytes [18] &0x02)

write (handle,"Резервное АРМ РАЗБЛОКИРОВАНО \r\n",76);

if (bytes [5] &0x01)

write (handle,"АРМ ЗАБЛОКИРОВАНО по ФК оператором \r\n",76);

write (handle," \r\n",76);

if (bytes [4] &0x02)

write (handle,"Неисправна одна из трех линий магистрали обмена \r\n",76);

else

write (handle,"Все три линии магистрали обмена исправны \r\n",76);

if (bytes [12] &0x04)

write (handle,"Неисправна 1-я линия магистрали приема \r\n",76);

if (bytes [12] &0x02)

write (handle,"Неисправна 2-я линия магистрали приема \r\n",76);

if (bytes [12] &0x01)

write (handle,"Неисправна 3-я линия магистрали приема \r\n",76);

if (bytes [10] &0x02)

write (handle,"Отсутствует прием информации в ВМ от данного АРМ-1 \r\n",76);

break;

case 7: // ВМ

if (bytes [5] &0x02)

write (handle,"Авария электропитания в одном или нескольких каналах ШП-614 \r\n",76);

if (bytes [4] &0x04)

write (handle,"Неисправность 1 канала ШП-614 \r\n",76);

if (bytes [3] &0x01)

write (handle,"Неисправность 2 канала ШП-614 \r\n",76);

if (bytes [3] &0x02)

write (handle,"Неисправность 3 канала ШП-614 \r\n",76);

if (bytes [3] &0x04)

write (handle,"Произошел ПРОГРАММНЫЙ СБОЙ \r\n",76);

if (bytes [2] &0x01)

write (handle,"Авария питания 1 канала \r\n",76);

if (bytes [2] &0x02)

write (handle,"Авария питания 1 канала \r\n",76);

if (bytes [2] &0x04)

write (handle,"Авария питания 1 канала \r\n",76);

if (bytes [0] &0x01)

write (handle,"Нарушена целостность программного изделия-кассеты КП-610 - \r\n",76);

write (handle,"подсчитанная контрольная сумма не совпадает с эталоном \r\n",76);

break;

case 16: // ВУ16

case 17: // ВУ17

case 18: // ВУ18

case 19: // ВУ19

if (bytes [5] &0x01)

write (handle,"ПУ заблокировано оператором по ФК \r\n",76);

if (bytes [5] &0x04)

write (handle,"Нажата КНОПКА ОБНАРУЖЕНИЯ НЕИСПРАВНОСТИ \r\n",76);

break;

case 15: // АС

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

// байта состояния

if (bytes [5] &0x04)

write (handle,"АРМ-РД НЕИСПРАВЕН - не работают обе ПЭВМ \r\n",76);

if (bytes [4] &0x01)

write (handle,"АРМ-РД РАБОТОСПОСОБЕН - работает одна из двух ПЭВМ \r\n",76);

if (bytes [4] &0x02)

write (handle,"Нет связи хотя бы по одной из линий связи ЛС1, ЛС2, ЛС3, ЛС4 \r\n",76);

if (bytes [4] &0x04)

write (handle,"Неисправен КСП-0 \r\n",76);

if (bytes [3] &0x01)

write (handle,"Неисправен КСП-1 \r\n",76);

if (bytes [3] &0x02)

write (handle,"Неисправен КСП-2 \r\n",76);

if (bytes [3] &0x04)

write (handle,"Нет связи по линии связи ЛС1 \r\n",76);

if (bytes [2] &0x01)

write (handle,"Нет связи по линии связи ЛС2 \r\n",76);

if (bytes [2] &0x02)

write (handle,"Нет связи по линии связи ЛС3 \r\n",76);

if (bytes [2] &0x04)

write (handle,"Нет связи по линии связи ЛС4 \r\n",76);

break;

}

}

// bs2_out. prj

// bs2_out. c

// main ()

// выдача результатов запроса по 2-й форме байтов состояния на экран

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

// на принтер

#include <dos. h>

#include "cxlkey. h"

#include "disp. h"

extern void resScr (void);

// выдача результатов запроса из файла на экран

extern void resPrn (void);

// выдача результатов запроса из файла на принтер

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

{

void z (void);

setkbloop (z);

if (argv [1] [0] =='э') resScr ();

else resPrn ();

}

void z (void)

{

union REGS r;

r. h. ah=0;

int86 (DISP,&r,&r);

}

#include <dos. h>

#include "cxlkey. h"

#include "disp. h"

extern void resScr (void);

// выдача результатов запроса из файла на экран

extern void resPrn (void);

// выдача результатов запроса из файла на принтер

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

{

void z (void);

setkbloop (z);

if (argv [1] [0] =='э') resScr ();

else resPrn ();

}

void z (void)

{

union REGS r;

r. h. ah=0;

int86 (DISP,&r,&r);

}

// inq_out. prj

// INQ_OUT. C

// main ()

// выдача результатов запроса на экран (из файла)

// или форматирование и постановка в очередь для выдачи на принтер

#include <string. h>

#include <process. h>

#include "cxlkey. h"

#include "cxldef. h"

extern void resScr (void);

// выдача результатов запроса из файла на экран

extern void resPrn (void);

// выдача результатов запроса из файла на принтер

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

{

void z (void);

setkbloop (z);

if (argv [1] [0] =='э') resScr ();

else resPrn ();

}

#include <dos. h>

#include "disp. h"

void z (void)

{

union REGS r;

r. h. ah=0;

int86 (DISP,&r,&r);

}

// inq_out. prj

// res_scr. C

// res_scr ()

// выдача результатов запроса на экран (из файла)

#include <stdio. h>

#include <string. h>

#include "cxlwin. h"

#include "cxlkey. h"

#include "cxlvid. h"

#define LEN 81

#define TXTATTR _CYAN

#define UP 0x4800

#define DOWN 0x5000

#define PGUP 0x4900

#define PGDOWN 0x5100

#define ESC 0x011b

void resScr (void)

{

FILE *f; // дескриптор файла результатов

int down; // номер текущей строки в файле

int ch; // код клавиши

int i;

char string [LEN] ;

int mwup; // количество строк над основным окном

// вывод на экран строки запроса и шапки таблицы

f=fopen ("inquiry. res","r++");

fgets (string,LEN,f);

for (mwup=0; strncmp (string+3,"ДАТА",4); ++mwup)

_LGREY);

wopen (mwup,0,mwup,79,5,YELLOW|_BLUE,YELLOW|_BLUE);

wprintf ("%.78s",string);

// основное окно

wopen (++mwup,0,25,79,5,LCYAN|_BLUE,TXTATTR);

// wshadow (LGREY);

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

for (down=mwup; down<25 && fgets (string,LEN,f) ! =NULL; ++down)

wprints (down-mwup,1,TXTATTR,string);

hidecur ();

// цикл просмотра результатов

while ( (ch=getxch ()) ! =ESC)

switch (ch)

{

case UP: if (down<=25) break;

down--;

fseek (f, (long) (down-25+mwup) *LEN,0);

fgets (string,LEN,f);

wscroll (1,D_DOWN);

wprints (0,1,TXTATTR,string);

break;

case DOWN: if (fseek (f, (long) down*LEN,0)) break;

if (fgets (string,LEN,f) ==NULL) break;

wscroll (1,D_UP);

wprints (24-mwup,1,TXTATTR,string);

down++;

break;

case PGUP: for (i=0; i<=24-mwup; ++i)

{

if (down<=25) break;

down--;

fseek (f, (long) (down-25+mwup) *LEN,0);

fgets (string,LEN,f);

wscroll (1,D_DOWN);

wprints (0,1,TXTATTR,string);

}

break;

case PGDOWN: for (i=0; i<=24-mwup; ++i)

{

if (fseek (f, (long) down*LEN,0)) break;

if (fgets (string,LEN,f) ==NULL) break;

wscroll (1,D_UP);

wprints (24-mwup,1,TXTATTR,string);

down++;

}

break;

}

fclose (f);

wcloseall ();

}

// bs2_out. prj

// res_scr_. c

// res_scr ()

// выдача результатов запроса по 2-й форме байтов состояния на экран

// (из файла)

#include <stdio. h>

#include <string. h>

#include "cxlwin. h"

#include "cxlkey. h"

#include "cxlvid. h"

#define LEN 100

#define TXTATTR _CYAN

#define UP 0x4800

#define DOWN 0x5000

#define PGUP 0x4900

#define PGDOWN 0x5100

#define RIGHT 0x4d00

#define LEFT 0x4b00

#define HOME 0x4700

#define END 0x4F00

#define ESC 0x011b

FILE *f; // дескриптор файла результатов

int down; // номер текущей строки в файле

char string [LEN] ;

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

int w1; // дескриптор окна

void screen_move (int right);

void resScr (void)

{

int right=0; // горизонтальное смещение

int ch; // код клавиши

int i;

// вывод на экран строки запроса и шапки таблицы

f=fopen ("inquiry. res","r++");

wopen (0,0,0,79,5,BLUE|_LGREY,BLUE|_LGREY);

fgets (string,LEN,f);

wprints (0,1,BLUE|_LGREY,string);

w1=wopen (1,0,1,79,5,YELLOW|_BLUE,YELLOW|_BLUE);

fgets (string,LEN,f);

wprints (0,1,YELLOW|_BLUE,string);

length=strlen (string) +1;

// основное окно

wopen (2,0,25,79,5,LCYAN|_BLUE,TXTATTR);

hidecur ();

// wshadow (LGREY);

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

for (down=2; down<25 && fgets (string,LEN,f) ! =NULL; ++down)

{

string [right+80] ='\0';

wprints (down-2,1,TXTATTR,string);

}

// цикл просмотра результатов

while ( (ch=getxch ()) ! =ESC)

switch (ch)

{

case UP: if (down<=25) break;

down--;

fseek (f, (long) (down-23) *length,0);

fgets (string,LEN,f);

string [right+79] ='\0';

wscroll (1,D_DOWN);

wprints (0,1,TXTATTR,string+right);

break;

case DOWN: if (fseek (f, (long) down*length,0)) break;

if (fgets (string,LEN,f) ==NULL) break;

wscroll (1,D_UP);

string [right+80] ='\0';

wprintc (22,0,TXTATTR,' ');

down++;

break;

case PGUP: for (i=0; i<=22; ++i)

{

if (down<=25) break;

down--;

fseek (f, (long) (down-23) *length,0);

fgets (string,LEN,f);

wscroll (1,D_DOWN);

string [right+80] ='\0';

wprints (0,1,TXTATTR,string+right);

wprintc (1,0,TXTATTR,' ');

}

break;

case PGDOWN: for (i=0; i<=22; ++i)

{

if (fseek (f, (long) down*length,0)) break;

if (fgets (string,LEN,f) ==NULL) break;

wscroll (1,D_UP);

string [right+80] ='\0';

wprints (22,1,TXTATTR,string+right);

down++;

}

break;

case LEFT: if (right) screen_move (--right); break;

case RIGHT: if (right+82<length) screen_move (++right); break;

case END: if (right+82<length) screen_move (right=length-82); break;

case HOME: if (right) screen_move (right=0); break;

}

fclose (f);

wcloseall ();

}

// горизонтальная прокрутка

void screen_move (int right)

{

int i;

fseek (f,length,0);

fgets (string,LEN,f);

string [right+80] ='\0';

wwprints (w1,0,1,YELLOW|_BLUE,string+right);

if (down-22>2) fseek (f, (long) (down-22) *length,0);

for (i=0; i<=22 && fgets (string,length,f) ! =NULL; ++i)

{

string [right+80] ='\0';

wprints (i,1,TXTATTR,string+right);

}

}

#include <stdio. h>

#include <string. h>

#include "cxlwin. h"

#include "cxlkey. h"

#include "cxlvid. h"

#define LEN 80

#define ESC 0x011b

FILE *f; // дескриптор файла результатов

char string [LEN] ; // буфер для чтения из файла

void resScr (void)

{

int i;

int maxlen; // максимальная длина строки в файле результатов запроса

int startpos; // столбец окна с которого печатается текст

// открытие файла результатов запроса и

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

f=fopen ("inquiry. res","r++");

for (maxlen=0, i=0; fgets (string,LEN,f) ! =NULL; ++i)

if (strlen (string) >maxlen) maxlen=strlen (string);

fseek (f,0,0);

// черный фон

wopen (0,0,24,79,5,0,0);

// открытие окна

wopen ( (20-i) /2,5, (20-i) /2+i+2,75,1,YELLOW|_BLUE,_CYAN);

hidecur ();

// чтение типа устройства и его использование в качестве титула окна

fgets (string+1,LEN,f);

string [0] =' ';

for (i=2; i<=6; ++i)

if (string [i] =='\r' || string [i] =='\n') string [i] =' ';

wtitle (string,TCENTER,_LGREY);

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

startpos= (70-maxlen) /2;

for (i=2; fgets (string,LEN,f) ! =NULL; ++i)

{

wgotoxy (i,startpos);

wprintf ("%s",string);

}

// окно находится на экране пока не будет нажато ESC

while (getxch () ! =ESC);

fclose (f);

wcloseall ();

}

Список литературы

Глушков В.М. “Основы безбумажной информатики", М. Наука, 1987 г.;

“Человек и вычислительная техника" под ред. Глушкова В.М., М. Наука, 1971 г.;

“Организационные вопросы автоматизации управления” (перевод с английского) Глушкова В.М., М. Экономика, 1972 г.;

Мартин Дж. “Организация баз данных в вычислительных системах", М. Мир, 1980 г.;

Бойко В.В., Савинков В.М. “Проектирование баз данных информационных систем”, М. Финансы и статистика, 1989 г.;

Шураков В.В. “Надежность программного обеспечения систем обработки данных”, М. Финансы и статистика, 1987 г.;

Уинер Р. “Язык Турбо СИ", М. Мир, 1991 г.;

Paradox Engine. Документация: описание, список функций для создания и работы с БД.;

“Турбо СИ. Описание редактора, стандартные и графические функции”, изд. Иститута проблем информатики, М. 1989 г.;

Хьюз Дж., Мичтом Дж. “Структурный подход к программированию”. Изд. Мир, М., 1980 г.;

“Выполнение организационно-экономической части дипломных проектов". Учебное пособие, изд. МИРЭА, 1994 г.;

“Выполнение организационно-экономической части дипломных проектов". Учебное пособие, изд. МИРЭА, 1987 г.;

“Сетевые графики в планировании". Разумов И.М., Белова Л.Д., и др., М. Высшая школа, 1981 г.;

“Основы финансового менеджмента. Как управлять капиталом? ” Балабанов И.Т., М. “Финансы и статистика”, 1994 г.;

Мотузко Ф.Я. “Охрана труда", М. Высшая школа, 1969 г.;

Самгин Э.Б. “Освещение рабочих мест”, изд. МИРЭА, 1989 г.;

Сибаров Ю.Б. “Охрана труда в вычислительных центрах" и др., М. Машиностроение, 1990 г.;

Методические указания по дипломному проектированию раздела “Охрана труда и окружающей среды" под ред. Мотузко Ф.Я., МИРЭА, 1980 г.;

“Основы инженерной психологии” под ред. Ломова Б.Ф., М. Высшая школа, 1986 г.;

Демиденко и др. “Защита объектов народного хозяйства от оружия массового поражения" Справочник, Киев "Высшая школа" 1989 г.;

Методические указания по безопасности жизнедеятельности. “Особенности ведения аварийно-спасательных работ на промышленном объекте в ЧС мирного времени”, изд. МИРЭА.;

Атаманюк В.Г., Ширшев Л.Г. и др. “Гражданская оборона. Учебник для ВТУЗов”, М. Высшая школа. 1987г.;

“Введение в практическую эргономику. Учебное пособие. ” под ред. Зинченко В.П., Моргунова Е.Б., изд. МИРЭА, 1990г.

Страницы: 1, 2, 3, 4, 5, 6, 7


© 2010 РЕФЕРАТЫ