Program Magisches_Quadrat_version1;
const max = 3;
var
   quadrat : array[1..max,1..max] of integer;
   zeile, spalte: integer;
   eintrag : integer;
begin {quadrat }
      for zeile := 1 to max do
      for spalte := 1 to max do
      quadrat[ zeile, spalte ] := 0;
      zeile := 1;
      spalte := 2;
      eintrag := 1;
      quadrat[ zeile, spalte ] := eintrag;
      while eintrag <= max*max do
      begin
      if zeile = 1 then
         begin
              if spalte = max then
                 zeile := zeile +1
                 else
                 begin
                      spalte := spalte +1;
                      zeile := max;
                 end;
         end { zeile = 1}
         else
         begin { Zeile <> 1 }
               if spalte = max then
                  begin
                       zeile := zeile -1;
                       spalte := 1;
                  end
                  else
                  begin
                       spalte := spalte +1;
                       zeile := zeile -1;
                       if mag_quadrat[ zeile, spalte ] <> 0 then
                       begin
                            spalte := spalte - 1;
                            zeile := zeile + 2;
                       end;
                  end;
         end;
         eintrag := eintrag +1;
         mag_quadrat[ zeile, spalte ] := eintrag;
      end; { of while }
      for zeile := 1 to max do
      begin
           for spalte := 1 to max do
           write(mag_quadrat[ zeile, spalte ],' ');
           writeln;
      end;
      readln
end. {Quadrat}
Version2