From: "Jeffrey R. Carter" <spam.jrcarter.not@spam.not.acm.org>
Subject: Re: Simple call of Procedure in package from a main program
Date: Sat, 31 Oct 2015 10:54:01 -0700
Date: 2015-10-31T10:54:01-07:00 [thread overview]
Message-ID: <n12v3l$i78$1@dont-email.me> (raw)
In-Reply-To: <4d618dd3-3bc1-4afc-8e74-78aca76b0b09@googlegroups.com>
On 10/31/2015 05:53 AM, comicfanzine@gmail.com wrote:
>
> [code]with ada.text_io ; use ada.text_io ;
> with identification; use identification;
>
> Procedure User_or_admin is
>
> begin
>
> New_Line ;
>
> Put_line("Hello user, what's your name");
>
> yes_or_no;
Identification.Yes_Or_No has a mode-in parameter, Password, without a default,
and you do not supply it.
>
> if Password = "admin"
There is nothing named Password visible here.
> then Put_Line("Welcome administrator");
> end if; end User_or_admin ;
> [/code=ada]
>
> [code]with ada.text_io ; use ada.text_io ;
>
> package identification is
This appears to be a package body, but the reserved word "body" is missing after
"package".
>
> Procedure yes_or_no is
>
> Password : String(1..5) ;
>
> Begin
>
> declare
>
> name : String := ada.text_io.get_line ;
>
> begin
> if name = "fanzine"
> then Put("what is the password : ") ;
> Get(Password) ; New_Line ; Skip_line ;
>
> elsif name /= "fanzine"
You know that Name /= "fanzine" if you get here.
> then Put_line("You're not administrator") ;
>
> end if;
>
> end ;
>
> end yes_or_no;
>
> end identification;[/code=ada]
>
> [code]package identification is
>
> Procedure yes_or_no (Password : String );
There is no body for this procedure declaration. The procedure body Yes_Or_No in
the package body has no parameters, so it is a different procedure from this one.
>
> end identification;[/code=ada]
It seems to me you need something like
package Identification is
subtype Password_Value is String (1 .. 5);
procedure Get (Password : out Password_Value);
end Identification;
with Ada.Text_IO;
with Identification;
procedure Log_In is
Password : Identification.Password_Value;
begin -- Log_In
Identification.Get (Password => Password);
if Password = "admin" then
Ada.Text_IO.Put_Line (Item => "Welcome, Administrator.");
end if;
end Log_In;
with Ada.Text_IO;
package body Identification is
procedure Get (Password : out Password_Value) is
begin -- Get
Ada.Text_IO.Put (Item => "Hello, User. What's your name? ");
Get_Name : declare
Name : constant String := Ada.Text_IO.Get_Line;
begin -- Get_Name
if Name /= "fanzine" then
Ada.Text_IO.Put_Line (Item => "You're not Administrator.");
-- There is a 1 / 256 ** 5 chance that Password will contain "admin"
else
Ada.Text_IO.Get (Item => Password); -- Requires 5 characters
Ada.Text_IO.Skip_Line;
Ada.Text_IO.New_Line;
end if;
end Get_Name;
end Get;
end Identification;
--
Jeff Carter
"Monsieur Arthur King, who has the brain of a duck, you know."
Monty Python & the Holy Grail
09
next prev parent reply other threads:[~2015-10-31 17:54 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-10-31 12:53 Simple call of Procedure in package from a main program comicfanzine
2015-10-31 15:52 ` mockturtle
2015-10-31 17:32 ` comicfanzine
2015-10-31 17:54 ` Jeffrey R. Carter [this message]
2015-11-01 10:50 ` comicfanzine
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox