History
Forté 4GL was created as an integrated solution for developing and managing client/server applications. Forté 4GL consists of an application server, tools for deploying and monitoring an application and an object oriented proprietary programming language, TOOL (transactional object oriented language). Given that TOOL only runs on the Forté application server, many users simply refer to their "TOOL" applications as "Forté" applications. The first release of Forté 4GL was published in August 1994. After releasing this initial product, Forté Inc. proceeded to build several extensions including: * Web Enterprise - an HTML-wrapper interface for rich-client applications to publish their screens through web servers. * Forte Express - a rapid database GUI interface kit, released in July 1995. * Conductor - a work flow engine capable of choreographing activities, released in March 1997. * Forté Fusion - an integration backbone to link external systems using XML messaging and tie in with the Conductor engine. In 1999, Forté Software came out with a version of Forte that was based onCapabilities
Being an enterprise application development system, Forté 4GL supported close linkage to a number of different relational database systems, including Oracle, Sybase,Programming Language TOOL
TOOL is an object-oriented language with the following features (among others): * automatic garbage collection * referenced based, no pointers * single inheritance and interfaces * supports multi-threaded programming * integrated statements for database access * event handling * exception handling * strong integration with GUI * one common base class calledObject
TOOL code is case-insensitive. A statement is always terminated by the semicolon. Compound statements are enclosed by the keywords begin
and end
. Comments are indicated by // or -- (remainder of line becomes a comment), /* ... */.
Data Types
The Simple Data Types are:
* boolean
* float
* double
* char
* string
* Integer data types
** i1, ui1 (signed / unsigned one byte integer)
** i2, ui2 (signed / unsigned two bytes integer)
** i4, ui4 (signed / unsigned four bytes integer)
** integer (signed four bytes integer, same as i4)
** short (signed integer, at least two bytes, same as int)
** int (signed integer, at least two bytes)
** long(signed integer, at least four bytes)
The corresponding object data types are (some examples):
* BooleanData, BooleanNullable
* IntegerData, IntegerNullable
* DoubleData, DoubleNullable
* TextData, TextNullable
Arrays are indicated by the keywords Array of
. The first element of an array is indexed by 1.
Variable Declaration
name : string = 'John'; result : integer; dataArray : Array of IntegerData = new;Conditional Statements (if-statement, case-statement)
if result = 5100 then ... elseif result != 0 then ... else ... end if; case result is when 1 do .... when 2 do .... else ... end case;Iteration, Loops
for k in 1 to 10 by 2 do ... end for; for dataItem in dataArray do ... end for; k : integer = 2; while k < 14 do ... k = k + 1; end while;Events An event is posted e.g. by the following statement:
post EV_CustomerSet(id = selectedID);This statement posts an event named
EV_CustomerSet
. This event has one argument named "id".
Events are handled by event handlers, for example:
event loop preregister register GeneralHandler(); ... postregister waitTimer.IsActive = true; ... when EV_CustomerSet( id ) do ... when waitTimer.Tick() do exit; when task.Shutdown do exit; end event;Exception handling
begin ... raise UsageException(); ... exception when e : UsageException do task.ErrMgr.Clear(); ... else ... raise; end;Multithreading A new thread is launched by a statement like
start task report.Print();
See also
* TeamWareReferences
{{ReflistExternal links