#include "complex.h" #include "arh.h" #include "screen.h" #include "q.h" word_s tekmec(word_s god,word_s mes); float valtec(analog *pt, word_s cod); void t_loct(long *t_l,struct tm *ttm_l); void wrtxt(word colf,word colb,word x,word y,char *fmt,...); int form_doc_eq(int dden); char * frmt_prt_q(int wide, float zn); void formula_bl(int st, int cl); void formula31(alg_str *palg, int st, int cl); void formula_sum(alg_str *palg, int st, int cl); void print_nom_doc(int nom); extern st_blank *p_st_bl; extern di_blank *p_di_bl; #if(FORMDBF) extern void form_q_prt_dbf(byte *buf_fl, int day, int mon); #endif #if defined(MNEMO) int prt_byte_mnem(byte c); /////byte cntrlpr_q_din[] = { 27, 112, 0, 27, 77, 27, 15, 27, 108, 20 }; extern byte color[]; #endif char *immec[12]={"ﭢp","䥢p","p","p","","","","","ᥭp","p","p","p"}; byte cntrlpr_q_din[] = { 27, 112, 0, 27, 77, 27, 15, 27, 108, 20 }; #if (REMONT) extern digit **d_ptr_r; /* 㪠. .. 㪠⥫ */ extern int kpar_r; char *remo[4]={" ","⥪騩","।",". "}; char *sss1[10]={" \n\r", " \n\r", " -67-1/1 ''\n\r", " ", "ͻ\n\r", " \n\r", " Ĵ \n\r", " \n\r", " . . \n\r", "Ķ\n\r"}; char *sss2[3]= {"ͼ\n\r", "\n\r", " 堭\n\r"}; #if (COUNT1) char *sut1[9]={" \n\r", " \n\r", " -67-1/1 ''\n\r", " ", "ͻ\n\r", " \n\r", " Ķ\n\r", " 1 2 3 4 5 6 7 8 910111213141516171819202122232425262728293031\n\r", "Ķ\n\r"}; char *sut2[3]={"ͼ\n\r", "\n\r", " 堭\n\r"}; #endif #endif byte kol_dn_mes[16] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 }; //------------------------------------------------------------------- int form_doc_eq(int dden) { int fh, i, j, k, n, pr_yes; byte *buf_fl, *buf_bl; int l_fl, dl_zp, dl_bl, nom_fl; struct tm * sttm; time_t t_zap, t_mes; time_t t_edit; // ஫ edit.bin m_kod *parm; analog *pa; float workf; int god, mes, den, ddoc, mdoc, gdoc; char *frmtq, svc; byte namf[16]; if(dden < 0) pr_yes=1; else { pr_yes=0; dden=-dden; } // . . ६ ஫ ⮢୮ ᥩ 娢 sttm=(struct tm *)malloc(sizeof(struct tm)); //!! if(sttm==NULL) return -1; time(&t_mes); t_mes = t_mes+3600L*24*dden; t_loct(&t_mes,sttm); if(sttm->tm_hour < p_st_bl->chas) { // ᫨ . ⪨ . t_mes = t_mes-3600L*24; t_loct(&t_mes,sttm); } t_edit=t_mes; // ஫ edit.bin ddoc=sttm->tm_mday; mdoc=sttm->tm_mon+1; gdoc=sttm->tm_year; den=sttm->tm_mday; // 㬥 sttm->tm_mday=p_st_bl->den; sttm->tm_hour=p_st_bl->chas; sttm->tm_sec = sttm->tm_min = 0; if(t_mes <= mktime(sttm)) { // ᫨ . . ।. sttm->tm_mon--; if(sttm->tm_mon < 0) { sttm->tm_mon=11; sttm->tm_year--; } } god=sttm->tm_year; mes=sttm->tm_mon+1; t_mes=mktime(sttm) - 1800L; free(sttm); //!! if(god%4) kol_dn_mes[2]=28; else kol_dn_mes[2]=29; // ⮢ di_blank for(i=0; i < p_st_bl->kolstr; i++) for(j=0; j < p_st_bl->kolstl; j++) { if(p_di_bl[i][j].tip == CNST) continue; p_di_bl[i][j].zn=0.0; if(p_di_bl[i][j].tip==MESN || p_di_bl[i][j].tip==SUTN) p_di_bl[i][j].kols=0; else p_di_bl[i][j].kols=-1; } // 롮ઠ 娢 dl_zp=mc.dlbl; // dl_bl=dl_zp*24; // nom_fl=tekmec(god,mes-1); // 䠩 筮 娢 buf_bl=(byte *)malloc(dl_bl); //!! if(buf_bl==NULL) return -1; fh=sopen(mec[nom_fl].ifl,O_BINARY|O_RDONLY,SH_DENYNO); if(fh==-1) return -1; lseek(fh,(long)dl_bl*(p_st_bl->den-1)+(long)dl_zp*p_st_bl->chas,SEEK_SET); for(i=p_st_bl->den; ; i++) { read(fh,buf_bl,dl_bl); if(i==(int)kol_dn_mes[mes]) { // ᫨ ⠭ ᫥ ⪨ close(fh); nom_fl=(nom_fl+1)%NMonsArh; fh=sopen(mec[nom_fl].ifl,O_BINARY|O_RDONLY,SH_DENYNO); if(fh==-1) { free(buf_bl); return -1; } //!! if(p_st_bl->chas != 0) read(fh,buf_bl+dl_zp*(24-p_st_bl->chas),dl_zp*p_st_bl->chas); } for(j=0; j < 24; j++) { t_zap = *(time_t *)(buf_bl+ dl_zp*j); if(t_zap < t_mes) continue; parm=(m_kod *)(buf_bl+ dl_zp*j + sizeof(long)); for(k=0; kkolstr; k++) for(n=0; nkolstl; n++) { if(p_di_bl[k][n].tip==MESN || p_di_bl[k][n].tip==SUTN && i==den) { if(parm[p_di_bl[k][n].ind].count) continue; pa=(c_ptr+p_di_bl[k][n].nomk)->a_ptr+p_di_bl[k][n].nomz; workf=valtec(pa,parm[p_di_bl[k][n].ind].zn); if(pa->sum_ysr==0) { // ᫨ ࠡ⪨ p_di_bl[k][n].zn=workf; p_di_bl[k][n].kols=1; } else { p_di_bl[k][n].zn+=workf; p_di_bl[k][n].kols++; } // ⠫ } } } if(i==den) break; // ᫨ ࠡ⠭ ᫥ ⪨ if(i==(int)kol_dn_mes[mes]) i=0; // ᫨ ⠭ ।. - ᫥. } close(fh); //-------------- ⠢ edit.bin if((fh = sopen("edit.bin",O_BINARY|O_RDONLY,SH_DENYNO)) != -1) { l_fl=(int)filelength(fh); lseek(fh,(long)(l_fl-dl_zp),SEEK_SET); read(fh,buf_bl,dl_zp); close(fh); t_zap = *(time_t *)buf_bl; if(t_zap >= t_mes && t_zap < t_edit) { sttm=(struct tm *)malloc(sizeof(struct tm)); //!! if(sttm==NULL) return -1; t_loct(&t_zap,sttm); parm=(m_kod *)(buf_bl + sizeof(long)); for(k=0; kkolstr; k++) for(n=0; nkolstl; n++) { if(p_di_bl[k][n].tip==MESN || p_di_bl[k][n].tip==SUTN && sttm->tm_mday==den) { if(parm[p_di_bl[k][n].ind].count) continue; pa=(c_ptr+p_di_bl[k][n].nomk)->a_ptr+p_di_bl[k][n].nomz; workf=valtec(pa,parm[p_di_bl[k][n].ind].zn); if(pa->sum_ysr==0) { // ᫨ ࠡ⪨ p_di_bl[k][n].zn=workf; p_di_bl[k][n].kols=1; } else { p_di_bl[k][n].zn+=workf; p_di_bl[k][n].kols++; } // ⠫ } } free(sttm); //!! } } //-------------------------------------- free(buf_bl); //!! // ஫ ⮢୮ । for(k=0; kkolstr; k++) for(n=0; nkolstl; n++) { if(p_di_bl[k][n].tip != MESN && p_di_bl[k][n].tip != SUTN) continue; if(p_di_bl[k][n].kols==0) { p_di_bl[k][n].kols=-1; continue; } pa=(c_ptr+p_di_bl[k][n].nomk)->a_ptr+p_di_bl[k][n].nomz; if(pa->sum_ysr == 1) p_di_bl[k][n].zn /= p_di_bl[k][n].kols; // । } // 㫥 for(k=0; kkolstr; k++) for(n=0; nkolstl; n++) { if(p_di_bl[k][n].tip != FRML) continue; formula_bl(k,n); } // ନ஢ 䠩 㬥 sprintf(namf,"uc%1d.din",p_st_bl->nom); fh=sopen(namf,O_BINARY|O_RDONLY,SH_DENYNO); // ⮣ l_fl=(int)filelength(fh); buf_fl=(byte *)malloc(l_fl+1); //!! if(buf_fl==NULL) return -1; read(fh,buf_fl,l_fl); close(fh); for(k=0; kkolstr; k++) for(n=0; nkolstl; n++) { if(p_di_bl[k][n].adr==0) continue; *(buf_fl+p_di_bl[k][n].adr) = ' '; svc=*(buf_fl+p_di_bl[k][n].adr+p_di_bl[k][n].column); if(svc=='*') svc=' '; if(p_di_bl[k][n].tip != CNST) { memset(buf_fl+p_di_bl[k][n].adr, ' ', p_di_bl[k][n].column); pa=(c_ptr+p_di_bl[k][n].nomk)->a_ptr+p_di_bl[k][n].nomz; if(pa->sum_ysr == 2 || pa->sum_ysr == 3 // ᫨ 㬬. 稪 || p_di_bl[k][n].kols !=-1 || p_di_bl[k][n].tip == FRML) { frmtq=frmt_prt_q(p_di_bl[k][n].column,p_di_bl[k][n].zn); sprintf(buf_fl+p_di_bl[k][n].adr,frmtq,p_di_bl[k][n].zn); } } *(buf_fl+p_di_bl[k][n].adr+p_di_bl[k][n].column)=svc; } sprintf(buf_fl+p_st_bl->adrdate,"%02d.%02d.%04d",ddoc,mdoc,gdoc+1900); sttm=(struct tm *)malloc(sizeof(struct tm)); //!! if(sttm != NULL) { time(&t_mes); t_loct(&t_mes,sttm); sprintf(buf_fl,"%02d.%02d.%04d %02d:%02d:%02d", sttm->tm_mday,sttm->tm_mon+1,sttm->tm_year+1900, sttm->tm_hour,sttm->tm_min,sttm->tm_sec); buf_fl[20]=' '; free(sttm); //!! } sprintf(namf,"uc%1d.prt",p_st_bl->nom); remove(namf); fh=sopen(namf,O_BINARY|O_RDWR|O_CREAT, SH_DENYNO, S_IWRITE); write(fh,buf_fl,l_fl); close(fh); #if defined (MNEMO) buf_fl[l_fl]=12; if(pr_yes) while(1) { for(i=0; i 4) drob=4; if(wide > 9) sprintf(frmtprtq+1,"%2d.%df",wide,drob); else sprintf(frmtprtq+1,"%1d.%df",wide,drob); return frmtprtq; } /*-------------------------------------------------------------------*/ void formula_bl(int st, int cl) { analog *pa; alg_str *palg; pa=(c_ptr+p_di_bl[st][cl].nomk)->a_ptr+p_di_bl[st][cl].nomz; palg=p_alg1+pa->nomin_var; switch((formuls1+palg->form)->tip) { case 10: formula31(palg,st,cl); break; case 11: formula_sum(palg,st,cl); break; } } /*-------------------------------------------------------------------*/ void formula31(alg_str *palg, int st, int cl) // k1*k11*zn6*zn7/k2*k12*zn8*zn9 { int i; int k6,k7,k8,k9; float zn6=1,zn7=1,zn8=1,zn9=1; float k1,k11,k2,k12; float znamen; k6=(int)(palg->koef[5]+0.5)-1; k7=(int)(palg->koef[6]+0.5)-1; k8=(int)(palg->koef[7]+0.5)-1; k9=(int)(palg->koef[8]+0.5)-1; if(k6+1) { if(p_di_bl[st][k6].kols==-1) return; else zn6=p_di_bl[st][k6].zn; } if(k7+1) { if(p_di_bl[st][k7].kols==-1) return; else zn7=p_di_bl[st][k7].zn; } if(k8+1) { if(p_di_bl[st][k8].kols==-1) return; else zn8=p_di_bl[st][k8].zn; } if(k9+1) { if(p_di_bl[st][k9].kols==-1) return; else zn9=p_di_bl[st][k9].zn; } k1=palg->koef[0]; k11=palg->koef[10]; k2=palg->koef[1]; k12=palg->koef[11]; znamen=k2*k12*zn8*zn9; if(znamen==0.0) return; p_di_bl[st][cl].zn=k1*k11*zn6*zn7/znamen; p_di_bl[st][cl].kols=0; } /*-------------------------------------------------------------------*/ void formula_sum(alg_str *palg, int st, int cl) { int k1,k2,k3,k4; int k,n; k1=(int)(palg->koef[0]+0.0); k2=(int)(palg->koef[1]+0.0); k3=(int)(palg->koef[2]+0.0); k4=(int)(palg->koef[3]+0.0); for(k=st+k1; k<=st+k3; k++) for(n=cl+k2; n<=cl+k4; n++) { p_di_bl[st][cl].zn += p_di_bl[k][n].zn; } } /*-------------------------------------------------------------------*/ #if (REMONT) void nasos() {int i,j,k,hn,ddd,mmm,ggg; int tiprem; byte a1=0xd,a2=0xa,a3=12; struct tm * sttm; time_t ttm; byte *buf_fl; eqrem *p_rem; char *buf_rem; char dn[9],dk[9],vr[7],god[7],mes[7]; int prdn,prdk,prvr,dmec; hn=sopen("tim1.bin",O_BINARY|O_RDONLY,SH_DENYNO); if(hn==-1)return; sttm=(struct tm *)malloc(sizeof(struct tm)); //!! if(sttm==NULL) return; buf_fl=(byte *)malloc(120); //!! if(buf_fl==NULL) {free(sttm); //!! return; } buf_rem=(char *)malloc(sizeof(eqrem)); //!! if(buf_rem==NULL) {free(sttm); //!! free(buf_fl); //!! return; } memset(buf_rem,0,sizeof(eqrem)); p_rem=(eqrem *)buf_rem; time(&ttm); t_loct(&ttm,sttm); ddd=sttm->tm_mday;mmm=sttm->tm_mon;ggg=sttm->tm_year; sprintf(&sss1[3][36],"%s %d \n\r",immec[sttm->tm_mon],1900+sttm->tm_year); for(i=0;itip; if(p_rem->dnr) {t_loct(&p_rem->dnr,sttm); sprintf(dn,"%02d.%02d.%02d",sttm->tm_mday,sttm->tm_mon+1,sttm->tm_year%100); } else sprintf(dn," "); if(p_rem->dkr) {t_loct(&p_rem->dkr,sttm); sprintf(dk,"%02d.%02d.%02d",sttm->tm_mday,sttm->tm_mon+1,sttm->tm_year%100); } else sprintf(dk," "); if(p_rem->rem)sprintf(vr,"%6ld",p_rem->rem/3600); else sprintf(vr," "); prdn=prdk=prvr=0; if(p_rem->dkr) {t_loct(&p_rem->dkr,sttm); if(ddd>=NACH_MES) { if(ggg==sttm->tm_year&&mmm==sttm->tm_mon) { if(sttm->tm_mday>=NACH_MES) prdk=prvr=1; } else { dmec=(ggg-sttm->tm_year)*12+mmm-sttm->tm_mon; if(dmec>1||sttm->tm_mdaytgod/3600); if(ddd>=NACH_MES) {sprintf(mes,"%6ld",p_rem->smes/3600); if(mmm==11)sprintf(god,"%6ld",p_rem->sgod/3600); } else sprintf(mes,"%6ld",p_rem->tmes/3600); sprintf(buf_fl,"%s %6ld %s %s %s%s%s %s \n\r", d_ptr_r[j]->cipher, p_rem->eksp/3600,god,mes, remo[tiprem],dn,dk,vr); for(i=0,k=0;;i++) {if(buf_fl[i]==0)break; if(k=prt_byte_mnem(buf_fl[i]))break; } if(k)break; } if(k) {free(sttm); //!! free(buf_fl); //!! free(buf_rem); //!! close(hn); return; } for(j=0;j<3;j++) {for(i=0,k=0;;i++) {if(sss2[j][i]==0)break; if(k=prt_byte_mnem(sss2[j][i]))break; } if(k)break; } prt_byte_mnem(a3); free(sttm); //!! free(buf_fl); //!! free(buf_rem); //!! close(hn); } #if (COUNT1) void nas_sut() {int i,j,k,hn,ddd,mmm; byte a1=0xd,a2=0xa,a3=12; struct tm * sttm; time_t ttm; byte *buf_fl; eqsut *p_sut; char *buf_sut; hn=sopen("tim2.bin",O_BINARY|O_RDONLY,SH_DENYNO); if(hn==-1)return; sttm=(struct tm *)malloc(sizeof(struct tm)); //!! if(sttm==NULL) return; buf_fl=(byte *)malloc(120); //!! if(buf_fl==NULL) {free(sttm); //!! return; } buf_sut=(char *)malloc(sizeof(eqsut)); //!! if(buf_sut==NULL) {free(sttm); //!! free(buf_fl); //!! return; } memset(buf_sut,0,sizeof(eqsut)); p_sut=(eqsut *)buf_sut; lseek(hn,(long)sizeof(eqsut)*0,SEEK_SET); read(hn,buf_sut,sizeof(eqsut)); sprintf(&sut1[3][45],"%s %d \n\r",immec[p_sut->mec],1900+p_sut->god); for(i=0;icipher, p_sut->old[0],p_sut->old[1],p_sut->old[2],p_sut->old[3],p_sut->old[4], p_sut->old[5],p_sut->old[6],p_sut->old[7],p_sut->old[8],p_sut->old[9], p_sut->old[10],p_sut->old[11],p_sut->old[12],p_sut->old[13],p_sut->old[14], p_sut->old[15],p_sut->old[16],p_sut->old[17],p_sut->old[18],p_sut->old[19], p_sut->old[20],p_sut->old[21],p_sut->old[22],p_sut->old[23],p_sut->old[24], p_sut->old[25],p_sut->old[26],p_sut->old[27],p_sut->old[28],p_sut->old[29], p_sut->old[30]); for(i=0,k=0;;i++) {if(buf_fl[i]==0)break; if(k=prt_byte_mnem(buf_fl[i]))break; } if(k)break; } if(k) { free(buf_fl); //!! free(buf_sut); //!! close(hn); return; } for(j=0;j<3;j++) {for(i=0,k=0;;i++) {if(sut2[j][i]==0)break; if(k=prt_byte_mnem(sut2[j][i]))break; } if(k)break; } prt_byte_mnem(a3); free(buf_fl); //!! free(buf_sut); //!! close(hn); } #endif #endif int prt_byte_mnem(byte c) { int cnt; byte stat; stat=tsk_inp(0x379); /* ਭ */ if((stat&0x78)==0x78 || !(stat&0x10)) return 1; /* ᫨ ⪫. 몫. */ *(int *)0x00000478=(int)0x0101; /* ⠩ ਭ */ cnt=4; do { _asm { mov al,c mov ah,0 mov dx,0 int 17h mov stat,ah } schedule(); if(!(stat & 0x01)) return 0; cnt--; } while(cnt); _asm { mov ah,1 mov dx,0 int 17h } return 1; /************* printer.c ⠪: OUT_CHR: _asm { mov al,c mov ah,0 mov dx,lpt int 17h mov stat,ah } #if (PRINTER == 3) if(c==0x0a) { c=0x0d; goto OUT_CHR; } #endif schedule(); if(!(stat & 0x01)) goto READ_CHN; if(stat != 0x31) { // ᫨ ⮢ . eprintf(15," "); t_delay(3*HZ); eprintf(0,""); goto OUT_CHR; } fl_prt=0; // ᫨ 몫祭 祭 goto READ_CHN; ********/ } /*-------------------------------------------------------------------*/ #if defined (MNEMO) void print_nom_doc(int nom) { char wbufn[16]; char mesage[100]; byte *buf_fl; int fh, l_fl, i, k, j; char ch; sprintf(wbufn,"uc%1d.prt",nom); fh=sopen(wbufn,O_BINARY|O_RDONLY,SH_DENYNO); // 䠩 if(fh==-1) return; l_fl=(int)filelength(fh); buf_fl=(byte *)malloc(l_fl+1); //!! if(buf_fl==NULL) { close(fh); return; } read(fh,buf_fl,l_fl); close(fh); _setcolor(color[0]); _rectangle(_GFILLINTERIOR,0,200,799,500); _setcolor(color[15]); _rectangle(_GBORDER,0,200,799,500); wrtxt(color[15],0,2,250," :"); k=20; while(buf_fl[k] != '.' || buf_fl[k+1] != '2' || buf_fl[k+2] != '0') k++; k=k-8; mesage[0]=' '; j=20; for(i=1; i<98; ) { if(j==k || buf_fl[j]==0xc9) break; if(buf_fl[j]==0x0d || buf_fl[j]==0x0a) { mesage[i++]=' '; j++; continue; } if(mesage[i-1]==' ' && buf_fl[j]==' ') { j++; continue; } mesage[i++]=buf_fl[j++]; } mesage[i]=0; wrtxt(color[15],0,2,280,mesage); mesage[1]=' '; for(i=2; i<15; i++) mesage[i]=buf_fl[k++]; mesage[i]=0; wrtxt(color[15],0,2,300,mesage); wrtxt(color[15],0,2,330," : ਭ, ⠢ 㬠, "); wrtxt(color[15],0,2,350," ⪠ "); k=0; while(k != ENTER && k != ESC) k=t_read_key() >> 8; if(k==ESC) { free(buf_fl); return; } //!! buf_fl[l_fl]=12; while(1) { for(i=0; itm_mday;mec=sttm->tm_mon+1;god=sttm->tm_year+1900; chas=sttm->tm_hour;min=sttm->tm_min;sec=sttm->tm_sec; sprintf(kepka[0],"%02d.%02d.%4d %02d:%02d:%02d",den,mec,god,chas,min,sec); kepka[0][19]=' '; for(i=0;id_ptr;jnum_dp;j++,ptr_d++) if(ptr_d->type_par==3) { if(ptr_d->val_par) sprintf(sost," "); else sprintf(sost,""); if(kolonka) { sprintf(stroka,"%s%s%s%s\n\r",stroka,ptr_d->cipher,name_ds(ptr_d),sost); for(s=0,k=0;;s++) {if(stroka[s]==0)break; if(k=prt_byte_mnem(stroka[s]))break; } if(k) { free(sttm); //!! return; } kolonka=0; } else { sprintf(stroka,"%s%s%s ",ptr_d->cipher,name_ds(ptr_d),sost); kolonka++; } } if(kolonka) { sprintf(stroka,"%s \n\r",stroka); for(s=0,k=0;;s++) {if(stroka[s]==0)break; if(k=prt_byte_mnem(stroka[s]))break; } if(k) { free(sttm); //!! return; } } for(j=0;j<3;j++) {for(i=0,k=0;;i++) {if(konec[j][i]==0)break; if(k=prt_byte_mnem(konec[j][i]))break; } if(k)break; } prt_byte_mnem(a3); free(sttm); //!! } #endif