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

Invoking the COBOL Preprocessor

» 

Technical documentation

Complete book in PDF
» Feedback

 » Table of Contents

 » Index

The COBOL preprocessor can be invoked to either

  • Only check the syntax of embedded SQL commands, or

  • Check the syntax of embedded SQL commands, create compilable output, store a module in a DBEnvironment, and create an installable module file.

Syntax Checking Mode

You use the following RUN command to only check the syntax of the SQL commands embedded in a file equated to SQLIN.



   :RUN PSQLCOB.PUB.SYS;INFO="(SYNTAX)"


Description

  • The preprocessor does not access a DBEnvironment when it is run in this mode.

  • When performing only syntax checking, the preprocessor does not convert the SQL commands into COBOL statements. Therefore SQLOUT does not contain any preprocessor generated calls to ALLBASE/SQL external procedures.

  • SQLCONST, SQLVAR, and SQLMOD are created, but are incomplete.

Authorization

You do not need ALLBASE/SQL authorization when you use the preprocessor to only check SQL syntax. In other words, the tables that store who has DBA, RESOURCE, and OWNER privileges on tables are not checked.

Example



   :FILE SQLIN=COBEX2

   :RUN PSQLCOB.PUB.SYS;INFO="(SYNTAX)"



                                             WED, OCT 25, 1991,  1:38 PM

   HP36216-E1.02          COBOL Preprocessor/3000            ALLBASE/SQL

   (C) COPYRIGHT HEWLETT-PACKARD CO. 1982,1983,1984,1985,1986,1987,1988,

   1989,1990,1991. ALL RIGHTS RESERVED.



   Syntax checked.

    1 ERRORS     0 WARNINGS

   END OF PREPROCESSING.





   PROGRAM TERMINATED IN AN ERROR STATE.  (CIERR 976)

   :EDITOR

   HP32501A.07.20 EDIT/3000 FRI, OCT 27, 1991,  9:35 AM

   (C) HEWLETT-PACKARD CO. 1990

   /T SQLMSG;L ALL UNN

   FILE UNNUMBERED



                 .

                 .

                 .

   SQLIN                = COBEX2.SOMEGRP.SOMEACCT





           SELECT PARTNUMBER, PARTNAME, SALESPRICE INTO :PARTNUMBER, :PARTNAME,

           :SALESPRICE :SALESPRICEIND, FROM PURCHDB.PARTS WHERE PARTNUMBER =

           :PARTNUMBER ;



   ******  ALLBASE/SQL errors (DBERR 10977)

   ******  in SQL statement ending in line 176

   ***     Unexpected keyword.  (DBERR 1006)



   Syntax checked.



    1 ERRORS   0 WARNINGS

   END OF PREPROCESSING.



   /



        The line 176 referenced in SQLMSG is the line in

        SQLIN where the erroneous SQL command ends.

Full Preprocessing Mode

You use the following RUN command to both check SQL syntax and create output files from SQLIN that can be processed by the COBOL compiler. This RUN command also stores a module in the DBEnvironment named and creates a file containing an installable version of the module.

:RUN PSQLCOB.PUB.SYS;INFO= "DBEnvironmentName [({ MODULE(ModuleName) OWNER (OwnerName) { DROP { PRESERVE REVOKE } NODROP }} |...| ]]"

Parameters

DBEnvironmentName

identifies the DBEnvironment in which a module is to be stored. You may use a backreference to a file defined in a file equation for this parameter.

ModuleName

assigns a name to the stored module. Module names must follow the rules governing ALLBASE/SQL basic names as described in the ALLBASE/SQL Reference Manual. If a module name is not specified, the preprocessor uses the PROGRAM-ID as the module name.

OwnerName

associates the stored module with a User @Account, a ClassName, or a GroupName. You can specify an owner name for the module only if you have DBA authority in the DBEnvironment where the module is to be stored. If not specified, the owner name is your log-on User @Account. Any object names in SQLIN not qualified with an owner name are qualified with the OwnerName specified by the preprocessor.

DROP

deletes any module currently stored in the DBEnvironment by the ModuleName and OwnerName specified in the INFO string.

NODROP

terminates preprocessing if any module currently exists in the DBEnvironment by the ModuleName and OwnerName specified in the INFO string. If not specified, NODROP is assumed.

