/ $Header: precomp/doc/procob2/readme.doc /main/18 2008/12/16 11:45:40 ardesai Exp $
/
/ Copyright (c) 1992, 1996, 1997, 1998, 1999, 2001, 2002, 2003 by Oracle Corporation

 
README FILE FOR PRODUCT Pro*COBOL 11.2.0.0.0 - PRODUCTION
=========================================================
 
   This file contains important information regarding Pro*COBOL Version 11.2.0.0.0,
   which is the precompiler release corresponding to the 11.2.0.0.0 Oracle database.
   These notes are divided into five sections:
 
   * Section 1 describes compatibility and migration issues that 
     exist in Pro*COBOL 11.2.0.0.0 to Pro*COBOL 2.0.2 with respect 
     to previous versions of Pro*COBOL.

   * Section 2 briefly describes the new features introduced in 
     Pro*COBOL.  
 
   * Section 3 lists known restrictions introduced by the new features in 
     Pro*COBOL 8.1.3 and Pro*COBOL 2.0.2.  

   * Section 4 lists known bugs in Pro*COBOL 10.1.0.2.0.

   * Section 5 lists the bugs fixed since Pro*COBOL Release 2.0.2.
     Please note that bugs fixed in Pro*COBOL 8.0.3 through 9.2.0 are
     also fixed in Pro*COBOL 10.1.0.0.

   * Section 6 provides important documentation updates which are not yet
     included in the Pro*COBOL Precompiler Programmer's Guide.


SECTION 1:  COMPATIBILITY & MIGRATION
=====================================

Error Reporting on COBOL Declarations
-------------------------------------
Beginning with Pro*COBOL 8.1.6, use of extended or erroneous code 
in COBOL declarations will not be flagged as syntax errors unless the
COBOL variable corresponding that declaration is used as a host variable, 
i.e. errors will be suppressed at the declaration level, but flagged 
if used as host variables.

Support for Nested programs and Generation of the GLOBAL clause
---------------------------------------------------------------
Beginning with Pro*COBOL 2.0.2, nested programs were supported.  This 
new functionality required the generation of the GLOBAL clauses for the 
sqllib variables and the error reporting structures.  Certain compilers 
do not support nested programs and in turn do not understand the GLOBAL 
clause.  To avoid generating the GLOBAL clause, a new option called 
NESTED is provided in Pro*COBOL 8.1.5.  NESTED=TRUE/FALSE defaults to 
TRUE and can be used in configuration files, or on the command line, but 
not inline (i.e. EXEC ORACLE statements).

Migration to V8OCI
------------------
Beginning with release 8.1.3, sqllib uses V8OCI to communicate with the
database.  This change gives rise to the following compatibility issues:  

1. To improve performance when executing embedded PL/SQL, all host variables
   must be initialized prior to executing the PL/SQL block.  This is true
   regardless of the underlying mode (IN, IN/OUT, OUT) of the variable
   from the PL/SQL perspective.

2. ROWID's
   A describe (EXEC SQL DESCRIBE SELECT LIST . . .) for a ROWID column
   now returns type SQLT_RDD instead of SQLT_RID.

   In general, programmers should use Universal Rowids (type OCIRowid *) 
   in all new development.  This will enable the underlying table to be
   migrated from a heap table to an index organized table with no change
   to application code.

3. When a null is fetched and an indicator variable is present, the
   contents of the corresponding host variable is untouched.  You
   must check the value of the indicator variable to determine the
   NULL/NOT NULL status.

4. When a null is selected or fetched into a host variable with no
   corresponding indicator variable, the query processing does not 
   stop.  Subsequent rows are still retrieved into the users host 
   variables and the rows processed count reflects the total number
   of rows selected/fetched.  The rows processed count (SQLERRD(3))
   cannot be used to determine which row contains a NULL value.

Desupport Notification for V6 Compatibility behavior
----------------------------------------------------
With Oracle7, Oracle offered a Version 6 [V6] Compatibility flag, dbms=v6,
that allowed application developers developing Oracle7 applications to 
emulate Oracle6 behavior. With the release of Oracle8.0.3, users are 
cautioned that the Version 6 compatibility flag is being desupported 
effective immediately in all of the Oracle8 products including PL/SQL8, 
all the Oracle Precompilers, the Oracle8 Oracle Call Interface, SQL*Module, 
and SQL*PLUS. The desupport of the V6 compatibility flag is consistent with 
Oracle's policy of supporting backwards compatibility and behavior from one 
version release upgrade to another i.e. from Oracle6 to Oracle7 but not for 
more than one version release upgrade.

Specifically, the V6 Compatibility flag emulated the following aspects of 
Oracle6 behavior with Oracle7:

o String literals are fixed length in Oracle7 but are treated as variable 
  length with the V6 flag
o PL/SQL Local char variables are fixed length in Oracle7 but are treated as 
  variable length with the V6 flag 
o Return value of SQL Functions (e.g. USER) are fixed length characters in 
  Oracle7 but are treated as variable length characters with the V6 flag
o Select/Fetch of a NULL with no indicator raises an ORA-1405 error with 
  Oracle7 but returns no error with the V6 flag
o SQL group function is called at FETCH time with Oracle7 but is called query 
  execution time with the V6 flag
o Describe of a fixed length string returns Type=96 with Oracle7 but returns 
  Type=1 with the V6 flag

All of these behaviors are being desupported with the desupport of the V6 
Compatibility Flag with Oracle8.

Declare Section is Optional
---------------------------
With Pro*COBOL versions prior to version 2.0.2, the user was required
to put all host variable declarations within the Declare Section, which 
begins with the statement EXEC SQL BEGIN DECLARE SECTION END-EXEC and
ends with the statement EXEC SQL END DECLARE SECTION END-EXEC.  Starting
with Pro*COBOL version 2.0.2, the Declare Section requirement has been 
removed.  For backward compatibility, Pro*COBOL provides a precompiler
option DECLARE_SECTION = YES | NO, where NO is the default.  The option
can be specified on the command line or in a configuration file.  When 
DECLARE_SECTION=YES, only variables declared inside the Declare Section
are allowed as host variables.  Please note that regardless of use
of the Declare Section, all declarations are parsed.

New default external datatype for PIC X variables
-------------------------------------------------
With Pro*COBOL versions prior to version 2.0.2, the user's PIC X host
variables were mapped to Oracle external datatype VARCHAR2 by default.  
With the release of Oracle8.0.2, Pro*COBOL 2.0.2,  users are cautioned 
that PIC X host variables will now be mapped to the Oracle external datatype 
CHARF by default.  The new default datatype for PIC X variables affects
the scenario involving varchar2 columns on input.  Any trailing blanks which 
had formerly been trimmed will be preserved.  The PICX option is provided for 
backward compatibility.  The following table demonstrates the behavior given 
the PICX option values and the database column type:
                           
       |--------------|-----------------------------------------|
       |  column      |                 PICX value              |
       |  type        |         varchar2        charf           |
       |              |--------------------|--------------------|  
       |  varchar2    |   trailing blanks  | trailing blanks    |
       |              |   will be stripped | will be preserved. |
       |              |   on input         |                    |
       |--------------|--------------------|--------------------|
       |  char        |   strings will be  | strings will be    |
       |              |   blank-padded to  | blank-padded to    |
       |              |   width of column  | width of column    |
       |              |   on input         | on input           |
       |--------------|-----------------------------------------|

The new default affects the case where the user has stored a value with 
trailing blanks into a column and then using a PIC X bind variable
initialized with the same value and trailing blanks, selects the value
using the variable in the where clause.  If picx=varchar2, there would be 
no match due to the fact that the blanks where stripped before the
comparison.  Here's the example (ENAME column is VARCHAR2(10)):
           ...
                01  EMPNAME           PIC  X(5).
                01  EMPNAME1          PIC  X(5).
           ...
           MOVE "FOO  " TO EMPNAME
           MOVE "barba" TO EMPNAME1
           ...
           EXEC SQL INSERT INTO EMP (EMPNO, ENAME)
                    VALUES(1234, 'FOO  ') END-EXEC.
           ...
           EXEC SQL SELECT ENAME
                    INTO :EMPNAME1
                    FROM EMP
                    WHERE ENAME = :EMPNAME END-EXEC.
           ...

