From: obelix.informix.com!johnl@emory.mathcs.emory.edu (Jonathan Leffler)
Newsgroups: comp.databases.informix
Subject: Re: Improvements to I4GL
Date: 21 Dec 1992 06:48:08 -0500
Organization: Mailing List Gateway
Distribution: world
Reply-To: obelix.informix.com!johnl@emory.mathcs.emory.edu (Jonathan Leffler)
NNTP-Posting-Host: emory.mathcs.emory.edu
X-Informix-List-ID: <list.1728>


Dear Paul,

The following items are on my wishlist for I4GL, over and above the INPUT
ARRAY stuff which has already been supplied by other people.

* Dynamically configurable reports.

* Modular report code.  So you can call a function to do a standard block of
  PRINT statements without having to write it out several times.

* Concurrent activations of a single report, so that I could send one copy
  of the report to the screen, a second copy to the printer, and a third
  to the fax system, each with a different page size.

* An ELSIF clause.

* Removal of restrictions on where expressions can be used.  Eg: subscripts
  cannot be function calls or subscripted variables; substrings cannot be
  used in DISPLAY statements (INPUT statements, etc).

* Better format control for exponential notation decimal/float numbers.

* Mechanism to determine the current value of OPTIONS.

* ATTRIBUTE values should be able to be variables.  WINDOWS should be
  variables, so if I need an array of windows, I can use one.  Ditto
  forms.  I could then find the current window, make a different
  window current, then restore the current window.  Ditto for things like
  help files.

* Pass arrays between functions, even if only by reference.

* Pass records to functions by reference.

* Ability to define constants for use in array dimensions, etc (#cefine).

* Ability to include multiple globals files. (#include) Actually, should
  also be able to include definitions too -- and arguably arbitrary code.

* Conditional compilation. (#if, #ifdef)

* Ability to hide functions. (static)

* Vertical menus.

* String concatenation in source code.

    PREPARE st_select FROM
        "SELECT * FROM Quoted_products"
        " WHERE Product_code = ?"

* Allow question marks in directly declared cursors.

    DECLARE c_select CURSOR FOR
        SELECT * FROM Quoted_products
            WHERE Product_code = ?

* More powerful picture validation.

* Ability to have arrays of word-wrapped fields in a form.

* Ability to distinguish between a blank and a null field in a form.

* Ability to find dimension of screen array.  Ditto dimensions of window,
  position of menu line, prompt line, comment line, etc.

* PROMPT "Password: " FOR password WITHOUT ECHO.

* Screen dumps.

* Program Compile should be able to compile forms, and should recognise
  globals files. (RDS does recognise globals, I4GL does not -- this
  difference is unforgivable!)

* RDS should be provided with a library tool and a linker to use the
  libraries.  I have a pair of programs called RDSLIB and RDSLINK.  RDSLIB
  is like RANLIB; it creates a symbol-table file at the beginning of an
  archive (with extension .4ga) which contains the symbols defined by .4go
  files in the archive.  RDSLINK concatenates the .4go files and scans the .4ga
  archives to produce an interpretable .4gi file.

I am studiously ignoring any inside information on what is going to happen
in the next release of I4GL -- these features are simply a list of the
principal modifications that I think should be made to I4GL.

I trust that you will eventually post a summary to the net of the changes
suggested.

Yours,
Jonathan Leffler (johnl@obelix.informix.com) #include <disclaimer.h>

Newsgroups: comp.databases