Aestiva Reference v4.67.34 -

The HTML/OS Environment          
HTML/OS Tag Search
View by Category
The File
The Overlay Tag
Names and Values
Default Values
Mathematical Operations
HREF Links
The Form
Clickable Images In Forms
Expire Page Control
The HTTP HEADER and Cookies
The Aestiva Array Control Panel
Configuring Mail
Client-side Controls
Web-Access Security
Name Security
Error Reporting
New in Aestiva Array 4.0

Aestiva HTML/OS reads standard HTML files. These files may contain additional tags placed within sets of double brackets.

These sets of tags, known as Overlays, extend the operation of the HTML file to the server-side of the Web "server-client relationship" giving Web designers control over the operation of a Web site where the "data" resides. Note that the HTML page may still be written without Overlays. In this case, the page appears as a standard HTML file.

In practice, Overlays may be placed above the page, within the page or below the page. Overlays may be placed inside HTML tags but they may not be placed inside other Overlays.

For example, writing <font size=<<mysize>> color=red> is fine, but writing << c=<<a+b>> >> will produce an error. We would write <<c=a+b>> instead.

The general types of Overlays are described in the following sections.

These are Overlays placed above the <HTML> tag. All operations are allowed with the exception of tags for displaying text within the page. An unlimited number of instructions may be placed in an Underlay. At most only one Underlay may be defined on a page.

These are Overlays placed between the <HTML> and </HTML> tags - the display portion of the page. All Otags are allowed in Inlays except those for exiting the page, such as GOTO. An unlimited number of instructions may be placed in an Inlay and an unlimited number of Inlays may be defined within the page.

On-click Overlays
These are Overlays placed after the </HTML> tag of the file. All Otags are allowed with the exception of those for inserting text in the page. On-click Overlays start with the word "OVERLAY" followed by a name. They are invoked in response to a user click, not when the page is run. An unlimited number of Otags may be placed in an On-click Overlay and an unlimited number of On-click Overlays may be placed in sequence after the </HTML> tag on the page. See Figure 1.

File Structure

<< Otags >>


HTML tags and one or more << Otags >> placed in the display portion of the file.

<<OVERLAY overlayname1 Otags >>

<<OVERLAY overlayname2 Otags >>

<<OVERLAY overlayname3 Otags >>

Figure 1: Placing Overlays on the Page.

As an example, consider Figure 2. It contains an Overlay at the top of the file (an Underlay). It contains an Inlay that uses the Otag TODAY. And it contains an On-click Overlay called "doit."

IF mypassword != "please" THEN
  GOTO "/badpassword.html"

Sample Page</title>

Welcome to Wally's Homepage! <br>
Today is <<TODAY>><br>
Come on in!<br>
<form method=post action=doit>
<input type=submit name=button value="Waffles">
<input type=submit name=button value="Donuts">

<<OVERLAY doit
IF button="Waffles" THEN
  GOTO "/wwhome.html"
IF button="Donuts" THEN
  GOTO "/wdhome.html"

Figure 2: Page With Overlays.

Note: Inlays with single expressions, such as <<TODAY>> or <<a+3>> are displayed in the page as if they were written as <<DISPLAY TODAY /DISPLAY>> or <<DISPLAY a+3 /DISPLAY>>.


Aestiva HTML/OS contains many pre-defined words that perform specific operations. These words or tags are called Overlay Tags or Otags.

The Simple Otag
The simple Otag is an Otag that stands on its own. The tag may or may not have specifiers (values in parenthesis). Examples of simple Otags include the following:

    LENGTH(name)  returns length of value in name.
    BROWSER  returns name of user browser.
    ISPAST(name)  returns TRUE or FALSE depending on the value of name.

The Compound Otag
These are Otags that come in sets of two or more. Examples of compound Otags include the following:

    IF ... THEN ... /IF   Basic conditional statement.
    DISPLAY ... /DISPLAY  Basic display statement.
    COPY ... TO ... /COPY  Basic copy statement.

Important Rule: Compound Otags do not "return" values. One cannot write a compound Otag on the right hand of an equality or in a test.

