Pascal News
Pascal News
Pascal News
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
2578<br />
2579<br />
2580<br />
2581<br />
2582<br />
2583<br />
258q<br />
2585<br />
2586<br />
2587<br />
2588<br />
2589<br />
2590<br />
2591<br />
2592<br />
2593<br />
2594<br />
2595<br />
2596<br />
2597<br />
2598<br />
2599<br />
2600<br />
2601<br />
2602<br />
2604<br />
2605<br />
2606<br />
2607<br />
2608<br />
2609<br />
2610<br />
2611<br />
2612<br />
2613<br />
2614<br />
2615<br />
2616<br />
2617<br />
2618<br />
2619<br />
2620<br />
2621<br />
2622<br />
2623<br />
2624<br />
2625<br />
2626<br />
2627<br />
2628<br />
2629<br />
2630<br />
2631<br />
2632<br />
procedure setexpr(fsys:sos; var c:boolean; var v:integer);<br />
{level 2: « bu11dset}<br />
{update lsp and sz variables of build set and set c and v parameters}<br />
var min ,max : integer ; errno :integer;<br />
be&1D with a do bealn c:=false;v:=O;<br />
expresslon(fsys); asp:=desub(asp);<br />
if aspnU tIleD<br />
bealn<br />
it lsp=nU then<br />
beain errno: =0;<br />
If not bounds(asp,min,max) tben<br />
it asp=intptr tIleD max:=lopt-l .else errno:=+0190;<br />
if max> (maxsetsize-l )*byteb its + (bytebits-l) tben<br />
errno: =+0191;<br />
it errnoO tben bealn asperr(errno); max:=O end;<br />
sz:=even(max dlv bytebits + 1); lsp:=asp;<br />
eDCI<br />
else {aspnil and lspnil}<br />
it asplsp tbion asperr(+0192);<br />
it ak.cst tIleD<br />
it pos.adO then<br />
for i:=l to sz dlv wordslze do genwordset(cstpart[iJ);<br />
If varpart Bod (ncst>O) then genHop_lor,sz);<br />
eDCI<br />
elld end;<br />
procedure factor( fsys: ~os);<br />
var lip:ip; 11,I:integer; lsp:sp;<br />
bea1D with a do begin<br />
asp:=nU; packbit:=false; ak:=loaded;<br />
it findl ([notsy.. nllcst,lparentJ,fsys,+0198) then<br />
case sy of<br />
ident:<br />
beain lip:=searchld([konst,vsrs,field,func ,carrbndJ); Insym;<br />
case lip~.klass of<br />
fune: {call moves result to top stack}<br />
bea1D call(fsys,lip); ak:=loaded; packbit:=false end;<br />
konst:<br />
bea1D asp:=lip~ .idtype;<br />
if nicescalar(asp) tben !including asp=nil}<br />
bea1D ak:=cst; pos.ad:=lip~ .value end<br />
else<br />
beg1D ak: =ploaded;<br />
11: =lino; gend(op_lae ,abs(lip~ .value»;<br />
if asp~ .form=scalar tben<br />
bea1D load; it lip~ .value<br />
en<br />
n<br />
J><br />
..-<br />
z:<br />
m<br />
:E:<br />
en<br />
......<br />