Qual significado 100000000 tem como limite de overflow em Pascal?

Qual significado 100000000 tem como limite de overflow em Pascal?

Uma conversa recente sobre software livre de bugs em funcionamento levou a uma discussão sobre o TeX (que é considerado virtualmente livre de bugs, embora possa ser tecnicamente falso). Como o código-fonte do TeX está extensivamente documentado em"TeX: O Programa", demos uma olhada interna e escolhemos um procedimento que não ficou claro à primeira e à segunda vista. É uma implementação de print_int, que é §65 naquele livro na página 28. Sua documentação diz:

@ The following procedure, which prints out the decimal representation of a given integer |n|, has been written carefully so that it works properly if |n=0| or if |(-n)| would cause overflow. It does not apply |mod| or |div| to negative arguments, since such operations are not implemented consistently by all \PASCAL\ compilers.

O procedimento em si é assim (código retirado da fonte WEB):

procedure print_int(@!n:integer); {prints an integer in decimal form}
var k:0..23; {index to current digit; we assume that $|n|<10^{23}$}
@!m:integer; {used to negate |n| in possibly dangerous cases}
begin k:=0;
if n<0 then
  begin print_char("-");
  if n>-100000000 then negate(n)
  else  begin m:=-1-n; n:=m div 10; m:=(m mod 10)+1; k:=1;
    if m<10 then dig[0]:=m
    else  begin dig[0]:=0; incr(n);
      end;
    end;
  end;
repeat dig[k]:=n mod 10; n:=n div 10; incr(k);
until n=0;
print_the_digs(k);
end;

Embora o algoritmo em si seja bastante compreensível (afinal, ele está apenas imprimindo um número), não conseguimos entender qual o significado do número 100000000 no contexto dos compiladores Pascal da época. A documentação menciona estouros, no entanto, eu esperaria que um estouro acontecesse em um limite de "potência de dois" e não em "potência de dez".

Qual é a explicação ou significado deste número? Isso é um compilador ou uma peculiaridade do padrão de linguagem?

informação relacionada