For Programmers: The Expand Otag
Otags may be saved to names and expanded in subsequent pages. This advanced feature allows one to save "sub-routines" to Otags for later execution.


In HTML/OS variables are also called names. They store one or more values. The values in a name are organized in columns and rows. The values may be text, numbers, dates and time, etc. First we look at names with a single column and row. Consider the Overlay:

    <<myheader="<b>Smith and Company</b>">>.

It stores "<b>Smith and Company</b>" in the name "myheader". Subsequent use of the name myheader is equivalent to using its stored value. Since names retain their values as users move from page to page, the Overlay <<myheader>> can be placed on any page to display the HTML text "<b>Smith and Company</b>".

When creating names or variables remember these rules:
  1. Otags are case insensitive. Once you've assigned a value to myname, for instance, you will get the same result whether you type myname, MYNAME or MYname.
  2. Names can contain letters or numbers, but they must not begin with a number. For instance, myname1 is fine but 1name is not.
  3. Names cannot contain special characters (such as @, $, and &) or spaces and cannot be more than 59 characters in length. Names like my_name and are fine but names like my$name are not.
  4. Do not use names that are the same as existing Otags. For instance, do not use names like IF or BROWSER. To keep names from matching those used by Otags use names containing a dot or an underscore, such as cart_total.

Kinds of Values
The cells in a name can contain the following types of values:
  • Text (Up to 500,000 characters)
  • Integers (Whole numbers up to 11 digits)
  • Floating Point Numbers (Fractions up to 12 digits including decimal point)
  • Dates, Times, and Date and Times
  • Booleans (TRUE and FALSE)

Here are some examples:
    myname = "Tom" stores the text "Tom" into myname
    myage = 30 stores the integer 30 into myage
    ave_result = 42.25 stores the number 42.25 into ave_result
    mybirthday = "08/04/1951" stores a date into mybirthday
    thedeadline = "10:30" stores a time into thedeadline
    myentrytime = "12/31/1999 12:00" stores a date & time into myentrytime
    myflag = "TRUE" stores the logical value TRUE into myflag

Using quotation marks
Quote marks differentiate names from literal values. Three quote characters are supported: the double quote, single quote and caret.

For instance, if myname contains "Tom", then <<LENGTH("myname")>> will return "6" (length of "myname"), but <<LENGTH(myname)>> returns "3" (length of "Tom").

If you need to use quotes in a name be sure to use one type of quotation mark (single, double or caret) to surround the text and the other type to enclose your literal text.

For example, it's proper to write: <<MYTEXT='She said, "Yippee!"'>> (double quotes within single quotes) or: <<DISPLAY "They're not using HTML/OS?" /DISPLAY>> (single quote within double quotes). It is not okay to write: <<"She said, "Yippee!"">> (double quotes within double quotes).

Names with Multiple Columns and Rows
The names used in the preceding section contain one column and row - a single cell. When names have more than one cell they are often called HTML/OS tables or just tables. Consider the Overlay:

    <<stooges = ROW("Larry","Moe","Curly")>>

The Otag ROW is used to create rows (tables with a single row) using a list of parameters. In this example, the parameters are "Larry","Moe" and "Curly". The ROW tag creates the table stooges. It has one row and three columns.

To identify a specific cell in a name write the name followed by the column and row number of the cell in square brackets. For example, the third column and first row of stooges is stooges[3,1]. As another example, to replace the value in the third column (Curly) with the value Shemp write:

    <<stooges[3,1] = "Shemp">>

The ROW Otag is a single example of the many Otags that perform operations on variables with multiple cells. Tables may be loaded from delimited text files. They can be saved to delimited text files. They may be cut up, sorted, pasted together, sliced and diced.

Specifiers and Nesting
In the example above the Otag ROW had three specifiers ("Larry","Moe" and "Curly"). Otags are pre-defined to accept a pre-defined number of specifiers. In the case of the ROW Otag, any number may be used. In the case of the LENGTH Otag, a single specifier must be provided. Each Otag can be different. However, in every case the specifiers observe the following rules:

    Rule 1: Specifiers are placed within parentheses following the name of the Otag.
    Rule 2: A specifier can be a literal value (in quotes), a name, or an expression.

