Building Applications

Because your migrated application originated in a mainframe environment, the run-time application expects to find all of the appropriate SQL statements in packages and/or plans that reference database request modules (DBRMs). DBRMs contain the SQL statements extracted from the application source code during compilation.

To mimic this mainframe behavior, HCOSS provides a set of SQL compiler directive options that enable you to extract the EXEC SQL statements in your application source code into DBRMs as you compile the application. In a post-compilation step, you then bind the DBRMs to the application so that they can be accessed at run time.

The following sample use case scenarios show typical SQL compiler directives you might set for HCOSS applications:

Type of Program Scenario SQL Compiler Directive Options
COBOL Create DBRMs, and bind like the mainframe SQL(DBMAN={ODBC | ADO}, TARGETDB=MSSQLSERVER, DB=databaseName, [PASS=userid.password, ]BEHAVIOR=OPTIMIZED, DIALECT=MAINFRAME, DBRMLIB)1
COBOL Create DBRMs, bind like the mainframe, but do not connect to the database during compilation SQL(DBMAN={ODBC | ADO}, TARGETDB=MSSQLSERVER,BEHAVIOR=OPTIMIZED, DIALECT=MAINFRAME, DBRMLIB, NOCHECK)1
COBOL Do not create DBRMs, and do not create SQL Server stored procedures SQL(DBMAN={ODBC | ADO}, TARGETDB=MSSQLSERVER, DB=databaseName, [PASS=userid.password, ] BEHAVIOR=OPTIMIZED, DIALECT=MAINFRAME)1
COBOL Do not create DBRMs, do not create SQL Server stored procedures, and do not connect to the database during compilation SQL(DBMAN={ODBC | ADO}, TARGETDB=MSSQLSERVER, BEHAVIOR=OPTIMIZED, DIALECT=MAINFRAME, NOCHECK)1
PL/I Create DBRMs, and bind like the mainframe SQL(DBMAN=ODBC, TARGETDB=MSSQLSERVER, DB=databaseName, [PASS=userid.password, ] BEHAVIOR=OPTIMIZED, DIALECT=MAINFRAME, DBRMLIB)1
PL/I Create DBRMs, bind like the mainframe, but do not connect to the database during compilation SQL(DBMAN=ODBC, TARGETDB=MSSQLSERVER, DB=databaseName, [PASS=userid.password, ] BEHAVIOR=OPTIMIZED, DIALECT=MAINFRAME, DBRMLIB, NOCHECK)1
1 DIALECT=MAINFRAME automatically sets CHECK, CHECKDUPCURSOR, CHECKSINGLETON, DETECTDATE, DATE=ISO, TIME=ISO

In the IDE, you compile applications by building the projects that contain them. When you build an HCOSS application, you must first set appropriate SQL compiler directive options, and in most cases, establish a connection to your SQL Server database.

In addition to the standard SQL compiler directive options, HCOSS includes these specific options to handle application binding and SQL compatibility between DB2 and SQL Server:
  • ACCESS
  • BIND
  • DATE
  • DBRMLIB (required)
  • DIALECT (required)
  • MEMBER
  • QUALIFIER
  • TIME
  • VERSION
At a minimum, edit your project's SQL properties to set the following compiler directive options for the OpenESQL ESQL preprocessor to ensure that the build process generates the appropriate DBRMs and converts DB2 SQL into SQL Server SQL where necessary.
  • DBMAN - set this to one of the following values:
    • ODBC - for native applications
    • ADO - for .NET applications
  • TARGETDB - set this to a value of MSSQLSERVER.
  • DB - set this value to your SQL Server data source connection name
  • PASS - if your data source connection requires that you provide a user ID and password to connect, provide a user ID and password as follows:

    userID.password

  • DBRMLIB
  • DIALECT - set this to a value of MAINFRAME.
  • DETECTDATE
  • INIT

Before compiling, unless you have specified the SQL(NOCHECK) directive, you must be connected to the database specified by the DB directive via an ODBC (native applications) or an ADO.NET (.NET applications) connection.

Note: To set the SQL(NOCHECK) directive, you must add it such that it lists after the SQL(DBRMLIB) directive.