PRESERVE

is specified when the program being preprocessed already has a stored module and you want to preserve existing RUN authorities for that module. If not specified, PRESERVE is assumed. PRESERVE cannot be specified unless DROP is also specified.

REVOKE

is specified when the program being preprocessed already has a stored module and you want to revoke existing RUN authorities for that module. REVOKE cannot be specified unless DROP is also specified.

Description

  • Before invoking the preprocessor in this mode when the program being preprocessed already has a stored module, ensure that the earlier version of the program is not being executed.

  • The preprocessor starts a DBE session in the DBEnvironment named in the RUN command by issuing a CONNECT TO 'DBEnvironmentName' command. If the autostart flag is OFF, the DBE session can be initiated only after a START DBE command has been processed.

  • If the DBEnvironment to be accessed is operating in single-user mode, preprocessing can occur only when another DBE session for the DBEnvironment does not exist.

  • When the preprocessor's DBE session begins, ALLBASE/SQL processes a BEGIN WORK command. When preprocessing is completed, the preprocessor submits a COMMIT WORK command, and any sections created are committed to the system catalog. If the preprocessor detects an error in the source file, it processes a ROLLBACK WORK command before terminating, and no sections are stored in the DBEnvironment. Preprocessor warnings do not prevent sections from being stored.

  • Since all preprocessor DBE sessions initiate only one transaction, any log file space used by the session is not available for re-use until after the session terminates. If rollforward logging is not in effect, you can issue the CHECKPOINT command in ISQL before preprocessing to increase the amount of available log space. Refer to the ALLBASE/SQL Database Administration Guide for additional information on log space management, such as using the START DBE NEWLOG command to increase the size of the log and recovering log space when rollforward logging is in effect.

  • During preprocessing, system catalog pages accessed for embedded commands are locked. In multiuser mode, other DBE sessions accessing the same objects must wait, and the potential for a deadlock exists. Refer to the ALLBASE/SQL Database Administration Guide for information on operations that lock system catalog pages.

  • For improved runtime performance, use ISQL to submit the UPDATE STATISTICS command before preprocessing for each table accessed in a data manipulation command when an index on that table has been added or dropped and when data in the table is often changed.

Authorization

To preprocess a program for the first time in this mode, you need CONNECT or DBA authority in the DBEnvironment the program accesses. After a stored module exists, you need module OWNER or DBA authority in the DBEnvironment.

Example



   :FILE SQLIN=COBEX2

   :RUN PSQLCOB.PUB.SYS;INFO=&

   "PartsDBE (MODULE(COBEX2) OWNER(OwnerP@SomeAcct) REVOKE DROP)"



                                             WED, OCT 25, 1991,  1:38 PM

   HP36216-E1.02            COBOL Preprocessor/3000          ALLBASE/SQL

   (C) COPYRIGHT HEWLETT-PACKARD CO. 1982,1983,1984,1985,1986,1987,1988,

   1989,1990,1991. ALL RIGHTS RESERVED.



    0 ERRORS     1 WARNINGS

   END OF PREPROCESSING.





   END OF PROGRAM

   :EDITOR

   HP32501A.07.20 EDIT/3000 FRI, OCT 27, 1991,  10:17 AM

   (C) HEWLETT-PACKARD CO. 1990

   /T SQLMSG;L ALL UNN

   FILE UNNUMBERED



                .

                .

                .

   SQLIN                = COBEX2.SOMEGRP.SOMEACCT

   DBEnvironment        = partsdbe

   Module Name          = COBEX2



           SELECT PARTNUMBER, PARTNAME, SALESPRICE INTO :PARTNUMBER, :PARTNAME,

           :SALESPRICE :SALESPRICEIND FROM PURCHDB.PARTS WHERE PARTNUMBER =

           :PARTNUMBER ;



   ******  ALLBASE/SQL warnings (DBWARN 10602)

   ******  in SQL statement ending in line 133

   ***     User SomeUser@SomeAcct does not have SELECT authority on PURCHDB.PARTS.

   (DBERR 2301)



     1 Sections stored in DBEnvironment.



    0 ERRORS   1 WARNINGS

   END OF PREPROCESSING



   /


Feedback to webmaster