The two following examples save the same result into myfirstname.
    Example 1:
    <<myfirstname="Henry Smith"

    Example 2:
    <<myfirstname=UPPER(LEFT("Henry Smith",5))>>

In the first example the operation was performed by three instructions. In the second example, the instructions were nested together into a single instruction. HTML/OS allows multiple levels of nesting.


By default, every variable is a one row by one column table that contains the text string ERROR. The values in cells outside of the defined rows and columns of the variable are always empty.

If a name is specified with a column but no row, as in myname[5]="Hello", then the row is set to one. In other words, myname[5] is the same as myname[5,1].

Assignment Shortcuts: Most assignments are done with the = character. In addition +=, -=, and &= operators are supported. They add, subtract and concatenate the expression to their right to the variable specified to their left.


The HTML/OS mathematical functions operate on integer and floating point (fractions) numerical types. The following basic mathematical operations are supported:
    +  Addition
    /  Division
    -  Subtraction
    *  Multiplication

Otags, names and values may be combined with these math tags to produce expressions. For example, display 1+3 /display is the same as display 4 /display which is the same as a=1 b=3 display a+b /display and so on.

In addition to these basic operations, logical operations, algebraic, trigonometric and other kinds of mathematical operation may be performed. See the appropriate sections in this reference.

Logical Operations
Special conditional tags, such as IF test THEN ... /IF require that a test condition be "TRUE" before executing a set of Otags. These tests are written as:

    Otag-expression   Operator  Otag-expression

For example, length(myname) > 5 is a test to see if the length of the value stored in the name "myname" is larger than "5". When placed inside an IF statement it looks like:

    IF length(myname) > 5 THEN
      DISPLAY "Your name is too long" /DISPLAY

This Overlay displays "Your name is too long" in the event the value stored in myname is longer than five characters. HTML/OS recognizes the following (single column and single row) operators:

Simple operators
= equal to
== equal to (case sensitive)
!= not equal to
!== not equal to (case sensitive)
<> not equal to
> greater than
<  less than
>=  greater than or equal to
<=  less than or equal to
~  begins with the text
~= begins with the text (case sensitive)
!~  does not begins with the text
!~= does not begins with the text (case sensitive)
~~  contains the text
~~= contains the text (case sensitive)
!~~ does not contain the text
!~~= does not contain the text (case sensitive)
            Multi-word comparison operators
=& contains all whole words
=| contains any whole words
~& begin of words matched
~| any begin of word matched
~~&  all words found
~~|  any word found

Some Otags are specifically designed to arrive at a Boolean result (a result of TRUE or FALSE). As a convention, these tags begin with IS. For example, ISPAST("12/31/2000") compares the specified date with the present date and returns TRUE if it's in the past and FALSE otherwise. For example:

    IF ISPAST("09/09/99") THEN
      DISPLAY "You are past the deadline" /DISPLAY

will display the text "You are past the deadline" in the event the value "09/09/99" has passed.


Standard HTML links are of the form:

    <A HREF=htmlfilename>Link Text</a>

Aestiva HTML/OS accepts standard HREF links and extends their functionality to support the needs of dynamic applications. HREFs are able to enter and exit the HTML/OS environment, assign values to names when they are clicked, link to On-click Overlays and be used to switch servers (for moving between secure and non-secure modes of a server, for instance).

Linking to an On-click Overlay
To link to an On-click Overlay replace the htmlfilename with the name of the On-click Overlay (see "THE FILE" at the top of this section). For instance, the HREF:

    <A HREF="gotit">Click Here</a>

links to the On-click Overlay "gotit" placed at the end of the file. "gotit" would have the form:

    <<OVERLAY gotit
      # place some Otags here /#
      GOTO "/somepage.html"

Note: One must always exit out of an On-click Overlay with a GOTO Otag. Not doing so will result in an error.

HREF Names and Values
Aestiva HTML/OS allows you to assign names and values to an HREF so that clicks of a particular HREF can be detected. The HREF is written as:

    <A HREF=overlayname NAME=name VALUE=value>Click Text</a>
    <A HREF=htmlfilename NAME=name VALUE=value>Click Text</a>

