СквознякЯ предполагал, что fpc (или fp) использует ppc386 при компиляции, поэтому искал файл настроек с директивами, которые можно прописать и в командной строке. Как оказалось, fp и ppc386 - два независимых приложения.
Sergei I. GorelkinВидимо, речь все таки идет о ключе ключе -WС. Да, теперь компилируется.
Но при компиляции компилером версии 1.0.10 возникла другая ошибка 203. Переполнение кучи. 
Runtime error 203 at адрес
 и еще несколько адресов ниже 
 указана строка с кодом GetMem(ARRM[I], sizeof(ARRM[I]^));
При использовании компилятора версии 2.4.4 такой ошибки не возникает. Но нужно разобраться именно с ошибкой компилятора более ранней версии.
Компилирую как и раньше командной строкой через ppc386.
Настройки .bat файла:
\FPC\2.4.4\bin\i386-win32\ppc386 -Sd -Sg -Un -O1 -Xs -gl %1 -FU<директория модулей> -Foc:<директория модулей> -WC -WN
При запуске программы предполагается ввод большого числа(например, 20000), так чтобы выполнилась часть кода в except.
Вот код:
- Код: Выделить всё
 program Project4;
//uses Windows, SysUtils, dos;
{ H+}
{ mode Delphi}
{ apptype console}
const
  NNMAT=30000;{8100;}{4096;}{16380;}
  NNARR=30000;
type
  MAS = array [0..NNMAT-1] of Double;
  ARR = ^MAS;
  MAS2 = array [0..NNARR] of ARR;
  PMAS2 = ^MAS2;
var {-------------------------------}
  NMAT0, NMAT: INTEGER;
  ARRM: array [0..NNARR] of ARR;
  ARR0: ARR;
  GE:DWORD;
procedure MAT_PRED(N:INTEGER);
var
  NN, I: LONGINT;
begin
  NN:= SQR(N);
  I:= 0;
  NMAT:= 0;
  while (NMAT < NN) AND (I < NNARR) DO
  begin
    try
      GetMem(ARRM[I], sizeof(ARRM[I]^));
      //sizeof(Double)*NNMAT
    except
      Writeln('It was GOTO',#$20,I,#$20,NMAT);
      Dec(NMAT);
    end;
    Inc(I);
    Inc(NMAT, NNMAT);
//    writeln(I,' ',NMAT,' '{,MEMAVAIL,' ',MAXAVAIL});
  end;
 NMAT0:= NMAT;
 Writeln(I,' ',NMAT0);
end;{MAT_PRED}
var
  N: INTEGER;
begin
  WRITEln('N=');
  READLN(N);
  MAT_PRED(N);
  WRITELN('Filled Memory: ',SQRT(NMAT0):9:3);
  READLN;
end.