Summary of DIGITAL COBOL V2.5 January 13, 1998 File location: OpenVMS Alpha: SYS$HELP:COBOL025_RELEASE_NOTES.PS OpenVMS Alpha: SYS$HELP:COBOL025.RELEASE_NOTES DIGITAL UNIX: /usr/lib/cmplrs/cobol/relnotes Windows NT Alpha: .\DEC\COBOL\V25\docs\Release_Notes.txt,.ps,.pdf The information in this document is subject to change without notice and should not be construed as a commitment by Digital Equipment Cor- poration. Digital Equipment Corporation assumes no responsibility for any errors that may appear in this document. The software described in this document is furnished under a license and may be used or copied only in accordance with the terms of such license. No responsibility is assumed for the use or reliability of software on equipment that is not supplied by Digital Equipment Corporation or its affiliated companies. Copyright Digital Equipment Corporation. 1993, 1998. All rights reserved. DIGITAL COBOL V2.5 Release Notes i CONTENTS 1 Release Summary.......................................... 1 1.1 Windows NT Alpha additional information............... 2 1.2 Version Numbers....................................... 4 1.2.1 Compiler........................................... 4 1.2.2 Run-Time Library................................... 4 1.3 Problems Corrected since DEC COBOL V2.4............... 5 1.4 Restrictions and Known Problems....................... 10 2 Recent Enhancements...................................... 17 2.1 CIT3 for improved arithmetic compatibility with VAX COBOL............................................. 17 2.2 ACCEPT support for 4-digit years...................... 18 2.3 [Windows NT] ORGANIZATION INDEXED..................... 18 2.4 [Windows NT] ACCEPT/DISPLAY screen handling........... 19 3 Debugger Notes........................................... 20 3.1 Debugger Notes for OpenVMS Alpha...................... 20 3.1.1 Restrictions....................................... 20 3.2 Debugger Notes for DIGITAL UNIX....................... 21 3.2.1 Features........................................... 21 3.2.2 Restrictions....................................... 21 3.3 Debugger Notes for Windows NT Alpha................... 23 4 Documentation Notes...................................... 25 4.1 Documentation Changes and Updates..................... 25 4.2 [Windows NT] Adobe Acrobat Reader..................... 25 4.3 Feedback on Our Documentation......................... 26 5 Troubleshooting Tips..................................... 27 6 DIGITAL COBOL / VAX COBOL Compatibility Matrix........... 33 7 Providing Product Feedback............................... 36 iii 1 Release Summary These release notes contain important information about DIGITAL COBOL V2.5 including a short descriptive summary of features and sections on problems corrected, restrictions and known problems, recent enhance- ments, debugger notes, documentation notes, troubleshooting tips, and a DIGITAL COBOL / VAX COBOL compatibility matrix. This release includes an updated compiler, an updated RTL, and updated documentation. Both the compiler and RTL are required in order to sup- port the functionality and bug fixes listed within these release notes. These release notes should be made available to ALL users of DIGITAL COBOL. The release notes include many details to help facilitate migrations from and coexistence with VAX COBOL and the platforms supported by DIG- ITAL COBOL. Additional details concerning differences between VAX COBOL and DIGITAL COBOL appear in the documentation. Where a release note is specific to a particular platform, one or more of the following tags are used: o [OpenVMS] o [DIGITAL UNIX] o [Windows NT] DIGITAL COBOL V2.5 requires one of o OpenVMS Alpha V6.1 or higher o DIGITAL UNIX V3.2G or higher o Windows NT Alpha 4.0 or higher DIGITAL COBOL V2.5 includes the following functionality, performance enhancements, and bug fixes beyond DEC COBOL V2.4: o CIT3 (COBOL Intermediate Temp) for increased arithmetic compati- bility with the current release of VAX COBOL (see details that fol- low). o ACCEPT support for 4-digit years (see details that follow). o Improved compilation performance and decreased object sizes for non- EXTERNAL 01 WORKING-STORAGE data declarations which contain one or more subordinate OCCURS. These are now allocated in uninitialized storage unless there is a subordinate elementary data item which has a VALUE clause or which has a default initialization. o Improved UNSTRING runtime performance improvement for large input buffers and many uses of DELIMITED BY. o [Windows NT] ORGANIZATION INDEXED via a 3rd party ISAM package from Sector 7 (see details that follow). o [Windows NT] ACCEPT/DISPLAY enhancements: - ACCEPT WITH CONVERSION - ACCEPT/DISPLAY screen handling (see details that follow) DIGITAL COBOL V2.5 Release Notes 1 - X/Open ACCEPT/DISPLAY support for command line arguments - X/Open ACCEPT/DISPLAY support for environment variables o [Windows NT] Compiler driver enhancements: - /DLL[:filename] Specifies that the program should be linked as a dynamic-link library - /EXE[:filename] Specifies that the program should be linked as an executable image - /LINKMAP[:filename] Specifies that the linker should produce a map file - Allow all output file specifications (/LIS/EXE/DLL/OBJ) to be quoted and contain embedded spaces - Allow all output file specifications (/LIS/EXE/DLL/OBJ) to be a directory specification with default output file names cre- ated in that directory - Pass to the linker any files on the command line not identifi- able as compiler input or linker input o [Windows NT] Interactive compiler driver (ICD) enhancements: - Support for screen resolutions of 800X600 or higher - Direct access to Windbg help, linker help, and librarian help o Integration with latest versions of: - GEM BL33 - [Windows NT] Hypersort o Several bug fixes (see details that follow) 1.1 Windows NT Alpha additional information The DIGITAL COBOL kit for Windows NT Alpha includes some components under license from Microsoft including: o Linker o Librarian o WINDBG o Runtime support These tools are compatible with Microsoft Visual C++ 4.1 for Windows NT Alpha. Generally, DIGITAL COBOL for Windows NT Alpha can be used with any language or debugger compatible with Microsoft Visual C++ 4.1 for Windows NT Alpha. DIGITAL COBOL V2.5 for Windows NT Alpha includes most of the function- ality from DIGITAL COBOL for OpenVMS Alpha and DIGITAL UNIX. The key pieces of functionality not available with V2.5 on Windows NT Alpha include: o Tape handling (not planned for Windows NT Alpha) 2 DIGITAL COBOL V2.5 Release Notes o cobfunc, cobcall, and cobcancel See the compatibility matrix at the end of the release notes for a com- plete summary of the functionality available across the four supported platforms with VAX COBOL V5.4 and DIGITAL COBOL V2.5. DIGITAL COBOL V2.5 Release Notes 3 1.2 Version Numbers 1.2.1 Compiler The edit level number, which appears at the end of the version num- ber, reflects the number of revisions made to the compiler. The ver- sion number is printed at the top of each page of the source listing generated by the compiler. For example, if the following string ap- pears in the top line: DIGITAL COBOL V2.5-961 then the compiler is Version V2.5, edit number 961. The version number is also displayed as follows: [OpenVMS] $ ANALYZE/IMAGE SYS$SYSTEM:COBOL.EXE [DIGITAL UNIX] % cobol -v [Windows NT] COBOL /WHAT 1.2.2 Run-Time Library The version number for the V2.5 run-time library is V2.5-260 for the following: [OpenVMS] DEC$COBRTL.EXE [DIGITAL UNIX] libcob.so [DIGITAL UNIX] libcob.a [Windows NT] dcob.dll To verify the version of the run-time library: [OpenVMS] $ ANALYZE/IMAGE SYS$LIBRARY:DEC$COBRTL.EXE [DIGITAL UNIX] % what /usr/shlib/libcob.so [DIGITAL UNIX] % what /usr/shlib/libots2.so Note that the run-time library is included with DIGITAL COBOL V2.5. For Windows NT Alpha, you must purchase a separate license for the run- time library to use it on a system not licensed for DIGITAL COBOL V2.5. 4 DIGITAL COBOL V2.5 Release Notes 1.3 Problems Corrected since DEC COBOL V2.4 Problems corrected which do not apply to all 3 Alpha platforms are tagged with o [OpenVMS] o [DIGITAL UNIX] o [Windows NT] The list below includes all problems fixed since DEC COBOL V2.4-863 SSB. Note that V2.4-863 SSB supported OpenVMS Alpha and DIGITAL UNIX. V2.4-919 SSB supported Windows NT Alpha. ___________________________________________________________________ Version_______Description__________________________________________ V2.5-961 An error in the compiler involving large literals has been fixed. Literals which needed to be represented as octa- word integers were erroneously converted to quadword in- teger form instead. When the compiletime conversion over- flowed, a bogus value, typically 0, was then used instead of the intended value. An example of a large literal is: -999999999.E+10. V2.5-961 An error in the compiler which could cause an erroneous result for the remainder in format 4 or 5 DIVIDE state- ments has been fixed. For a statement of the form: DIVIDE A(I) BY B GIVING I REMAINDER J the quotient I was correctly determined, but the remain- der calculation (remainder = dividend - quotient * di- visor) then used the new value for the subscript I when referencing the dividend A(I). A similar error with a subscripted divisor has also been fixed. V2.5-961 An error in the compiler has been fixed which could cause an erroneous result when CALL is used with EXTERNAL. This problem showed only at optimization levels 2 or greater. V2.5-961 An error in the compiler which could cause a runtime ac- cess violation when GENERATE is used with LINKAGE SEC- TION items has been fixed. This problem showed up only at optimization levels 2 or greater. V2.5-961 A compiler assertion with /OPTIMIZE and the EVALUATE state- ment has been corrected. DIGITAL COBOL V2.5 Release Notes 5 ___________________________________________________________________ Version_______Description__________________________________________ V2.5-961 An error condition is no longer returned for FILE STA- TUS 44 when a variable length record is written with a length less than the minimum record length and /STANDARD=V3 (-std v3) is specified. This change matches the behav- ior of VAX COBOL with /STANDARD=V3. V2.5-961 The compiler now properly handles the operation X / Y so that this operation gets the same runtime behavior as X / 0 and 0 / 0 when Y has the value 0. V2.5-961 The compiler now properly handles the operation 0 / Y so that this operation now gets the same runtime behavior as X / Y when X has the value 0. V2.5-961 The compiler now properly handles exponentiation with a literal operand when compiled /TRUNC (-trunc). V2.5-961 The compiler with /ALIGN=PADDING (-align padding) and *DC SET PADALIGN now conforms to ECO 39 of the Alpha Call- ing Standard. This corrects those cases of 01 record lengths whose padded length did not match the length required by ECO 39. If you compile /ALIGN=PADDING or use *DC SET PADALIGN, you should include the compile option /WARNINGS=ALL (- warn all) to determine if you have any records impacted by this ECO. A new informational message (ALIPAD01DIF) will flag those user data fields for which the computa- tion of Alpha Natural Padding has been changed to con- form with ECO 39 of the Alpha Calling Standard. V2.5-961 A compiler problem which resulted in an erroneous "Operand must be an integer" diagnostic has been corrected. V2.5-961 [OpenVMS] Logical name handling with the SET statement no longer requires use of DECC$DISABLE_GETENV_CACHE with DECC$SHR X07.1-4 or higher. V2.5-961 [OpenVMS] The compiler no longer gives an assertion when /SEP/LIS is used with CDD and a source file with multi- ple routines. V2.5-961 [DIGITAL UNIX] If -relax_key_checking is specified for an INDEXED file and the file allowed duplicates for the primary key when originally created, then a WRITE state- ment that creates a duplicate value is now allowed. 6 DIGITAL COBOL V2.5 Release Notes ___________________________________________________________________ Version_______Description__________________________________________ V2.5-961 [DIGITAL UNIX] A bad ISAM key (e.g. greater than maxi- mum size allowed), now produces an appropriate runtime diagnostic. Previously, a diagnostic concerning overlap- ping keys was generated. V2.5-961 [DIGITAL UNIX, Windows NT] In a divide operation in which both operands are floating point (USAGE COMP-1 or COMP- 2) and both operands contain the value zero, the divide operation is now handled correctly. V2.5-961 [DIGITAL UNIX, Windows NT] File status 35 (file not found) is no longer returned for OPEN OUTPUT when there is a prob- lem with the file specification. File status 30 is now returned. V2.5-961 [DIGITAL UNIX, Windows NT] If a file created with a Win- dows NT editor, which uses the system record delimiter CR/LF, is used as the input data stream for an ACCEPT state- ment, the ACCEPT statement will now recognize each "record" correctly. This effect can be seen using stdin redirection with pro- gram.exe < editorfile.txt or by setting the environment variable "COBOL_INPUT" to the name of the file contain- ing the data. V2.5-961 [Windows NT] The compiler driver no longer gets an ac- cess violation when a directory specification is given that may imply the file does not exist. V2.5-961 [Windows NT] CTRL/C to interrupt a running DIGITAL COBOL program which is paused during a STOP "literal" state- ment is now handled correctly. V2.5-961 [Windows NT] The Interactive Compiler Driver now works correctly when the screen resolution is set to 800x600. V2.5-961 [Windows NT] The Interactive Compiler Driver now prevents comingling of mouse-generated compiler options with linker options. It is still possible to manually enter both valid and invalid items in the command line construction box. V2.5-961 [Windows NT] If you compile/relink a program using DIG- ITAL COBOL V2.5, and you try to use the V2.4 RTL, the fol- lowing diagnostic will be issued: cobrtl: severe: This program requires DEC COBOL RTL V2-260 and the program exits. DIGITAL COBOL V2.5 Release Notes 7 ___________________________________________________________________ Version_______Description__________________________________________ V2.5-961 [Windows NT] The Interactive Compiler Driver can now cor- rectly locate help information. V2.5-961 [Windows NT] /LIST/COPY_LIST now formats L, R, and LR source lines the same as on the other platforms. V2.5-961 [Windows NT] An UNLOCK ALL statement no longer retains a lock on the last (most recently) locked record. V2.5-961 [Windows NT] A diagnostic is now issued for READ or START with the ALLOWING READERS phrase and the lock request is upgraded to NO OTHERS. The locking implementation on Win- dows NT has no read-locks available. V2.5-961 [Windows NT] If the source pathname on the command line starts with a top-level directory name or drive and does not have a .cob extension, the compiler will now locate the file. V2.5-961 [Windows NT] Two consecutive UNLOCK statements now be- have correctly and UNLOCK the current record only; i.e. the second UNLOCK statement is now ignored. V2.5-961 [Windows NT] The compiler now properly diagnoses liter- als whose magnitude must not exceed 2147483647. This limit applies, for example, to the repeat-count in a PERFORM statement. V2.4-919 A problem has been corrected when the intrinsic function MEDIAN was called with one or more arguments that referred to leading sign separate or trailing sign separate dec- imal data items which could result in a wrong answer. V2.4-919 The compiler no longer fails when a SCREEN SECTION US- ING clause references a group item which includes a nu- meric subordinate item. V2.4-919 The compiler no longer fails /OPT in certain cases when CALL USING BY CONTENT is used with a character item from the LINKAGE SECTION. 8 DIGITAL COBOL V2.5 Release Notes ___________________________________________________________________ Version_______Description__________________________________________ V2.4-919 A problem has been corrected which involved the use of the EXIT PROGRAM statement in a local USE procedure of a COBOL main program which was compiled with /STANDARD=V3 (-std v3). The problem was that such an EXIT PROGRAM state- ment did not cause the execution of the run-unit to ter- minate immediately, as it does in VAX COBOL. Instead, the EXIT PROGRAM statement was causing the execution of the run-unit to continue by returning immediately to the main- line code of the main program. V2.4-919 A compiler problem has been corrected where ADD, SUBTRACT, MULTIPLY, and DIVIDE with a floating-point destination (COMP-1 or COMP-2) and the ROUNDED option could result in a wrong answer. V2.4-919 A problem has been corrected when a MULTIPLY statement or multiply operation having all comp operands required an intermediate result capable of representing 10 dec- imal digits but a smaller intermediate was erroneously chosen. Combinations of input values that produced 10- digit products could result in a wrong answer. V2.4-919 [OpenVMS] When the source program contains a call to one of LIB$ESTABLISH or to LIB$REVERT, arithmetic statements with an ON SIZE ERROR clause no longer execute as if the size error condition was always raised. V2.4-919 [OpenVMS] The RTL kit no longer includes SYSMSG.EXE. This corrects some problems with installing COBOLRTL02x. V2.4-919 [OpenVMS] A problem has been corrected when a [RE]WRITE statement changes the file position that was established with a START statement. Previously, any locking speci- fications associated with the START statement were ig- nored when the START was re-executed to re-establish the correct file position. Now, all locking information is saved and restored. V2.4-919 [DIGITAL UNIX] When a file is being read as a LINE SE- QUENTIAL file and there are no linefeed record separa- tors in the file (actually a fixed-length file), the RTL no longer ignores records that fall on certain boundaries. ___________________________________________________________________ DIGITAL COBOL V2.5 Release Notes 9 1.4 Restrictions and Known Problems ___________________________________________________________________ Version_______Description__________________________________________ V2.5-961 DIGITAL COBOL V2.5 requires one of o OpenVMS Alpha V6.1 or higher o DIGITAL UNIX V3.2G or higher o Windows NT Alpha 4.0 or higher To obtain all relevant V2.5 bug fixes and to use all V2.5 functionality, you must use the latest DIGITAL COBOL RTL. V2.5-961 /CONDITIONALS (-cond) with no selector is not supported. V2.5-961 Because of the differences in the way expressions are eval- uated in a COMPUTE between VAX COBOL and DIGITAL COBOL, the number of divide by 0 and undefined exponentiation diagnostics may vary between VAX COBOL and DIGITAL COBOL. V2.5-961 When an exponent has a scaling factor and both operands have the value 0, the size error condition should be raised, but the value 1 is returned instead. V2.5-961 If a COMPUTE statement with an "ON SIZE ERROR" clause has more than one divisor whose value is 0, the run-time li- brary will erroneously issue the message "cobrtl: error: divide by zero; execution continues" V2.5-961 If a non-numeric literal is continued across a line break, converting the file from terminal format to ANSI format using the reformat utility causes blanks to be inserted in the literal at the point of the line break. This can result in a literal that is longer than the PIC clause, causing a syntax error. V2.5-961 See the section "Debugger Notes" for problems and restric- tions specific to debugging with DIGITAL COBOL. V2.5-961 [OpenVMS] If you are using OpenVMS Alpha V7.1 with ANY version of DEC COBOL or DIGITAL COBOL, make sure to ap- ply RMS ECO ALPRMS01_071 if you use either of the fol- lowing clauses: o APPLY EXTENSION o APPLY PREALLOCATION V2.5-961 [OpenVMS] The minimum Oracle CDD/Repository version re- quired for DIGITAL COBOL for OpenVMS Alpha is CDD/Repository V5.3. 10 DIGITAL COBOL V2.5 Release Notes ___________________________________________________________________ Version_______Description__________________________________________ V2.5-961 [OpenVMS] The minimum Oracle DBMS version required for DIGITAL COBOL is Oracle DBMS V5.1A. Use of the DIGITAL COBOL DBMS support requires the separate COBOL-DBMS li- cense/PAK; see the DIGITAL COBOL SPD for more informa- tion. V2.5-961 [OpenVMS] The line number reported in the debugger in a traceback with /CHECK=DECIMAL does not always report the exact line number of the error and instead gives %SYSTEM-F-DECINV, decimal invalid operand, break on unhandled exception preceding line nnn To get more details on the specific line where the er- ror was detected with /CHECK=DECIMAL, there are 2 alter- natives. You can use RUN/DEBUG and SHOW CALLS to obtain the correct line number where the /CHECK=DECIMAL error occurred. In addition, you can use RUN/NODEBUG to obtain the correct line number if you are using OpenVMS Alpha V7.0 or higher. V2.5-961 [OpenVMS] If you mix ANSI ACCEPT statements and extended ACCEPT statements in one program, the RECALL (UP-arrow or DOWN-arrow) will not be supported for the ANSI ACCEPT statements. V2.5-961 [OpenVMS] Attempts to write before the end of data (OPEN EXTEND) when using a TZK10 drive (a quarter-inch cartridge (QIC) standard drive) result in a write append error. This is a restriction in the QIC standard. The QIC standard allows drives to write at the end of data (append) or write the entire tape from beginning of tape (BOT), but does not allow data to be written before the end of data. This restriction applies to all OpenVMS Alpha hardware platforms that support the TZK10 drive. V2.5-961 [OpenVMS] When a size error condition is expected for rais- ing a floating point base to an integer type exponent, (that is, when MATH$POW_GQ is called), the DIGITAL COBOL signal handler fails to trap the error and a %MTH-F-INVARGMAT occurs and the program terminates. V2.5-961 [OpenVMS] The LINE SEQUENTIAL file organization does not work as expected if the file is assigned to a network de- vice. DIGITAL COBOL V2.5 Release Notes 11 ___________________________________________________________________ Version_______Description__________________________________________ V2.5-961 [OpenVMS] There are known problems with CDD/Repository regarding translation of quadword INITIAL_VALUEs. Some values are not converted correctly and will not produce a COBOL VALUE clause or a diagnostic message. Specifically, quadword fields with initial values that cannot fit into a quadword are silently ignored. This oc- curs in one of the translation layers of CDD and is not reported to the compiler. Initial values that are 19 digits in length which will fit into a quadword, but exceed the length of a COBOL lit- eral are detected and flagged by the compiler with a di- agnostic. Initial values that are 18 digits or less work correctly. The initial value clauses for all unsigned quadwords are ignored by the compiler. Again, this occurs in a CDD trans- lation layer and cannot be detected by the compiler. This occurs with the VAX COBOL compiler as well as the DIG- ITAL COBOL compiler. V2.5-961 [DIGITAL UNIX] The following cannot be used in a stripped image: o CANCEL o CALL dataname o cobfunc, cobcall, and cobcancel o VAX COBOL compatible extended ACCEPT/DISPLAY o X/Open SCREEN SECTION V2.5-961 [DIGITAL UNIX] CANCEL, CALL dataname, cobfunc, cobcall, and cobcancel use nlist on the main executable image. This means that these references cannot be from the main ex- ecutable image to a shared object. V2.5-961 [DIGITAL UNIX] You must use ltf (logical tape facility) as supplied on a DIGITAL UNIX V3.0 or higher system to initialize ANSI labeled magtapes. V2.5-961 [DIGITAL UNIX] When you compile COBOL and non-COBOL ob- jects and/or sources together, you must specify the COBOL ones before the non-COBOL ones on the command line. If you put the non-COBOL objects/sources first, the result- ing executable will contain unresolvable loader symbols and will not run. V2.5-961 [DIGITAL UNIX] For COBOL programs to access files served from UCX file-systems, you must turn off the default file locking by using the -nolocking flag. 12 DIGITAL COBOL V2.5 Release Notes ___________________________________________________________________ Version_______Description__________________________________________ V2.5-961 [DIGITAL UNIX] A COBOL application will abort if it tries to ACCEPT from any device mapped to stdout or stderr, and the application will abort if it tries to DISPLAY to any device mapped to stdin. If you define the corresponding environment variables to devices other than stdout, stderr, and stdin, the above problems do not occur. V2.5-961 [DIGITAL UNIX] There is a potential "input file reading" problem caused by a change in ULTRIX Connection Software (UCX) behavior from UCX V1.3 to V2.0. In V2.0, the ex- port option DATA_CONVERSION is turned on by default. The new behavior, as described in the UCX release notes, is as follows: When DATA_CONVERSION is on, sequential non- stream_LF files are automatically converted to stream_ LF files for READ_ONLY access. Note that the conversion is done "on-the-fly", that is, the file remains in the sequential format on disk; only the data sent to the re- mote NFS client are converted. There is a difference in the file size between the orig- inal sequential non-stream_LF file (on the server side) and the converted stream_LF file (on the client side and cached by the client). To prevent the occurrence of an "input file reading" prob- lem, ask your system manager to turn off the DATA_CONVERSION option. V2.5-961 [DIGITAL UNIX] On a UCX-served disk, some file names are illegal that are legal in DIGITAL UNIX on disks that are not UCX-served; for example, "a.dat.dat". V2.5-961 [DIGITAL UNIX] When the NFS server is an ULTRIX system, it must be running Version 4.2 or greater of the ULTRIX lock demon for your program to access files on the NFS- served disks. Otherwise, your program will hang. Supe- ruser privilege will be required to kill your process. DIGITAL COBOL V2.5 Release Notes 13 ___________________________________________________________________ Version_______Description__________________________________________ V2.5-961 [DIGITAL UNIX] When compiling in the DEC FUSE environ- ment (using the compiler options -xref or -xref_stdout), certain COBOL programs may raise this fatal DEC FUSE di- agnostic: cobol: Severe: Fatal error -7 returned from a cross-referencing library procedure To avoid this DEC FUSE restriction, COBOL programs must adhere to this rule: Any copy file that contains a PROGRAM- ID or END PROGRAM statement for a program must contain that entire program. This restriction also applies to debugging COBOL programs with Ladebug. V2.5-961 [DIGITAL UNIX] The DEC FUSE editor does not completely support COBOL programs with successive COPY statements where there are no intervening data item references or declarations. With these COBOL programs, the FUSE Edi- tor cannot be used to display the file for COBOL items which are clicked on from the Cross-Referencer. To work around this DEC FUSE restriction, insert an extra dec- laration between successive COPY statements in the DATA DIVISION: COPY "LIBRARY-1". 01 EXTRA-ITEM PIC X. COPY "LIBRARY-2". and insert an extra reference to a data item between suc- cessive COPY statements in the PROCEDURE DIVISION: DISPLAY "TEST 7". COPY "LIBRARY-1". move "1" to extra-item. COPY "LIBRARY-2". V2.5-961 [DIGITAL UNIX] When a shared object is created and a COBOL main entry point (_cobol_main) is identified, there is no way to create a different _cobol_main when building the executable image when -call_shared is specified. For example, ld -shared -o util.so util1.o util2.o util3.o ... ld -call_shared -o mainp mainp.o subp.o util.so ... When mainp runs, util1 is the code that is executed. The workaround is to create mainp.so. V2.5-961 [DIGITAL UNIX] When a size error condition is expected for raising a negative base to a non-integral exponent, the DIGITAL COBOL signal handler fails to trap the er- ror and a "last chance handler" error occurs and the pro- gram terminates. 14 DIGITAL COBOL V2.5 Release Notes ___________________________________________________________________ Version_______Description__________________________________________ V2.5-961 [DIGITAL UNIX, Windows NT] ORGANIZATION INDEXED requires a separately licensed 3rd party product. On DIGITAL UNIX, Informix C-ISAM version V5.00 is required. C-ISAM can be ordered from Informix: Product: Informix C-ISAM Available From: Informix USA: 1-800-331-1763 UK: 44-1784-42-2000 Singapore: 0718-65-298-1716 Japan: 81-3-5562-4599 WWW: http://www.informix.com On Windows NT Alpha, Sector 7 ISAM 19-Dec-1997 vxisam.dll is required. vxisam.dll can be ordered from Sector 7: Part Number: VXISAM-NTIA Available From: Sector 7 Group USA: 1-800-867-8640 UK: +44 (0)1536-408588 Internet: sales@sector7.com WWW: http://www.sector7.com V2.5-961 [Windows NT] The run-time library is available as a DLL only. Therefore, an application built on a particular sys- tem requires that the run-time library DLL be installed on any other system on which the application is to be run. A separate runtime kit is available, and you must pur- chase a separate license for the run-time library to use it on a system not licensed for DIGITAL COBOL V2.5. V2.5-961 [Windows NT] The installation procedure and the Inter- active Compiler Driver require a screen resolution of 800x600 or higher. V2.5-961 [Windows NT] Tape handling is not supported. V2.5-961 [Windows NT] cobfunc, cobcall, and cobcancel are not sup- ported. V2.5-961 [Windows NT] EXTERNAL in a run unit built as a DLL is not currently supported. V2.5-961 [Windows NT] ACCEPT/DISPLAY screen handling does not sup- port BLINK or X/Open SCREEN SECTION color. DIGITAL COBOL V2.5 Release Notes 15 ___________________________________________________________________ Version_______Description__________________________________________ V2.5-961 [Windows NT] File sharing and record locking are gener- ally supported, but some restrictions exist: File Sharing: o A unique access stream is created anytime an OPEN state- ment is executed for a physical file that has a sep- arate FD. This may occur in a single run unit or across different run units. o For INDEXED files, OPEN ALLOWING READERS is minimally supported and is not recommended. Record Locking: o For all filetypes, the ALLOWING READERS option of READ and START is is not supported. o For all filetypes, the REGARDLESS option of READ and START is not supported. o For SEQUENTIAL files, this means that no subsequent READs can be done when a FILE STATUS 92 occurs until the record is free. For INDEXED and RELATIVE files, a START can be used to position beyond the locked record. o For INDEXED files, the ALLOWING UPDATERS option on a READ causes the READ statement to not detect a locked record. o For INDEXED files, START does not detect a locked record. o For SEQUENTIAL and RELATIVE files There is a limit of 200 record locks per access stream. This may affect programs with manual locking that neglect to perform UNLOCK statements on a regular basis. V2.5-961 [Windows NT] ORGANIZATION INDEXED is currently limited to 254 keys. V2.5-961 [Windows NT] DIGITAL COBOL run units currently require that a DIGITAL COBOL routine be the first routine built into the run unit. No routines included in the run unit can have the name 'main'. This restriction is to ensure that DIGITAL COBOL exception handling operates correctly. ___________________________________________________________________ 16 DIGITAL COBOL V2.5 Release Notes 2 Recent Enhancements 2.1 CIT3 for improved arithmetic compatibility with VAX COBOL This section covers a new DIGITAL COBOL option available with DIGI- TAL COBOL V2.5. Note that this option is already available with DEC COBOL V2.4 SSB for Windows NT Alpha via /SWITCH=DC_USE_CIT3. The COBOL language allows users to declare data up to 18 decimal dig- its. Both DIGITAL COBOL and VAX COBOL provide extended arithmetic for intermediate computations generally up to 31 decimal digits of pre- cision. When the compilers issue the INTERMED diagnostic with /WARNINGS=ALL (-warn all), VAX COBOL switches to CIT/CIT2 (COBOL Intermediate Temp) as the intermediate data type and DIGITAL COBOL switches to double pre- cision floating. CIT3 is an option which provides increased arithmetic compatibility with VAX COBOL. When this option is chosen, DIGITAL COBOL switches to CIT3 as the intermediate data type instead of double precision float- ing. CIT* arithmetic maintains a base containing the most significant 18 decimal digits of an arithmetic operation and an exponent in the range -99..+99 representing a power of 10. To use CIT3 for V2.5, use the following new qualifier in your compi- lations: [OpenVMS] COBOL/MATH_INTERMEDIATE=CIT3 [DIGITAL UNIX] cobol -math_intermediate cit3 [Windows NT] COBOL/MATH_INTERMEDIATE=CIT3 CIT3 is disabled by default in DIGITAL COBOL V2.5, so the default arith- metic behavior with DIGITAL COBOL V2.5 generally matches earlier ver- sions of DEC COBOL (with the exception of bug fixes). Following is a brief summary of differences between DIGITAL COBOL and VAX COBOL arithmetic with CIT3 enabled in DIGITAL COBOL: o Invalid decimal data In DIGITAL COBOL, invalid decimal data detection takes place be- fore any possible conversion to CIT3. CIT3 operations on data items containing invalid decimal data will get results compatible with DIGITAL COBOL rather than VAX COBOL. o Floating-point data items In DIGITAL COBOL, expressions involving COMP-1 or COMP-2 data items will be converted to G_floating (on OpenVMS Alpha) or T_floating before conversion to CIT3. CIT3 operations involving D_floating (on OpenVMS Alpha) data items, in particular, will get results compat- ible with DIGITAL COBOL rather than VAX COBOL. o Undefined results DIGITAL COBOL V2.5 Release Notes 17 If an abnormal condition arises during a CIT3 operation, e.g. IN- TEXPOVE (intermediate exponent overflow), and the program manages to continue, and it is not an arithmetic statement with an ON SIZE ERROR clause, then the values which get stored in destination items will be undefined. DIGITAL COBOL and VAX COBOL are highly likely to get different undefined results in such cases. o STANDARD dependency The VAX COBOL /STANDARD qualifier has an effect on when arithmetic expression analysis switches to one of the CIT forms. With /STANDARD=V3 (-std v3), CIT is used when more than 18 digits of intermediate re- sult are needed. With /STANDARD=85 (-std 85), CIT is used when more than 31 digits of intermediate result are needed. The DIGITAL COBOL implementation is compatible with VAX COBOL /STANDARD=85. o Special contexts The CIT3 implementation has concentrated on the arithmetic state- ments (ADD, SUBTRACT, MULTIPLY, DIVIDE, and COMPUTE). The compiler does not provide CIT3 support equivalent to VAX COBOL's CIT/CIT2 support for a number of contexts: - Intrinsic functions - Expressions in reference-modification components - Expressions in INSPECT, STRING, and UNSTRING statements - Exponentiation 2.2 ACCEPT support for 4-digit years DIGITAL COBOL now supports 4-digit years with ACCEPT: o ACCEPT data-name FROM DATE YYYYMMDD o ACCEPT data-name FROM DAY YYYYDDD These extensions are compatible with the syntax proposed in the ANSI- 9X draft COBOL standard. In addition, the following ANSI-85 ACCEPT usages o ACCEPT data-name FROM DATE o ACCEPT data-name FROM DAY which return 2-digit years are now flagged with an informational di- agnostic if you compile /WARNINGS=ALL (-warn all). 2.3 [Windows NT] ORGANIZATION INDEXED ISAM on Windows NT Alpha requires Sector 7 vxisam.dll. This file must be in your path to run DIGITAL COBOL V2.5 programs with ORGANIZATION INDEXED. If you try to run a program with ISAM and vxisam.dll is not in your path, an error occurs when the RTL attempts to call one of the routines in vxisam.dll. You must order vxisam.dll from Sector 7 (see ordering information earlier in these release notes). 18 DIGITAL COBOL V2.5 Release Notes ISAM support on Windows NT Alpha is similar to support on DIGITAL UNIX. The following are known problems based on our testing with the 19-Dec- 1997 vxisam.dll from Sector 7: o Creating a file with 255 keys gets an error. (254 keys work fine.) o Attempting to create a file with a filename containing too many char- acters (such that the full specification exceeds the maximum path- name allowed) gets an access violation instead of a proper diag- nostic. o Opening a file with an empty .idx file gets a "file not found" er- ror instead of a "corrupted file" error. o In a multi-user environment, when the first user has opened the file ALLOWING READERS, the file is not locked correctly. A subsequent user can WRITE to the file when an error should have been returned. Note that the compiler issues a diagnostic for the OPEN ALLOWING READERS limited support. o In an AUTOMATIC locking environment, a REWRITE does not release the current lock. An UNLOCK statement should be inserted. 2.4 [Windows NT] ACCEPT/DISPLAY screen handling ACCEPT/DISPLAY screen handling is now supported on Windows NT Alpha with 2 exceptions: o BLINK o X/Open SCREEN SECTION color support A separate window is created if your program includes any extended AC- CEPT or extended DISPLAY statements. The separate window is used ex- clusively for all extended DISPLAY output and all extended ACCEPT in- put including X/Open SCREEN SECTION input and output. If your program in addition includes any non-extended ACCEPT or DISPLAY statements, that input and output is NOT done through the separate window. If you run a program with extended DISPLAY and redirect output to a file, the program will create (but not use) the extended ACCEPT/DISPLAY window unless you also redirect input from a file. Note that you need to redirect input from a file even if the program has no ACCEPT to avoid the creation of the extended ACCEPT/DISPLAY window. The dimensions and fontsize of the separate window can be controlled with the following 3 environment variables: o COBOL_SCREEN_LINES (defaults to 24) o COBOL_SCREEN_COLS (defaults to 80) o COBOL_SCREEN_FONTSIZE (defaults to 7) When typing in an editable field, in addition to editing you get by holding down the control key and typing a letter (e.g., CTRL/F to move the cursor forward), and the arrow keys, the following keys above the arrow keys on the keyboard may be used: o "insert" - toggles between insert and overstrike mode DIGITAL COBOL V2.5 Release Notes 19 o "home" - moves the cursor to the beginning of the field o "backspace" - same as the "home" key o "end" - moves the cursor to the end of the field o "delete" - deletes the previous character, and moves back one (this differs from the behavior in command-line editing, where it deletes the current character). 3 Debugger Notes 3.1 Debugger Notes for OpenVMS Alpha Please read the following release notes for information about COBOL language support in OpenVMS Alpha DEBUG V6.1-000. (Also see the ap- pendix on tools in the DIGITAL COBOL User Manual.) If you are using a debugger newer than DEBUG V6.1-000, see the debug- ger release notes for information on corrections for some of the prob- lems listed below. 3.1.1 Restrictions Following are some restrictions with this debugger: o If you use the debugger to deposit data into Edited Picture vari- ables, an error message will be displayed and the deposit opera- tion will not be completed. The debugger session will not be com- promised, however, and may be continued after this error. The er- ror message is %DEBUG-F-BUG_CHECK, internal consistency check failure o The debugger divide operators for display numeric and packed dec- imal data items are not implemented. o When using the debugger, you may notice that variable names that contain underscores and hyphens may have been changed, under cer- tain circumstances. These problems have been corrected in the Open- VMS Alpha V7.1 debugger. Specifically, variable names that are "local" to your COBOL pro- gram (that is, names that are not visible to other separately com- piled program modules) have any underscores changed to hyphens when reported to the debugger. Thus, the data item "A_B" can only be ref- erenced as "A-B" in a debugging session. Names that are visible to other separately compiled program mod- ules (for example, EXTERNAL items, PROGRAM-ID names, etc.), have any hyphens in their names changed to underscores when reported to the debugger. Thus, the PROGRAM-ID name "SUBR-CALL" can only be ref- erenced as "SUBR_CALL" in a debugging session. 20 DIGITAL COBOL V2.5 Release Notes 3.2 Debugger Notes for DIGITAL UNIX The Ladebug debugger is the preferred debugger for applications built with DIGITAL COBOL for DIGITAL UNIX. 3.2.1 Features The following features are supported by the Ladebug debugger: o Specifying the following items using the COBOL language syntax: - Elementary and group identifiers, including subscripting and qual- ification - Numeric and non-numeric literals - Arithmetic expressions o Printing (examining values) of all COBOL datatypes is supported, using the debugger's "print" command. o Assigning new values to all datatypes is supported, using the de- bugger's "assign" command. However, there are some known problems with assigning in the debugger; see below. o Assignment may be from numeric literals or may be from other pro- gram items. o Array access is supported. o Simple arithmetic operations are supported, However, full COBOL ex- pression evaluation is not. As an example, the following simple ad- dition is supported: (ladebug) print itema + itemb 3.2.2 Restrictions Following are some restrictions with using Ladebug with DIGITAL COBOL programs: o Some Ladebug command usage is affected by COBOL language syntax (by, for example, the fact that COBOL item names may contain hyphens). This is true only when stopped within a COBOL procedure, however. One effect of this is that expressions typed on the debugger com- mand line must include spaces around arithmetic operators like "+" and "-". o Another effect of COBOL language syntax shows up in the debugger "memory-examine" command. For example, to look at the next 10 pro- gram instructions, you would normally use this debugger command: (ladebug) ./10i which says "from the current program location" (signified by the dot), examine the next 10 program locations (10 being the count) in instruction mode (signified by the "i"). When debugging COBOL programs, you would need to issue this com- mand as follows: (ladebug) ./10 i DIGITAL COBOL V2.5 Release Notes 21 with a space between the count and the mode indicator. o In specifying qualification of variables, only the "OF" qualifier keyword is supported, not the "IN" keyword. o Assignment to program items in the debugger: - Assigning new values to character string items (PIC X or PIC A) is not supported by this debugger. - The scales of the items involved must match. For example, given these declarations: 01 itema pic 9(9)v99. 01 itemb pic 9999v99. 01 bigitem pic 9(13)v9(5). the debugger will allow assignment of the values 1.23 or 8765.22 to itema, but will not allow assignment of the value 1.2 to itema. The following debugger commands are supported because the quan- tities on both sides of the assignment operator "=" have the same scale: (ladebug) assign itema = 1.23 (ladebug) assign itema = 8765.22 (ladebug) assign itema = itemb and the following debugger commands are not supported because the quantities involved are of different scales: (ladebug) assign itema = 1.2 (ladebug) assign bigitem = itema - Items cannot be assigned values of greater precision. Using the above declarations, the following debugger command is not sup- ported, because itema has greater precision than itemb: (ladebug) assign itemb = itema - When assigning to numeric edited items, the precisions of the quantities on both sides of the assignment must be the same. If the righthand value is a literal, leading zeros must be entered. - A numeric literal on the right side of an assignment to a dec- imal item must be between -2147483648 and +2147483647. If the receiving item has a scaling factor, this restriction still ap- plies as if the scaling factor of the receiving item were ap- plied to these boundary values. o Qualification involving more than one intervening level will pro- duce a debugger error if the intervening level is an OCCURS item. For example, 01 grp1. 05 array-group occurs 6 times. 10 array-element pic s99. 22 DIGITAL COBOL V2.5 Release Notes In the above group, "array-element" cannot be qualified (e.g. "array- element of array-group (subscript)" will get an error). However, "array-group of grp1 (subscript)" can be specified. Also array-element can be specified without qualification. o Using the above code example, there is a problem where the address of array-element(i) is computed incorrectly when more than one data item is present in the same structure (e.g. "array-group"). The ad- dress of element(i) should be computed using the stride value, but it is computed using the element size. Therefore, the address of array-element(i) will only be correct when the stride and the size have the same value (that is, when there is only one subordinate item in array-group). This problem if fixed with ladebug 4.0-44 or higher. o Subscripting is only supported for tables of one dimension. o Reference Modification is not supported by the debugger. o Stopping program execution at a program label (paragraph or sec- tion names) is not supported by the debugger. o The debugger does not correctly evaluate COBOL condition expres- sions. o Debugging support inside COPY files is not supported. Instead, the source-line cursor will point to the line with the COPY statement during the execution of the statements inside the COPY file. (Note that multi-line COPY statements will use the last line of the COPY statement for this display.) o The "whereis" command does not permit qualification or subscript- ing. o There may be problems accessing external data items. o Ladebug does not currently support Static Parameters. Therefore, LINKAGE SECTION items that are referenced in USE or REPORT WRITER procedures are conveyed to Ladebug as local static variables rather than as parameters. This only affects debugging commands that nor- mally include a program's parameter lists (dump, where, etc.). All other debugging commands (print, assign, etc.) will work as expected. o Printing arrays of PACKED-DECIMAL (COMP-3) data items and PIC X may have problems. However, such items can be printed if they are sub- ordinate to an OCCURS group item. In that case, the structure con- taining the OCCURS clause can be printed as a workaround. 3.3 Debugger Notes for Windows NT Alpha DIGITAL COBOL includes some support for two debuggers - WINDBG and De- veloper Studio. WINDBG is included with the DIGITAL COBOL kit. Following are some restrictions with debugging: o Certain uses of EXTERNAL result in a CVPACK warning during link. o Scaling is not supported in the debugger except for COMP-1 and COMP- 2. DIGITAL COBOL V2.5 Release Notes 23 o COMP-3 and DISPLAY numerics are not fully supported. o Unscaled COMP numerics with more than 16 digits are not supported. o Negative unscaled COMP numerics with more than 13 digits have lead- ing zeros preceding the minus sign when displayed. o User identifiers that include a hyphen or an underscore are not fully supported. o In the watch window, all variables must be entered in uppercase and qualification must be done using "." (e.g. GRP3.FLD1). o In the source window, evaluation by highlighting (if available in the debugger) of any lowercase variable names is not supported. o WINDBG displays three dialog boxes during startup of the debug ses- sion that must be dismissed. These dialog boxes can be eliminated by setting "Suppress" under "User DLLs" for APP01.EXE and KERNEL32.dll and the dll for the other dialog box. o COB$USE is displayed as the name of the main program in the call stack when declaratives are present. 24 DIGITAL COBOL V2.5 Release Notes 4 Documentation Notes 4.1 Documentation Changes and Updates ___________________________________________________________________ Version_______Description__________________________________________ V2.5-961 The DIGITAL COBOL Reference Manual now covers all 3 Al- pha platforms. V2.5-961 [DIGITAL UNIX] The DIGITAL COBOL Installation Guide for DIGITAL UNIX Systems includes one key update. DIGITAL UNIX V3.2G or higher is now required for DIGITAL COBOL V2.5. V2.5-961 [Windows NT] The DIGITAL COBOL Online Reference and the require Adobe Acrobat Reader. Adobe Acrobat Reader on Win- dows NT Alpha requires FX!32. Both Adobe Acrobat Reader and FX!32 are included in the DIGITAL COBOL kit, but are not automatically installed. See Chapter 1 in DIGITAL COBOL User Manual for Windows NT Alpha for additional instal- lation information. This manual is also included in hard- copy form with the kit. V2.5-961 [Windows NT] The documentation covers some features not available on Windows NT Alpha including: o ACCEPT/DISPLAY support for BLINK and color o cobfunc, cobcall, and cobcancel ___________________________________________________________________ 4.2 [Windows NT] Adobe Acrobat Reader Information required to use DIGITAL COBOL on Windows NT Alpha is lo- cated in the hardcopy user manual. In addition to this book, we have provided the user manual in an Adobe Acrobat Portable Document For- mat (PDF) file. Technical reference material about DIGITAL COBOL is provided in a separate PDF file. The Acrobat Reader provides you with the ability to read all DIGITAL COBOL documentation online while you are programming. With this reader you can: o View in a variety of ways to find the most comfortable reading size and format o Cut and paste o Print a selected range, a page, a selected range of pages, or the entire manual o Easily access information in a related publication through direct links o Do online searches DIGITAL COBOL V2.5 Release Notes 25 When you use the Acrobat Reader, most of the time your mouse cursor will resemble a hand. Whenever the hand turns into a pointing finger, a mouse click will take you directly to the referenced information, whether it is in the manual file you have open or in another file. When you click on a Bookmark, the Reader will jump to the appropri- ate page. Arrowheads in the list of Bookmarks show where there is an additional level of detail available. Click on a right-pointing ar- rowhead to expand the pointer to show an additional level of detail. 4.3 Feedback on Our Documentation DIGITAL appreciates your comments. If you would like to comment about the DIGITAL COBOL documentation, or if you should find errors in any part of it, please send the manual title, order number, and your com- ments by one of the following methods: o Your PTR account o Electronic Internet mail: cobol_docs@casdoc.enet.dec.com o FAX: 603-884-0120 Attn: Languages Documentation, ZKO2-3/K35 o A letter sent to the following address: Digital Equipment Corporation Languages Documentation, ZKO2-3/K35 110 Spit Brook Road Nashua, NH 03062-2698 USA 26 DIGITAL COBOL V2.5 Release Notes 5 Troubleshooting Tips If your program is not working as expected, here are some things to do: o If you have VAX COBOL, try /STANDARD=OPENVMS_AXP. o Try /NOOPT (-O0). /OPT (-O) and /NOOPT (-O0) are intended to pro- duce the same results (probably with different compile-time and run- time performance), but you may be able to eliminate a problem by compiling /NOOPT (-O0). Please report any differences you find with any level of optimization. o Try /CHECK (-check). The various /CHECK (-check) options can help you find some coding errors at run time. o Try /WARNINGS=ALL (-warn all). The various warnings might help iden- tify possible areas of the program to be investigated as potential sources of a problem. DIGITAL COBOL includes an informational diagnostic to help iden- tify arithmetic statements that may get different results from other COBOL compilers. The INTERMED diagnostic has the text: Possible truncation due to use of intermediate data item This indicates an expression for which DIGITAL COBOL introduces a floating point or COBOL Intermediate Temp intermediate data type. This diagnostic identifies places where binary or decimal floating- point arithmetic is being used instead of fixed-point arithmetic for intermediate computations. This can lead to unexpected final results and possibly results different from VAX COBOL. A statement that triggers this diagnostic should be examined. One option is to compile with [OpenVMS] COBOL/MATH_INTERMEDIATE=CIT3 [DIGITAL UNIX] cobol -math_intermediate cit3 [Windows NT] COBOL/MATH_INTERMEDIATE=CIT3 See section 2.1 for additional details on CIT3. Another option is to rewrite the expression using two or more sim- pler statements. This allows the user, who knows the intended ranges of values for the input operands, to specify the precision of in- termediates, resulting in expression evaluation that can be accom- plished using fixed-point arithmetic. o If the program is using a file created on a VAX, try /NOALIGNMENT (the default for DIGITAL COBOL). o There are two diagnostic tools to help acquire information on how to proceed with correcting alignment mismatches between a DIGITAL COBOL program and another program when they are sharing a record structure such as a file record structure: - /NOALIGNMENT/WARNINGS=ALL - /MAP=DECLARED/LIST DIGITAL COBOL V2.5 Release Notes 27 With /NOALIGNMENT/WARNINGS=ALL, you will receive warnings for all data whose allocation will change if /ALIGNMENT is used. This in- formation can be used with the listing produced with /MAP=DECLARED /LIST to determine which records might need to be differently aligned to be compatible with other programs that will be sharing files based on these records. There are two options for utilizing Alpha Natural Alignment and Padding for record formats: - /ALIGNMENT[=PADDING] - Alignment directives The alignment directives allow you to set different alignment op- tions for different records within the program's source file. o If you are having trouble reading a SEQUENTIAL or RELATIVE file cre- ated on OpenVMS, try moving the file to Windows NT Alpha or DIG- ITAL UNIX using FTP binary mode or ZIP. In addition, for RELATIVE files, you must specify no compression using the -0 option. If the file on OpenVMS is in VFC format (e.g., a file created with EXTERNAL or Report Writer or LINAGE on OpenVMS), you will need to skip over the VFC bytes when you read the file on Windows NT Al- pha or DIGITAL UNIX. Another option with DIGITAL COBOL on OpenVMS Alpha is to suppress the use of VFC with /NOVFC. o For Indexed files on OpenVMS, a key defined in the file but not the program is not considered a mismatch, and /CHECK=DUPLICATE_KEYS only considers this a mismatch if the key is declared both in the file and the program, and differs with respect to whether duplicates are allowed. For DIGITAL COBOL for DIGITAL UNIX, without -relax_key_ checking or Windows NT Alpha without /RELAX_KEY_CHECKING, a miss- ing key is always considered a mismatch, and with -relax_key_checking, it is not considered a mismatch for the keys to differ with respect to duplicates. In other words, to get consistent behavior with re- spect to duplicate key checking for all three supported platforms, specify all the keys in both the file and the program. o If the program is attempting to read multiple files from a tape, use OPEN WITH NOREWIND to get consistent results between VAX COBOL and DIGITAL COBOL. o If the program is compiled /STANDARD=V3 (-std v3), make sure that the program does not depend on the VAX COBOL /STANDARD=V3 features that are not supported by DIGITAL COBOL. These features can result in different behavior in the following situations: - When subscripts are evaluated in STRING, UNSTRING, and INSPECT (Format 3) statements and the REMAINDER phrase of the DIVIDE state- ment - When reference modification is evaluated in STRING, UNSTRING, and INSPECT (Format 3) statements - When the variable associated with the VARYING phrase is augmented in PERFORM... VARYING... AFTER statements (Format 4) - How PIC P digits are interpreted in some moves 28 DIGITAL COBOL V2.5 Release Notes - When the size of variable-length tables is determined /WARNINGS=ALL can help you determine the effects of /STANDARD=V3. For full information on the VAX COBOL implementation of /STANDARD=V3, see Appendix B in the DIGITAL COBOL User Manual for Windows NT Al- pha and the appendix on qualifiers in the VAX COBOL User Manual. In addition, FILE STATUS 02 with /STANDARD=V3 is handled differ- ently between VAX COBOL and DIGITAL COBOL. With VAX COBOL, if a record with a duplicate alternate key is written, FILE STATUS 02 is set and the DECLARATIVES procedure executes. With DIGITAL COBOL, FILE STATUS 02 is set, but the DECLARATIVES procedure does not execute. o If the program is calling or called by another module (whether the other module is written in COBOL or another language), make sure the other module is compiled using compatible alignment and float- ing points type for any arguments passed in the calls. For example, if a C module is compiled with the C equivalent of /NOALIGNMENT (the DIGITAL COBOL default) that is, "#pragma nomem- ber_alignment", then a DIGITAL COBOL module that calls or is called by that C module should be compiled /NOALIGNMENT. The DEC C default is MEMBER_ALIGNMENT. For compatibility with DEC C's "#pragma mem- ber_alignment", use /ALIGNMENT=PADDING or *DC SET PADALIGN . o If you encounter a problem possibly related to reserved words, use - /RESERVED_WORDS=NOXOPEN This allows use of the X/Open reserved words as though they were not reserved words. o When you compile a program with debugging also specify /NOOPTIMIZE to expedite your debugging session. Note that DEBUG sets -g2 -O0 with DIGITAL COBOL on DIGITAL UNIX and Windows NT Alpha. Optimiza- tion often changes the order of execution of statements in a pro- gram, and it may keep values in registers and deallocate user vari- ables. These effects can be confusing when you use the debugger. On OpenVMS Alpha, a diagnostic message warns you if you compile a DIGITAL COBOL program /DEBUG without specifying anything about op- timization on the command line. o There are various things to consider related to floating point (COMP- 1, COMP-2) support. DIGITAL COBOL supports IEEE floating on all Alpha platforms. In ad- dition, on OpenVMS Alpha, DIGITAL COBOL supports F, D, and G float- ing. VAX COBOL supports VAX F and VAX D floating. VAX D is not equiv- alent to the D float available on Alpha. See the DIGITAL COBOL User Manual for Windows NT Alpha for additional details on floating point support. Floating point results should not be tested for exact equality or inequality; many decimal values containing fractional digits can- not be represented exactly in binary floating point. Instead of test- ing that the value exactly equals (or does not equal) the expected result, test that the value is within some small range of the ex- pected result. DIGITAL COBOL V2.5 Release Notes 29 o There are several things to consider when using extended ACCEPT/DISPLAY. VAX COBOL and DIGITAL COBOL may use different escape sequences to update the screen. Also, the screen update behavior is not iden- tical between the products. If you attempt to use extended ACCEPT/DISPLAY with input redirected from a file and/or output redirected to a file, the operation be- tween VAX COBOL and DIGITAL COBOL is not identical. In general, the DIGITAL COBOL RTL attempts to use ANSI ACCEPT/DISPLAY to handle all ACCEPT/DISPLAYs in this situation. For example, if you use DISPLAY AT LINE or ACCEPT DEFAULT, the DIGITAL COBOL RTL will ignore the extensions (i.e. LINE and DEFAULT in these case) if you redirect output to a file and/or input from a file. Invalid decimal data checking with /CHECK=DECIMAL in DIGITAL COBOL is not 100% compatible with VAX COBOL's use of the VAX instructions to do invalid decimal data checking. o [OpenVMS] If the program uses floating point data from a file cre- ated on an OpenVMS VAX system with VAX COBOL, try /FLOAT=D_FLOAT. o [OpenVMS] If a file is accessed that contains G-float data, use /FLOAT=G_FLOAT; if the file contains IEEE-float data, use /FLOAT=IEEE_ FLOAT. o [OpenVMS] If you are using DEC C on OpenVMS Alpha, use $ CC/STANDARD=VAXC/FLOAT=D_FLOAT or $ COBOL/FLOAT=G_FLOAT The default for DEC C on OpenVMS Alpha is /FLOAT=G_FLOAT, while the default for DIGITAL COBOL is /FLOAT=D_FLOAT. Other languages such as DEC Pascal also have /FLOAT=G_FLOAT as the default. o [OpenVMS] If you are using /NATIONALITY=JAPAN, and you get the fol- lowing at run time %COB-F-BUG_CHECK, internal consistency check failure make sure you have /NATIONALITY=JAPAN support in the DEC$COBRTL.EXE you are using (i.e., V2.3 or higher). o [OpenVMS] On OpenVMS Alpha systems, if your application uses any of the following character attribute clauses with ACCEPT or DIS- PLAY statements: - BOLD or HIGHLIGHT - BLINKING or BLINK - UNDERLINED or UNDERLINE - REVERSED or REVERSE-VIDEO you may find that the screen scrolls unexpectedly when the termi- nal is in wrap mode and DIGITAL COBOL displays data in the lower right corner of the screen. 30 DIGITAL COBOL V2.5 Release Notes This behavior occurs when the data being displayed fits on the bot- tom line, but the control sequences which turn off the character attributes (and which DIGITAL COBOL appends to the data), extend past the end of the line. The unexpected scrolling is caused by the OpenVMS Alpha terminal driver because it interprets the control se- quences as normal data and performs wrapping when it reaches the end of the line. Screen scrolling may also occur if your application displays es- cape sequences when the cursor is in the lower right corner of the screen. Setting the terminal to nowrap mode will solve this prob- lem, or you can adjust the cursor's position prior to displaying the escape sequence. One solution to this problem is to set the terminal to nowrap mode using $ SET TERMINAL/NOWRAP If this is not an acceptable solution, adjust the placement and/or size of the item being accepted or displayed. o [DIGITAL UNIX] If your program gets the following ld failure: ld: /sbin/loader: Error: unresolvable symbol in /usr/shlib/libcob.so: _cobol_main You must call cob_init from your main C program. See the DIGITAL COBOL User Manual p. 12-22, Interprogram Communication for addi- tional details. o [DIGITAL UNIX] If your program is not linking correctly on DIGI- TAL UNIX and (for example) you get the following error: ld: Can't locate file for : -lcurses cobol: Severe: Failed while trying to link This is usually an indication of an installation problem. DIGITAL COBOL requires that the OSFPGMR subset be installed. To see if the OSFPGMR subset is installed use the following com- mand: /usr/sbin/setld -i | grep OSFPGMR o [DIGITAL UNIX, Windows NT] If you get an unexpected "file not found" error at run time, there are several things to check: - Make sure the file specification in the ASSIGN TO and VALUE OF ID clauses match exactly (no leading/trailing blanks, and so forth) the pathname you are trying to access. For DIGITAL UNIX, also make sure the file specification upper/lower case matches. - Make sure VALUE OF ID names are set up as environment variables if you had previously used VALUE OF ID to specify an OpenVMS log- ical name. - Make sure any filenames with ".DAT" are explicitly specified with ".DAT" in the ASSIGN TO and VALUE OF ID clauses (VAX COBOL and DIGITAL COBOL on OpenVMS Systems supply ".DAT" if no file ex- tension is specified). DIGITAL COBOL V2.5 Release Notes 31 - Make sure you are not trying to open an INDEXED file as you would with ORGANIZATION SEQUENTIAL or ORGANIZATION RELATIVE. o [DIGITAL UNIX, Windows NT] If you get an unexpected "indexed keys do not match" error at run time, make sure that you have specified all the keys just as they were specified when the file was created. Consider the use of -rkc (/RELAX_KEY_CHECKING) if you want to spec- ify fewer DISPLAY (PIC X) keys than when the file was created or change the use of DUPLICATES for one of the keys. o [DIGITAL UNIX, Windows NT] F, D, and G floating are not supported on DIGITAL UNIX and Windows NT. o [Windows NT] If you are trying to run a program from OpenVMS and the file specifications in the ASSIGN clause and/or VALUE OF ID clause contain an OpenVMS logical, the DIGITAL COBOL runtime will attempt to translate it to a Windows NT environment variable, so no source changes will be required. For example, if you use the following state- ment: SELECT PAYROLL-FILE ASSIGN TO "PAYDIR2:PAYFILE.DAT" on Windows NT Alpha you can define an environment variable to in- dicate the device and directory where PAYFILE.DAT resides as fol- lows: set PAYDIR2=c:\proj\pay\data2\ When the program is run, the resultant file specification for which the OPEN will be attempted is c:\proj\pay\data2\PAYFILE.DAT. If PAY- DIR2 is not defined as an environment variable, the results of the OPEN are undefined. o [Windows NT] If you get cobrtl: severe: access violation and you are using COBOL /LINK, make sure that all files which in- clude COBOL modules are specified before /LINK. o [Windows NT] If you are unable to cut and paste the Interactive Com- piler Driver command line to/from a DOS command window, do the fol- lowing: 1. Right mouse click on the title bar of the DOS command window 2. Select Properties 3. Select Quick Edit Mode 32 DIGITAL COBOL V2.5 Release Notes 6 DIGITAL COBOL / VAX COBOL Compatibility Matrix Legend ------------------------------- x = Available today N = Not supported P = Partial support ------------------------------- ___________________________________________________________________ VAX DIGITAL COBOL COBOL _______(DEC_COBOL)______ Windows OpenVMS OpenVMS DIGITAL NT VAX Alpha UNIX Alpha ___________________________________V5.4____V2.5_____V2.5____V2.5___ ANSI-85/-89 HIGH x x x x ORGANIZATION INDEXED x x x x Tape handling x x x N Segmented keys x x x x /CHECK=DUPLICATE_KEYS x x N N Relaxed key checking N N x x RMS segmented keys x x N N RMS special registers x x N N RMS APPLY extensions x x N N /STANDARD=V3 x P P P ANSI-74 FILE STATUS support x x x x VFU x N N N Print control files with VFC x x N N Print control files without VFC N x x x ISAM READ PRIOR/START LESS N x x x VAX/DEC COBOL ACCEPT/DISPLAY exten-x x x x sions VAX/DEC COBOL ACCEPT/DISPLAY BLINK x x x N support ACCEPT/DISPLAY WITH CONVERSION x x x x ACCEPT/DISPLAY VT52 support x N N N ACCEPT/DISPLAY VT{1,2,3,4}xx sup- x x x N port ACCEPT support for 4 digit years N x x x VAX/DEC COBOL file sharing / rec loxk- x P P ing UCX/NFS support (nolocking) N N x x FUNCTION ARGCOUNT x x N N Little-endian COMP data x x x x F,D floating x x N N DIGITAL COBOL V2.5 Release Notes 33 ___________________________________________________________________ VAX DIGITAL COBOL COBOL _______(DEC_COBOL)______ Windows OpenVMS OpenVMS DIGITAL NT VAX Alpha UNIX Alpha ___________________________________V5.4____V2.5_____V2.5____V2.5___ G floating N x N N IEEE S,T floating N x x x Floating point "E" literal x x x x Extended precision intermediates x x x x Pointer data x x x x 64-bit pointers N N x N Invalid decimal data checking P P P P X/Open RETURN-CODE N x x x X/Open COMP-5/COMP-X N x x x X/Open LINE SEQUENTIAL N x x x X/Open ASSIGN TO N x x x X/Open SCREEN SECTION N x x x X/Open SCREEN SECTION screen han- N x x x dling X/Open SCREEN SECTION color N x x N X/Open file sharing / rec locking N x x x X/Open environment variables N x x x X/Open command line N x x x /CHECK=(PERFORM,BOUNDS) x x x x VAX-compatible alignment x x x x Alpha natural alignment / padding N x x x /[NO]SEPARATE_COMPILATION P x N N I18N (PIC N, etc.) x x x x CALL USING BY DESCRIPTOR x x N N cobfunc, cobcall, and cobcancel N x x N Reformat x x x x Terminal source format x x x x Lowercase, -/_ in source x x x x IDENT x x N N Sample Application - Client/Server N N N x Oracle CDD/DML support x x N N Transarc Encina (-tps) support N N x N DECset PCA,LSE/SCA support x x N N DECset PDF support x N N N FUSE support N N x N Interactive compiler driver N N N x Symbolic debugger support x x x x Docs - UM/RM/IG/RN (IG in NT UM) x x x x 34 DIGITAL COBOL V2.5 Release Notes ___________________________________________________________________ VAX DIGITAL COBOL COBOL _______(DEC_COBOL)______ Windows OpenVMS OpenVMS DIGITAL NT VAX Alpha UNIX Alpha ___________________________________V5.4____V2.5_____V2.5____V2.5___ Docs - Client/Server N N N x Docs - DML (in UM for VAX COBOL) x x N N Docs - online help x x x x Docs - UM/RM .DECW$BOOK or .PDF x x x x ___________________________________________________________________ DIGITAL COBOL V2.5 Release Notes 35 7 Providing Product Feedback If you have comments, suggestions, or questions about DIGITAL COBOL or VAX COBOL, or if you are interested in signing up to field test a future version of DIGITAL COBOL or VAX COBOL, please use your PTR ac- count. If you are unable to use your PTR account, send Internet mail to: cobol_ft@packed.enet.dec.com For general information about DIGITAL COBOL or VAX COBOL, check our web site at http://www.openvms.digital.com/commercial/cobol We are interested in your feedback both on the capabilities of DIG- ITAL COBOL V2.5 and on future capabilities you would like to see in DIGITAL COBOL or VAX COBOL. When reporting a problem to DIGITAL, please supply as much of the fol- lowing information as you can: o Description of the problem o Version of the product o Version of the operating system and other related software o Sample source file which can be used to duplicate the problem o Run-time call stack from the debugger if you are reporting an ab- normal runtime termination o Command line used to produce the problem You can report problems via Internet mail, but use your regular DIG- ITAL support channel if you are reporting a problem and you need a re- sponse back when the problem is resolved. 36 DIGITAL COBOL V2.5 Release Notes