В качестве подпрограммы можно оформить определение того факта, является ли число автоморфным. Таким образом, на вход подпрограммы будет "подаваться" число, а на выходе будет находиться значение логического типа. Таким образом, подпрограмма будет реализована в виде функции.

    Функция, определяющая автоморфные числа, может быть следующей:

    Приведем текст программы:

Program Problem43_2; 
Var
  N,Tek_Kol:Byte;
  i:Word;
Function Automorph(X:Word):Boolean;
{Функция определяет, автоморфное число или нет.}
{Входные параметры - натуральное число.}
{Выходное значение - True (число автоморфное),}
{False - в противном случае.}
Var
  Y:Word;
  S1,S2,S3:String[10];
Begin
  Y:=X*X; {Квадрат числа.}
  {Переводим числа в строки.}
  Str(X,S1);
  Str(Y,S2);
  {Копируем последние цифры квадрата.}
  S3:=Copy(S2,Length(S2)-Length(S1)+1,Length(S1));
  If S1=S3 Then Automorph:=True Else Automorph:=False;
End;
Begin
  WriteLn('Количество автоморфных чисел');
  ReadLn(N);
  Tek_Kol:=0; {Количество найденных чисел.}
  i:=1; {С какого числа начинаем поиск.}
  While Tek_Kol<>N Do
    Begin
      If Automorph(i) Then
          Begin
            WriteLn(i);
            Tek_Kol:=Tek_Kol+1;
          End;
      i:=i+1; {Переходим к следующему числу.}
    End;
End.
Текст этой программы можно взять здесь.