The new default also affects the case like that presented in sample9
where the user declares a table of PIC X variables and uses it in a call to
a PL/SQL stored procedure where the PIC X variable gets mapped to an
indexed table of varchar2.  Due to the PICX default change, precompiling
sample9.pco without picx=varchar2 now generates the error:

PCB-S-00576, PLS-418: array bind type must match PL/SQL table row type

Thus users are now required to precompile sample9 with picx=varchar2.

Extended format of the VARCHAR group item
-----------------------------------------
An extended format of the VARCHAR group item will be recognized as
implicit varchars when option VARCHAR=YES is specified by the user.

Interaction of options UNSAFE_NULL and DBMS
-------------------------------------------
The interaction of option UNSAFE_NULL and option DBMS will change due to 
a new general rule about the interaction of options that control several
functions at once (macro options) and those that control just one 
function (micro options).  When setting a macro and a micro option, the
user must remember that macro options have precedence over micro options, 
if and only if, the macro option is at a higher level of precedence than
the micro option.  For more information, please refer to the 
"Programmer's Guide to the Pro*COBOL precompiler" version 2.0 Chapter 7.


SECTION 2:  NEW FUNCTIONALITY
=============================

Introduced in Pro*COBOL 11.1.0.0.0
----------------------------------
1. SQL99 syntax support: With this enhancement, the SQL99 syntax for SELECT, INSERT, DELETE, and UPDATE statements and the body of the cursor in a DECLARE CURSOR statement will be supported.

2. Additional "array insert" and "array select" syntax support: The array INSERT and array SELECT syntax of the DB2 precompiler is now supported by Pro*Cobol.

3. Fix execution plan: To ensure better performance of the Pro*Cobol application during deployment, the 'outline' feature of the database is used to fix the execution plan.

4. Implicit buffered insert: Pro*Cobol supports the implicit buffering of a single INSERT statement executed in a loop.

5. Dynamic SQL statement cache: Statement caching can be used to improve the performance of dynamic SQL statements.

6. Scrollable cursor support: Pro*Cobol now supports a scrollable cursor in the Pro*Cobol application to fetch data in a non sequential manner.

7. Platform endian support: Retrieving unicode data in OS endian in the PIC N host variable is now supported for the Pro*Cobol application.

8. Flexible B Area length for Pro*Cobol application: The length of B Area for the Pro*Cobol application can now be from 8 to 253 columns.

Introduced in Pro*COBOL 9.2.0
-----------------------------
1.  New makefiles to build Pro*COBOL demos

    Along with demo_procob.mk and demo_procob18.mk makefiles you will 
    find four more makefiles, viz., demo_procob_32.mk, demo_procob_64.mk,
    demo_procob18_32.mk, demo_procob18_64.mk, when you install 9.2.0
    Pro*COBOL. The new makefiles are to be used if additional 32/64-bit 
    support is required.
     
    For example, if platform x is 64-bit by default, but 32-bit linking 
    also supported, then demo_procob.mk would create 64-bit executables and
    demo_procob_32.mk should be used to create 32-bit executables. 
    demo_procob_64.mk, in this example, would do the same thing as that of
    demo_procob.mk.

Introduced in Pro*COBOL 8.1.6
-----------------------------
1.  Support for Pro*COBOL Multithreading application
    Pro*COBOL 8.1.6 now supports multithreading applications. A context
    variable can now be declared using the SQL-CONTEXT pseudo-type.  Also,
    declarations for host variables are now allowed in the LOCAL-STORAGE 
    and THREAD-LOCAL-STORAGE sections.  There are new embedded sql
    statements to be used for enabling threads, allocating and freeing
    a sql context, and specifying which context to use.  The new sql
    statements and directives are:
      EXEC SQL ENABLE THREADS END-EXEC.
      EXEC SQL CONTEXT ALLOCATE :hv END-EXEC.
      EXEC SQL CONTEXT FREE :hv END-EXEC.
      EXEC SQL CONTEXT USE :hv END-EXEC.
    A new command-line option THREADS=YES/NO (default NO) is provided
    to specify that the application is multithreaded.

Introduced in Pro*COBOL 8.1.5
-----------------------------
1.  Enhancement to WHENEVER statement.
    Pro*COBOL 8.1.5 now allows the call of a subroutine as the action
    in the WHENEVER statement.  The new syntax is:
      EXEC SQL WHENEVER <condition> DO CALL <subprogram> 
                                            [USING id1 id2 ... idn] END-EXEC.
    This new functionality is very useful when writing nested programs.

2.  Support for COBOL in-line comments.
    Pro*COBOL 8.1.5 supports COBOL in-line comments that begin with
    two contiguous charaters "*>" preceded by a separator space, and
    ends with the last character position of the line.  An in-line comment
    cannot be continued and can only be used in COBOL code.
    
3.  Support for DECIMAL-POINT IS COMMA.
    Pro*COBOL 8.1.5 has been enhanced to support the DECIMAL-POINT IS COMMA
    clause in the ENVIRONMENT DIVISION.  If the clause appears in the source
    file, then the comma will be allowed as a period is in any numeric
    literal in the VALUE clause.

4.  Support for Optional Division Headers.
    Previously, IDENTIFICATION, ENVIRONMENT, and DATA DIVISION headers 
    were required to preceed their respective division contents.  As of
    Pro*COBOL 8.1.5, these headers are optional.  Please note that the
    entire divisions were already optional, this enhancement addresses
    only the division "headers".

Introduced in Pro*COBOL 8.1.3
-----------------------------
1.  Large Object (LOB) support.
    Pro*COBOL 8.1.3 supports a way to declare LOB locators for all LOB
    types (BLOB, CLOB, NCLOB, and BFILE), provides the ability to allocate
    and free the LOB locators, and also provides a full set of embedded
    SQL statements for direct manipulation of LOB locators and their values.
    The values of certain attributes of LOBS are available through a new
    LOB DESCRIBE embedded SQL statement.

2.  ANSI Dynamic SQL support.
    Pro*COBOL 8.1.3 provides support for ANSI Dynamic SQL (also known as
    the SQL92 dynamic SQL) which should be used for new Method 4 
    applications.  In ANSI dynamic SQL, descriptors are internally
    maintained by Oracle, while in the older Oracle dynamic SQL, the 
    descriptors are defined in the user's program.  Four new statements
    have been added to ALLOCATE, DEALLOCATE, SET, and GET descriptor 
    information and values.  Also several existing embedded SQL statements
    used for Dynamic SQL have been modified to handle the ANSI Dynamic
    SQL syntax and the new form of descriptors (DESCRIBE, EXECUTE, OPEN,
    and FETCH).  Two new precompilers options were added to support
    ANSI Dynamic SQL: DYNAMIC = ANSI | ORACLE and TYPE_CODE = ANSI | ORACLE.

3.  Support for universal rowid.
    Pro*COBOL 8.1.3 provides a mechanism to ALLOCATE and FREE rowid 
    descriptors that are compatible with both physical rowids (associated 
    with heap tables) and logical rowids (associated with index organized 
    tables)  Users declare rowid descriptors using a new Pro*COBOL pseudotype
    SQL-ROWID.  These descriptors may then be used as host variables in 
    embedded SQL statements.  Oracle recommends use of rowid descriptors in 
    all new development. 

4.  Support for DML returning.
    Pro*COBOL 8.1.3 supports an optional RETURNING clause in the
    VALUES clause of an INSERT statement, and after the optional WHERE 
    clause of a DELETE and UPDATE statement.  

5.  Support for Tables of Group Items as host variables.  
    Pro*COBOL 8.1.3 supports tables of group items with elementary 
    subordinate items as host variables in embedded SQL statements.
    The host tables of group items can be referenced in the INTO clause 
    of a SELECT or a FETCH statement, and in the VALUES list of an 
    INSERT statement. 

