Converting Scripts from
DynaComm Asynchronous to DCS 10
Summary
This paper describes migration issues of upgrading from DynaComm Asynchronous or DynaComm TN3270 to the DynaComm Connectivity Series 10 (DCS 10). The objective of this paper is to provide an overview of the conversion process, the benefits and difficulties to be considered in migration, and specific steps in the process. The conversion effort required varies, but as a general rule, it pays to consider new features and plans up front instead of directly porting the existing environment and retaining the limitations therewith.
Contents
New Features of DCS 10
DCS 10 is a 32-bit product upgrade to several 16-bit versions of DynaComm, of which DynaComm Asynchronous (hereafter described as DCA) is one member. DCA is a single-session product, meaning that only one host session can be open per running instance of DynaComm. However, it supports several ways of connecting and seveal emulations. DCTN3270 is a single session TN3270 product, supporting one connection and one emulation per instance. Other 16-bit products include DynaComm/Elite and DynaComm/OpenConnect which support multiple concurrent sessions to one host and using one emulation (3270 or 5250). The motivation behind DCS 10 was to provide a 32-bit
product upgrade to all of these 16-bit products, supporting multiple concurrent connections to potentially different host
systems, potentially using different emulations and different connection methods, all within a single application instance.
Preserving backwards compatibility was a high priority, somewhat mitigated by the fact that DCS 10 is an upgrade to these
different products.
Another goal of DCS was to unify the different emulations and connectors supported under a consistent,
intuitive user interface. This necessitates several changes, since a single session product such as DCA or DCTN3270 can store session properties as application global settings, but a multiple session product must store them per session. Furthermore, configurable properties and appropriate default values vary with the choice of emulation and connection, so a further goal would be to have the interface knowledgeable of the features of the selected emulation and connection. DCS addresses this by implementing several features previously provided in DCA with the DynaComm Script Language as integrated parts of the product, leaving the Script Language free to implement custom functionality, and extending it to support multiple concurrent scripts.
DCS 10 is a fully 32-bit application, which implies some required differences from DCA and other
16-bit applications. DCA uses an INI file in the Windows directory to store global application values,
whereas DCS stores this information in the Registry. Per Windows logo guidelines, application system directories should
be stored under Program Files, so the default application directories have changed.
A final guiding principle for the development of DCS 10, with indirect albeit significant impact on conversion
planning, was to use our experience in the heterogeneous host environment to identify features and flexibility most used by our
customers, to make those features versatile and easy to use. This meant building alot of configurability into the product, while retaining the administrators ability to set and protect vital settings. We’ve also incorporated ActiveX technologies for browser and application integration. Host applications can be integrated with Intranet sites and third party Windows applications which support OLE, retaining all the keymapping, attribute mapping, scripts and other customization features of the standalone DCS product. These are really new features and not conversion requirements, but considering them during conversion planning may suggest easier alternatives, and worthwhile modifications that facilitate later developments.
The goals of integrating several products into a single 32-bit host access enterprise solution, with a
consistent and intelligent interface, and support for multiple concurrent sessions and scripts, pretty much indicate the
motivation of changes and the issues likely encountered in a conversion effort. The rest of this paper gives further details
and implementation suggestions.
Return to top
Summary of Changes
Product file / feature |
DynaComm Asynchronous |
DCS 10 |
Session file |
DCS file, Dynacomm.DCS is default, some INI files in DCS directory. |
SES files, no default loaded on startup, but can be set that way |
Keyboard Mapper |
Done with script, mappings stored in DKM file |
Set in Session:Properties, Emulation, Keyboard tab, stored
in KBM file |
Color/Attribute Mapping |
Done via script, global, stored in DCASYNC.INI file |
Attributes, stored in ACM file |
Toolbars |
Session toolbar definition stored in DCS file |
Replaced by application global floating toolbars, stored in Registry |
Menu customization |
Done via script, application global |
Menu Editor based on child window type, stored in Registry. Also available via Script. |
Program icons, shortcuts |
EXE name is Dynacomm.Exe |
EXE name is DCSeries.Exe |
Dialer (in DCA) |
DCD files |
No equivalent, can be done via custom script |
Script Language |
DCP files, DCT files |
DCP files with modifications, recompile into valid DCT files for DCS 10. |
Return to top
Script Conversion
Above, we discussed the advantages and reasons it is preferable to update scripts to use the features of
DCS 10, instead of just porting existing behavior and limitations to the new product. This overview is divided into a section
of minimal and recommended steps of conversion. Minimal steps are listed as pairs of changes and suggested solution for
conversion from DCA to DCS. Recommended steps also include the likely impact of omitting
the recommended change.
Script Conversion - Minimal Steps
Change: |
Task files (DCT files) support additional functionality in DCS 10. |
Suggestion: |
Use DCS 10 to recompile DCP files written in DCA or DCTN3270. |
Change: |
Some commands and functions in DCA are no longer applicable in DCS 10,
due to changes in product functionality or interface. |
Suggestion: |
Commands and functions not supported by DCS 10 will encounter compile errors
indicating the line or command which is not recognized. Consult the
list of obsolete commands and functions below
for an equivalent command/function if available. |
Change: |
The SYSTEM command and SYSTEM ( ) function are replaced with more
meaningful names. |
Suggestion: |
These commands and functions were “undocumented” features, which became documented
in DCA. These may not give compiler errors, but are not implemented to do anything. These are treated as obsolete
commands. See the list of obsolete commands below for replacement
commands where available. |
Change: |
A command / function in DCS 10 has more parameters than in earlier products. |
Suggestion: |
Extra parameters have been made optional whenever possible. Otherwise, they will
appear as compile errors and should be handled as above. For example, since multiple concurrent dialogs are supported,
your DIALOG commands and functions support optional indexes. |
Change: |
Default directory names and locations have changed. |
Suggestion: |
This is not an issue if the DIRECTORY( ) function was used to get the directory path.
Otherwise, search and replace hard-coded paths with the DIRECTORY( ) script function with appropriate parameter. |
Change: |
Settings file in DCA used a file extension of DCS, the new
file extension for session files is SES. (These files are not compatible/convertible). |
Suggestion: |
Search scripts for DCS string, and if used as part of a filename, change to a valid
SES filename. |
Change: |
DCA had a default settings file, DYNACOMM.DCS, which was loaded and connected if available. |
Suggestion: |
DCS 10 does not have a default session file, but one can be implemented by using the AUTOSTRT script which runs when DCS is launched. Write a script that says LOAD “DynaComm.Ses”, save as AUTOSTRT.DCP, and compile. Be sure to create a valid session file with that name. This may be one of the cases where DCA’s single-session limitation was built into the script, so this should be reviewed to see if it is appropriate to remove it. Alternatively, if a script is going to be run anyway, it would be preferable to add the LOAD or CONNECT command to that script to minimize the number of scripts. |
Change: |
The script which runs automatically when DCS 10 is run is called AUTOSTRT.DCT,
not AUTOEXEC.DCT. |
Suggestion: |
DCA shipped with a AUTOEXEC.DCT that is 142 bytes in size, used to call a script called KEYMAP on startup. If the script is different from that, or considerably larger, it may incorporate functionality that should be converted to DCS 7.0 Find the AUTOEXEC.DCP and treat as with other scripts for conversion. |
Change: |
For 16-bit products, the LIBRARY CALL command calls 16-bit DLLs, for 32-bit products
it calls 32-bit DLLs. |
Suggestion: |
Recompile the DLL in 32-bit development environment. If the DLL calls
16-bit Windows functions not supported by Win 95 or NT, then some redevelopment of the DLL may be necessary. |
Change: |
The application menus are changed. |
Suggestion: |
If a script is used to customize the menus, it may use POPUP “MenuName” SYSTEM X where X is a
number indicating a default menu (where File is 1, Edit is 2, ...). The symptom will be that the menu items correspond
to a different popup menu. Search scripts for the word “System” and check if the word is used as part of
menu modification, and update the number as appropriate. Also, since the menu bar is different depending on whether
the child window is a Session, Script, Memo, or Main application window, make sure the correct window type is active
when these script commands are invoked. When possible, use the Menu Editor instead of scripts to update the menu. |
Change: |
The session toolbar is no longer configurable via script or the user. The floating application toolbars with
Toolbar Editor is meant to provide this functionality. |
Suggestion: |
Search scripts for @T and @F, or the word “Level” which are used to configure the session
toolbar in DCA via script. |
Return to top
Script Conversion - Recommended Steps
Change: |
In DCS 10, you can use several concurrent host sessions, not just one. |
Suggestion: |
If the script interacts with the session, you want to maintain its association with the appropriate session, even
if the user opens a second session to do something else at the same time. Retrieve the window handle using the script
command which opens the session, or use the WINDOWHND( ) or ACTIVE( ) function, or some other means of determining the
window handle for the session window after it has been opened. Then use the optional WindowHandle parameter for script
commands that interact with or monitor the session. Alternatively, the SETDEFAULTSESSIONHANDLE command sets the default
window handle for commands not specifying one. |
Impact: |
In the absence of setting the windowhandle for the target session, the script command will apply to the active window.
This may work fine, but incur sporadic problems if other sessions or child windows are opened. |
Change: |
Multiple scripts can be run simultaneously in DCS 10. |
Suggestion: |
Search scripts for the commands PERFORM, EXECUTE, and LAUNCH, which may call other
scripts. If the program flow is such that the scripts should be performed sequentially, it should work unchanged.
The SPAWN command allows you to perform independent scripts, which may be desired if that suits the particular
application, or to get around limitations on the number of WHEN commands. Choosing the menu item Script:Stop lists
the running scripts if more than one is in execution at the time. |
Impact: |
This additional flexibility may be useful for complex multitasking operations. |
Change: |
Features which apply to session behavior are now configurable by session,
instead of set in the product for all defined sessions. Startup scripts can also be associated to run when a
particular session is run. |
Suggestion: |
Approach session automation conversion from a session perspective. For example, define
a session”s relevant properties and store to a SES file, create a script to perform session related automation
and distribute the SES and DCT files together as a unit. This way, if an AS/400 or Tandem session is later added, your
environment will not be affected. |
Impact: |
This is a case of using new flexibility in the product, as opposed to porting limitations
from earlier products. |
Change: |
Multiple Dialog Boxes are supported, up to 16 concurrent ones. |
Suggestion: |
Verify the DIALOG CANCEL command is used in the script after DIALOG END and WAIT RESUME.
In DynaComm/Elite and DynaComm/OpenConnect, the DIALOG CANCEL function was implied when a new dialog was defined.
Add the optional dialog index to the end of DIALOG commands, and use this optional parameter in referencing controls,
such as the EDITTEXT( ) function, to indicate the control number and dialog. |
Impact: |
Not using DIALOG CANCEL may cause multiple dialog boxes to stay on the screen, perhaps
unnoticed if they are stacked in the same position. Not using Indexes for dialogs may create strange results if the
script is later updated to include more than one dialog box displayed at the same time. |
Change: |
New script commands are available for setting and reading product configuration. |
Suggestion: |
CONNCONFIG, EMULCONFIG, DISPLAYCONFIG, and XFERCONFIG are available to set properties of
the connector, emulation, display and file transfer. GENERALCONFIG and APPCONFIG configure general session properties
and application global settings respectively. In many cases, earlier commands are still supported, though the newer
syntax is preferable. The same applies to the SETTINGS( ) function, which is still supported but replaced by
GETCONNCONFIG(), GETEMULCONFIG(), GETDISPLAYCONFIG(), and GETXFERCONFIG(). |
Impact: |
The new syntax makes scripts consistent and easier to follow for mixtures of connectors,
emulations, etc. Some keywords for the SETTINGS( ) function are meaningless in DCS 10, since corresponding settings
are not included in DCS. |
Return to top
Obsolete/Replaced Commands & Functions
Some script commands/functions have been removed from the product as inappropriate to new product
functionality, others have been subsumed by other commands/functions. Most of these are rarely used, so the recommended approach is to compile the script and reference this list when necessary, rather than to search scripts for each of the commands listed.
A list of replaced commands and functions follows:
DynaComm Asynchronous
Script Command/Function |
DCS 10 Alternative Command |
Dialog WideButton |
DIALOG BUTTON |
ResetSerial |
CONNECT |
Set Answerback |
EMULCONFIG, undocumented DCS command |
Set Blocksize |
TRANSFERS |
Set ConfirmDisconnect |
Set in Session:Properties, General tab in DCS 10 |
Set Connector |
SET CONNECTION |
Set CursorBlink |
SET DISPLAYCONFIG |
Set Emulate |
SET EMULATION |
Set Folder |
SET DIRECTORY |
Set IncomingCR |
EMULCONFIG |
Set IncomingLF |
EMULCONFIG |
Set LineWrap |
EMULCONFIG |
Set MemoTitle |
SET WINDOWTITLE |
Set Modem |
SET MODEMTYPE |
Set Network CardNum |
CONNCONFIG, when/if NetBios is supported |
Set Network Link |
SET CONNECTION, CONNCONFIG |
Set Network LocalName |
CONNCONFIG |
Set Nework LuNum |
CONNCONFIG |
Set Network LUPUName |
CONNCONFIG |
Set Network RemoteName |
CONNCONFIG |
Set ParityCheck |
CONNCONFIG |
Set RecordFormat |
TRANSFERS |
Set RecordLength |
TRANSFERS |
Set Space1 |
TRANSFERS |
Set Space2 |
TRANSFERS |
Set Stopalert |
Undocumented in DCA, set in Session:Properties, General in DCS 10 |
Set TermScrollBars |
DISPLAYCONFIG |
Set TermTitle |
SET WINDOWTITLE |
Set Units |
TRANSFERS |
System 0x0100 |
WINDOW MESSAGE to DCS app, with menuID |
System(0x0100) |
WINDOWNAME() |
System 0x0105 |
Beep |
System 0x0200 |
SELECTION |
System 0x0201 |
DISPLAY (x,y)"" (dislay a null string, but specify coordinates) |
System 0x0202 |
SELECTION |
Set 0x0208 |
SCROLL |
System 0x0300,
System 0x0301, or
System 0x0302 |
Use TABLE commands to read from file |
System 0x0500,
System 0x0501, and System(0x0500) |
MENU INSERT POPUP, MENU INSERT ITEM, or Menu Editor |
System 0x0600,
System 0x0601 |
Can use LAUNCH command to specify a different viewer, or (DIALOG) PICUTRE cmd. |
System 0x0F00,
System 0x0F01,
System 0x0F02 |
PUTPROFILEDATA() |
System(0x0F00), System(0x0F01), or System(0x0F02) |
GETPROFILEDATA() |
WaitForCall |
SEND modem string to wait for call |
A list of obsolete commands and functions follows:
DynaComm Asynchronous
Script Command/Function |
Reason Eliminated |
File View GIF |
GIF Viewer not included in product. Can use LAUNCH command to send GIF as commandline argument to an
application which displays GIFs |
File View RLE |
Not included in product. |
Level |
Session Toolbar is not configurable by user |
Merge |
Undocumented DCA command |
Set AutoReset |
Undocumented DCA command |
Set FkeysArrange |
Not applicable |
Set FkeysIcons |
Not applicable |
Set Fkeys OneRow |
Not applicable |
Set IBMToAnsi |
Handled by emulations, translation profiles |
Set InputMode |
Alternate ways to monitor display data |
Set LimitWindowSize |
Not necessary; terminal fulfills role |
Set Monitormode |
Trace functionality is modified; monitor mode not supported. |
Set NetId |
CONNCONFIG, when Eicon X25 supported |
Set Network ReceiveTimeOut |
No client timeout |
Set Network SendTimeOut |
No client timeout |
Set Password |
Passwords not sotredi n Session Files |
Set ScrollMargins |
Specific to DG Dasher emulation |
Set Taskyield |
Uses Win32 threading for process priority |
Set TrueAttributes |
Attributes always true, handled by emulation |
System 0x0016 |
Windows envir vars should be set via Win API, use LIBRARY CALL to DLL to call API |
System 0x0080 |
Windows envir vars should be set via Win API; use LIBRARY CALL to DLL to call API |
System 0x0400 |
Unnecessary for current connector set |
System 0x0F03 |
Windows envir vars should be set via Win API; use LIBRARY CALL to DLL to call API |
System(0x0001, 0x0002, 0x0016, 0x0201, 0x0202, 0x0211, 0x0212, 0x0301, 0x0302, 0x8000) |
Not available |
Timer |
Timer no longer part of interface, per session |
Video Load |
Attribute mapping integrated with emulation |
Video Reset |
Attribute mapping integrated with emulation |
Video Save |
Attribute mapping integrated with emulation |
Video Style |
Attribute mapping integrated with emulation |
Video Update |
Attribute mapping integrated with emulation |
Return to top
New Commands & Functions
Functions |
Commands |
DEFAULTSESSIONHANDLE |
APPCONFIG |
EXFLDATTR |
CONNCONFIG |
FLDATTREXPOS |
DISPLAYCONFIG |
FLDNUM |
EMULCONFIG |
GETAPPCONFIG |
KEYMAP LOAD |
GETCONNCONFIG |
KEYMAP SAVE |
GETDISPLAYCONFIG |
LOGTOFILE |
GETEMULCONFIG |
MENU DELTE ITEM |
GETGENERALCONFIG |
MENU DEKETE POPUP |
GETXFERCONFIG |
MENU INSERT ITEM |
SEARCHINRECT |
MENU INSERT POPUP |
TYPEDLIBRARYCALL |
SCROLLDOWN |
WNDFILE |
SCROLL LEFT |
|
SCROLL RIGHT |
|
SCROLL UP |
|
SETAUTOSCROLLTOCURSOR |
|
SETDEFAULTSESSIONHANDLE |
|
SPAWN |
|
TOOLBAR HIDE |
|
TOOLBAR SHOW |
|
XFERCONFIG |
Return to top
Additional Resources
Technical Profiles are available in the Support
area of our web site. These give details of the product installation and footprints. Some of the recommendations of this paper
can be derived from a comparison of the DCA and DCS 10 Technical Profiles.
Return to top