SAL and SQL Functions

All SAL functions are available in the PPJ.Runtime.Sal class as static methods. The names are all unchanged, except that the Sal prefix has been removed and it is now the name of the class: SalStrLeft() is now Sal.StrLeft().

Similarly all Sql functions are available as static methods of the PPJ.Runtime.Sql class.

Sql global variables SqlDatabase, SqlUser and SqlPassword are static fields of the Sql class, with the "Sql" prefix removed. For example, SqlDatabase is ported to Sql.Database.

Renamed functions

For name consistency reasons we have renamed few Sal functions that did not fit any naming pattern or the name did not seem to be complete. Renaming has been performed automatically by Ice Porter conversion tool.

Old nameNew name

SalQueryArrayBounds

Sal.ArrayQueryBounds.

SalSetArrayBounds

Sal.ArraySetBounds

SalFileGetC

Sal.FileGetChar

SalFilePutC

Sal.FilePutChar

SalStrFirstC

Sal.StrFirstChar

SqlPLSQLCommand

Sql.OraPLSQLCommand

Unsupported functions

Some functions cannot be supported in the .NET environment because of some fundamental differences with Team Developer. The most important difference of all is the fact that .NET applications are compiled, as any C/C++ application, and therefore the PPJ Framework cannot have any control over the execution of the compile code.

Unsupported functionReplacement

SalMTSGetObjectContext

Unknown, the purpose of this function is unclear.

SalValidateSet

There is no replacement, it can be ignored.

SalContextBreak

There is no replacement.

SalFileOpenExt

There is no replacement.

SalLogResource

There is no replacement.

SalYieldEnable

All Yielding functionality has to be replaced to use one single function: Sal.Yield(target). This is similar to Application.DoEvents(). The new Sal.Yield() function should be placed inside the loop that it's supposed to yield from.

SalYieldQueryState

"

SalYieldStartMessages

"

SalYieldStopMessages

"

SalFontGetSizes

There is no replacement. .NET does not support fixed size fonts.

SalFormGetParmNum

Use the DisplayRectangle property to retrieve the scrollable area.

SqlConnectTransation

There is no replacement.

SqlConnectUsingCursor

There is no replacement. ADO.NET does not support server side cursors.

SqlDisconnectWithoutCursor

There is no replacement. ADO.NET does not support server side cursors.

SqlSetLongBindDatatype

There is no replacement. It can be ignored.

SqlExecutionPlan

There is no replacement.

SqlGetCursor

There is no replacement. The SQL/API library is not used by ADO.NET.

SqlGetSqlHandle

There is no replacement.

SqlSetInMessage

There is no replacement in code. The specific ADO.NET driver may support a parameter in the connection string that alters the size of the IN buffer.

SqlSetOutMessage

There is no replacement in code. The specific ADO.NET driver may support a parameter in the connection string that alters the size of the OUT buffer.

SqlXDirectory

There is no replacement.

SqlOraPLSQLStringBindType

There is no replacement. It can be ignored.

SqlGetCmdOrRowsetPtr

There is no replacement.

SqlGetDSOrSessionPtr

There is no replacement.

SqlClose

There is no replacement. ADO.NET does not support server side cursors.

SqlDropStoredCmd

There is no replacement.

SqlGetRollbackFlag

There is no replacement.

SqlOpen

There is no replacement. ADO.NET does not support server side cursors.

SqlStore

Use Sql Prepare.

SqlGetParameterAll

Use Sql.GetParameter.

SqlSetParameterAll

Use Sql.SetParameter.

SalActiveXClose

There is no replacement. .NET doesn't support OLE objects.

SalActiveX Create*

There is no replacement. .NET doesn't support OLE objects.

SalActiveX Delete

There is no replacement. .NET doesn't support OLE objects.

SalActiveXGetActiveObject

There is no replacement. .NET doesn't support OLE objects.

SalActiveXGetData

There is no replacement. .NET doesn't support OLE objects.

SalActiveXGetFileName

There is no replacement. .NET doesn't support OLE objects.

SalActiveXInsertObjectDlg

There is no replacement. .NET doesn't support OLE objects.

SalActiveXGetProgID

There is no replacement. .NET doesn't support OLE objects.

SalActiveXOLEType

Replace with the value 4 (salOLEControl).

ActiveX/OLE Support

The PPJ Framework supports ActiveX controls, not OLE objects because there is no built-in support for OLE in the .NET Framework.

Difference in behavior

One of our first priorities is to maintain the closest possible compatibility with the known behavior of the Team Developer functions and the equivalent PPJ Framework functions.

However, there may be several cases (mostly in extreme situations or unknown combinations of arguments) where the fundamental behavior of the ported functions is different from the original Team Developer functions. There may also be cases where different versions of Team Developer show different behaviors.

Object Oriented transformations

Depending on the personalized settings used in Ice Porter for the generation of the ported project, some Sal functions may have been transformed into Object Oriented calls.

The transformation is applied to all the data-type-related functions. That is all SalStr, SalDate, SalNumber, Sql and File handling functions. When possible, the last receive argument has also been moved to the beginning of the expression and the expression has been changed to an assignment.

For example:

SalStrLeftX(strName, 5, strName)

May have been ported to:

strName = strName.Left(5);

Last updated