inks to the various source and target application data into a single executable file. You can then run this .EXE file without manually opening any of the applications.
Building with Blocks
Programming in Prospero uses three basic elements: building blocks, connections, and ports. Building blocks are the components that represent tasks. Building blocks can generate, collect, or control data. Prospero uses three types of building blocks: application templates, common building blocks, and system-defined blocks.
Application template blocks are tied to specific third-party applications, such as Microsoft Excel or Lotus Notes. Prospero comes with predefined application blocks for Word and Excel, Notes, Symantec's Act contact manager, Delrina's WinFax Pro, MAPI-based electronic mail, and SQL databases. These blocks have predefined BASIC code.
Common blocks are set up to perform common chores, such as if/then/else flow, calculating formulas, and handl
ing variables. Developers can program these blocks by filling out forms that construct BASIC code for the block. One common block is, essentially, a BASIC editor for developing custom blocks.
System-defined blocks are used for other common programming tasks, such as looping, counters, moving data to the clipboard, and printing. The only difference we could find between common and system-defined blocks is that you can't modify the latter's code.
Ports are the connection points between building blocks. For example, in moving sales-contact information from Act to Excel, the programmer must specify the Act field names as output ports and an Excel named range as the input ports. Data flows through pipelines called connections, which the programmer creates by drawing lines on-screen between ports. Connections can allow only one value to pass through (indicated with a single arrowhead) or multiple values (double arrowhead).
Making Programs with Prospero
Cre
ating a Prospero program
is quite simple. Open the visual program editor, which is similar to any vector-based drawing program. Drag-and-drop or insert a building block onto the editor screen for each task, and develop any new building blocks for BASIC subroutines you may need. Configure your building blocks as needed, specifying data, application, and file location, selection criteria, and actions to be executed. Next, you connect the ports on the building blocks, specifying the order of execution and the direction and amount of data to be moved. After testing, you can compile the visual program into an executable file.
Turn on Prospero's animation mode and, during program execution, each component on the visual editor will change color when it's active. Not only is this neat, it also serves as a kind of visual data flow debugger, since you can see the component interaction in real time.
Oberon recommends at least a 486DX2/66 processor, 8 MB of memory, 10 MB of disk space, and Windows 3.11,
Windows NT 3.5, or Windows 95. Prospero is a 32-bit application, so if you're running Windows 3.11, you must install the Win32s DLLs; Oberon also recommends that you install their ODBC Win32s extensions. We installed Prospero on a Compaq Prolinea running Windows 3.11 with a 75-MHz Pentium and 16 MB of RAM. We also used Oberon's Win32s DLLs and ODBC drivers. The entire process took less than 15 minutes.
The program comes with a sample application that we tried to re-create. This puts up a dialog box to get filter information from the user, selects records from an Act database, and transfers the data to an Excel spreadsheet. Building the sample program is simple and gives you a basic understanding of how the tool works.
However, the first time we executed the program, we ran out of resources. We closed everything that was running except Prospero and the program then worked. On the third execution, the application ended abruptly with the error message "Object creation failed." Using the integrated
debugger, we set breakpoints and found the program wasn't opening the Excel spreadsheet. We tried a number of alternatives without success. Finally, we closed the program and re-created it. This time, it ran without a hitch.
Doing Real Work
Here's an example of Prospero in the real world. At KPMG Peat Marwick, an administrative person periodically collects sales information from Excel spreadsheets that have been E-mailed from various parts of the organization. This person has to consolidate and rekey the data into a Notes database for sorting, viewing, and reporting. This task normally takes 6 to 8 hours per month. We developed a Prospero application to automate the process and add a reporting function using Microsoft Word.
We initialized an Excel block for each spreadsheet using the import feature, and Prospero correctly preconfigured the blocks for name, location, and named ranges. We then added a new Excel block to consolidate these into a single spreadsheet. Specifying
the ports was easy. However, when we tried to append data into the global spreadsheet, the program kept overwriting the previous contents. We finally fixed this, with a little help from Oberon's technical support staff, by changing input options.
Next we set up two Notes blocks -- one to catch data from the global spreadsheet and another to transfer selected data to a report. To make this work, we created a new view in the Notes database for the status report data. We prompted the user for a date range, then fed that back into the Notes block to extract the chosen records into the report. We compiled the application and ran it several times. Performance wasn't bad: The program processed some 500 records in approximately 3 minutes.
Steep Learning Curve
Prospero is most useful for repetitive tasks or infrequent batch data conversions where the underlying data and file layouts don't change often. For dynamic data, however, it has some limitations. If you rename or move a sprea
dsheet, the Prospero application must be recompiled or run via the interpreter.
Like most point-and-click programming tools, once you move beyond simple data transfers, Prospero's level of complexity goes up tremendously. One factor that complicates the learning process is that each type of building block has some unique configuration options. Become an expert at configuring the Excel block, and you still have to learn the Notes block, the Word block, and so on.
This kind of difference between applications also surfaced when we tried to perform equivalent functions in Notes and in a SQL database; the options are different. Also, you can insert additional SQL code into a SQL block. Furthermore, the SQL block has buttons you can use to set the record-selection criteria.
For the next release, Oberon should try to make similar functions look and act similarly to the programmer across different building blocks. This would substantially reduce the complexity associated with learning the softwar
e.
Prospero has a ton of functionality, and its visual editor and animation features are really slick. However, to get Prospero to do complicated tasks, like multiple filters or data merges, you have to spend a lot of time learning how the tool works.
PRODUCT INFORMATION
Prospero........................$695
Oberon Software Inc.
Cambridge, MA
(617) 494-0990
fax: (617) 494-0414
Circle 1133 on Inquiry Card.
HotBYTEs
- information on products covered or advertised in BYTE
screen_link (51 Kbytes)

The
screen at left
shows the essentials of a Prospero visual program on the editor screen. Each block indicates its application or data source, field names, what data gets transferred to where, and the nature of those transfers. The
palette at bottom
contains sample blocks for various applications and functions.
Below,
a properties block for a Notes database shows how visual programming substitutes forms and templates for declarations and selection criteria.
Kelly Trammell is a partner with KPMG Peat Marwick's Strategic Services in Houston, Texas. You can reach him on the Internet at
ktrammel@kpmg.com
.