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

Using the Preprocessor UDC's

» 

Technical documentation

Complete book in PDF
» Feedback

 » Table of Contents

 » Index

Two UDC's for invoking the COBOL preprocessor are provided with ALLBASE/SQL in the HPSQLUDC.PUB.SYS file:

  • PCOB, illustrated in Figure 2-12, invokes the preprocessor in full preprocessing mode. You specify the source file name, a DBEnvironment name, and a name for SQLMSG (if you do not want preprocessor messages to go to $STDLIST).

         :PCOB SourceFileName,DBEnvironment
    

    The PCOB UDC uses the following preprocessor INFO string parameters:

    • ModuleName is the name of the source file.

    • OwnerName is the log-on User@Account.

    • PRESERVE and DROP are in effect.

  • PPCOB, illustrated in Figure 2-13, invokes the preprocessor in full preprocessing mode, then invokes the COBOL compiler if preprocessing is successful and the linker if compilation is successful.

To use this UDC, you specify the source file name, a DBEnvironment name, and an executable file name. You can specify a name for SQLMSG if you do not want preprocessor messages to go to $STDLIST:



   :PPCO SourceFileName,DBEnvironment,ExecutableFileName

This UDC uses the following preprocessor INFO string parameters:

  • ModuleName is the source file name.

  • OwnerName is the log-on User@Account.

  • PRESERVE and DROP are in effect.

If you make your own version of the UDC's, do not modify the record attributes for any of the preprocessor output files. Only modify the file limit (disc=FileLimit) if required.

NOTE: Because the UDC's purge the preprocessor message file, if messages are sent to $STDLIST an error message appears when you use the UDC's, but preprocessing continues.

Figure 2-12 UDC for Preprocessing SQLIN

PCOB srcfile,dbefile,msgfile=$stdlist

continue

setvar _savefence hpmsgfence

setvar hpmsgfence 2

continue

purge !msgfile

purge sqlout

purge sqlmod

purge sqlvar

purge sqlconst

setvar hpmsgfence _savefence

deletevar _savefence

file sqlin  = !srcfile

file sqlmsg = !msgfile; rec=-80,16,f,ascii

file sqlout;   disc=10000,32;  rec=-80,16,f,ascii

file sqlmod;   disc=1023,10,1; rec=250,,f,binary

file sqlvar;   disc=2048,32;   rec=-80,16,f,ascii

file sqlconst; disc=2048,32;   rec=-80,16,f,ascii

continue

run psqlcob.pub.sys;info="!dbefile (drop)"

reset sqlin

reset sqlmsg

reset sqlout

reset sqlmod

reset sqlvar

reset sqlconst

Figure 2-13 UDC for Preprocessing, Compiling, and Preparing SQLIN

   G>

   PPCOB srcfile,dbefile,pgmfile,msgfile=$stdlist

   continue

   setvar _savefence hpmsgfence

   setvar hpmsgfence 2

   continue

   purge !msgfile

   purge sqlout

   purge sqlmod

   purge sqlvar

   purge sqlconst

   setvar hpmsgfence _savefence

   deletevar _savefence

   file sqlin  = !srcfile

   file sqlmsg = !msgfile; rec=-80,16,f,ascii

   file sqlout;   disc=10000,32;  rec=-80,16,f,ascii

   file sqlmod;   disc=1023,10,1; rec=250,,f,binary

   file sqlvar;   disc=2048,32;   rec=-80,16,f,ascii

   file sqlconst; disc=2048,32;   rec=-80,16,f,ascii

   continue

   run psqlcob.pub.sys;info="!dbefile (drop)"

   if jcw <= warn then

     continue

     cob85xlk sqlout,!pgmfile,$null

   endif

   reset sqlin

   reset sqlmsg

   reset sqlout

   reset sqlmod

   reset sqlvar

   reset sqlconst

The example in Figure 2-14 illustrates the use of PPCOB on an SQLIN that could be successfully preprocessed, but failed to compile because a COBOL error exists in the file. In addition to generating an error message for the COBOL error, the COBOL compiler generates several warning messages. The warning messages are normal and will not cause runtime problems; they are due to the way the COBOL preprocessor declares some of the variables in SQLVAR.

Figure 2-14 Sample UDC Invocation



   :PPCOB COBEX2,PARTSDBE,COBEX2P



                                           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.



    SQLIN                = COBEX2.SOMEGRP.SOMEACCT

    DBEnvironment        = partsdbe





    Module Name          = COBEX2

   1 Sections stored in DBEnvironment.



    0 ERRORS     0 WARNINGS

   END OF PREPROCESSING.



   END OF PROGRAM



   PAGE 0001   COBOL II/XL HP31500A.03.00 [85] Copyright Hewlett-Pa... 1987

   LINE #  SEQ # COL ERROR SEV            TEXT

   -------------------------------------------------------------------------

   00048          08  051   W  REDEFINING ITEM SQLREC1 IS SMALLER THAN 

                               REDEFINED ITEM.

   00053          08  051   W  REDEFINING ITEM SQLREC2 IS SMALLER THAN 

                               REDEFINED ITEM.

   00055          08  051   W  REDEFINING ITEM SQLREC3 IS SMALLER THAN 

                               REDFINED ITEM.



   0 ERROR(s), 0 QUESTIONABLE, 3 WARNING(s)

                

       DATA AREA IS      580 BYTES.

       CPU TIME = 0.00:02.  WALL TIME = 0:00:08.



   END OF PROGRAM

   END OF COMPILE

   HP Link Editor/XL (HP30315A.04.04) Copyright Hewlett-Packard Co 1986



   LinkEd> link ;to=cobex2p



   END OF LINK


The line number referenced in the compiler output messages is the COBOL statement number in the compiler output listing. Because PPCOB sends the compiler output listing to $null, you must reinvoke the compiler, sending the compiler listing to an output file, to identify the line in error:



   :BUILD COBLIST;DISC=10000,32;REC=-80,16,F,ASCII

   :COB85XL SQLOUT,$OLDPASS,COBLIST

The COBOL syntax error flagged in the example in Figure 2-14 appears as follows in COBLIST:



   00261             DISPAY "SELECT PartNumber, PartName and SalesPrice".

If you use TDP's COBOL mode to create SQLIN, the actual line number containing any COBOL error in SQLOUT appears in the SEQ column of the COBOL compiler message. Therefore you can use this approach to eliminate recompiling in order to identify the location of COBOL errors. In this case, the error is at line 15.7 in SQLOUT.

   LINE    SEQ   COL ERROR SEV             TEXT

   -------------------------------------------------------------------

   .

   .

   .

   00261  015700  19  410   S  SYNTAX ERROR.  FOUND: SELECT PartNumber,

                               PartName and SalesPrice; EXPECTING ONE OF

                               THE FOLLOWING: . SECTION

   .

   .

   .
Feedback to webmaster