This tutorial takes you through the process of migrating a DB2 application to a SQL Server application, using HCOSS to add
function emulation.
This tutorial demonstrates adding function emulation by taking you through the process of:
- Adding math functions to SQL Server that represent standard math functions in DB2.
- Mapping the DB2 functions to the new SQL Server functions using the Customize SQL Name Mapping tool.
This tutorial also demonstrates binding the application using a post-build event in
Visual Studio.
Requirements
Before attempting this tutorial, you must first complete the following tutorials to ensure you have an established SQL Server
database named HCO_Test containing the required PROD and TEST schemas and a connection to the HCO_Test database:
- Tutorial: Create a SQL Server Database
- Tutorial: Create a Database Connection
- Tutorial: DB2 Database Migration or
Tutorial: Setup for Application Migration Tutorials
Visual Studio Solution
The
Visual Studio solution we provide for this tutorial contains
two HCOSS projects. The
FunctionEmulation project is a native COBOL project.
The
MFunctionEmulation project is a managed COBOL project. However, the COBOL code is the same in both projects.
Phase 1: Create User-defined Functions
- Launch SQL Server Management Studio, and select the
HCO_Test database.
- Navigate to and open the
FunctionEmulation.sql file, located in the
%PUBLIC%\Documents\Micro Focus\Enterprise Developer\Samples\Mainframe\SQL\hcoss\FunctionEmulation directory.
This file contains a script that creates some user defined math functions needed by the example code.
- Click
Execute.
- From the Object Explorer expand and select
HCO_Test > Programmability > Functions > Scalar-Valued Functions and
Refresh this folder. You should now see the newly created functions.
Phase 2: Start
Enterprise Developer and HCO for SQL Server Tools
If
Enterprise Developer and HCOSS for SQL Server tools are already running, skip this phase.
- Start
Enterprise Developer as an administrator. This procedure varies depending on your Windows version. If you need instructions, see
To start
Enterprise Developer as an administrator.
- In
Visual Studio, click
View > Micro Focus SQL Tools > HCO for SQL Server Tools.
Phase 3: Map the Functions for HCOSS
- From the HCO for SQL Server interface, click
Customize SQL Name Mappings.
- Scroll to the bottom of the grid and double-click in the first empty cell to activate it for editing. Type the following information
in the appropriate rows and columns, and check the corresponding
Is Function box for each:
DB2 Function/Special Register
|
SQL Server Equivalent
|
atanh
|
dbo.atanh
|
cosh
|
dbo.cosh
|
sinh
|
dbo.sinh
|
tanh
|
dbo.tanh
|
- Click
Save to save the mappings.
Phase 4: Analyze, Build, and Bind the Native Application
- Analyze the Native Application
-
- From the
Visual Studio IDE,
open the solution named
FunctionEmulation, which is located in the
%PUBLIC%\Documents\Micro Focus\Enterprise Developer\Samples\Mainframe\SQL\hcoss\FunctionEmulation directory.
- From the
Solution Explorer,
open the
FunctionEmulation.cbl file to view its contents.Pay particular attention to the EXEC SQL statement that references the user-defined functions.
- Close the code editor.
- Open the project properties for the
FunctionEmulation project.
- Notice that the
Output type on the
Application tab is
Console Application.
- Switch to the
COBOL tab, and set the following:
Configuration
|
Debug
|
Platform target
|
x86 (default)
|
- Switch to the
SQL tab. Several OpenESQL compiler directives have been set for you. The following table offers a brief description of each:
SQL(TARGETDB=MSSQLSERVER)
|
Target database is SQL Server
|
SQL(DB=HCODemo)
|
SQL Server connection name is HCODemo
|
SQL(DIALECT=MAINFRAME)
|
HCOSS database syntax conversion is enabled
|
SQL(DBRMLIB)
|
EXEC-SQL commands are extracted and placed in database request module (DBRM)
|
SQL(INIT)
|
Initiates the database connection
|
SQL(NOCHECK)
|
No SQL compile-time checking performed
|
SQL(BEHAVIOR=OPTIMIZED)
|
Optimizes migration process
|
- Define a Post-Build Event
-
- In the Properties window,
click the
COBOL tab; then click
Build Events.
- In the Post build event command line field, type the following command:
DSN SYSTEM(HCODemo) @"$(ProjectDir)FunctionEmulation.hcodsn"
This command calls the DSN Bind utility, specifies the SQL database connection to use, and states the location and name of
a bind script file.
Visual Studio executes this event immediately after building the application, automatically binding the application at that time.
- Click
OK to close the
Build Events dialog box.
- View the Contents of the Bind Script File
-
- From the
Solution Explorer, open and review the content of
FunctionEmulation.hcodsn. This bind script file contains one BIND PLAN command that binds the FunctionEmulation member into a plan named FunctionEmulation.
- Build and Bind the Applcation
-
- From the Solution Explorer, rebuild the
FunctionEmulation project, thereby generating a DBRM for the application and automatically binding it to the DBRM using the post-build event.
- Verify that the project built successfully.
- Verify the Results
-
- Using Microsoft SQL Server Management Studio, connect to your SQL Server instance.
- On the Object Explorer, expand
Databases > HCO_Test > Programmability > Stored Procedures to see the stored procedures HCOSS created when you executed your packages and plan.
- Open one of the stored procedures that contains
PLN as part of its name.
In this, you see your application code making the calls to the user-defined functions.
Phase 5: Run the Native Application
- From the
Solution Explorer, open the
FunctionEmulation.cbl source file.
- Set a break point on the line containing
if sqlcode = 0.
- Press
F5 to start debugging.
- Use the tools available from the
Debug toolbar or menu to continue to your breakpoint.
You should see from the output that the results are calculations performed by your user-defined functions.
Phase 6: Analyze, Build, Bind, and Run the Managed Application
- Analyze the Managed Application
-
- From the Solution Explorer, switch the starting project: Right-click the
MFunctionEmulation project and select
Set as StartUp Project.
- Open the project properties for the
MFunctionEmulation project.
- Click the
SQL tab.
Notice the directive settings for the OpenESQL ESQL Preprocessor include SQL(DBMAN=ADO). This means that we're using the ADO.NET
database connection rather than the ODBC database connection.
- Define a Post-Build Event
-
- From the Properties window add a post-build event to execute the following command (same command you used for the native project):
DSN SYSTEM(HCODemo) @"$(ProjectDir)FunctionEmulation.hcodsn"
- Close the Properties window.
- Build and Bind the Managed Application
-
- From the Solution Explorer, right-click the
MFunctionEmulation project and select
Rebuild.
- Run the Managed Application
-
- From the Solution Explorer in Visual Studio, open the
FunctionEmulation.cbl source file.
- Set a break point on the line containing
if sqlcode = 0.
- Run the application.
This completes the tutorial.