TEAM-ADA Archives

Team Ada: Ada Programming Language Advocacy


Options: Use Classic View

Use Monospaced Font
Show Text Part by Default
Show All Mail Headers

Topic: [<< First] [< Prev] [Next >] [Last >>]

Print Reply
"Robert C. Leif, Ph.D." <[log in to unmask]>
Mon, 13 Sep 1999 08:07:53 -0700
text/plain (201 lines)
From: Bob Leif
To: Richard Conn et al.

<form METHOD= "post" ACTION="file://C|\Ada_Work\html_small_read.exe" >
did not work. In both cases, the Ada program opens puts its name on the
screen and sits. Windows Explorer first asks about saving it to disk and
then about its lack of an internal signature. However, I overrode both and
it opened.

If we are this close, I would greatly appreciate it if someone would make
this combination work. I would hope that it would serve as the basis of the
simplest example for the next CD-ROM or its successor. This is actually
based on David  Wheeler's Ada 95 Binding to CGI. Unfortunately, I could
never make it work in my client only environment. Therefore, I wrote a
simple HTML file and Ada test program. Once these work, I and I hope others
will be able to work out the rest. For instance, I plan to transform the
input to one or more bounded strings prior to further processing.
-----Original Message-----
From: Team Ada: Ada Advocacy Issues (83 & 95)
[mailto:[log in to unmask]]On Behalf Of Richard L. Conn
Sent: Monday, September 13, 1999 7:15 AM
To: [log in to unmask]
Subject: Re: How to provide Ada with the best possible GUI.

Robert pointed out an issue that I forgot to mention.  Since a URL is
in play for the action to respond to a form, you can use the file:
scheme to specify a program on your PC to handle the action.
This totally eliminates the need for a Personal Web Server.
All you need is to have your HTML page, your client (browser), and
your Ada engine on the PC you are personnally using.

Re Robert's question, I have not tried it, but I suspect you should
stick to specifying the file: scheme for portability.  Also, C: will
probably have to be replaced with C| (C-bar) since many URL parsers
don't like two colons in the URL.

Good catch, Robert.

Richard Conn, ASE and PAL Manager

> -----Original Message-----
> From: Robert C. Leif [mailto:[log in to unmask]]
> Sent: Sunday, September 12, 1999 12:53 PM
> To: Richard L. Conn
> Subject: RE: How to provide Ada with the best possible GUI.
> To: Richard Conn
> From: Bob Leif
> I have included a very simple HTML screen. I believe this would be a very
> simple example for your write-up.
> -----------------------------------------------------
> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
> <html>
> <head>
> <meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=Latin1">
> <meta HTTP-EQUIV="Content-Language" CONTENT="en-us">
> <title>(Test_Ada)</title>
> </head>
> <body BACKGROUND="" BGCOLOR="#ffffff" TEXT="#000000" LINK="#0000ff"
> VLINK="#800080" ALINK="#ff0000">
> <form METHOD= "post" ACTION="file://C:\Ada_Work\html_small_read.exe" >
> <textarea NAME="Test_String" ROWS="1" COLS="10"></textarea>
> <input TYPE="submit" VALUE="Submit Form">
> <input TYPE="Reset" VALUE="Reset Form">
> </form>
> </body>
> </html>
> ------------------------------------------------------------------
> First question: "~URL to data server~" should this be
> file://C:\Ada_Work\html_small_read.exe or
> C:\Ada_Work\html_small_read.exe
> ------------------------------------------------------------------
> with Ada.Text_Io;
> with Ada.Exceptions;
> procedure Html_Small_Read is
>    Prog_Location : constant String := "HTML_Small_Read";
>    package T_Io renames Ada.Text_Io;
>    Max_Line_Length : Natural := 10;
>    subtype Line_Type is String(1..Max_Line_Length);
>    Line : Line_Type := "No input! ";
>    Char : Character := ' ';
>    End_Of_Line : Boolean := True;
>    Line_Length : Natural := 0;
> begin --
>    T_Io.Put_Line (Prog_Location);
>    T_Io.New_Line;
>    T_Io.Get(Item => Line);
>    T_Io.Put_Line("The Line was " & Line);
>    Hold_On_Screen:
>       for I in 1..100 loop
>       T_Io.Put("The Line was " & Line);
>    end loop Hold_On_Screen;
>    T_Io.Put_Line("Ending HTML_File_Test");
>    T_Io.Put_Line("");
> exception
>    when O: others  =>
>       T_Io.Put_Line (Ada.Exceptions.Exception_Information (O));
>       T_Io.Put_Line (Ada.Exceptions.Exception_Message (O));
> end Html_Small_Read;
> ------------------------------------------------------------------
> After I submit the form, it goes to the program and prints the Pkg_Name
> Description of html_small_read.exe
> It reads in the 10 letter string and puts it to the screen.
> I actually originally attempted to put the form data to a log
> file. However
> I made this real simple. I output the data in a loop to make sure
> I can see
> it.
> Unfortunately, the program never gets past placing its name on
> the screen. I
> believe it is waiting for the string.
> Thank you.
> Bob
> -----Original Message-----
> From: Team Ada: Ada Advocacy Issues (83 & 95)
> [mailto:[log in to unmask]]On Behalf Of Richard L. Conn
> Sent: Saturday, September 11, 1999 6:56 PM
> To: [log in to unmask]
> Subject: Re: How to provide Ada with the best possible GUI. was RE: Two
> interesting approaches to job hunting and more
> The upcoming Ada and Software Engineering CDROM (which will be
> distributed to all SIGAda 99 attendees) will have material on
> this topic, so you can look there for more details.
> Basically, we have this in a nutshell:
> 1. Any HTML form is of the following format (in HTML)
>   <form method="POST" action="~URL to data server~">
>   ... form-oriented tags and normal HTML tags ...
>   <input type="submit" value="text on SUBMIT button">
>   </form>
> where ~URL to data server~ is the URL of your Ada program, acting
> as a data
> server.  I referenced the POST method here, but GET works just as well.
> What POST does is send the data from the form into standard input of the
> data server, where GET sends the data from the form into a (sometimes
> very long) command line.  The Ada program is a normal Ada
> program, residing
> in a Common Gateway Interface directory or subdirectory.
> The INPUT tag causes a SUBMIT button to be displayed with the indicated
> text.  When the user presses this button, the data in the various
> fields of
> the form (text boxes, etc) is encoded into one of the enctypes and sent to
> the
> standard input of the data server indicated in the URL (in this case, an
> Ada program).  I forget the name of the "standard" enctype offhand.
> 2. Once the Ada program (acting as a data server) receives the
> enctype-encoded
> data, it simply decodes/parses it and performs its function (stores data,
> etc).
> 3. The Ada program should usually send a message back to the user,
> confirming
> the transaction.  To do this, the Ada program has to compose a web page
> (using
> HTML) and simply send it to standard output.  The only hitch is
> to remember
> to
> start that web page with:
>   Content-type: text/html
>   ... blank line ...
>   ... your program-composed HTML ...
> That's about it ... no rocket science here.  Most of the tricks I had to
> deal with were within the Ada program, addressing issues surrounding the
> problems associated with multiple copies of the same program
> running at the
> same time.  All data files had to be unique, and any generated scripts had
> to have unique names as well.
> Rick
> ----------------------------------
> Richard Conn, ASE and PAL Manager
> SNIP to end