-- Integer variables: declaration, operations, output
with ada.text_io; use  ada.text_io;
with ada.integer_text_io; use ada.integer_text_io;   -- Library for integer IO

PROCEDURE int1  is  
    i: Integer := 11;
    j: Integer; 
    sum, half, remainder: Integer;
BEGIN                  
    j := 22;
    sum := i + j;

    half := sum / 2;            -- Integer division

    remainder := sum mod 2;     -- Remainder operation

    -- OUTPUT USING ADA.INTEGER.TEXT_IO
    put(sum);                           -- Default width is 11
    new_line;                           -- No put_line for integers

    put(half, width => 1);              -- MINIMUM width of 1.  KEYWORD parameter.
    new_line;


    -- OUTPUT USING ADA.TEXT_IO
    put_line(Integer'image(remainder));      -- Image attribute of type Integer.  
                                             -- Like toString.  Must call explicitly.

    put_line(remainder'img);                 -- Img attribute of variable remainder.  
                                             -- Not standard.  Like toString.

    put_line(Integer'image(-remainder));     -- Space for minus sign
END  int1;                    

-- Output:
--|         33
--|16
--| 1
--| 1
--|-1