HPlogo ALLBASE/SQL Advanced Application Programming Guide: HP 3000 MPE/iX Computer Systems > Chapter 1 Using the Preprocessor

Static Conversion Mode

» 

Technical documentation

Complete book in PDF
» Feedback

 » Table of Contents

 » Index

The DYNAMIC preprocessor command line option provides a means of converting static SQL statements to dynamic statements with little or no change to existing source code.

This is termed static conversion processing and provides the flexibility of running an application with either static processing or dynamic processing. In addition, an already dynamic application can be preprocessed without having to specify a DBEnvironment name in the command line.

This functionality is available for C and Pascal applications.

The following sections describe how to implement this feature. Note that additional information and examples regarding static and dynamic processing are found in the language specific ALLBASE/SQL application programming guides and in later sections in this chapter.

Static Conversion Mode Syntax Specification

Use one of the following statements to both check SQL syntax and create output files that can be processed by the compiler. All static SQL statements are converted to dynamic statements. Dynamic SQL statements remain dynamic. No module is created, and no DBEnvironment is connected to during preprocessing.

Static Conversion Mode for C Applications

RUN PSQLC.PUB.SYS;INFO= "(DYNAMIC [FLAGGER (FlaggerName)] [ANSI] [THREAD] )"

Static Conversion Mode for Pascal Applications

RUN PSQLPAS.PUB.SYS;INFO= "(DYNAMIC [FLAGGER (FlaggerName)] [ANSI] )"

Parameters

DYNAMIC

indicates that all static SQL statements are to be converted to dynamic statements, dynamic statements remain dynamic, and a module is not created. DYNAMIC can be specified in upper and/or lower case.

FlaggerName

is the name of the flagger being invoked. At this release FIPS127.1 is the only valid FlaggerName. FlaggerName is not case sensitive. Refer to the "Flagging Non-Standard SQL with the FIPS Flagger" chapter in this manual.

ANSI

preprocesses the application in ANSI mode. The preprocessor generates an SQLCA declaration automatically and implicit updatability is in effect. Refer to the sections "Understanding Implicit Updatability" and "Declaring the SQLCA" in this manual.

THREAD

For C applications only; used to support threaded applications. When specified, the C preprocessor will not generate the #include "SQLVAR" line at the beginning of SQLOUT. The user must insert a #include "SQLVAR" wherever local variables are required to compile and utilize application threads successfully.

Description

  • The complete set of ALLBASE/SQL syntax can be preprocessed in static conversion mode with the following execeptions:

    • Any DECLARE CURSOR statements must be located in an executable portion of the code. In the C language, for example, you would declare the cursor within curly brackets following any data declaration statements within a given block. For Pascal, position the statement within a BEGIN/END block.

    • Static host variables in the source code (except for those used in a BULK FETCH or BULK SELECT statement) are converted to dynamic parameters. Therefore, such static host variables must adhere to the specifications for dynamic parameters. For further information, refer to the "Using Parameter Substitution in Dynamic Statements" chapter in this document.

  • When you invoke the preprocessor with the FLAGGER option, your application must contain an ANSI mode compiler directive in order for the compiler to detect non-standard statements. The following table lists the appropriate directive for each language:

    LanguageDirective
    Cccxl ... ;info='-Aa'
    COBOL$CONTROL STDWARN
    FORTRAN$OPTION ANSI ON$
    Pascal$standard_level 'ANSI'$

Authorization

At run time, the owner of any unqualified object defaults to the user who is running the application.

Example of Static Conversion Processing of a C Application

   RUN PSQLC.PUB.SYS;INFO="{{(DYNAMIC)}}"

Example of Static Conversion Processing of a Pascal Application

   RUN PSQLPAS.PUB.SYS;INFO="{{(DYNAMIC)}}"

Before running the preprocessor, remember to equate SQLIN to the name of the file containing the application you want to preprocess. After running the preprocessor, save and rename any output files you do not want overwritten.

Feedback to webmaster