#include "complex.h" #include "shst_prt.h" #include "arh.h" void prt_pict1(void); extern resourceptr ekran; /* указатель на pесуpс ЭКРАН */ extern word_s ksmen; extern word_s color_of_text_menu; /* B UPR_MEN.C */ extern byte list_pr; extern struct par_prt par; extern struct prt_date tgd; extern struct prt_eq equip_p; char buf_h[15][3]={ "__", "06", "09", "11", "12", "13", "15", "17", "19", "21", "23", "01", "03", "05", "06" }; char * pr_buf; char * pr_buf1; char * pr_buf2; byte sp[]= {27,112,0,27,77,27,15}; byte sp2[]={18,27,112,0,27,77}; byte sp1[]={18}; /* вывод файла протокола на принтер */ /*----------------------------------*/ void PRINT_PROT(word_s nscr) /* 1 - "PRTN01.PRT" */ /* 2 - "PRTG00.PRT" */ /* 3 - "PRTG00.PPP" */ { word_s priz; word_s priz_1; /* если 1 - в тех.журнале печать значений.... */ /* ________ по всем часам смены в одну строку */ /* если 0 - в несколько строк................ */ word_s size,rez,list,k; word_s i,j; char LIST[15] = " Лист "; // char KONEC[23] = "\n КОНЕЦ ПРОТОКОЛА\n"; word_s dl_list = 64; /* 57; */ char * nam_pr[4]; word_s p_fp; /* указатель на файл пpотокола */ /* для переноса шапки на следующую страницу */ word_s fl; /* флаг шапки тех.журнала: 0-шапка из 5 строк, 1-из 3 строк */ word_s ch1,ch2,ch2_2; /* счетчики строк шапок из 5 строк и из 3 строк */ switch(list_pr) { case 1 : priz = 1; /* nam_pr = "PRTN01.PRT";*/ nam_pr[nscr]=par.path_name; break; case 2 : priz = 3; priz_1 = 0; /* nam_pr = "PRTG00.PRT";*/ nam_pr[nscr]=par.path_name; break; case 3 : priz = 3; priz_1 = 1; /* nam_pr = "PRTG00.PPP";*/ nam_pr[nscr]=par.path_name; break; case 5 : priz = 5; /* nam_pr = "EQUIP.PRT"; */ nam_pr[nscr]=par.path_name; break; case 6 : priz = 6; /* nam_pr ="Q.PRT"; */ nam_pr[nscr]=par.path_name; break; } rez = 0; if(( p_fp=sopen(nam_pr[nscr],O_RDONLY | O_BINARY,SH_DENYNO)) ==-1) { rez = ESC; request_resource(ekran, 0L); eprintf(color_of_text_menu,"ПЕЧАТЬ: нет файла протокола"); release_resource(ekran); } else{ /* 1 */ pr_buf = (char *) calloc(1,310); /* 210 */ pr_buf1 = (char *) calloc(1,310); pr_buf2 = (char *) calloc(1,310); if(pr_buf==NULL || pr_buf1==NULL || pr_buf2==NULL) { o_kz_al("pr_prot.c"); return; } gprintf(3,33," "); if(take_printer(0L)) { list_pr=0; free(pr_buf);free(pr_buf1);free(pr_buf2); close(p_fp); return;} if (priz==3 /*&& priz_1==1*/){ for (i=0;i<7;i++) if(prt_byte( sp[i])) { close(p_fp); goto FREE_T; } } else{ for (i=0;i<6;i++) if(prt_byte( sp2[i])) { close(p_fp); goto FREE_T; } } list = 0; i = 1; j = dl_list; if(priz==1) size=sizeof(struct prt_al_ev); else if(priz==0) size=sizeof(struct prt_al_ev); else if(priz==3 && priz_1==0) size=sizeof(struct prt_tg); else if(priz==3 && priz_1==1) size=sizeof(tgd); else if(priz==5) size=sizeof(struct prt_eq); else if(priz==6) size=89; if (priz==1){ /* priz!=3 */ i=read(p_fp,pr_buf1,size); /* чтение шапки протокола */ i=read(p_fp,pr_buf2,size); fl=0; ch1=0; ch2=0; ch2_2=0; } if (priz!=1) prt_byte('\n'); if (priz==6){prt_byte('\n');/* prt_byte('\n');*/} while(i){ /* 2 */ if(priz==1){ /* priz!=3 */ if(j==dl_list){ /* 3 */ list++; j = 0; /* после шапки протокола печатается dl_list строк */ /* ВСЕГО dl_list+5(шапка)+1(лист х) = xx СТРОК */ /*** начало листа ***/ prt_byte ('\n'); prt_byte ('\n'); /* лист xx */ for (k=0; k<15; k++) { prt_byte (LIST[k]);} itoa(list,pr_buf,10); for (k=0; k<2; k++) { prt_byte (*(pr_buf+k));} prt_byte ('\n'); /* 1-я строка протокола */ for (k=0; k