Procedura obsahuje dvě závažné chyby 1. Parametr M je proceduře transp hodnotou. Z toho plyne, že bez ohledu na to, jaké je tělo procedury transp, nemůže tato nijak změnit hodnotu skutečného parametru, se kterým je zavolána. 2. I když tuto chybu odstraníme, je po zavolání procedury transp(MM) skutečný parametr MM nezměněn. Je to proto, že prvky symetrické podle diagonály jsou vyměněny dvakrát „tam a zase zpátky“. Správné řešení procedure transp( var M:matice); {procedura má transponovat matici M} var I,J : integer; Pom: real; begin with M do begin for I:=1 to D-1 do for J:=I+1 to D do begin Pom:=A[I,J]; A[I,J]:=A[J,I]; A[J,I]:= Pom; end; end; end;