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