Кн | s tкрij | ij | Кн | s tкрij | 1-2 | 1,0 | 1,0 | 10-12 | 1,0 | 0,04 | 2-3 | 1,0 | 0,16 | 10-14 | 0,2 | 0,64 | 2-4 | 0,08 | 0,16 | 11-13 | 0,1 | 0,16 | 3-5 | 1,0 | 0,04 | 12-15 | 0,23 | 0,64 | 4-6 | 0,1 | 0,04 | 12-16 | 1,0 | 0,64 | 5-7 | 1,0 | 0,16 | 13-17 | 0,16 | 0,36 | 6-8 | 0, 19 | 0,64 | 14-17 | 0,29 | 0,16 | 7-9 | 1,0 | 1,0 | 15-17 | 0,28 | 0,04 | 8-10 | 0,2 | 0,04 | 16-17 | 1,0 | 0,16 | 9-10 | 1,0 | 0,04 | 17-18 | 1,0 | 1,96 | 10-11 | 0,02 | 0,04 | 18-19 | 1,0 | 1,44 |
|
|
| 19-20 | 1,0 | 0,16 |
Аргумент нормальної функції розподілу ймовірностей дорівнює 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, "% .02 d \ \% .02 d \ \% .04 d", 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); / / Передача управління диспетчеру / / (Тільки для передачі Символи на принтер!) / / Після кожної знайденої запису rh ah = 1; int86 (DISP, & r, & r); } / / Inquiry. prj / / INQUIRY \ search12. c / / Search1 (), search2 (), (search3 () см в файлі search3. c) / / Search1 - всі записи в заданому інтервалі / / Search2 - задано не більше одного шуканого значення по кожному полю / / Search3 - більше одного шуканого значення Хоч би по одному полю / * Вихідні дані: 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 - більше одного шуканого значення Хоч би по одному полю # 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, "% .02 d \ \% .02 d \ \% .04 d", 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); / / Передача управління диспетчеру / / (Тільки для передачі Символи на принтер!) / / Після кожної знайденої запису / / Rh 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, "% .02 d \ \% .02 d \ \% .04 d", 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, "несправний третій канал АТ \ 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, "несправний третій канал УХК \ 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, "Несправний третій канал ПРЦ \ 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; rh 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; rh 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; rh 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) { wopen (mwup, 0, mwup, 79,5, BLUE | _LGREY, BLUE | _LGREY); wprintf ("% .79 s", string); fgets (string, LEN, f); } wopen (mwup, 0, mwup, 79,5, YELLOW | _BLUE, YELLOW | _BLUE); wprintf ("% .78 s", 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р.
Додати в блог або на сайт
Цей текст може містити помилки. Програмування, комп'ютери, інформатика і кібернетика | Реферат 919.9кб. | скачати
Схожі роботи: Автоматизоване робоче місце реєстрації й документування комплексу засобів автоматизації Автоматизоване робоче місце Автоматизоване робоче місце бухгалтера Автоматизоване робоче місце менеджера Автоматизоване робоче місце менеджера з реклами Автоматизоване робоче місце та перспективи його розвитку Автоматизоване робоче місце Логістика ЗАТ Пріосколье Автоматизоване робоче місце оператора автоматизованого переговорного пункту та інформаційної Автоматизоване робоче місце інженера станції технічного обслуговування автомобілів
|