VB Migration Partner

KNOWLEDGE BASE - Language


Previous | Index | Next 

[PRB] Pragmas related to arrays might not work if applied to a ReDim statement

The symptoms of this problem is that you apply an ArrayBounds, ArrayRank, or ShiftIndexes pragma to an array redimensioned by means of a ReDim statement:

        Sub Test()
            '## names.ArrayBounds Shift
            ReDim names(1 To 100) As Long
        End Sub

If the names array is declared elsewhere in the project with an explicit Dim statement – as a global variable in a BAS module – the pragma doesn’t have have any effect. The solution is quite simple: you must apply the pragma right before the Dim statement that declares the array.

Here’s a little background: when VB Migration Partner parses the Test method, it might or might not have already parsed the Dim statement in the BAS module. In the latter case, VB Migration Partner assumes that names is a local array that is implicitly declared by means of the ReDim statement, therefore it creates a symbol for such an array and associates the ArrayBounds pragma to this symbol. Later during the parsing process, VB Migration Partner detects the Dim statement in the BAS module and determines that names is actually a reference to the global array and that the initial assumption was wrong. However, the pragmas that have been associated with the local array are not moved to the global array.

We opted for this behavior because the same symbol might be the target of incompatible pragmas. Developers are therefore forced to apply the pragma to the array declared by the Dim statement, because this practice results in nonambiguous code.

Previous | Index | Next 




Follow Francesco Balena on VB6 migration’s group on

LinkedIn





Read Microsoft Corp’s official case study of a VB6 conversion using VB Migration Partner.




Code Architects and its partners offers remote and onsite migration services.

More details




Subscribe to our free newsletter for useful VB6 migration tips and techniques.

newsletter



To learn more about your VB6 applications, run VB6 Analyzer on your source code and send us the generated text file. You will receive a detailed report about your VB6 applications and how VB Migration Partner can help you to quickly and effectively migrate it to .NET.

Get free advice



A fully-working, time-limited Trial Edition of VB Migration Partner allows you to test it against your actual code

Get the Trial




The price of VB Migration Partner depends on the size of the VB6 application, the type of license, and other factors

Request a quote




Migrating a VB6 application in 10 easy steps

Comparing VB Migration Partner with Upgrade Wizard

Migration tools: Feature Comparison Table

All whitepapers