$ include "seed7_05.s7i";

const proc: genSort3 (in type: elemType) is func
  begin
    global

    const proc: doSort3 (in var elemType: x, in var elemType: y, in var elemType: z) is func
      local
        var array elemType: sorted is 0 times elemType.value;
      begin
        writeln("BEFORE: x=[" <& x <& "]; y=[" <& y <& "]; z=[" <& z <& "]");
        sorted:= sort([](x, y, z));
        x:= sorted[1];
        y:= sorted[2];
        z:= sorted[3];
        writeln("AFTER: x=[" <& x <& "]; y=[" <& y <& "]; z=[" <& z <& "]");
      end func;

    end global;
  end func;

genSort3(integer);
genSort3(string);

const proc: main is func
  begin
    doSort3(77444, -12, 0);
    doSort3("lions, tigers, and", "bears, oh my!", "(from the \"Wizard of OZ\")");
  end func;