Spreadsheet Application
WITH Ada.Text_IO;
WITH Ada.Integer_Text_IO;
WITH Spreadsheet;
WITH Spreadsheet.IO;
PROCEDURE Use_Spreadsheet IS
------------------------------------------------------------------
--| Example of Use of the Spreadsheet package
--| for a simple spreadsheet.
--|
--| Authors: Duane Jarc, Michael Feldman
--| The George Washington University
--| Last Modified: October 1996
------------------------------------------------------------------

  SUBTYPE Rows IS Integer Range 1..12;
  SUBTYPE Students IS integer RANGE 1..10;
  Name_Length: CONSTANT Positive := 10;

  TYPE Columns IS (A,B,C,D,E,F);
  PACKAGE Grades_Sheet IS
    NEW Spreadsheet(Rows, Columns, Name_Length);

  PACKAGE Grades_Sheet_IO IS NEW Grades_Sheet.IO;
  USE Grades_Sheet, Grades_Sheet_IO;

  Name: String(1..10);
  Grade: Integer;

BEGIN

  FOR Row IN Students LOOP
    Ada.Text_IO.Get(Item => Name);
    Set(Cell => A-Row, A_String => Name);
    FOR Column IN B..F LOOP
      Ada.Integer_Text_IO.Get(Item => Grade);
      Set(Cell => Column-Row, An_Integer => Grade);
    END LOOP;
  END LOOP;

  Set(Cell => A-12, A_String => "Minimum");
  FOR Column IN B..F LOOP
    Set(Cell => Column-12,
    A_Function => Integer_Minimum,
    Block => (Column-1)-(Column-10));
  END LOOP;

  Set(Column_Slice => A-A, Width => Name_Length);
  Set(Column_Slice => B-F, Width => 6);
  Print(Block => (A-1)-(F-12));

END Use_Spreadsheet;