Conversion Tools

Top  Previous  Next

 

Four tools are available to assist in conversion of programs imported from other multivalue systems:

D3CONVMigration from D3
MVCONVMigration from mvBase
UDCONVMigration from Unidata
UVCONVMigration from UniVerse

 

The command syntax and general operation of these tools are identical except as explicitly described below.

 

The conversion tools take a file containing program source code from the originating system and process this to produce a file of the equivalent QM program source code. Although the conversion tools can make many source changes automatically, there are situations where there is a need for manual intervention. These are reported on the screen and also tagged in the QM source text with an easily searchable tag (!!) and a description of the issue.

 

Using D3CONV as an example, the command syntax is

D3CONV source.name target.name {program.name} {options}

where

source.nameis the name of the QM file holding the original programs.
target.nameis the name of the QM file to receive the converted source code.
program.nameis one or more names of the programs to be converted. Using an asterisk as the program name converts all programs in the source file. If no program name is given, the default select list is used.
optionsare chosen from:
BRIEFMinimal reporting, showing only modules with errors.
DELETINGDelete source program after successful conversion.

 

In addition, UVCONV has an option that specifies the UniVerse flavour of the origin system as IDEAL, INFORMATION, PICK, PIOPEN or REALITY. For example,

UVCONV UVBP QMBP * IDEAL

 

UDCONV has a BASICTYPE option that specifies the compiler language variant for which the program was written (P or U). This defaults to U if not specified. For example,

UDCONV UDBP QMBP * BASICTYPE P

 

 

The convertor performs just enough syntax analysis to be able to determine the role of each source element. It is assumed that the input program is structurally correct and there is minimal attempt to trap program errors. Very incorrect syntax such as misplaced use of a THEN clause may pass through unreported.

 

The conversion process performs several automated substitutions but does not attempt to rewrite code in any way. Some of the actions performed are:

Replacement of SYSTEM() function key values with token names that are defined in the SYSCOM KEYS.H include record. By using token names rather than simply changing the key values where the QM key is different from that on the originating system, the code is more readable and could still be compiled on the original system if an alternative include record was constructed. SYSTEM() functions for which no direct equivalent exists in QM will be tagged for manual inspection.

The negative mode values in the @() function are replaced by token names that are defined in the SYSCOM KEYS.H include record. Unrecognised @() function mode values are tagged for manual inspection.

Some @-variable names may be changed to their QM equivalents.

Some statements and functions may have minor changes to their syntax applied.

 

Users encountering migration issues that are not resolved by the conversion tools are encouraged to report the details as a work-around may be available.