When the link is clicked the value provided is assigned to the name specified in the link. For instance, let's say the following is placed in an HTML file:

    <A HREF="resize" NAME=fff VALUE="enlarge" >Enlarge Text</a>
    <A HREF="resize" NAME=fff VALUE="shrink" >Shrink Text</a>

Let's assume the HREFs above point to the On-click Overlay below:

    <<OVERLAY resize
      IF fff="enlarge" THEN
        myfontsize = myfontsize + 1
      IF fff="shrink" THEN
        myfontsize = myfontsize - 1
      GOTO "/samepage.html"

In this example the value of "fff' is determined depending on which HREF is clicked. In the On-click Overlay the value of "myfontsize" is increased or decreased depending on the value of "fff" received.

Links outside of HTML/OS
The links shown above stay inside the HTML/OS engine. To exit HTML/OS use full URLs such as Note that values in names are lost upon exiting HTML/OS.

Alternatively, one can display links using the EXITDISPLAY tag. All text, HTML and links are understood to be "outside of HTML/OS" when displayed with this tag. For example:

    EXITDISPLAY "<A HREF=/old/home.html>Old Site</A>" /EXITDISPLAY

To activate a "new user session", i.e. to enter your HTML/OS site, use a Start-link. Start-links are of the form:

    <A HREF=/cgidir/startname/firstfile.html>

where cgidir is the "script-alias" of the site (which depends on your installation. Common values are scripts, cgi-bin, htmlos and cgi), startname is the name of the HTML/OS starter (which is called start, start.exe or start.cgi depending on the installation) and firstfile.html is the name of the HTML file accessed. Multiple Start-links may be created for any site.

If the Start-link is written with a preceding then the link will always create a new user session when clicked. If written without the preceding domain then HTML/OS will create a new user session the first time it is clicked, but not when the user is already inside HTML/OS.

Note: File names used in Start-links must be entered in the Start-link Allow list defined in the Control Panel, in order to be accessible. When a file name does not appear in the list, any attempt to access the file with a Start-link results in a permission denied error.

Switching to a Secure Server
Aestiva provides the tag SECURE for switching to a secure server from a link or HTML form. To recognize a secure server use the Alt Server option in the Control Panel. Enter the path of the cgi-bin for the secure server and its file root. Once set, an HREF link to a secure server would look like:

    <A HREF="filename.html" SECURE>Link Text</A>

Notes: HTML/OS automatically links back to the default server when these tags are not specified. Secure servers need to use the same file permissions as the non-secure server to work properly. The SECURE word can also follow the ACTION field in FORM tags.


Setting up HTML forms is similar to setting up standard forms with the following differences:
  1. The ACTION line in the form points to an HTML file or an On-click Overlay rather than a CGI program or a URL.
  2. VALUES do not need to be specified for names since they are auto-filled from current names. If specified in the form however, they will overwrite the values in names.
  3. Names in forms must conform to the HTML/OS variable name conventions.
  4. The following form elements are supported:

When a user submits a form values in the form are assigned to their associated names in HTML/OS and the name HTMLOS.CLICKED is set to the variable name specified in the submit button clicked. Methods POST and GET are supported.

Security Note: By default, HTML/OS filters out HTML and HTML links submitted in forms. To enable HTML and link submissions place the words ALLOWLINKS or ALLOWHTML respectively in the particular HTML component. For example:


For programmers: Filling/Feeding HTML/OS Tables
HTML FORMS can fill HTML/OS tables and can be fed from HTML/OS tables. Two types of integration are supported; Indexed and Automatic. This capability comes in handy when working with on-line spreadsheets and multi-select inputs (such as select boxes and checkboxes).

For programmers: Indexed Feeds and Fills
Names in forms may be assigned to indexed entries of a table. For example, one may write NAME=mydata[2,3]. In such cases, the element in the second column and third row of the HTML/OS table mydata will be filled with the user-provided value when the SUBMIT button is clicked. Indexed names are useful when reading or writing to spreadsheet-like data.