6.  Support for SYSDBA and SYSOPER modes in the CONNECT statement.
    In previous versions of Oracle, the user could connect with sysdba 
    privileges by specifying:
        EXEC SQL CONNECT :<uid> IDENTIFIED BY :<pwd> END-EXEC.
    where <uid>  is a host variable containing "SYS" and <pwd> is a host 
    variable containing "CHANGE_ON_INSTALL".  The SYSDBA privileges are 
    no longer available by default by using the above, thus Pro*COBOL 8.1.3
    supports an optional IN MODE clause in the embedded CONNECT statement 
    for the user to specify the SYSDBA or SYSOPER mode.  

7.  Support for user specification of runtime context.
    Pro*COBOL 8.1.3 provides a way to declare a handle to a runtime context
    and use that handle with some new CONTEXT embedded SQL statements and 
    directives (CONTEXT ALLOCATE, CONTEXT FREE, and CONTEXT USE).
    NOTE: Pro*COBOL 8.1.3 does not support multi-threaded applications.

8.  Support for pre-fetching.
    Oracle supports the notion of pre-fetching a number of rows when a 
    query is executed.  This increases performance by eliminating the 
    need for a server roundtrip when the rows are subsequently fetched.  
    Pre-fetching may be enabled in Pro*COBOL 8.1.3 by using the new 
    command-line option, PREFETCH = 0 .. 9999.  The PREFETCH option value
    indicates the number of rows that are pre-fetched when the query is 
    executed (0 means prefetching is disabled).  The option may be used 
    in a configuration file, on the command line or in-line. 

Introduced in Pro*COBOL 2.0.2
-----------------------------
1.  Support for Migration of DB/2 Applications.

    A significant number of the features of Pro*COBOL 2.0.2 are focused around
    providing greater compatibility with DB/2, thereby allowing COBOL 
    applications developed to work with DB/2 databases to be migrated easily 
    to work with Oracle. The DB/2 compatibility features include:

    a.  Optional Declare Section
        Pro*COBOL 2.0.2 supports the ability for the user to declare 
        host variables of "acceptable type" outside a Declare Section.

    b.  Support of additional datatypes
        Three additional computational datatypes are supported - COMP-4,
        PACKED-DECIMAL, and unsigned comp. COMP-4 will be treated 
        as a binary datatype, PACKED-DECIMAL will be treated as a COMP-3 
        datatype, and unsigned comp will be treated as a 2 or 4
        byte unsigned integer.  Three additional display datatypes are 
        supported - scaled display trailing, unsigned display, and 
        overpunch.  Also PIC G will be allowed as the multibyte type PIC N.

    c.  Support of group items as host variables
        Pro*COBOL 2.0.2 supports group items with elementary subordinate items
        as host variables in embedded SQL statements.  The host group items 
        can be referenced in the INTO clause of a SELECT/FETCH statement,
        and in the VALUES list of an INSERT statement.

    d.  Extended form of VARCHAR group items
        An extended and more flexible format for a COBOL group item to be
        recognized as a Variable Length Character Variable (VARCHAR) is 
        supported.

    e.  Explicit control over the end-of-fetch SQLCODE value
        A command line option is provided for explicit control over the value
        returned when the end-of-fetch condition occurs.
 
    f.  Support of the WITH HOLD clause in the DECLARE CURSOR statement
        DB/2's default behavior is to close all cursors on commit.  This can 
        be overridden on a cursor by using the WITH HOLD clause in the 
        declaration of the cursor.  Pro*COBOL 2.0.2 supports the WITH HOLD
        clause in the DECLARE CURSOR statement and also provides
        a command line option to allow the user to specify whether cursor
        variables without the WITH HOLD clause should remain open or be closed
        on commit.

    g.  Provide DSNTIAR
        DB/2 provides an assembler routine called DSNTIAR to obtain a 
        displayable form of the SQLCA.  Pro*COBOL 2.0.2 provides DSNTIAR.
  
    h.  Explicit control over DATE string format
        A command line option is provided for the user to specify the date 
        string format.

2.  Other general improvements
    
    a.  Support for Nested Programs
        Pro*COBOL 2.0.2 allows nested programs with embedded SQL 
        within a single source file.

    b.  Improved error reporting
        Errors will be associated with the proper line in any list file 
        produced or in any terminal output. "Invalid host variable" errors
        will clearly state why the given COBOL variable is invalid for use 
        in embedded SQL.

    c.  Support for using REDEFINES clause with group items
        The REDEFINES clause is allowed to redefine group items and be used 
        in host variable declarations. 

    d.  Support for FILLER
        The word FILLER is allowed to be used in host variable declarations.

    e.   New default datatype for PIC X
         The default datatype for PIC X variables has changed from 
         VARCHAR2 (1) to CHARF (96).  A new precompiler option is provided
         for backward compatibility.

    f.   Support for NCHAR data
         NCHAR data is now fully supported by the kernel.  Previous 
         releases of the precompiler supported this datatype with the 
         NLS_LOCAL option.  For new applications, users are strongly 
         encouraged to rely on the database support and accordingly 
         set NLS_LOCAL=NO during precompilation.


SECTION 3: KNOWN RESTRICTIONS IN PRO*COBOL 8.1.3 and PRO*COBOL 2.0.2
====================================================================
 
Below is a list of the known restrictions imposed by the new features
in Pro*COBOL 8.1.3 in Pro*COBOL 8.1.3:

Restrictions:

 - On the support for DML Returning:
   The RETURNING clause is not allowed on a positioned DELETE or UPDATE
   statement (i.e. DELETE or UPDATE with WHERE CURRENT OF clause), nor 
   on an INSERT statement with a subquery.

 - On the support of tables of group items as host variables:
   Host tables of group items cannot have group items that are tables or 
   group items themselves.    Tables of group items are not allowed in 
   either Oracle dynamic SQL method 4 or ANSI dynamic SQL.

 - On the support for SYSDBA|SYSOPER modes in the CONNECT statement:
   The IN SYSDBA| SYSOPER MODE clause is not permitted with the ALTER 
   AUTHORIZATION clause and it is not supppoted with auto_connect.

Below is a list of the known restrictions imposed by the new features
in Pro*COBOL 2.0.2:

 - Restriction on the use of the DATE_FORMAT option:
   All compilation units to be linked together must use the same DATE_FORMAT
   value.

 - Restriction on the support of nested programs:
   Recursion with nested programs in not supported.

 - Support of the REDEFINES clause:
   A single INTO clause which uses items from both a group item host variable 
   and from its redefinement should be avoided.


SECTION 4: KNOWN BUGS IN PRO*COBOL 10.1.0.2.0
=============================================

1897639  Referring to an implicit VARCHAR within a group item gives PCB-208.

1656765  Using the INCLUDE statement to copy files, which contains
         IDENTIFICATION, ENVIRONMENT, DATA and PROCEDURE DIVISION, into
         a host program as sub programs, procob causes PCB-S-00400 error.
         Workarounds: Here are the suggested workarounds
                      1. Put two files into one include file
                      2. Use EXEC SQL INCLUDE like as follows.
                          GETDATA2.pco doesn't includes IDENTIFICATION DIVISION. etc.
                          IDENTIFICATION DIVISION.
                          PROGRAM-ID. GET-DATA.
                          DATA DIVISION.
                          WORKING-STORAGE SECTION.
                            EXEC SQL INCLUDE GETDATA2.pco END-EXEC.

1620777  If a host variable is defined by adding the keyword VARYING, and
         then the string is overriden by using datatype equivalencing, the
         length value of expanded string field is increased by 2.

953338   When a Pro*COBOL program is precompiled with embedded PL/SQL using
         select /*+ index hint */ statement, PCB-S-00576, PLS-103 error are
         returned.


SECTION 5: BUGS FIXED SINCE RELEASE 2.0.2
=========================================

Bugs fixed in 11.2.0.0.0
------------------------

7029239  Pro*Cobol returns only single row when DML RETURNING clause is used.

         When DML statements were issued with RETURNING clause in a procob application,
         the application was getting only one row despite many rows being affected by the
         DML statement

