PROGRAM another_procedure_example;

VAR count : INTEGER;
    index : INTEGER;

PROCEDURE print_data_out(puppy : INTEGER);
BEGIN
  WRITELN('This is the print routine',puppy:5);
  puppy := 12;
END;

PROCEDURE print_and_modify(VAR cat : INTEGER);
BEGIN
  WRITELN('This is the print and modify routine',cat:5);
  cat := 35;
END;

BEGIN  (* main program *)
FOR count := 1 TO 3 DO
BEGIN
  index := count;
  print_data_out(index);
  WRITELN('Back from the print routine, index =',index:5);
  print_and_modify(index);
  WRITELN('Back from the modify routine, index =',index:5);
  print_data_out(index);
  WRITELN('Back from print again and the index =',index:5);
  WRITELN;  (* This is just for formatting *)
END;
END.  (* of main program *)