When a form containing indexed entries is displayed, if the indexed elements have values, then they will appear in the form. Like other form elements, the VALUE tag is used only as a DEFAULT value (when a value for the name has not been defined).

For programmers: Automatic Feeds and Fills
SELECT boxes and CHECKBOXES allow multiple selections of a single name. When a FORM with a single name receives multiple values, HTML/OS assigns the values to an HTML/OS table of the specified name, placing the values received in the form into the first column. For instance, consider the checkbox below:

    <input type=checkbox name=mycolors value=Red>Red
    <input type=checkbox name=mycolors value=Blue>Blue
    <input type=checkbox name=mycolors value=Green>Green

If the user selects multiple entries the table mycolors will be filled with as many rows as colors selected. Selecting "Red" and "Green" will create a table with one column and two rows, containing the elements "Red" (value of mycolors[1,1]) and "Green" (value of mycolors[1,2]).

When a form containing repeated names is displayed, form elements are fed from values in existing names and tables. If a form has a checkbox with the name mycolors, and mycolors has the values mycolors[1,1]="Blue" and mycolors[1,2]="Red" then the checkboxes for "Blue" and "Green" will be checked.

Note: Automatic fills and feeds operate on the first column of the specified table. The order of rows does not need to match the order in which values appear in the form.


The ISMAP attribute of images allows one to attach links to components of an image. Links are of the form:

    <A><img src=file.gif ISMAP></A>

The "" is a text file containing lines that specify where each portion of the image ("file.gif") links. An example file is shown below. Rectangles (specify RECT or RECTANGLE) and circles (specify CIRCLE) are supported. When specifying a RECT, include the X,Y coordinates of the upper-left and lower-right corners of the RECTANGLE. When specifying CIRCLE, include the X,Y coordinates of the circle's center and its radius.

      RECT /file1.html 0 0 19 10
      RECT /file2.html 20 0 39 10
      RECT /file3.html 0 11 19 20
      RECT /file4.html 20 11 39 20

Aestiva HTML/OS also supports the use of USEMAPs - which are the preferred mechanism for creating ISMAPs. An example is shown below.

    <A HREF=file.html><img src=file.gif ISMAP USEMAP="#mymap"></A>

The USEMAP definition looks like:
    <MAP NAME="mymap">
      <AREA COORDS="0,0,19,10" HREF=file1.html">
      <AREA COORDS="20,0,39,10" HREF=file2.html">
      <AREA COORDS="0,11,19,20" HREF=file3.html">
      <AREA COORDS="20,11,39,20" HREF=file4.html">

Note: HTML/OS supports assignment of names and values in USEMAPs. To assign a value to a name upon clicking a portion of an image, add the "NAME=name" and VALUE=value" tags following the HREF definition in the "AREA COORDS" portion of the definition.


Images in forms can be used to provide added functionality to a Web site. Unlike USEMAPs, image buttons can tell you the pixel location clicked. Consider the button:

    <input type=image name=cool src=mybutton.gif>

When a user clicks this button, the pixel location the user clicked is automatically stored in the names cool.x and cool.y. For example, a user clicking coordinate (10,10) of a 20 by 200 pixel image would have the values 10 stored in the variable names cool.x and cool.y before moving to the file or overlay specified in the ACTION line of the same form. Images in forms can be used simply to replace the buttons created by <input type=submit value=...> statements or to perform more sophisticated tasks where the X and Y coordinate information is used.


Aestiva HTML/OS can direct users to a specified web page if their user session has expired. This is set up in the Control Panel. In general, pages expire after 100 minutes of inactivity.

Using the TAG tag
An option is provided in HTML/OS for you to add "tags" to HREF links so users hitting expired pages can be directed to pre-specified pages. The feature is explained in the URL Tagging section in the Control Panel.


Cookies are files saved on user computers. HTML/OS does not rely on cookies but you can read and write to them with the COOKIEREAD and COOKIEWRITE tags described in this reference.

Cookie Tracking
Turn this feature on in the Aestiva Array Control Panel to track users returning to your site. See the Control Panel for details.