7288085  Pro*Cobol was crashing when REPLACE statements with longer pseudo-texts was used.

         REPLACE statements with longer pseudo-texts cause procob precompilation
         to crash on certain platforms

7306555  When setting PICN_ENDIAN=OS, a bind variable was loosing its length


Bugs fixed in 10.1.0.2.0
------------------------

2810557  Use of nls_local=yes option, showed the memory leak during execution.

         When PROCOB application was precompiled with nls_local=yes option,
         it showed memory leak. With the fix, memory leak has been eliminated.

2573812  With comp1=integer cursor varibles were not expanded properly

         When precompiler option comp1=integer was used to precompile
         a cobol file, cursor variables were expanded incorrectly.

2497144  Wrong code generated when array indicators were used.

         When array indciators are used at non 01 or 77 levels, wrong
         cobol code was genereated for CALL, Dynamic Method 2 statements.

2398218  EXEC SQL INCLUDE without a period, followed by EXEC SQL generated
         a precompiler error.

         PROCOB generated precompiler error, when EXEC SQL INCLUDE statement
         was followed by another EXEC SQL statement.
         e.g.
             EXEC SQL INCLUDE t2398218.dat END-EXEC
             EXEC SQL SELECT ............. END-EXEC.

2316666  Call to SQLRowidGet with user specified context core dumped.

         When using a user specificed runtime context in the call to
         SQLRowidGet, the cobol application failed with an core dump.
         After the fix, whenever a runtime context use is specified
         sqllib entry point is changed to sqlbxt from sqlbex.
         The call to SQLRowidGet with a valid context does not core
         dump.

2255182  PROCOB generated bad code, for EXEC SQL INCLUDE followed by ELSE.

         When EXEC SQL INCLUDE was used inside an IF statement in certain
         way, it generated bad code. e.g. Following code generated bad code:
               IF <condition>
                   EXEC SQL INCLUDE INCLFILE.COB END-EXEC
               ELSE
                   DISPLAY "HELLO WORLD".
         With the fix, correct code is being generated.

1810960  Precompilation failed when pl/sql block had goto label

         Precompilation failed when pl/sql block had goto label

1326752  PROCOB generated error for PROCEDURE DIVISION USING COPY XYZ.

         PROCOB generated precompiler error when PROCEDURE DIVISION statement
         is used with USING COPY XYZ statement.
         e.g. Following syntax generated precompiler error:
                 PROCEDURE DIVISION USING COPY XYZ.COB.
         With the fix, PROCOB generates clean precompiled COB file.


Bugs fixed in 9.2.0
-------------------

2067469  SQLSTATE didnot get correct status info of 01004.

         SQLSTATE didnot get correct status info of 01004 when not used with
         SQLCODE.

2021052 Procobol Dynamic Method 4 application hang or core dump at runtime 

        Dynamic Method 4 application with DESCRIBE BIND VARIABLES statement 
        and would get core dump, or hang or get ora-2111 at runtime.

1949580  Missing period at the end of EXEC CICS or EXEC DCSQL statements
         generated precompiler error or bad code.

         Missing period at the end of EXEC CICS or EXEC DCSQL statements
         generated precompiler error or bad code.  With the fix correct
         code is being generated.

1985041 Procobol generated files after 09/SEP/2001 had compilation problems

        After time() returned a billion at Sun Sep 9 01:46:40 2001 UTC, 
        procobol generated files have compilation problems on windows 
        platform due to a large value in variable sqlcxt. 

1954202 With option fips=yes,procobol generated incorrect code for cursor open

        When a variable for which fips error would be flagged was used 
        in the fetch of a cursor, incorrect code was generated for opening,
        fetch of the cursor. 

1940784 ANSI DYNAMIC SQL along with NCHAR columns gave incorrect results 

        When using ANSI DYNAMIC SQL and NCHAR columns, the byte length 
        was calculated wrong and hence incorrect results were seen.

1885390 Procobol generated wrong length for sql for hankaku kana characters 

        When using Japanese hankaku kana characters in a sql statement 
        and the length of the sql is greater thah max literal, procobol 
        generated wrong length for the filler that holds the sql statement. 
 
1856125 Indicator variables at non 01, 77 level had wrong values 

        When indicator variables declared at a level other than 01 
        or 77 are used, the indicator had wrong values when used 
        with dynamic sql or call statment.

1716654 Incorrect code generated by procob for PIC X(..) host var.
 
        When declared a cursor at a named connection, and the host 
        variable for the at clause is declared as PIC X(..) varying, 
        procob generated wrong expansion of the host vraiable for the 
        fetch statment of the cursor on some platforms precompilation 
        seemed to hang.

954153 ASSUME_SQLCODE not working for SQLCODE outside DECLARE SECTION, and
       SQLSTATE inside DECLARE SECTION
             
        SQLCODE was not getting correct error number when SQLCODE was declared 
        outside declare section, even if the application was precompiled with 
        command line options "mode=ansi declare=yes assume_sqlcode=yes". 

753989 Use of EXEC SQL INCLUDE before WORKING-STORAGE SECTION generated 
       wrong code
       
        When EXEC SQL INCLUDE was used before WORKING-STORAGE SECTION, 
        PROCOB didnot comment out the statement, but it did generate 
        the contents of included file.  With uncommented generated 
        file, Cobol compiler generated an error.  With the fix, 
        EXEC SQL INCLUDE statement gets commented out correctly.

Bugs fixed in 9.0.1
-------------------

1576145 Performance degraded from 8.0 to 8.1 due to unnecessary defines.

	For the single FETCH statement in the loop, performance degraded 
	from 8.0 to 8.1.  This was due to unnecessary define calls for
	each host variable for every iterations.  With the fix, the same 
	FETCH statement after it gets parsed, and defined all its host 
	variables, will not call defines for any next iterations.

