SnowConvert
The best available tools to perform code migrations from a source database or Spark application to Snowflake.

Oracle
Spark Scala
Spark Python
SQL Server
Teradata

Data Solutions
The premier productivity workbench designed and optimized for teams using Snowflake.

Translation with SnowConvert
Edit, Debug & Deploy
Automated Test Case Generation
Metadata Analysis
Source Code Management

Get Started
There are countless ways to take advantage of BlackDiamond Studio and SnowConvert.

Migration and Other Snowflake Services
Get Up and Running with Snowpark
Using the SnowConvert Trial
Build a Cross-Platform Object Inventory

Monetize Your Data

We Are GAP Mobilize
Free Assessment Tool

VB to .NET

ISSUE #1016

Declaring a parameter 'As Any' is not supported.

Description

In Visual Basic 6.0, you could declare a reference to an external procedure with the Declare statement and specify As Any for the data type of an argument or return type. The As Any keyword disabled type checking and allowed any data type to be passed in or returned.

In Visual Basic .NET, the As Any keyword is no longer supported. To ensure type safety, you must specifically declare the data type of all arguments and return values

Recommendations

Determine where the declared function is being used in your code and what data type is being passed. If all occurrences use the same data type as a parameter, change the declaration to include the specific data type instead of As Any.

If you need to support multiple data types, overload the function declaration for each data type.

Sample VB6

PrivateDeclareSub CopyMemory Lib"kernel32"Alias"RtlMoveMemory" (ByVal Destination As Any, ByVal Source As Any, ByVal Length AsLong)

Target VB.NET

'UPGRADE_ISSUE: (1016) Declaring a parameter 'As Any' is not supported.

'UPGRADE_ISSUE: (1016) Declaring a parameter 'As Any' is not supported.

PrivateDeclareSub CopyMemory Lib"kernel32"Alias"RtlMoveMemory" (ByRef Destination As Any, ByRef Source As Any, ByVal Length AsInteger)

Expected VB.NET

In this case, the original call is an Windows API call to RtlMoveMemory, so we will need to fix a few things in addition to changing the method signature. First, we'll use attributes to help describe the external call, and we'll also need to mark the code as unsafe since we're accessing memory directly. For the parameters, the correct signature in .Net is to use IntPtr types for the source and destination, so we'll do that.

DeclareAutoSub MoveMemory Lib"Kernel32.dll" _

Alias"RtlMoveMemory" (ByRef dest As IntPtr, ByRef src As IntPtr, ByVal size AsInteger)

As can be seen, a valid replacement for As Any will vary according to the code migrated.

Target C#

//UPGRADE_ISSUE: (1016) Declaring a parameter 'As Any' is not supported.

//UPGRADE_ISSUE: (1016) Declaring a parameter 'As Any' is not supported.

[DllImport("kernel32.dll")]

publicexternstaticvoid CopyMemory( object Destination, object Source, int Length);

Expected C#

In this case, the original call is an Windows API call to RtlMoveMemory, so we will need to fix a few things in addition to changing the method signature. First, we'll use attributes to help describe the external call, and we'll also need to mark the code as unsafe since we're accessing memory directly. For the parameters, the correct signature in .Net is to use IntPtr types for the source and destination, so we'll do that.

[DllImport("Kernel32.dll", EntryPoint = "RtlMoveMemory", SetLastError = false)]

unsafeexternstaticvoid CopyMemory(void* dest, void* src, int size);

As can be seen, a valid replacement for As Any will vary according to the code migrated.

Talk To An Engineer