The "Control Panel" menu on the Aestiva Array desktop will display all the Control Panel icons. From there, you can find information on your version of Aestiva Array and how it is configured. You can use the control panel to make changes to your mail, security and other system configurations. Hover your mouse over each icon for an explanation of the feature.


Mail settings in Aestiva Array usually come pre-configured. To modify your mail settings (or to get help doing so), use the Control Panel menu on your desktop.


Client-side controls such as Java and JavaScript sometimes include HREF links. In these cases, to ensure users do not lose their "user-session" when they link back into the site, page names in HREF links need to be replaced with a special link -- which can be dynamically generated with the GETLINK tag. See the entry for GETLINK in this reference.


Aestiva HTML/OS saves files in "public" and "private" file areas of the server. Files in the public area may be accessed from the Web with a URL. Files in the private area cannot be accessed by unauthorized users. They can only be accessed from the Aestiva Array desktop or by HTML files containing encoded links to such files. Web-access security is automatic.

Use the option File Info in the Aestiva Array File Manager to switch files back and forth between the public and private areas. In general, in-line files such as images, are public. HTML files, other than index.html, are private. HTML/OS places new files in one area or the other depending on its file name extension. Use the Control Panel to modify the "private extensions list" if you wish to change where files are saved in HTML/OS. Note: Modifying this setting is not recommended.


The names used in HTML/OS cannot be passed from outside of HTML/OS into HTML/OS unless they are allowed. They can be allowed by:
  • Defining names in HTML forms. Names in the form will be allowed for the form on that page, nowhere else.
  • Passing names in Start-links provided that such names are allowed in the Variable Allow list in the Control Panel.
  • Explicit Allows defined in HTML/OS tags such as GETLINK.


When launching a new browser window using a Javascript command or by using an HREF Target, it is often desirable to create a new user session, starting with the current one. This process is called Forking. It is necessary when running multiple copies of a single Web-based application for a single user.

To fork a new user session from a current user session use a fork link. A new user session will be created, initialized with the Names of the parent user session. For example:

    <A FORK="/pagename.html" TARGET="newframe">Link Text</A>

A fork link looks like an HREF link, with the HREF replaced with the word FORK. The link above, when clicked, launches a new user session in the frame newframe. Activity in the new user session has no affect on activity in the original window since the two user sessions are different. For the same reason, new activity in the original window has no effect on the forked application in newframe.


When launching a new browser window using a Javascript command or by using an HREF Target, it is sometimes desirable to create a new user session from scratch. This process is called Execing. It is necessary when running multiple copies of a single Web-based application for a single user.

To exec a new user session from a current user session use an exec link. A new user session will be created, initialized with the Names of the parent user session. For example:

    <A EXEC="/pagename.html" TARGET="newframe">Link Text</A>

A exec link looks like an HREF link, with the HREF replaced with the word EXEC. The link above, when clicked, launches a new user session in the frame newframe. Activity in the new user session has no affect on activity in the original window since the two user sessions are different. For the same reason, new activity in the original window has no effect on the execed application in newframe.


Multiple levels of error reporting are built into Aestiva Array. They are summarized below:
  • Aestiva Array reports errors in the grammar of tags when pages are run. Error messages are displayed along with the characters immediately preceding the error location. Severe errors resulting in the inability of Aestiva Array to render a Web page are displayed on stand-alone pages.
  • HTML/OS tags often contain their own error reporting. See the documentation for each specific tag for details.
  • Network errors are written to an error log accessible in the Control Panel. Use this error log to diagnose networking and peering configuration problems. The log retains the last ten errors.
  • Database errors are reported by each tag. They are "returned" or placed in the name TAGRESULTS. See the documentation for the specific database tag you are using for details. Database errors are also written to a database error log accessible in the Control Panel. The log retains the last ten errors.


Multiple copies of Aestiva Array may be placed in a network. Network support is built-in. No additional software and no hardware configuration on the servers hosting the copies of Aestiva Array are needed. The copies may reside on dedicated servers or shared hosting accounts.

Aestiva Array networking is hardware independent. Each copy of Aestiva Array (the "nodes" in the network) may reside on different hardware platforms.