1508116 SQLMOV was always generated enclosed within QUOTEs.

	Some platforms use APOST(') to enclose the call to particular
	procedures.  But, SQLMOV was always ]> enclosed within QUOTEs ("),
	generating an error.  ]> With the fix, by default and when
	litdelim=quote, ]> SQLMOV will be enclosed within ("), whereas if ]>
	litdelim=apost, SQLMOV will be enclosed within (').

1410679 Performance degraded for array fetch when missing indicator variables.

	For the array fetch without indicator variable, the fetching was done
        with single row, making more roundtrips to server for data fetching in
        8i. 
	With the fix, the number of fetch calls is the same as in 8.0.6.

1175132 Unnecessary parsing for INSERT caused performance degradation.

	When INSERT statement caused an ORA-0001 error, it triggered 
	reparsing of INSERT statement everytime, causing performance
	degradation.  Reparsing was not done only for ORA-1403, ORA-1405 
	and ORA-1406.  With the fix, reparsing will never be done unless 
	parse errors occurs.

746347  Dynamic sql method-4 generated wrong sqlerrd[4] value. 

	Dynamic sql method-4 generated wrong sqlerrd[4] value 
	to point to erroneous column number.  With the fix, correct 
	value is getting assigned to sqlerrd[4]. 

Bugs fixed in 8.1.6
-------------------

583044  VARCHAR host variables in CALL statements were not properly expanded
        and were eliminated by the optimization process of the COBOL compiler.
        This resulted in incorrect execution of the SQL statement.

610765  Some COBOL compilers, including MF Cobol compiler, allow the use
        of a REDEFINES clause after the PICTURE or USAGE clause.  Pro*COBOL
        generated an error, but now allows this syntax.

612577  When a bind variable occured as both a select list and into
        list item when precompiled with SQLCHECK=full PL/SQL would
        complain about the mode of the bind variable. Example..
        
                   EXEC SQL SELECT :INVOICE-DATE INTO :INVOICE-DATE FROM DUAL
        ...........1
        PCB-S-00576, PLS-902: A READ-ONLY bind variable used in OUT or IN-OUT
        Partial solution was to precompile with SQLCHECK=SYNTAX unless
        there was embedded PL/SQL in which case, no workaround.

616243  Spurious errors were generated when a copy statement appeared in
        a data description.
        For example,  01 myvar COPY somefile.cpy.

682099  When MLSLABEL was used in an EXEC SQL VAR statement, e.g.
             EXEC SQL VAR SALARY IS MLSLABEL END-EXEC.
        an error was generated.

693939  Character, ANSI varying character and ANSI fix character types
        were not blank padded when used in ANSI dynamic programs.  They
        are now blank padded and the returned length field is undefined.

697236  Pro*COBOL generated bad code by failing to generate period in some
        cases.

706455  Pro*COBOL now accepts Fujitsu COBOL compiler @OPTION statements.

706465  Pro*COBOL now accepts code extending past column 72 and also
        will not blank pad to column 72 lines that are shorter than 72
        columns.  A new option, which is only available to ports that
        support a COBOL compiler that allows code past column 72,
        has been introduced.  EOL_PADDING is the new option that
        defaults to TRUE and can be set to FALSE to allow Pro*COBOL
        to accept code past column 72.  Please note that in addition
        to providing EOL_PADDING=FALSE, please ensure that IRECLEN is
        also set to a value greater than the length of the line that
        that contains the code that extends column 72.

715706  When named notation syntax ("=>") was used in an embeddded PL/SQL
        block to pass parameters to stored procedures, a precompiler syntax
        error was generated.  With the fix, "=>" is now valid for named
        parameter passing.

764952  Dml returning did not properly return an array of column values
        when an array of indicators was also requested.

770456  Pro*COBOL would sometimes go into an infinite loop after a syntax
        error was detected.

779589  Application generated core dump when precompiled with SQLCHECK=FULL
        and an NCHAR variable was used.

781519  COMP1 option originally when designed was done for NEC platform
        ONLY.  Since NEC compiler is supported on NT, and HPUX, this option
        has been activated on these platforms.  Default of COMP1 on NEC is
        integer, whereas on NT and HPUX the default is float.

786412  When EXEC SQL INCLUDE was the last line of the source file,
        bad code was generated.  It actually commented out the EXEC SQL
        INCLUDE without generating any code under it from the included file.
        With the fix, correct code is being generated, as long as the included
        file does not have any other incomplete EXEC SQL statements.

790792  Core dump occurred, if list file could not be opened.
        Appropriate condition is being checked to fix the problem.

790800  When the default config file (pcbcfg.cfg) does not exist or
        in the event that it could not be opened, procob generated
        a core dump.  The problem is now fixed by appropriate
        condition checks.

791384  Append of a lob to a null lob is an error. However, the error
        message returned by sqllib did not describe the situation.

801579  Default data type for PIC N/G were set to VARCHAR2 instead of CHARF.

804021  procob generated sql-runtime-vars at column 7 instead of column 0
        when the application was precompiled with format=terminal.

814970  A core dump occured on data description items with the RENAMES clause.

815649  A core dump occured when the input file did not exist.

821874  Whenever "AT" clause was used during CONNECT, sqlus.msb error
        handle was getting opened, which was not necessary.  With the
        fix, opening of sqlus.msb has been delayed until the error occurs.

836256  Long comment lines (beyond 72nd column) in oraca.cob caused
        precompiler error.  Since the suspected line was not necessary
        at all, the line has neen deleted to fix this problem.

848942  PROCOB failed to EXEC SQL INCLUDE a file with name in uppercase and
        without an extension.  By default, it should have assumed .cob (lower
        case extension).  So, for EXEC SQL INCLUDE FOO END-EXEC, it was looking
        for FOO.COB, and not FOO.cob.

857646  When a PIC S9(m) variable was used as a host variable, procob
        generated a precompiler error.  With the fix, error has been
        removed, giving correct generated file with the correct
        execution results.

884143  Whey type equivalencing a host variable as:
         <group_item>.<elementary_item>
        where the elementary-item name contained a hyphen, an error was given.

884391  An internal error occurred when the syntax EXEC SQL USE :hv END-EXEC
        was used in the input file.  Now gives the appropriate syntax error.

903909  A segmentation fault occurred after pro*cobol reported an error
        with the pseudo-text not being terminated properly.

904273  Dynamic Method 4 application with DESCRIBE BIND VARIABLES statement
        and using host arrays in a FOR clause in the EXECUTE statements would
        get core dump at runtime.

909020  EXEC SQL DESCRIBE SELECT LIST with none query sql statement gets
        ORA-24338: statement handle not executed runtime error.

911885  Application program with multiple connections like mixing the default
        and non-default might get run-time error.

913475  Application with multiple connections where fetching data within the
        non-lst connect/diconnect loop could result in ORA-01002 fetch out of
        sequence error.

936178  Application using XA to CONNECT and precompiled with RELEASE_CURSOR=YES
        caused memory leak.

945720  Memory access violation occurred due to some uninitialized
        SQL-SQINDS generated variables. SQL-SQINDS variables are now
        properly initialized in the generated code.

973363  When a group name (having FILLER as one of the element) is used
        as a host-variable in INTO clause, PROCOB generated wrong code.
        This wrong code produced compiler error.  With the fix, correct
        code is being generated.

979937  Pro*Cob application might get run-time error when precompiled with
        LITDELIM=APOST.


Bugs fixed in 8.1.5
-------------------

414298  If the statement text for an EXEC SQL EXECUTE IMMEDIATE was supplied
        in a host variable, e.g. EXEC SQL EXECUTE IMMEDIATE :create_as_select;
        Then the rows processed count in the sqlca.sqlerrd was not updated.
        The sqlca.sqlcode was updated to accurately reflect the results of
        the statement execution.

611926  Using plain period statement in the DATA DIVISION caused
        a precompiler error. For example, the following gave errors:
              01  DA1  PIC X(8) VALUE "ABCDEFGH".
                                                .
              01  DA2  PIC X(8) VALUE "IJKLMNOP".

616233  Pro*COBOL gave a spurious error when a blank line preceded the
        continuation of a string literal saying that the character string
        was not properly terminated.

616254  Pro*COBOL generated incorrect code when a SQLSTATE variable was
        declared with the GLOBAL attribute in a nested program, resulting
        in COBOL compilation errors.

616754  Pro*COBOL generated spurious syntax errors on floating-point
        constants that did not have a fractional part.

616759  Pro*COBOL generated spurious errors when non-alphanumeric
        multi-byte characters were used in identifiers.

658949  Pro*COBOL generated precompiler error for "VALUE IS EXTERNAL ...".
        Fix will allow the following syntax to be precompiled without any
        errors.  Following syntax is legal on DEC VMS Cobol compiler:
        { VALUE IS/ARE } { { EXTERNAL/REFERENCE  external-name1/data-name1 }
        [{ {THRU/THROUGH} { EXTERNAL/REFERENCE external-name2/data-name2}}] ...

704548  If NLS_LOCAL=yes and truncation had occurred, then the error 
        condition SQL-2129 (Fetched number of bytes is odd) was not detected.
        The error code was positive, thus the action associated with 
        EXEC SQL WHENEVER SQLERROR was not executed.
        This problem only existed in the 8.1 Beta release.

704801  Statement types were not returned through the SQLGLS subroutine.
        This problem only existed in the 8.1 Beta release.

704985  Could not fetch into a multi-byte character host variable with less
        than or equal to 2 bytes in length when NLS_LOCAL=YES was specified.

706521  Error was wrongly given when the REPLACE statement contained multiple
        BY clauses.  For example, an error was given on the following:
          REPLACE  ==ED001== BY ==ED100== ==ED002== BY ==ED200==.

707271  Pro*COBOL would sometimes give a spurious syntax error when the
        last line of the source file did not end with a NEWLINE character.
        This would typically happen when the last line was an END PROGRAM
        statement.

707568  A precompiler error was generated when FORMAT=TERMINAL and the 
        source code line began in column one.

716933  Processing a DEREF() or REF() in a query would cause Pro*COBOL to dump
        core depending on the platform.

717698  Executing embedded PL/SQL with indicator set to -1 would result
        in memory problem or run-time error.

735298  Memory used for EXEC TOOLS GET statement did not get freed after use.

750712  Pro*COBOL could generate invalid code for programs containing
        multi-byte characters, resulting in various spurious errors
        at runtime.

752463  Memory leak occurs when using NCHAR host variable and precompiled with
        NLS_LOCAL=YES.

754066  When an embedded sql dml returning statement had more than two columns,
        erroneous behavior occurred.

785387  Syntax errors were issued when datetime words like TIMESTAMP, TIME, and
        INTERVAL were used in SQL statements.  One example is
         SELECT TIMESTAMP FROM MYTABLE.


Bugs fixed in 8.1.3
-------------------
286765  When binding host arrays to PL/SQL tables through dynamic SQL,
        runtime errors would result.
        The original fix caused a problem for using host arrays
        with dynamic sql method to execute a pl/sql block, which used to work.
        This is to re-do the fix in 8.0.4 to introduce new embedded sql
        syntax, an optional EXECUTE to the existing ARRAYLEN statement:
        EXEC SQL ARRAYLEN host_array (dimension) EXECUTE
                                                 ^^^^^^^optional
        Use the optional EXECUTE with the ARRAYLEN statement to allow binding
        host arrays to a pl/sql table through dynamic sql execute statement.
        With the new fix from proc 8.0.4, in order to binding host arrays to a
        pl/sql table through dynamic sql execute statement, one needs to
        modify their application to add the optional "EXECUTE" at the end of
        their ARRAYLEN statement, for example:
        EXEC SQL ARRAYLEN host_array (dimension) EXECUTE
                                                 ^^^^^^^
584562  Pro*COBOL required the DATA DIVISION in the source file otherwise
        precompiler syntax errors were produced.  The only required
        division is now the PROCEDURE DIVISION.
 
603747  The WORKING-STORAGE SECTION was required in the source file
        with at least one declaration in it for the code to be generated
        correctly.  If not there, compile time errors resulted due to lack
        of generation of necessary declarations.
 
634854  Incorrect code was generated when MODE=ANSI and multiple DECLARE
        SECTIONs were used, causing compilation error.  MODE=ANSI is a
        macro option for DECLARE_SECTION=YES, making it necessary to write
        DECLARE SECTION for all the host variables.  So, it is possible to
        have multiple DECLARE SECTION.  For example, Pro*COBOL generated
        incorrect code for the following:
                   EXEC SQL BEGIN DECLARE SECTION END-EXEC.
                      01  USERNAME          PIC X(10) VARYING.
                      01  PASSWD            PIC X(10) VARYING.
              01  ESS            PIC S9(16)V99 COMP-3.
                  EXEC SQL END DECLARE SECTION END-EXEC.
              ....
              01  EMP-REC-VARS.
                       10 EMP-REC.
                  EXEC SQL BEGIN DECLARE SECTION END-EXEC.
                           15  EMP-NAME      PIC X(10) VARYING.
                           ....
                   EXEC SQL END DECLARE SECTION END-EXEC.
        The use of EMP-NAME as a host variable in any SQL statement generated
        incorrect code:
                   ....
                   CALL "SQLADR" USING
                       EMP-NAME-LEN IN
                       EMP-NAME IN
                       ESS
                       SQL-SQHSTV(1)
                   ....
        As it is evident, EMP-NAME is not a sub-group item of ESS.
        Following correct code is being generated with the fix:
                   ....
                   CALL "SQLADR" USING
                       EMP-NAME-LEN IN
                       EMP-NAME
                       SQL-SQHSTV(1)
                   ....
 
641092  Using a variable with PIC S9(n) COMP with "n" too large
        generated bad code without precompile error.  A variable
        declared with PIC S9(n), with "n" greater than what is
        allowed on the given platform, was used in an embedded
        sql statement.  On 32 bit machines "n" must not exceed
        9, and on 64 bit machines, "n" must not exceed 18.  To
        solve the problem, use a smaller number in the picture
        clause that does not exceed the maximum allowed size on
        your platform or use COMP-3.
 
652497  Pro*COBOL generates the wrong code for shift-based multi-byte character
        set applications.
 
657824  Use of PIC S9 DISPLAY host-variable did not produce precompile
        time error, but gave wrong results.  It is incorrect to use a
        DISPLAY variable as a host-variable. It needs to have a COMP
        (computational) type.  So, instead of clean precompilation, the
        appropriate error message now gets generated for the use of
        numeric DISPLAY type variable as a host variable.
 
659733  When xref=yes option was used, Pro*COBOL core dumped while listing
        reference to a long fully qualified name. With the fix, long
        fully qualified name is being truncated before listing.
 
676327  Freeing a newly allocated and opened result set cursor results in
        an invalid cursor error being returned.
 
683035  Reserved words such as HOLD and MESSAGE were not allowed to be used
        in such places as embedded sql statements.
 
691930  Used to get ORA-1017 when connect to database with ops$@<hostname>
 
693428  Hang, when comment line followed the last statement without
        period(.).  Hang has been removed with the appropriate end-of-file
        condition check.
 
693570  When FILLER was used as a group name, in some cases it gave PCC error,
        and in some other cases it generated incorret code with compilation
        error.  For example,
        01  EMP-REC.
            05  EMP-NUMBER    PIC S9(4) COMP.
            05  FILLER.
                10  TEST-NUMBER   PIC S9(4) COMP.
        When EMP-NUMBER was used in WHERE conditioon of SELECT, it gave
        compilation error:
        PCB-S-00204, Group items cannot be used except in INTO or VALUES
                      clause.
        When TEST-NUMBER was used in WHERE conditioon of SELECT, it
        generated incorrect code as:
                   CALL "SQLADR" USING
 
                       TEST-NUMBER IN
                       EMP-NUMBER IN
 
                       EMP-REC
                       ....
        giving the compilation error.  With the FIX, FILLER is being
        allowed as the group name.
 
700901  Pro*COBOL generating error with DBMS=V8, MODE=ORACLE,
        UNSAFE_NULL=YES.  Precompiler error has been eliminated.

Bugs fixed in 8.0.5
-------------------
549812  Pro* core dumped when three or more names(e.g., x x x) were given as
        file names. When Pro* processes command line options, it expects one
        input file name and one output file name.  Pro* has been modified to
        allow more than two filenames on command line with the appropriate
        error message.
 
553658  Core dump was seen on NT platform with an application that used the
        precompiler options nls_char and nls_local.  In NT multi-threaded
        applications the global runtime context did not get the correct
        nls_char and nls_local information, leading to a core dump.
 
571775  Syntax error was produced when the REPLACE function was used in
        an embedded sql statement.
 
573598  Syntax error was produced when source file contained CONSTANT SECTION 
        in the DATA DIVISION.
 
583044  VARCHAR host variables in CALL statements were not properly expanded
        and were eliminated by the optimization process of the COBOL compiler.
        This resulted in incorrect execution of the SQL statement.
 
586092  Pro*COBOL gave spurious undeclared cursor identifier errors on
        cursors declared within a nested program.
 
598203  Using command line option LTYPE=NONE did not completely suppress
        the precompilation list file.  The list file created would contain
        the cross-reference and option list even with LTYPE=NONE.
 
598204  Pro*COBOL gave undeclared SQL identifier errors on valid SQL
        identifiers when XREF=NO.
 
599284  Syntax errors were being produced on declarations that contained
        '&' in the values clause.  For example:
         01   USERNAME         PIC X(10) VALUE "SCO" & "TT".

606918  Pro*COBOL generated incorrect code for VARYING variables when an
        element of the generated group item exceeded one line.  In a 
        multi-byte environment, the line break could have occurred between
        bytes of a multi-byte character, causing compile time errors.

610739  Pro*COBOL did not recognize <= if there was a space between < and =.
        Pro*COBOL now skips the space when processing <=.  A similar
        change is made so that space in >=, <>, !=, ^= is also accepted.
 
611974  Host variable names in an INTO clause that were not prefixed by a
        colon were treated as SQL identifiers by Pro*COBOL.  Since SQL
        identifiers cannot contain hyphens, Pro*COBOL gave spurious errors in
        this situation when the host variable name contained any hyphens.
 
612519  'SELECTION' is changed to 'INEMPNO' as a proper meaningful name
        in sample4.pco
 
622811  Memory Leak, when RELEASE_CURSOR=YES option was used.
        A memory leak occurred when a cursor was closed.
 
629475  Certain Cobol compilers (e.g. NEC) do not accept PIC clause together
        with the usage of COMP-1 or COMP-2.  Pro*COBOL was generating some
        temporaries with "PIC S9(4) COMP-1", giving compiler errors on some
        Cobol compilers.
 
629943  As per ANSI standard, OCCURS clause cannot be used at level 01.
        Pro*COBOL generated a few temporary variables at level 01 with an
        OCCURS clause, causing compilation error on some strict ANSI compliant
        compilers (like DEC Cobol compiler). 

631374  Could not use implicit varchar host variables due to incorrect
        generated code or precompile time error.
        For example,
          01  EMPNAME.
               49  EMPNAME-LEN    PIC S9(4) COMP.
               49  EMPNAME-ARR    PIC X(10).
        when used in
          EXEC SQL CONNECT :EMPNAME IDENTIFIED BY :PASSWD END-EXEC.
        generated precompiler error (using option varchar=yes)
          PCB-S-00208, Incorrect type for host variable "EMPNAME"
        
        When the same implicit VARCHAR is used in non-CONNECT statement,
        such as,
          EXEC SQL
              SELECT ENAME INTO :EMPNAME FROM EMP
                     WHERE EMPNO = 7788
          END-EXEC.
        
        and precompiled with the option varchar=yes, it generated incorrect
        code as:
          CALL "SQLADR" USING
              EMPNAME-LEN
              SQL-SQHSTV(1)
        
        The following correct code is now being generated:
          CALL "SQLADR" USING
              EMPNAME-LEN IN
              EMPNAME
              SQL-SQHSTV(1)
 
636325  Before 8.0.4, one could use the EMBEDDED SQL CONNECT statement to
        connect to user SYS identified by the password CHANGE_ON_INSTALL
        with SYSDBA privileges by default as:
          EXEC SQL CONNECT :uid IDENTIFIED BY :pwd;
        In 8.0.4, the same EMBEDDED SQL CONNECT statement above would fail,
        because it required the user to specify the connection mode.  In
        Pro*COBOL 8.0.5 the new EMBEDDED SQL CONNECT syntax allows the user
        to specify the connection mode:
          EXEC SQL CONNECT :uid
           [IDENTIFIED BY :pwd]
           [AT [:]dbname [USING :hst]]
           [ALTER AUTHORIZATION :newpw] | [IN {SYSDBA|SYSOPER} MODE]
        Restriction:
          It is not possible to connect in SYSDBA/SYSOPER mode when using
          the auto_connect feature.

642112  When a connection was not made through an EMBEDDED SQL CONNECT
        statement, sqllib returned ORA-01012 error message.

Bugs fixed in 8.0.4
-------------------
221157  Memory errors were received when unaligned indicator variables
        were used in INSERT or UPDATE statements or in any WHERE clause.
        Indicator variables are unaligned when declared in a group item
        and the total length of the previous elements in the group item
        is an odd number of bytes.
 
286765  When binding host arrays to PL/SQL tables through dynamic SQL, runtime
        errors would result.
 
344346  When requesting the help screen, precompiler would loop infinitely
        for certain NLS languages in which the description of the
        command line option was excessively long, without intervening spaces
        so much so that it could't fit on a single line without being
        broken up into multiple lines.
        When requesting the help screen, precompiler will loop when displaying
        a message without spaces whose length is a multiple of 48 bytes.
 
369858  This is actually correct behavior, and LITDELIM should NOT be
        allowed as INLINE.  With this FIX, it will give a WARNING to
        user that this OPTION is NOT legal as EXEC ORACLE OPTION.
        The actual error message will be displayed as:
                   EXEC ORACLE OPTION (LITDELIM=APOST) END-EXEC.
        .............................................^
        PCC-W-0028:  Option "litdelim" not legal as EXEC ORACLE OPTION
 
467646  Memory leak when a separately precompiled source file contains no
        bind/define variables.
 
475842  Programs using COMP-1/COMP-2 as Host variables DONOT work
        correctly with NEC compiler. The built executables cannot
        fetch correct data. Also, the definition of COMP-1 and COMP-2
        for NEC COBOL85 is different from other platforms.  COMP-1 is
        in 2 bytes binary format (like a short) and COMP-2 is in 4
        bytes binary format (like a long).  Changing from S9(4) to
        COMP-1 or S9(9) to COMP-2 improves the performance.  Because
        PIC S9(4), S9(9), COMP-1 and COMP-2 are same data type on NEC
        and the length for COMP-1 and COMP-2 is defined to be 2 or 4
        bytes so it's simpler than variable length binary data type
        PIC S9(4) or S9(9).
 
513346  An OCCURS clause that was placed at the end of a declaration and which
        did not use the TIMES keyword resulted in bad generated code,
        resulting in COBOL compilation errors.
 
513360  Host variables of particular types were shown as invalid in the XREF
        and no type was shown, although the host variables were completely
        valid.
 
515388  Pro*COBOL would get a segmentation fault when the last line of a
        source file was an EXEC SQL INCLUDE of another source file.
 
523686  Using an EXEC ORACLE IFDEF statement in the ENVIRONMENT division
        caused statements that were otherwise acceptible to Pro*COBOL to
        get syntax errors.
 
533222  Sometimes error messages generated by the precompiler were not put
        into the list file.  This would generally occurred if there were more
        than 255 lines between error messages or between the last error
        message and the end of the source file.
 
533231  When the MAXLITERAL option was used inline is the source code
        Pro*COBOL issued an error message, although this should have been
        a warning message.
 
544803  A problem occurred when COPY statements followed END-EXECs
 
545435  A core dump occurred then the fetch statement physically preceeded
        the open statement in a source file.
 
546237  Used to get ORA-1017 when connecting to a database with the database
        embedded in the username (i.e. "SCOTT@service").
 
547565  Pro*COBOL would hang when IRECLEN was exceeded.
 
548201  No error message was issued when an EXEC statement began in Area A.
 
549767  "ID" was not acceptted in place of keywordd "IDENTIFICATION".
 
549835  The INDEXED BY subclause was not allowed before the ASCENDING/
        DESCENDING subclause in the OCCURS clause.
 
550512  Qualified host variables, such as EMP-TABLES.EMP-NAME, were not
        being allowed in embedded pl/sql.
 
553884  COPY statements with file names that have extensions, such as .CPY,
        resulted in spurious syntax error messages from the precompiler.
 
557123  Qualified identifiers were not being allowed in the ASCENDING/
        DESCENDING subclause of the OCCURS clause.  For example, a
        syntax error was being given on:
            01  EMP-REC-TABLES.
                05  EMP-NUMBER  OCCURS 5 TIMES
                    DEPENDING ON COUNTER
                    ASCENDING KEY IS BINKEY
                     OF EMP_REC_TABLES.      <-- qualification that caused
                                                 syntax error
 
562185  An error occurred when the user included an unquoted filename
        with an extension.  For example,
        EXEC SQL INCLUDE FOO.CPY END-EXEC
        generated an error while
        EXEC SQL INCLUDE 'FOO.CPY' END-EXEC
        did not.
 
562244  INCLUDE was not accepted as a precompiler option within source code.
 
565093  Pro*COBOL produced a syntax error when the user declared a variable
        with OCCURS n TIMES DEPENDING ON syntax.  Please note that using
        a variable declared with OCCURS DEPENDING ON clause in embedded
        sql will result in a precompile time error in 8.0.5 onwards.
        In 8.0.4, the error will not be produced but unreliable output
        will be produced.  User's are here then forwarned about this.
 
571777  An error was produced when FALSE was used in the VALUE clause
        of a variable declaration.
 
573608  Pro*COBOL gave spurious syntax errors whenever a string literal was
        used in an END PROGRAM statement.
 
Bugs fixed in 8.0.3
-------------------
447329  Use of a COPY statement in a declaration resulted in spurious errors
        being reported.

447332  Use of variables beginning with digits or containing hyphens in 
        ARRAYLEN statements resulted in spurious syntax errors.

447337  Pro*COBOL 2 error message 232 pointed to the beginning of the sql
        statement instead of the host variable.

447340  Some Oracle extensions such as VARYING and implicit host variables,
        EXEC ORACLE statements, and ARRYLEN statements were not fips flagged
        when the user specified fips=yes.

447351  The following conditions should have been flagged as errors or
        warnings, but were not:
         1) The dimension variable of an ARRAYLEN statement is required to
                be a 4-byte size of integer (binary) variable.
         2) The same variable cannot be used as both a host variable and
                an indicator variable within the same SQL statement or
                PL/SQL block.
         3) Using an ARRAYLEN variable in a SQL statement should have
                resulted in a warning.
         4) The MAXLITERAL option cannot be used after an EXEC SQL, IAF,
                or TOOLS statement.
         5) SQL identifiers used in an EXEC SQL EXECUTE statement that
                were not first DECLAREd or PREPAREd should have gotten
                errors.
         6) Indicator variables cannot be used in EXEC IAF statements.
         7) An EXEC SQL WHENEVER SQLWARNING statement was used when
                MODE=ANSI, but the SQLCA was not included.

