comp.lang.ada
 help / color / mirror / Atom feed
From: comicfanzine@gmail.com
Subject: Re: Simple call of Procedure in package from a main program
Date: Sat, 31 Oct 2015 10:32:35 -0700 (PDT)
Date: 2015-10-31T10:32:35-07:00	[thread overview]
Message-ID: <7c35be60-955d-4ea2-be28-3219904b9c8f@googlegroups.com> (raw)
In-Reply-To: <cd284dff-c1b6-41ca-bbe9-6fd88bbd073a@googlegroups.com>

Le samedi 31 octobre 2015 16:52:30 UTC+1, mockturtle a écrit :
> I see two syntax problems: first, in identification.adb "body" is missing (is "package body Identification is..." not "package Identification is..."). Moreover, Password is declared inside yes_or_no, so it is not visible to the main program, actually, when the control returns to the main Password does not exist anymore (a local variable like Password is created when the procedure is called and destroyed when the procedure finishes).
> 
> In order to make it work, you should move Password in a place visible to both the main and Identification, that is, in the spec file identification.ads.  It is not the best style, though; maybe a better solution would be to have yes_or_no returning the read password.
> 
> A final suggestion: when asking for help for a program that does not compile, add also the error messages you get.  It will help a lot other people helping you.
> 
> 
> Riccardo
> 
> On Saturday, October 31, 2015 at 1:53:33 PM UTC+1, comicf...@gmail.com wrote:
> > Hello everyone ,
> > 
> > I have a simple main program , who call a procedure in a package but it not compile . In total , i have 3 files(1 main program , 1 packagefile.adb , and , 1 packagefile.ads) :
> > 
> > user_or_admin.adb(main program) :
> > 
> > [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;
> > 	   
> >         if Password = "admin"
> >             then Put_Line("Welcome administrator");
> > end if;                       end User_or_admin ;
> > [/code=ada]
> > 
> > identification.adb(packagefile)
> > 
> > [code]with ada.text_io ;    use ada.text_io ;
> > 
> > package identification is
> > 
> > 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"
> >              then Put_line("You're not administrator") ; 
> > 	     
> >       end if;
> > 
> >     end ;
> >     
> > end yes_or_no;
> > 
> > end identification;[/code=ada]
> > 
> > identification.ads(packagefile)
> > 
> > [code]package identification is
> > 
> >    Procedure yes_or_no (Password :  String );
> >    
> > end identification;[/code=ada]
> > 
> > If you stil don't understand what i want to do after reading the files , i explain :
> > 
> > In the main program , after Put_line i want to have the procedure in the packagefile be executed , so after the Hello[...] : do the get_line which is in the packagefile and do the "if-then" condition after it , and finaly if this "if-then" condition is valid , do the Password condition . 
> > 
> > Don't hesitate to correct the files if you think what i want to do correspond what you doing . 
> > 
> > Thanks for you time , it is always a pleasure to code in Ada and have the help of others ada programers .



Le samedi 31 octobre 2015 16:52:30 UTC+1, mockturtle a écrit :
> I see two syntax problems: first, in identification.adb "body" is missing (is "package body Identification is..." not "package Identification is..."). Moreover, Password is declared inside yes_or_no, so it is not visible to the main program, actually, when the control returns to the main Password does not exist anymore (a local variable like Password is created when the procedure is called and destroyed when the procedure finishes).
> 
> In order to make it work, you should move Password in a place visible to both the main and Identification, that is, in the spec file identification.ads.  It is not the best style, though; maybe a better solution would be to have yes_or_no returning the read password.
> 
> A final suggestion: when asking for help for a program that does not compile, add also the error messages you get.  It will help a lot other people helping you.
> 
> 
> Riccardo
> 

Thanks , i have put "body" like you said for the first syntax problem and i understand that Password is invisible to the main program , but i don't understand your second point about moving Password , can you be more specific or(and) explain me with the code ? 

Also here is the 2 errors:

user_or_admin.adb:12:12: missing argument for parameter "Password" in call to "Yes_Or_No" declared at identification.ads:3
user_or_admin.adb:14:12: "Password" is undefined


  reply	other threads:[~2015-10-31 17:32 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 [this message]
2015-10-31 17:54 ` Jeffrey R. Carter
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