code 31100;
procedure LNGREATODECI(X,XX,S,MANT,EXPO);
value X,XX,S;integer S,EXPO;real X,XX;integer array MANT;
begin integer I,K;
real P,PP;
MANT[0]:=SIGN(X);if X<0then begin X:=-X;XX:=-XX"END";
if X=0then EXPO:=0
else EXPO:=ENTIER(LN(X)/LN(10))+1;
DP POW(10,-EXPO,P,PP);
LNG MUL(X,XX,P,PP,X,XX);
for I:=0while ENTIER(X)=0 & X^=0 do
begin LNG MUL(X,XX,10,0,X,XX);EXPO:=EXPO-1end;
for I:=1step 1until S"DO"
begin K:=ENTIER(X);if K>9then K:=9;MANT[I]:=K;
LNG SUB(X,XX,K,0,P,PP);LNG MUL(P,PP,10,0,X,XX)
end;
if ENTIER(X)>=5
then begin for I:=S"STEP"-1until 1do
begin K:=MANT[I]+1;
if K<10then begin MANT[I]:=K;goto READY
end;
MANT[I]:=0
end;
EXPO:=EXPO+1;
if S>0then MANT[1]:=1;
READY:
end;
EXPO:=EXPO+1
end LNGREATODECI;
eop