Recital

Login Register
I was fascinated to learn that marvel are shipping a complete linux device that runs on a wall plug for less than $100. The device has gigabit ethernet and USB connectivity making it ideal for building home security and surveillance devices that can be connected together. 

This would be an ideal device for Recital Embedded. Details can be found here. Additional information can be found here and this article in Scientific American 8 Big Things to Do with a Mini Server.

Seeing as this device runs linux, nomachine can be installed on it.  

Clearly this device has a lot of uses including acting as a loadbalancer and also as a bunch of loadbalanced application servers that access data on a network using glusterfs or samba. Another great use of this device would to configure it as a rsnapshot server to backup all the machines in your home! Interestingly in quantity the device is only US$50.

Marvell have a development wiki here.
{linkr:none}
Published in Blogs
Read more...
By default Recital uses PAM to authenticate users.  It is also possible to tell PAM to use Kerberos.  Simply replace the existing entries in the /etc/pam.d/recital file with the ones below:

auth       sufficient   pam_krb5.so try_first_pass
auth       sufficient   pam_unix.so shadow nullok try_first_pass
account    required     pam_unix.so broken_shadow
account    [default=bad success=ok user_unknown=ignore] pam_krb5.so
Published in Blogs
Read more...
Recital 10 enhanced Recital by enabling it to be used in bash shell scripts and in shell commands which use pipes and/or redirect stdin and stdout. If stdin is not redirected then recital will startup and operate as normal in a terminal window. Additionally you can use heredoc to denote a block of recital commands that should be executed. Note that when used in this manner, no UI commands can be executed and no user interaction is allowed.  
# recital < mrprog.prg 
# recital < myprog.prg > myoutput.txt
# recital > myoutput.txt <<END
use customers
list structure
END
# echo "select * from sales!customers where overdue" | recital | wc -l
Individual commands can be executed in shell scripts.
# recital -c "create database sales"
# recital -c "create table sales!invoices (id int, name char(25), due date)"
Expressions can be evaluated and used in shell scripts.
# VER=`recital -e "version(1)"`
You can view what command line options are available by typing:
# recital --help
Published in Blogs
Read more...
Recital 10 introduced the PIPETOSTR() function. This function operates in a similar fashion to the FILETOSTR() function but it can be used to capture the output from externally executed operating system commands. e.g.
// determine how many Recital users are on the system
nusers = pipetostr("ps -ef | grep db.exe | wc -l")
Published in Blogs
Read more...
 

Platforms supported

  • Intel® / AMD™ 32 bit Linux
  • Intel® / AMD™ 64 bit Linux
  • HP PA-RISC HP-UX® 10.20 and above
  • Sun® SPARC Solaris™ 8 and above
  • HP Alpha OpenVMS 7.2-1 and above
  • SCO® OpenServer 5.0.5 and above
  • Sun® Intel® Solaris™ 10 and above
  • IBM AIX® 4.3 and above
  • HP Integrity OpenVMS 8.2-1 and above
  • HP Intel® Itanium® HP-UX® 11.23 and above
  • Mac OS X leopard 10.5 and above

Large File Support is available for Windows, Itanium HP-UX and Linux. 
Published in Blogs
Read more...
The first step is to create an Apple Disk Image File (DMG) distribution in a GUI tool, I used DMG Packager.
Then create a directory that will contain all the files that you want included in the DMG file. The best way to do this is to mount the DMG file you created and copy the files into this directory. Then move the .app file created by BitRock into this directory.
Then run the hdiutil utility to create a DMG file
$hdiutil create /tmp/tmp.dmg -ov -volname "RecitalInstall" -fs HFS+ -srcfolder "/tmp/macosxdist/" 
Finally call hdutil to convert the writable, to a compressed (and such not writable) DMG
$hdiutil convert /tmp/tmp.dmg -format UDZO -o RecitalInstall.dmg
So now each time before you build a new distribution with the above commands, just move the new .app file into the directory containing the files to be added to the DMG file.
I've already added this to the makefile so after BitRock creates the .app file the hdiutil command is called to automatically generate the new DMG file.
Published in Blogs
Read more...

In this article Barry Mavin, CEO and Chief Software Architect for Recital, gives details on Working with user-defined Functions in the Recital Database Server.

Overview

User-defined functions (UDFs) are collections of statements written in the Recital 4GL (compatible with Visual FoxPro) stored under a name and saved in a Database. User-defined functions are just-in-time compiled by the Recital database engine. User-defined functions can be used in SQL statements to extend the power and flexibility of the inbuilt functions. Using the Database Administrator in Recital Enterprise Studio, you can easily create, view, modify, and test Stored Procedures, Triggers, and user-defined functions.

Tip
You can also extend the Recital Database Server with C Extension Libraries and use the functions defined within that library also.

Creating and Editing user-defined functions