453141  Pro*COBOL did not change comp-4 to comp-5 when option comp5=yes was
        specified.

454113  Pro*COBOL seg faults precompiling multi-byte programs using string
        literals in Dynamic SQL.  It makes no difference whether the string
        literals themselves contain multi-byte characters or single-byte
        characters.

454277  Pro*COBOL did not set an exit code when done with precompilation.  This
        would result in "make" scripts continuing with a COBOL compilation and
        possibly going through to the link stage, even if an error occurred
        during precompilation.

454749  The Pro*COBOL precompiler did not release all memory to the
        operating system upon termination.  On systems that do not
        automatically recover memory when a process terminates,
        doing many precompilations could result in all of the system
        memory being used up.

454796  The PARTITION clause on a table name was not accepted.  The clause
        can be used in insert, update, delete, lock table, and select DML
        statements.

454801  'WITH READ ONLY', 'WITH CHECK OPTION' were not accepted in a subquery.

456419  Pro*COBOL did not allow a string after the keyword COPY and not all
        forms of the REPLACING clause were allowed.

456425  ROWID was not allowed in select statement.

458644  ARRAYLEN statement did not allow quailified names in the table
        field name and the dimension name.  Now, the following is allowed
          EXEC SQL ARRAYLEN GRP-VAR.TABLE-FIELD (GRP-VAR2.DIMVAR) END-EXEC.

