Unlimited possibilities made possible through a powerful and well-designed suite of programming tools.
| Programming Features |
FileMaker Pro® 5 |
4th Dimension® |
| Language | Scripting Language | Full Programming Language |
| Write your own functions | No | Yes |
| Support for variables | Global Fields and Summary Fields Use of fields takes up data
file space and can result in data fragmentation from constant writing
and rewriting |
True Variables: Local, process, interprocess Variables are held in memory and
do not use data space |
| Support for Arrays | No | Yes |
| Support for Pointers | No | Yes |
| Support for BLOBS | No | Yes |
| Reuseable Code | Limited Import one script at a time from another file. Each script may need to be modified to work in the new File |
Yes Create generic code that can be used anywhere by using pointers and variables; copy and paste from one place to another, use Insider to drop in complete code libraries |
| Debugger | No | Yes Full featured debugger. Trace through any method; determine value of fields and variables, current selections, sets, etc. Step into, over or out of any method |
| Run Code/Script based on events | Opening or Closing the database; when the User clicks a Button, From another script | Database events; Form Events; Printing Events, Active Object or Field
Events; User Actions; From another Method; from another Process. |
| Triggers | No | Yes |
| Stored Procedures | No | Yes |
| Multiple Processes | On the Server only - one process per connection | On Server, Single User, or 4D Client Run background processes, open different tables in different processes, etc. |
| Developer control of Processes | No | Yes |
| Semaphores - multi process/user communication | No | Yes |
| Transactions - delay data writing to disk until all related entries are accepted. Automatic roll back of changes if user cancels | No | Yes |
| Flow Control & Loops | Yes | Yes |
| Constants - Predefined and User definable | No | Yes |
| Window Management | No | Yes |
| Create,Delete and Edit Records in memory without Direct User interaction | Limited Duplicate Records, replace values in found set |
Yes |
| Override Data Entry Controls in Code i.e. cannot modify | No | Yes |
| Access to the System Environment | Via AppleScript (Mac) or Active X (Win) | Yes - Mac and Windows |
| Data Types | Text, number, date, time, container, calculation, summary, global | Alpha, text, integer, long integer, real (float), date, time, picture, boolean, subtable, BLOB (4D uses variables in place of container, calculation, summary and global data fields) |
| Variable Types | None | String, text, integer, long integer, real, pointer, picture, boolean. arrays (all types except BLOB), BLOB |