Copyright: USERGUIDE.HLP, documentation for MSM-Workstation 2.0.0, copyright © 1998 Micronetics Design Corporation   Tuesday, April 14, 1998 10:41:52%
Citation: Extract from USERGUIDE.HLP, documentation for MSM-Workstation 2.0.0, copyright © 1998 Micronetics Design Corporation


Help Contents
Contents

Introducing MSM-Workstation

MSM-Workstation Environment

User Interface

Application Components and Programming

Window Reference


Introducing MSM-Workstation

Welcome

What's New in 2.0

Getting Started

Support


MSM-Workstation Environment

The MSM System

MSM-Workstation Architecture

Databases

Basic Operation

Integrated Windows Features

Designing GUI Applications

Distributing Applications

Licensing

Use with MSM-SQL

Conversion Issues


User Interface

Overview and Terminology

Databases

Components

Main Window

Menu System

System Browser

Editors

Command Window

Toolbox

Other Windows

Online Help

Keyboard Shortcuts


Application Components and Programming

Overview

Applications

Modules

Windows

Controls

Programming

Testing

Executables

Debugging

Procedures

Frequently Asked Questions (Hints and Tips)


Window Reference

Main Windows

File Dialogs

Edit Dialogs

Element Dialogs

Tool Dialogs

System Dialogs

Help Dialogs

Definition Dialogs

Editors

Debugger Windows

Other Windows and Dialogs


Welcome

Overview

Challenges Facing Today's Developers

Solutions Provided by MSM-Workstation

MSM-Workstation Options

Using Packaged Applications

When to Use M on the Desktop


Introducing MSM-Workstation - Welcome - Overview
Overview

This chapter provides an overview of MSM-Workstation, an implementation of Micronetics Standard M (MSM) that runs under Microsoft Windows 95 and Windows NT Version 4.0 or later. MSM-Workstation runs as a true native Windows application in 32-bit mode and is fully integrated with the Microsoft Windows operating system. It includes a full Graphical User Interface (GUI) subsystem that is compliant with the M Window Application Programming Interface (MWAPI) Version 1.1 standard.

MSM-Workstation Version 2.0 provides a powerful, GUI-based development environment. It supports Microsoft's Distributed Component Object Model (DCOM) to allow controlling of external applications from the M system and to permit external applications to access MSM programs and data. MSM-Workstation interfaces to non-M development tools such as Microsoft Visual Basic, Powersoft Powerbuilder, or Borland Delphi. MSM-Workstation behaves like any standard non-M application running under Microsoft Windows on the desktop.

MSM-Workstation can be used to implement, configure, and package applications that run on the desktop with a local database or in a client/server model that has access to remote database(s) resident on one or more servers. Complete applications can be assembled into a single EXE for royalty-free distribution.


Challenges Facing Today's Developers

M software developers and others face special challenges when they migrate character-based and minicomputer applications to a GUI-based, client/server computing model. M implementations capable of running under Windows have tended to be server products, investing little in integration with the GUI environment of their platform. M products scaled and priced to be eligible for deployment on individual PC workstations have often run as DOS applications, compromising the performance of any GUI interface they attempt.

The implementation of client/server systems is often a cumbersome task. Generally, after an M license is installed on each client machine, the clients must be configured and updated. When the M software is modified, each client must be updated. In addition, network setup and maintenance generally require configuration changes to each client's M system. After the setup is complete, users often discover that M applications take considerably longer to start under Windows than non-M applications.

Compared to other languages, there are few development tools to assist programmers in writing M code for the Windows environment. Interfacing to external tools is a significant problem for M developers. DOS-based M implementations that run under Windows lack the ability to initiate, interact with, and control external (non-M) applications. In addition, these implementations do not provide a standard mechanism for non-M applications to access M programs and to fetch and update M data.

Pricing is another issue for M developers who build client/server systems. Generally, each client connected to the network requires a separate M license. Licensing is also a factor for applications that are not connected to an M server. Until now, M developers have experienced difficulty in deploying M applications in a cost-effective, competitive manner. Little wonder that many have reluctantly had to resort to dual-language solutions, implementing their clients in a different language.


Solutions Provided by MSM-Workstation

To solve the problems facing today's M software implementers, Micronetics Design Corporation developed MSM-Workstation. Micronetics completely redesigned the MSM system to exploit the capabilities of the Microsoft Windows environment and to ease the migration of legacy applications into GUI-based, client/server computing.

The following summary of MSM-Workstation's major features describes how Micronetics solves today's programming challenges.

Microsoft Windows compatibility

MSM-Workstation Version 2 runs on Windows 95 and Windows NT Version 4.0, and its use of standard Microsoft APIs assures its compatibility with future versions of these products. MSM-Workstation uses industry-standard networking protocols such as TCP/IP and IPX/SPX that are supported by the underlying Windows platform. It interfaces to external applications using DCOM, permitting operation as an Automation Controller or Server. It is also capable of hosting ActiveX controls, opening up a wide range of sophisticated options for the development of state-of-the-art graphical user interfaces.

Client/Server architecture

MSM-Workstation's design is based on a three-tier model for client/server computing. It includes a simplified, client-only subset of MSM's Remote Volume Group (RVG) protocol, which allows distributed caching of the routine and global database (remote access to databases across a network from distributed clients). In addition to support for remote MSM databases, MSM-Workstation includes support for local MSM databases on the client and remote access to Digital Standard MUMPS (DSM), Intersystems Standard MUMPS (ISM), and Data Tree MUMPS (DTM) databases from the client via an MSM-Server system.

Built-in MWAPI

MSM-Workstation provides a full implementation of the M Windowing Application Programming Interface (MWAPI) standard, Version 1.1. It operates in 32-bit mode and includes vendor-specific enhancements that facilitate the development of sophisticated Graphical User Interface (GUI)-based applications. MSM-Workstation is the only commercially available system that supports the complete MWAPI standard for GUI development in M.

GUI-Based development environment

MSM-Workstation's updated development environment uses the capabilities of a native Microsoft Windows-based system and its associated well-known GUI interfaces. Workflows and screens conform to the de facto industry standards for development environments.

The following overview describes the elements of MSM-Workstation's GUI-based development environment.

GUI developer shell

Building on previous success with the MSM-ViEW/Builder product, allows development of M-based GUI applications which exploit MWAPI 1.1 as augmented by Micronetics' extensions, without requiringt he developer to learn MWAPI-level programming.

Provides editors (routine, global, SQL, screens, and so on), printing support, import and export capabilities, searching, customization, configuration management, project organization, and application packaging capabilities.

Character windows

Facilitates the migration of character-based applications as well as ongoing use of legacy CHUI development tools. Eight character windows emulate ANSI X3.64 terminal environments and can be invoked from and coexist with GUI applications.

Full online help

Provides help information for the M programming language and the Developer Shell in the Microsoft Windows HELP format. The help feature includes a table of contents, a glossary, and search and printing capabilities, all of which adhere to Microsoft's standard HELP operating methodology.

Graphics print driver

Uses standard WRITE statements to access Windows printers such as Postscript, PCL, FaxCards, and character printers. Existing programs can use any defined Windows printer with little or no modification. New applications can use all of the Windows printer capabilities, such as font selection and point size specification.

Macro preprocessor and embedded SQL

Implements a full macro language that enables developers to define parameter-driven code segments that can be inserted in M programs. When used in conjunction with MSM-SQL, the development environment supports embedded SQL statements in M programs.

Common dialog boxes

Selects printers, fonts, point sizes, disk drives, directories, and so on.  Dialog boxes can be included in any user-written application.

Controlling external applications

External applications that support Automation (for example: Microsoft Visual Basic, Microsoft Excel, Microsoft Access, and Microsoft Word) can be invoked and controlled from the M programming environment by using MSM-Workstation. Methods and properties of external objects can be referenced by using an object-oriented syntax. For example:

SET EXCEL.CHART1.CELL(1,0)= Mvarname

External applications controlling M

MSM-Workstation works in concert with MSM-Activate, allowing development of M Automation Servers. Applications such as Microsoft Visual Basic, Powersoft Powerbuilder, Borland Delphi, and other third-party tools can use objects to control M functions and access the M database. These applications can pass object handles to the M system that allow it to manipulate objects in the calling application's environment.

Separate process per job

Under Microsoft Windows, each M job is a separate process. By using an icon, these processes can be invoked independently from other jobs running on the desktop. Independent jobs can share data stored on an MSM-Server system running on the same system or accessed remotely over a network. Each job's configuration parameters are isolated from all other jobs.

Bulletproof databases

Local databases associated with the development environment or with applications packaged using the development environment are automatically "bulletproofed" by MSM-Workstation. No setup, initialization, or configuration management is needed to use this fully automated feature.

Read-only databases

Developers now can create read-only databases that contain routines and globals. Accessed as Windows files, these databases may stored either locally on the client or remotely on the Windows network. This feature improves application performance without increasing maintenance complexity.

Routine search paths

New facilities search for M routines in a sequence of databases. Control of routine save locations facilitates a more sophisticated method of reusing code.

Application packaging

MSM-Workstation provides developers with a powerful means of distributing applications royalty-free by packaging applications in a single, standard executable (EXE) file. Application packaging requires two steps.

First, windows, routines and read-only globals are selected for inclusion in the EXE file. Configuration information, such as application name, buffer pool size, operating mode and server requirement is specified. After these steps are complete, MSM-Workstation assembles the components in a single executable load module and files the module using the specified application name.

Run-time library

Packaged applications simplify maintenance operations. Because an EXE file on a network can be shared by all workstations, a single upgrade of a packaged application applies the update to all workstations that use it. Similarly, when an upgrade to the MSM engine and run-time library is applied as a single replacement, there is no need to repackage the applications(s) that use MSM. These capabilities facilitate upgrades to widely deployed software systems.


MSM-Workstation Options

MSM-Workstation exists in two states: Unregistered and Registered. Both have identical capabilities, but EXEs made with an unregistered copy will notify their end-users of this fact at every startup. Support and maintenance contracts are only available on registered copies.


Using Packaged Applications

Applications that are packaged in an EXE file behave like any other executable file in the Windows environment. An EXE file can be stored either on a client system or a Windows server system (for example, Windows NT or a Novell server). An EXE file can be shared by all of the workstations on a network.

No system configuration is required for applications that are packaged to use a local database. The only configuration required for applications that access a database on a remote MSM server is identification of the name of the server to be accessed and the communications protocol to be used, (for example, TCP/IP or IPX/SPX).


When to Use M on the Desktop

In the three-tier model of client/server computing, M developers can decide whether to include M on the desktop when an application is deployed. Generally, this decision is based on the amount of M data to be accessed and the frequency of such access. It is appropriate to include M on the desktop for the following types of applications.

Highly interactive applications

Desktop execution of M code provides the rapid response required by applications that frequently access MSM-Workstation via Remote Volume Group (RVG) or remote server-based support adhering to the client/server model.

Complex data entry and validation

The high speed of M code execution on the desktop benefits applications that use M code for data entry and input validation locally on the Workstation client.

Applications driven by M

M should be loaded on the desktop to run applications that use MSM's Automation support to control other applications (for example, an application that updates a Microsoft Excel spreadsheet or controls a Microsoft Word mail merge).

M-only implementations

Applications that are coded entirely in M benefit from including M on the desktop if they must operate in a true client/server model (for example, legacy applications and character-based applications).

If access to M data is infrequent or an immediate response is not expected, it may not be necessary or desirable to include M on the desktop. For example, when a report writer such as Microsoft Query or Crystal Reports is used to extract information from a large database, it is generally more efficient to run the query on the server. When such a query is run on the client, the large volume of data that is transferred to the client over the network reduces system speed and efficiency. In this situation, it is appropriate to bring the results set from the query back to the client when additional local processing is required.

In other situations, M should be included on the desktop, and the server should be accessed for high-volume data requests; for example, if a highly interactive M application with complex validation invokes Microsoft Query through Automation for reporting purposes. In this case, the interactive application retrieves data through the MSM client that maintains an RVG connection to the server for data access. The Microsoft Query application simultaneously accesses data on the MSM-Server system through an ODBC connection to MSM-SQL.


What's New in 2.0

When compared with Version 1.0, MSM-Workstation Version 2.0 provides the following major new features.

See Also:

New Licensing

MDI Environment

System Browser

Syntax-highlighting Editor

Window Browser

Group Operations

GUI Debugger

QuickTest

ActiveX (OCX) Support

Tabbed Groups

Container Controls

Toolbars

Popup Menus

MDI Support

Automation Server Enhancements

CHUI Window Improvements

Miscellaneous Changes


New Licensing

Workstation 1.0 came in three editions with varying capabilities: Explorer, Standard, and Professional. Workstation 2.0 replaces these with two states: Unregistered and Registered. On initial installation, the product is Unregistered, but with the addition of an activation key (purchased from Micronetics), it becomes Registered. The unregistered product has the same capabilities as the registered one. However, executables made with an unregistered copy will notify their end-users of this fact upon every startup. Maintenance contracts will only be available to registered users.

Owners of Workstation 1.0 licenses should consult Micronetics about arrangements for upgrade.


MDI Environment

By default, MSM-Workstation presents an MDI environment. Many windows are MDI children, and all the normal management facilities are provided. The MDI interface can be turned off using Tools/Preferences.


Introducing MSM-Workstation - What's New in 2.0 - System Browser
System Browser

A new System Browser window provides a powerful new method of interacting with databases and objects. It displays at startup and can be selected from the View menu. The window shows the mounted databases and their contents and lists other databases for which monikers have been defined. Right-click menus on the tree allow monikers to be registered, edited, renamed, and deleted. Databases can be created, mounted, expanded, validated, and unmounted. Lists of open or available objects can be displayed in various forms and sort-orders. Some lists can be filtered (? and * wildcards are supported). Objects may be opened, closed, or exported as appropriate for their type and state.


Syntax-highlighting Editor

A syntax-highlighting editor for routines, sources, globals, and host files has been added. Many features are configurable on Tools/Preferences, including command-completion or command-abbreviation, and reformatting of dotted-DO blocks.


Introducing MSM-Workstation - What's New in 2.0 - Window Browser
Window Browser

Opening a new or existing window opens the build-mode version of the window for visual layout. This build-mode window may be positioned anywhere on the display—it is not an MDI child.  In addition, each build-mode window opens a corresponding Window Browser window for code creation and editing. This is an MDI window.

Since the build-mode windows may obscure code when the focus is on editing action logic, build-mode windows are automatically hidden when the focus is on a Window Browser (or other editor) window. To move between the Browser and the associated build-mode window, use the F6 shortcut key or the window menu.

This automatic hiding can be turned off or altered to auto-minimization using the Tools-Preferences dialog.


Group Operations

When designing windows, groups of controls can be selected using the CTRL key in conjunction with the mouse, or by dragging a rectangle around the controls while the Pointer tool is selected. Common properties can be manipulated. The group can be moved, cut, copied, pasted, or deleted.


GUI Debugger

The GUI Debugger is new component that allows sophisticated interactive debugging of M code, either within debug EXEs or during File-Test within the development environment.


Introducing MSM-Workstation - What's New in 2.0 - QuickTest
QuickTest

A QuickTest button [image] (F5 shortcut key) has been added to the toolbar. This button operates if the current object is a window, module, application, routine, or source which generated a routine. If changed, the object is saved. If necessary, it is compiled. It then is tested using a mode which initiates the GUI debugger if an error is encountered. The button acts as a shortcut for Save, Compile, Test from the File menu, with one difference. If the current object is a module or application, the compile stage only applies to the object and not to any selected components.


Introducing MSM-Workstation - What's New in 2.0 - ActiveX (OCX) Support
ActiveX (OCX) Support

MSM-Workstation developers are now able to exploit a wide range of advanced and specialized GUI controls on windows they build.  See the section on ActiveX support.


Introducing MSM-Workstation - What's New in 2.0 - Tabbed Groups
Tabbed Groups

The new MSM Tabbed Group control enables you to produced tabbed dialogs.


Introducing MSM-Workstation - What's New in 2.0 - Container Controls
Container Controls

The GroupBox control and the new Tabbed Group control act as container controls, which allow groups of controls to be moved together.


Introducing MSM-Workstation - What's New in 2.0 - Toolbars
Toolbars

You can define toolbars on windows that are under development. To add a toolbar, use the right-click menu. Use the right-click menu on the new toolbar to add buttons. Use the right-click menu on the buttons you add.


Popup Menus

A new macro, %%PopMenu, allows action logic to display a pop-up menu.  Refer to %%PopMenu in the Technical Reference documentation for information on this topic.


Introducing MSM-Workstation - What's New in 2.0 - MDI Support
MDI Support

The Window Definition dialog has a new drop-down box that replaces the drop-down box previously used to set modal type. The new box allows you to define a window as Normal, MDI Parent, or MDI Child.  See the section on MDI Support.


Automation Server Enhancements

MSM-Workstation-built Automation Servers now can handle the by-reference and array-passing features of MSM-Activate (formerly MSM-API).

The array-passing facilities have been further enhanced to simplify use when both client and server are M systems, such as an MSM-Workstation application using the M.Command object to communicate with an MSM-Server or with another MSM-Workstation application built as an Automation Server. Sparse M arrays can be passed by-reference to and from the server in the same way as would be done when calling a local subroutine.


CHUI Window Improvements

MTERM and ZMTERM windows (CHUI windows) now support Mark/Copy/Paste and font-size selection. Use a right-click to display the menu. A toolbar also may be enabled.

Both CHUI window types support three attributes: ZMTFONT, ZTBVISIBLE, and ZVTAREA.

ZMTFONT sets or reports the font size.

ZTBVISIBLE is a true-false attribute that reports or sets the visibility of the toolbar.

ZVTAREA specifies the area within which cursor-positioning escape sequences will operate. It defaults to 80,24. Setting this larger, in conjunction with other attributes which make the window bigger, allows use of a twenty-fifth line or 132-column mode.

Additionally, ZMTERM windows now support a ZNOCLOSE attribute that can be used to suppress the close button.

Refer to Console Window Devices in the Technical Reference documentation for information on this topic.


Miscellaneous Changes

1.  Default background colors for Checkbox, Label, GroupBox, and RadioButton controls now fit properly in the Windows color scheme. For Text and Document controls, if no BackColor is set for the control, its window, or any ancestor window, then the default color varies depending on the DisplayOnly property. If DisplayOnly is true, the background of the control matches the application workspace.

2.  Support for multiple window instances (see MDI above) means that the ^$W subscript used at run-time no longer matches the window's design-time name. If macros have been used correctly, there should be no adverse effect on existing code.   A new macro %%CurrWinName gives the design-time name of the current window.

3.  Make-EXE warns you if components need recompiling and allows recompiling before the executable file is made. Executable files now include version information that appears on the file's property sheet.

4.  The size of the default in-memory database given to an executable file may now be set on the Make-EXE Options dialog. An additional option can produce smaller EXEs, at the cost of a slower Make-EXE process.

5.  Sources can be components of modules and applications. When a source is part of an application, the routine it generates will automatically be included as a component of the application, provided that the source has been saved since upgrading to MSM-Workstation Version 2.0.

6.  Disabling the close event on a window at design-time disables the close-button at run-time, provided the window has a parent.

7.  The "Server Down" messagebox that used to appear when MSM-Workstation Version 1 lost contact with a server has been removed. This situation now produces a trappable M error, generally <DSTDB>.

8.  The units in which the TabStops property (MWAPI ZTABSTOPS) are measured have been altered. Although the documentation incorrectly indicated that the units were ZDLG, the values actually were interpreted as pixels by Workstation Version 1. To make the property more useful, the unit of measure is now one-eighth (1/8) of the average character width in the control's font. This means that as the font is altered, the tabstops vary. However, TabStops values may need to be adjusted for existing applications.

9.  The underlying event-dispatch model of MSM-Workstation has changed between Version 1 and Version 2.0. This allows support of ActiveX control events and correct operation of the PDRAG event of the MWAPI SCROLL gadget.

We do not expect this to cause problems. Additional technical information is available on request.

10.  Windows Help can be incorporated simply into your application using the new HelpID property of controls and windows. This specified the context number you assigned to the piece of help text (use a third-party product to generate your help file). If the number is preceded by a minus sign in the HelpID property, then the entry is displayed as a pop-up. Otherwise, it appears in a normal context help window. Your help file should normally be located in the same directory as your EXE and have the same name apart from the .HLP extension. To override this, your application's install process can create a registry section:

HKEY_CURRENT_USER\Software\<varname>\<appname>\%Help

with an item called FileName that names your file. Relative names are relative to your EXE's directory.

Note that the HelpID property only provides this automatic behavior if the object has no action logic defined for the help event.

11.  MSM-Workstation's scratch global (^BLDt) now is automatically located in the in-memory database (%Temp) when you are working in a network database. This prevents the high volume of SETs and KILLs to this scratch global from having to travel over the network, yielding better performance and lower network traffic. However, some users may find it necessary to relocate the scratch global to another database (for example, when working with many concurrently open large objects leads to a shortage of space in the in-memory database). Set a node in the ^BLD global within the network database (RVG-mounted UCI), as follows:

^BLD(300327,license_number,2)=setting

where license_number is the serial number of your Workstation license:  $P($P($SY,",",2),";")

setting is a UCI,VOL name or a moniker or 0 to signify the current uci (containing the ^BLD global whose node is being set). A node with a license_number subscript of 0 is used in the absence of a specific node for your own number, or if you are running MSM-Workstation unregistered.

For example, this setting on an RVG uci will keep the scratch global on the server for all users, reproducing the behavior of MSM-Workstation Version 1:

^BLD(300327,0,2)=0

This setting will attempt to place the scratch global for user 9999999 onto the database they have bound the moniker Scratch to:

^BLD(300327,9999999,2)="Scratch"

If this is not possible, the current database or the in-memory database will be used as fallback locations.

The location of the scratch global is reported on the Properties dialog obtained from the right-click menu on the mounted database within the System Browser tree.

12.  In conjunction with MSM-Server 4.4, Workstation EXEs (including the Workstation development tool itself) can participate in enhanced RVG access control. This will permit the MSM-Server system manager to define which Workstation EXEs are to be given access to each exported server volume-group. To enable this feature, EXEs generated with Workstation 2.0 are given a 16-character Product ID. This ID is derived from the developer's registration details and certain elements of the Make-EXE options, allowing the developer to preserve the same Product ID over later releases of the product.

13. File-New now supports Copy-From for Routines and Sources.

14. File-Import preserves module-membership of overwritten windows.

15. A new function $$MSG^%msc translates M error codes, service-routine error codes (%MERR), and Windows object error numbers. See in-routine comments for details.

16. New service routines %mmprof and %mreg give read-write access to the application's HKEY_LOCAL_MACHINE registry section, and read access to any registry section (subject to system security). See in-routine comments for information.

17. The Windows printer /SETFONTNAME mnemonic takes an optional second argument, allowing the character set to be specified. Values are:

Value	Character set
0	ANSI
161	Greek
162	Turkish
186	Baltic
204	Russian
238	East European


Getting Started

Installation

A First Application


Installation

This section describes how to install and uninstall MSM-Workstation and provides information on modifying startup parameters.

MSM-Workstation is distributed either on CD-ROM or 3.5-inch high-density diskettes. The installation package also contains the Quick-Start document and, if you registered your copy at the time of ordering, an activation key.

Before you begin installing MSM-Workstation, review the README file that is provided in the root directory of distribution diskette 1 or the CD-ROM. The README file provides late-breaking information on installation issues and other details.

Please visit our Web site at www.micronetics.com for up-to-date information about the MSM product family.

See Also:

Requirements

Installing MSM-Workstation

Starting MSM-Workstation

Installation problems

Directory structures built

Files modified

Uninstalling MSM-Workstation


Requirements

MSM-Workstation operates on Windows 95 and Windows NT 4.0.

Hardware

A full installation requires approximately 22 MB, and a minimum installation requires approximately 15 MB. The least powerful system on which this version has been successfully tested is a 20MHz 386SX with 8 MB of RAM, running Windows 95. However, performance of any Windows application is severely compromised by such a low hardware specification.

Networking

An MSM-Server system, Version 4.3 or later, is required to use network databases. TCP/IP or IPX/SPX networking, standard components of Windows 95 and Windows NT, must also be installed on the PC.


Installing MSM-Workstation

Insert distribution diskette 1 or the CD-ROM in the appropriate drive of the computer on which you are installing MSM-Workstation.

•	To install from diskettes, run the SETUP.EXE program from distribution diskette 1.

•	To install from CD-ROM, run the SETUP.EXE program in the root directory.

Installation may ask you if you wish to upgrade Microsoft Automation. MSM-Workstation requires updated versions of certain Microsoft files which are absent from some systems. If in doubt, agree to the upgrade. However, you only have to do this once, even if you subsequently uninstall and reinstall MSM-Workstation.

At the end of installation, you are prompted for registration information. If you have not registered the product at purchase, leave the fields empty. You will be able to use MSM-Workstation unregistered, subject to limitations documented elsewhere. To enter a registration at a later time, use the option from the Windows start menu, or run REGISTER.EXE in the installation's Program directory.

Note  The paper key and the LICENSE.MSM file it generates are covered by a license agreement and are not redistributable.

If you are installing from diskettes, the system may not require you to use all of the installation diskettes. The installation process may prompt you to enter the same diskette more than once. Pay close attention to the installation instructions.


Starting MSM-Workstation

Use one of the following methods to start MSM-Workstation:

•	For systems running on Windows 95 and Windows NT, select the Start button and then select Programs. Select the MSM-Workstation group, and then select MSM-Workstation.

•	Run the MSMWS.EXE file directly.

If you register the .M file extension to open with the application MSMWS.EXE, you can double-click a .M database file and have Workstation start up with that database automatically mounted. MSMWS.EXE also accepts .M files via drag-and-drop, which is a convenient method of starting up MSM-Workstation with a development database mounted. Alternatively a database filename or a registered moniker can be specified as a command-line parameter to MSMWS.EXE.

After MSM-Workstation is started you are in a sophisticated application development environment, itself constructed with MSM-Workstation.


Installation problems

The following problems with the MSM-Workstation installation have been identified.

System Browser tree unresponsive, or Editors won't load

If the right-click menus cannot be brought up on the System Browser, or if text fails to load into the editors (including Action Logic in the Window Browsers), the Microsoft Automation update may not have installed correctly.

Close down Workstation. Run OADIST.EXE from the Program\Redist directory. Restart Windows and MSM-Workstation. If the fault persists, try uninstalling and reinstalling Workstation.

Windows Language indicator switches during editing

Developers in non-English-speaking countries frequently configure Windows to support multiple input locales and keyboard layouts. One of the locales generally supports English, since programming in M requires use of the Western character set.

MSM-Workstation's syntax-highlighting editor uses Microsoft's RichEdit control. Text may be entered using any language that you have set using the Windows Control Panel. However, language and character-set information is not preserved within the routines, globals and other texts which are edited. This is by design.

Use Tools/Preferences to specify which language the editor should default to, and to select a character set for its fonts which is capable of displaying text in all the languages you will be using.

Despite these settings, the editor may still switch language unexpectedly during use. For example, the user selects a language but after the first character is entered the system reselects the original one. The RichEdit control seems to behave poorly if one of your Input Locale settings on the Windows Control Panel is English (United States). Replace this with English (United Kingdom). Note that you can still associate a US keyboard layout with this locale.


Directory structures built

A full installation of MSM-Workstation creates the following subdirectories in the directory that was selected for installation.

Directory	Contents
Program	The MSM-Workstation executable, associated DLLs, help files, and the preloaded MSM-Explorer database of sample routines.
Program\Redist	Redistributable files and libraries required for proper operation of MSM-Workstation-generated EXEs on end-user systems.
Program\Redist\Win32s	Redistributable files required by EXEs running on Win3.x systems under Win32s 1.30c. Note that starting with Workstation 2.0 such configurations are unsupported.
Program\Xcall	Tools for developing user-defined XCALLs.
Samples	Samples.
Samples\Ws	Exported source for samples and a help file that describes the individual samples and how to use them.


Files modified

Support files required for the proper operation of MSM-Workstation are copied from the Redist directory to the Windows\System or System32 directory during installation.

The registration database is updated to record the presence of new components.


Uninstalling MSM-Workstation

Perform the following procedure to remove MSM-Workstation from Microsoft Windows 95 or Windows NT.

1.	Select Add/Remove Programs from the Control Panel.

2.	Select MSM-Workstation from the list of installed programs. Uninstall then removes all of the files created during the MSM-Workstation installation.

Note  Because Uninstall does not remove files created after the installation completes, you may need to manually delete additional files.


A First Application

Use the following procedures to verify the installation and become familiar with new concepts by building a stand-alone executable application. This application consists of one window with a button that is labeled Push Me. When the button is pushed, the application displays the message "Please don't push this button again!"

These procedures illustrate using a database, building an application, using action logic, compiling and testing, defining application startup, and building an executable.

See Also:

Using a database

Building an application

Using action logic

Compiling and testing

Defining application startup

Building an executable


Using a database

Before you can begin, you must have a development database.

If you installed the MSM-Explorer database and want to proceed quickly to the next step, you can use it as the development database. To use the MSM-Explorer database, first start Workstation as described in Starting MSM-Workstation and use EXPLORER.M as the database. After you start Workstation, follow the instructions in  Building an application.

However, creating a new database for this first application is more instructive. It is also safer, because EXPLORER.M will be overwritten by subsequent installations of MSM-Workstation, and will be removed by the Uninstall process.

Create a new database

To create a new database, start Workstation as described in "Starting MSM-Workstation" and then complete the following steps.

1.	Right-click on the Databases node of the System Browser tree and select New Local Database…

2.	In the File Name box, enter Test.

3.	Click Create. When the system displays a message box, click OK.

The database file TEST.M is created, but is not mounted. You must mount the database before it can be used.

Mount a database

Mount a database in file TEST.M and associate it with the name First.

1.	Right-click Databases and then select Open Local Database…

2.	In the Moniker box, enter First

3.	In the File Name box, enter Test.M

4.	Click Open.

The database is now mounted and is associated with the name First in the system registry. The database now can be referred to as First in extended global references and other operations.

Did you notice the button labeled New…? That would have allowed you to combine the previous step with this one.

Select a database

The previous step did not select your database to become the current one. The status line of the main window still shows %App, and that node is highlighted in the System Browser tree. Perform the following step to select the database.

1.	Click on the node labeled First in the System Browser tree.

Note that the status line now displays First as the current database.


Building an application

You now are ready to create an application and add GUI components to it.

An application is a specific type of module. A module is a container—an object that contains other objects—and is represented on the display as a list of its components. An application is a special type of module that can be turned into an executable program.

Create an application module

To create an application called App1:

1.	Right-click on the Applications node beneath your database in the System Browser. Select New… and a dialog appears.

2.	In the Name box, enter App1.

3.	Click OK.

Workstation creates an application module and displays a window that lists components. So long as the application remains open, all windows that are subsequently created are automatically added as components in the application window.

Create a window

To create the Win1 window:

1.	From the File menu, select New…

2.	In the Name box, enter Win1.

3.	From the Type list, select Window.

4.	Click OK.

5.	In the Title field of the Window Definition dialog box, replace the existing text with the words Important Window.

6.	Click OK.

You now have an application that consists of a window named Win1, which is titled Important Window.

Notice how this time a different technique was used to obtain the New dialog. A right-click on the Windows node in the System Browser would have worked just as well.

Save a window

To save the work you have completed on window Win1:

1.	Ensure that window Win1 has the focus (click on it if you are not certain).

2.	From the File menu, select Save.

3.	If Workstation prompts you to verify whether the new module should be saved, click Yes.

To make the window useful, add a control.

Add a control

To add a push button labeled Push Me! to window Win1:

1.	From the Tools toolbox, click the icon for the push button (in the upper-right corner of the toolbox).

2.	Then click anywhere on the surface of Win1.

Alternatively, position the pointer on Win1 at the location for the upper-left corner of the button, hold down the left mouse button, and drag to the position at which the lower-right corner is to be located. Release the mouse button

3.	In the Text field of the Button Definition dialog box, replace the existing text with the words Push Me!

4.	Click OK.


Using action logic

The logic that makes a Graphical User Interface (GUI) work is based on event-driven programming. When events occur (generally because of user activities), certain actions are performed. For example, when a user clicks a push button, an action must result if the application is to perform useful functions.

Controls and windows can respond to various events. Some events are common, and others are window-specific or control-specific. Generally, only a small number of the available events are used.

Action logic is the term used to describe the code that is executed when an event occurs. The next section explains how to attach action logic to the GUI push button control in window Win1.

Select an event

To select the event that occurs when a push button is pushed:

1.	Point at the Push Me! push button on window Win1 and then press the right mouse button. From the menu, select Actions. This switches you to a window known as the Window Browser. Notice that F6 was shown as a short-cut for the same operation. The design-window is automatically hidden; it can be re-selected later using the Window menu.

2.	Right-click Button1 in the Window Browser tree, highlight the New Event item, and from its sub-menu select Push.

Enter action logic

In the editor part of the Window Browser, enter logic underneath the new header which the previous step created there. This may be pure M code (which calls system run-time utilities or application routines), system-supplied or user-defined macros, or a mixture of the two.

When you click the Push Me! button on window Win1, the system is to display an error window by calling an entry point in run-time utility %msgbox and then close the window by using the system macro %%Cancel.

1.	Insert the following lines under the header for the Button1 Push event. Begin each line with a TAB:

DO E^%msgbox("Please don't push this button again!")

%%Cancel

2.	To illustrate how context-sensitive help for syntax elements works, place the insertion point on %%Cancel and then press F1. You also can try this with the insertion point positioned after the DO command on the first line.


Compiling and testing

Before a runnable version of a window or module can be built, it must be converted into code. This process creates M routines and globals. You then can test a compiled version of a window within the Developer Shell.

Compile a window

To compile window Win1 into executable M routines:

1.	Ensure that focus is on the Window Browser in which you entered the Action Logic, or on its matching design-window. The design-window was automatically hidden when you switched to the Window Browser. To re-display it, press F6 or use the Window menu.

2.	From the File menu, select Compile. Workstation displays a progress window that reports the compilation steps. When the message "Compilation complete" is displayed in this window, click OK.

Test a window

To test a compiled window:

1.	From the File menu, select Test.

2.	In the Type box on the Test dialog box, select Window.

3.	From the list that is displayed below the Name box, double-click Win1.

4.	In the Testing Window dialog box, click Start.

5.	Test the window.

6.	After you complete the testing, click Close in the Testing Window dialog box.

It is often more convenient to use the QuickTest button, the left-pointing arrow fourth from the left on the toolbar. This saves the window if it has been changed, compiles it if necessary and then begins a test.


Defining application startup

An application must start somewhere. Various procedures can be performed at startup. At a minimum, an interactive application must display a main window.

When the application is started, the first window displayed by the system is defined by the action logic on the Enter event of the application module.

To define Win1 as the starting window of application App1:

1.	Click on window App1 to ensure that the application module has focus.

2.	From the Element menu, select Actions.

3.	From the Event list in the Actions dialog box, select Enter.

4.	In the Action box enter the following line, starting it with a TAB:

%%Do(Win1)

5.	Click Save to approve your changes. To close the Actions window, click Close.

6.	From the File menu, select Save to save the changes made to App1.


Building an executable

To build an executable, first compile the application module and then construct an executable file.

Compile the application

To compile the application module:

1.	Click on window App1 to ensure that the application module has focus. The application compiles only if no components are selected or if the <Components> line is one of the selected list items. Before you begin the compilation, verify that this is the case.

2.	From the File menu, select Compile. After the compilation starts, Workstation displays a progress window that reports the compilation steps. When Workstation displays the message "Compilation complete" in this window, click OK.

Build the executable

This step transfers the components of an application to a new read-only database that also contains system run-time utilities. Workstation provides numerous options which are not illustrated by this sample build.

To convert application App1 into an executable:

1.	From the File menu, select Make EXE.

2.	On the Make EXE dialog box, click Make EXE.

3.	The system displays an output window which tracks the progress of the build. When the Close button becomes enabled, click it.

4.	Run the executable by double-clicking file APP1.EXE in the Program subdirectory where you installed MSM-Workstation.


Support

Support for registered copies of this product is available through the normal channels, provided that your license is covered by a maintenance contract. Every support request must include the serial number of your Workstation. This can be obtained from the Help-About dialog.

United States:

Phone:	(800) 433-7581
E-Mail:	support@micronetics.com
Fax:	301-840-8943, marked "MSM-Workstation"

United Kingdom:

Phone:	+44 118 989 0500
E-Mail:	support@uk.micronetics.com
Fax:	+44 118 989 1483, marked "FAO Support"

For the latest information from Micronetics, please visit our Web site at www.micronetics.com.


The MSM System

Micronetics Standard M(UMPS) (MSM) is an extremely versatile programming system that includes a high-level programming language, a comprehensive database management facility, and a flexible operating system. The high-level programming language used in the system is a fast and powerful implementation of the ANSI standard M(UMPS) programming language.

MUMPS (Massachusetts General Hospital Utility Multi-Programming System) was developed in the late 1960s to meet the demanding requirements associated with the storage, retrieval, and manipulation of large volumes of medical information. Now known as the M programming language, it has expanded well beyond the medical community and is used in general business, financial management, process control, order entry, and many other areas of information processing.  The flexibility and unique combination of features in M makes it an ideal language for the development of interactive applications to meet diverse information processing demands.

See Also:

Functional Description


Functional Description

The following sections provide a brief overview of each MSM component. This overview provides a description of the tasks performed by each component and  information on how the components are related.

Language compiler

The M language has been implemented in MSM through the use of a language compiler and a pseudo-code (p-code) interpreter. The language compiler is a highly sophisticated system program that scans each line of M code, divides it into its basic components, analyzes each component to ensure that it is syntactically correct, and generates pseudo machine code that can be processed by the p-code interpreter.

This compilation process is repeated for each line of M code in a program. The interpretation of the p-code during program execution is significantly faster than with a pure interpreter.  However, since compilation and interpretation can be combined into a single operation, MSM still appears to the user as an interpreter.  Code can be entered and immediately executed without a separate compilation step.

Because MSM acts like an interpretive language, it provides the user with several distinct advantages, including the ability to easily analyze and correct errors that occur during program execution. When an error occurs, a message is displayed on-screen, and execution is terminated (unless the error is explicitly trapped by the program).

The programmer then can use all of the available features and capabilities of the M language to debug the problem.  After  the cause of the error is determined, the necessary modifications can be made and execution of the program restarted.  This technique allows new applications to be developed more rapidly and modifications to existing applications to be integrated more easily.

Database management system

The MSM system allows data to be referenced symbolically through specification of user-defined labels.  These symbolic references, or variables as they are known in MSM, may represent numeric values or alphanumeric strings of information.  MSM permits two types of variable references: local variables and global variables. Local variables exist for the duration of a terminal session and are stored in the local memory of the job that creates them. These temporary variables are accessible only during the life of a process.

By contrast, global variables are created and maintained on external disk storage and continue to exist after a process has ended.  The method for symbolically referencing globals is the same as for referencing local variables with the exception that global names are preceded with a circumflex (^). Globals form the basis for a common database that can be shared by multiple users.  Implementation of globals, as well as local variables, is achieved through the use of subscripted sparse arrays.

An array is a collection of data stored under a common name. Subscripts are numeric or string values, separated by commas, enclosed in parentheses, and appended to the local or global name to qualify which item in the array is being referenced.  A sparse array is one which only contains space for those elements actually defined.  The entire local and global variable structure in MSM is completely managed by the system.  Space is automatically added to, or removed from, these structures if necessary, and the user need not be concerned with pre-allocation of space, specifying the maximum size of a local or global, or reclaiming space when data is deleted.

Globals reside in storage structures called volume groups. Each volume group consists of one or more volumes. A volume generally corresponds to a disk storage file. Volume group storage may be further subdivided into UCIs (user class identifiers). These UCIs may also be referred to using logical names called monikers.

Operating system monitor

The primary purpose of the operating system monitor is to provide an interface between the host operating system and MSM. The main functions performed by the monitor include translating MSM requests to the appropriate host system calls, interfacing to the disk file structure maintained by the host system, responding to the dynamic memory requirements of MSM, and interfacing to the I/O supervisor to service requests for disk and peripheral information.

I/O supervisor

The I/O supervisor is responsible for the input, error detection, error correction, and output operations of each peripheral device attached to the system.  Peripheral devices are divided into three primary categories: terminal devices, disk devices, and tape devices.  For each of these device types, the I/O supervisor coordinates all data transfers and synchronizes them with job execution.

For disk devices, the I/O supervisor maintains a large number of buffers to hold incoming and outgoing information.  This collection of buffers, known as the buffer pool, often allows logical requests for information to be satisfied without the need to perform a physical I/O operation

Utility program library

MSM-Workstation provides a comprehensive library of utility service routines to assist the user in developing programs and maintaining the system.

Language elements

A comprehensive reference manual provides complete information on MSM syntax, commands, functions, routines, globals, error trapping, user-defined commands, and other subjects.

System limits and settings

Refer to System limits and settings in the Technical Reference documentation for information on this topic.


MSM-Workstation Architecture

Application Components

Application Startup

Client/Server Operation

Development Environment

Memory Use


Application Components

MSM-Workstation is an integrated development environment for building applications.  It is itself built with MSM-Workstation, and is used to construct applications consisting of the following elements.

MSM system

The MSM system is a part of every MSM-Workstation application.  File MSMWS002.DLL contains the MSM interpreter, as well as the system service run-time package, which is a set of M routines and globals that are mounted at system startup as volume 0 of volume group 0.

Read-only database

An MSM-Workstation application that is constructed by the Make EXE process creates an EXE file containing application resources, including a read-only M database.  For example, MSM-Workstation is in MSMWS.EXE.

When an application is started, the read-only database is mounted as volume 1 of the system database (volume group 0).

The system database of an application is unlike all other databases created by MSM-Workstation.  Its unique features include the following:

•	It has a configuration area for system settings.

•	It is a two-volume, two-UCI volume group.  Volume 0 contains run-time system service routines and globals in the MGR UCI. Volume 1 contains application routines and globals in a UCI that is given the moniker %App.

•	Other resources such as icons and bitmaps may be bound into the EXE.

Required run-time components

Certain run-time components are provided when MSM-Workstation is installed, and must also be included with Workstation-constructed applications.  The Redist subdirectory contains required redistributable components, including MSMWS002.DLL (the MSM interpreter and run-time routines), and other .DLL and .OCX files.  The following table summarizes the redistributable components and describes when they are required:

Component	When required
MSMWS002.DLL	Always.
MSMTCP2.DLL	If network databases or TCP/IP are used.
Additional components

An application may require additional application-specific read-only or read-write databases.

An application may require customized Xcall files.

Components such as resources, bitmaps, icon files, and help files may be required.

For example, a file that has the same name as the application EXE and extension .BMP, if found, is displayed at startup as a splash screen.


Application Startup

At application startup, the read-only application database (volume 1 of volume group 0) contains environmental information for the application, except for the actual names of additional databases, which may be stored in the registry.

Application installation may specify actual database files (absolute paths to local files, or IP address, port, and so on, to remote databases) associated with database monikers; or the system may prompt for this information at startup.

All other environment information which is integral to the application (and need not be edited or viewed) is in the read-only database, including database monikers, names of XCALL packages needed, and routine and global path definitions.

The startup procedure uses the registry (or an .INI file) to locate databases that are associated with monikers.  These databases are mounted.  If the registry does not have information to locate the database, the user is prompted to browse for the local database file or to specify the IP address and port for a remote database.  The information provided then is stored in the registry.

After databases are mounted, startup installs paths for routine search and global translation, XCALLs are loaded, and the application's main entry point is called.


Client/Server Operation

MSM-Workstation may build stand-alone applications or client applications for operation with MSM-Server systems, Version 4.3 or later. Clients may be configured to require connection to a server or to optionally operate in standalone mode.

Server connection may be automatic upon startup, using the registry to access the server, or may allow selection of the server at startup. Different servers may be accessed at run-time, but only a single server may be accessed at a time.

Remote Mount connects MSM-Workstation to an MSM-Server system. The server system must be running the Workstation Server service and must export at least one volume group. Remote Mount specifies one UCI on that volume group as a "network database" which the Workstation can use in the same way as any local UCI.

Subject to normal global protection rules, globals in any other UCI on the MSM-Server also may be accessed using extended references or via translation tables. This can include UCIs on other M systems connected to the MSM-Server which hosts the Workstation's connection.  For example, DDP connections from the Server to ISM or DSM systems can be used to provide data to Workstation applications.

MSM-Workstation cannot operate in the original form of Remote Volume Group (RVG) networking introduced with MSM Version 4.0, nor in DDP networking. It participates only in this new client/server form of RVG networking, in conjunction with the server component introduced with MSM-Server Version 4.3.


Development Environment

MSM-Workstation provides an integrated development environment with facilities for manipulating databases, specifying applications, constructing graphical user interfaces (GUI), programming, testing, debugging, and more.  This development environment is referred to as the Workstation or "shell."

Workstation can be started with or without a database  At least one read/write database must be mounted to perform most activities.  Local and network databases are easily mounted and unmounted.

One database can contain multiple applications, or applications can be distributed to multiple development databases, at the developer's discretion.

An application implicitly runs within an environment.  An environment includes a set of databases, global translation specifications, routine search path specifications, and XCALLs.

A current environment is always in place when working in the shell. Testing an application may require provision of an appropriate environment.  Environmental management by the shell is not yet available in Workstation. If an application needs an environment different from the one used by the shell, this must be established in action logic on the application's Enter event using calls to system service routines. Application testing must then be performed by running the EXE.

The system registry is used for moniker-to-database mapping, and for management of other system settings.  Application-development capabilities using the registry include such things as window size and position recall.  System utilities %mmprof, %mprof, and %mreg provide entry points for direct manipulation of the registry.


Memory Use

Buffer pool

The buffer pool is used as a cache for all disk I/O operations.  When MSM requires a disk block, it searches the buffer pool  to determine if the block is currently in memory.  If it is, the request can be immediately satisfied.  If the requested block is not in the buffer pool, then it must be read from disk.

The MSM buffer manager retains blocks in the cache based upon the most recently used algorithm. This ensures that the routines and global blocks which are most commonly needed by the application nearly always reside in memory.

By default, MSM-Workstation applications receive a buffer pool of 1024 1-K buffers, or 1 MB of memory.  This can be changed on the Make EXE Options dialog, or overridden at run-time by using system startup switches on the command line.

Partition

An MSM process (or job) owns an area of memory called the Partition.  The Partition is used to store local variables, routines which are being edited, and control blocks associated with the job. A routine takes up memory in the partition only when the routine has been explicitly loaded into the partition via the ZLOAD command.  Since routines actually reside in the buffer pool while they are being executed, they require no partition memory while in this state.

Internally, the maximum partition size allowed by MSM-Workstation is 16 MB. The default size for applications is 256K. This can be changed on the Make EXE Options dialog, or overridden at run-time by using system startup switches on the command line.

Note that partition memory is not pre-allocated. The partition size merely sets the threshold at which MSM will refuse further requests by the partition for more memory and raise an M error. Assigning a large partition size will not consume a corresponding amount of Windows memory unless and until the M job needs it.

Partition stacks

Associated with the partition are two pre-allocated areas of memory for performing certain system functions.  The first area is called the execution stack, or simply the stack.  This area of memory keeps track of program nesting, which occurs when the DO and XECUTE commands are executed.  The second area is called the string accumulator stack, or simply the stap.  It is used to store intermediate results during the evaluation of complex expressions such as nested function calls, concatenation, indirection, and so on.  It also is used by the ZSAVE command to store the p-code generated during compilation.

By default for new applications, both stacks are 64K in size. The maximum permitted value is 255K. They can be changed on the Make EXE Options dialog, or overridden at run-time by using system startup switches on the command line.

In-memory database

Transient databases that only exist for the life of a process can be constructed in memory.  These are referred to as in-memory databases. Every EXE normally receives one automatically during startup. It is assigned the moniker %Temp, is writeable, and is private to each instance of the EXE process. It is commonly used by an application to store scratch global data. The default size is 256K, but this may be altered on the Make EXE Options dialog. Because this memory is pre-allocated from Windows when the EXE starts up, a large in-memory database may adversely affect the performance of your system, especially when multiple instances of the EXE run concurrently.


MSM-Workstation Environment - Databases
Databases

Volume Groups

UCIs

MSM-Workstation and Databases

Network Databases

Using Monikers

Memory Databases

Search Paths

Global Translation

Before-Image Journaling


Volume Groups

Within MSM, a volume group is the structure that is used to organize information on disk. In MSM-Workstation, each volume group (except volume group 0) contains a single-volume, single-UCI, totally independent database, which includes routines and globals. Volume group 0 is a special case that has a UCI in each of two volumes, the first containing system run-time utilities (%m* routines and globals), and the second containing application run-time resources (routines and globals). Volume group 0 is always read-only. Other volume groups may be mounted read-write or read-only.

When the MSM system is started, at least one volume group must be present.  The volume group mounted at system startup is referred to as the System volume group.  The first UCI of the System volume group is referred to as the Manager's UCI,  named MGR.  At any time after the system is started, additional volume groups can be mounted or dismounted.  However, the original System volume group cannot be dismounted while the system is running.

A volume group can be up to 16 GB in size, limited by constraints within the host operating system or by physical disk size. Up to 30 volume groups may be mounted at one time.

The VG name for a Workstation-created database may begin with the underscore character ( _ ), indicating a mutable volume group name (the name will change at mount time if it conflicts with an already-mounted volume group name).  Such volume groups are typically accessed by moniker.


UCIs

The User Class Identifier (UCI) designates a unique area within a volume group (VG) of the MSM system.  MSM legacy systems and current server products allow up to 30 separate UCIs within each volume group.

MSM-Workstation automatically provides one UCI per Workstation-created database.

Each UCI has its own unique routine directory and global directory.  The UCI code consists of three uppercase alphabetic or underscore ( _ ) characters.  Optionally, the UCI code can include a volume group specification.  The volume group is specified as three uppercase alphabetic or underscore characters and is separated from the UCI by a comma (UCI,VG). Generally, the use of 'UCI' implies either a simple UCI name or the full UCI,VG combination.

Automatic names

Because a database created with MSM-Workstation has a single UCI, the name of the UCI is automatically set to be the same as the VG name. A Workstation database, having the same name for UCI and VG, will always have a repeating name.  For example, a VG named "TST" automatically has a UCI referred to as "TST,TST."

Since a database created with MSM-Workstation may be referenced using a moniker, the name of the UCI and VG are much less important than with earlier products, and are infrequently used.  In fact, the name of the VG by default is mutable (not determined until a database is mounted) although it may optionally be fixed at creation time.  At mount time, mutable VG names are automatically assigned as "__A", then "__B", then "__C", and so on.

Monikers may replace UCI,VG references in all contexts.

Changing UCIs

Within the MSM-Workstation shell, the current database may be changed by clicking on the appropriate node of the System Browser tree, or by using the System/Current Database menu command, or from certain dialog boxes on the File menu.

In the Command window, use utility %mlogon to log on to a mounted UCI,VG, including network databases.

Use service routine CHNGUCI^%msu to change UCIs. Take special care when using CHNGUCI^%msu or CHKUCIVG^%msu in relation to UCIs on the MSM-Server to which you are connected. These functions will switch the server connection to the new UCI if security restrictions allow, and the previous UCI associated with the connection will no longer be accessible as if it were a local UCI.


MSM-Workstation and Databases

A database created by MSM-Workstation is a single User Class Identifier (UCI), single-volume volume group (VG) with a system-generated before-image journal (BIJ) file. The standard extension for the database file is .M.

MSM-Workstation can mount multiple databases, one of which can be a network database.  Local databases can be single-UCI databases created with the Workstation, or multi-UCI databases created with MSM-Server products that run on Microsoft platforms. Note, however, that after a bullet-proofed  MSM-Server database has once been mounted by MSM-Workstation, a subsequent mount operation by MSM-Server will report that the BIJ file is unreadable. This occurs because MSM-Workstation uses a smaller BIJ-file block-size for performance reasons. The MSM-Server BIJ utilities must be used to reformat the BIJ file before it can be mounted correctly by the server.

All network databases are treated as a single-UCI database. That is, a specific UCI of the remote database must be specified at mount time and may have a moniker bound to it.  However, it is still possible to access other UCIs using extended references and/or global translation.

When a multi-UCI local database is mounted, all UCIs become available. If a moniker is specified during the mount, it is bound to a nominated UCI which defaults to the first UCI on the database. The same local database may be mounted multiple times if it is desired to bind several monikers to different UCIs, or even to identify the same UCI by several monikers.

Read-only vs. read/write databases

Volume group 0 of any MSM-Workstation application is always a read-only database.  This is true of the Workstation shell, and of any executable built with it.

Any database may be mounted in read-only mode.  In this case, the database is not BIJed.  If a database is only mounted read-only, it can be mounted simultaneously by more than one Workstation.

Automatic BIJing occurs on all local databases mounted in read/write mode, and is not configurable.

BIJ default settings

A Workstation-created database, when mounted for read/write access, is always before-image journaled.  Operation of before-image journaling, which protects the database against degradation caused by improper shutdown, is transparent.  BIJ rollback is performed automatically and silently, as necessary, during mount.

The BIJ file size is automatically calculated and adjusted during database expansion. The maximum generation time is fixed (at four seconds).

For additional information, refer to "Conversion Issues" in this manual.

DKRES default settings

The DKRES limit specifies the lowest level that a database's free-block count may fall to before M programs consuming database blocks are given a <DKRES> error. It is established on a database at creation time and is the smaller of 10% of the database size, or 200 blocks.


Network Databases

Network database is a term now used in preference to "Remote Volume Group" (RVG).

Mounting a network database is supported by the Workstation shell and by service routines.  MSM-Workstation is allowed access to a specified UCI on a volume group that is exported by the MSM-Server system, Version 4.3 or later, on which the Workstation Networking service is configured and running.

MSM-Workstation participates in a new client/server form of RVG networking that  was introduced in conjunction with MSM-Server Version 4.3. This operates over TCP/IP and is available on all MSM-Server platforms where this protocol is supported. Alternatively, on the Windows-based MSM-Server versions, it may operate over SPX.

MSM-Workstation cannot operate in the original peer-to-peer form of RVG networking, nor can it participate directly in DDP networking.  However, DDP is possible indirectly through an MSM server.

MSM-Workstation databases cannot be exported; that is, the Workstation cannot function as a server.  However, a Workstation database can be accessed using Automation when mounted by an EXE built as an Automation Server.

Setting up the Workstation service on MSM-Server

The process for setting up the Workstation service on an MSM-Server is described in detail in the MSM-Server documentation.  Use the following steps:

1.	Start SYSGEN.

2.	Select Configuration.

3.	Select Network Configuration.

4.	Select Workstation Server Configuration and then specify an IP port and a password.

5.	From the Autostarts and Automounts option, select Workstation Server Autostart.

The server volume group must be exportable. This can be configured using the DBMAINT utility option, Edit Volume Group Characteristics.

Network databases and $JOB

The M Standard requires $JOB to remain unchanged during the life of a process.  Because Workstation is a single process, $JOB normally has a value of 1. However, when the client of a client-server Workstation application is required to mount a network database at startup, $JOB has the value of the associated agent job on the server. $JOB remains unchanged for the life of the process, even if that network database is unmounted and another is mounted.

Workstation's $JOB is only guaranteed to be unique among all currently active jobs on the server if the server connection is established at startup (as a result of the Connect To Server check box being set on the Startup tab of Make EXE Options). Switching the server connection to a different UCI using CHNGUCI^%msu maintains the same server-side agent job, so Workstation's $JOB cannot be reallocated by the server.

When a server database is mounted in user code using RMOUNT^%msv, the $JOB of the server-side agent process is returned by the service routines in the output parameter OUTARGS("SERVER_JOB").  This can be useful, for example, so that the client user can tell the server administrator which is their agent job. However, Workstation's $JOB remains unaltered at 1, and is not suitable to use as a unique key on a server global.


Using Monikers

A new capability of the workstation is to use logical names or monikers to refer to databases which formerly were designated using the UCI and volume group reference (as in |UCI,VG|).  A moniker is a synonym for the UCI,VG combination.  The VG may be a local, network, or memory database.

A moniker consists of a string of characters which obey the same rules as M for local variable names, up to a maximum length of 32 characters.  The initial character "%" is reserved for system monikers and may not be used. Use of three-character uppercase monikers is not recommended as it can lead to ambiguity.

A moniker may refer to one and only one UCI,VG at any one time.  However, multiple monikers may refer to the same UCI,VG.

A moniker may be specified when a database is mounted.  When the mount occurs through Workstation dialogs, the moniker may optionally be stored in the system registry at this time, allowing subsequent database mounts to be made simply by specifying the moniker to the mount procedure.

A moniker stored in the registry in this way may be specified on the command line that invokes MSMWS.EXE, resulting in the associated database being mounted automatically during startup.

Monikers may be used when in explicit extended global references and when defining global translation tables and routine search paths.

Binding

The process of associating a moniker with a UCI,VG is known as binding.  Binding occurs as a result of specifying a moniker when mounting a database.  Once bound, the moniker-UCI,VG association is recorded in an internal table.

When a mount is performed, whether using the Workstation shell or a service routine, three parameters have an influence on the binding process may be specified: host file name, moniker, and UCI.

If the host file name is specified and the moniker is not, the database is mounted but no binding of monikers can occur.

If the moniker is specified and the host file name is not, an attempt to determine the host file name (and any associated UCI parameters) is made by examining the registry.  If an entry for a particular moniker is not found in the registry, the mount cannot proceed.  More commonly, an entry in the registry for a moniker points to a host file name along with an (optional) UCI parameter.

If both a host file name (with optional UCI) and a moniker are specified at mount, entries for that moniker in the registry are ignored and the user-specified parameters are used in preference.

After the host file name is determined, the database contained within the host file is mounted and the moniker is bound to a UCI,VG therein.  If the database has a single UCI (as is always the case for a Workstation-created database), the moniker binds with the single UCI and volume group.  If the database has multiple UCIs, the binding takes place according to the following rules:

•	If the UCI parameter has not been specified, the moniker binds to the first UCI defined in the volume group.

•	If the UCI parameter has been specified, and the UCI exists in the mounted volume group, then the moniker binds to the specified UCI.

•	If the UCI does not exist, then the bind will fail.  However, the volume will remain physically mounted.

Additional considerations

A mount may involve a bind to a volume group that is already mounted.  If a bind is requested (via mount) between a moniker and a UCI,VG that is already mounted, the bind takes place and is registered in the table of bindings.  However, a physical mount of a database is unnecessary.  If a bind to a UCI,VG is requested and the moniker already exists for that association in the table of bindings, the request will be honored, but again, no physical mount of the database will take place.

A request for the binding of a moniker that already exists in the table of bindings to a different UCI,VG association is considered an error condition and will be indicated in the normal manner. To achieve the desired rebinding, the original bind must be released before an attempt is made to rebind.

Unmounting (releasing a bind)

A moniker binding may be released from the table of bindings and made available for reuse by unmounting the moniker.  This is achieved by specifying the moniker as the argument to the UNMOUNTM^%msv service routine entry point. This is also sufficient to unmount a database when no other monikers are bound to it.  Otherwise, the database remains mounted in order to honor the other bindings. A separate database-unmount entry point exists (UNMOUNT^%msv) which releases all binds to a database and then unmounts it.


Memory Databases

MSM-Workstation is able to mount a special type of database known as an "in-memory database." Like a regular local or network database, an in-memory database can store globals. It is created empty when it is mounted, and its contents are lost when it is unmounted.

Subject to normal constraints on the maximum number and size of mounted databases, any number of in-memory databases can be created. Each consists of a single UCI with the same name as the volume group.  Because space for an in-memory database is obtained from Windows, available memory may be an additional constraint. An in-memory database cannot be expanded.

To create an in-memory database, use the service routine entry points MMOUNT^%msv or MOUNT^%msv.


Search Paths

MSM-Workstation introduces a new feature that allows routine search paths to be established. This facility is similar to the PATH facilities provided by operating systems such as Microsoft DOS, Windows, and UNIX.

The path is established by using the PATH^%msrpath utility to specify the location from which routines can be loaded and the location to which routines can be saved.  The current settings can be viewed using LIST^%msrpath.

Separate specifications are made for routines beginning with "%", and all other routines.  This allows emulation of the "%library" routines of legacy systems using RESET^%msrpath. The default case is that a leading "%" character on a routine name is equivalent to any other character and carries no special meaning. That is, there is no longer a concept of a "library UCI" (except when dealing with network databases).

The "%m" prefix is reserved for Micronetics-supplied run-time service routines, and always mapped to UCI 1 of VG 0, no matter what the current UCI is and no matter what search paths are defined.

An executable constructed with MSM-Workstation (including the Workstation itself) always has entries automatically added to the front of the search path.  This gives the first opportunity of providing  routines to the read-only database (UCI 2,0) that contains the application itself.

Specifying a search path

A Workstation process runs in a routine environment which consists of the following:

•	Search path for % routines

•	Search path for non-% routines

•	ZSAVE rule for % routines

•	ZSAVE rule for non-% routines

In the following description, the term UCI refers to a UCI identifier, which may be a UCI,VG pair or a moniker.

A search path is basically a list of UCI pairs. The first UCI of the pair is the location in which to search for the routine.  The second UCI of the pair is the location in which to save the routine (subject to the ZSAVE rules).  The order of the list specifies the search order.

The search for a routine begins with the first UCI pair in the search path and continues until the routine is found or the end of the list is reached.  The search is the same for either ZLOAD or execution of a routine.  When a routine is found, the location in the list at which the routine is found becomes associated with that instance of the routine.

Special indicators may be used in a search path to perform the following actions:

•	Search the current UCI.

•	Search the library UCI of the current UCI.

•	Disallow ZSAVE.

•	Disallow ZSAVE (except into the UCI that was the source when ZLOADed).

ZSAVE rule

The ZSAVE rule specifies one of the following choices:

•	Traditional save rule.  Restricts a % routine to a library UCI.

•	Save in the Current UCI of the process issuing the ZSAVE command.

•	Save in an Explicit UCI.

•	Save in the Load UCI (in the save UCI named in the search path rule that located the routine being saved).

•	Save in the Execute UCI (in the save UCI named in the search path rule that located the routine which is issuing the ZSAVE command).

Legacy environment

The RESET^%msrpath service provides a shortcut for duplicating the legacy MSM environment, which acts as follows:

•	The non-% search path is one element, where the search UCI and the save UCI are both the "current UCI" special indicator.

•	The % search path is one element, where the search UCI and the save UCI are both the "library UCI of current UCI" special indicator. The "save here only" flag is set.

•	The ZSAVE rule for both % and non-% routines is "save into the current UCI."

This environment provides the following characteristics:

•	Only the current UCI is searched for non-% routines.

•	Only the library UCI is searched for % routines.

•	Non-% routines are saved in the current UCI.

•	% routines can be saved only if the current UCI is the library UCI.

Changing the current UCI of the process automatically changes the search and save locations.

Search paths and network databases

Assuming that no routine search paths are involved, the following holds true while a network database serves as the current UCI:

•	% routines (and globals) will refer to the UCI specified as the library for current UCI, if that library is not 0.  This means that an "invisible" UCI is used.  Changes cannot be made to this UCI, nor does the UCI appear in a UCI listing.

•	If the Server UCI's library is 0, the Workstation UCI 2 will be used.

•	%m* routines (and globals) come from Workstation UCI 1 as usual.

If routine search paths are defined, a network database may participate in the search path like any other database.  However, if a %-routine is requested from a network database, retrieval of the routine is under the control of the server, and therefore obeys the rules for dealing with library routines as described above.

Note   If an application is set up to run in a network database, it must have a non-zero library UCI if  % routines are to be run from the server.  Otherwise, the % routines must be maintained on the client system (Workstation-generated EXE) that is to mount and run the application.  This is identical to the functioning of peer-to-peer remote volume groups on current MSM systems.


Global Translation

Global references made within one database can be translated to another database using the ENTRAN^%msv utility.  The global may be specified as an explicit name, a name with a wildcard, or a name with subscripts.  The source and destination databases may be specified by UCI,VG pair or by moniker.

An executable constructed with MSM-Workstation (including the Workstation itself) always has entries automatically added to the translation table, so that globals required for the application itself will be found in the read-only database (UCI 2,0).

Global translations are remapped with every database mount or unmount, so the binding of a moniker may change and automatically affect where a moniker-translated global is found.

When a network database is involved, the Server's global translation makes globals from other server UCIs available to the Workstation.  Although a global directory list shows only the Workstation translation table, you also have access to all the globals available in the server's translation table.  This is not how translation works in any other situation.

Extended references allow Workstation access to any UCI available to the server without using translation.


Before-Image Journaling

MSM-Workstation provides automatic and transparent before-image journaling to ensure the structural integrity of a database in the event of a system failure.

This feature records images of database blocks as they existed at the instant prior to changes being made to the block (for example: SET, KILL, block split, and so on).  These images, which are recorded in a separate file, are used by the system to roll the database back to a point in time where structural integrity is known to exist. This rollback of the database is automatically performed by MSM the first time the system is started after a system failure.

Structural integrity allows MSM to service requests for global fetches, sets and kills, and routine loads and saves. It is not the same as application integrity, which would guarantee, for example, that all index global entries have a corresponding data global entry. Maintenance of application integrity on the database is the responsibility of the application.

BIJ file

 In MSM-Workstation, each volume group is considered a separate database.  When a database is created, it automatically is protected with before-image journaling.

The external file used to store the before-images is referred to as the BIJ file. The BIJ file is created using the same file path and name, but with a .MBJ extension in place of the .M.  The size of the file is computed automatically.

A BIJed .M file and its .MBJ file may be moved to a different path and mounted; the system looks for the .MBJ file in the same location as the .M file.  If no .MBJ file is found, a new one is created transparently.  Consequently, if a database was cleanly unmounted, it is not necessary for the .MBJ file to accompany the .M file when it is transferred to another location.

Do not delete or move the BIJ file while the workstation has the corresponding database mounted, or if it is possible that the database was not cleanly unmounted after last use.

BIJ generations

Within the BIJ file, before-images are grouped together into generations.  A new generation is started after a system-defined time interval (four seconds).  When a new generation is started, it becomes the current generation.  Any previous generations are closed when all of the database updates associated with the generation have been physically applied to the database.  At the start of each generation, the system is known to have database integrity.

When a system failure occurs, the system rolls-back the database to the start of the current generation.  Any previous generations that are still open also are rolled-back.

Before-image journaling guarantees that a database has logical consistency.

After-image journaling

MSM-Workstation does not support after-image journaling (AIJ), which is considered server technology.  The absence of AIJ on the workstation means that there is no AIJ roll-forward after a BIJ recovery roll-back. The database can lose a maximum of four seconds worth of updates, although the BIJ recovery guarantees block-level integrity.


MSM-Workstation Environment - Basic Operation
Basic Operation

The following operations apply equally to a developer shell user or an end-user application.

See Also:

Startup

Backup

Utilities

MWAPI


Startup

Various startup switches may be used to control the behavior at startup.

The following actions are performed when MSM-Workstation is started:

•	Performs BIJ rollback if required.

•	Ensures that an Automation server is not started as an application, nor an application as an Automation server.

•	Extracts command-line switches and other parameters.

•	If the Display License Information option is set, displays the Micronetics License Information window.

•	Displays a splash screen, if provided (bitmap file with the same name as the EXE apart from the .BMP extension).

•	Checks expiration date, if any.

•	Mounts databases. This includes checking for a required server connection, and prompting for server connection settings if necessary.  Server Connection settings may be retrieved from and saved in the registry.

•	If a specified server cannot be connected, redisplays the Select Server window  to allow changes to settings, or to terminate the application, or to transfer control to the application if the connection is optional and the user elects to "work locally."

•	Installs global translations, routine search paths, and XCALLs.

•	Performs the Enter logic for the application.


Backup

Backup is a function of the host operating system, not of MSM-Workstation. It is performed by backing up databases (usually stored as .M files) using any means desired.  Note that a .M file should not be backed up while it is mounted read/write. Most backup software will detect when the file is open for write and will skip it. Even if such a file can be backed up, the logical integrity of the restored file is unknown.

When a database is used in the development environment to store windows containing ActiveX controls, there will also be an ancillary storage file present. This generally has the same name as the database apart from a .MXS extension. It should be backed up and restored in synchronization with the database file.


Utilities

Dialogs

Various standard dialogs of the Windows environment, such as for message box display, and file and printer selection, may be used from MSM-Workstation applications.  Workstation-specific standard dialogs are also provided.

Service routines

MSM-Workstation provides a set of system service routines that duplicate many of the traditional MSM utilities and require no user interaction, thereby enabling their use with GUI interfaces.

External calls

A number of XCall entry points are provided to allow access to lower-level Windows capabilities, such as sounds, the help engine, the Windows API, and others.

Legacy utilities

MSM-Workstation includes some legacy utilities for performing simple conversions (for example: date and time) and other character-based functions for which GUI equivalents are not yet available.


MWAPI

The acronym MWAPI stands for M Windowing Application Programming Interface. This ANSI standard (X11.5) specifies an interface between the M environment and a windowing environment. In the case of MSM-Workstation, that windowing environment is Microsoft Windows.

MWAPI allows an M programmer to create, modify, and destroy GUI components such as windows and controls. The M program can also respond to user interactions with these components, by means of events.

MSM-Workstation implements MWAPI Version 1.1 with extensions, but the typical user of Workstation develops a GUI application without dealing directly with the underlying MWAPI. However, the more advanced user may benefit from an understanding of MWAPI, which may be used occasionally to obtain greater control.


Integrated Windows Features

Printing

Common Dialogs

Custom dialogs

Help

Automation

Windows Registry


Printing

Normally when an M program prints anything other than straight text to a printer, the application needs to know all the escape sequences in order to control the printer. Escape sequences that control putting the printer into landscape or portrait mode need to be known to the application. This has caused problems for application developers, since they have to write their own specific printer-handling routines, one for each printer that the application needs to be able to print to.

Because MSM-Workstation is closely bound to Windows itself, we can use all the functionality of the Windows Print Manager to perform our printing for us. The Windows Print Manager is aware of any Windows printers on the system (including Networked Printers as well as local ones), and what type of printer each is.  It is responsible for sending the correct codes to the printer to perform a task.  We can now assume that if Windows can use a printer, so can MSM-Workstation.

Opening Windows printers

Within MSM-Workstation, the M devices numbered 3 to 10 are reserved for Windows printers. A built-in mnemonic namespace provides mnemonics for controlling many aspects of output.  This means that the application no longer needs to be aware of what type of printer it is using.  It uses mnemonics instead, and Windows is responsible for achieving the desired result based on the printer's capabilities.  Refer to Windows Printer Devices in the Technical Reference documentation for information on the OPEN, USE, and CLOSE parameters and for a list of available mnemonics.

Example

As an example, we can open a printer device, allowing the user to select which printer is to be used for output, and then manipulate the settings of the printer via mnemonics.

In this case, we do not specify any printer options in the OPEN command, since we will set most of them via the printer mnemonics.

First open device 3 and use it.  Then use the mnemonic /CHOOSEPRINTER to display the Windows dialog box that allows the user to select a printer:

OPEN 3

USE 3

WRITE /CHOOSEPRINTER

SET RESULT=$DEVICE

After the user selects a printer, the special variable $DEVICE indicates the result.  If the user canceled the dialog or an error resulted, then $DEVICE contains this:

RESULT="1,0,CANCEL"

Otherwise, $DEVICE remains empty.

Now use a printer mnemonic to name the document within Print Manager:

USE 3

WRITE /SETDOCUMENT("Printer Output Example")

and then set the orientation of the printer to landscape. The mnemonic for printer orientation uses 1 for portrait or 2 for landscape.

USE 3

WRITE /SETORIENTATION(2)

We can also control the font type and size:

USE 3

WRITE /SETFONT(20)

WRITE "Test Output From MSM-Workstation for Windows",!

CLOSE 3


Common Dialogs

Windows Common Dialogs are provided to facilitate frequently-needed interactions with users in a standardized way.  For example, the Printer selector or the Open File box are common dialogs.  MSM-Workstation allows access to many of these common dialogs through device mnemonics or the %m* service routines.

Message boxes for errors, information, queries, and so on, may be displayed with entry points in the utility %msgbox.  The common dialog for opening and saving host files is available via OPEN^%mdfile and SAVE^%mdfile.

Printer selection is provided by W /CHOOSEPRINTER, and font select by W /CHOOSEFONT.  For additional information, refer to the documentation on Windows Printer devices.

Example

As simple example of the use of a dialog, Windows normally uses message boxes to communicate simple information or request confirmations from the user.  MSM-Workstation provides %msgbox to allow the developer to use these message boxes.

To try the message box, select Tools/Command Window and type the following:

W $$E^%msgbox("An error occured.","Application Error")

The following message box will appear:

Click OK; the function returns 1 (True).  If the function called is YN^%msgbox, the first button is Yes and a second button labeled No is present; clicking Yes returns 1, and clicking No returns "N" (which evaluates to False).  If the function called is YNC^%msgbox, a third button labeled Cancel is present; clicking Cancel returns "C" (which also evaluates to False).  There are other entry points for common message boxes.

You also can specify a helpfile and helpfile ID.  If they are present and the user presses F1 while the message box is up, then MSM displays the appropriate Help.


Custom dialogs

Workstation-specific standard dialogs are also provided.

Display of license information is provided by entry points in ^%mdlcnse such as SHOWOK^%mdlcnse.

Network database selection is provided by SELECT^%mdserv.


MSM-Workstation Environment - Integrated Windows Features - Help
Help

Standard Windows help is presented by the Windows help engine, which displays a .hlp file for the user.  Within applications, you can define context-sensitive help (help for a particular control or section of a window).

Windows help is built via specific help editing tools, which must be acquired independently and are not a component of MSM-Workstation.  As the help file is developed, a topic can be assigned a unique ID called its context ID.

MSM-Workstation can open this help file and control the Windows help engine by using a function within a built-in XCALL package. Refer to the Technical Reference for information on the WinHelp function.

Simple connections to the user-developed helpfile can also be achieved using the HelpID property which can be assigned to windows and many controls during development. Context IDs are entered at design-time, prefixed by a minus sign (-) if the topic is to be presented in pop-up format. The helpfile is named to match the EXE, and access to it is automatic. Consult the Technical Reference for additional information on the HelpID property.


Automation

What is Automation?

Automation, previously known as OLE Automation, is a standard Windows technology that allows you to use components from other applications in your own application. Many of today's Windows applications support some form of Automation.

Automation can be thought of as a conversation between two applications.  One, the client or Controller, makes a call to the application it wishes to use, such as Microsoft Word.  Microsoft Word starts up and becomes the Automation Server.  When such a server is started, it exposes various methods and properties to the calling application.  The methods allow the controller to ask the server to perform various tasks or functions.  In the case of Word, these might be any of the Word Basic commands.  The properties are values that the server makes available to the controller, either to set or to read. In the case of Word, a property might indicate if the application is minimized or maximized.

The mechanism by which the client sees the server is as an object. The client system creates an object, such as an instance of Microsoft Word as an object.  The technique for creating or obtaining objects differs between controllers but generally is a  variation of the following:

OBJECT=CREATEOBJECT("Word.Basic")

After this object is created, the client system can manipulate the methods and properties of the object:

OBJECT.METHOD

VARIABLE=OBJECT.PROPERTY

To the user of the client system the server application is often never seen, since Automation servers do not generally appear on the desktop unless instructed to via a method or property.

Automation and MSM-Workstation

An application generated with MSM-Workstation can act as an Automation Controller, and in conjunction with MSM-Activate, can operate as an Automation Server. A single EXE might be invoked as a Server by another Controller (for example: a Visual Basic or Delphi application) and in turn operate as a Controller of another application, such as Word.

Concept of objects within MSM-Workstation

Objects have been implemented in MSM-Workstation as a special form of variable.  A local variable can be set up to act as an object. Once this Object Variable (sometimes called an oref) is created, it can be manipulated with the SET, ZSET, and DO commands. The SET or ZSET commands change or retrieve a property or perform a method which returns a result, and the DO performs a method and ignores any return result.

MSM-Workstation as an Automation Controller

Object support in MSM-Workstation introduces one new command, ZSETOBJ, three new functions, $ZCREATEOBJECT, $ZGETOBJECT, and $ZOBJREFERENCE, and a new dot-notation for object references in expressions. Refer to the MSM Language Reference Manual for additional information.

Available methods and properties for applications

The methods and properties exposed by each application differ. For information on them, refer to the documentation for the application to which you are connecting, or contact its vendor.  Microsoft products information can be found in online help, via Microsoft Press Publications, on their website, or through the Microsoft Developer Network.

The object model of an application often develops and evolves over successive versions. For example, newer versions of Word support a Word.Application object and descendants in addition to Word.Basic. New features amy appear in Word.Application while Word.Basic may remain unenhanced.


Windows Registry

Background

How the Registry Functions

Using the Registry


Background

The registry is a centralized site for storing both system-wide and application-specific settings and configurations in Windows 95 and Windows NT. The logical structure of the registry is a sparse multi-level tree, not unlike an M global.

The registry is not directly readable or accessible. The .INI files which it replaces were directly editable with simple text editors, a frequently undesirable capability that now is remedied with the registry. The high-performance registry is extremely flexible and is central to all 32-bit Windows applications and to Windows itself.  Producing quality software for Windows 95 and Windows NT requires use of the registry.

MSM-Workstation provides service routines that transparently use the registry or .INI files, as appropriate. Executables built with Workstation may optionally elect to use .INI files, even on 32-bit platforms. However, this is rarely necessary or appropriate.


How the Registry Functions

The registry is logically a tree with multi-level branches.  The list of branches identifying the path to a leaf node is called a key.  The leaf nodes associated with a key are multi-part, containing any number of pairs with a value part and a data part.  The values are typed, and Workstation access is limited to string-type values.

Several system-defined constant nodes serve as root nodes from which keys may be built, such as:

HKEY_CURRENT_MACHINE and HKEY_CURRENT_USER.

MSM-Workstation itself stores configuration information for Workstation on a user-by-user basis in the following area of the registry:

HKEY_CURRENT_USER\Software\Micronetics\MSM-Workstation

Applications built with Workstation also use this area.  Registry entries for Application built by Vendor (as set on the Make-EXE Options dialog) are in the following area:

HKEY_CURRENT_USER\Software\Vendor\Application


Using the Registry

To view and edit the registry, use REGEDIT.EXE (Windows 95 and NT4.0) or REGEDT32.EXE (NT 3.51 and NT4.0).

Caution   Use great care when viewing or editing the registry directly in this way; it is easy to render your entire Windows system inoperable.

Applications may create, modify, and delete individual values as well as entire key sections in the registry using the registry service routines.  The choice of key and value names and data structure is left to the developer, although it is instructive to review how other applications use the registry.

The following keys are used by Micronetics utilities and should be avoided by applications:

•	Databases

•	Directory

•	WindowSettings

Future use of keys by Micronetics utilities will be confined to names beginning with the % (percent) character. All such names also should be avoided by applications.

Databases

The only Micronetics key of special interest to the MSM-Workstation developer is the Databases key.  Every stored moniker is registered at:

HKEY_CURRENT_USER\Software\Vendor\Application\Databases

with a value of MonikerName and data of DatabaseSpecs.

In .INI file format this would appear as:

[Databases]

MonikerName = DatabaseSpecs

For a local database, DatabaseSpecs is:

L|<full path to database>|<UCI name>|<RO>

For a remote database, DatabaseSpecs is:

R|TCPIP|<IP address>|<IP port>|<password>|<VG name>|<UCI name>|<RO>

R|SPX|< address>|<port>|<password>|<VG name>|<UCI name>|<RO>

If RO is true, the database will be mounted read-only.

If an application built with Workstation is directed to connect to a server at startup, the application's area of the registry is searched for the specified moniker. If the moniker is not found or cannot be used, or if the application is started with the +REBIND option, a new server specification can be entered and stored in the registry, provided the application is not trying to start as an Automation Server.


Designing GUI Applications

Most applications require a graphical user interface (GUI). Numerous third-party sources provide in-depth information on designing GUI applications and on the underlying concepts of event-driven programming in a Windows environment. The following guidelines are provided as an introduction or reminders, as appropriate.

See Also:

Natural Design

Identifying Tasks and Goals

Creating a Clear and Usable Computer Screen

Understanding the Software Tools

Beginning the Design Process


Natural Design

Natural design in a GUI is the attempt to fulfill users' expectations of an object by mimicking its real-world behavior or by associating qualities that it might be expected to have.

To implement a natural design, you must know the following:

•	The tasks to be performed.

•	A sense of what makes the computer screen easy to understand and use.

•	The tools provided by the software.


Identifying Tasks and Goals

Good computer systems—like Windows—are task-oriented, with activities grouped in task-related menus.

Use the following guidelines when designing a screen:

•	Keep the users' goals in mind, and optimize the screen for the most frequently required result. Put the least frequently required facilities on one or more screens that are linked to the primary screen.

•	Provide a means to obtain the most frequently required result as rapidly as possible.

•	To make the task obvious, use the users' language. For example, do not call a button "Browse Database" unless you are designing a screen for another programmer.

•	To ensure that your GUI system is effective for all levels of user expertise, use simple, obvious choices; alternate mouse and keyboard selections; and provide accelerator keys and other shortcuts whenever possible.


Creating a Clear and Usable Computer Screen

Users are happiest with a consistent and coherent system. To design such a system, use the following guidelines:

Recognition, not recall

When users select data from a list rather than type it, they are asked to recognize, rather than recall, what they want.

At a higher level, the best applications provide simple guidelines that assist a user in performing a task.  Design your application so users can easily find and perform necessary tasks.

Defaults

Anything that can sensibly have a default value has one, and the default is shown.

Confirmation

The system provides confirmation when a user action is correct.

Grouping

Information is presented in less than nine meaningful groups at a time. Recognize the limitations of human short-term memory and present only as many items as users can comfortably remember.  A meaningful group can be a single item or a set of related items, such as a list of fonts or the two items, File Open and File Close. Objects that are related by a Frame object comprise one meaningful group.

Consistency

An object that is used in two or more places for a similar purpose appears in the same on-screen location. A similar function on two screens is implemented by using the same object.

Objects that require the same input must have the same name. For example, do not use both Program and Routine as labels when both refer to the name of an M routine.

Similarly, if you use three sets of two radio buttons to configure a request in one screen, do not use six check boxes for the same purpose in another. Your goal is to make users feel that everything is familiar. Do not require users to type a name in a text field on one screen and then select the same name from a list box on another screen.

Commands

Consider whether a function is to be attached to a menu option, a push button, or both. Should it have an accelerator? Provide alternatives only if there is more than one common use (for example, double-click = Enter) or if you are certain that an alternative is needed. For example, most help systems can be accessed in either of two ways. A push button is often provided for context-sensitive help (help about the available options at that point in the system), and F1 is pressed to display the help index.

Navigation

Increase users' sense of security by providing them with sufficient information to know where they are in the system and what options are available.

Reversible actions

Provide safeguards to prevent users from damaging the system or their data. An effective system protects users from inadvertently taking destructive actions, even from losing temporary data that was just entered. Always provide users with the ability to cancel, and if possible, to reverse an action.

Shortcuts for experienced users

Designing a system that promotes comprehension and ease of recall is complicated by the fact that as users become accustomed to a system, they can deal with more, and more varied, information. If your application is complex, think of ways to order it so that new users can complete tasks in a single, well-defined way, while allowing experienced users to use shortcuts that may appear messier.

Visual design

Spend some time creating a screen that is balanced and uncrowded. Use frames to group related gadgets.  However, remember that well-arranged screens are secondary to well-defined tasks.

The optimum number of objects to put on a screen is the fewest you can use without obscuring the task or making it more difficult to accomplish.  Avoid displaying unnecessary information.

Group objects logically, use frames sparingly, and avoid clutter. Do not use symbols and graphics unless they are useful and are immediately recognizable after they are introduced. Be cautious about using graphics. Ideally, have a graphic artist design the screen layout after you determine the objects you need.


Understanding the Software Tools

GUIs are built out of objects such as windows, menus, and various controls such as push buttons and text boxes.

Become familiar with what each object does best, and select the control that most effectively performs the job.

For example, if the requirement is to select dates in the main window of a hotel reservation system, a pop-up calendar window using 31 push buttons could be designed based on the following criteria:

•	The application must know the date.

•	Clerks generally must make reservations quickly and need access to today's date.

•	Adding a single push button to access the pop-up calendar provides additional space on the main screen.

Although we could use a list or list button on the main window, we choose to display all dates in a secondary window using 31 buttons so the clerk can access them quickly if another date is needed. The clerk can see today's date and can determine the day of the week for any other date. Our design is easy to use when a client asks if a room is available "next Tuesday."

Object functions

The functions of an object are built-in characteristics that cannot be modified because they identify it as a particular object. For example, the functions of a window include:

•	Placeholding for menus and gadgets

•	Resizing

•	Repositioning

•	Iconizing

Controls have a variety of built-in functionality and behavior and must be studied to be used effectively.  The following are examples of built-in functions that are performed by common controls:

•	A text box displays one line of text. Text-box functions include horizontal text scrolling.

•	A list button is designed to hold a number of text items in a vertical list. If there are more items than can fit in the display area of the list, it automatically supplies scroll bars as part of its function.

•	Radio buttons change color or shadow when pressed.

•	An X appears in a selected check box.

•	The text in a document box wraps to the next line when it reaches the end of a line. Vertical and horizontal scrolling may be allowed, depending on the properties of the document box.

•	Text is highlighted when it gets focus.

The only user actions you must consider are those that require more than a screen-handling response (those that are to initiate processes).

Object properties

An object's properties modify its function. For example, squareness is part of a window's function, but the square's size and position are properties. Most properties have default values set by MSM-Workstation that the programmer can reset. Some properties do not have defaults and must always be set by the programmer. For example, the following are window properties:

•	Name of display device

•	Size and position

•	Background/foreground color

•	Text font color/face/size/style

•	Icon description

•	Whether visible or not

The most common property values required for an object within a window are:

•	Size and position

•	Title (on-screen label)

•	Code to execute when an event occurs

Inheritance

An object's behavior describes the characteristics of an object that enable it to perform its functions in the context of an application. Behavior is governed partly by the object's function (fixed behavior) and partly by its property values (modifiable behavior). Some of its modifiable behavior is inherited by the objects in descendant nodes of the object hierarchy. Generally, you can alter the inherited behavior for a descendant object by resetting the property explicitly for that object.

When you build an application using MSM-Workstation, you create a hierarchy of objects. The hierarchy  represents the inheritance of properties and behavior. The basic hierarchy is:

Display – Windows – Controls – Choices

Some characteristics such as text font and color are passed from parent to child object.  An object that takes values directly from another object is a child of that object; if there are intervening objects, it is a descendant. The source of the values in the first case is the object's parent, and in the second is its ancestor.

Once created, an object's properties retain the values they had at creation unless they are changed by code or user action. For example, the value of a window's position properties change as the user moves the window around the screen.

The exceptions to this rule are an object's Active property, which makes the object available for use, and its Visible property, which hides and shows the object. For example, if a window is set to invisible, all of its descendants become invisible.

Display level

An application uses only one display at a time. This display normally inherits some defaults from the platform, allows access to the hardware screen size and type, and sets other characteristics.

Window level

The application main window is below the display in the hierarchy. The main window inherits the defaults from the display. You can create all the windows in your application at this level. There are no rules; the structure of your application determines the level at which an object is created. Generally, you set the default colors and fonts for the application at this level.

Below the main window level, there may be other windows (sub-windows), either all at the same level or at lower levels. Each level inherits its defaults from the next higher level.

The decision to use either a top-level or a lower-level window for a particular display depends on the following two factors:

•	Although a user can iconize a window at any level, a lower-level window is iconized with its parent window when the parent (or a parent or ancestor of the parent) is iconized; it also is restored with them. The lower-level window is closed when its parent is closed.

•	A top-level window has a system menu provided by the platform; a lower-level window need not.

In most applications, sub-windows retain the default color and font properties passed down by the main window.

However, the appearance of windows using inherited properties can be modified by setting properties explicitly at design-time or at run-time. These alternatives are different. Changing a window font at run-time after the objects lower in the hierarchy are created does not affect those objects.  If the objects are subsequently killed and recreated, they then inherit the parent window's new defaults. To retain the original defaults, use the Visible property to hide and show them instead of killing and recreating them.

Control level

The menus and controls for a level are also below the main window level. The menus and controls inherit modifiable values from the main window level.

Because the placement of an object within the hierarchy significantly affects how it appears and can be used, use caution when you modify application code. For example, if you enlarge the font in a window, an object below the window inherits the new font size unless it is set explicitly for that object. If the object is a sub-window that you carefully designed to incorporate several lists, buttons, and so on, the change in font size can render it unreadable.

Using validation

Give careful consideration to when to validate user input. By validating as the user leaves a field you catch invalid entries at the point where the entry is fresh in the user's mind. However, if the invalidity of the entry is caused by the value of another control, it can be very frustrating for the user if they cannot leave the current field and alter the relevant control without deleting the new entry. Window-level validation, applied when the OK button is pressed, may sometimes be preferable.

Using fonts and colors

Although you will want to use the color and font features to indicate significance in your screens, the screen becomes unbalanced if you use excessively large or small font sizes or large contrasts.

The default fonts are frequently used because they were selected by professional screen designers for their appearance and readability. Generally, it is suggested that you use:

•	No more than two typefaces on a screen.

•	No more than three styles (for example, italic) or weights (for example, bold) on a screen.

Not all combinations of face, size, and style are available, and availability of fonts varies across machines. MSM-Workstation obtains what is considered by Windows to be the closest match. Fetching back the properties shows the face, size, and style obtained.

The functions $WFONT, $WTFIT, and $WTWIDTH are useful when working with fonts.

To manage font and color properties, use the inheritance hierarchy that is described in "Inheritance" in this manual. Colors which are not set explicitly are inherited from the settings established by using Display in the Control Panel. If your setting for Application Workspace is not a solid color, its closest solid equivalent is used for the background of text on labels. Windows requires text background to be a solid color.

You can explicitly set color properties to a null string, which indicates that the corresponding setting from the underlying platform is to be used, rather than inheriting from the parent object.

Using different monitor sizes and resolutions

You must decide whether you want your application to run on different screen sizes or resolutions; if so, use particular care in positioning and sizing objects. Your application must use the font functions $WFONT, $WTFIT, and $WTWIDTH, as well as information from ^$DISPLAY to determine screen layout. Generally, you should use relative rather than absolute positioning and should consider using Dialog Units (ZDLG).

Using help screens and error messages

If you produce help screens, keep the text concise. Without alteration, the text of a user guide or reference manual is rarely suitable as help text, but it can be used if necessary. MSM-Workstation provides a Message property on objects and a ZSTATUSBAR structure on windows to display brief help.

Users of your application will probably expect the help facility to use the standard Windows help engine, WinHelp. MSM-Workstation provides an XCALL interface to WinHelp so that your application can respond to Help events from objects by locating an appropriate topic in the .HLP file you created to accompany your application. A simple automatic interface is also provided using the HelpID property.

You should not need many error messages. If you use the correct object for your purpose, the user can only enter the correct response. In addition, if invalid choices and objects are disabled, they cannot be selected, thereby eliminating a number of invalid response possibilities.  This is especially important when interrelationships between multiple controls are present.  In a well-designed system, error messages are generated only from data validation.


Beginning the Design Process

Application structure

When you determine the structure of an application, consider the following factors:

•	The flow of task information.

•	The events that must occur.

•	The events that depend on the occurrence of other events.

•	How to respond to each event.

You can see why this type of programming is called event-driven. Although you can design an application that displays one window at a time and forces users to interact with it in a strictly controlled way, GUI applications usually are designed to provide users with as much freedom of response as possible.

Designing the interface

Use the following steps to start designing a new interactive GUI application using MSM-Workstation:

1.	Group user tasks. You must know which activities are performed concurrently by the user, and which are performed in a particular order.

2.	Determine the menu structure.

3.	Design windows for tasks.

4.	Identify where events are generated.

5.	Determine the functions to be performed by events.


Distributing Applications

Licensing Packaged Applications

Packaging and Installation Issues

Windows 3.x

Maintenance Issues


Licensing Packaged Applications

Applications created using MSM-Workstation may be freely redistributed. However, EXEs made using an unregistered copy of MSM-Workstation will notify the end-user of this fact on every startup. Professional software developers can reasonably be expected to register their development tools with their supplier.


Packaging and Installation Issues

Developers need to provide a mechanism for distributing and installing the applications they construct. A Workstation-built EXE requires the presence on the end-user machine of certain run-time files, which can be found in the Program\Redist directory of your development installation. Sophisticated commercial products such as InstallShield (http://www.installshield.com) are available. They typically integrate with Windows install/uninstall conventions, include facilities to prevent overwrite of newer file-versions on the target system, and support registration of self-registering files.

Alternatively, copy the files yourself and use REGSVR32.EXE (present in the Redist directory) to register those which require this step. But be careful not to overwrite a newer file with an older one.

Suggested install directories match those currently used by the install procedures of MSM-Workstation and MSM-Activate. Using these will reduce the chance of duplicate files being installed on a system. References below to Windows\System(32) indicate the Windows SYSTEM directory on a Windows 95 installation, and the Windows SYSTEM32 directory in Windows NT. Your exact directory name may be vary.

Make sure Microsoft Automation is up-to-date. If the version of any of the following files in Windows\System(32) is earlier than the specified version, run OADIST.EXE to update them:

OLEAUT32.DLL	2.20.4054

COMCAT.DLL  	4.71

OLEPRO32.DLL	5.0.4055

ASYCFILT.DLL	2.20.4056

STDOLE2.TLB 	2.20.4054

See Microsoft KnowledgeBase article Q164529 for more information.

The following Microsoft files are always required, in Windows\System(32):

MFC40.DLL	Register this.

MSVCRT40.DLL

The following Micronetics file is always required. Suggested install location is Windows\System(32), so all MSMWS EXEs find it:

MSMWS002.DLL

The following Micronetics file is required if app remote-mounts an MSM-Server database, or uses the TCP/IP socket device (56). Install in the same directory as MSMWS002.DLL:

MSMTCP2.DLL

The following Micronetics file is required if your app uses the TabbedGroup control. Suggested install location is Windows\System(32). It must be registered:

MSMCTRLS.OCX

The following Microsoft file is required if your app uses the MWAPI TABLE gadget. Install in Windows\System(32). It must be registered:

GRID32.OCX


Windows 3.x

A simple application built with MSM-Workstation 2.0 may be capable of operating on a Windows 3.x system in conjunction with Win32s, version 1.30c. However, no support will be provided for such a configuration, and subsequent versions of MSM-Workstation will not be capable of running on that obsolete platform. Should you require a supported version of MSM-Workstation for operation on Windows 3.x, consult your local Micronetics office about availability of Version 1.0.


Maintenance Issues

If an EXE file on a network is shared by all Windows workstations, a single upgrade of a packaged application applies the update to all workstations that use it.

When an upgrade to the MSM engine is performed, it is also applied as a single replacement.  Replacing the MSMWS002.DLL and MSMTCP2.DLL is all that is required.  There is no need to repackage the applications(s) that use MSM. These capabilities facilitate upgrades to widely deployed software systems.


Licensing

MSM-Workstation Version 1.0 came in three editions with varying capabilities: Explorer, Standard, and Professional. Workstation 2.0 replaces these with two states: Unregistered and Registered. On initial installation, the product is Unregistered, but with the addition of an activation key (purchased from Micronetics), it becomes Registered. The unregistered product has the same capabilities as the registered one. However, executables made with an unregistered copy will notify their end-users of this fact upon every startup. Maintenance contracts are only available to registered users.

Owners of Workstation 1.0 Professional Edition licenses can use the same activation details to register Workstation 2.0. Those with Standard Edition licenses should consult Micronetics about arrangements for upgrade.

The LICENSE.MSM file created by the MSM-Workstation product registration is not redistributable.


Use with MSM-SQL

MSM-Workstation includes an integrated Data Control and the ability to bind other controls to such data controls. Use of the Data Control requires MSM-SQL Version 3 or later.


Conversion Issues

Before-Image-Journaling and Legacy Databases

$ZOS Functionality

Absent System Utilities


Before-Image-Journaling and Legacy Databases

The BIJ files of legacy databases are incompatible with MSM-Workstation databases because the BIJ buffer size is smaller for Workstation. This is because buffers are flushed more often on MSM-Workstation (because there is no journal) and the Workstation design avoids wasting input/output time on flushing large, partially empty buffers.

Databases should be cleanly unmounted (not in need of rollback) before they are moved between MSM-Workstation and any MSM-Server system.

For example, if a MSM-PC/PLUS-created, BIJed database is unmounted from MSM-PC/PLUS and mounted on MSM-Workstation, the BIJ file is recreated. Like all MSM-Workstation BIJ operations, this step is transparent to the user unless the BIJ file is extremely large and takes an appreciable time to recreate. After the BIJ file is recreated, it should be unmounted from MSM-Workstation and remounted on MSM-PC/PLUS, which reports that the BIJ file is invalid. In order to BIJ the database on MSM-PC/PLUS, the user must manually recreate it.


$ZOS Functionality

See MSM Language Reference documentation on the $ZOS function for differences between MSM-Workstation and other MSM products.


Absent System Utilities

A number of utilities familiar to previous users of MSM are not necessary for MSM-Workstation because they have graphical user interface equivalents.


Overview and Terminology

MSM-Workstation is an interactive development environment for developing GUI, console, and Automation applications.  The interface allows working with multiple databases and projects, programming, testing, debugging, building true Windows executables.  When used in conjunction with MSM-Server it supports multi-developer project collaboration.

MSM-Workstation incorporates  Micronetics' original GUI application builder tool, MSM-ViEW/Builder, providing facilities for editing, compiling, and testing GUI windows and components.   It offers an environment which shields the user from dealing with low-level technicalities, thus allowing rapid application development. Although the GUI capabilities rely on the M Windowing API (MWAPI), the functionality provided by the tool is at a higher level, and does not necessarily require dealing with the MWAPI specifics.

Compilation results in M routines and MWAPI structures. Micronetics-specific extensions to MWAPI are made available by default, but may be deselected by setting a window-level property, DevMode, to X11 rather than MSM.


User Interface - Databases
Databases

The following assumes a general understanding of databases in the MSM environment.

A user of MSM-Workstation mounts one or more local databases containing the routines, globals, windows and other objects being developed. A database created by MSM-Workstation contains a single UCI. Consequently the term database is commonly used within this product in place of the term UCI. Local database files originally created by another MSM product such as MSM-PC/PLUS may contain multiple UCIs, all of which become accessible when the database is mounted.

Though several databases may be open concurrently within MSM-Workstation, all the windows and modules comprising an application must be located in the same database as the application object itself.

See Also:

Generated routines and globals

System routines and globals

ActiveX control storage file

Development teams

Managing the scratch global


Generated routines and globals

Development using MSM-Workstation typically results in the production of generated M routines and globals in addition to any created explicitly. Take care to avoid generated items overwriting others. By default, compiled routines are prefixed XXX, and globals are prefixed XXX and ViE. Window, module and application definitions are stored in ^BLD and ^BLDC.  Sources are stored in ^ZMSMSRC and macro libraries are generated by default in ^ZMSMMAC. Scratch data is created in ^BLDt.


System routines and globals

The Workstation development environment itself consists of a number of routines and globals. The names of these can be listed in the System Browser by exploring the %App database within the <System> subtree. You will not be able to create a routine or global in your own database if its name matches one of these. We recommend you avoid all use of the %-prefix on your own routines and globals.


ActiveX control storage file

ActiveX controls placed on windows require a storage file. When you save the first window containing such a control into a local database, the system prompts you to confirm that the file should be created. It has the same name as the database file, but uses the extension .MXS instead. Do not separate the database file (.M) from its .MXS file, or definitions will get out-of-step.

Before you can save a window containing an ActiveX control onto a network database, you must nominate a storage file. Place this file in a location from which all users of the remote database will have read/write access to it. Use a UNC path and set the full path and filename into the node ^BLD on the database. We suggest you use the .MXS extension. For example:

S ^BLD="\\myserver\MSM\storage.MXS"

Use different storage files for different volume groups, and back up the storage file at the same time as the server files which form the volume group. You can use the same storage file for different UCIs on the same VG.

You can use the same node (^BLD) to override the default storage file used for local databases. Use caution when changing this setting to avoid existing windows becoming no longer able to find the storage entries for their ActiveX controls. To reset to the default name, set this node to null.

Note  DO NOT KILL ^BLD, or you will lose all the objects defined in your database, which are stored in descendant nodes of ^BLD.


Development teams

MSM-Workstation is designed to be used either standalone on a single PC or sharing a network database with other PC workstations. A single UCI on an exported volume group of an MSM-Server system, Version 4.3 or later, can be used as a shared network database by multiple workstations.  Each workstation requires a unique registration key for MSM-Workstation.

An alternative, less convenient approach to team working involves exchange of objects between developers working in isolation on single PCs. Windows can be exported to files, transferred and reimported. Routines and globals can be transferred similarly using save and restore utilities. There are currently no facilities for easy transfer of applications, modules or sources.


Managing the scratch global

MSM-Workstation's scratch global ^BLDt is automatically located in the in-memory database %Temp when you are working in a network database. This prevents the high volume of SETs and KILLs to this scratch global from having to travel over the network, yielding better performance and lower network traffic. However, some users may find it necessary to relocate the scratch global to another database (for example, when working with many concurrently open large objects leads to a shortage of space in the in-memory database). Set a node in the ^BLD global within the network database, as follows:

^BLD(300327,license_number,2)=setting

where license_number is the serial number of your Workstation registration: $P($P($SY,",",2),";")

setting is a UCI,VOL name, or a moniker, or 0 to signify the current uci (the one containing the ^BLD global whose node is being set). A node with a license_number subscript of 0 is used in the absence of a specific node for your own number, or if you are running MSM-Workstation unregistered.

Examples:

^BLD(300327,0,2)=0

This setting on an RVG uci will keep the scratch global on the server for all users, reproducing the behavior of Workstation Version 1.0.

^BLD(300327,9999999,2)="Scratch"

This setting will attempt to place the scratch global for user 9999999 onto the database they have bound the moniker Scratch to. If this is not possible, the current database or the %Temp database will be used as fallback locations.

The location of the scratch global is reported on the Properties dialog obtained from the right-click menu on the mounted database within the System Browser tree.

The scratch global ^BLDt is used with an initial key that guarantees uniqueness even if all workshops point all workstations to a single UCI.


Components

The development environment is the screen that is displayed when you first start MSM-Workstation. Within this environment are the components that comprise MSM-Workstation.

The user of MSM-Workstation typically creates, tests and assembles components that go to make up a redistributable Workstation-generated application. The tool may also be used to work on M routines and globals that are used on server systems or in legacy applications.

MSM-Workstation operates on the following component types:

•	Modules

•	Application

•	Routines

•	Globals

•	Host Files

•	GUI Windows

Routines and global are familiar to M programmers.  The way in which they work is unchanged within MSM-Workstation.  We will start by taking a look at the newer components, Modules and Applications.

Modules

During development, a large application can normally be thought of as a number of smaller parts.  So within a large application you may have distinct smaller areas of the system.  Or, a programmer may work on only a small subset of the main routines.

To allow easier maintenance of the components in Workstation, we have introduced modules.  Modules allow the collecting together of related components; routines, globals, GUI windows, or any of the development components.  So if a programmer was working on the reporting system of the application, they may build a module that contained all the globals and windows that made this section up.  This would allow easy maintenance of the routines or windows by keeping them all together.

Although a module contains these components, they do not physically reside within that module.  A module only points to them.  This means, for example, that a routine could be contained within more than one module.

Applications

Modules can also become APPLICATIONS.  Modules and Applications differ only in that applications can be made into standalone .EXE files.  An application would normally contain all the modules (or routines, windows etc.) that you wish to have included in your redistributable .EXE. A module can be turned into an application by setting its Application property.

Routines

MSM-Workstation now includes a full GUI routine editor.  Text can be cut and pasted between routines or other Windows products.

Globals

Globals can be viewed via a similar editor to routines.  The global listing is basically seen as a standard text file within a window.

Host Files

Host files are files that reside within the host system (in this case the PC).  They can be loaded, edited and saved within the same editor as the routines and globals.  This allows maintenance of any text or configuration files your system may use.

Windows

MSM-Workstation contains tools for building GUI windows.  Once a window is loaded or you choose to create a new one, MSM-Workstation enables the appropriate toolbar and menu options.

Sources

Sources are used with the macro preprocessor.  Instead of writing routines you write Sources.  These sources can contain macros and macro definitions, which are expanded out into 'real' code when the source is saved. See the MSM Language Reference for more information about the macro preprocessor.


User Interface - Main Window
Main Window

After you install MSM-Workstation, you are ready to explore the Developer Shell environment.  To begin using the product, use the item added to your Start menu by installation. Alternatively, access the installation's Program subdirectory and then run MSMWS.EXE.

The system briefly displays a splash screen, which identifies the product edition, copyright, and the name of the licensed user.

Use the Help/About window to display additional licensing information.  If you require support for this product, provide your Micronetics support representative with the license number and build version number that are displayed in Help/About.

After the splash screen is displayed, the main window opens.

The MSM-Workstation main window consists of three distinct parts, which have discrete but related functionality:

•	The Menu Bar allows complete access to all MSM-Workstation functionality.

•	The Toolbar provides access to the most commonly used functions.

•	The Property Bar is used to display and edit an object's properties.

The title bar of the main window displays the name of the currently focused file (including applications, windows, modules, routines, and globals).

You can customize the appearance of the main window from the View menu.

See Also:

Menu Bar

Toolbar

Property Bar

Status Bar


Menu Bar

The Menu Bar provides complete access to all MSM-Workstation functionality.

If MSM-Workstation is started with no database, most of the File menu options cannot be selected.  Before an application can be created or used, a database must be mounted.

Menu choices and availability vary, depending on whether the focus is on a GUI object (a module, application or window), or on the editor window of a textual object.  Refer to "Components" in this manual for additional information.

The top-level menu choices when a textual object has focus are as follows:

The Search menu, which is specific to textual objects, is used for search and replace operations.

The top-level menu choices when a graphical object has focus are as follows:

The Element menu, specific to graphical objects, is used to insert controls on windows, alter control properties, and perform other GUI-specific operations.


Toolbar

The Toolbar is a row of buttons that provides easy, one-click access to the most commonly used Workstation functions:

These buttons are arranged by function into the following groups:

•	File group: New, Open, Save, QuickTest

•	Edit group: Cut, Copy, Paste

•	Positioning group: Center, Snap to Grid, and Fix Position

•	Builder group: Properties, Action Logic, Appearance, Tab Order, Menu Editor, Choice Editor

•	Undo

The Positioning group and the Builder group initially are inactive and are activated when a GUI object (an application, module, or window) is opened and has focus.


Property Bar

The Property Bar allows the user to view and edit the properties of an object.  The Property Bar is not displayed until a GUI file (such as a Window) has been created or opened.  The following figure illustrates the Property Bar.

The Object drop-down list contains the names of all objects on the focused window or module that allow selection of a single item. The selection also is automatically updated by clicking on an object.

The Property drop-down list contains the properties for the object selected in the Object drop-down list, allowing selection of a single property.

The Value field displays the current value of the property selected in the Property drop-down list for the object selected in the Object drop-down list, allowing editing where appropriate. When a defined set of choices is available for the property, a list of valid choices is provided as a drop-down list from which a selection can be made. If the Value field accepts typed text, it may be validated before being accepted; if it is not acceptable, the system provides an audible warning, and the field value is reselected. The Checkmark and Cross buttons are used to accept or reject the modifications made to the property's value. Use of the Checkmark button is optional; a new value also is approved when you press Enter or move the cursor off the Value field.

The Property Bar displays the size, position, and units of the selected object on the right end. These values are updated automatically as the object is resized and moved.


Status Bar

The Status Bar shows messages, the current database, the state of the Caps Lock and Num Lock keys, and the current time.


Menu System

There are six key menus within MSM-Workstation, covering basic file operations (loading, saving and deleting components), preferences (turning on and off toolbars etc.), system tools (Access to the M prompt, programmer utilities such as routine restore), database tools (mounting and dismount volumes, database validation etc.), development window management and the on-line help system. Additional menus appear depending on the type of object currently selected.

See Also:

File

Edit

View

Elements

Tools

System

Window

Help


File

The term "file" covers the various component types that MSM-Workstation is able to manipulate. The File menu provides the following commands:

New

To create a new file, select New from the File menu.  The system displays the New window.

To quickly create a new file, click the New button on the toolbar:

  New button

Popup menus on the System Browser also permit creation of new files.

Open

To open an existing file, select Open from the File menu.  The system displays the Open window.

To quickly open a file, click the Open button on the toolbar:

  Open button

System Browser facilities also allow files to be opened.

Close

This menu entry closes the currently focused file.

To quickly close a file, use the close-button on its title-bar.

If changes have been made but not saved, confirmation is requested.

Save

To save the current file, select Save from the File menu.

To quickly save a file, click the Save button on the toolbar:

  Save button

The current file is the window with focus, and is also identified by the title bar of the main window.

Delete

Files of any type can be deleted. The System Browser provides an alternative way of deleting them. Note that the Undo feature is NOT able to recover a deleted file.

Compile

This menu entry is used to compile applications, modules and windows.

To compile some or all of a module's components, select the components before choosing the File-Compile menu option. The module itself will only be compiled if there are no components selected, or if the selection includes the <Components> line. When compiling a series of windows and modules in this way you can select the Non-Stop checkbox on the Compile Progress Dialog. Thereafter you will only have to interact with the dialog if the compilation reports errors, or when the final selected component has been compiled.

To compile a single window, it must be the currently selected object (see the title of the main window). If it is open, click on it, otherwise open it (using the Open menu entry, the Open Toolbar button, or by double-clicking it as a component of an open module).

Test

This menu entry displays the Test Dialog to allow testing of modules, windows, routines or sources. Applications can also be tested, but they typically contain environmental initialization logic (mounting databases, enabling translation) which may interfere with the development environment, so they are best tested by making the EXE and running that.

During testing within Workstation a Test Progress Window is kept accessible at all times even when the component under test creates an application-modal window. This allows you to abort the test at any point (for example, if you have neglected to include in your window a means of closing it down).

By default the GUI debugger will appear if the test encounters an error or a BREAK command. Before starting the test you may choose to disable the debugger, or open it initially so that breakpoints can be set.

Make EXE

Make EXE performs the construction of an executable file from an Application module.

Print Setup

This provides access to the standard Windows printer setup dialog, followed by the font selection dialog.

Print

Printing is supported for all types except windows, modules and applications. Use Print Setup to select a printer.

Import

This menu entry displays the Import dialog to allow the import of windows.

File/Import reads window definitions in .VEX format, which is similar to Visual Basic text file format.

Modules and applications cannot be imported.  Routines and globals are imported using legacy character-mode restore utilities from the Tools menu or via the Command window.

Sources are stored in subnodes of the ^ZMSMSRC global and can be transferred by saving and restoring the appropriate subnodes of the global. Remember that global restore operations typically merge new data with old, so it may be necessary to pre-kill beforehand.

Export

This menu entry displays the Export dialog to allow the export of windows.

File/Export writes window definitions in .VEX format, which is similar to Visual Basic text file format.

Modules and applications cannot be exported.  Routines and globals are exported using legacy character-mode save utilities from the Tools menu or via the Command window.

Sources are stored in subnodes of the ^ZMSMSRC global and can be transferred by saving and restoring the appropriate subnodes of the global. Remember that global restore operations typically merge new data with old, so it may be necessary to pre-kill beforehand.

Most recently used files

This is a list that may be used in the standard fashion to access recently used files.  If a database must be mounted first, that is done automatically after confirmation.

Exit

This menu entry closes down and exits from the MSM-Workstation environment. You will be prompted as to whether you wish to save any modified objects.

To quickly close the Workstation environment, use the close button on the title-bar of the main window.


Edit

The Edit menu provides the following options:

Undo

When editing GUI windows, the Undo command allows you to undo window edits. The undo-stack is limited to 99 records per window. Because some user actions can cause in multiple consecutive records, a complete undo of such an action requires multiple undo operations. An example is a window resize from the upper-left corner, which is indistinguishable from a move followed by a resize at the lower-right corner.

The Undo command provides a single-level within-line undo capability when editing textual objects.  CTRL+Z may be used as a shortcut.  If you press CTRL+Z,   the last edit is removed; if you press CTRL+Z again, the last edit is restored.  Once you have moved to another line you cannot undo the change, as the syntax-highlighting operation clears the undo-buffer.

To quickly undo the last edit, click the Undo button on the toolbar:

  Undo button

Cut

When editing GUI windows, the Cut command removes the selected control(s) from the window being built and puts it on an internal clipboard. This command is available only when one or more control is selected. A control placed on the clipboard will remain there until it is replaced with a new control.

When editing textual objects, the Cut command removes the selected text and places it on the Windows clipboard.

For easy access to this operation, use the CTRL+X shortcut or click the Cut button on the toolbar:

  Cut button

Copy

When editing GUI windows, this menu entry copies the selected control(s) to an internal clipboard. This command is available only when one or more control is selected. A control placed on the clipboard replaces the previous contents, and will remain there until it is replaced in another cut or copy operation on a control.

When editing textual objects, the Copy command makes a copy of  the selected text on the Windows clipboard.

For easy access to this operation, use the CTRL+C shortcut or click the Copy button on the toolbar:

  Copy button

Paste

When a GUI window is selected, this menu entry prepares to insert a copy of the control(s) previously Cut or Copied to the internal clipboard. After selecting this command, click at the desired location on the target window. This command is not available if the internal clipboard is empty.

When editing textual objects, the Paste command inserts the contents of the Windows clipboard at the current caret position.

For easy access to this operation, use the CTRL+V shortcut or click the Paste button on the toolbar:

  Paste button

Delete

This menu entry deletes the currently selected control(s). To delete a window, close it and then use File-Delete.

Note: The following options appear only when the window with focus is using the syntax-highlighting editor.

Find

The Find entry opens the Find window for search capabilities within the syntax-highlighting editor.

Replace

The Replace entry opens the Replace window for search-and-replace capabilities within the syntax-highlighting editor.

Next

The Next command finds the next occurrence of the current search string.

Previous

The Previous command finds the previous occurrence of the current search string.

Jump

The Jump entry is enabled when a Source or Routine is being edited, and allows jumping to labels and offsets.


View

The View Menu allows configuration of the windows displayed on the programmer's desktop. The menu options displayed here can be selected to display or hide the windows listed below. Those already displayed are signified on this menu using a check mark placed to the left hand side of the appropriate menu entry.

The View menu provides the following options:

When textual objects are edited, only the Toolbar and System Browser options are enabled.  When GUI objects are edited, all options are enabled.


Elements

The Elements menu applies when GUI objects are edited and provides the following options:

When working on a window or control, a popup menu on the object also gives access to similar options.

Create Control

This menu provides the same functionality as the Toolbox allowing the placement of controls on the window being built by choosing menu options

Create Control – ActiveX

This choice presents the list of ActiveX controls that have been enabled with the Tools/ActiveX Controls menu.  Controls selected from the menu may be placed on windows being constructed.

Definition

This menu entry displays the Definition Dialog for the currently focused object (application, module, window or control).

To quickly display the Definition window, use the ENTER shortcut or click the Definition button on the toolbar:

  Definition button

Actions

This menu entry gives access to the places where Action Logic is entered. When the current object is a window, it selects the corresponding Window Browser. When it is an application or module, the non-modal Actions Dialog is presented.

To quickly display the Actions window, use the F6 shortcut or click the Actions button on the toolbar:

  Actions button

Appearance

This menu entry displays the Appearance Dialog for the currently focused object (window or control).

To quickly display the Appearance window, click the Appearance button on the toolbar:

  Appearance button

Order

This menu entry displays the Order Editor Dialog to allow entry or editing of the <TAB> order of the controls within the window being built.

To quickly display the Order Editor window, click the Order button on the toolbar:

  Order button

Menus

This menu entry displays the Menu Editor Dialog to allow entry or editing of the menu structure associated with the window being built.

To quickly display the Menu Editor window, click the Menu Editor button on the toolbar:

  Menu Editor button

Choices

This menu entry displays the Choice Editor Dialog for the currently focused control, if that control is one which has associated choices (a list type or radio button control).  It enables easy definition, editing and reordering of fixed-choice entries.

To quickly display the Choice Editor window, click the Choice Editor  button on the toolbar:

  Choice Editor button

Snap to Grid

This menu entry snaps the currently focused control to the window sizing grid.

To quickly snap a control to the grid, click the Snap button on the toolbar:

  Snap button

Center

This menu entry centers the currently focused control horizontally in the window.

To quickly center a control, click the Toolbar Center button on the toolbar:

  Center button

Fix Position

This menu entry fixes the run time position for the currently focused window where it currently appears on the display.

To quickly fix the position of a window, click the Pin button on the toolbar:

  Pin button


Tools

The Tools menu provides the following options:

Command

The Command Window option opens a character-based "console" window where M commands may be entered and run directly.  This window is modal. Until it is closed you will not be able to interact with any other part of Workstation.

Grid

This menu entry displays the Grid Options dialog to allow entry or editing of the grid options associated with the window being built.

The Grid option is active when a GUI object has focus, and inactive when a textual object has focus.

Preferences

This menu entry displays the Preferences dialog to allow setting of user preferences.

The Preferences option is active when a GUI object has focus, and are inactive when a textual object has focus.

Defaults

This menu gives access to the Window Default and Control Default dialogs to allow entry or editing of the default properties of the various objects. Use these to set the default values given to new instances of window or control objects.

The Defaults option is active when a GUI object has focus, and are inactive when a textual object has focus.

ActiveX Controls

This choice allows selection of registered ActiveX controls that are to be made available on the Element/Create Control/ActiveX menu.

Routines

The Routines option provides quick access to utilities for dealing with routines.  Some of these utilities may not yet have GUI interfaces, and so are legacy routines run in character-mode windows.

Globals

The Globals option provides quick access to utilities for dealing with globals.  Some of these utilities may not yet have GUI interfaces, and so are legacy routines run in character-mode windows.

System

The System option provides quick access to utilities for dealing with these system functions.  The utilities may not yet have GUI interfaces, and so are legacy routines run in character-mode windows.

SQL

This provides access to MSM-SQL via a console window. It is inactive if no MSM-SQL environment has been located.

SQL Settings

This menu entry displays the MSM-SQL Link Settings dialog to allow entry or editing of the settings associated with access to the MSM-SQL data dictionary, if available.


System

The System menu provides the following options:

Many of these functions are more conveniently accessed using the facilities and popup menus from the System Browser.

Status

Displays which databases are mounted and which moniker bindings are in effect.  Alternatively, in the System Browser right-click the Databases node, and then select Properties.

Current Database

Shows the current database and permits switching to another mounted one. The current database is also identified on the main window status line, and databases are conveniently switched by clicking on the required node of the System Browser.

Databases

The System\Databases sub-menu provides the following options:

Local Mount

To mount a local database, select Databases and then Local Mount from the System menu.  Alternatively, in the System Browser right-click the Databases node, and then select Open Local Database from the popup menu.  Either alternative will then display the Open Local Database window.

Where a moniker has been previously associated with a database, it can quickly be mounted using a double-click on the moniker in the <Other Monikers> subtree of the System Browser.

Remote Mount

To connect to a network database, select Databases and then Remote Mount from the System menu.  Alternatively, in the System Browser right-click the Databases node, and then select Connect to Network Database from the popup menu.  Either alternative will then display the Connect to Network Database window.

Where a moniker has been previously associated with a database, it can quickly be mounted using a double-click on the moniker in the <Other Monikers> subtree of the System Browser.

Only one network database may be connected at a time. To connect a different one, disconnect the current one first.

Unmount

To unmount a database with the shell, select Databases and then Unmount from the System menu.   This will display the Unmount window.

Alternatively, in the System Browser right-click an open database under the Databases node, and then select Close (for local databases) or Disconnect (for network databases) from the popup menu.

Where multiple monikers have been bound to a single mounted database the System Browser's popup menu allows individual monikers to be released without closing the database.

Create

To create a database, select Databases.  From the System menu, select Create.  Alternatively, in the System Browser right-click the Databases node and then select New Local Database from the popup menu.

Expand

To expand a mounted local database created by MSM-Workstation, select Databases. From the System menu, select Expand.  Alternatively, in the System Browser right-click an open database under the Databases node, and then select Expand from the popup menu.

Validate

Select Validate to run the character-based validate utility in a console window. This checks the structural integrity of selected MSM databases. Before-image-journaling should guarantee this structural integrity, so the option is rarely needed.


Window

The Window menu layout varies depending on whether or not MDI mode has been selected in the Tools/Preferences dialog. It provides the following options in MDI mode.

Use the Next and Previous commands to step through open textual objects such as routines and globals.  The accelerators CTRL+F6 and CTRL+SHIFT+F6 permit rapid switching between different objects. Alternative accelerators CTRL+TAB and CTRL+SHIFT+TAB are also supported.

In MDI mode, use Hide Design Windows to hide the non-MDI windows used to manipulate the layout of window objects, allowing a clear view of the MDI windows. Use Show Design Windows to redisplay them.

Use Minimize Windows to minimize non-MDI windows to the desktop and Restore Windows to reverse this.

In MDI mode, the standard menu entries support organization of the MDI windows, and a window list permits rapid switching.  In the above example the following windows are open: the System Browser, an application, a window and its action logic, a routine, and a global.

In SDI mode the Window menu provides the following options:

List selects the System Browser and presents a list of open objects, from which a double-click will switch to the chosen one.


User Interface - Menu System - Help
Help

The Help menu currently provides access to separate help files:

User Guide

This file is the help resource for MSM-Workstation.

Included is information on GUI creation and editing.  You can access this resource in a context-sensitive manner when editing action logic by placing the entry point on a macro name and then pressing F1.

Technical Reference

This file includes reference information likely to be needed regularly even by advanced users.

Language Reference

The MSM Language Reference Manual provides detailed information on the M language. You can browse this resource or access it in a context-sensitive mode as you  edit code by placing the entry point on a function or command and then pressing F1.

About MSM-Workstation

The About option of Help displays version, license, and system information.


User Interface - System Browser
System Browser

The System Browser window provides a powerful method of interacting with databases and objects. It displays at startup and can be selected from the View menu. The window shows the mounted databases and their contents, and lists other databases for which monikers have been defined. Right-click menus on the tree allow monikers to be registered, edited, renamed, and deleted. Databases can be created, mounted, expanded, validated, and unmounted. Lists of open or available objects can be displayed in various forms and sort-orders. Some lists can be filtered (? and * wildcards are supported). Objects may be opened, closed, or exported as appropriate for their type and state. Right-click menus on the lists offer numerous options.

When the Databases node of the tree is selected the list shows all objects opened from any mounted database. Selection of the tree node for an individual mounted database shows only those objects opened from it.


User Interface - Editors
Editors

There is a basic distinction between graphical and textual file types that determines how the file is edited.  The following applies primarily to textual files.

See also the section on Programming - Using Editors.

See Also:

Window Browser

Routines and Globals


User Interface - Editors - Window Browser
Window Browser

Opening a new or existing window opens the build-mode version of the window for visual layout. This build-mode window may be positioned anywhere on the display—it is not an MDI child.  In addition, each build-mode window opens a corresponding Window Browser window for code creation and editing. This is an MDI window.

This window is used for navigating the structure of window events, controls, and control events associated with windows, adding new events to windows and controls, and for editing Action Logic associated with windows and controls.  The syntax-highlighting editor (also used for editing routines, sources, globals, and host files) is used for editing Action Logic.  Many features are configurable on Tools/Preferences, including command-completion or command-abbreviation, reformatting of dotted-DO blocks, and Action Logic-specific features.

Since the build-mode windows may obscure code when the focus is on editing action logic, build-mode windows are automatically hidden when the focus is on a Window Browser (or other editor) window. To move between the Browser and the associated build-mode window, use the F6 shortcut key or the window menu.

This automatic hiding can be turned off or altered to auto-minimization using the Tools-Preferences dialog.

See also the Programming - Action Logic section.


Routines and Globals

MSM-Workstation can be used to edit existing globals and host files (typically, ASCII text files).  These objects, together with routines and sources, are edited in individual windows using a syntax-highlighting editor. By default these windows appear as MDI children of the main window, but an alternative is available by unchecking the MDI box on the Tools/Preferences dialog.

Objects can be open simultaneously in different mounted databases.  All open objects are listed in the Window menu and/or in the System Browser, and all recently opened objects are listed at the bottom of the File menu.

Use Tools/Command Window or Tools/Routines/Editor to access traditional MSM character-based utilities and the editors.

Routines vs. sources

The term routine refers to a conventional standard M executable routine that is ultimately compiled and saved with the ZSAVE command.

The term source refers to routine source code that is saved in an intermediate form.  Sources are currently stored in M globals. In a later version of Workstation, storage of sources in host files may be supported.

Sources are passed through a preprocessor, which generates the M code to be saved as a routine.  The preprocessor provides numerous capabilities, such as macro expansion (including parameterized, nested, and multi-line macros), macro libraries, source code inclusion, and conditional compilation.

In addition, the preprocessor allows comments introduced by a ";" (semi-colon) in the first-character position (the label position).  These comments are stripped when M routines are generated.  Normal M comments, introduced by a ";" after the <linestart> character are still allowed.  As a result, copious inline commenting can be performed with no effect on the size or efficiency of generated M code.

For additional information, refer to "Macro Facility" Preferences - General in the MSM Language Reference Manual.

Editing text

Text-based editing is performed using the syntax-highlighting editor. Standard Windows shortcut keys are supported, including the following:

Key	Action
CTRL+C	Copy
CTRL+X	Cut
CTRL+V	Paste
CTRL+Z	Undo
Many standard drag-and-drop operations are also available.

Console-mode editing in the Tools/Command window using the %G editor also is possible.


Command Window

Overview

Using the Command Window

Using the Command Window Safely

Command Window Shell

Command Line Editing


User Interface - Command Window - Overview
Overview

The Command window is a terminal emulation window that accepts M input/output commands.  It is used for entering and executing immediate-mode commands, running utilities, testing system service routines, editing with the %G editor, and running legacy applications.

The Command window is a character-mode window that is also referred to as a console or MTERM window. The Command window supports ANSI X3.64 emulation, as do all character-mode windows.  Although character-mode windows also are used for running console-mode applications and debug builds of GUI applications, these windows do not include certain special capabilities of the Command window.


Using the Command Window

From the Tools menu, select Command Window to open the Command window.  This action minimizes the Workstation main window and other windows, which cannot be used until the Command window is closed.

Close the Command window with a Quit or Halt command to save the size and position for recall the next time the Command window is opened.  You also can close the Command window by using the close-button in its title-bar.

A toolbar allows font-size to be altered, and copy/paste operations are also supported.

The Command window in the Workstation shell is typically device 31. By default, the Command window is sized to hold 96 logical lines. Although there is not yet a preference setting in the Workstation shell for changing the logical size, you can use the registry.  The number of logical lines in the Command window can be changed (for example, to 512 lines of 80 characters) by setting a registry entry BufferSize(for example, to 80,512) under the following:

HKEY_CURRENT_USER\Software\Micronetics\MSM-Workstation\
  WindowSettings\CommandShell

Note   Currently, routines cannot be directly created in the Workstation Command window by entering lines in direct mode and issuing ZSAVE; nor can they be edited using the ZINSERT and ZREMOVE commands.


Using the Command Window Safely

Use caution in the Command window.  To prevent disruption of the Workstation process, avoid the following actions:

•	Killing the scratch area used by Workstation (which renders it useless):

K ^BLDt

•	Halting the Workstation process:

IF 1 HALT

Because Workstation cannot share writeable local databases, the Command window and the Workstation shell are implemented by a single process. Halting one process halts the other.  A HALT command issued alone is safe; it is trapped and treated as a QUIT, which closes the window normally.

•	Killing the Workstation parent window:

K ^$W("Top")

Because the Command window is implemented by the same process that provides the Workstation GUI interface, it is impossible to protect all functions.

•	Dropping locks:

LOCK

If you are have windows and modules open from a network database, entering LOCK drops all the locks that prevent other users from working on the same windows.


Command Window Shell

The Command window provides command history storage and recall, as well as all direct-mode shell commands supported by other MSM products.  The Command window shell routine is automatically invoked by the system when Command Window is selected from the Tools menu.

The shell maintains a command-line history file that tracks every command entered by the programmer.  Special shell commands allow the programmer to display, recall, and edit commands from the history file.

Online documentation on the shell includes information on displaying the command history, retrieving commands from the history, and editing command lines.  To access this documentation,  press F1 at the programmer (>) prompt.  The following sample code illustrates the HELP information that is displayed.

Shell commands and editing keys are:

?       or F1     - Display this help

??                - Display last 10 lines of command history

?n                - Display 10 lines of command history from line n

<PGUP>  or Ctrl-P - Display previous 10 lines of history

<PGDN>  or Ctrl-N - Display next 10 lines of history

!n                - Recall line n from the command history

F2      or Ctrl-Z - Recall the original (unedited) line

F3                - Recall last line of command history

<UP>    or Ctrl-K - Recall previous line of command history

<DOWN>  or Ctrl-J - Recall next line of command history

<LEFT>  or Ctrl-L - Move cursor left one character

<RIGHT> or Ctrl-R - Move cursor right one character

<HOME>  or Ctrl-B - Move cursor to beginning of line

<END>   or Ctrl-E - Move cursor to end of line

<BS>    or Ctrl-H - Delete the character before the cursor

<DEL>             - Delete the character under the cursor

Ctrl-D            - Delete from cursor to end of the line

Ctrl-U  or Ctrl-X - Delete entire command line

F4      or Ctrl-V - Toggle Volume Group/UCI display


Command Line Editing

When you enter commands in direct mode, typing mistakes can occur.  Instead of re-entering the line that contains the error, you can edit the line. If you detect the error before you finish entering the line (before you press ENTER), use the editing keys to correct the error.  If you have completed the line entry, then recall the line from the command history and use the editing keys to correct the error.  The following table lists the command line editing keys.

Command Line Editing Keys

Key(s)	Description of Action Performed
Cursor Left or CTRL+L	Moves cursor left one character.
Cursor Right or CTRL+R	Moves cursor right one character.
CTRL+B	Moves cursor to beginning of line.
CTRL+E	Moves cursor to end of line.
BACKSPACE	Deletes character before cursor.
CTRL+D	Deletes from cursor to end of line.
CTRL+U	Deletes entire command line.
CTRL+Z	Recalls original line from history.
The command line editor is always in insert mode. When a character is entered, it is inserted before the character that is under the cursor. When the cursor is at the end of the input line, a character is added at the end of the line.


User Interface - Toolbox
Toolbox

The Toolbox window contains a grid of buttons that allows easy selection of a control type for subsequent placement of single or multiple controls on the window being built. Except for the Pointer and Lock items, each item in the Toolbox window represents a control object that may be associated with a window. Double-clicking a control  locks it for placement of multiple controls.


Other Windows

The other windows that form the basic set of tools for building GUI applications include the following:

Module Definition

A module definition dialog is used to define the components of a module.  One method of accessing a module's definition is to double-click <Module components> in a module window.

Clicking the button on the Toolbar also accesses a module's definition.  As an alternative, select the Element menu and then select Definition.

Window and Control Definition

Window definition and control definition dialog windows are used to specify a window or control's properties when creating or editing. They contain the most frequently used properties and can be displayed or not as a preference when creating a control.

There are several ways to access the definition window for windows and controls:

•	Right-click on a window surface or a control to display a pop-up list from which you can select Definition.

•	With the primary mouse button, double-click the client area of a window (in the window but not on a control) to open a Window Definition pop-up window that has a dialog for entering window properties. The same operation on a control displays a Control Definition Window appropriate to the control type.

•	Click the button on the Toolbar to open the pop-up Definition Window for the currently focused object. The Definition Window also can be accessed from the Element menu on the main window.

All of the common settings for the window or control can be specified using these windows. To access the more advanced properties, use the drop-down list on the Property Bar.

Definition windows are provided for Modules, Windows, and all intrinsic controls except the TABLE gadget, which must be dealt with using MWAPI code.  ActiveX controls provide a property sheet which is analogous to the definition windows.

Appearance

The Window Appearance and Control Appearance windows are pop-up dialog windows which are used to edit a window or control's appearance.

You also can access the Appearance Windows from the Element menu of the Main window.

All of the common appearance settings for the window or control, such as colors and fonts, can be specified using these windows.

Color Palette

The Color Palette window allows easy selection of both foreground and background colors for the focused object.  Use a left click to set the foreground color and a right click to set the background color. The area at the left of the color palette illustrates how the selected colors will look, allowing for the dithering of text backgrounds.

Order Editor

The Order Editor window allows you to define the <TAB> order for the focused window, setting the NextControl properties of the controls selected for ordering.

Menu Editor

The Menu Editor window enables easy definition and editing of the menu entries associated with a window. It allows rapid sub-menu level and position changes and simple addition of action logic.

Choice Editor

The Choice Editor enables easy entry and re-ordering of fixed lists of choices on list and radiobutton controls.


Online Help

MSM-Workstation contains most of its documentation on-line in the form of help files.  Possibly the most useful part of the help system in MSM-Workstation is the ability to use the language reference help in context sensitive form.

If you open up a routine in the routine editor, place the cursor near a valid MSM command (the command may be in the short form or the full keyword form), and press F1 (the standard to request help), the language reference help will start and take you to the help section describing that command.

Similar things can be done with all controls and tools within Workstation and the Builder environment, F1 can be used to gain help on a particular section of the program, or the programmer can search the helpfile via the windows search engine to find particular text or subjects


Keyboard Shortcuts

Keyboard manipulation of controls

On a window open for editing a control is normally selected, moved and sized using the mouse. As an alternative the keyboard can be used as follows.

Once the window is selected the TAB and Shift-TAB keys cycle the control selection in collating sequence of control name. Between the last and the first control, selection is placed on the window.

Once a control is selected, the arrow keys move it and the Alt-arrow keys resize it if appropriate to the control type. Keyboard sizing alters the position of the bottom and right edges of the control.

If the Ctrl key is held down during moving or sizing the unit of change is one pixel. Otherwise it is one grid unit in the corresponding dimension, or one pixel if no grid is defined.

If the Shift key is held down during moving or sizing the change is five units. Otherwise the change is one unit.

Summary of moving and sizing shortcuts

TAB	To select the next control in name sequence
SHIFT+TAB	To select the previous control in name sequence
Arrow keys	To move by the current grid dimension.
SHIFT+Arrow keys	To move by five times the grid dimension.
CTRL+Arrow keys	To move by a single pixel.
ALT+Arrow keys	To resize by the current grid dimension.
ALT+SHIFT+Arrow keys	To resize by five times the grid dimension.
ALT+CTRL+Arrow keys	To resize by a single pixel.
Group operations

When designing windows, groups of controls can be selected using the CTRL key in conjunction with the mouse, or by dragging a rectangle around the controls while the Pointer tool is selected. Common properties can be manipulated. The group can be moved, cut, copied, pasted, or deleted.


Application Components and Programming - Overview
Overview

MSM-Workstation can be used to build graphical (GUI) or character-based (console) interactive applications, or Automation server applications. Applications are packaged as EXE files that contain application resources and links to the MSM interpreter and run-time system routines.

Using the Workstation to build applications requires familiarity with managing databases, different types of applications, components of applications including modules, windows, and controls, as well as with techniques for programming, testing, and debugging.


Application Components and Programming - Applications
Applications

GUI Applications

Console Applications

Automation Server Applications

What Happens at Startup


GUI Applications

After a GUI application has been designed, building it is a straightforward process. Iteration and prototyping cause the application design and application building processes to overlap.

Before you can create an EXE file, you must have created an application, which is a special module that can be packaged as a standalone executable.

Assuming that a design is present, use the general steps described below to build an application.

See Also:

Create an application module

Define and build components

Define application startup

Compile and test


Application Components and Programming - GUI Applications - Create an application module
Create an application module

An application module is a special kind of module that can be compiled into a Windows executable program.  The application module serves as a container for all components of an application.  See the Procedures section for the basic procedure to create an application module.


Define and build components

Application components dictate what is available at run-time in the application's read-only database.  Component types are: Globals, Host Files, Modules, Routines, Sources, and Windows.

Global and Routine components contribute their respective M objects.

Source components contribute the M routines they generate.

Window components make these windows available for use within the application, typically via the %%Do, %%DoWin or %%OpenWin macros.

Module components allow these modules to be called using the %%Do macro. They also cause recursive inclusion of all their own components.

Host File components have no effect on the content of the application's EXE.

The Workstation service routines (beginning with %m*) are automatically available to every run-time application.  Refer to Service Routines in the Technical Reference documentation for details of these.  Additional non-run-time MSM utility routines may be included in a run-time application by specifying the routines as application components.

The designed windows and their action logic must be created and tested.  This is the primary phase of the implementation effort.  For detailed information on windows, controls, and action logic, refer to GUI Reference in the Technical Reference documentation.

Windows and modules when created can be automatic components of another module.  For example, if the application module is open and has focus when a window is created, the new window will automatically be a component of the application module.

The primary way to add or drop components of any module (including the application module) is with the Module Definition dialog.


Application Components and Programming - GUI Applications - Define application startup
Define application startup

An application must start somewhere. Various procedures may be performed at startup. An interactive application must at least display a main window.

The first window displayed when the application is started is defined by the action logic on the Enter event of the application module. In the application module's Enter event, you must place action logic to invoke the application's initial routine, window, or module.

See the Procedures section for the basic procedure to define application startup.


Compile and test

Before you build an executable, all windows and modules must be compiled, including the application module itself. This happens automatically during the Make EXE process, ensuring that everything is up-to-date. Alternatively, the application module and all of its components can be compiled at once by highlighting all the components in the application module and then selecting File/Compile. Note that this procedure does not recursively compile all components of a module which is itself selected.

Before you construct an executable, perform as much testing as possible.  Windows can be tested individually, and modules also can form logical units for testing.   To quickly test a module or window, put the focus on the module or window and click the QuickTest button or press its F5 shortcut.  This will compile if necessary and then start the component in test mode.

Debugging may subsequently be performed in a debug version of the executable.


Console Applications

Console applications run in a character-based console window. They rely on READ and WRITE commands to interact with the user.  Legacy applications can be run as a console application with MSM-Workstation.  Service routines that may be valuable in this scenario include PDEV^%msc to control the principal device, and VT100^%msc and VT420^%msc to set function keys.


Automation Server Applications

Automation (formerly OLE Automation) is a feature of the Component Object Model (COM), an industry standard used by applications to expose objects to development tools and other applications. Increasingly, new applications and development tools are including support for this technology, allowing them to control, or be controlled by, other applications or tools.

To specify an Automation application during the Make EXE process, check the Automation Server check box on the Application tab of the Make EXE Options window.

Building an Automation application basically involves designing and implementing entry points in routines that expose the functionality of the application.  These entry points are invoked by M.Do commands from client applications. The entry points must be written as extrinsic functions.

Refer to the Workstation as an Automation Server in the Technical Reference Manual for details.

Although nothing precludes the Automation application from itself operating as a client (or Automation Controller) of another COM object, it is recommended that an Automation application avoid direct interaction with the user (such as using dialogs). Such behavior may cause the controlling application to believe that its server is not responding. It also presents problems when the server is executing on a different system where a user might not be present.

A single executable can function in dual modes, as both an automation server and an interactive application. Concurrent instances of such an EXE can be run as long as they do not all try to mount the same local database for read-write access.  For example, an Automation Server and another interactive application could both mount network databases and run properly.

As in the case of an interactive application, the Enter logic of the application module is run at startup, and the Exit logic is run at shutdown.  The Enter code run at startup can execute vendor-supplied authentication code, mount databases, and perform other server initialization tasks.  The Exit logic of the application module, which is run at shutdown, can perform cleanup tasks.

In the case of an EXE which may be run as either an interactive application or an Automation server, the current mode must be detectable.  The macro %%IsOLEserver is provided, allowing the application action logic to differentiate as necessary.  It returns TRUE when the EXE is running as an Automation Server. This macro can be ignored in the most common situation, in which an application is either one thing or the other, but not both.


What Happens at Startup

When any EXE built with Workstation is started, the mode of use is checked first.  If the EXE is being started as an interactive application but was built as an Automation Server only, an error message is displayed prior to shutdown.  An EXE that was built as an interactive application cannot be started as an Automation server.

The Enter logic is performed next. If the same EXE is a server and also can run standalone, the %%IsOLEserver macro provides a method of determining whether it is starting interactively or as a server.

If startup is via MSM-Activate (as a server) and if Workstation fails to start up (for example: cannot mount the database or user code signals %%NotOK), then a failed-to-start message is returned to MSM-Activate, which then passes it back to the controller application.

When MSM-Activate is used to connect to a Workstation-generated server (connection TYPE=LOCALOLE), the following error codes indicate failures during server startup.

Return Code	Description
800403FF	Enter logic of application signaled %%NotOK without setting %%RetCode, or having set %%RetCode to a value outside the range 1 – 200
800403FE	Unable to open device 63 (this should never happen).
800403FD	Unable to read configuration block (this should never happen).
800403FC	The EXE is not built to be an OLE Server (see the check box on the Make EXE options).
800403C8	Enter logic set %%RetCode=200 and signaled %%NotOK
…	%%RetCode set in range 199 - 2
80040301	Enter logic set %%RetCode=1 and signaled %%NotOK


Application Components and Programming - Modules
Modules

A module is a grouping mechanism that is used to group both windows and other modules, thus producing a hierarchy which can be useful in structural decomposition. Windows are not contained within their respective modules; they are components of the module, but can be opened and manipulated in their own right. A window can be a component of many modules or of none.

Module component types are: Globals, Host Files, Modules, Routines, Sources, and Windows.

A module that is to be used as the source for constructing an application is regarded as a special type of module.  Such a module has its Application property set to Yes and is displayed with the word "Application" (where "Module" usually would be displayed). During development, a module is represented on the display as a window.

Refer to Modules in the Technical Reference documentation for information on this topic.

See Also:

Organizing the workbench

Functional decomposition


Organizing the workbench

Modules also can be used to organize a busy workbench. When a module is minimized, the selections on its components list are scanned. If a selected item is open and not minimized, it is minimized. When the minimized module is restored, any components that were auto-minimized by the module and which are still open and minimized are automatically restored at the same time.

A convenient use of modules for organization is to open a module onto the workbench by using File/Open. This creates a module representation. Double-click on a component to open it. If the selected window or module is already open, a double-click focuses on it (and restores it if it was previously minimized to an icon). If several components are selected when the Open option is taken from the menu or Toolbar, the selected files form the default list of objects to open.


Functional decomposition

Modules have their own Events and Properties and their own error trapping. The Enter event occurs when a module is started, executing the action logic stored with Enter. For instance, the Enter event of an application module defines the startup window of an application. Note that the %%Do macro can take a window or a module as an argument, and preference is given to the module if objects of both types have the same name.

The Enter event of a module can be used to produce an independent and reusable module that performs a specific function.  For example, a Customer module might include a Search window that returns a customer ID and an Edit window that edits it; invokes the windows from a controlling loop in the module Enter logic; and returns from the module invocation with the number of customers edited.


Application Components and Programming - Windows
Windows

Window Types

MDI Support

Pop-up Menus

Toolbars

Menus

Window Sizing

Passing Parameters to Windows


Window Types

GUI windows

A GUI window is a window that runs in graphical mode on the PC display. When building a GUI window, the controls available in the Toolbox include the full set appropriate for use in graphical mode. Additional controls may be employed by obtaining suitable third-party ActiveX controls.

In addition to a collection of controls, a GUI window might contain a menubar and/or a toolbar.

Refer to Windows in the Technical Reference documentation for additional information.

Console windows

Sometimes known as CHUI windows, these windows provide a user interface that matches that of traditional terminal-based applications. They commonly consist of 24 lines of 80 characters, displayed in a fixed-pitch font manipulated with direct cursor addressing. The M programmer typically deals with them using OPEN, USE, READ, WRITE and CLOSE commands on devices 1 and 31-37.

Refer to Console Window Devices in the Technical Reference documentation for information on this topic.

Window modality

The modality of a window dictates the way in which it affects user access to other windows which may be visible at the same time. A non-modal window has no effect. An application-modal window, while it is visible, prevents user access to any other window within the same application. A parent-modal window bars access to its immediate parent window, and an ancestor-modal window disables all of its ancestors.

Console windows are generally application-modal. They are typically involved in M READ commands, where the application is expecting user interaction on the window and is unable to execute any other code until the READ has completed.

Dialog boxes presented by a GUI application are generally application-modal, forcing the user to deal with the dialog before continuing with the application.

The main window of a GUI application is often non-modal, and sometimes opens ancillary child windows, also non-modal.

In most cases, a window that is invoked using the %%Do or %%DoWin macro is forced to be application-modal. The exception is on the first use of this macro within the execution path of an application.


Application Components and Programming - Windows - MDI Support
MDI Support

Multiple Document Interface (MDI) is a user interface style that can be found in many Windows applications.

The Window Definition dialog allows you to define a window as Normal, MDI Parent, or MDI Child.

An MDI Child window's Parent property must identify an MDI Parent window. If no Parent property is set at design-time, the first open MDI Parent will be selected when the child is opened at run-time. The menu defined on the MDI Parent only applies when no MDI children are active. Otherwise, the menu which appears on the MDI Parent is the one defined by the currently active MDI Child.

Multiple instances of the same window can be created. This is essential for MDI, but may be of use with normal windows too. MDI Child windows generally are opened with a %%OpenWin. It is the creator's responsibility to assign instance-numbers. For example:

S index=$G(index)+1

%%OpenWin(MDIChild[index])

%%SetFocus(MDIChild[index].)

Refer to MDI Parent Windows and MDI Child Windows in the Technical Reference documentation for additional information.


Pop-up Menus

A macro, %%PopMenu, allows action logic to display a pop-up menu, commonly in response to a pointer event. It takes up to five parameters.

%%PopMenu parameters

The first is mandatory and specifies the Application Identifier (AppId) of the menu item whose submenu is to be shown. For more information on AppId, see the online help for %%EnableMenu or %%MarkMenu . This AppId must uniquely identify a single item in the current window's menu structure, and that item must have descendant items within the menu hierarchy. Focus must be on the window when the macro executes. This precludes its use during lostFocus or change events, or corresponding high-level events, when focus is in a special state pending the outcome of the event.

The second, third, and fourth parameters specify the position at which the menu is to appear, relative to the window origin. These parameters are optional. If they all are omitted, the default position comes from the %%EvPtrPos value associated with the event whose action logic issues the %%PopMenu command. Otherwise, the parameters are horizontal position, vertical position, and units. The Units parameter defaults to the window's units.

The fifth parameter optionally specifies the AppId of a menu item to display in bold. This is commonly used to indicate the default menu option, or the action that would be performed if you double-clicked the mouse. The AppId must refer to a menu item that is a direct descendant of the menu that is being displayed.

Using %%PopMenu

You can use %%PopMenu to display any submenu within the window's structure as a pop-up, provided that its parent item has an AppId. For example, a menu that appears as a drop-down from the menubar also can be popped-up on the window surface. Using the Menu Editor, you can denote a top-level menu item as pop-only. This prevents it from appearing on the window's menubar and also gives it a default AppId corresponding to the item text.

When %%PopMenu is reached during execution of action logic, the menu appears and no further M code is run until an item is selected or the menu is dismissed without selection. Any remaining action logic for the initial event then is completed. If the pop-menu was dismissed by selection of an item, its action logic was placed in the event queue and generally is the next to be executed.

Altering submenus

A menu item with descendant items forming a submenu can perform processing during its own action logic when it is selected from the menubar menu hierarchy. This facility generally is used to alter the state of its submenu using %%EnableMenu or %%MarkMenu before the submenu becomes visible. Use care when determining the other operations that are attempted during the parent's logic. While a child menu is being invoked, the underlying Windows platform is in a special state and is unable to perform many operations. For example, do not try to move the window or shift focus.

During a %%PopMenu call, any action logic on the initial item (whose descendant items form the first pop-menu) is always run before the pop-up menu is displayed.

Providing accelerator keys

Note that any enabled menu item to which an accelerator has been assigned (on the Menu Item Options dialog) will have its action logic run when that accelerator is pressed, whether or not the menu is displayed or is in the menubar hierarchy. This provides a method of attaching specific logic to accelerators: constructing a pop-up-only menu that bears an item for each accelerator.


Application Components and Programming - Windows - Toolbars
Toolbars

You can define toolbars on windows that are under development. To add a toolbar, use the right-click menu. Use the right-click menu on the new toolbar to add buttons. Use the right-click menu on the buttons you add.

To place images on the buttons of a toolbar, you need a single bitmap containing a series of horizontally-adjacent images. It is commonly called a bitmap-strip. That is, to contain N images each H pixels high by W wide, the bitmap-strip will be H pixels high by (NxW) pixels wide. The color of the lower-left pixel of each image is treated as the background color, and is replaced by the correct color from the current user's Windows color scheme.

Refer to Toolbars in the Technical Reference documentation for additional information.


Application Components and Programming - Windows - Menus
Menus

The Menu Editor window enables easy definition and editing of the menu entries associated with a window. It allows rapid sub-menu level and position changes and simple addition of action logic.

Shortcut keys

To define a shortcut to a menu item, use the & symbol within the items. For example, enter &File to create a drop-down menu that is displayed by pressing ALT+F.

Menu separators

To create a menu separator that appears in the menu as a thin line, insert an entry in the menu structure that starts with the minus sign (-). The menu editor treats the entry as a menu separator and replaces it with a string of minus signs.

Menu accelerators

To define a menu accelerator for a menu item, assign a CTRL+KEY combination to the menu item. After you define a menu accelerator, users can press the assigned combination anywhere within the window to select the applicable menu item without using the mouse.

Marking symbols

In the Menu Item Options dialog box, you also can specify symbols to be included to the left of  the text for a menu item. Select a symbol from the Marking Symbol drop-down list.  For example, use this feature to mark menu items as "checked."


Window Sizing

Two sets of properties are used to control the size of a window. SizeWidth and SizeHeight (together with SizeUnits) form the MWAPI window attribute SIZE. WinWidth and WinHeight (together with WinUnits) form the MWAPI window attribute SIZEWIN. The MWAPI standard states that if both attributes are present it is not defined which takes precedence.

While a window is being designed, Workstation attempts to keep the two sets of properties synchronized. A change to a property in one set, using the Property Bar, applies the change and then updates the other set. Resizing the window using the mouse updates both sets. The size information shown on the right of the Property Bar is WinWidth and WinHeight.

The Win* set gives the full window size, including border, menu bar, and title bar. The Size* set gives the viewport size, the dimensions of the visible region of the application area on which controls are placed. Where viewport scrolling is permitted by the Scrollbars property and required (controls placed so that they fall outside the viewport when the viewport is positioned at the origin of the application area), then Size* includes the area(s) used by the scrollbar(s).


Passing Parameters to Windows

A window or module is invoked with the %%Do macro. The full syntax of the macro is as follows:

%%Do ( Name [ , Parameters [ , Settings ] ] )

We will concentrate on the Parameters argument.

Parameters is an expression (passed by-value) or an array name (passed by-reference) which can contain both input and output variables stored in named sub-nodes. Any structure may be placed in the array passed by-reference.

Accessing input parameters

Within the called window, the array is accessed in %%IOVar. For example, the Create event of a window and controls in a window can retrieve input parameters from nodes of %%IOVar.

This allows values to be passed from the calling to the called window without the called window requiring the actual array names used by the caller. The values passed can be single or multiple, simple values or complex structures.

Returning output parameters

A normal exit from a window is performed with the %%Return macro. Its full syntax is as follows:

%%Return ( [ ReturnCode ] [ , [ Parameters ] [ , Hide ] ] )

In this case, Parameters may specify an array name. If an array is specified, it is merged into the array (if any) originally passed by reference with %%DoWin. This returns values to the calling window, without requiring entry of  the actual or formal array name used by the called window.

Use these techniques to allow windows to communicate in a safe manner, entirely avoiding the use of shared local or global variables.


Application Components and Programming - Controls
Controls

Common Controls

ActiveX (OCX) Support

Tabbed Groups

Container Controls

Naming Controls

Accelerators

Tab Order

Choices


Common Controls

A control is an object that can be placed on a window. It has a set of properties and events that it triggers. Controls can be used to get user input; display output, static text, graphics; control data etc.

Common controls are available from the Toolbox and from the Elements menu, and include the button, checkbox, combo box, date, document, drop-down combo, drop-down list, generic, label, group box, list box, long list, picture, radio button, scroll bar, spin button, SQL data, tabbed group, text box, and timer controls.

Refer to Controls in the Technical Reference documentation for information on this topic.


Application Components and Programming - Controls - ActiveX (OCX) Support
ActiveX (OCX) Support

Use the Tools/ActiveX Controls option to select the controls that you want available. Note that you must have design-time rights to the controls. Some controls found in your registry may not be eligible because of licensing restrictions they enforce. For example, although MSM-Workstation installs the SftTree tree control for use on its own dialogs, it will not be available for inclusion in windows you develop unless you purchase a license from Softel (more information can be found at www.softelvdm.com

ActiveX controls do not appear on the Toolbox. Use Element/Create Control from the top menu or the right-click, pop-up menu on a design window.

Manipulating properties

To manipulate properties, use the %%Set, %%Get, or %%Prop macros. For example:

%%Set(AControlProperty,12)

or

S var=%%Prop(AControlProperty)

When using these macros, remember that ActiveX properties are not case-sensitive. If an ActiveX property name coincides with a Workstation property name, specify the ActiveX property entirely in lowercase characters.

Referencing objects

Within an ActiveX control's own Action Logic a special macro, %%I, provides an object reference (oref) to the control. Use this macro to invoke methods or as an alternative means of accessing properties. For example:

D %%I.AControlMethod(param1,param2)

or

S %%I.AControlProperty=12

The %%I macro is only valid within the control's Action Logic. If you need to use the object reference elsewhere, copy it into a local variable during the control's Create logic:

ZSET myoref=%%I

Accessing event parameters

Custom events may provide extra parameters (see the control's documentation for details). These are accessible using the %%Ev macro. For example:

S param1=%%Ev(EventPropName)

Where these parameters are outputs, use a similar format on the left side of an assignment:

S %%Ev(GoNoFurther)=1

About the ActiveX storage file

ActiveX controls require a storage file. When you save the first window containing a control into a local database, you are prompted to confirm that the file should be created. It has the same name as the database file, but uses the extension .MXS instead. Do not separate the database file (.M) from its .MXS file, or definitions will get out-of-step.

Before you can save a window containing an ActiveX control onto a network database (hosted by an MSM-Server), you must nominate a storage file. Place this file in a location from which all users of the remote database will have read/write access to it. Use a UNC path and set the full path and filename into the node ^BLD on the database. We suggest you use the .MXS extension. For example:

S ^BLD="\\myserver\MSM\storage.MXS"

Use different storage files for different volume groups, and back up the storage file at the same time as the files which form the volume group. You can use the same storage file for different UCIs on the same Volume Group.

You can use the same node (^BLD) to override the default storage file used for local databases. Use caution so that you do not create the problem of existing windows no longer finding the storage entries for their ActiveX controls. To reset to the default name, set this node to null. DO NOT KILL IT, as you will lose all the objects defined in your database, which are stored in descendant nodes of ^BLD.

When you export a window, an extra file may be created with the .VEX file. This new file has the extension .VXS and contains ActiveX control information. Keep the two files together. Import will require both.


Application Components and Programming - Controls - Tabbed Groups
Tabbed Groups

Some ActiveX controls require support of features that are beyond the capabilities of MSM (which we have integrated with the MWAPI model to the extent possible). An example is the Tab control from Sheridan (SSTab). However, MSM-Workstation contains a new "standard" control called the TabbedGroup. This control appears on the Toolbox and enables you to produce tabbed dialogs.

To add new tabbed pages to an existing TabbedGroup control, use the options on the control's right-click menu. These will reorganize existing component controls so they stay on their original pages; this does not occur if you add new tabs using the control's property sheet.

The %%SetFocus macro allows selection of the page on a TabbedGroup. Follow the control name with an expression in square-brackets, identifying the desired tab number. For example:

%%SetFocus(Win1.TG1[3])

Alternatively, set the control's Page property.

If %%SetFocus specifies a control on a tab that is not currently showing, the tab will be selected, provided that the control is able to receive focus.


Application Components and Programming - Controls - Container Controls
Container Controls

The GroupBox control and the new TabbedGroup control act as container controls. When a new control is placed on a container control as it is created, the new control has a property set which indicates this relationship. Thereafter, when the container is moved at design time, all its contained controls also are moved.

Deleting a container does not delete the contained controls.

To make an existing control within a GroupBox become a contained control, cut it and then paste it back.

Support of container controls caused an operational change in MSM-Workstation Version 2 when compared to Version 1. When a tool is selected on the Toolbox, the pointer only allows dropping within a container or on an unoccupied window surface. To abandon the drop-mode and select an existing control, use the Deselect Tool option on the right-click menu.

You can make individual Button, Generic, and PictureBox controls act as containers by setting their CanContain property.

Altering the Visible property of a container control at runtime affects the visibility of all its components. Changing a container control's position properties at run-time has no effect on components.


Naming Controls

Having many objects on a form can be confusing; it can be difficult to remember what sort of object each is.  Although you can give a control any name, a common convention is to adopt a simple prefix when assigning control names to indicate the type of control.  For example, the following prefixes could be used:

Command button	cmd or btn
Check box	chk
Combo	cmb or cbo
Document	doc
Drop-down list	dpl
Drop-combo	dpc
Generic	gen
Group box	grp
Label	lbl
List box	lst
Long list	lng
Picture	pic
Spin button	spb
Scroll	scr
Text box	txt
Timer	tmr
Radio button	rad or rdo or opt
Although you can choose any convention, it is important to use one. By using cmdCancel or tmrTimer1, you instantly know what sort of control each is.

Note  After you decide on a convention, it is easy to have MSM-Workstation provide default names which implement your convention.  Select Tools/Defaults/Controls from the menubar to bring up the Control Defaults window.  Select each type of control from the Type list, and in the Properties section set the Name property .  Then every new instance of the control you create will be given a name starting with your chosen prefix.


Accelerators

The '&' character can be used within the title of a control to provide an Accelerator.  Place the '&' symbol before the character you wish to use for the accelerator.  When the window is running, the user can then select that control by pressing ALT and the character.


Tab Order

The Order Editor may be selected either from the Element menu or the tool bar. It  looks similar to the Menu and Choice editors.

The Order list shows the current order of controls that can be tabbed through.  The list is empty at first.  Use one of the following methods to put controls into the list.

•	The Initialize button places ALL controls on the form into the list. Depending on the currently selected Initialization Order, they will be placed starting at the top-left corner and moving down in columns, or from the top-left corner and across in rows.

•	If you click on the Unordered list, you will see any controls that are on the form but have not been added to the list of ordered items. To add a control, select one of the items and press Move. After items are in the list, use the arrows at the side of the screen to change the order of items by moving them up and down the list.


Application Components and Programming - Controls - Choices
Choices

The Choice Editor may be started from the Elements menu on the main menu bar, from the toolbar, from pop-up menus on controls, or from the Definition window for appropriate controls.

The choice editor always acts the same way, regardless of the type of control for which you are defining choices.

Radio buttons as choices

Unlike some development environments, Workstation defines a set of radio buttons as a single object.

The Choices button on the Radio Button Definition dialog gives access to the Choice Editor, where the titles of the buttons and their sequences are defined. The orientation settings on the Definition dialog dictate whether the sequence of choices is laid out by working down the columns from the left, or left-to-right along the rows from the top.


Programming

Types of Files

Using Editors

Local Variables

Action Logic


Types of Files

The term file is used to describe high-level elements that can be created, opened, edited, saved, and so on. This usage includes, but should not be confused with, files on the host file system.

Text files and graphical files have different editing requirements and are edited in different modes within MSM-Workstation.

Graphical

Graphical elements such as Windows, Modules, and Applications are created as windows or in windows, and edited as such.  Multiple graphical elements can be opened at the same time, and each creates another window on the display.

Users of MSM-ViEW/Builder, which is integrated in MSM-Workstation, will be familiar with Window and Module objects.

The following graphical files are currently supported.

Type	Description
Application	A module that can be used to build a standalone EXE.
Module	A container for components such as windows, routines, and globals.
Window	The basic unit of a GUI.
Textual

Textual or non-GUI elements such as Routines, Sources, Globals, and Host Files are edited in the application area of the main window.  Multiple text files can be loaded and edited at the same time.  They are presented in different windows, either as MDI children or free-standing, depending on a Tools/Preferences setting.  The windows can be rapidly accessed with the Windows menu or by using hot keys.

The following textual files are currently supported.

Type	Description
Global	M database structure
Host File	Host file
Routine	M code
Source	M code plus preprocessor directives and macros
Globals, Host Files, and Routines are self-explanatory.   Sources consist of M code that is augmented with macros of the same form as those used in window and module action logic. When a source is saved, it usually generates an M routine; the macro preprocessor converts a source into a routine.


Using Editors

Syntax-aware editor

A syntax-aware editor is used for routines, sources, globals, and host files, as well as for the action logic of windows, modules and applications. The editor can use a multiple document style of interface (MDI), so multiple child windows may be opened at once and viewed side-by-side, tiled, cascaded, accessed from the Window menu, and otherwise manipulated in familiar ways.

Certain aspects of the MDI interface can be controlled using the Tools/Preferences dialog, or an alternative SDI interface can be selected.

Syntax coloring is provided for code in action logic, sources, and routines.  Color also is used to distinguish references from data when editing globals.  Syntax coloring is applied and errors in the current line are highlighted when the current line is left or when cursor movement keys are used.

There generally are no restrictions on the size of files being edited, other than those system limitations that apply to all Windows applications. One exception is that when editing very large globals, M database size limitations may prevail. To work around this, load sub-trees of the global.

Standard cut/copy/paste/delete capabilities are provided by a right-click menu and by control keys.  Single-level undo is provided for the current line.

Context-sensitive help for the nearest language element is accessed by pressing F1 when editing M code.

Searching

The Edit/Find and Edit/Replace functions search the current edit window. The following shortcuts are provided:  CTRL+F for Find, CTRL+R for Replace, F3 for Next, and SHIFT+F3 for Previous.  If you select text and press F3, the system searches for that selection.

When searching action logic, an entire window may be searched by loading all action logic, or subsets may be searched (such as window events only, or events for one control only) by loading action logic for subsections. Do this by double-clicking on the tree node that represents the subset you wish to load.

Source and routine editing

Routines and sources are provided with a Jump box, which contains a drop-down list of labels in the file.  Parameters and comments on the labeled line are included. When you select from the list, the entry point moves to the labeled line.  The Jump box can be accessed via the Edit menu, via the CTRL+J keyboard shortcut, or by clicking the box.

Labels, labels with offsets, or pure offsets also can be entered directly into the Jump box.  For example:

TAG

Jump to the line labeled TAG

TAG+4

Jump to the line four lines after TAG

TAG-2

Jump to the line two lines before TAG

+7

Jump to the seventh line

-2

Jump to the last-but-one line.

Within the box, entry-completion provides quick access to labels.

Global editing

Globals are edited by loading them into a document where each line has the format:

<reference><tab><data>

The reference and data are colored differently.  Invalid references are highlighted as errors when leaving the current line.  Non-displayable characters in references and data are loaded and saved with the format {nnn}, where nnn is the ASCII value. For example, an escape is {027}.

You can set which values in the ASCII range 128-255 should be displayed as a character rather than in the {nnn} format by using the Display Characters element on the Editor Format tab of the Tools/Preferences dialog.

Window editing

Opening a new or existing window opens the build-mode version of the window for visual layout. This build-mode window may be positioned anywhere on the display—it is not an MDI child.  In addition, each build-mode window opens a corresponding Window Browser window for creation and editing of action logic.  The Window Browser is a normal MDI child window like all other textual windows.

Since the build-mode windows may obscure code when the focus is on editing action logic, build-mode windows are automatically hidden when the focus is on an Window Browser (or other editor) window. To move between the Window Browser and the associated build-mode window, use the F6 shortcut key or the window menu.

This automatic hiding can be turned off, or altered to auto-minimization using the Tools-Preferences dialog. Manual hiding, minimizing and showing can be controlled from the Window menu. Alternatively, the MDI mode can be replaced by an SDI style.


Local Variables

Controls that are used to obtain a value from the user and/or convey a value to them can have a local variable associated with them. This variable is recorded in the VarName property of the control and must begin with an alpha character, followed by up to seven alphanumeric characters with no subscripts permitted. The prefix ViE is reserved by Builder, and the prefix SQL should also be used with care if the MSM-SQL link is being used.

The variable associated with a control may optionally be declared permanent by setting the VarPermanent property of the control to Yes. See the section "Variable Permanence" for details.

If the control has a validation defined for it, the local variable holds the value after it has been processed by the validation.

If a display format is defined the ("X") subscript of the local variable contains the external format (the result of the display formatting).

If the control contains a list of choices (for example: Radio Button, ListBox), the variable will contain the ID of the selected choice. For example, if the second radio-button is selected, the associated variable will have a value of 2.

If the control allows multiple selections (for example: List or LongList with the MaxSelect property not equal to 1), then the local variable contains the choices at its first subscript level, with data of null (as descending from the VALUE leg of the MWAPI structure). The unsubscripted level of the local variable indicates the number of choices selected.

The following controls may have associated local variables:

Checkbox	Combo Box	Date	Document
Drop-Down Combo	Drop-Down List	List	Long List
Radio Button	Scroll	Spin Button	Text Box
Variable permanence

The following chart summarizes the behavior of permanent and non-permanent local variables:

Situation	Permanent variable	Non-permanent
Window created by %%OpenWin, %%Do or %%DoWin		Prior to window creation, any existing variable of the same name is saved. Following any action logic for the control's Create event, the variable is loaded from the control.
Window called with a %%Do or %%DoWin. The call caused the window to be created and produced the corresponding manipulation of the local variables.	Control is loaded from the variable.
Window called with a %%Do or %%DoWin but did not have to be created.		Variable is reloaded with the value that was saved when the window Exit occurred. Previous value of variable (if any) is preserved for restoration on window exit.
User moves focus off the control after its value has been changed.	Variable is loaded from the control before performing any of the action logic that will then occur.	Same as for permanent.
Focus leaves a control as a result of program use of %%SetFocus.	Variable is loaded from the control (only the one losing focus). This occurs in case the value has changed.	Same as for permanent.
Window receives focus through user action, or by program use of %%SetFocus, or is re-entered on return from a %%Do or %%DoWin.	Control is loaded from the variable.	Variable is reloaded with the value that was saved when the window Exit occurred. Previous value of variable (if any) is preserved for restoration on window exit.
Window exited (window Exit event occurs) as a result of user action, or by program use of %%SetFocus or a %%Do or %%DoWin.	Variable is loaded from the control.	Variable is saved onto a private stack. Any variable of the same name that was preserved when the window was created or entered is restored.
Validation and formatting

Validation and Formatting capabilities allow entry of input validation and display formatting options for Text Box, Combo Box or Drop-Combo controls. The control must first have a Local Variable specified in the VarName property to link it to an M local variable.

For Validation the available options are <default> to use the default system validation, Code to supply user code for validation and Custom. The Custom validation option is not yet available. When the Code validation option is chosen, the user enters a line of M code to perform the validation. The user input value is supplied in the variable X, and if it fails the user validation, then X should be KILLed.

For Formatting the available options are <default> to display what is input, Code to supply user code for formatting and Custom. The Custom display option is not yet available. When the Code format option is chosen, the user enters a line of M code to perform the formatting. The user input value is supplied in the variable X and the formatted value should be returned in the variable Y.


Action Logic

Action logic is the term used for the M code and macros that the developer writes and attaches to the various events that can occur as the application end-user interacts with the product. In simple terms, when events happen, your application performs actions in response by executing action logic.

Modules, windows, and each type of control have a set of events that may occur. These are grouped into low-level events and high-level events. Windows and modules also have a special action logic section called CommonCode.

Within action logic, all tags beginning with a percent (%) character are reserved for Builder compiler use. The Builder reserves all local variable names starting with the characters ViEW. Do not set, get, or kill these names directly. If the link to MSM-SQL is being used, all variable names starting with the characters SQL should be avoided. Some of these internal variables are accessible to you via macro names. You must also avoid use of the argumentless or exclusive form of the NEW command in action logic sections.

Tags may be used in action logic lines, but those in sections other than CommonCode are only accessible from within the same section.

Window Browser

In the Window Browser, the tree on the left side shows the controls on the window and the events (for controls as well as for the window) for which code exists.  The right side is the editor window for modifying the code for a section.

Double-click a node to load the code at that level and below. Single-click a node to move directly to that section if the section is loaded.

Right-click menus on nodes of the tree vary depending on the type of node.  Right-click menu choices may include the following.

Choice	Description
Open	Loads code at this level and below.
Go to	Goes to this control or event.
Expand All	Expands all nodes below this level.
Collapse All	Collapses all nodes below this level.
Window	Moves to the build-mode window.
New Event	Allows controls and windows to be given logic for new events.
Rename	Allows controls to be renamed.
Delete	Allows controls to be deleted.
Disabled	Initially disables Event.
Filter	Specifies event (key or mouse event) filter settings.
Help	Goes to help for the control event.
Events

The end-user interacts with a control or window using the mouse or keyboard which gives rise to MWAPI events. These are low-level events. When a low-level event occurs, any action logic placed on the event is run. If this action logic executes the %%NotOK macro before quitting, then the high-level event linked to the low-level event is suppressed and any Action logic on the high-level event is not performed. Otherwise, the high-level action logic follows the low-level logic.

A third category of events applies to ActiveX controls. Custom events are control-specific. They are similar to low-level events, but never cause a high-level event. Consult the documentation provided with the control for further information; on many controls, this is available as an online help file linked to the right-click menu on the Window Browser.

Action logic macros

MSM-Workstation provides for action points that are at a higher level than MWAPI events, but also allows access, if needed, to the MWAPI events. Action logic is M code which is augmented with embedded macros and keyword macros. Common code for windows and controls is divided into code snippets known as window and control action logic, which is executed at well-defined times. Common code editing facilities are provided, at two levels: a simple editor and a syntax-highlighting editor. Macros are provided in order to perform high-level units of logic and can be used within action logic.

Window common code

Common code is a special one-per-window code section typically used for holding procedures shared by action logic sections.


Testing

QuickTest

Testing a Window

Compiling

Using the Debugger in Test Mode


Application Components and Programming - Testing - QuickTest
QuickTest

The QuickTest toolbar button [image] (F5 shortcut) operates if the current object is a window, module, application, routine, or source which generated a routine. If changed, the object is saved. If necessary, it is compiled. It then is tested using a mode which initiates the GUI debugger if an error is encountered. The button acts as a shortcut for Save, Compile, Test from the File menu, with one difference. If the current object is a module or application, the compile stage only applies to the object and not to any selected components.


Testing a Window

The File/Test menu entry displays the Test Dialog to allow testing of previously compiled modules and/or windows without leaving the Workstation environment.

During testing within the Workstation, the Test Progress Window is accessible at all times, even when the application under test creates an application modal window. This allows you to abort the test at any point (for example, if you neglected to include in your window a means of closing it down).


Compiling

The File/Compile menu entry is used to compile modules, applications, and windows.  The compilation process generates M routines and globals that encapsulate the window definitions and action logic implemented by the developer.

Compiler conventions

The default names for compiled routines and globals begin with the string XXX.  Using the CompPrefixRtn and CompPrefixGbl properties and the CompNameRtn override property, the developer can determine the namespaces for the globals and routines that comprise the application.  The prefixes for generated routines and globals can be specified, and a specific routine name can be tied to a specific window.

In addition to the prefix, routines are named with a type suffix. The following table lists the type suffixes that are used.

Type Suffixes

Suffix	Description
g	GUI window routine
m	module routine
s	SQL routine
An additional character after the type suffix is reserved for continuation routines.


Using the Debugger in Test Mode

When testing is initiated using File/Test, you can use a drop-down list to choose the debug mode to be used by the test. The default is On Error, which invokes the debugger when an error or BREAK command is encountered. To set soft breakpoints before starting, choose On Start. To prevent the debugger from being invoked at all, select Off.

Soft breakpoints and local variable watches are preserved between test runs. However, a soft breakpoint is automatically disabled if its routine is re-saved, in case the line reference is no longer appropriate for the breakpoint.


Executables

Building an Executable File

Building and Using a Debug Version

Anatomy of an EXE


Building an Executable File

You can construct an EXE file from an application module. Building an executable involves transferring the components of an application to a new read-only database that also contains system run-time utilities.

Use the Make EXE dialog to specify the name of the executable file and whether a debug version is to be built, and to access the Make EXE Options to specify various options.

The Make EXE process produces a progress window which reports the steps performed in making the executable, and any problems that occur.


Building and Using a Debug Version

Normally, routines are saved p-code-only when transferred to the EXE's database (ZSAVE level 1). A debug version contains maximum available M code for the application routines and adds all the required debugger routines.  This enables testing and debugging within the exact executable application environment that is being constructed—without the presence of any Workstation Shell structures or development database objects—except for the following:

•	Source code for the application routines is present. An application relying on the presence of source lines in routines which a level-1 ZSAVE strips will work in a debug EXE but fail in a non-debug one.

•	Debug and required support routines are present.

•	A CHUI console window is opened as device 1, and is $PRINCIPAL. On a non-debug EXE, this does not occur and $PRINCIPAL equals 46 (the Null device) unless the appropriate checkbox is set on the Startup tab of Make-EXE Options.

•	The GUI debugger is initiated at startup.

Double-click the constructed EXE to start it. Set breakpoints if desired and then proceed using the Debug menu or toolbar.

To use the CHUI debugger as an alternative, start the application with the +CHUIDEBUG switch. This initiates %DEBUG. The debug devices offered by default is console window 37. Any console device (1 or 31-37) or properly initialized COM port ( for example, port 11) can be used. Optionally, break points can be set.  To run the application after break points have been set, enter ZGO.

A debug version may be run with the debugger functions suppressed by starting the application with the +NODEBUG switch.


Anatomy of an EXE

An application package consists of the following elements.

Read-only application database

The EXE file constructed by the Make EXE process contains a read-only database that provides all component routines and globals. This is a required element of an application package.

Required run-time components

The Program\Redist directory of the MSM-Workstation installation contains required redistributable components, including MSMWS002.DLL (the MSM interpreter and run-time routines) and other .DLL and .OCX files. An executable must access MSMWS002.DLL when it is run.  If remote databases or TCP/IP are used, MSMTCP2.DLL must also be accessed. For additional information, refer to the Required Run-time Components section in "Application Components" in this manual.

Additional databases

An application may require additional application-specific read-only or read-write databases.

Custom run-time components

An application may require customized XCALL files.

External components

Components such as resources, bitmaps, icon files, and help files may be required.

Splash screen

A splash screen may be displayed at startup.  If a file is found at startup that has the same name as the application EXE but has a .BMP extension, it will be displayed for a minimum of two seconds at startup as a splash screen.


Debugging

This new component allows sophisticated interactive debugging of M code, either within debug EXEs or during File/Test within the development environment. Its features are documented below.

See Also:

Starting the Debugger

Basic Operation

Windows

Preferences

Technical Information


Starting the Debugger

To invoke the GUI debugger from Workstation, select File/Test from the menu and then select On Start as the Debug Mode. You also can start the GUI debugger by running an EXE made with the Debug check box set during Make EXE. These methods create the debugger windows, start your program, and break on the first line.

If for some reason the GUI debugger cannot be initialized, the system falls back to the CHUI debugger, %DEBUG.

To force a debug EXE to use the CHUI debugger, add the +chuidebug switch to its command line. To run a debug EXE with all debugging disabled, add the +nodebug switch.

The File/Test process also supports an On Error debug mode. This is the initial setting during QuickTest. The debugger is only invoked if an M error or a BREAK command is encountered, at which point the debugger windows appear.


Application Components and Programming - Debugging - Basic Operation
Basic Operation

Use one of the following methods to perform the basic debugger actions: press a toolbar button, select the menu item from the Debug menu, or press the keyboard shortcut.

Continue (F5)

Continues running the program until a breakpoint is reached or an error occurs. It is equivalent to the ZGO command from the CHUI debugger.

Break (Pause)

Disables the application and enters the debugger if the application is running and is waiting for events. Interaction with the debugger windows may be limited until you press this button.

Step Into (F6)

Performs a single step into the next command. This command is performed, and the debugger pauses.

Step Over (F7)

Steps over the next command. The debugger continues to the next command at the current stack level. For example, if the command being executed was a DO, then the debugger continues until returning from the DO call unless an error occurs or a breakpoint is encountered. In the majority of cases, Step Over is equivalent to Step Into.

Step Out (F8)

Returns a stack level. The debugger pauses just before the next command to be executed at one or more stack levels lower (outward). If it is inside a subroutine, it runs to the command following the one that called the subroutine.

Halt (Ctrl+Pause)

After confirmation, stops the debugger, unwinds the stack, and either returns to the Run Progress dialog (if debugging from File/Test in MSM-Workstation), or halts the debug EXE. Pressing the Close button on the main debugger window has the same effect.


Application Components and Programming - Debugging - Windows
Windows

The GUI debugger displays several MDI child windows that provide information on the current state in the debugger.

See Also:

Code window

Immediate window

Breakpoint list

Watch window

Stack view

Command window

Event spy


Code window

The Code Window displays a syntax-highlighted routine. The command that the debugger is currently on is displayed (by default) with boldface, underlining, and red text and a yellow arrow on the left side of this window pointing at this line. When multiple code view windows are displayed, each level of the stack trace is displayed this way. There is an exception: if more than one level in the stack trace is located in the same routine, only the highest (most recently called) level is highlighted.

To scroll to a particular line in the routine, right-click on the window and select the Display Line... option from the pop-up menu; then enter the line reference to jump to. For example, this reference can be "+4" to go to line 4, "ENTRY+5" to go to the fifth line after the ENTRY label, or "ENTRY+5^ROUTINE" to load the routine ROUTINE and display the fifth line after the ENTRY label. Right-clicking on a line reference, such as "D label^rtn", provides an option to jump to this label.

To set a breakpoint on a particular line, right-click on the line and select the Set Breakpoint... option.

When you select the Run to Cursor option, execution continues until the selected line is reached, or until another breakpoint is encountered or an error occurs.

Pop-up ToolTips provide information on local and global variables and on SSVNs. To display the value of a variable in the Code View window, hold the cursor over the name of the variable. The system then displays a pop-up ToolTip that provides the variable name and its value. To display the result of an expression, highlight the expression and then move the cursor over the highlighted section. The system displays a pop-up ToolTip that provides the value of the expression. ToolTips are displayed only for valid expressions. If you right-click on the name of a variable or a highlighted expression, the pop-up menu contains an 'Add Watch' item which you can use to add this variable or expression to the Watch window.


Immediate window

The Immediate Window executes an M command (after you enter the command and press ENTER) and displays any output in blue. If you press ENTER at any point on the line (not just at the end), the whole line is executed. Note that READ commands will give a <MODER> error, and need to be executed in the Command Window instead.


Breakpoint list

The Breakpoint List displays any breakpoints that have been set. You can set a maximum of nine breakpoints. To add or edit a breakpoint, right-click on the breakpoint number you wish to modify and select the option from the pop-up menu. Alternatively, double-click on the breakpoint. Right-clicking on a breakpoint that has been set also gives the option to Display Break Point, which opens a code view window and highlights the line at which the breakpoint is set. To temporarily disable a breakpoint, click on the check box. The breakpoint information is retained, but the debugger will not break on this line until it is re-enabled.

To set a breakpoint, specify the line reference to break on, optionally set the command number within this line to break on (defaults to the first command), and optionally specify an action, (the M code to execute when the breakpoint is reached). This action can include a ZGO command that causes the debugger to continue with its execution without breaking, thus allowing the creation of conditional breakpoints.

When the debugger is used from File/Test or QuickTest within Workstation, breakpoints and watch expressions are maintained between runs. If the routine containing a breakpoint is resaved, the breakpoint is disabled in case the line reference has changed.


Watch window

The Watch Window displays evaluated expressions when a breakpoint is encountered or the Break button is pressed. This is useful for viewing how a particular variable is modified by the program. To edit or delete a watch expression, right-click on the expression and select the option from the pop-up menu. Alternatively, enter a slow double-click to edit, or DEL to delete. To add a watch expression, right-click on a row of the table, or enter a slow double-click on the empty cell at the foot of the Node column. If the watch is for a variable rather than an expression, its value can be edited. Editing is initiated with a slow double-click or from a right-click menu.

The watch window automatically lists all local variables, allowing them to be viewed and edited, and provides a similar capability for globals and the ^$WINDOW and ^$EVENT SSVNs. Take care when browsing wide globals (many different values for a given subscript level), since the load time may be long and the memory requirements high.

If you change the value of a variable in the Interactive or Command window, then the value in the watch window is not updated until you force a refresh, which can be done from the right-click menu.


Stack view

The Stack View displays the current stack trace. At each level, it displays the type of command (either an XECUTE or a DO), the line reference it is from (for the Do style of command), the actual command text, the command number within the line it is on, and the $ZT at this level. If you double-click on any of the stack levels that line is displayed in a code view window.


Command window

The Command Window enables you to enter M commands and interact with CHUI utilities. You can open this CHUI command window from the Tools menu. Because the window is modal, all the other windows are disabled until you quit from this window with a Q command or by using the window's Close button.


Event spy

The Event Spy enables you to monitor the handled MWAPI events that occur within your application. Use the right-click menu to configure the options, which include logging to a file and break-on-event.


Application Components and Programming - Debugging - Preferences
Preferences

Preferences are set from the Tools/Preferences option. Use this option to specify the windows that are to be opened automatically when the debugger starts up. If the Single Code view window is checked, there will only be one code view window in the debugger. If it is not checked, a new window will be opened for each routine. "Automatically close code windows" closes any code view windows that are no longer in the stack trace, thus keeping only the most useful windows. Note that it will not close any code view windows that you manually open using the Tools/Open Routine option. The Skip p-coded routines option causes the debugger to skip any p-coded routines until the first command that is not p-coded is reached. Use this option if you want to avoid stepping through system code.

You can also choose to suppress the Break-Continue dialog that appears when execution reaches a soft breakpoint (one in the breakpoint list). In that case, the break will occur and the debugger will become active.


Technical Information

The debugger uses some local variables starting with %DEBUG. The program being debugged should not use these variables because the debugger may delete any information stored in them. It is valid to kill these variables (for example, if the program does an argumentless KILL) since the debugger recreates them when they are next required.

The debugger window names all start with "%Debug," so if your program scans through ^$WINDOW, you will probably want to skip these.

If the debugger breaks in callbacks for an ActiveX control that attempts to return information back to the ActiveX control synchronously, then the return information will not be passed back synchronously. Although the debugger will operate correctly, the ActiveX control will be passed the same value it passed to the callback function. If the callback function changes one of these values, the ActiveX control will not see this change.


Procedures

Applications

Modules

Windows

Controls

Objects


Application Components and Programming - Procedures - Applications
Applications

Create an application module

Define application startup

Build an executable


Application Components and Programming - Applications - Create an application module
Create an application module

An application module is primarily a container for component parts of the application.

To create a new application called MyApp:

1.	From the File menu, select New. Alternatively, right-click on the Applications node of the System Browser tree and select New.

2.	In the Name box, enter MyApp.

3.	From the Type list, select Application.

4.	Click OK.

The system creates an application module and displays a window that lists components. The system places any windows that are subsequently created into the application window as components.


Application Components and Programming - Applications - Define application startup
Define application startup

Enter the minimal code required to define Win1 as the starting window of Application:

1.	Click on window MyApp to ensure that the application module has focus.

2.	From the Element menu, select Actions.

3.	From the Event list in the Actions dialog box, select Enter.

4.	In the Action box, enter the following line: <space>%%Do(Win1).

5.	Click Save and then Close to approve your changes and close the Actions window.

6.	From the File menu, select Save to save the changes made to MyApp.


Build an executable

To convert application module MyApp  into an executable:

1.	Click on window MyApp to ensure that the application module has focus.

2.	From the File menu, select Make EXE.

3.	On the Make EXE dialog box, click Make EXE.

4.	Run the executable by double-clicking file MyApp.EXE in the Programs subdirectory where you installed MSM-Workstation.


Application Components and Programming - Procedures - Modules
Modules

Open the module definition window

Compile a module

Compile multiple components


Open the module definition window

1.	Double-click the <Components> line in the module window.

2.	Alternatively, from the Element menu, choose Definition.

3.	Alternatively, click the Toolbar shortcut button [image].


Compile a module

To compile an open module named MyMod:

1.	Click on window MyMod to ensure that the module has focus. The application will compile only if there are no components selected, or if the <Components> line is one of the selected list items.

2.	From the File menu, select Compile. The system displays a progress window that reports the compilation steps.  When the message "All done" is displayed in this window, click OK.

Alternatively, put the focus on the module to be compiled, and click the QuickTest button [image] or pressits F5 shortcut.  This will compile all uncompiled components, and start the module in test mode as well.


Compile multiple components

Modules also are used to compile a number of windows or modules as a group. If a module is the current object when Compile is selected and one or more component windows and modules are selected, those components are submitted for compilation. To include the module itself in the submission, select the <Components> line at the top of the list.

Multiple windows can be compiled in a single step if the windows are contained in a module. To compile some or all of a module's components:

1.	Open the module that contains the components.

2.	Select the components to be compiled by highlighting them in the module window.

3.	The module itself will compile only if there are no components selected, or if the selection includes the <Components> line.

4.	From the File menu, select Compile.

5.	On the Compile progress report window, select the Non-stop checkbox.  Thereafter, you will interact only with the dialog if the compilation reports errors.

6.	When the compilation is complete, click OK.

Alternatively, put the focus on the module to be compiled, and click the QuickTest button [image] or pressits F5 shortcut.  This will compile all uncompiled components, and start the module in test mode as well.


Application Components and Programming - Procedures - Windows
Windows

Create a new window

Test a window or module

Compile a single window


Create a new window

To create a window named MyWin:

1.	From the File menu, select New. Alternatively, right-click on the Windows node of the System Browser tree and select New.

2.	In the Name box, enter MyWin.

3.	From the Type list, select Window.

4.	Click OK.

5.	If the Window Definition dialog box is displayed, change settings if desired, and click OK.


Test a window or module

To test a window or module within the Workstation environment, put the focus on the window or module to be tested, and click the QuickTest button [image] or pressits F5 shortcut.

Alternatively, to test a component, e.g. window MyWin, follow these steps:

1.	From the File menu, select Test.

2.	In the Test dialog box, in the Type box, select Window.

3.	From the list under the Name box, double-click MyWin.

4.	In the Testing Window dialog box, click Start.

5.	Test the window.

6.	In the Testing Window dialog box, click Close.


Compile a single window

To compile a window MyWin into executable M routines:

1.	Put the focus on MyWin  (click on the window if you not sure that focus is there).  Alternatively, if the window is in an open module, select the window by single-clicking the MyWin line in the module window.

2.	From the File menu, select Compile. The system displays a progress window that reports the compilation steps.  When the message "GUI compilation complete" is displayed in this window, click OK.


Application Components and Programming - Procedures - Controls
Controls

Positioning and sizing controls

Editing control properties


Positioning and sizing controls

Use the Toolbox to place new controls on a window. A single click places a single control. To lock the selected tool and place multiple controls, use the lock button or double-click. After using the Toolbox, either click on the window to drop a default size control, or press and drag to size the control explicitly. Both operations use the primary mouse button. When you create a new control, the control definition window is popped up unless a preference was set to prevent this.

To resize the controls on an open window, click on them and use the displayed sizing handles. Move the handles by clicking-and-dragging with the primary mouse button.


Editing control properties

To edit the controls' properties, use the Property Bar in the main window. You can call up a control's definition window either by double-clicking or by using the Definition button on the Toolbar. A pop-up menu also is available.


Objects

Create an object

Manipulate the properties and methods of an object


Create an object

For example, we can create a Microsoft Word object.

Use Tools/Command Window and type the following:

ZSET WOBJ=$ZCREATEOBJ("word.basic")

This sets the local variable WOBJ to be an instance of Word running as an Automation server. Once Word has started (you will not see it appear on the desktop), the control returns to the command window. Note the use of ZSET, an abbreviation of ZSETOBJ. This results in WOBJ holding an oref rather than a regular M value. Use $ZOBJREFERENCE to demonstrate this:

W $ZOBJ(WOBJ)

This gives a return value of 1. List all local variables and note that WOBJ is listed in a special format:

>W

WOBJ=...<OBJECT>...

>

Now that the object has been created, the DO and SET commands allow you to use the methods and properties that Word exposes. Occasionally ZSET is also needed, when an oref is to be transferred. Note the new 'dotted' syntax with the ability to follow a chain, and the support of named arguments on methods:

Do Object.Method

Do Object.SubObject.Method(param1,param2)

ZSET local=Object.Method(PropName:=value)

Set Object.Property=Value

Set Variable=Object.Property


Manipulate the properties and methods of an object

In the command window, we are going to use one of the methods of the Word object to cause Word to appear on the desktop:

DO WOBJ.APPSHOW

Word will now appear.  We can continue to use the methods for a given object;

DO WOBJ.FILENEWDEAFULT

DO WOBJ.INSERT("OLE Automation")

Although method and property names are not case-sensitive, they are often localized with a country-specific version of the server application. For example, to control a German version of Word, you must use the German names.

If a method or property name contains characters that are not valid within an M variable name (for example, accented characters), enclose the name in double quotes.

Indirection is not supported on names.

If an object variable is killed, the behavior of the Server depends on its design. Some will close down when no references to them remain. Others remain running and  must be closed down using a method before the controller destroys the variable.


Frequently Asked Questions (Hints and Tips)

How can I easily mount the database with which I'm working?

Can local databases be shared?

How does licensing of redistributable EXEs work?

How do I use accented characters in console windows?

How do I make accented characters from MSM-PC/PLUS databases display correctly?

Can network databases be shared by multiple instances of MSM-Workstation?

Can multiple network databases be mounted by a single instance of MSM-Workstation?

I mounted an MSM-PC/PLUS or MSM-Server for NT/95 database from MSM-Workstation, and now can't mount it again with my original MSM system because I get BIJ errors.  Why?

What is in the $SYSTEM special variable?

I'm running on Windows 3 and some labels are hard to read. What can I do?

Why doesn't locking a local variable work the same as in my MSM-PC/PLUS application?

How do I interrupt an endless loop in the Command Window?


How can I easily mount the database with which I'm working?

If you register the .M file extension to the application MSMWS.EXE, you can then double-click a .M file and have MSM-Workstation start up with this database automatically mounted. MSMWS.EXE also accepts .M files via drag-and-drop. This is a convenient way to start up with your development database mounted.

Alternatively, specify a local database filename on the command-line with which you start MSMWS.EXE. Or specify a moniker instead, and that database will be mounted. This can be a moniker for an MSM-Server database connection.


Can local databases be shared?

You can run multiple concurrent instances of MSM-Workstation on the same machine, but writeable local databases may not be shared.  A local database may be shared by multiple processes only if the database is mounted read-only in all cases.


How does licensing of redistributable EXEs work?

You may use the MSM-Workstation to make EXEs for free redistribution. However, EXEs made with an unregistered copy of MSM-Workstation will notify their end-users of this fact. To prevent this, register your copy of MSM-Workstation before making your EXE. The license file comprising your MSM-Workstation registration information (LICENSE.MSM) must not be redistributed.


How do I use accented characters in console windows?

In the Command Window and in general on devices 1 and 31 through 37, to enter certain accented characters (ASCII range 128 to 159) you need to turn off 8-bit control-code recognition manually with the following command:

WRITE *27,"[64;1""p"


How do I make accented characters from MSM-PC/PLUS databases display correctly?

MSM-Workstation assumes that all ASCII values represent characters on the ANSI codepage. If your data is coming from a PC/PLUS database and includes characters with ASCII values greater than 127 this may not be the case. You can alter this behavior by putting the following statement at the beginning of your application:

SET ^$DISPLAY($PDISPLAY,"ZOEMDB")=1


Can network databases be shared by multiple instances of MSM-Workstation?

Multiple instances of MSM-Workstation running on the same computer may mount a network database on the same MSM-Server (4.3 or later), but attempts to establish concurrent network database connections to the same server from two or more different computers using the same MSM-Workstation registration key will fail. Each individual user should obtain their own registration key.


Can multiple network databases be mounted by a single instance of MSM-Workstation?

By design, MSM-Workstation is only able to mount a single network database (a single server UCI).  However, other UCIs on the server are accessible using explicit extended global references, global translation tables, or routine paths. Additionally, the CHKUCIVG and CHNGUCI entry points in ^%msu can be used to switch to a different server UCI, subject to security checks.


I mounted an MSM-PC/PLUS or MSM-Server for NT/95 database from MSM-Workstation, and now can't mount it again with my original MSM system because I get BIJ errors.  Why?

If you mount an MSM-Server or MSM-PC/PLUS database which has been configured for BIJ, the BIJ file will be reformatted on first use by MSM-Workstation. Subsequent use on the original system will require you to reformat the BIJ file manually, using the MSM-PC/PLUS BIJ utility. This arises because the two products use different BIJ-file block sizes for performance reasons.


What is in the $SYSTEM special variable?

The special variable $SYSTEM has been extended. On earlier MSM versions, its second comma-piece was the license number of the system. The second comma-piece now has a semicolon sub-delimiter. The system license number is to the left of the semicolon. To the right of the semicolon is a random integer obtained from the system at startup time. This ensures that when multiple instances of MSM are permitted to run on the same system using the same license, $SYSTEM will still be unique across all systems. However, application software which previously relied on $SYSTEM returning the same value on consecutive startups of the same system must be modified.


I'm running on Windows 3 and some labels are hard to read. What can I do?

This happens when your color scheme uses light gray to represent disabled text. Using the Colors item of Control Panel, press the Color Palette button, select the Disabled Text screen element, and click on the dark-gray color sample. Then press OK.


Why doesn't locking a local variable work the same as in my MSM-PC/PLUS application?

When an MSM-Workstation process LOCKs or ZALLOCATEs a local variable, that lock is confined to the MSM-Workstation system, even if MSM-Workstation has mounted a network database on an MSM-Server system. This behavior may affect legacy applications that are being migrated to client-server architecture.


How do I interrupt an endless loop in the Command Window?

When an endless loop is initiated within the Command Window of MSM-Workstation, use the Windows End Task facility to signal to the application that it needs to take special action. A dialog box then appears, giving you three choices. One is to ignore the End-Task request. The second is to shut down MSM-Workstation immediately. The third is to signal a normal M <INRPT> error to the application. Whether or not the M application responds to this depends on how it's coded. For example it may choose to trap and ignore the error. But in the simple case of an argumentless FOR command issued at the command prompt, the interrupt will do what you'd expect a Control-C to achieve.


Window Reference


Main Windows

Top Window

System Browser


Top Window

This is the main window of MSM-Workstation when MDI mode is selected on Tools/Preferences (the default).


Window Reference - Main Windows - System Browser
System Browser

This window is used to display and navigate through mounted databases.

The following options are provided:

Tree

Selecting different nodes alters the contents of the list on the right of the window-split. The Databases node will list all open objects from all mounted databases. An individual database node will show all its open objects. An object-type node will show all such objects within a mounted database. Any already open will be ghosted. Context-specific right-click menus are available on nodes.

ListFilter

Pattern to restrict list contents of an object type. Wildcards ? and * can be used. Previous filters used on the object type are available.

ListView

Select one or more item. Enter key opens, Del deletes. Right-click menus offer options. List style can be altered using right-click menu away from objects. Click on column header to sort or reverse-sort. Columns can be resized.


Selecting different nodes alters the contents of the list on the right of the window-split. The Databases node will list all open objects from all mounted databases. An individual database node will show all its open objects. An object-type node will show all such objects within a mounted database. Any already open will be ghosted. Context-specific right-click menus are available on nodes.


Pattern to restrict list contents of an object type. Wildcards ? and * can be used. Previous filters used on the object type are available.


Select one or more item. Enter key opens, Del deletes. Right-click menus offer options. List style can be altered using right-click menu away from objects. Click on column header to sort or reverse-sort. Columns can be resized.


File Dialogs

New

Open

Delete

Delete - Confirm

Compile - Progress

Test

Test - Progress

Make EXE

Make-EXE Options - Application

Make-EXE Options - Version

Make-EXE Options - Startup

Make-EXE Options - Licensing

Make-EXE Options - Advanced

Make-EXE - Progress

Print Setup

Print

Import

Import - Progress

Export

Export - Format and Destination


New

 This dialog allows a new object to be created in the current database.

The following options are provided:

Name

A name must be specified for the object that is being created.  Enter a name for the new file.

Type

Select the type of file to create.  All types except Globals and Host File can be created. Create a new global using M commands in the Command Window. Use Windows facilities to create a new host file.

Copy From

To start with a copy of an existing object of the same type, check this box. A File/Open dialog will appear when you press OK, so you can select an object of the same type from which to copy.

OK

Click to create the object.

Cancel

Click to cancel.


Open

This dialog allows selection of an object or objects to be opened for inspection or editing.

The following options are provided:

Name

Enter the filename or select from the list below.  If you enter a partial name, the system displays matches in the list below.  Matches also are displayed as you type in the Name box.

File List

Select one or more files to be opened. Doubleclick to open one immediately

Type

Enter the type of file to be opened.  When Type is changed, the system displays items of the selected type.  If Type is Global, Routine, or Source, the Database dropdown is enabled.  Browse is enabled if Type is Host File.

Database

Select the database with which you wish to work.  This is enabled if Type is Source, Global, or Routine.

Read-only

Check to open in read-only mode.  This feature is enabled only for textual elements, and not for GUI elements.

Open

Click to open the object.

Cancel

Click to cancel the open.

Browse

Click to browse host files.  This is enabled if Type is Host File.

Notes

The Notes field displays any descriptive information regarding the object entered by the user. For Sources and Routines, Notes will display the first line.


Delete

This dialog allows selection of an object or objects to be deleted.

The following options are provided:

Name

Enter the name of the item to be deleted or select from the list below.  If you enter a partial name, the system displays matches in the list below.  Matches also are displayed as you type in the Name box.

FileList

Select one or more items to be deleted. Doubleclick to delete one immediately.

Type

Select the type of item to be deleted.  When Type is changed, the system displays items of the selected type.  If Type is Global, Routine, or Source, the Database dropdown is enabled.

Database

Select the database with which you wish to work.

Notes

The Notes field displays any descriptive information regarding the object entered by the user.

Delete

Click to delete the item(s).

Cancel

Click to exit the dialog without deleting.


Delete - Confirm

This dialog gets confirmation for deletion of items.

The following options are provided:

Yes

Delete the file. This is NOT reversible with the Undo feature.

Yes to All

Delete this and all the remaining selected files. This is NOT reversible with the Undo feature.

No

Do not delete this file. Proceed to the next in the selection, if any.

Cancel

Cancel this delete and any still unprocessed in the selection.


Compile - Progress

This window is displayed after invoking the Compile command from the File menu. It may also appear at the beginning of a QuickTest, or during the Make EXE process.

The following options are provided:

Progress Report

The Progress Report list displays the status of the compilation process. It shows the object being compiled, the names of the M routines produced and the name of any data structures produced. If any errors occur they are listed here. Compilation reports for successive objects are appended, allowing review at the end of the process.

Non-stop

If the Non-stop check box is checked then the compile process does not stop in between compiling objects but proceeds straight to the next in sequence. Compilation reports are appended, allowing review at the end of the process, which stops when all objects are compiled or a compilation error occurs.

OK

The OK button is used to proceed with the compilation of the next selected object. Compilation reports are appended, allowing review at the end of the process. If there are no objects left to compile this closes the Compile Progress Window. You may wish to review the report on the compilation before dismissing it.

Cancel

The Cancel button closes the Compile Progress Window and terminates the compile session without compiling any more selected objects.

Print

The Print option is not yet available in MSM-Workstation. To obtain a copy of the report, select the text and copy it to the Windows clipboard using Ctrl+C. From there you can paste it into a document in another editor such as Notepad, and print it.


Test

This dialog allows selection of an object to test within the MSM-Workstation environment.

The following options are provided:

Name

The Name field is used to enter the name of the object to be tested.  If you enter a partial name, the system displays matches in the list below.  Matches also are displayed as you type in the Name box.

Name List

The Name List displays existing objects limited to the type chosen in the Type drop-down list and allows a single selection to be made for testing. This selection is placed into the Name field. Alternatively, double-clicking an entry in the list will immediately test the object and close the Test dialog.

Type

The Type drop-down list selects the type of object to be tested.

Notes

The Notes field displays any descriptive information regarding the object.

OK

The OK button is used to proceed with the test running of the object.

Cancel

The Cancel button closes the Test dialog without starting a test.


Test - Progress

This window is displayed after selection of an object to test within the MSM-Workstation environment.

During testing the Test Progress Window is kept accessible at all times, even when the object under test creates an application-modal window. This allows you to abort the test at any point (for example, if you have neglected to include in your window a means of closing it down).

The following options are provided:

Trace

The Trace list displays trace information such as which windows are being run. Much of this information is only generated if the window or module had its CompTrace property set to Yes when it was compiled. This list is added to as the test progresses. Above the list is displayed an indication of the current ESTART depth, which is an indication of the nesting level of %%DoWin macro calls.

Start

The Start button is used to proceed with the test running of the object. Once the test is started this button changes to a Stop button allowing the test to be terminated. When the testing is finished or has been terminated, this changes to a Restart button allowing the test to be restarted.

Close

The Close button closes the Test Progress Window and terminates the testing session. This button becomes inactive once the test has been started.

CHUI

This checkbox appears only when testing a Routine or Source. If set, the object under test is provided with a console window.

Debug Mode

Select a debug option.  The GUI debugger environment may be invoked on start, on errors or BREAK commands, or never.

Minimize self

If this check box is checked (the default) then the Test Progress Window is miminized when the test is initiated. It can be restored on demand. If this box is cleared then the window remains visible and the test progress can be monitored.


Make EXE

This dialog is used to make an executable file from an application object.

The following options are provided:

File Name

Enter the full path to the .EXE file to be created, including drive. Names beginning MSMW* are reserved for Micronetics.

Browse (...)

Click to browse files to select or name an .EXE file

Build debug version

Select to build a debugging version, which will contain source code instead of pcode, and will run in the GUI debugger environment.

Make EXE

Click to build an .EXE file

Cancel

Click to abandon the operation.

Options

Click to specify options and settings for the .EXE file.


Make-EXE Options - Application

This dialog is used to set options when making an executable file from an application object. The Application tab contains prinicipal settings.

Name

Identifies the application.   The Name is used beneath the Owner to form a Registry key.  The default title on message boxes is the Name, as is the heading on the License Information window (if selected for display).  The default Name is the name of the Application object.

Owner

Identifies the originator and vendor of the application.  The Owner is used above Name in the Registry and elsewhere to identify the vendor. Because it is used as a registry key, avoid names which may be used by other vendors, such as "Micronetics" or "Microsoft."  Choose with care.

Title

Used as a default for the title bar of character windows.  The default Title is the same as the Name.

Icon

Specifies the icon to be placed in the EXE. Name of an .ICO file, including full path.  If the file can be located, theicon is shown in the lower left corner of the tab. The icon appears in directory listings containing the EXE, and in the system menu position of windows when the application is running. It also represents the application on the taskbar. The icon is embedded within the EXE, and the .ICO file does not need to be shipped with the application.

Browse (...)

Locate a .ICO file

Notes

Description of the application or other notes.  No run-time function.

Operating Modes

Interactive

Allow the EXE to be started as an interactive application.  Select this setting to build an interactive application, whether using a GUI or character interface.  This is the default selection.

Automation Server

Allow the EXE to be started as an Automation server.  You can build an application that runs in both Automation Server and Interactive mode, modifying behavior appropriately according to the value of the %%IsOLEserver macro.

OK

Click to accept the settings and close the dialog.

Cancel

Click to discard changes to the settings and close the dialog.


Make-EXE Options - Version

This dialog is used to set options when making an executable file from an application object. The Version tab sets information that can be viewed when examining the EXE file's properties from Windows.

Major

Enter the major version number.

Minor

Enter the minor version number.

Revision

Enter the revision number.

Build

Enter the build number.

Auto Increment

Automatically increment the existing build number before the EXE is created.

Description

Set an optional description of the build. Choose from the list or enter your own text.

OK

Click to accept the settings and close the dialog.

Cancel

Click to discard changes to the settings and close the dialog.


Make-EXE Options - Startup

This dialog is used to set options when making an executable file from an application object. The Startup tab settings dictate behavior at startup.

Connect to Server

Check this box if the application is to connect to an MSM-Server system during startup. Establishing a connection in this way will give the application a $JOB value assigned by the server.

Moniker

Specify the moniker to be bound to the database connection. The user will be prompted at application startup to identify the server if it is not already identified in the registry (because it was previously set in the registry at installation). Choose from the list or enter text that is valid as a moniker name. Application logic will normally use the moniker to establish global translations and routine search paths, or to switch to the database. This eliminates the need for the EXE to be aware of the server's UCI and volume group names.

Allow Startup if Connect Fails

Select to allow continuation even if startup server connection fails.  Connection to a server can be required or optional.  If a server is specified but connection is optional, the application is a client that may optionally run in "local mode."  The developer must provide for subsequent behavior.

Open a Console Window

Open a console window at startup. If checked, console window device 1 will open and be returned as $PRINCIPAL. Otherwise $PRINCIPAL will be 46, the null device.

Display License Information

Display a built-in License Information window on startup

OK

Click to accept the settings and close the dialog.

Cancel

Click to discard changes to the settings and close the dialog.


Make-EXE Options - Licensing

This dialog is used to set options when making an executable file from an application object. The Licensing tab permits restrictions to be applied to the EXE.

Product Key

The contents of this field are used in combination with the developer's Workstation registration details to derive a sixteen-character Product ID. The EXE is marked with this code. It is listed at the end of the Make-EXE Progress report. It is available to the end-user of the EXE in the Comments field on the Version tab of the EXE's properties. An example would be 7VQY-HTUQ-N67G-S24E. Using the same Product Key with the same registration yields the same Product ID. MSM-Server managers can control the access of Workstation applications to their databases based on Product ID. Keep product keys private to avoid the possibility of impersonation.

Embedded License

Always Used

Always use the internal license even if the external license of a registered MSM-Workstation user (a LICENSE.MSM file) is present in the same directory as the EXE.

Demonstration

Select to mark the application as a demonstration when running with the embedded license.

Expiration Date

Check to set expiration date for the application when running with the embedded license.  Checking this setting makes a date field visible and allows entry of a date after which the application cannot be used.  Warning messages are displayed to the user starting one week prior to the expiration date.  If the developer's Workstation registration has an expiration date, the Expiration Date check box is automatically selected, and every application built will expire no later than the expiration date of the developer's license.

Expire On

Specify date for expiration of the application when running with the embedded license.

External License Required

An external license is required. The end-user of the EXE must own a LICENSE.MSM file, generally as a result of registering their own copy of MSM-Workstation.

OK

Click to accept the settings.

Cancel

Click to discard changes to the settings.


Make-EXE Options - Advanced

This dialog is used to set options when making an executable file from an application object. The Advanced tab permits configuration of additional parameters.

The following options are provided:

VG Name

Optional name for the volume group of the embedded read-only application database. Three UPPERCASE characters.  Use this setting only if the application needs a specific UCI and VG name for its database. Leave empty (the default) to avoid conflicts with explicitly named VGs on local and network databases, and use the %App moniker to access the application database.

Buffers

Number of 1K cache buffers to obtain from Windows. More buffers may increase the effectiveness of database caching. The memory is obtained from Windows during application startup, so too large a value may impact Windows performance. Can be overridden at EXE startup using the +BUFFERS switch.

Temp Db (K)

Size for default in-memory database bound to %Temp moniker. The memory is obtained from Windows during application startup, so too large a value may impact Windows performance.

Partition (K)

Partition size. Partition memory is obtained from Windows in stages, as the M job's requirements increase. This setting fixes the point at which no further memory will be requested, and an M error will be raised instead. Can be overridden at EXE startup using the +PARTSIZE switch.

Stack (K)

Stack size.  This setting affects the maximum execution nesting depth of the M job. The memory is obtained from Windows during application startup. Can be overridden at EXE startup using the +STACKSIZE switch.

Stap (K)

Stap size.  This setting affects the M job's ability to evaluate nested expressions and process long intermediate results. The memory is obtained from Windows during application startup. Can be overridden at EXE startup using the +STAPSIZE switch.

Use INI file instead of Registry

Use an .INI file instead of the Registry to store application parameters.

Filename

Select a name for the .INI file (the default is the same name as the EXE file).

Place INI file in application directory

Select to place the .INI file in the directory containing the EXE rather than the system's Windows directory

Minimize EXE size

Generate the smallest possible EXE file. If selected this will reduce the size of the EXE by accurately calculating the size of all the routines before creating the EXE. This will slow down the make EXE stage by about 40%, so you may want to reserve this option for production of the final build of the EXE.

When this is not selected Workstation uses an estimate to determine the size of routines and globals to be placed in the application database. This can result in the EXE being up to about 30% larger than necessary.

OK

Click to accept the settings.

Cancel

Click to discard changes to the settings.


Make-EXE - Progress

This window is displayed during the Make EXE process, and displays the actions involved in the build process and any errors that occur.

The following options are provided:

Progress Report

The Progress Report list displays the status of the Make EXE process.

Close

Click to close the Output window after reviewing the report as necessary.


Print Setup

This presents the standard Windows dialog for printer setup, followed by the standard font selector. It establishes the settings used by subsequent File-Print operations.


Print

This dialog allows selection of an object or objects to be printed.

The following options are provided:

Name

Enter the name of the item to be printed or select from the list below.  If you enter a partial name, the system displays matches in the list below.  Matches also are displayed as you type in the Name box.

FileList

Select one or more items to be printed. Doubleclick to print one immediately.

Type

Select the type of item to be printed.

Database

Select the database with which you wish to work.

Notes

The Notes field displays any descriptive information regarding the object entered by the user.

Print

Click to print the item(s).

Cancel

Click to exit the dialog without printing.


Import

This window is used to select one or more objects for import into the MSM-Workstation environment.

The following options are provided:

Type

The Type drop-down list allows selection of the format type of the import source. The following types are supported - Visual Basic Form File (.FRM), ViEW Exchange File (.VEX), ViEW Exchange Global and MWAPI Global Structure. Note that some types allow each file to contain multiple objects. For example, a single .VEX file may contain many windows.

Name

The Name field allows direct entry of the filenames to import from. It can be filled by navigating and selecting from the Name List, or using the Browse button for file-type sources.

Name List

The Name List displays the list of available importable objects of the type specified using the Type drop-down which are at this level in the hierarchy being navigated. The hierarchy is dependent also dependent on the type of file, .VEX and .FRM files are held in the Windows file system whilst the other file types are held in M globals. Multiple selections are permitted.

Add to Module

The Add to Module checkbox can be checked to add the imported objects to the currently open and active module or application (the last one which had the focus). This checkbox is inactive if none is open.

Global

The Global field allows direct entry of a global name (with or without subscripts) to restrict the Name List to the subscripts or globals at this level. The Name List will only be updated once this field is exited. This field can be automatically filled by navigating and selecting from the Global List. This field is only accessible if the chosen file type is held in the M database (not .VEX or .FRM).

Global List

The Global List displays a list of M globals or subscripts at the current level in the data hierarchy being navigated. The global hierarchy can be navigated down a level by double-clicking on an entry in this list and up a level by double-clicking on the <parent> entry. The current level is displayed in the Global field. This list is only accessible if the chosen file type is held in the M database (not .VEX or .FRM).

Directory

The Directory Path field shows the current drive and directory (folder) within the Windows file system. Files of the Type specified that are in this directory will be displayed in the Name List for selection. The drive and directory name can be entered manually or will be automatically changed by navigating using the Drives and Directories List. The Directories List will only be updated once this field is exited or the Enter key is pressed. This field is only accessible if the chosen file type is held in the Windows file system (.VEX and .FRM).

Directories

The Directories list displays a list of Windows directories (folders) at the current level in the directory hierarchy for the drive specified using the Drives drop-down list. This list can be navigated by double-clicking to descend a level, by double-clicking on the double-dot (..) to go up and by double-clicking on the single-dot (.) to return to the root. The current drive and directory is displayed in the Directory Path field. This list is only accessible if the chosen file type is held in the Windows file system (.VEX and .FRM).

Drive

The Drives drop-down list is used to choose a host drive from those available. This list is only accessible if the chosen file type is held in the Windows file system (.VEX and .FRM). This list will not necessarily contain all drives on your system (e.g. removable or floppy drives). If the drive you require is not present then use the Directory Path field to type the drive letter manually.

OK

The OK button is used to proceed with import from the selected files.

Cancel

The Cancel button closes the Import dialog without importing.

Browse

The Browse button opens the standard Windows file dialog, from which import files can be selected.


Import - Progress

This window is displayed after selection of an object or objects to import.

The following options are provided:

Progress Report

The Progress Report list displays the status of the import process. For some import types it first shows details of the object being imported and waits for confirmation before proceeding. If any errors occur they are listed here.

OK

The OK button is used to proceed with the import of the next selected object. If there are no objects left to import this closes the Import Progress Window and leaves the import session.

Cancel

The Cancel button cancels filing of the current imported object and proceeds to the next one, if several were selected.

Stop

The Stop button terminates the import session without filing the current imported object or processing any subsequent ones. The Import Progress Window is closed.

Print

The Print option is not yet available in MSM-Workstation. To obtain a copy of the report, select the text and copy it to the Windows clipboard using Ctrl+C. From there you can paste it into a document in another editor such as Notepad.

Overwrite

If the Overwrite check box is checked then the import process does not prompt when an imported object is about to replace an existing one. If it is unchecked, an attempt to import an object with the same name as an existing one will produce a dialog with options to Overwrite the existing object, Rename the new one or Skip import of the object.

Non-stop

If the Non-stop check box is checked then the import process does not stop in between importing objects but proceeds straight to the next in sequence. The process stops when all objects are imported or an error occurs.


Export

This dialog allows selection of an object or objects for export.

The following options are provided:

Type

The Type drop-down list allows selection of an object for export. In the current version of MSM-Workstation Type is restricted to Window.

Name

Enter the item for export or select from the list below

Name List

The Name List displays existing objects limited to the type chosen in the Type drop-down list and allows single or multiple selections to be made for export. These selections are placed into the Name field. Alternatively, double-clicking an entry in the list will immediately proceed to the Export Format Dialog and close the Export dialog.

Notes

The Notes field displays any descriptive information regarding the object.

Module

The Module field is used to enter the name of an existing module. This limits the list of objects displayed in the Name List to the components of that module which are of the chosen type.

Module List

The Module List displays a list of existing modules. Double-clicking on a module in this list will place the name of that module in the Module field and restrict the Name List to components of that module. This can be repeated to select modules which are components of other modules and so on. Clicking on <parent> in the list reverses the process and returns back up a level in a module hierarchy.

Export

The Export button is used to proceed to the Export Format Dialog.

Cancel

The Cancel button closes the Export dialog without exporting any objects.


Export - Format and Destination

This window is used to select the destination and format when exporting objects from the MSM-Workstation environment.

The following options are provided:

Type

The Type drop-down list allows selection of the format of the export. The folowing formats are supported - ViEW Exchange File (.VEX) and ViEW Exchange Global

Name

The Name field allows direct entry of the name of the export destination. This also can be filled by selecting from the Name List, or using the Browse button where available.

Name List

The Name List displays the list of existing objects of the type specified using the Type drop-down which are at this level in the hierarchy being navigated. The hierarchy is dependent also dependent on the type of file, .VEX files are held in the Windows file system whilst the other file type is held in M globals.

Global

The Global field allows direct entry of a global name (with or without subscripts) to restrict the Name List to the subscripts or globals at this level. The Name List will only be updated once this field is exited. This field can be automatically filled by navigating and selecting from the Global List. This field is only accessible if the chosen file type is held in the M database (not .VEX).

Global List

The Global List displays a list of M globals or subscripts at the current level in the data hierarchy being navigated. The global hierarchy can be navigated down a level by double-clicking on an entry in this list and up a level by double-clicking on the <parent> entry. The current level is displayed in the Global field. This list is only accessible if the chosen file type is held in the M database (not .VEX).

Directory

The Directory Path field shows the current drive and directory (folder) within the Windows file system. Files of the Type specified that are in this directory will be displayed in the Name List for selection. The drive and directory name can be entered manually or will be automatically changed by navigating using the Drives and Directories List. The Directories List will only be updated once this field is exited or the Enter key is pressed. This field is only accessible if the chosen file type is held in the Windows file system (.VEX).

Directories

The Directories List displays a list of Windows directories (folders) at the current level in the directory hierarchy for the drive specified using the Drives drop-down list. This list can be navigated by double-clicking to descend a level, by double- clicking on the double-dot (..) to go up and by double- clicking on the single-dot (.) to return to the root. The current drive and directory is displayed in the Directory Path field. This list is only accessible if the chosen file type is held in the Windows file system (.VEX).

Drive

The Drives drop-down list is used to choose a host drive from those available. This list is only accessible if the chosen file type is held in the Windows file system (.VEX). This list will not necessarily contain all drives on your system (e.g. removable or floppy drives). If the drive you require is not present then use the Directory Path field to type the drive letter manually.

OK

The OK button is used to proceed with export to the selected file.

Cancel

The Cancel button closes the Export Format dialog without exporting.


A name must be specified for the object that is being created.  Enter a name for the new file.


Select the type of file to create.  All types except Globals and Host File can be created. Create a new global using M commands in the Command Window. Use Windows facilities to create a new host file.


To start with a copy of an existing object of the same type, check this box. A File/Open dialog will appear when you press OK, so you can select an object of the same type from which to copy.


Click to create the object.


Click to cancel.


Enter the filename or select from the list below.  If you enter a partial name, the system displays matches in the list below.  Matches also are displayed as you type in the Name box.


Select one or more files to be opened. Doubleclick to open one immediately


Enter the type of file to be opened.  When Type is changed, the system displays items of the selected type.  If Type is Global, Routine, or Source, the Database dropdown is enabled.  Browse is enabled if Type is Host File.


Select the database with which you wish to work.  This is enabled if Type is Source, Global, or Routine.


Check to open in read-only mode.  This feature is enabled only for textual elements, and not for GUI elements.


Click to open the object.


Click to cancel the open.


Click to browse host files.  This is enabled if Type is Host File.


The Notes field displays any descriptive information regarding the object entered by the user. For Sources and Routines, Notes will display the first line.


Enter the name of the item to be deleted or select from the list below.  If you enter a partial name, the system displays matches in the list below.  Matches also are displayed as you type in the Name box.


Select one or more items to be deleted. Doubleclick to delete one immediately.


Select the type of item to be deleted.  When Type is changed, the system displays items of the selected type.  If Type is Global, Routine, or Source, the Database dropdown is enabled.


Select the database with which you wish to work.


The Notes field displays any descriptive information regarding the object entered by the user.


Click to delete the item(s).


Click to exit the dialog without deleting.


Delete the file. This is NOT reversible with the Undo feature.


Delete this and all the remaining selected files. This is NOT reversible with the Undo feature.


Do not delete this file. Proceed to the next in the selection, if any.


Cancel this delete and any still unprocessed in the selection.


The Progress Report list displays the status of the compilation process. It shows the object being compiled, the names of the M routines produced and the name of any data structures produced. If any errors occur they are listed here. Compilation reports for successive objects are appended, allowing review at the end of the process.


If the Non-stop check box is checked then the compile process does not stop in between compiling objects but proceeds straight to the next in sequence. Compilation reports are appended, allowing review at the end of the process, which stops when all objects are compiled or a compilation error occurs.


The OK button is used to proceed with the compilation of the next selected object. Compilation reports are appended, allowing review at the end of the process. If there are no objects left to compile this closes the Compile Progress Window. You may wish to review the report on the compilation before dismissing it.


The Cancel button closes the Compile Progress Window and terminates the compile session without compiling any more selected objects.


The Print option is not yet available in MSM-Workstation. To obtain a copy of the report, select the text and copy it to the Windows clipboard using Ctrl+C. From there you can paste it into a document in another editor such as Notepad, and print it.


The Name field is used to enter the name of the object to be tested.  If you enter a partial name, the system displays matches in the list below.  Matches also are displayed as you type in the Name box.


The Name List displays existing objects limited to the type chosen in the Type drop-down list and allows a single selection to be made for testing. This selection is placed into the Name field. Alternatively, double-clicking an entry in the list will immediately test the object and close the Test dialog.


The Type drop-down list selects the type of object to be tested.


The Notes field displays any descriptive information regarding the object.


The OK button is used to proceed with the test running of the object.


The Cancel button closes the Test dialog without starting a test.


The Trace list displays trace information such as which windows are being run. Much of this information is only generated if the window or module had its CompTrace property set to Yes when it was compiled. This list is added to as the test progresses. Above the list is displayed an indication of the current ESTART depth, which is an indication of the nesting level of %%DoWin macro calls.


The Start button is used to proceed with the test running of the object. Once the test is started this button changes to a Stop button allowing the test to be terminated. When the testing is finished or has been terminated, this changes to a Restart button allowing the test to be restarted.


The Close button closes the Test Progress Window and terminates the testing session. This button becomes inactive once the test has been started.


This checkbox appears only when testing a Routine or Source. If set, the object under test is provided with a console window.


Select a debug option.  The GUI debugger environment may be invoked on start, on errors or BREAK commands, or never.


If this check box is checked (the default) then the Test Progress Window is miminized when the test is initiated. It can be restored on demand. If this box is cleared then the window remains visible and the test progress can be monitored.


Enter the full path to the .EXE file to be created, including drive. Names beginning MSMW* are reserved for Micronetics.


Click to browse files to select or name an .EXE file


Select to build a debugging version, which will contain source code instead of pcode, and will run in the GUI debugger environment.


Click to build an .EXE file


Click to abandon the operation.


Click to specify options and settings for the .EXE file.


Identifies the application.   The Name is used beneath the Owner to form a Registry key.  The default title on message boxes is the Name, as is the heading on the License Information window (if selected for display).  The default Name is the name of the Application object.


Identifies the originator and vendor of the application.  The Owner is used above Name in the Registry and elsewhere to identify the vendor. Because it is used as a registry key, avoid names which may be used by other vendors, such as "Micronetics" or "Microsoft."  Choose with care.


Used as a default for the title bar of character windows.  The default Title is the same as the Name.


Specifies the icon to be placed in the EXE. Name of an .ICO file, including full path.  If the file can be located, theicon is shown in the lower left corner of the tab. The icon appears in directory listings containing the EXE, and in the system menu position of windows when the application is running. It also represents the application on the taskbar. The icon is embedded within the EXE, and the .ICO file does not need to be shipped with the application.


Locate a .ICO file


Description of the application or other notes.  No run-time function.


Allow the EXE to be started as an interactive application.  Select this setting to build an interactive application, whether using a GUI or character interface.  This is the default selection.


Allow the EXE to be started as an Automation server.  You can build an application that runs in both Automation Server and Interactive mode, modifying behavior appropriately according to the value of the %%IsOLEserver macro.


Click to accept the settings and close the dialog.


Click to discard changes to the settings and close the dialog.


Enter the major version number.


Enter the minor version number.


Enter the revision number.


Enter the build number.


Automatically increment the existing build number before the EXE is created.


Set an optional description of the build. Choose from the list or enter your own text.


Click to accept the settings and close the dialog.


Click to discard changes to the settings and close the dialog.


Check this box if the application is to connect to an MSM-Server system during startup. Establishing a connection in this way will give the application a $JOB value assigned by the server.


Specify the moniker to be bound to the database connection. The user will be prompted at application startup to identify the server if it is not already identified in the registry (because it was previously set in the registry at installation). Choose from the list or enter text that is valid as a moniker name. Application logic will normally use the moniker to establish global translations and routine search paths, or to switch to the database. This eliminates the need for the EXE to be aware of the server's UCI and volume group names.


Select to allow continuation even if startup server connection fails.  Connection to a server can be required or optional.  If a server is specified but connection is optional, the application is a client that may optionally run in "local mode."  The developer must provide for subsequent behavior.


Open a console window at startup. If checked, console window device 1 will open and be returned as $PRINCIPAL. Otherwise $PRINCIPAL will be 46, the null device.


Display a built-in License Information window on startup


Click to accept the settings and close the dialog.


Click to discard changes to the settings and close the dialog.


The contents of this field are used in combination with the developer's Workstation registration details to derive a sixteen-character Product ID. The EXE is marked with this code. It is listed at the end of the Make-EXE Progress report. It is available to the end-user of the EXE in the Comments field on the Version tab of the EXE's properties. An example would be 7VQY-HTUQ-N67G-S24E. Using the same Product Key with the same registration yields the same Product ID. MSM-Server managers can control the access of Workstation applications to their databases based on Product ID. Keep product keys private to avoid the possibility of impersonation.


Always use the internal license even if the external license of a registered MSM-Workstation user (a LICENSE.MSM file) is present in the same directory as the EXE.


Select to mark the application as a demonstration when running with the embedded license.


Check to set expiration date for the application when running with the embedded license.  Checking this setting makes a date field visible and allows entry of a date after which the application cannot be used.  Warning messages are displayed to the user starting one week prior to the expiration date.  If the developer's Workstation registration has an expiration date, the Expiration Date check box is automatically selected, and every application built will expire no later than the expiration date of the developer's license.


Specify date for expiration of the application when running with the embedded license.


An external license is required. The end-user of the EXE must own a LICENSE.MSM file, generally as a result of registering their own copy of MSM-Workstation.


Click to accept the settings.


Click to discard changes to the settings.


Optional name for the volume group of the embedded read-only application database. Three UPPERCASE characters.  Use this setting only if the application needs a specific UCI and VG name for its database. Leave empty (the default) to avoid conflicts with explicitly named VGs on local and network databases, and use the %App moniker to access the application database.


Number of 1K cache buffers to obtain from Windows. More buffers may increase the effectiveness of database caching. The memory is obtained from Windows during application startup, so too large a value may impact Windows performance. Can be overridden at EXE startup using the +BUFFERS switch.


Size for default in-memory database bound to %Temp moniker. The memory is obtained from Windows during application startup, so too large a value may impact Windows performance.


Partition size. Partition memory is obtained from Windows in stages, as the M job's requirements increase. This setting fixes the point at which no further memory will be requested, and an M error will be raised instead. Can be overridden at EXE startup using the +PARTSIZE switch.


Stack size.  This setting affects the maximum execution nesting depth of the M job. The memory is obtained from Windows during application startup. Can be overridden at EXE startup using the +STACKSIZE switch.


Stap size.  This setting affects the M job's ability to evaluate nested expressions and process long intermediate results. The memory is obtained from Windows during application startup. Can be overridden at EXE startup using the +STAPSIZE switch.


Use an .INI file instead of the Registry to store application parameters.


Select a name for the .INI file (the default is the same name as the EXE file).


Select to place the .INI file in the directory containing the EXE rather than the system's Windows directory


Generate the smallest possible EXE file. If selected this will reduce the size of the EXE by accurately calculating the size of all the routines before creating the EXE. This will slow down the make EXE stage by about 40%, so you may want to reserve this option for production of the final build of the EXE.

When this is not selected Workstation uses an estimate to determine the size of routines and globals to be placed in the application database. This can result in the EXE being up to about 30% larger than necessary.


Click to accept the settings.


Click to discard changes to the settings.


The Progress Report list displays the status of the Make EXE process.


Click to close the Output window after reviewing the report as necessary.


Enter the name of the item to be printed or select from the list below.  If you enter a partial name, the system displays matches in the list below.  Matches also are displayed as you type in the Name box.


Select one or more items to be printed. Doubleclick to print one immediately.


Select the type of item to be printed.


Select the database with which you wish to work.


The Notes field displays any descriptive information regarding the object entered by the user.


Click to print the item(s).


Click to exit the dialog without printing.


The Type drop-down list allows selection of the format type of the import source. The following types are supported - Visual Basic Form File (.FRM), ViEW Exchange File (.VEX), ViEW Exchange Global and MWAPI Global Structure. Note that some types allow each file to contain multiple objects. For example, a single .VEX file may contain many windows.


The Name field allows direct entry of the filenames to import from. It can be filled by navigating and selecting from the Name List, or using the Browse button for file-type sources.


The Name List displays the list of available importable objects of the type specified using the Type drop-down which are at this level in the hierarchy being navigated. The hierarchy is dependent also dependent on the type of file, .VEX and .FRM files are held in the Windows file system whilst the other file types are held in M globals. Multiple selections are permitted.


The Add to Module checkbox can be checked to add the imported objects to the currently open and active module or application (the last one which had the focus). This checkbox is inactive if none is open.


The Global field allows direct entry of a global name (with or without subscripts) to restrict the Name List to the subscripts or globals at this level. The Name List will only be updated once this field is exited. This field can be automatically filled by navigating and selecting from the Global List. This field is only accessible if the chosen file type is held in the M database (not .VEX or .FRM).


The Global List displays a list of M globals or subscripts at the current level in the data hierarchy being navigated. The global hierarchy can be navigated down a level by double-clicking on an entry in this list and up a level by double-clicking on the <parent> entry. The current level is displayed in the Global field. This list is only accessible if the chosen file type is held in the M database (not .VEX or .FRM).


The Directory Path field shows the current drive and directory (folder) within the Windows file system. Files of the Type specified that are in this directory will be displayed in the Name List for selection. The drive and directory name can be entered manually or will be automatically changed by navigating using the Drives and Directories List. The Directories List will only be updated once this field is exited or the Enter key is pressed. This field is only accessible if the chosen file type is held in the Windows file system (.VEX and .FRM).


The Directories list displays a list of Windows directories (folders) at the current level in the directory hierarchy for the drive specified using the Drives drop-down list. This list can be navigated by double-clicking to descend a level, by double-clicking on the double-dot (..) to go up and by double-clicking on the single-dot (.) to return to the root. The current drive and directory is displayed in the Directory Path field. This list is only accessible if the chosen file type is held in the Windows file system (.VEX and .FRM).


The Drives drop-down list is used to choose a host drive from those available. This list is only accessible if the chosen file type is held in the Windows file system (.VEX and .FRM). This list will not necessarily contain all drives on your system (e.g. removable or floppy drives). If the drive you require is not present then use the Directory Path field to type the drive letter manually.


The OK button is used to proceed with import from the selected files.


The Cancel button closes the Import dialog without importing.


The Browse button opens the standard Windows file dialog, from which import files can be selected.


The Progress Report list displays the status of the import process. For some import types it first shows details of the object being imported and waits for confirmation before proceeding. If any errors occur they are listed here.


The OK button is used to proceed with the import of the next selected object. If there are no objects left to import this closes the Import Progress Window and leaves the import session.


The Cancel button cancels filing of the current imported object and proceeds to the next one, if several were selected.


The Stop button terminates the import session without filing the current imported object or processing any subsequent ones. The Import Progress Window is closed.


The Print option is not yet available in MSM-Workstation. To obtain a copy of the report, select the text and copy it to the Windows clipboard using Ctrl+C. From there you can paste it into a document in another editor such as Notepad.


If the Overwrite check box is checked then the import process does not prompt when an imported object is about to replace an existing one. If it is unchecked, an attempt to import an object with the same name as an existing one will produce a dialog with options to Overwrite the existing object, Rename the new one or Skip import of the object.


If the Non-stop check box is checked then the import process does not stop in between importing objects but proceeds straight to the next in sequence. The process stops when all objects are imported or an error occurs.


The Type drop-down list allows selection of an object for export. In the current version of MSM-Workstation Type is restricted to Window.


Enter the item for export or select from the list below


The Name List displays existing objects limited to the type chosen in the Type drop-down list and allows single or multiple selections to be made for export. These selections are placed into the Name field. Alternatively, double-clicking an entry in the list will immediately proceed to the Export Format Dialog and close the Export dialog.


The Notes field displays any descriptive information regarding the object.


The Module field is used to enter the name of an existing module. This limits the list of objects displayed in the Name List to the components of that module which are of the chosen type.


The Module List displays a list of existing modules. Double-clicking on a module in this list will place the name of that module in the Module field and restrict the Name List to components of that module. This can be repeated to select modules which are components of other modules and so on. Clicking on <parent> in the list reverses the process and returns back up a level in a module hierarchy.


The Export button is used to proceed to the Export Format Dialog.


The Cancel button closes the Export dialog without exporting any objects.


The Type drop-down list allows selection of the format of the export. The folowing formats are supported - ViEW Exchange File (.VEX) and ViEW Exchange Global


The Name field allows direct entry of the name of the export destination. This also can be filled by selecting from the Name List, or using the Browse button where available.


The Name List displays the list of existing objects of the type specified using the Type drop-down which are at this level in the hierarchy being navigated. The hierarchy is dependent also dependent on the type of file, .VEX files are held in the Windows file system whilst the other file type is held in M globals.


The Global field allows direct entry of a global name (with or without subscripts) to restrict the Name List to the subscripts or globals at this level. The Name List will only be updated once this field is exited. This field can be automatically filled by navigating and selecting from the Global List. This field is only accessible if the chosen file type is held in the M database (not .VEX).


The Global List displays a list of M globals or subscripts at the current level in the data hierarchy being navigated. The global hierarchy can be navigated down a level by double-clicking on an entry in this list and up a level by double-clicking on the <parent> entry. The current level is displayed in the Global field. This list is only accessible if the chosen file type is held in the M database (not .VEX).


The Directory Path field shows the current drive and directory (folder) within the Windows file system. Files of the Type specified that are in this directory will be displayed in the Name List for selection. The drive and directory name can be entered manually or will be automatically changed by navigating using the Drives and Directories List. The Directories List will only be updated once this field is exited or the Enter key is pressed. This field is only accessible if the chosen file type is held in the Windows file system (.VEX).


The Directories List displays a list of Windows directories (folders) at the current level in the directory hierarchy for the drive specified using the Drives drop-down list. This list can be navigated by double-clicking to descend a level, by double- clicking on the double-dot (..) to go up and by double- clicking on the single-dot (.) to return to the root. The current drive and directory is displayed in the Directory Path field. This list is only accessible if the chosen file type is held in the Windows file system (.VEX).


The Drives drop-down list is used to choose a host drive from those available. This list is only accessible if the chosen file type is held in the Windows file system (.VEX). This list will not necessarily contain all drives on your system (e.g. removable or floppy drives). If the drive you require is not present then use the Directory Path field to type the drive letter manually.


The OK button is used to proceed with export to the selected file.


The Cancel button closes the Export Format dialog without exporting.


Edit Dialogs

Find

Replace


Find

This dialog is used for text search operations.

The following options are provided:

Find What

Enter a string or pattern, or select a previous search from the list.

Match case

Select to force exact case matching.

Find whole words only

Select to match whole words only.

Use pattern matching

Select to allow use of a search pattern containing "*" and "?" wild cards.  In addition, the Find What box may start with a "?" followed by any M pattern-match expression to enable more advanced search capabilities.

When you use pattern matching, the pattern uses all uppercase characters if the Match Case box is not checked.

Direction

Select the search direction.

Wrap-around

Select to continue from the beginning when the end is reached.

Find Next

Find the next occurence of the specified search string.

Cancel

Close this window.

Replace

Switch to the find-and- replace window.


Replace

This dialog is used for text search and replace operations.

The following options are provided:

Find What

Enter a string or pattern, or select a previous search from the list.

ReplaceWith

Enter a string, or select a previous replacement from the list.

Match case

Select to force exact case matching.

Find whole words only

Select to match whole words only.

Use pattern matching

Select to allow use of a search pattern containing "*" and "?" wild cards.  In addition, the Find What box may start with a "?" followed by any M pattern-match expression to enable more advanced search capabilities.

When you use pattern matching, the pattern uses all uppercase characters if the Match Case box is not checked.

Direction

Select the search direction.

Wrap-around

Select to continue from the beginning when the end is reached.

Find Next

Click to find the next occurrence of the search string or pattern.

Cancel

Click to close the window.

Replace

Click to perform one replace operation.

Replace All

Click to replace all occurrences.


Enter a string or pattern, or select a previous search from the list.


Select to force exact case matching.


Select to match whole words only.


Select to allow use of a search pattern containing "*" and "?" wild cards.  In addition, the Find What box may start with a "?" followed by any M pattern-match expression to enable more advanced search capabilities.

When you use pattern matching, the pattern uses all uppercase characters if the Match Case box is not checked.


Select the search direction.


Select to continue from the beginning when the end is reached.


Find the next occurence of the specified search string.


Close this window.


Switch to the find-and- replace window.


Enter a string or pattern, or select a previous search from the list.


Enter a string, or select a previous replacement from the list.


Select to force exact case matching.


Select to match whole words only.


Select to allow use of a search pattern containing "*" and "?" wild cards.  In addition, the Find What box may start with a "?" followed by any M pattern-match expression to enable more advanced search capabilities.

When you use pattern matching, the pattern uses all uppercase characters if the Match Case box is not checked.


Select the search direction.


Select to continue from the beginning when the end is reached.


Click to find the next occurrence of the search string or pattern.


Click to close the window.


Click to perform one replace operation.


Click to replace all occurrences.


Element Dialogs

Definition

Actions

Appearance - Window

Appearance - Control

Order

Menus

Menus - Item Options

Choices


Definition

Definition dialogs for built-in controls are stored in the Definition Dialogs section.


Actions

The Actions dialog is used for entering action logic for the events of a module or application. Logic for a window is entered using its Window Browser. The Actions dialog is a non-modal window. It can be left open and will automatically be loaded with the event and logic information when an appropriate object is selected. It can be displayed or hidden from the View menu.

The following options are provided:

Event

The Event list displays the events which are available for the currently focused object. Events which have action logic defined have the number of lines and the first line of that logic displayed to the right-hand side of the event name. Clicking an entry in this list displays the associated action logic in the Action document box. Double-clicking an entry invokes the advanced Code Editor to allow editing of the logic.

Include low-level events

There are no low-level events on modules or applications, so this checkbox has no effect.

Action

The Action document box shows the action logic associated with the event selected using the Event list and allows simple text editing capabilities.

Disable

The Disable checkbox is checked to make the selected event initially disabled when the object is first created, setting the Enable property to false.

Filter

The Filter field is not used.

Save

The Save button is used to save any changes made to event action logic.

Cancel

The Cancel button is used to cancel any changes made to event action logic.

Close

The Close button is used to close the Actions Dialog.


Appearance - Window

The Window Appearance Dialog allows the user to modify the appearance of the selected GUI window.

The following options are provided:

Element

The Element drop down list allows the selection of Background, Controls or Labels. The selection determines whether the settings for font and color apply to the window itself, for controls placed on the window, or for those controls' labels.  The Font group, which allows the setting of the default font characteristics for controls created on the selected window, is only active when Controls is chosen from the Element drop-down list.

Face

The Face drop-down list allows selection of a face for the default font used by controls created on the selected window.  Fonts available on the system are listed.

Points

The Points drop-down list allows selection of a point size for the default font used by controls created on the selected window.  Sizes are listed for the selected Face. Larger values can be set using the Property Bar.

Bold

Check the Bold checkbox to give a bold style to the default font used by controls created on the selected window.

Italic

Check the Italic checkbox to give an italic style to the default font used by controls created on the selected window.

Underline

Check the Underline checkbox to give an underline style to the default font used by controls created on the selected window.

Default

Use MWAPI rules to inherit defaults from parent or display.

Color/Font Sample

A sample of the closest match to the chosen font, size and style, using the chosen colors, is displayed in the Color/Font Sample field.

Color Palette

The Color Palette button displays the Color Palette to allow the changing of default colors. If the Element selection is Background then the color palette is used to set the window background color. If the Element selection is Controls then the color palette is used to set the default foreground and background colors for controls created on the window, using left and right clicks. If the Element selection is Labels then the color palette is used to set the default foreground and background colors for the labels of those controls, using left and right clicks. The chosen color is displayed in the Color/Font Sample field.

OK

The OK button applies the changes made within the Window Appearance Dialog and exits the dialog.

Cancel

The Cancel button closes the Window Appearance Dialog without applying any changes.


Appearance - Control

The Control Appearance Dialog allows the user to modify the appearance of the selected GUI control.

The following options are provided:

Element

The Element drop down list allows the selection of Control or Label The Label option is available for those controls which have a label. The selection determines whether the settings for font and color apply to the control itself or its text label.

Face

The Face drop-down list allows selection of a font face.  Fonts available on the system are listed.

Points

The Points drop-down list allows selection of a point size.  Sizes are listed for the selected Face. Larger values can be set using the Property Bar.

Bold

Check the Bold checkbox to give the selected font a bold style.

Italic

Check the Italic checkbox to give the selected font an italic style.

Underline

Check the Underline checkbox to give the selected font an underline style.

Default

Use MWAPI rules to inherit defaults from parent or display.

Color/Font Sample

A sample of the closest match to the chosen font, size and style, using the chosen colors, is displayed in the Color/Font Sample field.

Framed

The Framed checkbox is active if the control is of a type which can be framed, and its state determines whether or not such a frame is required.

Color Palette

The Color Palette button displays the Color Palette to allow the changing of colors. If the Element selection is Control then the color palette is used to set the default foreground and background colors for the control, using left and right clicks. If the Element selection is Label then the color palette is used to set the default foreground and background colors for the control's label, using left and right clicks. The chosen colors are displayed in the Color/Font Sample field.

OK

The OK button applies the changes made within the Control Appearance Dialog and exits the dialog.

Cancel

The Cancel button closes the Control Appearance Dialog without applying any changes.


Order

The Order Editor Dialog allows the definition of the <TAB> order for the focused window, setting the NextControl. properties of the controls selected for ordering.

The following options are provided:

Order

The Order is a list displaying the names of the controls within the window which have already been assigned a <TAB> order. They are listed from first to last down the list, starting when possible with the control set to be the window's NextControl. Selections can be made from the list for manipulation or removal.

Up

The Move Up button allows single or multiple contiguous selected controls to be moved up the Order.

Down

The Move Down button allows single or multiple contiguous selected controls to be moved down the Order.

Unordered

The Unordered drop-down contains a name list of those controls which are not in the <TAB> order sequence. A selection made from the list is transferred to the Order using the Move button.

Initialization

The Initialization radio button set allows selection of a default order for initialization of the Order.

Initialize

The Initialize button loads the Order using the default order specified by the Initialization Order radio button set.

OK

The OK button applies the changes made using the Order Editor Dialog to the focused window.

Cancel

The Cancel button closes the Order Editor Dialog without updating the focused window.

Move

The Move button moves the selected control from the Unordered list to the Order.

Remove

The Remove button removes the selected controls from the Order.


Window Reference - Element Dialogs - Menus
Menus

The menu editor enables easy definition and editing of the menu entries associated with a window. It allows rapid submenu level and position changes and simple addition of action logic.

The following options are provided:

Structure

This box displays the menu entries with submenus indented below the higher level menu entries. It allows the selection of menu entries for manipulation and removal.  Select item to alter, move or delete. Ranges may be moved or deleted.

Up

Click to move the selected item(s) up the structure

Left

Click to decrease the indent of the selected item(s)

Right

Click to increase the indent of the selected item(s)

Down

Click to move the selected item(s) down the structure

Insert

Click to insert a blank item into the menu structure before the current selection

Delete

Click to delete the selected item(s) from the menu structure

Next

Click to advance to the next item on the menu structure

Item

This box displays the text of the currently selected menu entry and allows editing. The & character denotes that the character which follows is a menu mnemonic and will be underlined and allow keyboard access to the menu entry. Entering a - (the minus character) as the menu entry text results in the generation of a menu separator bar. A leading space increases the indentation level. Changes will be applied to the Structure list when the user moves away from this field.

Popup only

Check this to set the selected top-level menu not to display on the menubar

Inactive

Check this to make the menu entry initially inactive. This sets the Active property to No.

Message

Enter a message for display on the status-bar when the menu item is highlighted

Options

Click to open the Menu Item Options dialog, to set accelerator, marker and Application ID on the selected menu item.

Action

This box is used to display and edit the action logic executed when the menu item is selected. Use the Editor button to access the syntax-highlighting editor.

OK

Click to accept all changes made within the Menu Editor, rebuild the window with the new menu structure, and exit the Menu Editor.

Cancel

Click to close the Menu Editor without making any changes


Menus - Item Options

The Menu Item Options dialog allows the entry and editing of the options associated with a menu entry and is accessed from the Menu Editor dialog.

The following options are provided:

Text

The Text field displays the menu entry text and is not editable on this dialog.

Application ID

The Application ID field is for provided for use by the application programmer. The value entered here is set into the menu entry's Appld property.

It is recommended that you do not begin a value with @ or include the period (.) or comma (,) in it, as these may interfere with your use of certain menu-related macros.

Accelerator Key

The Accelerator Key drop-down list allows selection of a key combination which can be used to select the menu choice without having to use the menu structure. This sets the menu entry's Accelerator property.

Currently

The Current Accelerator field shows the currently selected accelerator key sequence.

Marking Symbol

The Marking Symbol drop-down list allows selection of a marker symbol to display beside the menu text. The choices are check, bullet, diamond or custom.

Custom

When the marking symbol is set to custom, this defines the name of the bitmap file to be used.

Browse

Click this to browse for a marking symbol.

Initially Marked

The Initially Marked checkbox is checked to mark the menu entry with the symbol chosen using the Marking Symbol drop-down list.

OK

The OK button applies the changes made within the Menu Item Options Dialog to the selected menu entry.

Cancel

The Cancel button closes the Menu Item Options Dialog without updating the menu entry.


Window Reference - Element Dialogs - Choices
Choices

The choice editor enables easy definition and editing of fixed choice entries associated with the list type controls and radio buttons, allowing rapid choice position changes.

The following options are provided:

Choices

The Choices list box displays the choices. It allows the selection of choice entries for manipulation and removal.

Up

The Move Up button allows single or multiple contiguous selected choice entries to be moved up the Choices list.

Down

The Move Down button allows single or multiple contiguous selected choice entries to be moved down the Choices list.

Insert

The Insert button inserts a blank choice entry before the currently selected choice entry.

Delete

The Delete button deletes the selected choice entries from the Choices list.

Next

The Next button moves to the next choice entry in the Choices list. If the selection is currently at the last choice entry it inserts a blank choice entry at the next position.

Item

The Item field displays the text of the currently selected choice entry and allows editing. New choice entries can be added by using the Insert button, or the Next button when it is at the end of the list, and then typing the new choice entry. To enter a tab for a list, use Ctrl+T.  A newly added choice entry will be added to the Choices list when the user moves away from this field.

Application ID

The Application ID field is for provided for use by the application programmer. The value entered here is set into the choice's AppId property.

Inactive

The Inactive checkbox determines whether a choice initially has its Active property false, making it unavailable for selection.

OK

The OK button applies the changes made within the Choice Editor Dialog to the control.

Cancel

The Cancel button closes the Choice Editor dialog without updating the control's choices.


The Event list displays the events which are available for the currently focused object. Events which have action logic defined have the number of lines and the first line of that logic displayed to the right-hand side of the event name. Clicking an entry in this list displays the associated action logic in the Action document box. Double-clicking an entry invokes the advanced Code Editor to allow editing of the logic.


There are no low-level events on modules or applications, so this checkbox has no effect.


The Action document box shows the action logic associated with the event selected using the Event list and allows simple text editing capabilities.


The Disable checkbox is checked to make the selected event initially disabled when the object is first created, setting the Enable property to false.


The Filter field is not used.


The Save button is used to save any changes made to event action logic.


The Cancel button is used to cancel any changes made to event action logic.


The Close button is used to close the Actions Dialog.


The Element drop down list allows the selection of Background, Controls or Labels. The selection determines whether the settings for font and color apply to the window itself, for controls placed on the window, or for those controls' labels.  The Font group, which allows the setting of the default font characteristics for controls created on the selected window, is only active when Controls is chosen from the Element drop-down list.


The Face drop-down list allows selection of a face for the default font used by controls created on the selected window.  Fonts available on the system are listed.


The Points drop-down list allows selection of a point size for the default font used by controls created on the selected window.  Sizes are listed for the selected Face. Larger values can be set using the Property Bar.


Check the Bold checkbox to give a bold style to the default font used by controls created on the selected window.


Check the Italic checkbox to give an italic style to the default font used by controls created on the selected window.


Check the Underline checkbox to give an underline style to the default font used by controls created on the selected window.


Use MWAPI rules to inherit defaults from parent or display.


A sample of the closest match to the chosen font, size and style, using the chosen colors, is displayed in the Color/Font Sample field.


The Color Palette button displays the Color Palette to allow the changing of default colors. If the Element selection is Background then the color palette is used to set the window background color. If the Element selection is Controls then the color palette is used to set the default foreground and background colors for controls created on the window, using left and right clicks. If the Element selection is Labels then the color palette is used to set the default foreground and background colors for the labels of those controls, using left and right clicks. The chosen color is displayed in the Color/Font Sample field.


The OK button applies the changes made within the Window Appearance Dialog and exits the dialog.


The Cancel button closes the Window Appearance Dialog without applying any changes.


The Element drop down list allows the selection of Control or Label The Label option is available for those controls which have a label. The selection determines whether the settings for font and color apply to the control itself or its text label.


The Face drop-down list allows selection of a font face.  Fonts available on the system are listed.


The Points drop-down list allows selection of a point size.  Sizes are listed for the selected Face. Larger values can be set using the Property Bar.


Check the Bold checkbox to give the selected font a bold style.


Check the Italic checkbox to give the selected font an italic style.


Check the Underline checkbox to give the selected font an underline style.


Use MWAPI rules to inherit defaults from parent or display.


A sample of the closest match to the chosen font, size and style, using the chosen colors, is displayed in the Color/Font Sample field.


The Framed checkbox is active if the control is of a type which can be framed, and its state determines whether or not such a frame is required.


The Color Palette button displays the Color Palette to allow the changing of colors. If the Element selection is Control then the color palette is used to set the default foreground and background colors for the control, using left and right clicks. If the Element selection is Label then the color palette is used to set the default foreground and background colors for the control's label, using left and right clicks. The chosen colors are displayed in the Color/Font Sample field.


The OK button applies the changes made within the Control Appearance Dialog and exits the dialog.


The Cancel button closes the Control Appearance Dialog without applying any changes.


The Order is a list displaying the names of the controls within the window which have already been assigned a <TAB> order. They are listed from first to last down the list, starting when possible with the control set to be the window's NextControl. Selections can be made from the list for manipulation or removal.


The Move Up button allows single or multiple contiguous selected controls to be moved up the Order.


The Move Down button allows single or multiple contiguous selected controls to be moved down the Order.


The Unordered drop-down contains a name list of those controls which are not in the <TAB> order sequence. A selection made from the list is transferred to the Order using the Move button.


The Initialization radio button set allows selection of a default order for initialization of the Order.


The Initialize button loads the Order using the default order specified by the Initialization Order radio button set.


The OK button applies the changes made using the Order Editor Dialog to the focused window.


The Cancel button closes the Order Editor Dialog without updating the focused window.


The Move button moves the selected control from the Unordered list to the Order.


The Remove button removes the selected controls from the Order.


This box displays the menu entries with submenus indented below the higher level menu entries. It allows the selection of menu entries for manipulation and removal.  Select item to alter, move or delete. Ranges may be moved or deleted.


Click to move the selected item(s) up the structure


Click to decrease the indent of the selected item(s)


Click to increase the indent of the selected item(s)


Click to move the selected item(s) down the structure


Click to insert a blank item into the menu structure before the current selection


Click to delete the selected item(s) from the menu structure


Click to advance to the next item on the menu structure


This box displays the text of the currently selected menu entry and allows editing. The & character denotes that the character which follows is a menu mnemonic and will be underlined and allow keyboard access to the menu entry. Entering a - (the minus character) as the menu entry text results in the generation of a menu separator bar. A leading space increases the indentation level. Changes will be applied to the Structure list when the user moves away from this field.


Check this to set the selected top-level menu not to display on the menubar


Check this to make the menu entry initially inactive. This sets the Active property to No.


Enter a message for display on the status-bar when the menu item is highlighted


Click to open the Menu Item Options dialog, to set accelerator, marker and Application ID on the selected menu item.


This box is used to display and edit the action logic executed when the menu item is selected. Use the Editor button to access the syntax-highlighting editor.


Click to accept all changes made within the Menu Editor, rebuild the window with the new menu structure, and exit the Menu Editor.


Click to close the Menu Editor without making any changes


The Text field displays the menu entry text and is not editable on this dialog.


The Application ID field is for provided for use by the application programmer. The value entered here is set into the menu entry's Appld property.

It is recommended that you do not begin a value with @ or include the period (.) or comma (,) in it, as these may interfere with your use of certain menu-related macros.


The Accelerator Key drop-down list allows selection of a key combination which can be used to select the menu choice without having to use the menu structure. This sets the menu entry's Accelerator property.


The Current Accelerator field shows the currently selected accelerator key sequence.


The Marking Symbol drop-down list allows selection of a marker symbol to display beside the menu text. The choices are check, bullet, diamond or custom.


When the marking symbol is set to custom, this defines the name of the bitmap file to be used.


Click this to browse for a marking symbol.


The Initially Marked checkbox is checked to mark the menu entry with the symbol chosen using the Marking Symbol drop-down list.


The OK button applies the changes made within the Menu Item Options Dialog to the selected menu entry.


The Cancel button closes the Menu Item Options Dialog without updating the menu entry.


The Choices list box displays the choices. It allows the selection of choice entries for manipulation and removal.


The Move Up button allows single or multiple contiguous selected choice entries to be moved up the Choices list.


The Move Down button allows single or multiple contiguous selected choice entries to be moved down the Choices list.


The Insert button inserts a blank choice entry before the currently selected choice entry.


The Delete button deletes the selected choice entries from the Choices list.


The Next button moves to the next choice entry in the Choices list. If the selection is currently at the last choice entry it inserts a blank choice entry at the next position.


The Item field displays the text of the currently selected choice entry and allows editing. New choice entries can be added by using the Insert button, or the Next button when it is at the end of the list, and then typing the new choice entry. To enter a tab for a list, use Ctrl+T.  A newly added choice entry will be added to the Choices list when the user moves away from this field.


The Application ID field is for provided for use by the application programmer. The value entered here is set into the choice's AppId property.


The Inactive checkbox determines whether a choice initially has its Active property false, making it unavailable for selection.


The OK button applies the changes made within the Choice Editor Dialog to the control.


The Cancel button closes the Choice Editor dialog without updating the control's choices.


Tool Dialogs

Grid

Preferences - General

Preferences - Editor

Defaults - Windows

Defaults - Controls

ActiveX Controls

SQL Settings


Grid

The Grid Options Dialog is used for setting the sizing grid options for the currently focused window.

The following options are provided:

Display Grid

The Display Grid checkbox is checked to display a grid on the focused window. It corresponds to the GridOn property.

Snap to Grid

The Snap to Grid checkbox is checked to enable the snapping of controls to the grid on the focused window. It corresponds to the GridSnap property.

Height

The Height spin control allows selection of the grid height. It corresponds to the GridHeight property.

Width

The Width spin control allows selection of the grid width. It corresponds to the GridWidth property.

Units

The Units drop-down list allows selection of the units type for the grid height and width. It corresponds to the GridUnits property.

OK

The OK button applies the changes made using the Grid Options Dialog to the focused window.

Cancel

The Cancel button closes the Grid Options Dialog without updating the focused window.


Preferences - General

The Preferences dialog is used to set user preferences determining how MSM-Workstation operates. The General tab configures assorted settings.

The following options are provided:

Definition Dialogs

The Definition Dialogs radio button set is used to specify whether Definition dialogs are automatically displayed at control creation time, or only when requested from the menu or Toolbar on the Top Level Window, or from the pop-up menu.

Property Bar Display

The Property Bar Display radio button set is used to specify whether the drop-down properties list on the Property Bar displays all of the selected object's properties or just those that cannot be set using the object's associated Definition dialog.

Font Point Size

The Font Point Size spin control is used to select the font point size used in the simple action logic code editor document boxes on definition dialogs. It has no effect on the syntax-highlighting editor.

Horizontal Wraparound

The Horizontal Wraparound checkbox is checked if horizontal wraparound is wanted in the simple action logic code editor document boxes on definition dialogs. It has no effect on the syntax-highlighting editor, where horizontal scrolling always operates.

Events

The Events radio button set is used to specify whether the event lists on the Definition dialogs display just the high-level events or all events, including the low-level events. Low-level events are always accessible on the pop-up menus on the Window Browser tree.

MDI Interface

Check to use MDI-style interface on next startup.

Helper

Options to keep non-MDI windows out of the way of the MDI windows. They can be automatically hidden or minimized when focus moves to an MDI child.

Language

On a Windows installation configured to support multiple input locales, choose which language is the default for working in the syntax-highlighting editor.

Character Set

On a Windows installation configured to support multiple character sets, choose the one to be used for all fonts in the syntax-highlighting editor.

OK

File the preferences and close the dialog

Cancel

Close the dialog, discarding any changes made


Preferences - Editor

The Preferences dialog is used to set user preferences determining how MSM-Workstation operates. The Editor Format tab affects behavior of the syntax-highlighting editor.

The following options and others are provided:

Type

Select the type of editing object whose preferences you wish to change, e.g. Action Logic, Global, Source. Settings made for the Default type apply to an object in the absence of an overriding setting for its specific type.

Element

Select the syntax element or other attribute you wish to set.

Reset

Reset to defaults. When Type is not Default, causes objects of the chosen type to revert to the Default type settings. When Type is Default, reverts to built-in default settings.

Font Information

Configure font for chosen element. Use the Font or Color button to access standard Windows dialogs.


Defaults - Windows

The Window Defaults Dialog allows the user to specify the default settings for subsequently created windows. The defaults can be set on an individual Module basis or for all modules.

The following options are provided:

Module

The Module drop-down list allows selection of a module, from those existing in the current database, for which the defaults will be set. The <all> entry can be selected to set database-wide defaults. See the PrincipalModule property for an explanation of how defaults are applied.  Select a module or <all>. A new module must be saved before it can carry defaults.

Mode

The Mode drop-down list allows selection of the window mode for which defaults will be set. The only mode is GUI.

Default

Not applicable, since multiple modes are not implemented.

Element

The Element drop down list allows the selection of Background, Controls or Labels.

Face

The Face drop-down list allows selection of a default font face for controls or their labels, depending on the selection in the Element drop-down list.  Fonts available on the system are listed.

Points

The Points drop-down lists allows selection of a default point size for controls or their labels, depending on the selection in the Element drop-down list. Sizes are listed for the selected Face.

Bold

Check the Bold checkbox to give the selected font a bold style.

Italic

Check the Italic checkbox to give the selected font an italic style.

Underline

Check the Underline checkbox to give the selected font an underline style.

Default

Check to leave the style properties undefined. MWAPI inheritance rules will apply.

Color/Font Sample

A sample of the closest match to the chosen font, size and style, using the chosen colors, is displayed in the Color/Font Sample field.

Property

The Property drop-down list allows selection of a single window property.

Value

The Value field displays the current value of the property selected in the Property drop-down list allowing editing where appropriate for the setting of defaults. Where a defined set of choices is available for the property, lists of valid choices are provided as a drop-down from which a selection can be made. If the value field accepts typed text it may be validated before being accepted, and if it is not acceptable there will be an audible warning and the field value will be reselected. The new value is approved when you move off the Value field, or by use of the checkmark button.

OK

The OK button applies the changes made within the dialog and closes it.

Cancel

The Cancel button closes the dialog without applying any changes.

Color Palette

The Color Palette button displays the Color Palette to allow the changing of default colors. If the Element selection is Background the color palette is used to set the default window background color. If the Element selection is Control the color palette is used to set the default foreground and background colors for controls, using left-click and right-click. If the Element selection is Label the color palette is used to set the default foreground and background colors for the control labels, using left-click and right-click. The chosen colors are displayed in the Color/Font Sample field.


Defaults - Controls

The Control Defaults Dialog allows the user to specify the default settings for subsequently created controls. The defaults can be set on an individual Module basis or for all modules. The options available on this dialog change according to the selection of control type.

The following options are provided:

Module

The Module drop-down list allows selection of a module, from those existing in the database, for which the defaults will be set. The <all> entry can be selected to set database-wide defaults. See the PrincipalModule property for an explanation of how defaults are applied.  Select a module or <all>. A new module must be saved before it can carry defaults.

Mode

The Mode drop-down list allows selection of the window mode for which control defaults will be set. The only mode is GUI.

Default

Not applicable, since multiple modes are not implemented.

Type

The Type drop-down list allows selection of the type of control for which defaults will be set.

Element

The Element drop down list allows the selection of Control or Label The Label option is available for those controls which have a label. The selection determines whether the default settings for font and color apply to the control itself or its text label.

Face

The Face drop-down list allows selection of a default font face for controls or their labels, depending on the selection in the Element drop-down list.  Fonts available on the system are listed.

Points

The Points drop-down lists allows selection of a default point size for controls or their labels, depending on the selection in the Element drop-down list.  Sizes are listed for the selected Face.

Bold

Check the Bold checkbox to give the selected font a bold style.

Italic

Check the Italic checkbox to give the selected font an italic style.

Underline

Check the Underline checkbox to give the selected font an underline style.

Default

Check to leave the style properties undefined. MWAPI inheritance rules will apply.

Color/Font Sample

A sample of the closest match to the chosen font, size and style, using the chosen colors, is displayed in the Color/Font Sample field.

Property

The Property drop-down list contains the properties for the selected control type and allows selection of a single property.

Value

The Value field displays the current value of the property selected in the Property drop-down list allowing editing where appropriate for the setting of defaults. Where a defined set of choices is available for the property, lists of valid choices are provided as a drop-down from which a selection can be made. If the value field accepts typed text it may be validated before being accepted, and if it is not acceptable there will be an audible warning and the field value will be reselected. The new value is approved when you move off the Value field, or using the checkmark button.

Height

This field allows setting the default control height, used when a new control is dropped onto a window using a single click.

Width

This field allows setting the default control width, used when a new control is dropped onto a window using a single click.

Framed

The Framed checkbox is active if the control is of a type which can be framed, and its state determines whether or not such a frame is required.

OK

The OK button applies the changes made within the Control Defaults Dialog and exits the dialog.

Cancel

The Cancel button closes the Control Defaults Dialog without applying any changes.

Color Palette

The Color Palette button displays the Color Palette to allow the changing of default colors. If the Element selection is Control then the color palette is used to set the default foreground and background colors for the control, using lef-click and right-click. If the Element selection is Label then the color palette is used to set the default foreground and background colors for the control's label, using lef-click and right-click. The chosen colors are displayed in the Color/Font Sample field.


ActiveX Controls

This dialog is used to select the ActiveX controls to include on the control-creation menus.

The following options are provided:

Controls

This is a list of ActiveX controls on your system. Checked items will appear on the Element – Create Control – ActiveX list. Only items for which design-time rights exist can be checked. Some controls on your system may only have a run-time license, so are not eligible for use on windows built with MSM-Workstation.

Group by File

In some cases, a single file implements more than one ActiveX control. Check this box to display controls grouped by file. This view facilitates selection of all controls within the same file.

Picture

Displays the design-time picture of the highlighted control. Press this button to access online help for the control, if available.

OK

Accept changes and close dialog.

Cancel

Close dialog without saving changes.


SQL Settings

This dialog displays and allows editing of the information regarding the link to the MSM-SQL data-dictionary, if MSM-SQL is installed.

The following options are provided:

Configuration

The Configuration drop-down list allows selection of User Specific or Workshop default settings for MSM-SQL access. User specific settings overide the workshop defaults, and apply only to the current workstation operating within the workshop (database).

UCI

The UCI drop-down list displays the available UCIs containing MSM-SQL Version 3 or above. It allows selection of the UCI to use for the configuration chosen using the Configuration drop-down list. The choice of UCI governs which data dictionary will be available when defining Data Controls on windows.

Password

Specifies the password to use for MSM-SQL design-time access for the configuration chosen using the Configuration drop-down list. For the User Specific configuration, a null entry causes the Workshop password to be used.

OK

 File the preferences and close the dialog.

Cancel

Close the dialog without applying any changes made.


The Display Grid checkbox is checked to display a grid on the focused window. It corresponds to the GridOn property.


The Snap to Grid checkbox is checked to enable the snapping of controls to the grid on the focused window. It corresponds to the GridSnap property.


The Height spin control allows selection of the grid height. It corresponds to the GridHeight property.


The Width spin control allows selection of the grid width. It corresponds to the GridWidth property.


The Units drop-down list allows selection of the units type for the grid height and width. It corresponds to the GridUnits property.


The OK button applies the changes made using the Grid Options Dialog to the focused window.


The Cancel button closes the Grid Options Dialog without updating the focused window.


The Definition Dialogs radio button set is used to specify whether Definition dialogs are automatically displayed at control creation time, or only when requested from the menu or Toolbar on the Top Level Window, or from the pop-up menu.


The Property Bar Display radio button set is used to specify whether the drop-down properties list on the Property Bar displays all of the selected object's properties or just those that cannot be set using the object's associated Definition dialog.


The Font Point Size spin control is used to select the font point size used in the simple action logic code editor document boxes on definition dialogs. It has no effect on the syntax-highlighting editor.


The Horizontal Wraparound checkbox is checked if horizontal wraparound is wanted in the simple action logic code editor document boxes on definition dialogs. It has no effect on the syntax-highlighting editor, where horizontal scrolling always operates.


The Events radio button set is used to specify whether the event lists on the Definition dialogs display just the high-level events or all events, including the low-level events. Low-level events are always accessible on the pop-up menus on the Window Browser tree.


Check to use MDI-style interface on next startup.


Options to keep non-MDI windows out of the way of the MDI windows. They can be automatically hidden or minimized when focus moves to an MDI child.


On a Windows installation configured to support multiple input locales, choose which language is the default for working in the syntax-highlighting editor.


On a Windows installation configured to support multiple character sets, choose the one to be used for all fonts in the syntax-highlighting editor.


File the preferences and close the dialog


Close the dialog, discarding any changes made


Select the type of editing object whose preferences you wish to change, e.g. Action Logic, Global, Source. Settings made for the Default type apply to an object in the absence of an overriding setting for its specific type.


Select the syntax element or other attribute you wish to set.


Reset to defaults. When Type is not Default, causes objects of the chosen type to revert to the Default type settings. When Type is Default, reverts to built-in default settings.


Configure font for chosen element. Use the Font or Color button to access standard Windows dialogs.


The Module drop-down list allows selection of a module, from those existing in the current database, for which the defaults will be set. The <all> entry can be selected to set database-wide defaults. See the PrincipalModule property for an explanation of how defaults are applied.  Select a module or <all>. A new module must be saved before it can carry defaults.


The Mode drop-down list allows selection of the window mode for which defaults will be set. The only mode is GUI.


Not applicable, since multiple modes are not implemented.


The Element drop down list allows the selection of Background, Controls or Labels.


The Face drop-down list allows selection of a default font face for controls or their labels, depending on the selection in the Element drop-down list.  Fonts available on the system are listed.


The Points drop-down lists allows selection of a default point size for controls or their labels, depending on the selection in the Element drop-down list. Sizes are listed for the selected Face.


Check the Bold checkbox to give the selected font a bold style.


Check the Italic checkbox to give the selected font an italic style.


Check the Underline checkbox to give the selected font an underline style.


Check to leave the style properties undefined. MWAPI inheritance rules will apply.


A sample of the closest match to the chosen font, size and style, using the chosen colors, is displayed in the Color/Font Sample field.


The Property drop-down list allows selection of a single window property.


The Value field displays the current value of the property selected in the Property drop-down list allowing editing where appropriate for the setting of defaults. Where a defined set of choices is available for the property, lists of valid choices are provided as a drop-down from which a selection can be made. If the value field accepts typed text it may be validated before being accepted, and if it is not acceptable there will be an audible warning and the field value will be reselected. The new value is approved when you move off the Value field, or by use of the checkmark button.


The OK button applies the changes made within the dialog and closes it.


The Cancel button closes the dialog without applying any changes.


The Color Palette button displays the Color Palette to allow the changing of default colors. If the Element selection is Background the color palette is used to set the default window background color. If the Element selection is Control the color palette is used to set the default foreground and background colors for controls, using left-click and right-click. If the Element selection is Label the color palette is used to set the default foreground and background colors for the control labels, using left-click and right-click. The chosen colors are displayed in the Color/Font Sample field.


The Module drop-down list allows selection of a module, from those existing in the database, for which the defaults will be set. The <all> entry can be selected to set database-wide defaults. See the PrincipalModule property for an explanation of how defaults are applied.  Select a module or <all>. A new module must be saved before it can carry defaults.


The Mode drop-down list allows selection of the window mode for which control defaults will be set. The only mode is GUI.


Not applicable, since multiple modes are not implemented.


The Type drop-down list allows selection of the type of control for which defaults will be set.


The Element drop down list allows the selection of Control or Label The Label option is available for those controls which have a label. The selection determines whether the default settings for font and color apply to the control itself or its text label.


The Face drop-down list allows selection of a default font face for controls or their labels, depending on the selection in the Element drop-down list.  Fonts available on the system are listed.


The Points drop-down lists allows selection of a default point size for controls or their labels, depending on the selection in the Element drop-down list.  Sizes are listed for the selected Face.


Check the Bold checkbox to give the selected font a bold style.


Check the Italic checkbox to give the selected font an italic style.


Check the Underline checkbox to give the selected font an underline style.


Check to leave the style properties undefined. MWAPI inheritance rules will apply.


A sample of the closest match to the chosen font, size and style, using the chosen colors, is displayed in the Color/Font Sample field.


The Property drop-down list contains the properties for the selected control type and allows selection of a single property.


The Value field displays the current value of the property selected in the Property drop-down list allowing editing where appropriate for the setting of defaults. Where a defined set of choices is available for the property, lists of valid choices are provided as a drop-down from which a selection can be made. If the value field accepts typed text it may be validated before being accepted, and if it is not acceptable there will be an audible warning and the field value will be reselected. The new value is approved when you move off the Value field, or using the checkmark button.


This field allows setting the default control height, used when a new control is dropped onto a window using a single click.


This field allows setting the default control width, used when a new control is dropped onto a window using a single click.


The Framed checkbox is active if the control is of a type which can be framed, and its state determines whether or not such a frame is required.


The OK button applies the changes made within the Control Defaults Dialog and exits the dialog.


The Cancel button closes the Control Defaults Dialog without applying any changes.


The Color Palette button displays the Color Palette to allow the changing of default colors. If the Element selection is Control then the color palette is used to set the default foreground and background colors for the control, using lef-click and right-click. If the Element selection is Label then the color palette is used to set the default foreground and background colors for the control's label, using lef-click and right-click. The chosen colors are displayed in the Color/Font Sample field.


This is a list of ActiveX controls on your system. Checked items will appear on the Element – Create Control – ActiveX list. Only items for which design-time rights exist can be checked. Some controls on your system may only have a run-time license, so are not eligible for use on windows built with MSM-Workstation.


In some cases, a single file implements more than one ActiveX control. Check this box to display controls grouped by file. This view facilitates selection of all controls within the same file.


Displays the design-time picture of the highlighted control. Press this button to access online help for the control, if available.


Accept changes and close dialog.


Close dialog without saving changes.


The Configuration drop-down list allows selection of User Specific or Workshop default settings for MSM-SQL access. User specific settings overide the workshop defaults, and apply only to the current workstation operating within the workshop (database).


The UCI drop-down list displays the available UCIs containing MSM-SQL Version 3 or above. It allows selection of the UCI to use for the configuration chosen using the Configuration drop-down list. The choice of UCI governs which data dictionary will be available when defining Data Controls on windows.


Specifies the password to use for MSM-SQL design-time access for the configuration chosen using the Configuration drop-down list. For the User Specific configuration, a null entry causes the Workshop password to be used.


 File the preferences and close the dialog.


Close the dialog without applying any changes made.


System Dialogs

Status

Current Database

Databases - Local Mount

Databases - Connect to Network Database

Databases - Unmount

Databases - Create

Databases - Expand

Register Local Database

Register Network Database


Status

This dialog is used to display mounted databases.

The following options are provided:

Report

This is a report of mounted databases.

Close

Close the dialog.


Current Database

This dialog is used to select a mounted database as the current database.

The following options are provided:

Database

Select database you wish to make current.

OK

Click to set the current database.

Cancel

Click to return without changing the current database.


Databases - Local Mount

This dialog is used to mount a local database.

The following options are provided:

Moniker

Enter a new or existing moniker for the database, or leave empty. A moniker may contain up to 32 alphanumeric characters. If saved (the default) it will be available for re-use on future occasions. It will appear in the System Browser's <Other Monikers> subtree when not mounted. It may also be specified as a command-line parameter when MSM-Workstation is started, causing the database to be mounted immediately.

File Name

Enter the full path to the local database file, including drive.

UCI

If this is a multiple-UCI database, enter the UCI to assign the moniker to. Otherwise leave this field empty.

Save Moniker

Select to save the logical name binding in the registry.

Read-Only

Database will be opened with read-only access.

Open

Click to open the database.

Cancel

Click to cancel the dialog.

Browse

Click to browse for a database file using the standard Windows file selector, after which you will be returned to this dialog.

New

Click to create new database. This is useful if no suitable existing database can be found.


Databases - Connect to Network Database

MSM-Workstation can connect to network databases. This allows access to a specified UCI on a volume group that is exported by an MSM-Server system, Version 4.3 or later. The MSM-Workstation Networking service must be configured and running on the server.  Only one network database can be connected at a time.

This dialog is used to connect to a network database.

The following options are provided:

Moniker

Enter a new or existing moniker for the database, or leave empty. A moniker may contain up to 32 alphanumeric characters. If saved (the default) it will be available for re-use on future occasions. It will appear in the System Browser's <Other Monikers> subtree when not mounted. It may also be specified as a command-line parameter when MSM-Workstation is started, causing the server database to be connected immediately.

Connection

Choose the type of link desired, either TCP/IP or SPX. Consult the MSM-Server system manager to determine which type of links it accepts.

Server Name or Address

For TCP/IP links, enter the IP address or hostname of the server.  For SPX connections (the field is renamed 'Network ^ Node Addresses'), enter the network (8 hex digits, no spaces), a "^" character, and the node addresses (12 hex digits, no spaces).

Port

For TCP/IP links, enter the port number on which the server accepts connection requests.  For SPX connects (the field is renamed 'Socket'), enter the socket on which the server takes connections.

Password

Enter the password required by the server.

Database

Enter the server UCI,VolumeGroup to be connected to. The volume group must have been configured as exportable by the server.

Read-Only

Select to connect to the database for read-only access.

Save Moniker

Select to save the logical name binding in the registry.

Connect

Proceed with the connection.

Cancel

Close the dialog without connecting.


Databases - Unmount

This dialog is used to unmount a mounted local or network database.  Alternatively, in the System Browser right-click an open database under the Databases node, and then select Close (for local databases) or Disconnect (for network databases) from the popup menu.

The following options are provided:

Database

Select the database to unmount.

Unmount

Unmount the selected database.

Cancel

Close the dialog without unmounting a database.


Databases - Create

A database created by MSM-Workstation has a single UCI, a single volume, and a system-generated BIJ file. The standard extension for the database file is .M.

The following options are provided:

File Name

Enter a full or partial file name to specify the database file to be created, or use the Browse button to select a name.  The default extension is .M, and the default path is the current path.  If a partial path or just a name is entered, press tab after you enter the file name to see the full path to be used.

Size in Blocks

Enter the initial size of the database. Each block is 1024 bytes. A database can be expanded later if more capacity is needed. Its size cannot be reduced.

Explicit VG Name

Select this option and fill in the box to assign a specific VG name to the database and fix the database's UCI and VG names in the same manner as on existing MSM systems.  The explicit VG name must be 3 uppercase characters.

This facility is provided principally to support legacy applications. It is preferable not to assign an explicit name at creation, binding a moniker instead at mount time.

For example, if you set an explicit VG name of "TST", then the database during mounting makes available a UCI labeled "TST" on VG "TST". An explicit extended reference to a global called ^SAMPLE on this database would be  ^|"TST,TST"|SAMPLE.

If a fixed VG name is not established at database creation, the system assigns the database a UCI,VG at mount time, according to the rules for system-assigned VG names. The first database to be mounted is named "__A,__A", the second  is named "___A,___B", the third "__A,__C", and so on. So long as a moniker is bound during mount, these names will rarely have to be used by the programmer.

Create

Click to create the database.

Cancel

Click to close the dialog without creating a database.

Browse (...)

Click to browse for a suitable file name using the standard Windows dialog box. This is typically used to identify a name not already in use, or to select a redundant (and unmounted) database file for re-creation.


Databases - Expand

The following options are provided:

Database

Select a local-mounted single-volume database to expand.

Expand by (Kbytes)

Enter the number of 1K blocks by which to expand the database. The BIJ file may also be required to grow, so the total demand on Windows filespace can exceed this setting.

Expand

Begin the database expansion.

Cancel

Close the dialog without performing an expansion.


Register Local Database

This dialog is used to register a local database.

The following options are provided:

Moniker

A moniker may contain up to 32 alphanumeric characters.

File Name

Enter the full path to the local database file, including drive.

UCI

If this is a multiple-UCI database, enter the UCI to assign the moniker to.

Connect

Proceed with the registration.

Cancel

Close the dialog without registering.

Browse

Click to browse files.


Register Network Database

This dialog is used to register a network database.

The following options are provided:

Moniker

A moniker may contain up to 32 alphanumeric characters.

Connection

Choose the type of link desired, either TCP/IP or SPX.

Server Name or Address

For TCP/IP links, enter the IP address or hostname of the server.  For SPX connections (the field is renamed 'Network ^ Node Addresses'), enter the network (8 hex digits, no spaces), a "^" character, and the node addresses (12 hex digits, no spaces).

Port

For TCP/IP links, enter the port number on which the server accepts connection requests.  For SPX connects (the field is renamed 'Socket'), enter the socket on which the server takes connections.

Password

Enter the password required by the server.

Database

Enter the server UCI,VolumeGroup to be connected to.

Connect

Proceed with the registration.

Cancel

Close the dialog without registering.


Help Dialogs

About MSM-Workstation

This window is used to display version information.

The following options are provided:

Build Information

Text on the dialog shows information about the MSM-Workstation build you are using. This may be required by support personnel.

Licensing Information

This field displays licensing information for a registered copy of MSM-Workstation. It may be required by support personnel.

OK

Click this to close the window.

System Info

Click to run the Microsoft System Info application, if it has been located on your computer.


This is a report of mounted databases.


Close the dialog.


Select database you wish to make current.


Click to set the current database.


Click to return without changing the current database.


Enter a new or existing moniker for the database, or leave empty. A moniker may contain up to 32 alphanumeric characters. If saved (the default) it will be available for re-use on future occasions. It will appear in the System Browser's <Other Monikers> subtree when not mounted. It may also be specified as a command-line parameter when MSM-Workstation is started, causing the database to be mounted immediately.


Enter the full path to the local database file, including drive.


If this is a multiple-UCI database, enter the UCI to assign the moniker to. Otherwise leave this field empty.


Select to save the logical name binding in the registry.


Database will be opened with read-only access.


Click to open the database.


Click to cancel the dialog.


Click to browse for a database file using the standard Windows file selector, after which you will be returned to this dialog.


Click to create new database. This is useful if no suitable existing database can be found.


Enter a new or existing moniker for the database, or leave empty. A moniker may contain up to 32 alphanumeric characters. If saved (the default) it will be available for re-use on future occasions. It will appear in the System Browser's <Other Monikers> subtree when not mounted. It may also be specified as a command-line parameter when MSM-Workstation is started, causing the server database to be connected immediately.


Choose the type of link desired, either TCP/IP or SPX. Consult the MSM-Server system manager to determine which type of links it accepts.


For TCP/IP links, enter the IP address or hostname of the server.  For SPX connections (the field is renamed 'Network ^ Node Addresses'), enter the network (8 hex digits, no spaces), a "^" character, and the node addresses (12 hex digits, no spaces).


For TCP/IP links, enter the port number on which the server accepts connection requests.  For SPX connects (the field is renamed 'Socket'), enter the socket on which the server takes connections.


Enter the password required by the server.


Enter the server UCI,VolumeGroup to be connected to. The volume group must have been configured as exportable by the server.


Select to connect to the database for read-only access.


Select to save the logical name binding in the registry.


Proceed with the connection.


Close the dialog without connecting.


Select the database to unmount.


Unmount the selected database.


Close the dialog without unmounting a database.


Enter a full or partial file name to specify the database file to be created, or use the Browse button to select a name.  The default extension is .M, and the default path is the current path.  If a partial path or just a name is entered, press tab after you enter the file name to see the full path to be used.


Enter the initial size of the database. Each block is 1024 bytes. A database can be expanded later if more capacity is needed. Its size cannot be reduced.


Select this option and fill in the box to assign a specific VG name to the database and fix the database's UCI and VG names in the same manner as on existing MSM systems.  The explicit VG name must be 3 uppercase characters.

This facility is provided principally to support legacy applications. It is preferable not to assign an explicit name at creation, binding a moniker instead at mount time.

For example, if you set an explicit VG name of "TST", then the database during mounting makes available a UCI labeled "TST" on VG "TST". An explicit extended reference to a global called ^SAMPLE on this database would be  ^|"TST,TST"|SAMPLE.

If a fixed VG name is not established at database creation, the system assigns the database a UCI,VG at mount time, according to the rules for system-assigned VG names. The first database to be mounted is named "__A,__A", the second  is named "___A,___B", the third "__A,__C", and so on. So long as a moniker is bound during mount, these names will rarely have to be used by the programmer.


Click to create the database.


Click to close the dialog without creating a database.


Click to browse for a suitable file name using the standard Windows dialog box. This is typically used to identify a name not already in use, or to select a redundant (and unmounted) database file for re-creation.


Select a local-mounted single-volume database to expand.


Enter the number of 1K blocks by which to expand the database. The BIJ file may also be required to grow, so the total demand on Windows filespace can exceed this setting.


Begin the database expansion.


Close the dialog without performing an expansion.


A moniker may contain up to 32 alphanumeric characters.


Enter the full path to the local database file, including drive.


If this is a multiple-UCI database, enter the UCI to assign the moniker to.


Proceed with the registration.


Close the dialog without registering.


Click to browse files.


A moniker may contain up to 32 alphanumeric characters.


Choose the type of link desired, either TCP/IP or SPX.


For TCP/IP links, enter the IP address or hostname of the server.  For SPX connections (the field is renamed 'Network ^ Node Addresses'), enter the network (8 hex digits, no spaces), a "^" character, and the node addresses (12 hex digits, no spaces).


For TCP/IP links, enter the port number on which the server accepts connection requests.  For SPX connects (the field is renamed 'Socket'), enter the socket on which the server takes connections.


Enter the password required by the server.


Enter the server UCI,VolumeGroup to be connected to.


Proceed with the registration.


Close the dialog without registering.


Text on the dialog shows information about the MSM-Workstation build you are using. This may be required by support personnel.


This field displays licensing information for a registered copy of MSM-Workstation. It may be required by support personnel.


Click this to close the window.


Click to run the Microsoft System Info application, if it has been located on your computer.


Definition Dialogs

Button Definition

CheckBox Definition

Combo Box Definition

Data Control Definition

Data Field

Date Definition

Document Definition

Drop-Down Combo Definition

Drop-Down List Definition

Generic Definition

Group Box Definition

Label Definition

List Box Definition

Long List Definition

Module Definition

Picture Definition

Radio Button Definition

Scroll Definition

Spin Button Definition

Tabbed Group Definition

Tabbed Group Definition - Tabs

Tabbed Group Definition - Fonts

Text Box Definition

Timer Definition

Toolbar Definition

Toolbar Choice

Window Definition

Window Information


Button Definition

This dialog allows the user to display or edit the most common properties of the Button control. It is displayed automatically as a default on control creation unless the automatic definition windows preference is turned off. The dialog is also accessible by focusing on a button control or selecting a button control on the property bar drop-down list and either pressing the [image] button on the Toolbar or selecting Definition from the Element menu. A double-click on the object also brings up this dialog, or it can be called from the pop-up menu. The less frequently used properties, which are not on this dialog, are available from the property bar drop-down list.

The following options are provided:

Name

The Name field displays the name of the button and allows it to be edited.

Text

The Text field displays the current button Title property and allows it to be edited.

Picture

The Picture field displays the current button Picture property and allows it to be edited. This is used for displaying bitmaps on a button.

Browse

Click this button to browse for a Picture bitmap file.

Action Logic Event

The Event drop-down list allows selection of one of the control's events to allow the entry or editing of the associated action logic. The list contains either the high-level events or all events dependent on a preference setting. The list is initially positioned at the principal event. Events with attached code are signified by a trailing >>.

Action Logic Code

The Code Editor document box shows the action logic associated with the event selected using the Event drop-down list and allows simple text editing capabilities.

Editor

The Editor button invokes the Code Editor window to allow the action logic associated with the event selected using the Action Logic Event drop-down list to be edited. This editor provides greater functionality than the Action Logic Code document box.

Inactive

The Inactive check box is checked to make the button initially inactive. This sets the Active property to No.

Message

The Message check box is checked to associate a message with the button, which will be displayed when it has focus. Checking this box allows entry of the message in the Message Text field.  The Message Text field allows entry of a message which will be displayed when the button has focus. This field sets the button control's Message.

Default Button

The Default Button check box is checked to make this button the default button for the window. This sets the window's DefaultButton property to the Name of the button control.

Cancel Button

The Cancel Button check box is checked to set the CancelButton property of the window to the Name of the button control. At run-time, pressing the Escape key while focused on the window will cause this button to be pushed.

OK

The OK button applies the changes made using the Button Definition dialog to the selected button control.

Cancel

The Cancel button closes the Button Definition dialog without updating the selected button control.


CheckBox Definition

This dialog allows the user to display or edit the most common properties of the Check Box control. It is displayed automatically as a default on control creation unless the automatic definition windows preference is turned off. The dialog is also accessible by focusing on a check box control or selecting a check box control on the property bar object drop-down list and either pressing the [image] button on the Toolbar or selecting Definition from the Element menu. A double-click on the object also brings up this dialog, or it can be called from the pop-up menu. The less frequently used properties, which are not on this dialog, are available from the property bar drop-down list.

The following options are provided:

Name

The Name field displays the nameName_P of the check box and allows it to be edited.

Text

The Text field displays the current check box TitleProp_Title property and allows it to be edited.

Local Variable Name

The Local Variable Name field displays the currently selected local variable name to which the check box control is linked, if any, and allows it to be edited. Entering a value in this field sets the check box control's VarName property.

Permanent

The Permanent check box is checked to make the local variable linked with the control permanent, that is, visible outside of the scope of execution of the window in which the control is contained. This check box is only applicable if the control has been linked to a local variable by entering a name in the Local Variable field. The setting of this check box is reflected in the control's VarPermanent property.

Data Dictionary Field

The Data Dictionary Field displays the currently selected Data Control and field to which the check box control is linked, if any, and allows it to be edited. Entering a value in this field sets the check box control's DataField property.

Field

The Field button gives access to the Data Field dialog, to allow a Data Control and field to be chosen and linked to the check box control.

Action Logic Event

The Event drop-down list allows selection of one of the control's events to allow the entry or editing of the associated action logic. The list contains either the high-level events or all events dependent on a preference setting. The list is initially positioned at the principal event. Events with attached code are signified by a trailing >>.

Action Logic Code

The Code Editor document box shows the action logic associated with the event selected using the Event drop-down list and allows simple text editing capabilities.

Editor

The Editor button invokes the Code Editor window to allow the action logic associated with the event selected using the Action Logic Event drop-down list to be edited. This editor provides greater functionality than the Action Logic Code document box.

Inactive

The Inactive check box is checked to make the check box control initially inactive. This sets the Active property to No.

Message

The Message check box is checked to associate a message with the check box, which will be displayed when it has focus. Checking this box allows entry of the message in the Message Text field.

Message Text

The Message Text field allows entry of a message which will be displayed when the check box has focus. This field sets the check box control's Message.

Display-Only

The Display-Only check box is checked to make the check box control read-only. This sets the DisplayOnly property to Yes.

OK

The OK button applies the changes made using the Check Box Definition Dialog to the selected check box control.

Cancel

The Cancel button closes the Check Box Definition dialog without updating the selected check box control.


Combo Box Definition

This dialog allows the user to display or edit the most common properties of the Combo Box control. It is displayed automatically as a default on control creation unless the automatic definition windows preference is turned off. The dialog is also accessible by focusing on a combo box control or selecting a combo box control on the property bar object drop-down list and either pressing the [image] button on the Toolbar or selecting Definition from the Element menu. A double-click on the object also brings up this dialog, or it can be called from the pop-up menu. The less frequently used properties, which are not on this dialog, are available from the property bar drop-down list.

The following options are provided:

Name

The Name field displays the name of the combo box and allows it to be edited.

Local Variable Name

The Local Variable Name field displays the currently selected local variable name to which the combo box control is linked, if any, and allows it to be edited. Entering a value in this field sets the combo box control's VarName property.

Permanent

The Permanent check box is checked to make the local variable linked with the control permanent, that is, visible outside of the scope of execution of the window in which the control is contained. This check box is only applicable if the control has been linked to a local variable by entering a name in the Local Variable field. The setting of this check box is reflected in the control's VarPermanent property.

Choice Type

The Choices groups allows definition of the choices list associated with the combo box. The Radio Button Set allows the option of loading the list from one of the following:

List - A pre-defined static set of choices is used.

Variable - An M subscripted local or global variable specifies the choices.

Data Dictionary – A Data Control and field are linked to the list.

Choices Button

This button access the Choice Editor, which can be used to specify a pre-defined set of choices for the List.  This button becomes active when the List radio button option is chosen.

Choices Variable

Enter an M subscripted local or global variable in this box to specify choices for the combo box.  Entering a value in this field sets the combo box control's ChoiceVar property.  This box becomes active when the Variable radio button option is chosen.

Data Dictionary Field

The Data Dictionary Field displays the currently selected Data Control and field to which the combo box control is linked, if any, and allows it to be edited. Entering a value in this field sets the combo box control's ChoiceField property.

Field Button

The Field button gives access to the Data Field dialog, to allow a Data Control and field to be chosen and linked to the combo box control.

Validation Type

Validation options are allowed if a Local Variable Name has been linked to the combo box.  The Validation drop-down list allows selection of the validation method. The available options are <default> to use the default system validation, Code to supply user code for validation and Custom. The Custom validation option is not yet available.

Validation

The Validation field becomes active when the Code validation option is chosen from the Validation drop-down list. It allows entry of a line of M code to perform the validation. The user input value is supplied in the variable X, and if it fails the user validation, then X should be KILLed.

Display Type

Display options are allowed if a Local Variable Name has been linked to the combo box.  The Display drop-down list allows selection of the display format method. The available options are <default> to display what is input, Code to supply user code for formatting and Custom. The Custom display option is not yet available.

Display

The Display field becomes active when the Code format option is chosen from the Display drop-down list. It allows entry of a line of M code to perform the formatting. The user input value is supplied in the variable X and the formatted value should be returned in the variable Y.

Max Length

The Maximum Length field allows entry of the maximum input length of the text in the combo box control. This sets the MaxLength property.

Action Logic Event

The Event drop-down list allows selection of one of the control's events to allow the entry or editing of the associated action logic. The list contains either the high-level events or all events dependent on a preference setting. The list is initially positioned at the principal event. Events with attached code are signified by a trailing >>.

Action Logic Code

The Code Editor document box shows the action logic associated with the event selected using the Event drop-down list and allows simple text editing capabilities.

Editor

The Editor button invokes the Code Editor window to allow the action logic associated with the event selected using the Action Logic Event drop-down list to be edited. This editor provides greater functionality than the Action Logic Code document box.

Inactive

The Inactive check box is checked to make the combo box control initially inactive. This sets the Active property to No.

Message

The Message check box is checked to associate a message with the combo box, which will be displayed when it has focus. Checking this box allows entry of the message in the Message Text field.

Message Text

The Message Text field allows entry of a message which will be displayed when the combo box has focus. This field sets the combo box control's Message.

Display-Only

The Display-Only check box is checked to make the combo box control read-only. This sets the DisplayOnly property to Yes.

Selection Required

The Selection Required checkbox is checked to indicate that a selection must be made. This feature is not currently supported.

OK

The OK button applies the changes made using the Combo box Definition Dialog to the selected combo box control.

Cancel

The Cancel button closes the Combo box Definition dialog without updating the selected combo box control.


Data Control Definition

This dialog allows the user to display or edit the most common properties of the SQL Data control. It is displayed automatically as a default on control creation unless the automatic definition windows preference is turned off. The dialog is also accessible by focusing on a data control or selecting a data control on the property bar drop-down list and either pressing the [image] button on the Toolbar or selecting Definition from the Element menu. A double-click on the object also brings up this dialog, or it can be called from the pop-up menu. The less frequently used properties, which are not on this dialog, are available from the property bar drop-down list.

The following options are provided:

Name

The Name field displays the name of the data control and allows it to be edited. Take care when renaming a data control, since other controls bound to it will no longer be able to locate it.

Scope

The Scope field is limited to Private in the current version of MSM-Workstation, meaning that this data control is not visible or accessible outside of the window in which it is placed.

Read-Only

The Read-Only check box is used to set the ReadOnly property in order stop updates to the columns it manages. In some cases, given the nature of the table that is used as a RecordSource, MSM-SQL may be unable to support updates and the ReadOnly property will be preset to Yes.

Table

The Table drop-down list allows selection of a table from those in the MSM-SQL Schema selected.

Schema

The Schema drop-down list allows selection of an MSM-SQL schema.

Fields

The Fields list box displays the fields (columns) available within the selected Schema and Table. It is presented for information only. Foreign key fields are followed by the indicator >>.

Action Logic Event

The Event drop-down list allows selection of one of the control's events to allow the entry or editing of the associated action logic. The list contains either the high-level events or all events dependent on a preference setting. The list is initially positioned at the principal event. Events with attached code are signified by a trailing >>.

Action Logic Code

The Code Editor document box shows the action logic associated with the event selected using the Event drop-down list and allows simple text editing capabilities.

Editor

The Editor button invokes the Code Editor window to allow the action logic associated with the event selected using the Action Logic Event drop-down list to be edited. This editor provides greater functionality than the Action Logic Code document box.

Filter

The Filter field can take an SQL WHERE-clause, but may only operate on columns that are either in the table specified or are foreign-key-linked to it. You cannot use this property to join tables. If necessary, define a view that performs the join, then select that view as the table of your data control.  This field sets the DataFilter property.

Sort

The Sort field can take an SQL ORDER BY-clause. It may only operate on the columns accessible in the selected table or foreign-key links. This field sets the DataSort property.

OK

The OK button applies the changes made using the Data Control Definition Dialog to the selected data control.

Cancel

The Cancel button closes the Data Control Definition dialog without updating the selected data control.


Data Field

The Data Field Dialog allows the selection of an MSM-SQL field (column) to link to a data aware control using a Data Control.

The following options are provided:

Data Field Reference

The Data Field Reference displays the current field to which the control is linked and allows direct entry and editing (see Data Control Usage for further details). This field is automatically filled by selecting a Data Control and Field on this dialog.

Data Control

The Data Control drop-down list allows selection of a Data Control already present on the window containing the selected control, or the selection of the <new> entry to display the Data Control Definition Dialog to create a new Data Control.

Field

The Field list displays a list of the fields accessible using the Data Control selected from the Data Control drop-down list and allows selection of one by double-clicking. This selection is entered into the Data Field Reference field.

OK

The OK button applies the changes made using the Data Field Dialog to the selected control.

Cancel

The Cancel button closes the Data Field Dialog without updating the selected control.

Undo

The Undo button removes successive additions made to the Data Field Reference by double-clicking on the Field list. It is particularly useful when foreign key links are being browsed.


Date Definition

This dialog allows the user to display or edit the most common properties of the Date control. It is displayed automatically as a default on control creation unless the automatic definition windows preference is turned off. The dialog is also accessible by focusing on a date control or selecting a date control on the property bar object drop-down list and either pressing the [image] button on the Toolbar or selecting Definition from the Element menu. A double-click on the object also brings up this dialog, or it can be called from the pop-up menu. The less frequently used properties, which are not on this dialog, are available from the property bar drop-down list.

The following options are provided:

Name

The Name field displays the name of the date control and allows it to be edited.

Local Variable Name

The Local Variable Name field displays the currently selected local variable name to which the date control is linked, if any, and allows it to be edited. Entering a value in this field sets the date control's VarName property.

Permanent

The Permanent check box is checked to make the local variable linked with the control permanent, that is, visible outside of the scope of execution of the window in which the control is contained. This check box is only applicable if the control has been linked to a local variable by entering a name in the Local Variable field. The setting of this check box is reflected in the control's VarPermanent property.

Date Format

The Date Format drop-down list allows the selection of a format for the date display within the control.

Month Names

The Month Names field allows entry of the names or abbreviations to be used for months.  Leave the box empty, or enter 12 month names, separated by the # character.

Data Dictionary Field

The Data Dictionary Field displays the currently selected Data Control and field to which the date control is linked, if any, and allows it to be edited. Entering a value in this field sets the date control's DataField property.

Field Button

The Field button gives access to the Data Field dialog, to allow a Data Control and field to be chosen and linked to the date control.

Action Logic Event

The Event drop-down list allows selection of one of the control's events to allow the entry or editing of the associated action logic. The list contains either the high-level events or all events dependent on a preference setting. The list is initially positioned at the principal event. Events with attached code are signified by a trailing >>.

Action Logic Code

The Code Editor document box shows the action logic associated with the event selected using the Event drop-down list and allows simple text editing capabilities.

Editor

The Editor button invokes the Code Editor window to allow the action logic associated with the event selected using the Action Logic Event drop-down list to be edited. This editor provides greater functionality than the Action Logic Code document box.

Inactive

The Inactive check box is checked to make the date control initially inactive. This sets the Active property to No.

Message

The Message check box is checked to associate a message with the date control, which will be displayed when it has focus. Checking this box allows entry of the message in the Message Text field.

Message Text

The Message Text field allows entry of a message which will be displayed when the date control has focus. This field sets the date control's Message.

Display-Only

The Display-Only check box is checked to make the date control read-only. This sets the DisplayOnly property to Yes.

Required

The Required checkbox is checked to indicate that a selection must be made. This feature is not currently implemented.

OK

The OK button applies the changes made using the Date control Definition Dialog to the selected date control.

Cancel

The Cancel button closes the Date control Definition dialog without updating the selected date control.


Document Definition

This dialog allows the user to display or edit the most common properties of the Document control. It is displayed automatically as a default on control creation unless the automatic definition windows preference is turned off. The dialog is also accessible by focusing on a document control or selecting a document control on the property bar object drop-down list and either pressing the [image] button on the Toolbar or selecting Definition from the Element menu. A double-click on the object also brings up this dialog, or it can be called from the pop-up menu. The less frequently used properties, which are not on this dialog, are available from the property bar drop-down list.

The following options are provided:

Name

The Name field displays the name of the document control and allows it to be edited.

Local Variable Name

The Local Variable Name field displays the currently selected local variable name to which the document control is linked, if any, and allows it to be edited. Entering a value in this field sets the document control's VarName property.

Note that if more than 32k-characters are entered into the document its value cannot be held in an M local variable, and a <MXSTR> error will result.

Permanent

The Permanent check box is checked to make the local variable linked with the control permanent, that is, visible outside of the scope of execution of the window in which the control is contained. This check box is only applicable if the control has been linked to a local variable by entering a name in the Local Variable field. The setting of this check box is reflected in the control's VarPermanent property.

Scrolling Horizontal

The Horizontal Scrolling check box is checked to enable horizontal scrolling within the document control. Checking this box enables the Maximum Width field to allow entry of a maximum horizontal scrolling width.

Scrolling Vertical

The Vertical Scrolling check box is checked to enable vertical scrolling within the document control. Checking this box enables the Maximum Height field to allow entry of a maximum vertical scrolling height.

Scrolling Max Width

The Maximum Width field to allows entry of a maximum horizontal scrolling width. This feature is not currently implemented, and the field should be left empty.

Scrolling Max Height

The Maximum Height field to allows entry of a maximum vertical scrolling height. This feature is not currently implemented, and the field should be left empty.

Scrolling Units

The Units field allows entry of the units type for horizontal and vertical scrolling width and height.

Data Dictionary Field

The Data Dictionary Field displays the currently selected Data Control and field to which the document control is linked, if any, and allows it to be edited. Entering a value in this field sets the document control's DataField property.

Field Button

The Field button gives access to the Data Field dialog, to allow a Data Control and field to be chosen and linked to the document control.

Action Logic Event

The Event drop-down list allows selection of one of the control's events to allow the entry or editing of the associated action logic. The list contains either the high-level events or all events dependent on a preference setting. The list is initially positioned at the principal event. Events with attached code are signified by a trailing >>.

Action Logic Code

The Code Editor document box shows the action logic associated with the event selected using the Event drop-down list and allows simple document control editing capabilities.

Editor

The Editor button invokes the Code Editor window to allow the action logic associated with the event selected using the Action Logic Event drop-down list to be edited. This editor provides greater functionality than the Action Logic Code document box.

Inactive

The Inactive check box is checked to make the document control initially inactive. This sets the Active property to No.

Message

The Message check box is checked to associate a message with the document control, which will be displayed when it has focus. Checking this box allows entry of the message in the Message Document control field.

Message Text

The Message Text field allows entry of a message which will be displayed when the document control has focus. This field sets the document control's Message.

Display-Only

The Display-Only check box is checked to make the document control read-only. This sets the DisplayOnly property to Yes.

OK

The OK button applies the changes made using the Document control Definition Dialog to the selected document control.

Cancel

The Cancel button closes the document control Definition dialog without updating the selected combo box control.


Drop-Down Combo Definition

This dialog allows the user to display or edit the most common properties of the Drop-down Combo control. It is displayed automatically as a default on control creation unless the automatic definition windows preference is turned off. The dialog is also accessible by focusing on a drop-down combo control or selecting a drop-down combo control on the property bar object drop-down list and either pressing the [image] button on the Toolbar or selecting Definition from the Element menu. A double-click on the object also brings up this dialog, or it can be called from the pop-up menu. The less frequently used properties, which are not on this dialog, are available from the property bar drop-down list.

The following options are provided:

Name

The Name field displays the name of the drop-down combo and allows it to be edited.

Local Variable Name

The Local Variable Name field displays the currently selected local variable name to which the drop-down combo control is linked, if any, and allows it to be edited. Entering a value in this field sets the drop-down combo control's VarName property.

Permanent

The Permanent check box is checked to make the local variable linked with the control permanent, that is, visible outside of the scope of execution of the window in which the control is contained. This check box is only applicable if the control has been linked to a local variable by entering a name in the Local Variable field. The setting of this check box is reflected in the control's VarPermanent property.

Choice Type

The Choices groups allows definition of the choices list associated with the drop-down combo. The Radio Button Set allows the option of loading the list from one of the following:

List - A pre-defined static set of choices is used.

Variable - An M subscripted local or global variable specifies the choices.

Data Dictionary – A Data Control and field are linked to the list.

Choices Button

This button access the Choice Editor, which can be used to specify a pre-defined set of choices for the List.  This button becomes active when the List radio button option is chosen.

Choices Variable

Enter an M subscripted local or global variable in this box to specify choices for the drop-down combo.  Entering a value in this field sets the drop-down combo control's ChoiceVar property.  This box becomes active when the Variable radio button option is chosen.

Data Dictionary Field

The Data Dictionary Field displays the currently selected Data Control and field to which the drop-down combo control is linked, if any, and allows it to be edited. Entering a value in this field sets the drop-down combo control's ChoiceField property.

Field Button

The Field button gives access to the Data Field dialog, to allow a Data Control and field to be chosen and linked to the drop-down combo control.

Validation Type

Validation options are allowed if a Local Variable Name has been linked to the drop-down combo.  The Validation drop-down list allows selection of the validation method. The available options are <default> to use the default system validation, Code to supply user code for validation and Custom. The Custom validation option is not yet available.

Validation

The Validation field becomes active when the Code validation option is chosen from the Validation drop-down list. It allows entry of a line of M code to perform the validation. The user input value is supplied in the variable X, and if it fails the user validation, then X should be KILLed.

Display Type

Display options are allowed if a Local Variable Name has been linked to the drop-down combo.  The Display drop-down list allows selection of the display format method. The available options are <default> to display what is input, Code to supply user code for formatting and Custom. The Custom display option is not yet available.

Display

The Display field becomes active when the Code format option is chosen from the Display drop-down list. It allows entry of a line of M code to perform the formatting. The user input value is supplied in the variable X and the formatted value should be returned in the variable Y.

Max Length

The Maximum Length field allows entry of the maximum input length of the text in the drop-down combo control. This sets the MaxLength property.

Action Logic Event

The Event drop-down list allows selection of one of the control's events to allow the entry or editing of the associated action logic. The list contains either the high-level events or all events dependent on a preference setting. The list is initially positioned at the principal event. Events with attached code are signified by a trailing >>.

Action Logic Code

The Code Editor document box shows the action logic associated with the event selected using the Event drop-down list and allows simple text editing capabilities.

Editor

The Editor button invokes the Code Editor window to allow the action logic associated with the event selected using the Action Logic Event drop-down list to be edited. This editor provides greater functionality than the Action Logic Code document box.

Inactive

The Inactive check box is checked to make the drop-down combo control initially inactive. This sets the Active property to No.

Message

The Message check box is checked to associate a message with the drop-down combo, which will be displayed when it has focus. Checking this box allows entry of the message in the Message Text field.

Message Text

The Message Text field allows entry of a message which will be displayed when the drop-down combo has focus. This field sets the drop-down combo control's Message.

Display-Only

The Display-Only check box is checked to make the drop-down combo control read-only. This sets the DisplayOnly property to Yes.

Selection Required

The Selection Required checkbox is checked to indicate that a selection must be made. This feature is not yet implemented.

OK

The OK button applies the changes made using the Drop-down combo Definition Dialog to the selected drop-down combo control.

Cancel

The Cancel button closes the Drop-down combo Definition dialog without updating the selected combo box control.


Drop-Down List Definition

This dialog allows the user to display or edit the most common properties of the Drop-down List control. It is displayed automatically as a default on control creation unless the automatic definition windows preference is turned off. The dialog is also accessible by focusing on a drop-down list control or selecting a drop-down list control on the property bar object drop-down list and either pressing the [image] button on the Toolbar or selecting Definition from the Element menu. A double-click on the object also brings up this dialog, or it can be called from the pop-up menu.   The less frequently used properties, which are not on this dialog, are available from the property bar drop-down list.

The following options are provided:

Name

The Name field displays the name of the drop-down list and allows it to be edited.

Local Variable Name

The Local Variable Name field displays the currently selected local variable name to which the drop-down list control is linked, if any, and allows it to be edited. Entering a value in this field sets the drop-down list control's VarName property.

Permanent

The Permanent check box is checked to make the local variable linked with the control permanent, that is, visible outside of the scope of execution of the window in which the control is contained. This check box is only applicable if the control has been linked to a local variable by entering a name in the Local Variable field. The setting of this check box is reflected in the control's VarPermanent property.

Choice Type

The Choices groups allows definition of the choices list associated with the drop-down list. The Radio Button Set allows the option of loading the list from one of the following:

List - A pre-defined static set of choices is used.

Variable - An M subscripted local or global variable specifies the choices.

Data Dictionary – A Data Control and field are linked to the list.

Choices Button

This button access the Choice Editor, which can be used to specify a pre-defined set of choices for the List.  This button becomes active when the List radio button option is chosen.

Choices Variable

Enter an M subscripted local or global variable in this box to specify choices for the drop-down list.  Entering a value in this field sets the drop-down list control's ChoiceVar property.  This box becomes active when the Variable radio button option is chosen.

Data Dictionary Field

The Data Dictionary Field displays the currently selected Data Control and field to which the drop-down list control is linked, if any, and allows it to be edited. Entering a value in this field sets the drop-down list control's ChoiceField property.

Field Button

The Field button gives access to the Data Field dialog, to allow a Data Control and field to be chosen and linked to the drop-down list control.

Action Logic Event

The Event drop-down list allows selection of one of the control's events to allow the entry or editing of the associated action logic. The list contains either the high-level events or all events dependent on a preference setting. The list is initially positioned at the principal event. Events with attached code are signified by a trailing >>.

Action Logic Code

The Code Editor document box shows the action logic associated with the event selected using the Event drop-down list and allows simple text editing capabilities.

Editor

The Editor button invokes the Code Editor window to allow the action logic associated with the event selected using the Action Logic Event drop-down list to be edited. This editor provides greater functionality than the Action Logic Code document box.

Inactive

The Inactive check box is checked to make the drop-down list control initially inactive. This sets the Active property to No.

Display-Only

The Display-Only check box is checked to make the drop-down list control read-only. This sets the DisplayOnly property to Yes.

Message

The Message check box is checked to associate a message with the drop-down list, which will be displayed when it has focus. Checking this box allows entry of the message in the Message Text field.

Message Text

The Message Text field allows entry of a message which will be displayed when the drop-down list has focus. This field sets the drop-down list control's Message.

Selection Required

The Selection Required checkbox is checked to indicate that a selection must be made. This feature is not yet implemented.

OK

The OK button applies the changes made using the Drop-down list Definition Dialog to the selected drop-down list control.

Cancel

The Cancel button closes the Drop-down list Definition dialog without updating the selected drop-down list control.


Generic Definition

This dialog allows the user to display or edit the most common properties of the Generic control. It is displayed automatically as a default on control creation unless the automatic definition windows preference is turned off. The dialog is also accessible by focusing on a generic box control or selecting a generic box control on the property bar drop-down list and either pressing the [image] button on the Toolbar or selecting Definition from the Element menu. A double-click on the object also brings up this dialog, or it can be called from the pop-up menu. The less frequently used properties, which are not on this dialog, are available from the property bar drop-down list.

The following options are provided:

Name

The Name field displays the name of the generic box and allows it to be edited.

Action Logic Event

The Event drop-down list allows selection of one of the control's events to allow the entry or editing of the associated action logic. The list contains either the high-level events or all events dependent on a preference setting. The list is initially positioned at the principal event. Events with attached code are signified by a trailing >>.

Action Logic Code

The Code Editor document box shows the action logic associated with the event selected using the Event drop-down list and allows simple text editing capabilities.

Editor

The Editor button invokes the Code Editor window to allow the action logic associated with the event selected using the Action Logic Event drop-down list to be edited. This editor provides greater functionality than the Action Logic Code document box.

Inactive

The Inactive check box is checked to make the generic box control initially inactive. This sets the Active property to No.

Message

The Message check box is checked to associate a message with the generic box, which will be displayed when it has focus. Checking this box allows entry of the message in the Message Text field.

Message Text

The Message Text field allows entry of a message which will be displayed when the generic box has focus. This field sets the generic box control's Message.

OK

The OK button applies the changes made using the Generic Box Definition Dialog to the selected generic box control.

Cancel

The Cancel button closes the Generic Box Definition dialog without updating the selected generic box control.


Group Box Definition

This dialog allows the user to display or edit the most common properties of the Group Box control. It is displayed automatically as a default on control creation unless the automatic definition windows preference is turned off. The dialog is also accessible by focusing on a group box control or selecting a group box control on the property bar drop-down list and either pressing the [image] button on the Toolbar or selecting Definition from the Element menu. A double-click on the object also brings up this dialog, or it can be called from the pop-up menu. The less frequently used properties, which are not on this dialog, are available from the property bar drop-down list.

The following options are provided:

Name

The Name field displays the name of the group box and allows it to be edited.

Text

The Text field displays the current group box Title property and allows it to be edited.

OK

The OK button applies the changes made using the Group Box Definition Dialog to the selected group box control.

Cancel

The Cancel button closes the Group Box Definition dialog without updating the selected group box control.


Label Definition

This dialog allows the user to display or edit the most common properties of the Label control. It is displayed automatically as a default on control creation unless the automatic definition windows preference is turned off. The dialog is also accessible by focusing on a label control or selecting a label control on the property bar drop-down list and either pressing the [image] button on the Toolbar or selecting Definition from the Element menu. A double-click on the object also brings up this dialog, or it can be called from the pop-up menu. The less frequently used properties, which are not on this dialog, are available from the property bar drop-down list.

The following options are provided:

Name

The Name field displays the name of the label and allows it to be edited.

Text

The Text field displays the current label Title property and allows it to be edited.

OK

The OK button applies the changes made using the Label Definition Dialog to the selected label control.

Cancel

The Cancel button closes the Label Definition dialog without updating the selected label control.


List Box Definition

This dialog allows the user to display or edit the most common properties of the List Box control. It is displayed automatically as a default on control creation unless the automatic definition windows preference is turned off. The dialog is also accessible by focusing on a list box control or selecting a list box control on the property bar object drop-down list and either pressing the [image] button on the Toolbar or selecting Definition from the Element menu. A double-click on the object also brings up this dialog, or it can be called from the pop-up menu. The less frequently used properties, which are not on this dialog, are available from the property bar drop-down list.

The following options are provided:

Name

The Name field displays the name of the list box and allows it to be edited.

Local Variable Name

The Local Variable Name field displays the currently selected local variable name to which the list box control is linked, if any, and allows it to be edited. Entering a value in this field sets the list box control's VarName property.

Permanent

The Permanent check box is checked to make the local variable linked with the control permanent, that is, visible outside of the scope of execution of the window in which the control is contained. This check box is only applicable if the control has been linked to a local variable by entering a name in the Local Variable field. The setting of this check box is reflected in the control's VarPermanent property.

Choice Type

The Choices groups allows definition of the choices list associated with the list box. The Radio Button Set allows the option of loading the list from one of the following:

List - A pre-defined static set of choices is used.

Variable - An M subscripted local or global variable specifies the choices.

Data Dictionary – A Data Control and field are linked to the list.

Choices Button

This button access the Choice Editor, which can be used to specify a pre-defined set of choices for the List.  This button becomes active when the List radio button option is chosen.

Choices Variable

Enter an M subscripted local or global variable in this box to specify choices for the list box.  Entering a value in this field sets the list box control's ChoiceVar property.  This box becomes active when the Variable radio button option is chosen.

Data Dictionary Field

The Data Dictionary Field displays the currently selected Data Control and field to which the list box control is linked, if any, and allows it to be edited. Entering a value in this field sets the list box control's ChoiceField property.

Field Button

The Field button gives access to the Data Field dialog, to allow a Data Control and field to be chosen and linked to the list box control.

Action Logic Event

The Event drop-down list allows selection of one of the control's events to allow the entry or editing of the associated action logic. The list contains either the high-level events or all events dependent on a preference setting. The list is initially positioned at the principal event. Events with attached code are signified by a trailing >>.

Action Logic Code

The Code Editor document box shows the action logic associated with the event selected using the Event drop-down list and allows simple text editing capabilities.

Editor

The Editor button invokes the Code Editor window to allow the action logic associated with the event selected using the Action Logic Event drop-down list to be edited. This editor provides greater functionality than the Action Logic Code document box.

Inactive

The Inactive check box is checked to make the list box control initially inactive. This sets the Active property to No.

Display-Only

The Display-Only check box is checked to make the list box control read-only. This sets the DisplayOnly property to Yes.

Message

The Message check box is checked to associate a message with the list box, which will be displayed when it has focus. Checking this box allows entry of the message in the Message Text field.

Message Text

The Message Text field allows entry of a message which will be displayed when the list box has focus. This field sets the list box control's Message.

Selection Required

The Selection Required checkbox is checked to indicate that a selection must be made. This feature is not currently implemented.

Multiple Selection

The Multiple Selection check box is checked to allow multiple selections within the list box. Checking this box allows entry of the maximum number of selections allowed in the Max# field. A value of 0 (zero) signifies unlimited selections.

Max#

The maximum number of selections allowed is entered in the Max# field. A value of 0 (zero) signifies unlimited selections.

OK

The OK button applies the changes made using the List Box Definition Dialog to the selected list box control.

Cancel

The Cancel button closes the List Box Definition dialog without updating the selected list box control.


Long List Definition

This dialog allows the user to display or edit the most common properties of the Long List control. It is displayed automatically as a default on control creation unless the automatic definition windows preference is turned off. The dialog is also accessible by focusing on a long list control or selecting a long list control on the property bar object drop-down list and either pressing the [image] button on the Toolbar or selecting Definition from the Element menu. A double-click on the object also brings up this dialog, or it can be called from the pop-up menu The less frequently used properties, which are not on this dialog, are available from the property bar drop-down list.

The following options are provided:

Name

The Name field displays the name of the long list box and allows it to be edited.

Local Variable Name

The Local Variable Name field displays the currently selected local variable name to which the long list box control is linked, if any, and allows it to be edited. Entering a value in this field sets the long list box control's VarName property.

Permanent

The Permanent check box is checked to make the local variable linked with the control permanent, that is, visible outside of the scope of execution of the window in which the control is contained. This check box is only applicable if the control has been linked to a local variable by entering a name in the Local Variable field. The setting of this check box is reflected in the control's VarPermanent property.

Choice Type

The Choices groups allows definition of the choices list associated with the long list box. The Radio Button Set allows the option of loading the list from one of the following:

List - A pre-defined static set of choices is used.

Variable - An M subscripted local or global variable specifies the choices.

Data Dictionary – A Data Control and field are linked to the long list.

Choices Button

This button access the Choice Editor, which can be used to specify a pre-defined set of choices for the Long list.  This button becomes active when the List radio button option is chosen.

Choices Variable

Enter an M subscripted local or global variable in this box to specify choices for the long list box.  Entering a value in this field sets the long list box control's ChoiceVar property.  This box becomes active when the Variable radio button option is chosen.

Data Dictionary Field

The Data Dictionary Field displays the currently selected Data Control and field to which the long list box control is linked, if any, and allows it to be edited. Entering a value in this field sets the long list box control's ChoiceField property.

Field Button

The Field button gives access to the Data Field dialog, to allow a Data Control and field to be chosen and linked to the long list box control.

Action Logic Event

The Event drop-down list allows selection of one of the control's events to allow the entry or editing of the associated action logic. The list contains either the high-level events or all events dependent on a preference setting. The list is initially positioned at the principal event. Events with attached code are signified by a trailing >>.

Action Logic Code

The Code Editor document box shows the action logic associated with the event selected using the Event drop-down list and allows simple text editing capabilities.

Editor

The Editor button invokes the Code Editor window to allow the action logic associated with the event selected using the Action Logic Event drop-down list to be edited. This editor provides greater functionality than the Action Logic Code document box.

Inactive

The Inactive check box is checked to make the long list box control initially inactive. This sets the Active property to No.

Display-Only

The Display-Only check box is checked to make the long list box control read-only. This sets the DisplayOnly property to Yes.

Message

The Message check box is checked to associate a message with the long list box, which will be displayed when it has focus. Checking this box allows entry of the message in the Message Text field.

Message Text

The Message Text field allows entry of a message which will be displayed when the long list box has focus. This field sets the long list box control's Message.

Selection Required

The Selection Required checkbox is checked to indicate that a selection must be made. This feature is not currently implemented.

Multiple Selection

The Multiple Selection check box is checked to allow multiple selections within the long list box. Checking this box allows entry of the maximum number of selections allowed in the Max# field. A value of 0 (zero) signifies unlimited selections.

Max#

The maximum number of selections allowed is entered in the Max# field. A value of 0 (zero) signifies unlimited selections.

OK

The OK button applies the changes made using the Long list Box Definition Dialog to the selected long list box control.

Cancel

The Cancel button closes the Long list Box Definition dialog without updating the selected long list box control.


Module Definition

This dialog allows the selection of objects for addition to or deletion from a Module.

The following options are provided:

Module Name

The Module Name field displays the name of the selected module and allows you to edit or change the name in order to rename the module.

Application

The Application checkbox, if checked, indicates that this module may be made into a Windows executable file.

Component Objects

The Components list shows the components of the selected module prefaced by their type. This list allows single or multiple selections to be made for removal from the module using the Remove button, which automatically becomes highlighted when selections are made.

Object Name

The Object Name is where selections for adding are displayed or entered. Characters entered here restrict the contents of the Name List.

Name List

The Name List displays existing objects limited to the type chosen in the List Objects of Type drop-down list and allows single or multiple selections to be made for addition to the selected module by means of the Add button. The object name is prefaced by its type.

List Objects of Type

The List Objects of Type drop-down list allows selection of an object type to be shown in the Name List.

Database

Select the database whose objects you wish to select from. Not available on some object types.

Browse

Unimplemented.

Notes

The Notes field allows free form entry of any descriptive information regarding the module.

Drop

The Drop button removes any selections made in the Components of Module list from the module. This button is inactive until selections are made in the Components of Module list.

Add

The Add button will add any selections made in the Name List to the module components and they will appear in the Components of Module list.

OK

The OK button is used to close the Module Definition dialog and save all changes.

Cancel

The Cancel button closes the Module Definition dialog without making any changes.


Picture Definition

This dialog allows the user to display or edit the most common properties of the Picture control. It is displayed automatically as a default on control creation unless the automatic definition windows preference is turned off. The dialog is also accessible by focusing on a picture control or selecting a picture control on the property bar drop-down list and either pressing the [image] button on the Toolbar or selecting Definition from the Element menu. A double-click on the object also brings up this dialog, or it can be called from the pop-up menu. The less frequently used properties, which are not on this dialog, are available from the property bar drop-down list.

The following options are provided:

Name

The Name field displays the name of the picture and allows it to be edited.

Picture

The Picture field displays the current picture's Picture property and allows it to be edited. This specifies the picture which will be displayed in the picture control.

OK

The OK button applies the changes made using the Picture Definition Dialog to the selected picture control.

Browse

The Browse button allows a bitmapp or icon file to be located.

Cancel

The Cancel button closes the Picture Definition dialog without updating the selected picture control.


Radio Button Definition

This dialog allows the user to display or edit the most common properties of the Radio Button control. It is displayed automatically as a default on control creation unless the automatic definition windows preference is turned off. The dialog is also accessible by focusing on a radio button control or selecting a radio button control on the property bar object drop-down list and either pressing the [image] button on the Toolbar or selecting Definition from the Element menu. A double-click on the object also brings up this dialog, or it can be called from the pop-up menu The less frequently used properties, which are not on this dialog, are available from the property bar drop-down list.

The following options are provided:

Name

The Name field displays the name of the radio button and allows it to be edited.

Local Variable Name

The Local Variable Name field displays the currently selected local variable name to which the radio button control is linked, if any, and allows it to be edited. Entering a value in this field sets the radio button control's VarName property.

Permanent

The Permanent check box is checked to make the local variable linked with the control permanent, that is, visible outside of the scope of execution of the window in which the control is contained. This check box is only applicable if the control has been linked to a local variable by entering a name in the Local Variable field. The setting of this check box is reflected in the control's VarPermanent property.

Orientation

The Orientation radio button set is used to specify whether the radio button control should be arranged vertically or horizontally. If vertical is chosen, then the number of columns can be specified in the Columns field. If horizontal is chosen, then the number of rows can be specified in the Rows field.

Number of Columns

The Columns field can be used to specify the number of columns if the layout chosen using the Orientation radio button set is vertical. If a horizontal layout is chosen, then this field is inactive.

Number of Rows

The Rows field can be used to specify the number of rows if the layout chosen using the Orientation radio button set is horizontal. If a vertical layout is chosen, then this field is inactive.

Choices Button

This button access the Choice Editor, which can be used to specify a pre-defined set of choices for the radio button.

Data Dictionary Field

The Data Dictionary Field displays the currently selected Data Control and field to which the radio button control is linked, if any, and allows it to be edited. Entering a value in this field sets the radio button control's DataField property.

Field Button

The Field button gives access to the Data Field dialog, to allow a Data Control and field to be chosen and linked to the radio button control.

Action Logic Event

The Event drop-down list allows selection of one of the control's events to allow the entry or editing of the associated action logic. The list contains either the high-level events or all events dependent on a preference setting. The list is initially positioned at the principal event. Events with attached code are signified by a trailing >>.

Action Logic Code

The Code Editor document box shows the action logic associated with the event selected using the Event drop-down list and allows simple text editing capabilities.

Editor

The Editor button invokes the Code Editor window to allow the action logic associated with the event selected using the Action Logic Event drop-down list to be edited. This editor provides greater functionality than the Action Logic Code document box.

Inactive

The Inactive check box is checked to make the radio button control initially inactive. This sets the Active property to No.

Message

The Message check box is checked to associate a message with the radio button, which will be displayed when it has focus. Checking this box allows entry of the message in the Message Text field.

Message Text

The Message Text field allows entry of a message which will be displayed when the radio button has focus. This field sets the radio button control's Message.

Display-Only

The Display-Only check box is checked to make the radio button control read-only. This sets the DisplayOnly property to Yes.

OK

The OK button applies the changes made using the Radio button Definition Dialog to the selected radio button control.

Cancel

The Cancel button closes the Radio button Definition dialog without updating the selected radio button control.


Scroll Definition

This dialog allows the user to display or edit the most common properties of the Scroll control. It is displayed automatically as a default on control creation unless the automatic definition windows preference is turned off. The dialog is also accessible by focusing on a scroll control or selecting a scroll control on the property bar object drop-down list and either pressing the [image] button on the Toolbar or selecting Definition from the Element menu. A double-click on the object also brings up this dialog, or it can be called from the pop-up menu The less frequently used properties, which are not on this dialog, are available from the property bar drop-down list.

The following options are provided:

Name

The Name field displays the name of the scroll control and allows it to be edited.

Local Variable Name

The Local Variable Name field displays the currently selected local variable name to which the scroll control is linked, if any, and allows it to be edited. Entering a value in this field sets the scroll control's VarName property.

Permanent

The Permanent check box is checked to make the local variable linked with the control permanent, that is, visible outside of the scope of execution of the window in which the control is contained. This check box is only applicable if the control has been linked to a local variable by entering a name in the Local Variable field. The setting of this check box is reflected in the control's VarPermanent property.

Small Step

The Small Step field is used to enter the amount by which the Scroll control's value will change when either of the arrows on the ends of the control are clicked on. This sets the ScrollSmall property.

Large Step

The Large Step field is used to enter the amount by which the Scroll control's value will change when the scroll bar is clicked between either of the arrows on the ends of the control and the thumb. This sets the ScrollLarge property.

Minimum Value

The Minimum Value field is used to enter the minimum value of the Scroll control's value This sets the ScrollMin property.

Maximum Value

The Maximum Value field is used to enter the maximum value of the Scroll control's value This sets the ScrollMax property.

Data Dictionary Field

The Data Dictionary Field displays the currently selected Data Control and field to which the scroll control is linked, if any, and allows it to be edited. Entering a value in this field sets the scroll control's DataField property.

Field Button

The Field button gives access to the Data Field dialog, to allow a Data Control and field to be chosen and linked to the scroll control.

Action Logic Event

The Event scroll control allows selection of one of the control's events to allow the entry or editing of the associated action logic. The list contains either the high-level events or all events dependent on a preference setting. The list is initially positioned at the principal event. Events with attached code are signified by a trailing >>.

Action Logic Code

The Code Editor document box shows the action logic associated with the event selected using the Event scroll control and allows simple text editing capabilities.

Editor

The Editor button invokes the Code Editor window to allow the action logic associated with the event selected using the Action Logic Event drop-down list to be edited. This editor provides greater functionality than the Action Logic Code document box.

Inactive

The Inactive check box is checked to make the scroll control initially inactive. This sets the Active property to No.

Message

The Message check box is checked to associate a message with the scroll control, which will be displayed when it has focus. Checking this box allows entry of the message in the Message Text field.

Message Text

The Message Text field allows entry of a message which will be displayed when the scroll control has focus. This field sets the scroll control's Message.

Display-Only

The Display-Only check box is checked to make the scroll control read-only. This sets the DisplayOnly property to Yes.

OK

The OK button applies the changes made using the Scroll control Definition Dialog to the selected scroll control.

Cancel

The Cancel button closes the Scroll control Definition dialog without updating the selected scroll control.


Spin Button Definition

This dialog allows the user to display or edit the most common properties of the Spin Button control. It is displayed automatically as a default on control creation unless the automatic definition windows preference is turned off. The dialog is also accessible by focusing on a spin button control or selecting a spin button control on the property bar object drop-down list and either pressing the [image] button on the Toolbar or selecting Definition from the Element menu. A double-click on the object also brings up this dialog, or it can be called from the pop-up menu The less frequently used properties, which are not on this dialog, are available from the property bar drop-down list.

The following options are provided:

Name

The Name field displays the name of the spin button control and allows it to be edited.

Local Variable Name

The Local Variable Name field displays the currently selected local variable name to which the spin button control is linked, if any, and allows it to be edited. Entering a value in this field sets the spin button control's VarName property.

Permanent

The Permanent check box is checked to make the local variable linked with the control permanent, that is, visible outside of the scope of execution of the window in which the control is contained. This check box is only applicable if the control has been linked to a local variable by entering a name in the Local Variable field. The setting of this check box is reflected in the control's VarPermanent property.

Minimum Value

The Minimum Value field allows entry of a value for the lower bound of the value in the spin button control at run time.

Maximum Value

The Maximum Value field allows entry of a value for the upper bound of the value in the spin button control at run time.

Data Dictionary Field

The Data Dictionary Field displays the currently selected Data Control and field to which the spin button control is linked, if any, and allows it to be edited. Entering a value in this field sets the spin button control's DataField property.

Field Button

The Field button gives access to the Data Field dialog, to allow a Data Control and field to be chosen and linked to the spin button control.

Action Logic Event

The Event spin button control allows selection of one of the control's events to allow the entry or editing of the associated action logic. The list contains either the high-level events or all events dependent on a preference setting. The list is initially positioned at the principal event. Events with attached code are signified by a trailing >>.

Action Logic Code

The Code Editor document box shows the action logic associated with the event selected using the Event spin button control and allows simple text editing capabilities.

Editor

The Editor button invokes the Code Editor window to allow the action logic associated with the event selected using the Action Logic Event drop-down list to be edited. This editor provides greater functionality than the Action Logic Code document box.

Inactive

The Inactive check box is checked to make the spin button control initially inactive. This sets the Active property to No.

Required

The Required checkbox is checked to indicate that a selection must be made. This feature is not implemented.

Message

The Message check box is checked to associate a message with the spin button control, which will be displayed when it has focus. Checking this box allows entry of the message in the Message Text field.

Message Text

The Message Text field allows entry of a message which will be displayed when the spin button control has focus. This field sets the spin button control's Message.

Display-Only

The Display-Only check box is checked to make the spin button control read-only. This sets the DisplayOnly property to Yes.

OK

The OK button applies the changes made using the Spin button control Definition Dialog to the selected spin button control.

Cancel

The Cancel button closes the Spin button control Definition dialog without updating the selected spin button control.


Tabbed Group Definition

This dialog allows the user to create a Tabbed Group control.

The following options are provided on the General tab:

Enabled

Click this to enable the Tabbed Group control.

MultiRow

Click this to allow multiple rows of tabs.

TabWidthStyle

This allows setting the style of the tabs to use justified, non-justified, or fixed widths.

OK

The OK button applies the changes made using the Tabbed Group control Definition Dialog to the selected Tabbed Group control and closes the dialog.

Cancel

The Cancel button closes the Tabbed Group control definition dialog without updating the selected Tabbed Group control.

Apply

The OK button applies the changes made using the Tabbed Group control Definition Dialog to the selected Tabbed Group control, but does not close the dialog.


Tabbed Group Definition - Tabs

This dialog allows the user to create a Tabbed Group control.

The following options are provided on the Tabs tab:

Index

Enter the Index number of the tab you wish to deal with.  The arrow buttons may be used to scroll the number.

Caption

Enter the caption for the tab indicated by Index.

Insert Tab

Click to insert a new tab. Avoid using this to insert tabs in front of any existing ones on which controls have been placed. Instead, use the options from the right-click menu on the control.

Remove Tab

Click to remove the tab specified by Index. Avoid using this to delete tabs once controls have been placed on pages. Instead, use the options from the right-click menu on the control.


Tabbed Group Definition - Fonts

This dialog allows the user to create a Tabbed Group control.

The following options are provided on the Fonts tab:

Property Name

Only the Font property may be modified.

Font

Select the font face to be used on tab labels.

Font Style

Select the font style to be used on tab labels.

Size

Select the font size to be used on tab labels.

Effects

Select the font effects to be used on tab labels.


Text Box Definition

This dialog allows the user to display or edit the most common properties of the Text Box control. It is displayed automatically as a default on control creation unless the automatic definition windows preference is turned off. The dialog is also accessible by focusing on a text box control or selecting a text box control on the property bar object drop-down list and either pressing the [image] button on the Toolbar or selecting Definition from the Element menu. A double-click on the object also brings up this dialog, or it can be called from the pop-up menu The less frequently used properties, which are not on this dialog, are available from the property bar drop-down list.

The following options are provided:

Name

The Name field displays the name of the text box and allows it to be edited.

Local Variable Name

The Local Variable Name field displays the currently selected local variable name to which the text box control is linked, if any, and allows it to be edited. Entering a value in this field sets the text box control's VarName property.

Permanent

The Permanent check box is checked to make the local variable linked with the control permanent, that is, visible outside of the scope of execution of the window in which the control is contained. This check box is only applicable if the control has been linked to a local variable by entering a name in the Local Variable field. The setting of this check box is reflected in the control's VarPermanent property.

Validation Type

Validation options are allowed if a Local Variable Name has been linked to the text box.  The Validation drop-down list allows selection of the validation method. The available options are <default> to use the default system validation, Code to supply user code for validation and Custom. The Custom validation option is not yet available.

Validation

The Validation field becomes active when the Code validation option is chosen from the Validation drop-down list. It allows entry of a line of M code to perform the validation. The user input value is supplied in the variable X, and if it fails the user validation, then X should be KILLed.

Display Type

Display options are allowed if a Local Variable Name has been linked to the text box.  The Display drop-down list allows selection of the display format method. The available options are <default> to display what is input, Code to supply user code for formatting and Custom. The Custom display option is not yet available.

Display

The Display field becomes active when the Code format option is chosen from the Display drop-down list. It allows entry of a line of M code to perform the formatting. The user input value is supplied in the variable X and the formatted value should be returned in the variable Y.

Max Length

The Maximum Length field allows entry of the maximum input length of the text box in the text box control. This sets the MaxLength property.

Data Dictionary Field

The Data Dictionary Field displays the currently selected Data Control and field to which the text box control is linked, if any, and allows it to be edited. Entering a value in this field sets the text box control's DataField property.

Field Button

The Field button gives access to the Data Field dialog, to allow a Data Control and field to be chosen and linked to the text box control.

Action Logic Event

The Event drop-down list allows selection of one of the control's events to allow the entry or editing of the associated action logic. The list contains either the high-level events or all events dependent on a preference setting. The list is initially positioned at the principal event. Events with attached code are signified by a trailing >>.

Action Logic Code

The Code Editor document box shows the action logic associated with the event selected using the Event drop-down list and allows simple text box editing capabilities.

Editor

The Editor button invokes the Code Editor window to allow the action logic associated with the event selected using the Action Logic Event drop-down list to be edited. This editor provides greater functionality than the Action Logic Code document box.

Inactive

The Inactive check box is checked to make the text box control initially inactive. This sets the Active property to No.

Required

The Required checkbox is checked to indicate that at least one character must be entered. This feature is not currently implemented.

Message

The Message check box is checked to associate a message with the text box, which will be displayed when it has focus. Checking this box allows entry of the message in the Message Text box field.

Message Text

The Message Text field allows entry of a message which will be displayed when the text box has focus. This field sets the text box control's Message.

Display-Only

The Display-Only check box is checked to make the text box control read-only. This sets the DisplayOnly property to Yes.

OK

The OK button applies the changes made using the Text box Definition Dialog to the selected text box control.

Cancel

The Cancel button closes the text box control Definition dialog without updating the selected text box control.


Timer Definition

This dialog allows the user to display or edit the most common properties of the Timer control. It is displayed automatically as a default on control creation unless the automatic definition windows preference is turned off. The dialog is also accessible by focusing on a timer control or selecting a timer control on the property bar object drop-down list and either pressing the [image] button on the Toolbar or selecting Definition from the Element menu. A double-click on the object also brings up this dialog, or it can be called from the pop-up menu The less frequently used properties, which are not on this dialog, are available from the property bar drop-down list.

The following options are provided:

Name

The Name field displays the name of the timer and allows it to be edited.

Interval

The Interval field displays the Timer interval in seconds and allows it to be edited.

Inactive

The Inactive check box is checked to make the timer control initially inactive. This sets the Active property to No.

Action Logic Event

The Event drop-down list allows selection of one of the control's events to allow the entry or editing of the associated action logic. The list contains either the high-level events or all events dependent on a preference setting. The list is initially positioned at the principal event. Events with attached code are signified by a trailing >>.

Action Logic Code

The Code Editor document box shows the action logic associated with the event selected using the Event drop-down list and allows simple text box editing capabilities.

Editor

The Editor button invokes the Code Editor window to allow the action logic associated with the event selected using the Action Logic Event drop-down list to be edited. This editor provides greater functionality than the Action Logic Code document box.

OK

The OK button applies the changes made using the Timer Definition Dialog to the selected timer control.

Cancel

The Cancel button closes the timer control Definition dialog without updating the selected timer control.


Toolbar Definition

This dialog allows the user to display or edit toolbars.

The following options are provided:

Toolbar Name

Up to 20 alphanumeric, beginning alpha.

Site

Edge on which  toolbar is docked

Invisible

Check to make toolbar initially invisible

Picture Width

Width of each image in picture strip

Picture Height

Height of each image in picture strip

Button Width

Width of each button. Must be at least 7 greater than picture width

Button Height

Height of each button. Must be at least 6 greater than picture height

Toolbar Width

Width of toolbar. Must be at least 5 greater than button width

Toolbar Height

Height of toolbar. Must be at least 5 greater than button height

Source

Source of bitmap providing button pictures. File type requires an individual .BMP file. Resource type requires a .DLL or .EXE file containing a bitmap resource whose ID matches the value set in the Index field.

File

File providing button picture strip

Browse

Browse for a file

Index

ID of resource within file. Applies only to Source type of Resource.

OK

Accept changes.

Cancel

Cancel changes.


Toolbar Choice

This dialog allows the user to display or edit toolbar choices.

The following options are provided:

Style

Behavior of toolbar button.

Image

Zero-based index of button image within toolbar bitmap strip resource. Image is previewed on the right.

ToolTip

Text to appear when mouse pauses over button while window has focus.

Action Logic Event

The Event drop-down list allows selection of one of the control's events to allow the entry or editing of the associated action logic. The list contains either the high-level events or all events dependent on a preference setting. The list is initially positioned at the principal event. Events with attached code are signified by a trailing >>.

Action Logic Code

The Code Editor document box shows the action logic associated with the event selected using the Event drop-down list and allows simple text box editing capabilities.

Editor

The Editor button invokes the Code Editor window to allow the action logic associated with the event selected using the Action Logic Event drop-down list to be edited. This editor provides greater functionality than the Action Logic Code document box.

Application ID

String that may be used in macros operating on the button.

Accelerator

Keyboard equivalent of pressing the button with the mouse.

Inactive

When checked, button is initially disabled.

Separator

Gap in pixels ahead of button.

Initial Value

State of button on creation.

OK

Accept.

Cancel

Cancel


Window Definition

This dialog allows the user to display or edit the most common properties of a GUI Window. It is displayed automatically as a default on window creation unless the automatic definition windows preference is turned off. The dialog is also accessible by focusing on a window or selecting <window> on the property bar drop-down list and either pressing the [image] window on the Toolbar or selecting Definition from the Element menu. A double-click on an empty area of the window surface also brings up this dialog, or it can be called from the pop-up menu. The less frequently used properties, which are not on this dialog, are available from the property bar drop-down list.

The following options are provided:

Name

The Name field displays the name of the window and allows it to be edited.

Title

The Title field displays the current window Title property which is displayed in the window title bar and allows it to be edited.

Type

The Type drop-down list displays the current window Type property and allows it to be edited. This is used for setting whether the window is a normal one, and MDI parent, or an MDI child.

Action Logic Event

The Event drop-down list allows selection of one of the window's events to allow the entry or editing of the associated action logic. The list contains either the high-level events or all events dependent on a preference setting. The list is initially positioned at the principal event. Events with attached code are signified by a trailing >>.

Action Logic Code

The Code Editor document box shows the action logic associated with the event selected using the Event drop-down list and allows simple text box editing capabilities.

Editor

The Editor button invokes the Code Editor window to allow the action logic associated with the event selected using the Action Logic Event drop-down list to be edited. This editor provides greater functionality than the Action Logic Code document box.

Inactive

The Inactive check box is checked to make the window initially inactive. This sets the Active property to No.

Invisible

The Invisible check box is checked to make the window initially invisible at run time. This sets the Visible property to No.

Message

The Message check box is checked to associate a message with the window, which will be displayed when it has focus. Checking this box allows entry of the message in the Message Text field.

Message Text

The Message Text field becomes accessible when the Message check box is checked and allows entry of a message which will be displayed when the window has focus. This field sets the window control's Message.

Resizable

The Resizable check box is checked to give the window a sizing border at run time, allowing the user to resize it. This sets the window's Resizable property to Yes.

Minimize

The Minimize Button check box is checked to give the window a minimize button at run time, allowing the user to iconify it. This sets the window's MinButton property to Yes.

No Title Bar

The No Title Bar check box is checked to give the window a style which has no title bar at run time. Setting this clears Title, Resizable and Minimize.

OK

The OK button applies the changes made using the Window Definition Dialog to the selected window.

Cancel

The Cancel button closes the Window Definition Dialog without updating the selected window.

Info

The Info button displays the Window Information Dialog which contains notes and other information about the window.


Window Information

This dialog displays information about the currently focused window and allows the entry of notes.

The following options are provided:

Last Compiled

The Last Compiled field displays the date and time that the window was last compiled.

Routine Name

The Routine Name field displays the name of the compiled window routine.

Notes

The Notes document box displays any user entered notes associated with the window and allows free form entry of any descriptive information regarding the window. The notes area allows simple text editing capabilities.

OK

The OK button applies any changes made using the Window Information Dialog.

Cancel

The Cancel button closes the Window Information Dialog without applying any changes made.


The Name field displays the name of the button and allows it to be edited.


The Text field displays the current button Title property and allows it to be edited.


The Picture field displays the current button Picture property and allows it to be edited. This is used for displaying bitmaps on a button.


Click this button to browse for a Picture bitmap file.


The Event drop-down list allows selection of one of the control's events to allow the entry or editing of the associated action logic. The list contains either the high-level events or all events dependent on a preference setting. The list is initially positioned at the principal event. Events with attached code are signified by a trailing >>.


The Code Editor document box shows the action logic associated with the event selected using the Event drop-down list and allows simple text editing capabilities.


The Editor button invokes the Code Editor window to allow the action logic associated with the event selected using the Action Logic Event drop-down list to be edited. This editor provides greater functionality than the Action Logic Code document box.


The Inactive check box is checked to make the button initially inactive. This sets the Active property to No.


The Message check box is checked to associate a message with the button, which will be displayed when it has focus. Checking this box allows entry of the message in the Message Text field.  The Message Text field allows entry of a message which will be displayed when the button has focus. This field sets the button control's Message.


The Default Button check box is checked to make this button the default button for the window. This sets the window's DefaultButton property to the Name of the button control.


The Cancel Button check box is checked to set the CancelButton property of the window to the Name of the button control. At run-time, pressing the Escape key while focused on the window will cause this button to be pushed.


The OK button applies the changes made using the Button Definition dialog to the selected button control.


The Cancel button closes the Button Definition dialog without updating the selected button control.


The Name field displays the nameName_P of the check box and allows it to be edited.


The Text field displays the current check box TitleProp_Title property and allows it to be edited.


The Local Variable Name field displays the currently selected local variable name to which the check box control is linked, if any, and allows it to be edited. Entering a value in this field sets the check box control's VarName property.


The Permanent check box is checked to make the local variable linked with the control permanent, that is, visible outside of the scope of execution of the window in which the control is contained. This check box is only applicable if the control has been linked to a local variable by entering a name in the Local Variable field. The setting of this check box is reflected in the control's VarPermanent property.


The Data Dictionary Field displays the currently selected Data Control and field to which the check box control is linked, if any, and allows it to be edited. Entering a value in this field sets the check box control's DataField property.


The Field button gives access to the Data Field dialog, to allow a Data Control and field to be chosen and linked to the check box control.


The Event drop-down list allows selection of one of the control's events to allow the entry or editing of the associated action logic. The list contains either the high-level events or all events dependent on a preference setting. The list is initially positioned at the principal event. Events with attached code are signified by a trailing >>.


The Code Editor document box shows the action logic associated with the event selected using the Event drop-down list and allows simple text editing capabilities.


The Editor button invokes the Code Editor window to allow the action logic associated with the event selected using the Action Logic Event drop-down list to be edited. This editor provides greater functionality than the Action Logic Code document box.


The Inactive check box is checked to make the check box control initially inactive. This sets the Active property to No.


The Message check box is checked to associate a message with the check box, which will be displayed when it has focus. Checking this box allows entry of the message in the Message Text field.


The Message Text field allows entry of a message which will be displayed when the check box has focus. This field sets the check box control's Message.


The Display-Only check box is checked to make the check box control read-only. This sets the DisplayOnly property to Yes.


The OK button applies the changes made using the Check Box Definition Dialog to the selected check box control.


The Cancel button closes the Check Box Definition dialog without updating the selected check box control.


The Name field displays the name of the combo box and allows it to be edited.


The Local Variable Name field displays the currently selected local variable name to which the combo box control is linked, if any, and allows it to be edited. Entering a value in this field sets the combo box control's VarName property.


The Permanent check box is checked to make the local variable linked with the control permanent, that is, visible outside of the scope of execution of the window in which the control is contained. This check box is only applicable if the control has been linked to a local variable by entering a name in the Local Variable field. The setting of this check box is reflected in the control's VarPermanent property.


The Choices groups allows definition of the choices list associated with the combo box. The Radio Button Set allows the option of loading the list from one of the following:

List - A pre-defined static set of choices is used.

Variable - An M subscripted local or global variable specifies the choices.

Data Dictionary – A Data Control and field are linked to the list.


This button access the Choice Editor, which can be used to specify a pre-defined set of choices for the List.  This button becomes active when the List radio button option is chosen.


Enter an M subscripted local or global variable in this box to specify choices for the combo box.  Entering a value in this field sets the combo box control's ChoiceVar property.  This box becomes active when the Variable radio button option is chosen.


The Data Dictionary Field displays the currently selected Data Control and field to which the combo box control is linked, if any, and allows it to be edited. Entering a value in this field sets the combo box control's ChoiceField property.


The Field button gives access to the Data Field dialog, to allow a Data Control and field to be chosen and linked to the combo box control.


Validation options are allowed if a Local Variable Name has been linked to the combo box.  The Validation drop-down list allows selection of the validation method. The available options are <default> to use the default system validation, Code to supply user code for validation and Custom. The Custom validation option is not yet available.


The Validation field becomes active when the Code validation option is chosen from the Validation drop-down list. It allows entry of a line of M code to perform the validation. The user input value is supplied in the variable X, and if it fails the user validation, then X should be KILLed.


Display options are allowed if a Local Variable Name has been linked to the combo box.  The Display drop-down list allows selection of the display format method. The available options are <default> to display what is input, Code to supply user code for formatting and Custom. The Custom display option is not yet available.


The Display field becomes active when the Code format option is chosen from the Display drop-down list. It allows entry of a line of M code to perform the formatting. The user input value is supplied in the variable X and the formatted value should be returned in the variable Y.


The Maximum Length field allows entry of the maximum input length of the text in the combo box control. This sets the MaxLength property.


The Event drop-down list allows selection of one of the control's events to allow the entry or editing of the associated action logic. The list contains either the high-level events or all events dependent on a preference setting. The list is initially positioned at the principal event. Events with attached code are signified by a trailing >>.


The Code Editor document box shows the action logic associated with the event selected using the Event drop-down list and allows simple text editing capabilities.


The Editor button invokes the Code Editor window to allow the action logic associated with the event selected using the Action Logic Event drop-down list to be edited. This editor provides greater functionality than the Action Logic Code document box.


The Inactive check box is checked to make the combo box control initially inactive. This sets the Active property to No.


The Message check box is checked to associate a message with the combo box, which will be displayed when it has focus. Checking this box allows entry of the message in the Message Text field.


The Message Text field allows entry of a message which will be displayed when the combo box has focus. This field sets the combo box control's Message.


The Display-Only check box is checked to make the combo box control read-only. This sets the DisplayOnly property to Yes.


The Selection Required checkbox is checked to indicate that a selection must be made. This feature is not currently supported.


The OK button applies the changes made using the Combo box Definition Dialog to the selected combo box control.


The Cancel button closes the Combo box Definition dialog without updating the selected combo box control.


The Name field displays the name of the data control and allows it to be edited. Take care when renaming a data control, since other controls bound to it will no longer be able to locate it.


The Scope field is limited to Private in the current version of MSM-Workstation, meaning that this data control is not visible or accessible outside of the window in which it is placed.


The Read-Only check box is used to set the ReadOnly property in order stop updates to the columns it manages. In some cases, given the nature of the table that is used as a RecordSource, MSM-SQL may be unable to support updates and the ReadOnly property will be preset to Yes.


The Table drop-down list allows selection of a table from those in the MSM-SQL Schema selected.


The Schema drop-down list allows selection of an MSM-SQL schema.


The Fields list box displays the fields (columns) available within the selected Schema and Table. It is presented for information only. Foreign key fields are followed by the indicator >>.


The Event drop-down list allows selection of one of the control's events to allow the entry or editing of the associated action logic. The list contains either the high-level events or all events dependent on a preference setting. The list is initially positioned at the principal event. Events with attached code are signified by a trailing >>.


The Code Editor document box shows the action logic associated with the event selected using the Event drop-down list and allows simple text editing capabilities.


The Editor button invokes the Code Editor window to allow the action logic associated with the event selected using the Action Logic Event drop-down list to be edited. This editor provides greater functionality than the Action Logic Code document box.


The Filter field can take an SQL WHERE-clause, but may only operate on columns that are either in the table specified or are foreign-key-linked to it. You cannot use this property to join tables. If necessary, define a view that performs the join, then select that view as the table of your data control.  This field sets the DataFilter property.


The Sort field can take an SQL ORDER BY-clause. It may only operate on the columns accessible in the selected table or foreign-key links. This field sets the DataSort property.


The OK button applies the changes made using the Data Control Definition Dialog to the selected data control.


The Cancel button closes the Data Control Definition dialog without updating the selected data control.


The Data Field Reference displays the current field to which the control is linked and allows direct entry and editing (see Data Control Usage for further details). This field is automatically filled by selecting a Data Control and Field on this dialog.


The Data Control drop-down list allows selection of a Data Control already present on the window containing the selected control, or the selection of the <new> entry to display the Data Control Definition Dialog to create a new Data Control.


The Field list displays a list of the fields accessible using the Data Control selected from the Data Control drop-down list and allows selection of one by double-clicking. This selection is entered into the Data Field Reference field.


The OK button applies the changes made using the Data Field Dialog to the selected control.


The Cancel button closes the Data Field Dialog without updating the selected control.


The Undo button removes successive additions made to the Data Field Reference by double-clicking on the Field list. It is particularly useful when foreign key links are being browsed.


The Name field displays the name of the date control and allows it to be edited.


The Local Variable Name field displays the currently selected local variable name to which the date control is linked, if any, and allows it to be edited. Entering a value in this field sets the date control's VarName property.


The Permanent check box is checked to make the local variable linked with the control permanent, that is, visible outside of the scope of execution of the window in which the control is contained. This check box is only applicable if the control has been linked to a local variable by entering a name in the Local Variable field. The setting of this check box is reflected in the control's VarPermanent property.


The Date Format drop-down list allows the selection of a format for the date display within the control.


The Month Names field allows entry of the names or abbreviations to be used for months.  Leave the box empty, or enter 12 month names, separated by the # character.


The Data Dictionary Field displays the currently selected Data Control and field to which the date control is linked, if any, and allows it to be edited. Entering a value in this field sets the date control's DataField property.


The Field button gives access to the Data Field dialog, to allow a Data Control and field to be chosen and linked to the date control.


The Event drop-down list allows selection of one of the control's events to allow the entry or editing of the associated action logic. The list contains either the high-level events or all events dependent on a preference setting. The list is initially positioned at the principal event. Events with attached code are signified by a trailing >>.


The Code Editor document box shows the action logic associated with the event selected using the Event drop-down list and allows simple text editing capabilities.


The Editor button invokes the Code Editor window to allow the action logic associated with the event selected using the Action Logic Event drop-down list to be edited. This editor provides greater functionality than the Action Logic Code document box.


The Inactive check box is checked to make the date control initially inactive. This sets the Active property to No.


The Message check box is checked to associate a message with the date control, which will be displayed when it has focus. Checking this box allows entry of the message in the Message Text field.


The Message Text field allows entry of a message which will be displayed when the date control has focus. This field sets the date control's Message.


The Display-Only check box is checked to make the date control read-only. This sets the DisplayOnly property to Yes.


The Required checkbox is checked to indicate that a selection must be made. This feature is not currently implemented.


The OK button applies the changes made using the Date control Definition Dialog to the selected date control.


The Cancel button closes the Date control Definition dialog without updating the selected date control.


The Name field displays the name of the document control and allows it to be edited.


The Local Variable Name field displays the currently selected local variable name to which the document control is linked, if any, and allows it to be edited. Entering a value in this field sets the document control's VarName property.

Note that if more than 32k-characters are entered into the document its value cannot be held in an M local variable, and a <MXSTR> error will result.


The Permanent check box is checked to make the local variable linked with the control permanent, that is, visible outside of the scope of execution of the window in which the control is contained. This check box is only applicable if the control has been linked to a local variable by entering a name in the Local Variable field. The setting of this check box is reflected in the control's VarPermanent property.


The Horizontal Scrolling check box is checked to enable horizontal scrolling within the document control. Checking this box enables the Maximum Width field to allow entry of a maximum horizontal scrolling width.


The Vertical Scrolling check box is checked to enable vertical scrolling within the document control. Checking this box enables the Maximum Height field to allow entry of a maximum vertical scrolling height.


The Maximum Width field to allows entry of a maximum horizontal scrolling width. This feature is not currently implemented, and the field should be left empty.


The Maximum Height field to allows entry of a maximum vertical scrolling height. This feature is not currently implemented, and the field should be left empty.


The Units field allows entry of the units type for horizontal and vertical scrolling width and height.


The Data Dictionary Field displays the currently selected Data Control and field to which the document control is linked, if any, and allows it to be edited. Entering a value in this field sets the document control's DataField property.


The Field button gives access to the Data Field dialog, to allow a Data Control and field to be chosen and linked to the document control.


The Event drop-down list allows selection of one of the control's events to allow the entry or editing of the associated action logic. The list contains either the high-level events or all events dependent on a preference setting. The list is initially positioned at the principal event. Events with attached code are signified by a trailing >>.


The Code Editor document box shows the action logic associated with the event selected using the Event drop-down list and allows simple document control editing capabilities.


The Editor button invokes the Code Editor window to allow the action logic associated with the event selected using the Action Logic Event drop-down list to be edited. This editor provides greater functionality than the Action Logic Code document box.


The Inactive check box is checked to make the document control initially inactive. This sets the Active property to No.


The Message check box is checked to associate a message with the document control, which will be displayed when it has focus. Checking this box allows entry of the message in the Message Document control field.


The Message Text field allows entry of a message which will be displayed when the document control has focus. This field sets the document control's Message.


The Display-Only check box is checked to make the document control read-only. This sets the DisplayOnly property to Yes.


The OK button applies the changes made using the Document control Definition Dialog to the selected document control.


The Cancel button closes the document control Definition dialog without updating the selected combo box control.


The Name field displays the name of the drop-down combo and allows it to be edited.


The Local Variable Name field displays the currently selected local variable name to which the drop-down combo control is linked, if any, and allows it to be edited. Entering a value in this field sets the drop-down combo control's VarName property.


The Permanent check box is checked to make the local variable linked with the control permanent, that is, visible outside of the scope of execution of the window in which the control is contained. This check box is only applicable if the control has been linked to a local variable by entering a name in the Local Variable field. The setting of this check box is reflected in the control's VarPermanent property.


The Choices groups allows definition of the choices list associated with the drop-down combo. The Radio Button Set allows the option of loading the list from one of the following:

List - A pre-defined static set of choices is used.

Variable - An M subscripted local or global variable specifies the choices.

Data Dictionary – A Data Control and field are linked to the list.


This button access the Choice Editor, which can be used to specify a pre-defined set of choices for the List.  This button becomes active when the List radio button option is chosen.


Enter an M subscripted local or global variable in this box to specify choices for the drop-down combo.  Entering a value in this field sets the drop-down combo control's ChoiceVar property.  This box becomes active when the Variable radio button option is chosen.


The Data Dictionary Field displays the currently selected Data Control and field to which the drop-down combo control is linked, if any, and allows it to be edited. Entering a value in this field sets the drop-down combo control's ChoiceField property.


The Field button gives access to the Data Field dialog, to allow a Data Control and field to be chosen and linked to the drop-down combo control.


Validation options are allowed if a Local Variable Name has been linked to the drop-down combo.  The Validation drop-down list allows selection of the validation method. The available options are <default> to use the default system validation, Code to supply user code for validation and Custom. The Custom validation option is not yet available.


The Validation field becomes active when the Code validation option is chosen from the Validation drop-down list. It allows entry of a line of M code to perform the validation. The user input value is supplied in the variable X, and if it fails the user validation, then X should be KILLed.


Display options are allowed if a Local Variable Name has been linked to the drop-down combo.  The Display drop-down list allows selection of the display format method. The available options are <default> to display what is input, Code to supply user code for formatting and Custom. The Custom display option is not yet available.


The Display field becomes active when the Code format option is chosen from the Display drop-down list. It allows entry of a line of M code to perform the formatting. The user input value is supplied in the variable X and the formatted value should be returned in the variable Y.


The Maximum Length field allows entry of the maximum input length of the text in the drop-down combo control. This sets the MaxLength property.


The Event drop-down list allows selection of one of the control's events to allow the entry or editing of the associated action logic. The list contains either the high-level events or all events dependent on a preference setting. The list is initially positioned at the principal event. Events with attached code are signified by a trailing >>.


The Code Editor document box shows the action logic associated with the event selected using the Event drop-down list and allows simple text editing capabilities.


The Editor button invokes the Code Editor window to allow the action logic associated with the event selected using the Action Logic Event drop-down list to be edited. This editor provides greater functionality than the Action Logic Code document box.


The Inactive check box is checked to make the drop-down combo control initially inactive. This sets the Active property to No.


The Message check box is checked to associate a message with the drop-down combo, which will be displayed when it has focus. Checking this box allows entry of the message in the Message Text field.


The Message Text field allows entry of a message which will be displayed when the drop-down combo has focus. This field sets the drop-down combo control's Message.


The Display-Only check box is checked to make the drop-down combo control read-only. This sets the DisplayOnly property to Yes.


The Selection Required checkbox is checked to indicate that a selection must be made. This feature is not yet implemented.


The OK button applies the changes made using the Drop-down combo Definition Dialog to the selected drop-down combo control.


The Cancel button closes the Drop-down combo Definition dialog without updating the selected combo box control.


The Name field displays the name of the drop-down list and allows it to be edited.


The Local Variable Name field displays the currently selected local variable name to which the drop-down list control is linked, if any, and allows it to be edited. Entering a value in this field sets the drop-down list control's VarName property.


The Permanent check box is checked to make the local variable linked with the control permanent, that is, visible outside of the scope of execution of the window in which the control is contained. This check box is only applicable if the control has been linked to a local variable by entering a name in the Local Variable field. The setting of this check box is reflected in the control's VarPermanent property.


The Choices groups allows definition of the choices list associated with the drop-down list. The Radio Button Set allows the option of loading the list from one of the following:

List - A pre-defined static set of choices is used.

Variable - An M subscripted local or global variable specifies the choices.

Data Dictionary – A Data Control and field are linked to the list.


This button access the Choice Editor, which can be used to specify a pre-defined set of choices for the List.  This button becomes active when the List radio button option is chosen.


Enter an M subscripted local or global variable in this box to specify choices for the drop-down list.  Entering a value in this field sets the drop-down list control's ChoiceVar property.  This box becomes active when the Variable radio button option is chosen.


The Data Dictionary Field displays the currently selected Data Control and field to which the drop-down list control is linked, if any, and allows it to be edited. Entering a value in this field sets the drop-down list control's ChoiceField property.


The Field button gives access to the Data Field dialog, to allow a Data Control and field to be chosen and linked to the drop-down list control.


The Event drop-down list allows selection of one of the control's events to allow the entry or editing of the associated action logic. The list contains either the high-level events or all events dependent on a preference setting. The list is initially positioned at the principal event. Events with attached code are signified by a trailing >>.


The Code Editor document box shows the action logic associated with the event selected using the Event drop-down list and allows simple text editing capabilities.


The Editor button invokes the Code Editor window to allow the action logic associated with the event selected using the Action Logic Event drop-down list to be edited. This editor provides greater functionality than the Action Logic Code document box.


The Inactive check box is checked to make the drop-down list control initially inactive. This sets the Active property to No.


The Display-Only check box is checked to make the drop-down list control read-only. This sets the DisplayOnly property to Yes.


The Message check box is checked to associate a message with the drop-down list, which will be displayed when it has focus. Checking this box allows entry of the message in the Message Text field.


The Message Text field allows entry of a message which will be displayed when the drop-down list has focus. This field sets the drop-down list control's Message.


The Selection Required checkbox is checked to indicate that a selection must be made. This feature is not yet implemented.


The OK button applies the changes made using the Drop-down list Definition Dialog to the selected drop-down list control.


The Cancel button closes the Drop-down list Definition dialog without updating the selected drop-down list control.


The Name field displays the name of the generic box and allows it to be edited.


The Event drop-down list allows selection of one of the control's events to allow the entry or editing of the associated action logic. The list contains either the high-level events or all events dependent on a preference setting. The list is initially positioned at the principal event. Events with attached code are signified by a trailing >>.


The Code Editor document box shows the action logic associated with the event selected using the Event drop-down list and allows simple text editing capabilities.


The Editor button invokes the Code Editor window to allow the action logic associated with the event selected using the Action Logic Event drop-down list to be edited. This editor provides greater functionality than the Action Logic Code document box.


The Inactive check box is checked to make the generic box control initially inactive. This sets the Active property to No.


The Message check box is checked to associate a message with the generic box, which will be displayed when it has focus. Checking this box allows entry of the message in the Message Text field.


The Message Text field allows entry of a message which will be displayed when the generic box has focus. This field sets the generic box control's Message.


The OK button applies the changes made using the Generic Box Definition Dialog to the selected generic box control.


The Cancel button closes the Generic Box Definition dialog without updating the selected generic box control.


The Name field displays the name of the group box and allows it to be edited.


The Text field displays the current group box Title property and allows it to be edited.


The OK button applies the changes made using the Group Box Definition Dialog to the selected group box control.


The Cancel button closes the Group Box Definition dialog without updating the selected group box control.


The Name field displays the name of the label and allows it to be edited.


The Text field displays the current label Title property and allows it to be edited.


The OK button applies the changes made using the Label Definition Dialog to the selected label control.


The Cancel button closes the Label Definition dialog without updating the selected label control.


The Name field displays the name of the list box and allows it to be edited.


The Local Variable Name field displays the currently selected local variable name to which the list box control is linked, if any, and allows it to be edited. Entering a value in this field sets the list box control's VarName property.


The Permanent check box is checked to make the local variable linked with the control permanent, that is, visible outside of the scope of execution of the window in which the control is contained. This check box is only applicable if the control has been linked to a local variable by entering a name in the Local Variable field. The setting of this check box is reflected in the control's VarPermanent property.


The Choices groups allows definition of the choices list associated with the list box. The Radio Button Set allows the option of loading the list from one of the following:

List - A pre-defined static set of choices is used.

Variable - An M subscripted local or global variable specifies the choices.

Data Dictionary – A Data Control and field are linked to the list.


This button access the Choice Editor, which can be used to specify a pre-defined set of choices for the List.  This button becomes active when the List radio button option is chosen.


Enter an M subscripted local or global variable in this box to specify choices for the list box.  Entering a value in this field sets the list box control's ChoiceVar property.  This box becomes active when the Variable radio button option is chosen.


The Data Dictionary Field displays the currently selected Data Control and field to which the list box control is linked, if any, and allows it to be edited. Entering a value in this field sets the list box control's ChoiceField property.


The Field button gives access to the Data Field dialog, to allow a Data Control and field to be chosen and linked to the list box control.


The Event drop-down list allows selection of one of the control's events to allow the entry or editing of the associated action logic. The list contains either the high-level events or all events dependent on a preference setting. The list is initially positioned at the principal event. Events with attached code are signified by a trailing >>.


The Code Editor document box shows the action logic associated with the event selected using the Event drop-down list and allows simple text editing capabilities.


The Editor button invokes the Code Editor window to allow the action logic associated with the event selected using the Action Logic Event drop-down list to be edited. This editor provides greater functionality than the Action Logic Code document box.


The Inactive check box is checked to make the list box control initially inactive. This sets the Active property to No.


The Display-Only check box is checked to make the list box control read-only. This sets the DisplayOnly property to Yes.


The Message check box is checked to associate a message with the list box, which will be displayed when it has focus. Checking this box allows entry of the message in the Message Text field.


The Message Text field allows entry of a message which will be displayed when the list box has focus. This field sets the list box control's Message.


The Selection Required checkbox is checked to indicate that a selection must be made. This feature is not currently implemented.


The Multiple Selection check box is checked to allow multiple selections within the list box. Checking this box allows entry of the maximum number of selections allowed in the Max# field. A value of 0 (zero) signifies unlimited selections.


The maximum number of selections allowed is entered in the Max# field. A value of 0 (zero) signifies unlimited selections.


The OK button applies the changes made using the List Box Definition Dialog to the selected list box control.


The Cancel button closes the List Box Definition dialog without updating the selected list box control.


The Name field displays the name of the long list box and allows it to be edited.


The Local Variable Name field displays the currently selected local variable name to which the long list box control is linked, if any, and allows it to be edited. Entering a value in this field sets the long list box control's VarName property.


The Permanent check box is checked to make the local variable linked with the control permanent, that is, visible outside of the scope of execution of the window in which the control is contained. This check box is only applicable if the control has been linked to a local variable by entering a name in the Local Variable field. The setting of this check box is reflected in the control's VarPermanent property.


The Choices groups allows definition of the choices list associated with the long list box. The Radio Button Set allows the option of loading the list from one of the following:

List - A pre-defined static set of choices is used.

Variable - An M subscripted local or global variable specifies the choices.

Data Dictionary – A Data Control and field are linked to the long list.


This button access the Choice Editor, which can be used to specify a pre-defined set of choices for the Long list.  This button becomes active when the List radio button option is chosen.


Enter an M subscripted local or global variable in this box to specify choices for the long list box.  Entering a value in this field sets the long list box control's ChoiceVar property.  This box becomes active when the Variable radio button option is chosen.


The Data Dictionary Field displays the currently selected Data Control and field to which the long list box control is linked, if any, and allows it to be edited. Entering a value in this field sets the long list box control's ChoiceField property.


The Field button gives access to the Data Field dialog, to allow a Data Control and field to be chosen and linked to the long list box control.


The Event drop-down list allows selection of one of the control's events to allow the entry or editing of the associated action logic. The list contains either the high-level events or all events dependent on a preference setting. The list is initially positioned at the principal event. Events with attached code are signified by a trailing >>.


The Code Editor document box shows the action logic associated with the event selected using the Event drop-down list and allows simple text editing capabilities.


The Editor button invokes the Code Editor window to allow the action logic associated with the event selected using the Action Logic Event drop-down list to be edited. This editor provides greater functionality than the Action Logic Code document box.


The Inactive check box is checked to make the long list box control initially inactive. This sets the Active property to No.


The Display-Only check box is checked to make the long list box control read-only. This sets the DisplayOnly property to Yes.


The Message check box is checked to associate a message with the long list box, which will be displayed when it has focus. Checking this box allows entry of the message in the Message Text field.


The Message Text field allows entry of a message which will be displayed when the long list box has focus. This field sets the long list box control's Message.


The Selection Required checkbox is checked to indicate that a selection must be made. This feature is not currently implemented.


The Multiple Selection check box is checked to allow multiple selections within the long list box. Checking this box allows entry of the maximum number of selections allowed in the Max# field. A value of 0 (zero) signifies unlimited selections.


The maximum number of selections allowed is entered in the Max# field. A value of 0 (zero) signifies unlimited selections.


The OK button applies the changes made using the Long list Box Definition Dialog to the selected long list box control.


The Cancel button closes the Long list Box Definition dialog without updating the selected long list box control.


The Module Name field displays the name of the selected module and allows you to edit or change the name in order to rename the module.


The Application checkbox, if checked, indicates that this module may be made into a Windows executable file.


The Components list shows the components of the selected module prefaced by their type. This list allows single or multiple selections to be made for removal from the module using the Remove button, which automatically becomes highlighted when selections are made.


The Object Name is where selections for adding are displayed or entered. Characters entered here restrict the contents of the Name List.


The Name List displays existing objects limited to the type chosen in the List Objects of Type drop-down list and allows single or multiple selections to be made for addition to the selected module by means of the Add button. The object name is prefaced by its type.


The List Objects of Type drop-down list allows selection of an object type to be shown in the Name List.


Select the database whose objects you wish to select from. Not available on some object types.


Unimplemented.


The Notes field allows free form entry of any descriptive information regarding the module.


The Drop button removes any selections made in the Components of Module list from the module. This button is inactive until selections are made in the Components of Module list.


The Add button will add any selections made in the Name List to the module components and they will appear in the Components of Module list.


The OK button is used to close the Module Definition dialog and save all changes.


The Cancel button closes the Module Definition dialog without making any changes.


The Name field displays the name of the picture and allows it to be edited.


The Picture field displays the current picture's Picture property and allows it to be edited. This specifies the picture which will be displayed in the picture control.


The OK button applies the changes made using the Picture Definition Dialog to the selected picture control.


The Browse button allows a bitmapp or icon file to be located.


The Cancel button closes the Picture Definition dialog without updating the selected picture control.


The Name field displays the name of the radio button and allows it to be edited.


The Local Variable Name field displays the currently selected local variable name to which the radio button control is linked, if any, and allows it to be edited. Entering a value in this field sets the radio button control's VarName property.


The Permanent check box is checked to make the local variable linked with the control permanent, that is, visible outside of the scope of execution of the window in which the control is contained. This check box is only applicable if the control has been linked to a local variable by entering a name in the Local Variable field. The setting of this check box is reflected in the control's VarPermanent property.


The Orientation radio button set is used to specify whether the radio button control should be arranged vertically or horizontally. If vertical is chosen, then the number of columns can be specified in the Columns field. If horizontal is chosen, then the number of rows can be specified in the Rows field.


The Columns field can be used to specify the number of columns if the layout chosen using the Orientation radio button set is vertical. If a horizontal layout is chosen, then this field is inactive.


The Rows field can be used to specify the number of rows if the layout chosen using the Orientation radio button set is horizontal. If a vertical layout is chosen, then this field is inactive.


This button access the Choice Editor, which can be used to specify a pre-defined set of choices for the radio button.


The Data Dictionary Field displays the currently selected Data Control and field to which the radio button control is linked, if any, and allows it to be edited. Entering a value in this field sets the radio button control's DataField property.


The Field button gives access to the Data Field dialog, to allow a Data Control and field to be chosen and linked to the radio button control.


The Event drop-down list allows selection of one of the control's events to allow the entry or editing of the associated action logic. The list contains either the high-level events or all events dependent on a preference setting. The list is initially positioned at the principal event. Events with attached code are signified by a trailing >>.


The Code Editor document box shows the action logic associated with the event selected using the Event drop-down list and allows simple text editing capabilities.


The Editor button invokes the Code Editor window to allow the action logic associated with the event selected using the Action Logic Event drop-down list to be edited. This editor provides greater functionality than the Action Logic Code document box.


The Inactive check box is checked to make the radio button control initially inactive. This sets the Active property to No.


The Message check box is checked to associate a message with the radio button, which will be displayed when it has focus. Checking this box allows entry of the message in the Message Text field.


The Message Text field allows entry of a message which will be displayed when the radio button has focus. This field sets the radio button control's Message.


The Display-Only check box is checked to make the radio button control read-only. This sets the DisplayOnly property to Yes.


The OK button applies the changes made using the Radio button Definition Dialog to the selected radio button control.


The Cancel button closes the Radio button Definition dialog without updating the selected radio button control.


The Name field displays the name of the scroll control and allows it to be edited.


The Local Variable Name field displays the currently selected local variable name to which the scroll control is linked, if any, and allows it to be edited. Entering a value in this field sets the scroll control's VarName property.


The Permanent check box is checked to make the local variable linked with the control permanent, that is, visible outside of the scope of execution of the window in which the control is contained. This check box is only applicable if the control has been linked to a local variable by entering a name in the Local Variable field. The setting of this check box is reflected in the control's VarPermanent property.


The Small Step field is used to enter the amount by which the Scroll control's value will change when either of the arrows on the ends of the control are clicked on. This sets the ScrollSmall property.


The Large Step field is used to enter the amount by which the Scroll control's value will change when the scroll bar is clicked between either of the arrows on the ends of the control and the thumb. This sets the ScrollLarge property.


The Minimum Value field is used to enter the minimum value of the Scroll control's value This sets the ScrollMin property.


The Maximum Value field is used to enter the maximum value of the Scroll control's value This sets the ScrollMax property.


The Data Dictionary Field displays the currently selected Data Control and field to which the scroll control is linked, if any, and allows it to be edited. Entering a value in this field sets the scroll control's DataField property.


The Field button gives access to the Data Field dialog, to allow a Data Control and field to be chosen and linked to the scroll control.


The Event scroll control allows selection of one of the control's events to allow the entry or editing of the associated action logic. The list contains either the high-level events or all events dependent on a preference setting. The list is initially positioned at the principal event. Events with attached code are signified by a trailing >>.


The Code Editor document box shows the action logic associated with the event selected using the Event scroll control and allows simple text editing capabilities.


The Editor button invokes the Code Editor window to allow the action logic associated with the event selected using the Action Logic Event drop-down list to be edited. This editor provides greater functionality than the Action Logic Code document box.


The Inactive check box is checked to make the scroll control initially inactive. This sets the Active property to No.


The Message check box is checked to associate a message with the scroll control, which will be displayed when it has focus. Checking this box allows entry of the message in the Message Text field.


The Message Text field allows entry of a message which will be displayed when the scroll control has focus. This field sets the scroll control's Message.


The Display-Only check box is checked to make the scroll control read-only. This sets the DisplayOnly property to Yes.


The OK button applies the changes made using the Scroll control Definition Dialog to the selected scroll control.


The Cancel button closes the Scroll control Definition dialog without updating the selected scroll control.


The Name field displays the name of the spin button control and allows it to be edited.


The Local Variable Name field displays the currently selected local variable name to which the spin button control is linked, if any, and allows it to be edited. Entering a value in this field sets the spin button control's VarName property.


The Permanent check box is checked to make the local variable linked with the control permanent, that is, visible outside of the scope of execution of the window in which the control is contained. This check box is only applicable if the control has been linked to a local variable by entering a name in the Local Variable field. The setting of this check box is reflected in the control's VarPermanent property.


The Minimum Value field allows entry of a value for the lower bound of the value in the spin button control at run time.


The Maximum Value field allows entry of a value for the upper bound of the value in the spin button control at run time.


The Data Dictionary Field displays the currently selected Data Control and field to which the spin button control is linked, if any, and allows it to be edited. Entering a value in this field sets the spin button control's DataField property.


The Field button gives access to the Data Field dialog, to allow a Data Control and field to be chosen and linked to the spin button control.


The Event spin button control allows selection of one of the control's events to allow the entry or editing of the associated action logic. The list contains either the high-level events or all events dependent on a preference setting. The list is initially positioned at the principal event. Events with attached code are signified by a trailing >>.


The Code Editor document box shows the action logic associated with the event selected using the Event spin button control and allows simple text editing capabilities.


The Editor button invokes the Code Editor window to allow the action logic associated with the event selected using the Action Logic Event drop-down list to be edited. This editor provides greater functionality than the Action Logic Code document box.


The Inactive check box is checked to make the spin button control initially inactive. This sets the Active property to No.


The Required checkbox is checked to indicate that a selection must be made. This feature is not implemented.


The Message check box is checked to associate a message with the spin button control, which will be displayed when it has focus. Checking this box allows entry of the message in the Message Text field.


The Message Text field allows entry of a message which will be displayed when the spin button control has focus. This field sets the spin button control's Message.


The Display-Only check box is checked to make the spin button control read-only. This sets the DisplayOnly property to Yes.


The OK button applies the changes made using the Spin button control Definition Dialog to the selected spin button control.


The Cancel button closes the Spin button control Definition dialog without updating the selected spin button control.


Click this to enable the Tabbed Group control.


Click this to allow multiple rows of tabs.


This allows setting the style of the tabs to use justified, non-justified, or fixed widths.


The OK button applies the changes made using the Tabbed Group control Definition Dialog to the selected Tabbed Group control and closes the dialog.


The Cancel button closes the Tabbed Group control definition dialog without updating the selected Tabbed Group control.


The OK button applies the changes made using the Tabbed Group control Definition Dialog to the selected Tabbed Group control, but does not close the dialog.


Enter the Index number of the tab you wish to deal with.  The arrow buttons may be used to scroll the number.


Enter the caption for the tab indicated by Index.


Click to insert a new tab. Avoid using this to insert tabs in front of any existing ones on which controls have been placed. Instead, use the options from the right-click menu on the control.


Click to remove the tab specified by Index. Avoid using this to delete tabs once controls have been placed on pages. Instead, use the options from the right-click menu on the control.


Only the Font property may be modified.


Select the font face to be used on tab labels.


Select the font style to be used on tab labels.


Select the font size to be used on tab labels.


Select the font effects to be used on tab labels.


The Name field displays the name of the text box and allows it to be edited.


The Local Variable Name field displays the currently selected local variable name to which the text box control is linked, if any, and allows it to be edited. Entering a value in this field sets the text box control's VarName property.


The Permanent check box is checked to make the local variable linked with the control permanent, that is, visible outside of the scope of execution of the window in which the control is contained. This check box is only applicable if the control has been linked to a local variable by entering a name in the Local Variable field. The setting of this check box is reflected in the control's VarPermanent property.


Validation options are allowed if a Local Variable Name has been linked to the text box.  The Validation drop-down list allows selection of the validation method. The available options are <default> to use the default system validation, Code to supply user code for validation and Custom. The Custom validation option is not yet available.


The Validation field becomes active when the Code validation option is chosen from the Validation drop-down list. It allows entry of a line of M code to perform the validation. The user input value is supplied in the variable X, and if it fails the user validation, then X should be KILLed.


Display options are allowed if a Local Variable Name has been linked to the text box.  The Display drop-down list allows selection of the display format method. The available options are <default> to display what is input, Code to supply user code for formatting and Custom. The Custom display option is not yet available.


The Display field becomes active when the Code format option is chosen from the Display drop-down list. It allows entry of a line of M code to perform the formatting. The user input value is supplied in the variable X and the formatted value should be returned in the variable Y.


The Maximum Length field allows entry of the maximum input length of the text box in the text box control. This sets the MaxLength property.


The Data Dictionary Field displays the currently selected Data Control and field to which the text box control is linked, if any, and allows it to be edited. Entering a value in this field sets the text box control's DataField property.


The Field button gives access to the Data Field dialog, to allow a Data Control and field to be chosen and linked to the text box control.


The Event drop-down list allows selection of one of the control's events to allow the entry or editing of the associated action logic. The list contains either the high-level events or all events dependent on a preference setting. The list is initially positioned at the principal event. Events with attached code are signified by a trailing >>.


The Code Editor document box shows the action logic associated with the event selected using the Event drop-down list and allows simple text box editing capabilities.


The Editor button invokes the Code Editor window to allow the action logic associated with the event selected using the Action Logic Event drop-down list to be edited. This editor provides greater functionality than the Action Logic Code document box.


The Inactive check box is checked to make the text box control initially inactive. This sets the Active property to No.


The Required checkbox is checked to indicate that at least one character must be entered. This feature is not currently implemented.


The Message check box is checked to associate a message with the text box, which will be displayed when it has focus. Checking this box allows entry of the message in the Message Text box field.


The Message Text field allows entry of a message which will be displayed when the text box has focus. This field sets the text box control's Message.


The Display-Only check box is checked to make the text box control read-only. This sets the DisplayOnly property to Yes.


The OK button applies the changes made using the Text box Definition Dialog to the selected text box control.


The Cancel button closes the text box control Definition dialog without updating the selected text box control.


The Name field displays the name of the timer and allows it to be edited.


The Interval field displays the Timer interval in seconds and allows it to be edited.


The Inactive check box is checked to make the timer control initially inactive. This sets the Active property to No.


The Event drop-down list allows selection of one of the control's events to allow the entry or editing of the associated action logic. The list contains either the high-level events or all events dependent on a preference setting. The list is initially positioned at the principal event. Events with attached code are signified by a trailing >>.


The Code Editor document box shows the action logic associated with the event selected using the Event drop-down list and allows simple text box editing capabilities.


The Editor button invokes the Code Editor window to allow the action logic associated with the event selected using the Action Logic Event drop-down list to be edited. This editor provides greater functionality than the Action Logic Code document box.


The OK button applies the changes made using the Timer Definition Dialog to the selected timer control.


The Cancel button closes the timer control Definition dialog without updating the selected timer control.


Up to 20 alphanumeric, beginning alpha.


Edge on which  toolbar is docked


Check to make toolbar initially invisible


Width of each image in picture strip


Height of each image in picture strip


Width of each button. Must be at least 7 greater than picture width


Height of each button. Must be at least 6 greater than picture height


Width of toolbar. Must be at least 5 greater than button width


Height of toolbar. Must be at least 5 greater than button height


Source of bitmap providing button pictures. File type requires an individual .BMP file. Resource type requires a .DLL or .EXE file containing a bitmap resource whose ID matches the value set in the Index field.


File providing button picture strip


Browse for a file


ID of resource within file. Applies only to Source type of Resource.


Accept changes.


Cancel changes.


Behavior of toolbar button.


Zero-based index of button image within toolbar bitmap strip resource. Image is previewed on the right.


Text to appear when mouse pauses over button while window has focus.


The Event drop-down list allows selection of one of the control's events to allow the entry or editing of the associated action logic. The list contains either the high-level events or all events dependent on a preference setting. The list is initially positioned at the principal event. Events with attached code are signified by a trailing >>.


The Code Editor document box shows the action logic associated with the event selected using the Event drop-down list and allows simple text box editing capabilities.


The Editor button invokes the Code Editor window to allow the action logic associated with the event selected using the Action Logic Event drop-down list to be edited. This editor provides greater functionality than the Action Logic Code document box.


String that may be used in macros operating on the button.


Keyboard equivalent of pressing the button with the mouse.


When checked, button is initially disabled.


Gap in pixels ahead of button.


State of button on creation.


Accept.


Cancel


The Name field displays the name of the window and allows it to be edited.


The Title field displays the current window Title property which is displayed in the window title bar and allows it to be edited.


The Type drop-down list displays the current window Type property and allows it to be edited. This is used for setting whether the window is a normal one, and MDI parent, or an MDI child.


The Event drop-down list allows selection of one of the window's events to allow the entry or editing of the associated action logic. The list contains either the high-level events or all events dependent on a preference setting. The list is initially positioned at the principal event. Events with attached code are signified by a trailing >>.


The Code Editor document box shows the action logic associated with the event selected using the Event drop-down list and allows simple text box editing capabilities.


The Editor button invokes the Code Editor window to allow the action logic associated with the event selected using the Action Logic Event drop-down list to be edited. This editor provides greater functionality than the Action Logic Code document box.


The Inactive check box is checked to make the window initially inactive. This sets the Active property to No.


The Invisible check box is checked to make the window initially invisible at run time. This sets the Visible property to No.


The Message check box is checked to associate a message with the window, which will be displayed when it has focus. Checking this box allows entry of the message in the Message Text field.


The Message Text field becomes accessible when the Message check box is checked and allows entry of a message which will be displayed when the window has focus. This field sets the window control's Message.


The Resizable check box is checked to give the window a sizing border at run time, allowing the user to resize it. This sets the window's Resizable property to Yes.


The Minimize Button check box is checked to give the window a minimize button at run time, allowing the user to iconify it. This sets the window's MinButton property to Yes.


The No Title Bar check box is checked to give the window a style which has no title bar at run time. Setting this clears Title, Resizable and Minimize.


The OK button applies the changes made using the Window Definition Dialog to the selected window.


The Cancel button closes the Window Definition Dialog without updating the selected window.


The Info button displays the Window Information Dialog which contains notes and other information about the window.


The Last Compiled field displays the date and time that the window was last compiled.


The Routine Name field displays the name of the compiled window routine.


The Notes document box displays any user entered notes associated with the window and allows free form entry of any descriptive information regarding the window. The notes area allows simple text editing capabilities.


The OK button applies any changes made using the Window Information Dialog.


The Cancel button closes the Window Information Dialog without applying any changes made.


Window Reference - Editors
Editors

Window Browser

Action Logic Editor - Filter

Source Editor

Global Editor

Routine Editor

Host File Editor


Window Reference - Editors - Window Browser
Window Browser

This window is used for navigating the structure of window events, controls, and control events associated with windows, and for editing Action Logic associated with windows and controls.

The following options are provided:

Tree

The tree may be used to navigate and edit the structure of a window. Use right-click menus on nodes to access appropriate functions.

Text Area

This is where Action Logic being edited is displayed.  Editing options may be accessed by a right-click of the mouse.


Action Logic Editor - Filter

This dialog is used to specify filters on keyboard and mouse events.  It only applies to keyboard and mouse events on MWAPI controls.  Only those keys or mouse buttons specified by the filter generate events, and all other combinations are ignored.

The following options are provided:

Key or Button

Select a list item. For key events, single printable characters may also be entered.

Modifiers

Check the appropriate boxes to indicate that the ALT, CTRL, and/or SHIFT keys are required in combination with the key or button.

Filter

This list displays the keys or buttons for which the event will occur.

Add

Click to add a key or button to the filter, including selected modifiers.

Drop

Click to remove the selected items from the Filter list

OK

Click to accept changes and close the dialog.

Cancel

Click to discard changes and close the dialog.


Source Editor

This window is used for editing sources, which are M routines augmented by macros and preprocessor directives.

The following options are provided:

Jump

The Jump list is a drop-down combo that may be used to enter Jump targets.  You may jump to labels, labels plus offsets, or absolute or relative offsets.

Text Area

This is where source being edited is displayed.  Editing options may be accessed by a right-click of the mouse.


Global Editor

This window is used for editing globals.  The format of the global is:

<global reference> <TAB> <global data>

The following options are provided:

Text Area

This is where the global being edited is displayed.  Editing options may be accessed by a right-click of the mouse. Undisplayable characters display their ASCII value in {nnn} format. Text matching that format is converted to the corresponding character upon save.


Routine Editor

This window is used for editing M routines.

The following options are provided:

Jump

The Jump list is a drop-down combo that may be used to enter Jump targets.  You may jump to labels, labels plus offsets, or absolute or relative offsets.

Text Area

This is where routine being edited is displayed.  Editing options may be accessed by a right-click of the mouse.


Host File Editor

This window is used for editing host files.

The following options are provided:

Text Area

This is where host file to be edited is displayed.  Editing options may be accessed by a right-click of the mouse.


The tree may be used to navigate and edit the structure of a window. Use right-click menus on nodes to access appropriate functions.


This is where Action Logic being edited is displayed.  Editing options may be accessed by a right-click of the mouse.


Select a list item. For key events, single printable characters may also be entered.


Check the appropriate boxes to indicate that the ALT, CTRL, and/or SHIFT keys are required in combination with the key or button.


This list displays the keys or buttons for which the event will occur.


Click to add a key or button to the filter, including selected modifiers.


Click to remove the selected items from the Filter list


Click to accept changes and close the dialog.


Click to discard changes and close the dialog.


The Jump list is a drop-down combo that may be used to enter Jump targets.  You may jump to labels, labels plus offsets, or absolute or relative offsets.


This is where source being edited is displayed.  Editing options may be accessed by a right-click of the mouse.


This is where the global being edited is displayed.  Editing options may be accessed by a right-click of the mouse. Undisplayable characters display their ASCII value in {nnn} format. Text matching that format is converted to the corresponding character upon save.


The Jump list is a drop-down combo that may be used to enter Jump targets.  You may jump to labels, labels plus offsets, or absolute or relative offsets.


This is where routine being edited is displayed.  Editing options may be accessed by a right-click of the mouse.


This is where host file to be edited is displayed.  Editing options may be accessed by a right-click of the mouse.


Debugger Windows

Main Window

Error Window

Code Window

Immediate Window

Stack View

Watch Window

Breakpoint List

Event Spy

Event Filter - Events

Event Filter - Output

Event Filter - Windows

Event Filter - Break

Preferences


Window Reference - Debugger Windows - Main Window
Main Window

Toolbar buttons are provided for Continue, Break, Step Into, Step Over, Step Out and Halt. Menu items allow selection of MDI child windows to display, and permit organizing the windows (tile, cascade, etc).  The status bar summarizes the last error that caused entry to the debugger.

For more information see Debugging.


Error Window

This window reports an error encountered during execution. Press the Debug button to enter the debugger. Press Continue to proceed without breaking. Press Halt to abandon the test. Press Ignore to continue, marking future occurrences of the same error at this location to be ignored for the remainder of the debug session.

For more information see Debugging.


Code Window

The current line of execution is marked by yellow arrow in left margin, with the current command shown underlined in red. A Tooltip window appears when the mouse pointer rests over a variable, or over a selected expression, showing its value. The right-click menu presents options.

For more information see Debugging.


Immediate Window

This window permits immediate-mode interaction with the M environment at the execution point where the debugger was invoked. User input is displayed in black, output in blue. Previous user input can be edited and is resubmitted when Enter is pressed with the insertion point anywhere in the line. READ commands cannot be processed – use the Command window accessed from debugger's Tools menu.

For more information see Debugging.


Stack View

This shows the call-stack leading to the execution point where the debugger was invoked. Double-click on a line to view the context of that level's call. Column headers can be resequenced by dragging.

For more information see Debugging.


Watch Window

The Locals tree shows all locals defined at the execution point where the debugger was invoked.

The Globals tree allows browsing of globals in current databases.

The ^$W tree accesses MWAPI window structures in ^$WINDOW.

The ^$E tree accesses MWAPI ^$EVENT information for the current application event, if any.

Other lines permit specification of variables and expressions to be watched.

Use right-click menus to access context-specific facilities.

For more information see Debugging.


Breakpoint List

This shows the soft breakpoints currently defined. Clear the checkbox to disable a breakpoint. Double-click a breakpoint to edit. Right-click menus provide further facilities. Column headers can be reordered by dragging.

For more information see Debugging.


Event Spy

This shows details of MWAPI events. The right-click menu accesses features, including Event Filter capabilities.

For more information see Debugging.


Event Filter - Events

This restricts Event Spy to specified events. Non-MWAPI events occur on ActiveX controls.

The Set Default button preserves dialog settings for subsequent debug sessions.

For more information see Debugging.


Event Filter - Output

This controls which details are logged, and permits recording to a file.

The Set Default button preserves dialog settings for subsequent debug sessions.

For more information see Debugging.


Event Filter - Windows

This restricts logging to selected or specified windows.

The Set Default button preserves dialog settings for subsequent debug sessions.

For more information see Debugging.


Event Filter - Break

This allows the occurrence of an event to cause entry to the debugger.

The Set Default button preserves dialog settings for subsequent debug sessions.

For more information see Debugging.


Window Reference - Debugger Windows - Preferences
Preferences

This window configures user preferences for debugger.

For more information see Debugging.


Other Windows and Dialogs

Color Palette

Default MSM-SQL

Error Trapped

Module

Toolbox


Color Palette

The Color Palette window allows easy selection of  both foreground and background colors for the focused object. A primary click is used to set the foreground color and a secondary click the background color. The area at the left of the color palette shows a sample of how the selected colors will look, allowing for the dithering of text backgrounds.


Default MSM-SQL

This dialog may appear if MSM-Workstation mounts a multi-UCI legacy database during startup, and readable ^SQL globals for a compatible MSM-SQL installation are found in more than one of these UCIs.

The following options are provided:

UCI List

This lists UCIs on the database which contain readable installations of  MSM-SQL, Version 3 or later. Select which to use as the default MSM-SQL system for the opening workshop (UCI). There is also a choice to disable MSM-SQL for the workshop. The setting can be altered later using Tools/SQL Settings.

OK

The OK button applies any selection and closes the dialog.

Cancel

The Cancel button closes the dialog without applying any selection made.  This dialog will be offered again next time MSM-Workstation starts with the same database, unless Tools/SQL Settings is used.


Error Trapped

This dialog appears if MSM-Workstation encounters an unexpected error condition.

Basic information about the error is reported on the status line. It may help support personnel if you include this in any initial report of the problem.

The following options are provided:

Notes

Enter a description of what you were doing when the error occurred. This could help support personnel identify the cause of the error. Try and record as much as possible about the steps which led to the error.

OK

Click this button to close the window. Error details will be appended to the file MSMLOG.TXT in the directory containing MSMWS.EXE. Support personnel may request this from you.


Module

This window represents an open application or module. It lists the components of the module, prefaced by their type. The window may be moved and resized.

Components

This lists the components of the object, prefaced by their type. Double clicking one of these components opens it, or switches to it if already open. Double-clicking the <Components> entry displays the Module Definition Dialog allowing the addition or removal of components.


Window Reference - Other Windows and Dialogs - Toolbox
Toolbox

The Toolbox window contains a grid of buttons allowing easy selection of a control type for subsequent placement of single or multiple controls on the window being built.

Each item in the Toolbox represents a control object that may be associated with a window, with the exception of the Pointer and Lock items. The Toolbox allows access to different tools dependent on circumstances (for example, whether or not the current window's DevMode property allows MSM extensions). Unavailable controls are grayed out.

Double-clicking a control will select it and set the Lock button, preventing the control-placement tool from being automatically released after use. The Lock button may also be set and cleared independently.


This lists UCIs on the database which contain readable installations of  MSM-SQL, Version 3 or later. Select which to use as the default MSM-SQL system for the opening workshop (UCI). There is also a choice to disable MSM-SQL for the workshop. The setting can be altered later using Tools/SQL Settings.


The OK button applies any selection and closes the dialog.


The Cancel button closes the dialog without applying any selection made.  This dialog will be offered again next time MSM-Workstation starts with the same database, unless Tools/SQL Settings is used.


Enter a description of what you were doing when the error occurred. This could help support personnel identify the cause of the error. Try and record as much as possible about the steps which led to the error.


Click this button to close the window. Error details will be appended to the file MSMLOG.TXT in the directory containing MSMWS.EXE. Support personnel may request this from you.


This lists the components of the object, prefaced by their type. Double clicking one of these components opens it, or switches to it if already open. Double-clicking the <Components> entry displays the Module Definition Dialog allowing the addition or removal of components.


Glossary of Terms

Attribute

Binding

CHUI Window

Control Name

Document Control Text Editing

Event

GUI Window

List Box Selections

Module Name

Module

Moniker

MWAPI

Pop-up Menu

Primary Mouse Button

Property

Secondary Mouse Button

Title bar

Toolbox Lock Button

Toolbox Pointer

Unit Types

View Exchange Format

Visual Basic .FRM Files

Window Name


Attribute

A characteristic of an object defined by the MWAPI, including Display Attributes, Window Attributes, Gadget Attributes, etc. Also used in "video attribute" to refer to CHUI-mode control of display (inverse video, etc.)


Binding

The process of associating a moniker with a UCI,VG is known as binding.  Binding occurs as a result of specifying a moniker when mounting a database.  Once bound, the moniker-UCI,VG association is recorded in an internal table.


CHUI Window

A CHUI window, also known as a console window or a MTERM window, is a window which emulates a character based terminal (VT100 or similar).


Control Name

Control names are restricted to 20 characters. They are case sensitive, allow only alphabetic or numeric characters and must start with an initial alphabetic character.


Document Control Text Editing

Text and Document controls have built in capabilities as follows
Cut	Ctrl+X
Copy	Ctrl+C
Paste	Ctrl+V
Undo	Ctrl+Z


Event

An occurrence resulting from a user or system action, such as a pointer button click or a key depression.


GUI Window

A GUI window is a window which will run in graphical mode on the PC console. When building a GUI window the controls available in the Toolbox include the full set appropriate for use in graphical mode.


List Box Selections

List boxes which allow multiple selections use the standard Microsoft Windows techniques, which are summarized here.

An individual choices can be selected by clicking on it, then, while holding down CTRL, click each additional choice that you want to select.  To remove a choice from the selection hold down CTRL and then click the choice. You can also extend the selection over a block of contiguous choices as follows: click the first choices, hold down SHIFT, and then click the last choice that you want in the selection. All filenames in between are now selected as well. The same effect may be obtained by dragging using the mouse.


Module Name

Module names are restricted to 20 characters. They are case sensitive, allow only alphabetic or numeric characters and must start with an initial alphabetic character.


Module

Modules are used to group both windows and other modules in order to produce a hierarchy which can be used in structural decomposition. Windows are not contained within their respective modules. Rather, they are components of the module, but can be opened and manipulated in their own right. A window can be a component of many modules, or of none.


Moniker

A logical name used to refer to a local, network, or memory database.  A moniker consists of a string of characters which obey the same rules as M for local variable names, up to a maximum length of 32 characters.  The initial character "%" is reserved for system monikers and may not be used.


MWAPI

The M Windowing Application Programming Interface extends the M programming language with the addition of capabilities for developing and operating graphical user interface (GUI) applications.

It is part of the suite of ANSI standards which make up the programming environment know as M Technology.


Pop-up Menu

A pop-up menu obtained with a click of the secondary mouse button over a control on a window under construction, or over the window itself. The menu provides quick access to operations applying to the control or window.


Primary Mouse Button

The primary mouse button is normally on the left, unless your system has been configured to swap the buttons over, perhaps for left-handed operation.


Property

A characteristic of an object, including MWAPI attributes and more. This term is used in preference to attribute because its use is more common and to emphasize that the properties defined for an object do not necessarily relate to its (MWAPI) attributes.


Secondary Mouse Button

The secondary mouse button is normally on the right, unless your system has been configured to swap the buttons over, perhaps for left-handed operation.


Title bar

A horizontal bar at the top of a window, dialog box or toolbar, which shows the name of the window, application or toolbar.


Toolbox Lock Button

The Toolbox lock button is clicked to change from single control creation mode to multiple control creation mode. It is also locked down automatically when a control in the Toolbox is double-clicked. The control selected will be locked down and multiple instances of the control can the be placed on the window without having to reselect from the Toolbox. Clicking the Lock Button again or selecting another control from the Toolbox will return to single control creation mode.


Toolbox Pointer

The Toolbox pointer changes from creation mode to manipulation mode. It resets the control currently selected for single or multiple selection and allows objects to be resized or moved on the workbench. This is one of the items in the Toolbox which does not draw a control. Use it to resize or move a control after it has been drawn on the form.


Unit Types

CHAR

If units is CHAR, the character width is the average width of the specified character string in the font in use; if no character is specified, the width is the maximum character width in the font. The character height is the line height of that font, including leading.

PIXEL and POINT

If units is either of these, one unit is one pixel or point as specified. One point is 1/72 inches.

REL

If units is REL, the units are relative to the size of a parent window's viewport on its creation, unless the object is a window whose TIED attribute is 0, when the units are relative to the size of the display. The horizontal scale and the vertical scale are integers greater than 0 (zero) where a value of 100 indicates a relative scale of 1:1. For example, a value of "REL,60,60" would indicate a size or position scaled to 60%. The default for both horizontal and vertical scale is 100.

ZDLG

If units is ZDLG, the units are Windows dialog units. This is a unit based on the average width of the current Windows default font. The unit is 0.25 characters wide and 0.125 characters high.


View Exchange Format

The View EXchange file format (VEX) is used for the exchange of MSM-Workstation window definitions using the Import and Export facilities. .VEX format export produces files containing formatted ASCII text.


Visual Basic .FRM Files

The .FRM format is used for the exchange of Visual Basic window definitions, these can be imported into the MSM-Workstation using the Import facility. The .FRM format files must have been produces using the ASCII text format option.


Window Name

Window names are restricted to 20 characters. They are case sensitive, allow only alphabetic or numeric characters and must start with an initial alphabetic character.