 |
» |
|
|
|
The COBOL preprocessor can be invoked to either Only check the syntax of embedded SQL commands. 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 command to only check the syntax of
the SQL commands embedded in a file equated to the source file. Syntax psqlcbl -s [ -i SourceFileName -p ModifiedSourceFileName ] |...| - -s
indicates that the preprocessor should only check SQL syntax. - -i SourceFileName
identifies the source file. If not specified, the Pascal
preprocessor assumes the source file is named sqlin.
- -p ModifiedSourceFile
identifies the modified source code file. If not specified, the
Pascal preprocessor assigns the name SourceFileName.
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 the
modified source code does not contain any preprocessor-generated
calls to ALLBASE/SQL external procedures.
The copy and installable module files are created, but incomplete.
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.
$ psqlcbl -s -i mysource
MON, MAY 21, 1990, 12:48 PM
HP36217-02A.E1.00 COBOL Preprocessor/9000 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
$ more sqlmsg
MON, MAY 21, 1990, 12:48 PM
HP36217-02A.E1.00 COBOL Preprocessor/9000 ALLBASE/SQL
(C)COPYRIGHT HEWLETT-PACKARD CO. 1982,1983,1984,1985,1986,1987,1988,
1989,1990,1991. ALL RIGHTS RESERVED.
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 135
*** Syntax error. (DBERR 1001)
Syntax checked.
1 ERRORS 0 WARNINGS
END OF PREPROCESSING.
The line 135 referenced in sqlmsg is the line in
the source file where the erroneous SQL command ends.
|
Full Preprocessing Mode |  |
You use the following command to both check SQL syntax and
create output files that can be processed by the COBOL compiler.
The preprocessor also stores a module in the DBEnvironment named
and creates a file containing an installable version of the
module. Syntax psqlcbl DBEnvironmentName [ -i SourceFileName -p ModifiedSourceFileName -o OwnerName -m ModuleName -d [-r] ] |...| - DBEnvironmentName
identifies the DBEnvironment in which a module is to be stored.
- -i SourceFileName
identifies the name of the input file containing the source code
to be preprocessed.
- -p ModifiedSourceFile Name
identifies the name of the modified source code file. If a name
is not specified, the preprocessor generated code is written to
a file with the same name as SourceFileName but with the
file extension .cbl.
- -o OwnerName
associates the stored module with a user's userid, a
ClassName, or a GroupName. You can specify an owner
name for the module if you have DBA authority in the
DBEnvironment where the module is to be stored. You can also
specify a group as owner if you are a member of the group. If
not specified, the owner name is your userid. Any object names
in the SourceFileName not qualified with an owner name are
qualified with this -m OwnerName.
- -m ModuleName
assigns a name to the stored module. Module names must follow
the rules governing ALLBASE/SQL basic names as described in the
.
If a module name is not specified with the -p option, the preprocessor uses
the ModifiedSourceFileName as the module name.
If a module name is not specified without the -p option, the preprocessor uses
the SourceFileName as the module name.
- -d
deletes any module currently stored in the DBEnvironment by the
ModuleName and OwnerName specified in the command
string. If not specified, any module having these names is not
dropped, and existing RUN authorities for that module are
preserved
- -r
is specified when the program being preprocessed already has a
stored module and you want to revoke existing RUN authorities
for that module.
When the program being preprocessed already has a stored module,
be sure to use the -d option, or else an error will result.
Also, be sure that no one is currently executing the module when
you invoke the preprocessor. To avoid conflicts, do your
preprocessing in single-user mode, during off hours.
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 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 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.
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.
$ psqlcbl ../sampledb/PartsDBE -o Karen -m KarenPgm -i prog1.sql -d -r
MON, MAY 21, 1990, 12:48 PM
HP36217-02A.E1.00 COBOL Preprocessor/9000 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
$ more sqlmsg
MON, MAY 21, 1990, 12:48 PM
HP36217-02A.E1.00 COBOL Preprocessor/9000 ALLBASE/SQL
(C)COPYRIGHT HEWLETT-PACKARD CO. 1982,1983,1984,1985,1986,1987,1988,
1989,1990,1991. ALL RIGHTS RESERVED.
DBEnvironment = ../sampledb/PartsDBE
Module Name = COBEX2
****** SELECT PARNUMBER, PARTNAME, SALESPRICE INTO :PARTNUMBER, :PARTNAME,
:SALESPRICE FROM PURCHDB.PARTS WHERE PARTNUMBER =
:PARTNUMBER ;
****** ALLBASE/SQL warnings (DBWARN 10602)
****** User Karen does not have Select authority on PURCHDB.PARTS
(DBERR 2301)
1 Sections stored in DBEnvironment.
1 Sections stored in DBEnvironment.
0 ERRORS 1 WARNINGS
END OF PREPROCESSING
|
|