Magic has always been a strong development environment. But, because previous versions of Magic lacked support for Windows-based application construction, many client/server developers have passed Magic by. Today, with the release of Magic 6.0, Magic Software now offers true Windows-based "no code" development for client/server. Magic also provides multiplatform support and supports application distribution through partitioning. Let's see what new tricks Magic 6.0 for Windows can pull out if its hat.
The most significant feature of Magic is its lack of a formal programming language. Magic uses "table-driven" development, in which developers build applications visually by defining several tables from within the tool. With its new Windows support, Magic 6.0 provides a new Form Editor, better application migration mechanisms, a character-based form generation object, a new help facility, and native DDE support for sharing information with other Windows applications.
Magic is a true multiplatform tool, with support for Windows, DOS, NetWare NLMs, SCO Unix, OpenVMS, OSF/1, AS/400, AIX, SunOS, Solaris, HP-UX, DG/UX, CTOS, and Olivetti Unix. Database support is extensive as well, with native drivers for Oracle, Sybase, Informix, Rdb, CA-Ingres, DB2/6000, DB2/400, Btrieve, Xbase, C-ISAM, RMS, c-tree, and MF-Cobol. In addition, Magic provides network support for TCP/Pathworks, NetStar/Plus TCP, PC/TCP, PathWay/TCP, Winsock, and LAN WorkPlace/TCP.
The Magic File Dictionary stores information about an application's data and structure. Using this facility, developers can specify fields, keys, type, and other characteristics held in the Magic repository. In addition, the repository knows where the database exists and the type of database server the developers are using. As an added bonus, Magic defines fields automatically by linking to an existing database schema.
Client/server applications do not live on database elements alone, and Magic developers must define programs to set up application behavior. Developers do this by defining the basic program parameters, setting up the program execution flow, designing the GUI, checking the program for logic errors, and establishing the end-user menu system. This is accomplished with Magic's complex series of menus and dialog boxes, such as the Program Dictionary table (see Figure 1), rather than with free-form programming.
The Program (task lists) Dictionary is a listing of all the programs that support a Magic application. This is where developers link behavior and interfaces to data; developers use this facility to create and edit Magic's codeless programs.
Each program in Magic's Program Dictionary has a Program Tree. (See Figure 2.) A Program Tree lets developers create and edit a program structure. The root box, which represents the root task in a program, is created automatically. From here you can "Zoom" from a task box into the Program Tree to the tables used to define the task's components.
Magic programs may be made up of several subtasks that exist as children of the parent task (or root task), as depicted in the hierarchy of the Program Tree. You define tasks using Magic's Task Properties dialog, which you access by executing Magic's Zoom menu selection from the Program Tree. Here you can specify such things as task type, default key, default expression, row limits, and selection tables.
Magic can generate a form when you select Options and Generate from the Magic menu. From here, you can select line mode or screen mode. Line mode presents each record as a row in a table format, whereas screen mode devotes a screen to each record. Once Magic generates a screen, you can modify the screen by clicking on the controls and placing them wherever you want. You can also define the properties of the controls by setting control characteristics in the table.
Once you define your Magic program, you can check your application to ensure that you made no logic errors by selecting Check Syntax from the Options menu. This is where Magic cruises through your program to find and report logic problems or table settings that don't make sense to Magic. Because no programming is involved, you can't make a syntax error. However, you must solve all the logic errors before your program can execute correctly. Because there is no code, you don't need a debugger. You can execute a new Magic program as you create it by selecting Execute Program from the Options menu. Performance in this interpreted environment is good on a 100 MHz Pentium.
This application partitioning scheme rivals that of application partitioning tools such as Dynasty and Forté, at only a fraction of the cost. Those tools, however, are built from the ground up for partitioning, and allow developers to partition and re-partition applications with drag-and-drop simplicity. Magic still uses a manual table-driven process. Moreover, Magic still employs interpreter engines in lieu of native code generators and compilers. Therefore, performance is a bit lackluster in comparison.
Although the Magic development environment is "object-oriented-like" through its Program Dictionary, tasks, and sub-tasks, it does not fully support the object-oriented (OO) features you would find in other tools such as Delphi, PowerBuilder, and SQLWindows. The non-OO table-driven method of development works well and is speedy, but it takes time to get used to it. I would also like to see support for VBX and OCX controls, in addition to the excellent DDE support that Magic already offers. I would also like to see a built-in database design facility. For now, you'll have to rely on another tool for that.
Putting all of the small problems aside, Magic is an excellent client/server development environment. You can develop both simple and complex applications in record time. This feature makes Magic an excellent candidate for a rapid application development (RAD) tool or prototyping tool. To top it all off, Magic is ready to accept your application on other environments that Magic supports without forcing you to modify your application. If you want to create powerful applications faster than the other tools available, you're going to need a little Magic.


