From 5f80d92d8bebc775b30e2b212e33b08089517654 Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 28 Mar 2022 03:02:13 +0000 Subject: CTAN sync 202203280302 --- graphics/mcf2graph/mcf2graph.mp | 306 +++++++++++++++++++--------------------- 1 file changed, 145 insertions(+), 161 deletions(-) (limited to 'graphics/mcf2graph/mcf2graph.mp') diff --git a/graphics/mcf2graph/mcf2graph.mp b/graphics/mcf2graph/mcf2graph.mp index 6bf2292510..10c14d4cec 100644 --- a/graphics/mcf2graph/mcf2graph.mp +++ b/graphics/mcf2graph/mcf2graph.mp @@ -1,5 +1,5 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% mcf2graph ver 4.82 Copyright (c) 2013-2022 Akira Yamaji +% mcf2graph ver 4.83 Copyright (c) 2013-2022 Akira Yamaji % % Permission is hereby granted, free of charge, to any person obtaining a copy of this software % and associated documentation files (the "Software"), to deal in the Software without restriction, @@ -33,7 +33,7 @@ % Set output MOL file (V3000) : mpost -s ahlength=6 FILENAME % Set output report : mpost -s ahlength=7 FILENAME %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -message "* This is mcf2graph ver 4.82 2022.03.13"; +message "* This is mcf2graph ver 4.83 2022.03.27"; tracingstats:=1; prologues:=3; warningcheck:=0; %------------------------------------------------------------------------------------------------- numeric save_num[],parts_com[][],parts_par[][],parts_cnt[],tbl_atom[],tbl_group[][],tbl_atom_wt[], @@ -162,25 +162,25 @@ enddef; %-------------------------------------------------------------------------------------------------- def init_par(text t)= nA:=nB:=nC:=0; - for list=t: if numeric list: nA:=nA+1; save_num[nA]:=list; - ef pair list: nB:=nB+1; save_pair[nB]:=list; - ef string list: nC:=nC+1; save_str[nC]:=list; fi + for list=t: if numeric list: save_num[incr nA]:=list; + ef pair list: save_pair[incr nB]:=list; + ef string list: save_str[incr nC]:=list; fi endfor enddef; %-------------------------------------------------------------------------------------------------- def store_par(text t)= nA:=nB:=nC:=0; - for list=t: if numeric list: nA:=nA+1; if save_num[nA]<>list: save_num[nA]:=list; fi - ef pair list: nB:=nB+1; if save_pair[nB]<>list: save_pair[nB]:=list; fi - ef string list: nC:=nC+1; if save_str[nC]<>list: save_str[nC]:=list; fi fi + for list=t: if numeric list: if save_num[incr nA]<>list: save_num[nA]:=list; fi + ef pair list: if save_pair[incr nB]<>list: save_pair[nB]:=list; fi + ef string list: if save_str[incr nC]<>list: save_str[nC]:=list; fi fi endfor enddef; %-------------------------------------------------------------------------------------------------- def restore_par(text t)= nA:=nB:=nC:=0; - forsuffixes list=t: if numeric list: nA:=nA+1; if list<>save_num[nA]: list:=save_num[nA]; fi - ef pair list: nB:=nB+1; if list<>save_pair[nB]: list:=save_pair[nB]; fi - ef string list: nC:=nC+1; if list<>save_str[nC]: list:=save_str[nC]; fi fi + forsuffixes list=t: if numeric list: if list<>save_num[incr nA]: list:=save_num[nA]; fi + ef pair list: if list<>save_pair[incr nB]: list:=save_pair[nB]; fi + ef string list: if list<>save_str[incr nC]: list:=save_str[nC]; fi fi endfor enddef; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -201,25 +201,24 @@ def beginfigm(text s)= picture mol_pic[]; color color_list[]; %------------------------------------------------------------------------------------------------ + store_par(parameter_list); + %------------------------------------------------------------------------------------------------ let ext=ext_to_fig; let add=add_to_molecule; def '=read_ud enddef; %------------------------------------------------------------------------------------------------ inf_NO:=inf_EN:=inf_JN:=inf_MW:=inf_FM:=inf_CAS:=inf_Cat:=inf_EXA:=inf_EXB:="-"; - mc:=temps:=cal_MW:=cal_MI:=cal_FM:=filter_s:=""; - file_input:=default_library; + mc:=temps:=cal_MW:=cal_MI:=cal_FM:=filter_s:=""; file_input:=default_library; %------------------------------------------------------------------------------------------------ parts_num:=parts_usr_start; parts_int:=parts_int_start; - %------------------------------------------------------------------------------------------------ - store_par(parameter_list); fig_num:=fig_num+1; f_ext:=cntM:=mc_row:=info_cnt:=f_EOF:=0; %------------------------------------------------------------------------------------------------ for list=s: at_colon:=scan_char(":",list,0,1); if at_colon=1: fw_n:=scan_char(" ",list,1,2); bw_n:=scan_char(" ",list,-1,2); - mc_row:=mc_row+1; mc_indent[mc_row]:=fw_n-2; + mc_indent[incr mc_row]:=fw_n-2; mc[mc_row]:=substring(fw_n-1,bw_n) of list; mc:=mc&mc[mc_row]; ef at_colon>=1: - info_cnt:=info_cnt+1; info_s[info_cnt]:=list; + info_s[incr info_cnt]:=list; sT:=substring(0,at_colon-1) of list; sV:=substring(at_colon,length(list)) of list; if sT="f": if scan_char(".",sV,0,1)=0: file_input:=sV&".mcf"; else: file_input:=sV; fi ef sT="t": temps:=sV; @@ -307,7 +306,7 @@ def pickup_data_unit(expr t,v,f)= sS:=readfrom file_input; if sS=EOF: f_EOF:=1; fi exitif f_EOF=1; exitif subc(1,sS)="+"; if subc(1,sS)<>"%": - fw_n:=scan_char(" ",sS,1,1); mc_row:=mc_row+1; mc_indent[mc_row]:=fw_n-1; + fw_n:=scan_char(" ",sS,1,1); mc_indent[incr mc_row]:=fw_n-1; mc[mc_row]:=substring(fw_n-1,length(sS)) of sS; mc:=mc&mc[mc_row]; fi endfor for i=1 upto inf_num: @@ -336,7 +335,6 @@ def pickup_data_unit(expr t,v,f)= enddef; %-------------------------------------------------------------------------------------------------- vardef scan_bit(expr n,b)= if b>=1: odd(floor(n/b)) else: odd(floor((frac n)/b)) fi enddef; -%-------------------------------------------------------------------------------------------------- vardef scan_char(expr c,s,d,n)= nN:=0; if d=0: for i=n upto length(s): if subc(i,s)=c: nN:=i; fi exitif nN>0; endfor @@ -345,16 +343,18 @@ vardef scan_char(expr c,s,d,n)= enddef; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% vardef '(text t)= parts_num:=parts_num+1; read_mcf(parts_num)(t); parts_num enddef; -vardef read_id(text t)=read_mcf(incr parts_num)(|,#rate_cr,t,##,(_com,_rest)); parts_num enddef; -vardef read_ud(text t)=read_mcf(incr parts_num)(dum,dum,|,t,(_com,_rest)); parts_num enddef; +vardef read_id(text t)= parts_num:=parts_num+1; + read_mcf(parts_num)(|,#rate_cr,t,##,(_com,_rest)); parts_num enddef; +vardef read_ud(text t)= parts_num:=parts_num+1; + read_mcf(parts_num)(dum,dum,|,t,(_com,_rest)); parts_num enddef; vardef abs_adress primary n = if n LT 0:: (n+360)-4095 else:: n-4095 fi enddef; primarydef a from_until b = (_from,a),(_until,b) enddef; tertiarydef a op_equ b = if (known a)and(known b):: change_bond(a,b) else:: _nop fi enddef; tertiarydef a op_col b = if (known a)and(known b):: change_atom(a,b) else:: _nop fi enddef; tertiarydef a op_hat b = if known b:: (_tmp_rot,b),a else:: _nop,a fi enddef; tertiarydef a op_til b = if known b:: (_tmp_line,b),a else:: _nop,a fi enddef; -tertiarydef a op_lt b = if known b:: (_tmp_env,b),a else:: _nop,a fi enddef; -tertiarydef a op_bq b = if known b:: (_tmp_len,b),a else:: _nop,a fi enddef; +tertiarydef a op_lth b = if known b:: (_tmp_env,b),a else:: _nop,a fi enddef; +tertiarydef a op_bqu b = if known b:: (_tmp_len,b),a else:: _nop,a fi enddef; def rot_angle primary n = (_rot_ang,n) enddef; def cyc_atom primary n = (_cyc,n) enddef; def jump_atom_abs primary a = if numeric a:: (_jp_atom,$a) ef pair a:: (_jp_atom,$1),<$0,angle(a)~0`length(a),<$0 fi @@ -367,21 +367,19 @@ def group_si secondary n = if known n:: (_group_si,n) else:: _nop fi enddef; def group_dm secondary n = if known n:: (_group_dm,n) else:: _nop fi enddef; def group_wf secondary n = if known n:: (_group_wf,n) else:: _nop fi enddef; def group_zf secondary n = if known n:: (_group_zf,n) else:: _nop fi enddef; -def group_wv secondary n = /n~wv enddef; -def group_nb secondary n = /n~nb enddef; -%------------------------------------------------------------------------------------------------- -def CP = com_par enddef; def CPe = com_par_ex(0) enddef; def CPx = com_par_ex(1) enddef; +def group_wv secondary n = /n~wv enddef; def group_nb secondary n = /n~nb enddef; %================================================================================================= def read_mcf(expr n)(text t)= begingroup save nCP; if unknown inside_MC:: - save /,//,/*,*/,**,*/*,~,^,',`,<,>,:,=,\,\\,*\,\*,*\*,@,@$,$,&,&$,#,##,{,},|,||,_,inside_MC; + save /,//,/*,*/,**,*/*,~,^,',`,<,>,:,=,\,\\,*\,\*,*\*,@,@$,$,&,&$,#,##,{,},|,||,_,CP,CA, + inside_MC; | :=mark_adress; || :=reset_adress; ##:=reset_length; _:=Me; \:=0; \\:=zero_dm; *\:=zero_wf; \*:=zero_zf; *\*:=zero_wv; - let = ==op_equ; let : ==op_col; let ^==op_hat; let ~==op_til; let > ==op_lt; let `==op_bq; + let = ==op_equ; let : ==op_col; let ^==op_hat; let ~==op_til; let > ==op_lth; let `==op_bqu; def $==abs_adress enddef; def &$==&.$ enddef; def '==read_id enddef; - def {==read_number( enddef; + def {==read_number( enddef; def CP == com_par enddef; def CA == com_par_adr enddef; let }==); let @$==jump_atom_abs; let < ==rot_angle; let @==jump_atom; let &==cyc_atom; let #==chg_length; let /==group_si; let //==group_dm; let */==group_wf; let /*==group_zf; let */*==group_wv; let **==group_nb; @@ -391,15 +389,14 @@ def read_mcf(expr n)(text t)= nCP:=0; for list==t:: if known list:: - if pair list:: nCP:=nCP+1; parts_com[n][nCP]:=xpart(list); parts_par[n][nCP]:=ypart(list); + if pair list:: parts_com[n][incr nCP]:=xpart(list); parts_par[n][nCP]:=ypart(list); ef numeric list:: if list==_nop:: message "unknown command in "AND decimal(n); ef list>=parts_emb_start:: for i==1 upto parts_cnt[list]:: - nCP:=nCP+1; - parts_com[n][nCP]:=parts_com[list][i]; parts_par[n][nCP]:=parts_par[list][i]; + parts_com[n][incr nCP]:=parts_com[list][i]; parts_par[n][nCP]:=parts_par[list][i]; endfor - else:: nCP:=nCP+1; parts_com[n][nCP]:=_mk_bond; parts_par[n][nCP]:=list; fi + else:: parts_com[n][incr nCP]:=_mk_bond; parts_par[n][nCP]:=list; fi fi else:: message "unknown command in "AND decimal(n); fi @@ -416,16 +413,15 @@ vardef read_number(text t)= if known list:: if numeric list:: if list==_nop:: message "unknown command in "AND decimal(parts_int); - else:: nA:=nA+1; parts_com[parts_int][nA]:=_numeric; parts_par[parts_int][nA]:=list; + else:: parts_com[parts_int][incr nA]:=_numeric; parts_par[parts_int][nA]:=list; fi ef pair list:: if xpart(list)==_from:: nB:=ypart(list); ef xpart(list)==_until:: nC:=ypart(list); for i==nB upto nC:: - nA:=nA+1; parts_com[parts_int][nA]:=_numeric; parts_par[parts_int][nA]:=i; + parts_com[parts_int][incr nA]:=_numeric; parts_par[parts_int][nA]:=i; endfor - else:: nA:=nA+1; - parts_com[parts_int][nA]:=xpart(list); parts_par[parts_int][nA]:=ypart(list); + else:: parts_com[parts_int][incr nA]:=xpart(list); parts_par[parts_int][nA]:=ypart(list); fi fi else:: message "unknown command in "AND decimal(parts_int); @@ -462,27 +458,27 @@ enddef; vardef change_bond(expr a,b) = if known b:: parts_int:=parts_int+1; nC:=0; if numeric b:: - if (b>=si)and(b<=bd_):: + if (b>=si)and(b<=bd_):: if a>=parts_int_start:: for i==1 upto parts_cnt[a]:: if parts_com[a][i]==_numeric:: - if frac parts_par[a][i]==0:: com_par(_set_adr,parts_par[a][i]) com_par(_set_line,b) - ef b==dl:: com_par(_set_adr,floor parts_par[a][i]) com_par(_set_line,dr) - ef b==dr:: com_par(_set_adr,floor parts_par[a][i]) com_par(_set_line,dl) - else:: com_par(_set_adr,floor parts_par[a][i]) com_par(_set_line,b) fi fi + if frac parts_par[a][i]==0:: CA(_set_line,b,parts_par[a][i]) + ef b==dl:: CA(_set_line,dr,floor parts_par[a][i]) + ef b==dr:: CA(_set_line,dl,floor parts_par[a][i]) + else:: CA(_set_line,b,floor parts_par[a][i]) + fi + fi endfor - else:: com_par(_set_adr,a) com_par(_set_line,b) + else:: CP(_set_adr,a) CP(_set_line,b) fi elseif (b>=?3)and(b<=?8[15]):: if numeric a:: if a>=parts_int_start:: for i==1 upto parts_cnt[a]:: if parts_com[a][i]==_numeric:: - if b==Ph1:: fuse_ring(parts_par[a][i],6) - CP(_set_adr,-2) CP(_set_line,dl) CP(_set_adr,-4) CP(_set_line,dl) - ef b==Ph2:: fuse_ring(parts_par[a][i],6) - CP(_set_adr,-1) CP(_set_line,dl) CP(_set_adr,-3) CP(_set_line,dl) - CP(_set_adr,-5) CP(_set_line,dl) + if b==Ph1:: fuse_ring(parts_par[a][i],6) CA(_set_line,dl,-2) CA(_set_line,dl,-4) + ef b==Ph2:: fuse_ring(parts_par[a][i],6) CA(_set_line,dl,-1) CA(_set_line,dl,-3) + CA(_set_line,dl,-5) ef (b>=?5[11])and(b<=?5[15]):: fuse_ring_size(a,5,b-?5[11]+11) ef (b>=?6[11])and(b<=?6[15]):: fuse_ring_size(a,6,b-?6[11]+11) ef (b>=?7[11])and(b<=?7[15]):: fuse_ring_size(a,7,b-?7[11]+11) @@ -503,24 +499,21 @@ vardef change_bond(expr a,b) = ef frac parts_com[a][i]==0:: fuse_ring_bonds((parts_com[a][i],floor parts_par[a][i]),5,2) ef frac parts_par[a][i]==0:: - fuse_ring_bonds((floor parts_com[a][i],floor parts_par[a][i]),5,2) - fi + fuse_ring_bonds((floor parts_com[a][i],floor parts_par[a][i]),5,2) fi ef b==?4:: fuse_ring_bonds((parts_com[a][i],parts_par[a][i]),4,2) ef b==?6[3]:: fuse_ring_bonds((parts_com[a][i],parts_par[a][i]),6,3) ef b==?6[2]:: fuse_ring_bonds((parts_com[a][i],parts_par[a][i]),6,2) ef b==?5[2]:: fuse_ring_bonds((parts_com[a][i],parts_par[a][i]),5,2) ef b==Ph1:: fuse_ring_bonds((parts_com[a][i],parts_par[a][i]),6,4) - CP(_set_adr,-1) CP(_set_line,dl) CP(_set_adr,-3) CP(_set_line,dl) + CA(_set_line,dl,-1) CA(_set_line,dl,-3) ef b==Ph2:: fuse_ring_bonds((parts_com[a][i],parts_par[a][i]),6,4) - CP(_set_adr,-2) CP(_set_line,dl) CP(_set_adr,-4) CP(_set_line,dl) + CA(_set_line,dl,-2) CA(_set_line,dl,-4) fi fi endfor else:: - if b==Ph1:: fuse_ring(a,6) CP(_set_adr,-2) CP(_set_line,dl) - CP(_set_adr,-4) CP(_set_line,dl) - ef b==Ph2:: fuse_ring(a,6) CP(_set_adr,-1) CP(_set_line,dl) - CP(_set_adr,-3) CP(_set_line,dl) CP(_set_adr,-5) CP(_set_line,dl) + if b==Ph1:: fuse_ring(a,6) CA(_set_line,dl,-2) CA(_set_line,dl,-4) + ef b==Ph2:: fuse_ring(a,6) CA(_set_line,dl,-1) CA(_set_line,dl,-3) CA(_set_line,dl,-5) ef (b>=?5[11])and(b<=?5[15]):: fuse_ring_size(a,5,b-?5[11]+11) ef (b>=?6[11])and(b<=?6[15]):: fuse_ring_size(a,6,b-?6[11]+11) ef (b>=?7[11])and(b<=?7[15]):: fuse_ring_size(a,7,b-?7[11]+11) @@ -533,13 +526,12 @@ vardef change_bond(expr a,b) = ef b==?6[3]:: fuse_ring_bonds(a,6,3) ef b==?6[2]:: fuse_ring_bonds(a,6,2) ef b==?5[2]:: fuse_ring_bonds(a,5,2) - ef b==Ph1:: fuse_ring_bonds(a,6,4) - CP(_set_adr,-1) CP(_set_line,dl) CP(_set_adr,-3) CP(_set_line,dl) - ef b==Ph2:: fuse_ring_bonds(a,6,4) - CP(_set_adr,-2) CP(_set_line,dl) CP(_set_adr,-4) CP(_set_line,dl) fi + ef b==Ph1:: fuse_ring_bonds(a,6,4) CA(_set_line,dl,-1) CA(_set_line,dl,-3) + ef b==Ph2:: fuse_ring_bonds(a,6,4) CA(_set_line,dl,-2) CA(_set_line,dl,-4) + fi fi fi - elseif color b:: color_list[incr cntC]:=b; CPe(a)(_set_colorB,cntC) fi + elseif color b:: color_list[incr cntC]:=b; CA(_set_colorB,cntC,a) fi parts_cnt[parts_int]:=nC; parts_int fi enddef; @@ -547,16 +539,16 @@ enddef; vardef change_atom(expr a,b)= if known b:: parts_int:=parts_int+1; nC:=0; if numeric b:: - if (b GT parts_emb_start)and(b<=parts_atom_end):: CPe(a)(_chg_atom,b) - ef b==NH:: CPe(a)(_chg_atom,N) if NH<>xNH:: CP(_tmp_line,nl) fi - CP(_com,_group_s) CPx(a)(_group_si,H) CP(_com,_group_e) - ef b==N!:: CPe(a)(_chg_atom,N) CP(_com,_group_s) CPx(a)(_group_si,_) CP(_com,_group_e) - ef b==N!2:: CPe(a)(_chg_atom,N) CP(_com,_group_s) CPx(a)(_group_si,!) CP(_com,_group_e) - ef b==??:: CP(_com,_group_s) CP(_tmp_rot,35) CPx(a)(_group_si,_) - CP(_tmp_rot,-35) CPx(a)(_group_si,_) CP(_com,_group_e) - ef b==SOO:: CPe(a)(_chg_atom,S) CP(_com,_group_s) CP(_tmp_rot,35) CPx(a)(_group_dm,O) - CP(_tmp_rot,-35) CPx(a)(_group_dm,O) CP(_com,_group_e) - ef b==SO:: CPe(a)(_chg_atom,S) CP(_com,_group_s) CPx(a)(_group_dm,O) CP(_com,_group_e) + if (b GT parts_emb_start)and(b<=parts_atom_end):: CA(_chg_atom,b,a) + ef b==NH:: CA(_chg_atom,N,a) if NH<>xNH:: CP(_tmp_line,nl) fi + CP(_com,_group_s) CA(_group_si,H,a) CP(_com,_group_e) + ef b==N!:: CA(_chg_atom,N,a) CP(_com,_group_s) CA(_group_si,_,a) CP(_com,_group_e) + ef b==N!2:: CA(_chg_atom,N,a) CP(_com,_group_s) CA(_group_si,!,a) CP(_com,_group_e) + ef b==??:: CP(_com,_group_s) CP(_tmp_rot,35) CA(_group_si,_,a) + CP(_tmp_rot,-35) CA(_group_si,_,a) CP(_com,_group_e) + ef b==SOO:: CA(_chg_atom,S,a) CP(_com,_group_s) CP(_tmp_rot,35) CA(_group_dm,O,a) + CP(_tmp_rot,-35) CA(_group_dm,O,a) CP(_com,_group_e) + ef b==SO:: CA(_chg_atom,S,a) CP(_com,_group_s) CA(_group_dm,O,a) CP(_com,_group_e) ef b==n_:: CP(_com,_group_s) CP(_set_add,a_minus) CP(_chg_add,a) CP(_com,_group_e) ef b==p_:: CP(_com,_group_s) CP(_set_add,a_plus) CP(_chg_add,a) CP(_com,_group_e) fi @@ -565,33 +557,27 @@ vardef change_atom(expr a,b)= if a>=parts_emb_start:: for i==1 upto parts_cnt[a]:: if parts_com[a][i]==_numeric:: - if xpart(b)==_group_wf:: - if frac parts_par[a][i]==0:: CP(_set_adr,parts_par[a][i]) CP(_group_wf,ypart(b)) - else:: CP(_set_adr,floor parts_par[a][i]) CP(_group_zf,ypart(b)) fi - ef xpart(b)==_group_zf:: - if frac parts_par[a][i]==0:: CP(_set_adr,parts_par[a][i]) CP(_group_zf,ypart(b)) - else:: CP(_set_adr,floor parts_par[a][i]) CP(_group_wf,ypart(b)) fi - else:: CP(_set_adr,parts_par[a][i]) CP(xpart(b),ypart(b)) fi + if frac parts_par[a][i]==0:: CA(xpart(b),ypart(b),parts_par[a][i]) + ef xpart(b)==_group_wf:: CA(_group_zf,ypart(b),floor parts_par[a][i]) + ef xpart(b)==_group_zf:: CA(_group_wf,ypart(b),floor parts_par[a][i]) + else:: CA(xpart(b),ypart(b),parts_par[a][i]) fi else:: CP(parts_com[a][i],parts_par[a][i]) fi endfor - else:: CP(_set_adr,a) CP(xpart(b),ypart(b)) - fi + else:: CA(xpart(b),ypart(b),a) fi CP(_com,_group_e) - ef color b:: color_list[incr cntC]:=b; CPe(a)(_set_colorA,cntC) - fi + ef color b:: color_list[incr cntC]:=b; CA(_set_colorA,cntC,a) fi parts_cnt[parts_int]:=nC; parts_int fi enddef; %------------------------------------------------------------------------------------------------- -def com_par(expr a,b)= nC:=nC+1; parts_com[parts_int][nC]:=a; parts_par[parts_int][nC]:=b; enddef; -%------------------------------------------------------------------------------------------------- -def com_par_ex(expr f)(expr c)(expr a,b)= - if c>=parts_emb_start:: - for i==1 upto parts_cnt[c]:: - if parts_com[c][i]==_numeric:: com_par(_set_adr,parts_par[c][i]) com_par(a,b) - ef f==1:: com_par(parts_com[c][i],parts_par[c][i]) fi +def com_par(expr c,p)= parts_com[parts_int][incr nC]:=c; parts_par[parts_int][nC]:=p; enddef; +def com_par_adr(expr c,p,a)= + if a>=parts_emb_start:: + for i==1 upto parts_cnt[a]:: + if parts_com[a][i]==_numeric:: com_par(_set_adr,parts_par[a][i]) com_par(c,p) + else:: com_par(parts_com[a][i],parts_par[a][i]) fi endfor - else:: com_par(_set_adr,c) com_par(a,b) + else:: com_par(_set_adr,a) com_par(c,p) fi enddef; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -670,8 +656,7 @@ def MC(text t)= path frameA[],zA,zL; %----------------------------------------------------------------------------------------------- if (sw_expand=1)or(scan_bit(sw_output,MOL2k))or(scan_bit(sw_output,MOL3k)): - expand_set; rate_cr:=1; else: rate_cr:=-ratio_chain_ring; - fi + expand_set; rate_cr:=1; else: rate_cr:=-ratio_chain_ring; fi cC:="C"; cH:="H"; cO:="O"; cN:="N"; cS:="S"; cF:="F"; cP:="P"; cntA:=cntB:=cntC:=group_num:=0; str_tbl[0]:=cC; str_cnt:=2000; %----------------------------------------------------------------------------------------------- @@ -693,12 +678,10 @@ def MC(text t)= proc_skeleton(0); proc_scaling; if (mol_ht/mol_wd)>(m_ht/m_wd): if ypart(msize)>1: factor:=ypart(msize)/mol_ht; - else: factor:=((fig_ht-2margin_tb)*ypart(msize))/mol_ht; - fi + else: factor:=((fig_ht-2margin_tb)*ypart(msize))/mol_ht; fi else: if xpart(msize)>1: factor:=xpart(msize)/mol_wd; - else: factor:=((fig_wd-2margin_lr)*xpart(msize))/mol_wd; - fi + else: factor:=((fig_wd-2margin_lr)*xpart(msize))/mol_wd; fi fi exitif (factor>=1-eps)and(factor<=1+eps); blen:=blen*factor; proc_size_setup; endfor @@ -722,8 +705,7 @@ def MC(text t)= if addA[i]<>0: nA:=angX[i]+add_rot[i]; nC:=nA mod 90; if strA[i]=0: nB:=.5atom_wd; else: nB:=atom_wd; fi - draw_char(char(addA[i]),sfrt(posA[i],nB,nA)); - fi + draw_char(char(addA[i]),sfrt(posA[i],nB,nA)); fi endfor fi %-draw bond----------------------------------------------------------------------------------- @@ -759,7 +741,7 @@ def MC(text t)= else: nX:=margin_lr-minX+(fig_wd-mol_wd-2margin_lr)*xpart(mposition); fi if ypart(mposition)>1: nY:=ypart(mposition)-minY; else: nY:=margin_tb-minY+(fig_ht-mol_ht-2margin_tb)*ypart(mposition); fi - cntM:=cntM+1; posM[0][cntM]:=(nX,nY); + posM[0][incr cntM]:=(nX,nY); posM[1][cntM]:=(minX+nX,minY+nY); posM[2][cntM]:=(maxX+nX,maxY+nY); wdM[cntM]:=mol_wd; htM[cntM]:=mol_ht; mol_pic[cntM]:=currentpicture; @@ -771,8 +753,7 @@ enddef; %------------------------------------------------------------------------------------------------- def add_group= if f_at=1: nE:=getA(adrT); check_adrA(nE); else: nE:=cntA+1; fi - group_num:=group_num+1; group_cnt[group_num]:=0; - store_group(_jp_absA,nE) store_group(_com,_len_s) + group_cnt[incr group_num]:=0; store_group(_jp_absA,nE) store_group(_com,_len_s) if lineT<>nb: store_group(_tmp_line,lineT) fi if rotT<>0: store_group(_rot_ang,rotT) fi if lenT<>rate_cr: store_group(_chg_len,lenT) @@ -791,16 +772,16 @@ def add_group= enddef; %------------------------------------------------------------------------------------------------- def store_group(expr a,b)= - group_cnt[group_num]:=group_cnt[group_num]+1; - group_com[group_num][group_cnt[group_num]]:=a; group_par[group_num][group_cnt[group_num]]:=b; + group_com[group_num][incr group_cnt[group_num]]:=a; + group_par[group_num][group_cnt[group_num]]:=b; enddef; %================================================================================================= def read_group(expr a)(expr n)= save_group_cnt:=group_num; save_cntD:=parts_cnt[a]; for i=n upto group_num: for j=1 upto group_cnt[i]: - parts_cnt[a]:=parts_cnt[a]+1; - parts_com[a][parts_cnt[a]]:=group_com[i][j]; parts_par[a][parts_cnt[a]]:=group_par[i][j]; + parts_com[a][incr parts_cnt[a]]:=group_com[i][j]; + parts_par[a][parts_cnt[a]]:=group_par[i][j]; endfor endfor proc_bond_atom(a)(save_cntD+1); @@ -834,8 +815,7 @@ def proc_scaling= tempc:=subc(j,str_tbl[strA[i]]); if tempc="^": nU:=.5atom_wd; ef tempc="_": nD:=.5atom_wd; - ef (tempc<>"{")and(tempc<>"}"): nP:=nP+atom_wd*tbl_char_wd[ASCII(tempc)]; - fi + ef (tempc<>"{")and(tempc<>"}"): nP:=nP+atom_wd*tbl_char_wd[ASCII(tempc)]; fi endfor if (angX[i]<=90)or(angX[i]>=270): nR:=nP; else: nL:=nP; fi if (nX-nL+.5atom_wd)0: add_rot[cntA]:=rotT; rotT:=0; fi + if f_bra=0: sB[cntB]:=incr cntA; strA[cntA]:=temp_strA; + addA[cntA]:=addAT; addAT:=temp_strA:=add_rot[cntA]:=0; + if rotT<>0: add_rot[cntA]:=rotT; rotT:=0; fi else: f_bra:=0; fi if n=0: eB[cntB]:=cntA+1; f_term:=0; else: eB[cntB]:=n; f_term:=1; fi enddef; @@ -978,14 +958,14 @@ vardef getB(expr n)= if n>=0: markB+n ef n>=-999: cntB+n+1 else: n+4095 fi endde def termA= if f_term=0: if f_bra=0: - cntA:=cntA+1; strA[cntA]:=temp_strA; addA[cntA]:=addAT; add_rot[cntA]:=rotT; + strA[incr cntA]:=temp_strA; addA[cntA]:=addAT; add_rot[cntA]:=rotT; addAT:=temp_strA:=rotT:=0; else: f_bra:=0; fi f_term:=1; fi enddef; %------------------------------------------------------------------------------------------------- def termB= - if f_term=0: if f_bra=0:cntA:=cntA+1; angX[cntA]:=angT mod 360; else:f_bra:=0; fi f_term:=1; fi + if f_term=0: if f_bra=0: angX[incr cntA]:=angT mod 360; else:f_bra:=0; fi f_term:=1; fi enddef; %------------------------------------------------------------------------------------------------- vardef glu_atom(expr n)= @@ -1337,10 +1317,14 @@ def proc_report_out(expr f)= printf "---------------------------------------------------------------------------"; for i=1 upto mc_row: printf (substring(0,mc_indent[i]) of blanks)&mc[i]; endfor printf "---------------------------------------------------------------------------"; - printf " row="&fdr(3)(mc_row)&" / length="&fdr(4)(length(mc))&" / commands="&fdr(3)(cnt_cmm); - printf " {}=X ="&fdr(3)(cnt_chgB)&" / {}:X ="&fdr(3)(cnt_chgA)& - " / '() ="&fdr(3)(cnt_inline_def)&" / @ ="&fdr(3)(cnt_at)& - " / & ="&fdr(3)(cnt_and)&" / < ="&fdr(3)(cnt_gtn); fi + printf " row="&fdr(3)(mc_row)&" , length="&fdr(4)(length(mc))& + " , commands="&fdr(3)(cnt_cmm); + printf " {}=X["&decimal(cnt_chgB)&"],{}:X["&decimal(cnt_chgA)& + "],'()["&decimal(cnt_inline_def)&"],@["&decimal(cnt_at)& + "],&["&decimal(cnt_and)&"],<["&decimal(cnt_gtn)&"],=["&decimal(cnt_equ)& + "],|["&decimal(cnt_bar-cnt_bars)&"],||["&decimal(cnt_bars)& + "],#["&decimal(cnt_hsh-cnt_hshs)&"],##["&decimal(cnt_hshs)&"]"; + fi printf "---------------------------------------------------------------------------"; printf " Warnings = "&fdr(3)(warning_cnt)&" / Code= "&decimal(parts_cnt[0]); printf " Width * Height = " & fdr(10)(mol_wd)&" * "&fdr(10)(mol_ht); @@ -1372,15 +1356,14 @@ def proc_report_out(expr f)= if sumA[i]>=1: printf " "&fsl(5)(erase_brace(tbl_atom_str[i]))& "("&fdr(9)(tbl_atom_wt[i])&")"&"["&fdr(9)(tbl_atom_mi[i])&"]"&" * "&fdr(4)(sumA[i]) - &fdr(15)(tbl_atom_wt[i]*sumA[i])&"["&fdr(12)(tbl_atom_mi[i]*sumA[i])&"]"; - fi + &fdr(15)(tbl_atom_wt[i]*sumA[i])&"["&fdr(12)(tbl_atom_mi[i]*sumA[i])&"]"; fi endfor printf " Molecular Weight [Mono Isotopic] = "&fsr(12)(cal_MW)&"["&fsr(12)(cal_MI)&"]"; printf "---------------------------------------------------------------------------"; printf " Weight Calc: " &cal_MW &" / Input: " - if inf_MW<>"-": &inf_MW &" / weight gap= " &decimal(num_MW-scantokens(inf_MW)) fi; - printf " Fomula Calc: "&cal_FM&" / Input: " - if inf_FM<>"-": &inf_FM&" / "& iif(inf_FM=cal_FM,"MACTCH","NOT MACTCH") fi; + if inf_MW<>"-": &inf_MW &" / weight gap= " &decimal(num_MW-scantokens(inf_MW)) fi; + printf " Fomula Calc: "&cal_FM &" / Input: " + if inf_FM<>"-": &inf_FM&" / "& iif(inf_FM=cal_FM,"MACTCH","NOT MACTCH") fi; printf "==========================================================================="; if f=1: printf EOF; fi enddef; @@ -1432,8 +1415,7 @@ def proc_mc_out(expr f)= forever: for i=nN downto 1: if at_comma[i]<=nA+mc_length: - printf substring(nA,at_comma[i]) of mc; nA:=at_comma[i]; exitif true; - fi + printf substring(nA,at_comma[i]) of mc; nA:=at_comma[i]; exitif true; fi endfor if nL-nA<=mc_length: printf substring(nA,nL) of mc; exitif true; fi endfor @@ -1444,7 +1426,9 @@ def proc_mc_out(expr f)= enddef; %================================================================================================= vardef fit_zero(expr n)= if n<=9: "00" ef n<=99: "0" else: "" fi &decimal(n) enddef; -vardef bond_type(expr n)= if (n>=dl)and(n<=dm_):2 ef n=tm:3 ef n=0: 0 else: 1 fi enddef; +vardef bond_type(expr n)= + if (n>=dl)and(n<=dm_):2 ef n=tm:3 ef (n=0)or(n=vf)or(n=vb): 0 else: 1 fi +enddef; vardef bond_charge(expr n)= if n=2: 1 ef n=1: 3 ef n=-1: 5 ef n=-2: 6 else: 0 fi enddef; vardef bond_stereo(expr n)= if (n=wf)or(n=zb)or(n=bd): 1 ef (n=zf)or(n=wb)or(n=dt): 6 ef n=wv: 4 else: 0 fi enddef; @@ -1454,8 +1438,8 @@ vardef bond_config(expr n)= vardef STa(expr s,WT,MI)= str_cnt:=str_cnt+1; tbl_cnt:=tbl_cnt+1; parts_num:=parts_num+1; parts_com[parts_num][1]:=_set_atom; parts_par[parts_num][1]:=str_cnt; parts_cnt[parts_num]:=1; - str_tbl[str_cnt]:=tbl_atom_str[tbl_cnt]:=s; - tbl_atom[tbl_cnt]:=0; tbl_atom_wt[tbl_cnt]:=WT; tbl_atom_mi[tbl_cnt]:=MI; + str_tbl[str_cnt]:=tbl_atom_str[tbl_cnt]:=s; tbl_atom[tbl_cnt]:=0; + tbl_atom_wt[tbl_cnt]:=WT; tbl_atom_mi[tbl_cnt]:=MI; parts_num enddef; %------------------------------------------------------------------------------------------------- @@ -1463,10 +1447,7 @@ vardef STb(expr s)(text t)= str_cnt:=str_cnt+1; tbl_cnt:=tbl_cnt+1; parts_num:=parts_num+1; parts_com[parts_num][1]:=_set_atom; parts_par[parts_num][1]:=str_cnt; parts_cnt[parts_num]:=1; str_tbl[str_cnt]:=tbl_atom_str[tbl_cnt]:=s; tbl_atom[tbl_cnt]:=0; - for list=t: - tbl_atom[tbl_cnt]:=tbl_atom[tbl_cnt]+1; - tbl_group[tbl_cnt][tbl_atom[tbl_cnt]]:=list-parts_emb_start; - endfor + for list=t: tbl_group[tbl_cnt][incr tbl_atom[tbl_cnt]]:=list-parts_emb_start; endfor parts_num enddef; %================================================================================================= @@ -1486,9 +1467,9 @@ K:= STa("K" ,39.0983, 38.9637064864); Li:=STa("{Li}",6.941, 7.016003 Mg:=STa("{Mg}",24.305, 23.985041697); Mn:=STa("{Mn}",54.938044, 54.93804391); N:= STa("N" ,14.0067, 14.00307400443); Na:=STa("{Na}",22.98977, 22.9897692820); Ni:=STa("{Ni}",58.693, 57.93534241); O:= STa("O" ,15.9994, 15.99491461957); -P:= STa("P" ,30.973762, 30.97376199842); Pb:= STa("Pb" ,207.2, 205.974455); -Pd:=STa("Pd" ,106.4, 107.905075); -S:= STa("S" ,32.065, 31.9720711744); Sb:= STa("Sb" ,121.75, 120.90381); +P:= STa("P" ,30.973762, 30.97376199842); Pb:= STa("{Pb}",207.2, 205.974455); +Pd:=STa("{Pd}",106.4, 107.905075); +S:= STa("S" ,32.065, 31.9720711744); Sb:= STa("{Sb}",121.75, 120.90381); Se:=STa("{Se}",78.971, 79.9165218); Si:=STa("{Si}",28.0855, 27.97692653465); Sn:=STa("{Sn}",118.71, 119.90220163); Ti:=STa("{Ti}",47.867, 47.94794198); U:= STa("U", 238.0289, 238.05079); V:= STa("V", 50.9415, 50.943957); @@ -1504,7 +1485,7 @@ ONa:=STb("O{Na}")(O,Na); SO3Na:=STb("S{O_3_}{Na}")(S,O,O,O,Na); tbl_group_end:=tbl_cnt; parts_atom_end:=parts_num; %================================================================================================= for i=3 upto 20: ?[i]:='((_com,_len_ss),(_get_len,_ring_len),<((-180 DIV i)-90) - for j==2 upto i:: ,(360 DIV i) endfor,(_cyc_sB,1-i),(_com,_len_ee)); endfor + for j==2 upto i:: ,(360 DIV i) endfor,(_cyc_sB,1-i),(_com,_len_ee)); endfor Ph:=Ph1:='(?6,-2=dl,-4=dl,-6=dl); Ph2:='(?6,-1=dl,-3=dl,-5=dl); for i=4,5,6: for j=2 upto i-2: ?[i][j]:='(); endfor endfor for i=5,6,7,8: for j=11 upto 15: ?[i][j]:='(); endfor endfor @@ -1563,7 +1544,7 @@ def expand_set= !CH3:=!xCH3; !OH:=!xOH; !NH2:=!xNH2; !CHO:=!xCHO; !COOH:=!xCOOH; !CN:=!xCN; !NO2:=!xNO2; enddef; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -vardef check(expr s)= +vardef mc_check(expr s)= save mc_char,err_cnt,char_cnt,f_depth,cnt_prn_s,cnt_prn_e,cnt_brc_s,cnt_brc_e,cnt_brk_s, cnt_brk_e,cmm_adr; string err_str[],err_type[]; @@ -1575,15 +1556,16 @@ vardef check(expr s)= %--------------------------------------------------------------------------------------------- if mc_row>=1: for i=1 upto length(s): - tempc:=subc(i,s); if tempc<>" ": char_cnt:=char_cnt+1; mc_char[char_cnt]:=ASCII(tempc); fi + tempc:=subc(i,s); if tempc<>" ": mc_char[incr char_cnt]:=ASCII(tempc); fi endfor mc_char[0]:=mc_char[char_cnt+1]:=mc_char[char_cnt+2]:=a_cmm; %-- argument missing chkeck -------------------------------------------------------------- - cnt_prn_s:=cnt_prn_e:=cnt_brc_s:=cnt_brc_e:=cnt_brk_s:=cnt_brk_e:=cnt_inline_def:=cnt_at:=0; - cnt_cmm:=cnt_and:=cnt_gtn:=cnt_gtn:=nA:=f_depth:=0; + cnt_prn_s:=cnt_prn_e:=cnt_brc_s:=cnt_brc_e:=cnt_brk_s:=cnt_brk_e:=cnt_inline_def:=0; + cnt_at:=cnt_cmm:=cnt_and:=cnt_gtn:=cnt_equ:=cnt_cln:=cnt_bar:=cnt_bars:=0; + cnt_hsh:=cnt_hshs:=f_depth:=nA:=0; forever: nA:=nA+1; nB:=mc_char[nA-1]; nC:=mc_char[nA]; nD:=mc_char[nA+1]; - if nC=a_cmm: if f_depth=0: cnt_cmm:=cnt_cmm+1; cmm_adr[cnt_cmm]:=nA; fi + if nC=a_cmm: if f_depth=0: cmm_adr[incr cnt_cmm]:=nA; fi ef nC=a_ast: if nD=a_sls: if mc_char[nA+2]=a_ast: if mc_char[nA+3]=a_cmm: proc_err(7,nA) nA:=nA+2; fi % */* x @@ -1592,24 +1574,28 @@ vardef check(expr s)= ef nC=a_sls: if nD=a_sls: if mc_char[nA+2]=a_cmm: proc_err(7,nA) nA:=nA+1; fi % // x ef nD=a_ast: if mc_char[nA+2]=a_cmm: proc_err(7,nA) nA:=nA+1; fi % /* x ef nD=a_cmm: proc_err(7,nA) fi % / x - ef nC=a_hsh: if nD=a_hsh: nA:=nA+1; % ## + ef nC=a_hsh: cnt_hsh:=cnt_hsh+1; % #+## + if nD=a_hsh: cnt_hshs:=cnt_hshs+1; nA:=nA+1; % ## ef nD=a_cmm: proc_err(7,nA) fi if nB<>a_cmm: proc_err(8,nA) fi % a # x ef nC=a_dol: if nD=a_cmm: proc_err(7,nA) fi % $ x - ef nC=a_equ: if nD= a_cmm: proc_err(7,nA) fi if nB= a_cmm: proc_err(7,nA) fi % x = x - ef nC=a_cln: if nD= a_cmm: proc_err(7,nA) fi if nB= a_cmm: proc_err(7,nA) fi % x : x + ef nC=a_equ: cnt_equ:=cnt_equ+1; + if nD= a_cmm: proc_err(7,nA) fi if nB= a_cmm: proc_err(7,nA) fi % x = x + ef nC=a_cln: cnt_cln:=cnt_cln+1; + if nD= a_cmm: proc_err(7,nA) fi if nB= a_cmm: proc_err(7,nA) fi % x : x ef nC=a_amk: cnt_at:=cnt_at+1; if nD= a_cmm: proc_err(7,nA) fi if nB<>a_cmm: proc_err(8,nA) fi % a @ x ef nC=a_and: cnt_and:=cnt_and+1; if nD= a_cmm: proc_err(7,nA) fi if nB<>a_cmm: proc_err(8,nA) fi % a & x ef nC=a_gtn: cnt_gtn:=cnt_gtn+1; - ef nC=a_ltn: if nD= a_cmm: proc_err(7,nA) fi if nB= a_cmm: proc_err(7,nA) fi % x > x - ef nC=a_tld: if nD= a_cmm: proc_err(7,nA) fi if nB= a_cmm: proc_err(7,nA) fi % x ~ x - ef nC=a_hat: if nD= a_cmm: proc_err(7,nA) fi if nB= a_cmm: proc_err(7,nA) fi % x ^ x - ef nC=a_bqt: if nD= a_cmm: proc_err(7,nA) fi if nB= a_cmm: proc_err(7,nA) fi % x ` x - ef nC=a_bar: if nD= a_bar: if mc_char[nA+2]=a_bar: nA:=nA+1; % || - ef mc_char[nA+2]<>a_cmm: proc_err(8,nA) fi % | a - if nB<>a_cmm: proc_err(8,nA) fi fi % a | - ef nC=a_prn_s: if nD= a_cmm: proc_err(7,nA) fi % ( x + ef nC=a_ltn: if nD= a_cmm: proc_err(7,nA) fi if nB= a_cmm: proc_err(7,nA) fi % x > x + ef nC=a_tld: if nD= a_cmm: proc_err(7,nA) fi if nB= a_cmm: proc_err(7,nA) fi % x ~ x + ef nC=a_hat: if nD= a_cmm: proc_err(7,nA) fi if nB= a_cmm: proc_err(7,nA) fi % x ^ x + ef nC=a_bqt: if nD= a_cmm: proc_err(7,nA) fi if nB= a_cmm: proc_err(7,nA) fi % x ` x + ef nC=a_bar: cnt_bar:=cnt_bar+1; % |+|| + if nD= a_bar: cnt_bars:=cnt_bars+1; if mc_char[nA+2]=a_bar: nA:=nA+1; % || + ef mc_char[nA+2]<>a_cmm: proc_err(8,nA) fi % | a + if nB<>a_cmm: proc_err(8,nA) fi fi % a | + ef nC=a_prn_s: if nD= a_cmm: proc_err(7,nA) fi % ( x cnt_prn_s:=cnt_prn_s+1; f_depth:=1; if nB=a_qut: cnt_inline_def:=cnt_inline_def+1; fi ef nC=a_prn_e: cnt_prn_e:=cnt_prn_e+1; f_depth:=0; @@ -1635,11 +1621,11 @@ vardef check(expr s)= err_cnt enddef; %------------------------------------------------------------------------------------------------- -def proc_err(expr e,n)= err_cnt:=err_cnt+1; err_adr[err_cnt]:=n; err_code[err_cnt]:=e; +def proc_err(expr e,n)= err_adr[incr err_cnt]:=n; err_code[err_cnt]:=e; if e<=6: err_str[err_cnt]:=" "; else: err_str[err_cnt]:=substring(n-3,n+2) of mc; fi enddef; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -def query(text s)= +def mc_query(text s)= begingroup save f_mcf,f_line,unit_row,unit_cnt,line_s,row_cnt,semic_cnt,info_cnt,order,min_n,key_cnt, info_s,sign_at,sign_n,filter_n,filter_tag,filter_var,filter_sign,filter_cnt,filter_p, @@ -1665,9 +1651,9 @@ def query(text s)= if sign_n=0: if sT="f": if scan_char(".",sV,0,1)=0: file_input:=sV&".mcf"; else: file_input:=sV; fi ef sT="o": if scan_char(".",sV,0,1)=0: file_output:=sV&".aux"; else: file_output:=sV; fi - ef sT="s": key_cnt:=key_cnt+1; key_s[key_cnt]:=sV; fi + ef sT="s": key_s[incr key_cnt]:=sV; fi else: - filter_cnt:=filter_cnt+1; filter_tag[filter_cnt]:=sT; filter_sign[filter_cnt]:=sign_n; + filter_tag[incr filter_cnt]:=sT; filter_sign[filter_cnt]:=sign_n; if (sign_n>=3)and(is_num(sV)=1): filter_var[filter_cnt]:=fix_num(sV); else: filter_var[filter_cnt]:=sV; fi fi @@ -1676,7 +1662,7 @@ def query(text s)= forever: temps:=readfrom file_input; exitif temps=EOF; if subc(1,temps)<>"%": - unit_row:=unit_row+1; line_s[unit_cnt][unit_row]:=temps; + line_s[unit_cnt][incr unit_row]:=temps; if (substring(0,2) of temps)="+-": row_cnt[unit_cnt]:=unit_row; f_mcf:=unit_row:=0; filter_n:=1; for i=1 upto filter_cnt: filter_p[i]:=0; endfor @@ -1757,12 +1743,10 @@ vardef is_num(expr s)= enddef; %------------------------------------------------------------------------------------------------- vardef split_semic(expr s)= - nN:=at_semic[0]:=0; - for i=1 upto length(s): if subc(i,s)=";": nN:=nN+1; at_semic[nN]:=i; fi endfor nN + nN:=at_semic[0]:=0; for i=1 upto length(s): if subc(i,s)=";": at_semic[incr nN]:=i; fi endfor nN enddef; %------------------------------------------------------------------------------------------------- vardef split_comma(expr s)= - nN:=at_comma[0]:=0; - for i=1 upto length(s): if subc(i,s)=",": nN:=nN+1; at_comma[nN]:=i; fi endfor nN + nN:=at_comma[0]:=0; for i=1 upto length(s): if subc(i,s)=",": at_comma[incr nN]:=i; fi endfor nN enddef; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -- cgit v1.2.3