2016/08/06

Forté 4GL / Sun Unified Development Server (UDS) ... get some maintenance and latest version of Forté.

If you have any Forté needs please contact me. forte_4Gl/at/yhaoo/dot/com or bbit/at/free/dot/fr.

Currently in the US and authorised to work for any employer.

Cheers.

2012/01/29

Uploads ... & stuff

I stopped working with UDS/Forté 4GL a while ago ... anyone flogging a dead horse has to dismount at some point. I hope Oracle will release the source code some day.

If someone out there needs Forté person please contact me.

Meanwhile I'll be tossing some of the stuff I find cleaning me ole Forté-PC.

Starting with an old version of UDS 5.0 that Sun distributed for testing purposes with a 1 year usage.

Win2K and Solaris 8 versions can be found Here

It needs a wee bit of tweaking in the registry region to install on XP-Vista or 7, See Oracle UDS Forum

Any Forté 4GL / UDS Job available?

If someone out there needs Forté person please contact me.

2010/07/15

BTD BTX what are they ???

Following a couple of questions on how to deal with them and to clarify the previous post on code container.

.btd & . btx files are multi-purpose container files. The format is proprietary and stores an objectified version of all the classes definition. Roughly they are a concatenation of serialized "class definition" objects.

Forté use them to store development definition as opposed to the .c, .cpp, .cxx, .h or .java files. This is handled by the Forté IDE/Runtime.

They are also used to save runtime information when an application is being deployed in interpreted mode, using the Forté IDe it is still possible 

The way Forté 4GL reads and write to them is not relevant as long as we can use Forté runtime to extract what's in it. So there is very little incentive in trying to attack those files from a Java environment, Forté does it very well and can feed Java with useful information that can be hard to extract directly or from an export.

2008/01/05

Weird Things

Multiple Inheritance

Forté does not support multiple inheritance ... well

looks like the class qqlo_CNM inherits from 3 classes Object, qqlo_PartitionStateMonitor & qqsp_TaskStateMonitor




Struct Union & Enum

structures, unions & enums are not declarable from the IDE, need to create a pex or cex file ... but








to achieve that

then ignore the error messages once and cancel subsequently. close the project and reopen to see the Struc Enum or Union.

OK you can't really use them ... if you find how let me know.






Puzzling statements in iPlanet UDS Help

I quote:

The class statement creates a custom class.

Syntax

class class_name [is mapped] inherits [from] superclass
[implements interface, [interface]...]
[ [has public | has private] component_definitions]...
[ has property [property]...
[ has file filename;]
end [class];

property is one of:
shared=(allow={on|off}[,override={on|off}]
[,default={on|off}]);
transactional=(allow={on|off}[,override={on|off}]
[,default={on|off}]);
monitored=(allow={on|off}[,override={on|off}]
[,default={on|off}]);

distributed=(allow={on|off}[,override={on|off}]
[,default={on|off}]);
restricted=(TRUE|FALSE);
extended=(name=value[,name=value]...)

you may have noticed that many screen dumps were made on Mac OS and any application on Mac OS has to be scriptable ... ftexec was no exception and this was the syntax to use in AppleScript to create a class.

2008/01/04

Forte 4GL (UDS) basics - code containers

Forté uses a proprietary format to store and manage code.

the format brings powerful features as code control, versioning & consistency, the drawback being it's not a set of text files. but since Forté is writing to and reading from those files as well as exporting/importing to/from text files using the IDE, there is some hope that it's possible to write our own specific 'FortéPad'.

btree & other code containers
in the latest Forté versions the container is a file with a .btd extension, along is a .btx file that contains an index for faster access and a .rop that is used in case the .btd file becomes corrupt.

interpreted applications and development repositories both reside in .btd files.

the .btd known as BTreeRepository was not always the norm. Forté used other formats like
CtreeRepository
GemstoneRepository
ObjectivityRepository
SQLRepository revealing that Forté Software Inc may have tried to use SQL Stores as development container.

Forte 4GL (UDS) basics - main binaries

nodemgr:
flags
-fns IPv4:port starts
name service

-e envName
environment manager

-fnd nodeName
node manager

ftexec:
interprets anyApp.btd files

rpstart rpstop rpserver:
to start development repositories.

personal: never use the automated install on Windows and get used to starting environment, repositories & application using batch files. this avoids env var contention and keeps the environment clean. this was supposed to help but it does not if you run several different versions of Forté or connect to different environments ... and as a developer it prevents sysadmin shuting down your forté executor bringing to a halt your IDE ... I confess I did it many times.

viva -fi, -fm, -fns, -fnd, -e, -n ...

export FORTE_ROOT=/forte

start the envmgr: nodemgr -e envName -fns mySvrIP:myPort

start the repository: rpserver -n myRepLogicalName -fr bt:/pathtobtdfile/myRep -fns mySvrIP:myPort

start the IDE: ftexec -fi bt:$FORTE_ROOT/userapp/forte/cl0/forte -fr myRepLogicalName -fw myWKS -fns mySvrIP:myPort

Forte 4GL (UDS) basics - agents

one of the unmatched strength of Forté: System Agents.

a system agent manages an object in a deployed application, that is, at run time it is possible to execute some commands and inspect some instruments on the managed object.

usually those commands have to do with monitoring and tuning an application but they may interfere with the business logic e.g. the possibility to bump up the queue a batch file to be processed asap even though there is no dedicated interface to do so.

these agents are visible using the provided tools eConsole or escript or any in-house tool.

the console






the partition agent & sub agents




the available instruments and values.





and that's another issue when migrating.

Forte 4GL (UDS) basics - runtime

to run an application across different heterogeneous sets of servers and clients Forté makes use of two alternatives available, it uses the platform specific C/C++ compiler and a virtual machine.

virtual machine
Forté relies on a “layer” to level off the differences among platforms: ftexec (+ libraries) this is the Forté virtual machine that runs anything (compiled or interpreted) developed with the Forté IDE.

compiled vs. interpreted
interpreted: ftexec takes a .btd file as input
compiled: the produced executable is linked with ftexec.o

the way Forté manages to mix interpreted & compiled code is utterly clever, in the IDE most of the plans are 3GL objects made available to 4GL code, but some of the plans (AppModel, HTTPSupp, IIOP, LDAP, OLE, XMLSvr & XSLT) are 4GL TOOL interpreted projects.

the IDE itself is an interpreted bit of code (that has some interesting implications ... later) that can be executed with the following command:

ftexec -fi bt:$FORTE_ROOT/userapp/forte/cl0/forte -fr myRep -fw myWKS -fns myEnvNode:port

Forte 4GL (UDS) basics - transaction

one very nice feature of Forté is the integrated transaction monitor. when a transaction fails it takes a little bit of work to figure out what are the objects to roll back, that requires a snapshot of these object prior starting the transaction process.

with Forté IDE, mark the objects taking part to the transaction as "transactional" set the transaction boudaries and do the job, if anything causes the transaction to abort the objects are rolled back. the end.

a nice behaviour that may be tricky to achieve when porting the code to a different platform.