Re: Pascal program file parameter to Ada translation (Was: Re: Is GPC dead?)

Leo Brewin <[email protected]> Wed, 4 Jan 2017 20:21:44 +1100
Newsgroups gmane.comp.compilers.gpc
Message-ID <CAP-nitJ==RHqAmqqwZNo_0U4atbvez1cXL+yBVSZoHCSDs127A@mail.gmail.com>
Whoops, a minor typo, that short pascal file should have been

program shell;
var
   afile: text;
begin
   Create(afile,out_file,"foo.txt");
   writeln(afile, 'shell output');
end.

Notice the second argument to Create: out_file. Ada is very picky, you have
to tell it that you want to write to the file "foo.txt".

If you want to read from a file use

Open (afile,in_file,"bah.txt");

rather than reset(afile,"bah.txt")

Cheers,
Leo


On 4 January 2017 at 20:11, Leo Brewin <[email protected]> wrote:

> The problem is not with Ada (or Ada.Command_Line) but rather that p2ada
> doesn't understand reset or rewrite (!). But it does understand Open and
> Create (and Append for cases where the file already exists). P2ada is not
> prefect and it does require manual intervention though it will do a
> reasonable job most times. Don't be discouraged by this less than
> ideal translation for your short program (I agree it doesn't look like a
> promising start). Here is a short variation on the original program that
> will be correctly translated to Ada by p2ada,
>
> program shell;
> var
>    afile: text;
> begin
>    Create(afile,"foo.txt");
>    writeln(afile, 'shell output');
> end.
>
> Two points to note
> 1) don't include *any* file variables in the Program name,
> 2) you must provide a file name for each call Open/Create/Append.
>
> If you do decide to continue exploring p2ada I can give you some hints on
> other quirks in the p2ada process.
>
> Cheers,
> Leo
>
>
> On 4 January 2017 at 19:22, Gale Paeper <[email protected]> wrote:
>
>>
>> > On Jan 3, 2017, at 10:08 PM, Schneider <[email protected]> wrote:
>> >
>> > Leo:
>> >
>> >> https://sourceforge.net/p/p2ada/code/HEAD/tree/
>> >> http://p2ada.sourceforge.net/pascada.htm
>> >
>> > I looked into this last July.  I got the converter going and I got the
>> > compiler running.  My final note:
>> >
>> >> 2016 Jul 18
>> >>
>> >> Currently hung because ada cannot handle files other than input and
>> output.
>> >> That is, it crashes if one tries to writeln(afile, 'something');
>> >
>> > Example:
>> >
>> > program shell(afile, output);
>> > var
>> >   afile: text;
>> > begin
>> >   rewrite(afile);
>> >   writeln(afile, 'shell output');
>> > end.
>> >
>> > This produces a file called 'afile' with contents 'shell output'.  It
>> > compiles with FPC and translates to c and compiles with p2c.  Ada
>> > can't handle it.  I suspect there is a way to do it but could not find
>> > the documentation.
>>
>> Hmm... While I don't know Ada well enough to be even considered
>> dangerous, I think the solution you're looking for lies in Ada'a
>> Ada.Command_Line package which has the procedures that provide for reading
>> the command line parameter text file name that Pascal's runtime system
>> automatically associates to the "afile" file variable.  Once you have the
>> name then you use Ada.Text_IO package's procedures to create the file and
>> output to it.
>>
>> Ada'a mechanism for connecting to external command line parameters has
>> more of a C argv argc style of parameter associating mechanism than
>> Pascal's program parameter list of file variable names where the runtime
>> system automatically associates the external command line parameter with
>> the program's internal fileparameter.
>>
>> I'm not sure how Ada's file handling procedures deal with the legal usage
>> possibilities of Pascal's rewrite procedure.  Rewrite does the "Right
>> thing" regardless whether the file already exits or not.  I don't know if
>> both cases are automatically handled by Ada's runtime system in a similar
>> Pascal runtime system manner or if you have to check which case you have
>> and then have code to deal separately with each case.
>>
>> Gale Paeper
>> [email protected]
>>
>>
>> _______________________________________________
>> Gpc mailing list
>> [email protected]
>> https://www.g-n-u.de/mailman/listinfo/gpc
>
>
>

_______________________________________________
Gpc mailing list
[email protected]
https://www.g-n-u.de/mailman/listinfo/gpc