with Ada.Text_IO; use Ada.Text_IO; with Ada.Characters.Handling; use Ada.Characters.Handling; procedure rot13 is rot13_table : constant array (Positive range <>) of Character := ('N','O', 'P','Q','R','S','T','U','V','W','X','Y','Z','A', 'B','C','D','E','F','G','H','I','J','K','L','M'); zeichen : Character; c : Integer; begin loop Get_Immediate(zeichen); c := Character'Pos(zeichen); case c is when 65 .. 90 => zeichen := rot13_table(c-64); when 97 .. 122 => zeichen := To_Lower(rot13_table(c-96)); when others => null; end case; Put(zeichen); end loop; exception when END_ERROR => null; end rot13;