To set up a network:
  • Define the identity of each copy of Aestiva Array (node) in the network. Use the identity option in the respective Control Panels of each node to set up the identity of each. Each node must have a different name. Although names may be long, it is best to keep names short. Single letters, such as A,B or X are preferred.
  • Using the Control Panel of each node, set up access to the other nodes. This is known as setting up the "peers" and is accomplished by defining a URL and security IP to each node. Two kinds of access are allowed; full or limited. Full access allows a remote node full access to the files and databases of the current node. Limited access gives you the ability to limit access to only specific files or databases. See the Control Panel for instructions. Do this for each node in the network.

Once your network is set up in the Control Panels of each of the nodes in your network you will be active. No other configuration is needed.

Using the network
Once the network is set up Files, Databases and HTML files will be accessible between the nodes in the network (within the security limitations defined). HTML/OS tags support networking unless the documentation explicitly says they do not support networking. HREF links and GOTO tags also support networking.

To specify a file or database on a remote node precede the name with the identity of the node and a colon, as in x:/cart.html.

When specifying a remote file or database always use a full path. For example:

    GOTO "x:/cart.html"


    <A HREF=x:cart.html>Cart</A>

Running an application across the network is the same as operating an application on a single copy of Aestiva Array except for the need to specify node names.



Major Enhancements
  • Aestiva Array is now "multi-user" with each user having their own (sandboxed) Desktop.
  • Added group-based user security to multi-user Aestiva Array Desktop.
  • Admin features added to Control Panel.
  • Aestiva Array Desktop modified to support new multi-user functionality.
  • Added icon sharing to the Aestiva Array Desktop. Users can now share icons with other Aestiva Array users. Icon sharing creates automated "Single-Signon" icons so other users can log into a shared application without a new login and password.
  • Added database sharing to dbConsole. Users can now share databases; giving other users Read or Read/Write access to a database.
  • Added file sharing to the File Manager. Users can share files; giving other Aestiva Array users Read, Read/Write, or Run access to a file.
  • Added HTML/OS programming manual to the File Manager. Users can now search and use the HTML/OS manual within their file editor, as they write code.
  • Added indent function to File Manager to allow single-click auto-indent of HTML/OS code.
  • Added support for running programs in the background, at a delayed time, or at a scheduled time. Also provided under program control. (See new tags below).

Programming Enhancements
  • Added "static" page emulation.
  • Page capture mode added to environment. Setting HTMLOS.PAGE to a variable name saves the HTML/OS web page output to a variable. Used for "emailing this page" type functions.
  • Added support for a file ID in <input type=file>, When an ID is specified, files are uploaded to /upload/[USERNUM]_[ID]. A convenient option for programming multi-user file uploads.
  • Support for session FORKs has been extended to also support session EXECs. A FORK is a new session which is created that inherits the previous session's environment. An EXEC is a new session which is created fresh, without the previous session's environment.
  • Renamed DOL database data type to CUR to be less dollar-centric.
  • HTML engine processing optimizations added.
  • Increased maximum array sizes from 100,000 rows to 1,000,000 rows.
  • Increased max size of variables stored in HREF links from 100,000 to 500,000 bytes.

New Tags
  • FILECSUM(file) - returns a checksum of a file.
  • FILEMIDDLE(inFile,offset,length,outFile) - Copies block of data from inFile to outFile.
  • DBBATCHADD() - batch loads data into HTML/OS Database (same as older DBLOAD).
  • HTMLOSEXTENSIONS - returns list of system-wide program extensions.
  • HTMLOS.SUBUSERNAME - returns current Aestiva Array subuser name.
  • BACKGROUNDRUN(Filename) - run job in background.
  • BACKGROUNDRUN(Filename,Label) - run job in background (marked with Label).
  • BACKGROUNDRUN(Filename,RunTime,Label) - run job in background at specified time (marked with Label).
  • BACKGROUNDRUN(Filename,Minute,Hour,DayOfWeek,DayOfMonth,WeekInMonth,Label) - schedule recurring job.
  • BACKGROUNDLIST(jobNo) - returns status of job.
  • BACKGROUNDJOB(jobNo,action) - Perform action (Cancel, Resume, Pause) on job.