Sie sind auf Seite 1von 25

/ $Header: readme.doc 09-dec-2003.

11:27:26 subanerj Exp $ / / Copyright (c) 1992, 1996, 1997, 1998, 1999, 2001, 2002, 2003 by Oracle Corpora tion README FILE FOR PRODUCT Pro*COBOL 10.1.0.2.0 - PRODUCTION ========================================================= This file contains important information regarding Pro*COBOL Version 10.1.0.2 .0, which is the precompiler release corresponding to the 10.1.0.2.0 Oracle datab ase. These notes are divided into five sections: * Section 1 describes compatibility and migration issues that exist in Pro*COBOL 10.1.0.2.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 versions 9.2.0, 8.1.5, 8.1.3, and 2.0.2. The features introduced in Pro*COBOL 2.0.2 are classified in two broad categories: support for migration of DB/2 applications and general improvements. * 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 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. 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 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 as a This code a group name (having FILLER as one of the element) is used host-variable in INTO clause, PROCOB generated wrong code. wrong code produced compiler error. With the fix, correct 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.

Das könnte Ihnen auch gefallen