460295  Precompilation of a non-existant file gave assertion PGE 90104 and
        Pro*COBOL error PCB-I-556, besides the expected PCB-S-104 error.

461435  Use of COBOL variable names containing "-" as a descriptor resulted
        in spurious syntax errors during precompilation.

461614  Use of hint comments resulted in spurious errors at runtime.

462650  The precompiler generated bad code if the first declaration in the
        WORKING-STORAGE SECTION had a sequence number in columns 1 to 6.

462762  Subqueries and table aliases were disallowd simultaneously in the
        delete/update dml statements.  The following were not allowed
        and produced errors (precompile or runtime):
         exec sql delete (subquery) <alias> ..
         exec sql insert into (subquery) subquery...- <alias> not allowed
         exec sql update (subquery) <alias> set ..
         exec sql delete <table> <alias> ..
         exec sql update <table> <alias> ..

467940  Spurious syntax errors occurred when ".." were used in embedded
        PL/SQL.

468121  The precompiler did not terminate immediately when the USERID option
        was used and was unable to connect.  Instead the precompiler would
        proceed with the precompilation and would give many spurious errors.

469446  Syntax error messages did not display tokens as actually used.

469449  Pro*COBOL did not support the ALTER AUTHORIZATION clause in
        the CONNECT stmt. The clause is now supported at the end of the
        connect statement and it has the syntax:
           alter authorization :hv
        where hv is a host variable.

