code 31201; procedure LNG INT SUBTRACT(U,V,DIFFERENCE); integer array U,V,DIFFERENCE; begin integer LU,LV,DIFF,I,T,J,CARRY; LU:=U[0]; LV:=V[0]; if LU<LV or LU=LV and U[1]<V[1] then DIFFERENCE[0]:=0 else begin DIFF:=LU - LV + 1; CARRY:=0; for I:=LU step -1 until DIFF do begin T:=U[I] - V[I-DIFF+1] + CARRY; CARRY:=if T<0 then -1 else 0; DIFFERENCE[I]:=T - CARRY * 10 000 000 end; for I:=DIFF - 1 step -1 until 1 do begin T:=U[I] + CARRY; CARRY:=if T<0 then -1 else 0; DIFFERENCE[I]:=T - CARRY * 10 000 000 end; if CARRY=-1 then begin DIFFERENCE[0]:=0; goto READY end; I:=0; J:=LU; for I:=I+1 while DIFFERENCE[I]=0 and J>1 do J:=J-1; DIFFERENCE[0]:=J; if J<LU then for I:=1 step 1 until J do DIFFERENCE[I]:=DIFFERENCE[LU+I-J] end; READY: end LNG INT SUBTRACT; eop