To create a new User-defined function,  right-click the Procedures node in the Databases tree of the Project Explorer and choose Create. To modify an existing User-defined function select the User-defined function in the Databases Tree in the Project Explorer by double-clicking on it or selecting Modify from the context menu. By convertion we recommend that you name your User-defined functions beginning with "f_xxx_", where xxx is the name of the table that they are associated with.

Testing the user-defined function

To test run the user-defined function, select it in the Databases Tree in the Project Explorer by double-clicking on it. Once the Database Administrator is displayed, click the Run button to run it.

Example

Example: user-defined function "f_order_details_total".
////////////////////////////////////////////////////////////////////////
// example user-defined function
function f_order_details_total(pUnitprice, pQuantity, pDiscount)
    return (pUnitprice + pQuantity + pDiscount) > 0
endfunc
Example: using the user-defined function in a SQL SELECT statement.
////////////////////////////////////////////////////////////////////////
// sample code to use a user-defined function in a SQL SELECT statement
select * from customers where f_order_details_total(Unitprice, Quantity, Discount)

Using user-defined function libraries with the Recital Database Server

You can place all of the user-defined functions associated with a particular table into a procedure library. You then define an Open Trigger for the table that opens up the procedure library whenever the table is accessed. This is a much faster way of using user-defined functions as it reduces the amount of file open/close operations during a query and also simplifies development and maintenance.

By convertion we recommend that you should name the library using the convention "lib_xxx", where xxx is the name of the table that the library is associated with.

Example: procedure library in lib_order_details.
////////////////////////////////////////////////////////////////////////
// example user-defined functions
function f_order_details_total(pUnitprice, pQuantity, pDiscount)
    return (pUnitprice * pQuantity - pDiscount) > 0
endfunc

function f_order_details_diff(pUnitprice, pQuantity, pDiscount, pValue)
    return f_order_details_total(pUnitprice, pQuantity, pDiscount) - pValue
endfunc
Example: Open Trigger in dt_order_details_open.
////////////////////////////////////////////////////////////////////////
// This trigger will open up the procedure library when the table is opened
set procedure to lib_order_details additive
Example: Close Trigger in dt_order_details_close.
////////////////////////////////////////////////////////////////////////
// This trigger will close the procedure library when the table is closed
close procedure lib_order_details
Example: using the user-defined function in a SQL SELECT statement.
////////////////////////////////////////////////////////////////////////
// sample code to use a user-defined function in a SQL SELECT statement
select * from customers where f_order_details_total(Unitprice, Quantity, Discount)

User-defined functions can also be used with any of the Client Drivers that work with the Recital Database Server.

Published in Blogs
Read more...

Recital is a proven and cost-effective database solution that will help reduce the cost of your database and application software infrastructure substantially. As an added benefit, Recital can run many legacy applications with little to no change as it understands FoxBASE, FoxPRO and Clipper languages as a subset of it's overall capability.
Published in Blogs
Read more...

We are pleased to announce the release of Recital 10.0.3.

Here is a brief list of features and functionality that you will find in the 10.0.3 release.

  • New Commands:
    - SET TMPNAMPATH ON|OFF
    - REMOVE TABLE
  • New Functions:
    - CURSORGETPROP()
    - CURSORSETPROP()
    - CURVAL()
    - GETFLDSTATE()
    - OLDVAL()
    - TABLEREVERT()
    - TABLEUPDATE()
    - SETFLDSTATE()
  • Enhanced Functions:
    - TMPNAM() - additional parameter to specify the return of basename only
    - MAILATTACH() - parameter changed from array to filename to allow directory and file extension to be specified
  • Enhancements:
    - DO level increased from 32 to 64.
  • Fixes:
    - Delay exiting Recital after SYS(3) or SYS(2015)
    - SET SOFTSEEK issue when search key above first record in index
    - Compilation error with REPLACE command after UDF call
    - FETCH INTO memvars error
    - END TRANSACTION at command prompt error
    - ROLLBACK locking error
    - Linux ODBC Driver undefined symbol error
    - RELEASE variable with same name as variable in calling program issue
    - SQLCODE() issue on non-gateway data access
    - Issuing two SQLEXEC() calls error
    - LASTSEQNO() in workareas > 1 error
    - SET RELATION to detail table in workarea 1 issue
    - LIST STATUS on empty table delay
    - SET AUTOCATALOG alias entries error
    - ADD OBJECT in DEFINE CLASS error
    - DEACTIVATE WINDOW error
    - SORT error
    - Other reported bugs
Published in Blogs
Read more...
I Just added a few new functions to the latest 10.0.1 patch release which should be generally available next week.
  1. New MD5( expC ) function to calculate an MD5 crypto key from any character expression
  2. New MD5FILE( expC ) function calculates an MD5 crypto key for a given filename. If the filename is a pattern e.g *.* it will calculate the key across all files matching the pattern
  3. New mod_recital.so available for using Recital Web on linux x86_32
  4. New mod_recital64.so available for using Recital Web on linux x86_64 
Published in Blogs
Read more...

Copyright © 2025 Recital Software Inc.

Login

Register

User Registration
or Cancel