469468  Originally, Pro*COBOL would always generate 'START WITH' followed
        'CONNECT BY' even if the 'CONNECT BY' appeared first.  This
        would cause problems if the statement was a prepared statement
        subsequentally used with an explicit cursor.  The resulting
        'OPEN USING <bind variable list> would hence sometimes result
        in the bind variables being in the wrong order because the
        statement was generated in the opposite order.  This would cause
        runtime type mismatch errors during execution of the program.

470161  On some platforms, declarations generated to replace pseudo-types
        VARYING and SQL-CONTEXT were generated with "COMP5" instead of 
        "COMP-5".

472605  The equivalencing of group items (when varchar=no) and of implicit
        varchars (when varchar=yes) was not handled correctly.

473530  EXEC SQL VAR did not equivalence some types properly.

473568  Bad code was generated for PREPARE <statement-id> FOR <SQL-text>.

473574  No error was generated when an OPEN <cursor> USING statement was
        used and the cursor was not for a PREPAREd dynamic SQL statement.

475242  Bad code was generated when the same host variable was used more than
        once in the same PL/SQL block.

477593  Bad code resulting in COBOL compilation errors was generated when an
        ANSI mode program using the SQLSTATE status variable and not using
        a SQLCODE status variable or the SQLCA was precompiled.

480940  Pro*COBOL generated extra if statements for some EXEC SQL statements
        even when the WHENEVER conditions were not applicable.  For example,
        the if statement corresponding to whenever not found was begin
        generated for the commit statements.

483749  A syntax error was given when the EXEC SQL INCLUDE had a filename
        with a dash (i.e. '-') in it.

485650  Using COBOL list control statements EJECT, SKIP1, SKIP2, SKIP3, and
        TITLE resulted in spurious errors during precompilation.

487458  An EXEC SQL INCLUDE statement outside of WORKING-STORAGE or the
        PROCEDURE DIVISION would result in spurious syntax errors during
        precompilation.

495491  Source lines longer than IRECLEN usually resulted in spurious errors.

495503  A line with a "--" style comment followed by a line with something
        in the sequence field would result in spurious syntax errors during
        precompilation.

496227  Pro*COBOL sometimes generated incorrect code resulting in spurious
        errors at runtime when a sequence (qualification) was used within
        a SQL statement.  Also, using a database link ("@" qualification
        would result in a spurious syntax error during precompilation.

496783  Opening a cursor with a FOR UPDATE OF clause can get a spurious
        ORA-904 error at runtime.

500353  A segmentation fault could occur during precompilation if there was
        a PREPARE USING or EXECUTE USING dynamic SQL statement that was not
        preceeded by any executable SQL statement.


SECTION 6:  ADDENDUM TO THE PRO*COBOL PRECOMPILER PROGRAMMER'S GUIDE
====================================================================

1) Using "DBMS" Precompiler Option:

  Purpose

  Specifies whether Oracle follows the semantic and syntactic rules of Oracle7,
  Oracle8i, Oracle9i, Oracle10i or the native version of Oracle (that is, the
  version to which your application is connected).

  Syntax

  DBMS={V7 | V8 | NATIVE}

  Default

  NATIVE

  Usage Notes

  Cannot be entered inline.

  The DBMS option lets you control the version-specific behavior of Oracle.
  When DBMS=NATIVE (the default), Oracle follows the semantic and syntactic 
  rules of the database version to which the application is connected.

  When DBMS=V8, or DBMS=V7, Oracle follows the respective rules for Oracle9i 
  onwards (which remain the same as for Oracle7, Oracle8, and Oracle8i).


2) Reading a BFILE:

  While using

     EXEC SQL LOB LOAD :size FROM FILE ...

  The amount parameter (:size) indicates the maximum amount to load. If the 
  end of the source BFILE is reached before the specified amount is loaded, 
  the operation terminates with an ORA-22993 error.

