Recital 10.0 introduced the SET DATADIR TO [<directory>] command.. The full syntax is;
SET DATADIR TO [ <directory> ]This command is used to specify a directory where database tables, memos, indexes, and dictionary files are located. When a table is being opened this directory is searched first before the current directory and the file search path to locate the table and its associated files. This allows the database tables to be relocated to a different file system without the need to change an existing application.
Recital implements SQL-92 and most of the SQL-99 standard for SQL, but also provides lower level navigational data access for performing high transaction throughput. It is the choice of the application developer whether to use SQL, navigational data access, or a combination of both depending upon the type of application being developed.
The Komodo Editor is a free project based editor that runs on the mac, linux and windows. It color codes and handles auto completion for lots of languages (including Recital/PHP/Perl/C etc). You can download it free from here.
Tagged under
A really nice plugin for eclipse that lets you write/edit Trac wiki pages in eclipse.
One of the attractive features of Linux is the impressive 3D desktop that even works on most older hardware.
You can enabled the 3D Desktop on CentOS5 by installing the compiz package:
yum install compiz
After you have done this, go to the top panel and click System, then select Preferences > and click 'Desktop Effects.
You will get a new dialog. To test and see if your hardware supports the 3D Desktop, press the button Enable Desktop Effects. If everything works fine, you can select Keep Settings.
Then test your 3D Desktop by pressing Ctrl-Alt-Left and Ctrl-Alt-Right, or drag a window around or even out of the screen to the left or right. If you maximize a window, you will see another cool effect. If you move the mouse to the upper-right corner of the screen you see all your opened applications.Way cool!
Each Recital table can have one or more data dictionaries to provide a central repository for constraints and other metadata.
Here's how to set up field validation for a field with a small static number of acceptable values.
Using the example.dbf table from the southwind sample database, validation can be added to the title field to ensure it matches one of a list values.
If you have access to the Recital Workbench, you can use the modify structure worksurface to add and alter your dictionary entries, including a customized error message if required.

Here's how to set up field validation for a field with a small static number of acceptable values.
Using the example.dbf table from the southwind sample database, validation can be added to the title field to ensure it matches one of a list values.
open database southwindThe inlist() function checks whether the specified expression exists in the comma-separated list which follows. An attempt to update title with a value not in the list will give an error: Validation on field 'TITLE' failed.
alter table example add constraint;
(title set check inlist(alltrim(title),"Miss","Mr","Mrs","Ms"))
If you have access to the Recital Workbench, you can use the modify structure worksurface to add and alter your dictionary entries, including a customized error message if required.

In this article Yvonne Milne looks at the use of the Recital Remote Data Connectivity Functions with Recital Database Gateways.
This website runs in a virtual machine under vmware server. It is clustered between two servers using heartbeat and DRBD.
When VMware server starts up a virtual machine it generates a uuid (unique id) based on the machine it is running on and stores this in the .vmx file.
When heartbeat switches from slave to master, it will start VMware server (which is setup as a resource in the haresources file).
Virtual machines that you want started automatically when you start VMware server will not start because the uuid changes between the master and backup systems. To get around this problem always do the following:
- edit the .vmx file and add the following line
uuid.action = "keep"
If this is not done then everytime you try to run the virtual machine on the backup system in your cluster, VMware server will complain that the virtual machine has been copied or moved and it will not start it.
- set the virtual machine to power off when vmware is stopped. Do not set this to "suspend" or it will not restart on the backup machine.
This will allow the virtual machine to start properly on the backup machine.
A good article describing the configuration of samba for file/record locking can be found here.
You can further tune samba by following this guide.
Basically you must add these directives to the smb.conf file:
[data] oplocks = False level2 oplocks = False
The default oplock type is Level1. Level2 oplocks are enabled on a per-share basis in the smb.conf file. Alternately, you could disable oplocks on a per-file basis within the share:
veto oplock files = /*.dbf/*.DBF/*.ndx/*.NDX/*.dbx/*.DBX/*.dbt/*.DBT/
You can further tune samba by following this guide.
If you specify the Common Internet File System (CIFS) when you mount the samba share then you must specify the following options
mount -t cifs {mount-point} -o username=name,pass=pass,directio
The directio option is used to not do inode data caching on files opened on this mount. This precludes mmaping files on this mount. In some cases with fast networks and little or no caching benefits on the client (e.g. when the application is doing large sequential reads bigger than page size without rereading the same data) this can provide better performance than the default behavior which caches reads (readahead) and writes (writebehind) through the local Linux client pagecache if oplock (caching token) is granted and held. Note that direct allows write operations larger than page size to be sent to the server.
If you get the following error when trying to mount the {mount-point}
Apr 22 16:57:39 bailey kernel: Status code returned 0xc000006d NT_STATUS_LOGON_FAILURE Apr 22 16:57:39 bailey kernel: CIFS VFS: Send error in SessSetup = -13 Apr 22 16:57:39 bailey kernel: CIFS VFS: cifs_mount failed w/return code = -13The you need to create the Samba user specified on the mount command
smbpasswd -a usernameFYI - Make sure you umount all the Samba {mount-point(s)} before shutting down Samba.
When using Recital on linux you can integrate your favorite linux shell commands and use then directly inside Recital using the alias command. This can be particularly useful when you ssh into a remote system and run recital. You can then issue linux commands without having to open another terminal session. Several aliased shell commands are predefined in /opt/recital/conf/config.db. You can add others to suit your needs.
On my system i have these commands aliased.
The alias command handles parameter substitition.
alias pwd "? default()"
alias cp "copy file "
alias mv "rename "
alias rm "erase "
alias ls "run('ls $0')"
alias ps "run('ps $0')"
alias grep "run('grep $0')"
alias cd "set default to $1"
alias cls "clear screen"
These commands can now be used inside the Recital command window just as you would use them at the linux prompt, including the ability to pipe commands together.
ls -l | grep .prg ps -elf | grep db.exeThe run() function that is used to run the shell command as specified in the alias command will capture output and display it in a text viewer. If you want to run the command and display the contents full screen, then specify true as the third parameter to the run().
run("command", true, true)
The arguments to run() are as follows.
| Argument | Description |
|---|---|
| 1 | the command line to run |
| 2 | True if output should be displayed in a text area (default True) |
| 3 | True if the output should be displayed full screen (default False) |
| Macro | Description |
|---|---|
| $0 | the command line following the command name |
| $1..$n | the arguments given to the command |