=========================================================================
M I C R O F O C U S
V4.1.10
Running Under The DG/UX
Operating System Version R4.11MU03
On The AViiON
=========================================================================
DOCUMENTATION UPDATE NOTES
==========================
TABLE OF CONTENTS
=================
INTRODUCTION
CHANGES TO BOOKS
INTRODUCTION
============
The purpose of this document is explained in the main release notes.
For clarity, the notation and layout in this document are slightly
different from those in the books. For example, headings are underlined
and command lines are indented. Parameters in command lines (which in the
printed books are in italics) are here enclosed in < >.
This document is updated at each maintenance release. A line under each
entry shows the release when it was first included.
CHANGES TO BOOKS
================
Language Reference
==================
Chapter 1 (Introduction)
------------------------
o Page 1-1. Section "The COBOL Language". Second paragraph. Replace
the first sentence with the following:
This COBOL implementation is a superset of the ANSI and ISO
COBOL standard as specified in ANSI X3.23-1974 (ISO 1989-1978)
and of the current ANSI and ISO COBOL standard as specified in
ANSI X3.23-1985 (IS 1989:1985), ANSI X3.23a-1989
(IS 1989:1985/AM1), and ANSI X3.23b-1993 (IS 1989:1985/AM2).
-added V4.0.07
Chapter 4 (Program Definition)
------------------------------
o Page 4-58. Section "Input-Output Section", subsection "The
FILE-CONTROL Entry", General Rules. Change the last sentence of
general rule 36 to read as follows:
This checking is configurable in some environments. (See the
KEYCHECK attribute in the Callable File Handler configuration
file, which is documented in the section "Configuring the
Callable File Handler" of the "Programmer's Guide to File
Handling".)
o Page 4-127. Section "The RECORDING MODE Clause". General Rule 2.
Change the rule to read as follows:
2. The "U" option is documentary only.
o Page 4-129. Section "The REDEFINES Clause". Syntax Rule 5. Second
paragraph. Remove the OSVS dialect bubble. Add the following text to
the beginning of the third paragraph:
"If the level number is 01, "
o Page 4-165. Section "The BACKGROUND-COLOR Clause". General Rule 2.
Add a second column of numbers to the right of the first column, as
follows:
8 grey
9 light blue
10 light green
11 light cyan
12 light red
13 light magenta
14 yellow
15 high intensity white
Beneath that table add the following paragraph, not indented:
On a color screen, if the value is from 8 to 15, this is
equivalent to specifying an integer from 0 to 7 and specifying
the BLINK clause. On a monochrome screen, this is equivalent to
simply specifying the BLINK clause.
o Page 4-179. Section " The FOREGROUND-COLOR Clause". General Rules 2.
Add a second column of numbers to the right of the first column, as
follows:
8 grey
9 light blue
10 light green
11 light cyan
12 light red
13 light magenta
14 yellow
15 high intensity white
Beneath that table add the following paragraph, not indented:
On a color screen, if the value is from 8 to 15, this is
equivalent to specifying an integer from 0 to 7 and specifying
the HIGHLIGHT clause. On a monochrome screen, this is equivalent
to simply specifying the HIGHLIGHT clause.
o Page 4-195. The PROMPT Clause. Section "General Rules". Replace
General Rule 1 with the following:
1. For items in the screen section:
a. PROMPT is always on.
b. If the PROMPT clause is not specified, or is specified
without the CHARACTER phrase, the default prompt
character is used.
o Renumber existing General Rules 2 and 3 as General Rules 3 and 4,
respectively.
o Add the following as a new General Rule 2:
2. For other data items referenced in an ACCEPT statement:
a. PROMPT is on if and only if the PROMPT clause is
specified on the ACCEPT statement.
b. If the PROMPT clause is specified without the CHARACTER
phrase, the default prompt character is used.
o Page 4-196. The PROMPT Clause. Section "General Rules". Renumber
existing General Rules 4,5 and 6 as General Rules 5, 8 and 9,
respectively.
o Add the following new General Rules 6 and 7:
6. If PROMPT is on for a field, you cannot move the cursor past
the end of the field, which is marked by prompt characters.
An attempt to do so will move the cursor to the next field.
7. If PROMPT is not on for a field, the cursor can be moved to
the spaces following the end of the field.
o Page 4-217. The PROCEDURE DIVISION Header. Section "General Rules".
Subsection "Format 2". Add an asterisk immediately after the rule
number for General Rule 15.
o Page 4-260. Intrinsic Functions. Section "Value Returned by a
Function". Second paragraph. Replace the final sentence with the
following:
If, at the time a function is referenced, the arguments
specified for that reference do not have values that comply
with the specified constraints, the result of such a reference
is undefined.
o Page 4-260. Move the section "Date Conversion Functions" from page
4-262 to the bottom of page 4-262. Add a new section after this
relocated section as follows:
Trigonometric Functions
-----------------------
Trigonometry deals with the relationships among the sides of a
triangle and its angles. An angle can be measured in degrees,
radians or Gon (grad). Since a computer usually generates
trigonometric values by series approximation, the angle is
specified in radians when used as the argument to the SIN, COS,
and TAN functions or as the returned value from the ASIN, ACOS,
and ATAN functions.
A radian is an arc of a circle whose length is equal to the
circle's radius. Since the relationship between a circle's radius
and circumference is C = 2 * pi * r and there are 360 degrees in
a circle, we can derive from 360 = 2 * pi * r, that the values
for conversion are:
1 radian = 180/pi = 57.295780 degrees
1 degree = pi/180 = 0.01745329 radians.
Another scale that is sometimes used to measure angles is Gon,
also known as grad. The values for conversion are:
1 radian = 200/pi = 63.661977 Gon (grad)
1 Gon (grad) = pi/200 = 0.01570796 radians.
o Page 4-261. Intrinsic Functions. Section "Arguments". First
paragraph after the numbered list. Replace the final sentence with
the following:
If, at the time a function is referenced, the arguments
specified for that reference do not have values within the
permissible range, the result of such a reference is
undefined.
o Page 4-261. Intrinsic Functions. Section "Arguments". Fifth
paragraph after the numbered list. Replace the final sentence with
the following:
The evaluation of an ALL subscript must result in at least one
argument, otherwise the result of the reference to the
function-identifier is undefined.
o Page 4-263. In the table of functions, insert the following three
entries in the appropriate alphabetical position.
Function name Arguments Type Value Returned
===========================================================
DATE-TO-YYMMDD Int1 Int Argument-1 converted Int2
from YYMMDD to YYYYMMDD
based on the value of
argument-2
DAY-TO-YYYYDDD Int1 Int Argument-1 converted Int2
from YYDDD to YYYYDDD
based on the value of
argument-2
YEAR-TO-YYYY Int1 Int Argument-1 converted from
Int2 YY to YYYY based on the
value of argument-2
-added V4.1.06
o Page 4-269. The ACOS Function. Add a note after Returned Value
rule 1 as follows:
Note: Conversion factors from radians to degrees and Gon
(grad) are specified in the section "Trigonometric
Functions" of this chapter.
o Page 4-271. The ASIN Function. Add a note after Returned Value
rule 1 as follows:
Note: Conversion factors from radians to degrees and Gon
(grad) are specified in the section "Trigonometric
Functions" of this chapter.
o Page 4-272. The ATAN Function. Add a note after Returned Value
rule 1 follows:
Note: Conversion factors from radians to degrees and Gon
(grad) are specified in the section "Trigonometric
Functions" of this chapter.
o Page 4-275. The COS Function. Add a note after Argument rule 1 as
follows:
Note: Conversion factors from degrees and Gon (grad) to
radians are specified in the section "Trigonometric
Functions" of this chapter.
o Page 4-279. Insert a new section as follows:
The DATE-TO-YYYYMMDD Function
Description:
The DATE-TO-YYYYMMDD function converts argument-1 from the form
YYnnn to the form YYYYnnn. Argument-2, when added to the year at
the time of execution, defines the ending year of a 100-year
interval, or sliding window, into which the year of argument-1
falls.
The type of this function is integer.
General Format:
FUNCTION DATE-TO-YYYYMMDD ( argument-1 [argument-2] )
Arguments:
1. Argument-1 is a positive integer less than 1,000,000.
2. Argument-2 is an integer.
3. If argument-2 is omitted, the function is evaluated as though
50 were specified.
4. The sum of the year at the time of execution and the value of
argument-2 is less than 10,000 and greater than 1699.
Returned Values:
1. The equivalent arithmetic expression is:
(FUNCTION YEAR-TO-YYYY (YY, argument-2) * 10000 + nnnn)
where:
YY = FUNCTION INTEGER (argument-1/10000)
nnnn = FUNCTION MOD (argument-1, 10000)
and where argument-1 of the INTEGER and MOD functions and
argument-2 of the YEAR-TO-YYYY function are the same as
argument-1 and argument-2 of the DATE-TO-YYYYMMDD function
itself.
Notes:
1. In the year 2002 the returned value for FUNCTION
DATE-TO-YYYYMMDD (851003, 10) is 19851003. In the year 1994
the returned value for FUNCTION DATE-TO-YYYYMMDD (961002,
(-10)) is 18981002.
2. This function supports a sliding window algorithm. See the
notes for the YEAR-TO-YYYY function for a discussion of how
to specify a fixed window.
-added V4.1.06
o Page 4-280. Insert a new section as follows:
The DAY-TO-YYYYDDD Function
Description:
The DAY-TO-YYYYDDD function converts argument-1 from the form
YYnnn to the form YYYYnnn. Argument-2, when added to the year at
the time of execution, defines the ending year of a 100-year
interval, or sliding window, into which the year of argument-1
falls.
The type of this function is integer.
General Format:
FUNCTION DAY-TO-YYYYDDD ( argument-1 [argument-2] )
Arguments:
1. Argument-1 is a positive integer less than 100,000.
2. Argument-2 is an integer.
3. If argument-2 is omitted, the function is evaluated as
though 50 were specified.
4. The sum of the year at the time of execution and the value of
argument-2 is less than 10,000 and greater than 1699.
Returned Values:
1. The equivalent arithmetic expression is:
(FUNCTION YEAR-TO-YYYY (YY, argument-2) * 1000 + nnn)
where:
YY = FUNCTION INTEGER (argument-1/1000)
nnn = FUNCTION MOD (argument-1, 1000)
and where argument-1 of the INTEGER and MOD functions and
argument-2 of the YEAR-TO-YYYY functions are the same as
argument-1 and argument-2 of the DAY-TO-YYYYDDD function
itself.
Notes
1. In the year 2002 the returned value for FUNCTION
DAY-TO-YYYYDDD (10004,20) is 20101004. In the year 1994 the
returned value for FUNCTION DAY-TO-YYYYDDD (95005, (-10)) is
1995005.
2. This function supports a sliding window algorithm. See the
notes for the YEAR-TO-YYYY function for a discussion of how
to specify a fixed window.
-added V4.1.06
o Page 4-315. The SIN Function. Add a note after Argument rule 1 as
follows:
Note: Conversion factors from degrees and Gon (grad) to
radians are specified in the section "Trigonometric
Functions" of this chapter.
o Page 4-319. The TAN Function. Add a note after Argument rule 1 as
follows:
Note: Conversion factors from degrees and Gon (grad) to
radians are specified in the section "Trigonometric
Functions" of this chapter.
o Page 4-325. Insert a new section as follows:
The YEAR-TO-YYYY Function
Description:
The YEAR-TO-YYYY function converts argument-1, the two low-order
digits of a year, to a four-digit year. Argument-2, when added to
the year at the time of execution, defines the ending year of a
100-year interval, or sliding window, into which the year of
argument-1 falls. The type of this function is integer.
General Format:
FUNCTION YEAR-TO-YYYY ( argument-1 [argument-2] )
Arguments:
1. Argument-1 is a nonnegative integer less than 100.
2. Argument-2 is an integer.
3. If argument-2 is omitted, the function is evaluated as
though 50 were specified.
4. The sum of the year at the time of execution and the value of
argument-2 is less than 10,000 and greater than 1699.
Returned Values:
1. Maximum-year is calculated as follows:
(FUNCTION NUMVAL (FUNCTION CURRENT-DATE (1:4)) + argument-2)
where argument-2 of the NUMVAL function is the same as
argument-2 of the YEAR-TO-YYYY function itself.
2. The equivalent arithmetic expression is:
a) When the following condition is true:
(FUNCTION MOD (maximum-year, 100) > = argument-1)
The equivalent arithmetic expression is:
argument-1 + 100 * (FUNCTION INTEGER (maximum-year/100))
b) Otherwise, the equivalent arithmetic expression is:
argument-1 +
100 * (FUNCTION INTEGER (maximum-year/100) - 1)
Notes:
1. In the year 1995, the returned value for FUNCTION
YEAR-TO-YYYY (4, 23) is 2004. In the year 2008 the returned
value for FUNCTION YEAR-TO-YYYY (98, (-15)) is 1898.
2. The YEAR-TO-YYYY function implements a sliding window
algorithm. To use it for a fixed window, argument-2 can be
specified as follows, where fixed- maximum-year is the
maximum year in the fixed 100-year intervals.
(fixed-maximum-year -
FUNCTION NUMVAL (FUNCTION CURRENT-DATE (1:4)))
If the fixed window is 1973 through 2072, then in 2009
argument-2 has the value 63 and in 2019, the value 53.
o Page 4-325. For Format 2 of the ACCEPT Statement, in the format
diagram add the following day and date formats to the lines for DATE
and DAY, so that they read:
DATE [YYYYMMDD]
DAY [YYYYDDD]
-added V4.1.06
o Page 4-329. Section "The ACCEPT Statement". Syntax Rules. Replace
rule 7 with the following text, boxed and marked with the same
dialect information as the original:
7. Identifier can be of any class, category or usage, including
an internal floating-point or external floating point item.
o Page 4-332. For Format 2 of the ACCEPT Statement, replace
General Rule 9 with the following:
9. DATE, without the phrase YYYYMMDD, is composed of the data
elements year of the current century, month of the year,
and day of the month. DATE, without the phrase YYYYMMDD,
when accessed by a COBOL program, behaves as if it had
been described as an unsigned elementary integer data item
of usage display six digits in length, the character
positions of which, numbered from left to right, are:
Char Contents
---- --------
1-2 The two right-most numeric characters of the year in
the Gregorian calendar.
3-4 Two numeric characters of the month of the year in
the range 01 through 12.
5-6 Two numeric characters of the day of the month in the
range 01 through 31.
-added V4.1.06
o Page 4-333. For Format 2 of the ACCEPT Statement, add the following
new General Rule 10:
10. DATE, with the phrase YYYYMMDD, is composed of the data
elements year in the Gregorian calendar, month of the year,
and day of the month. DATE, with the phrase YYYYMMDD, when
accessed by a COBOL program, behaves as if it had been
described as an unsigned elementary integer data item of
usage display eight digits in length, the character positions
of which, numbered from left to right, are:
Char Contents
---- --------
1-4 Four numeric characters of the year in the Gregorian
calendar.
5-6 Two numeric characters of the month of the year in
the range 01 through 12.
7-8 Two numeric characters of the day of the month in the
range 01 through 31.
-added V4.1.06
o Page 4-332. For Format 2 of the ACCEPT Statement, replace
the old General Rule 10 with the following new rule 11:
11. DAY, without the phrase YYYYDDD, is composed of the data
elements year of the current century and day of the year.
DAY, without the phrase YYYYDDD, when accessed by a COBOL
program, behaves as if it had been described as an unsigned
elementary integer data item of usage display five
digits in length, the character positions of which, numbered
from left to right, are:
Char Contents
---- --------
1-2 The two right-most numeric characters of the year in
the Gregorian calendar.
3-5 Three numeric characters of the day of the year in
the range 01 through 366.
-added V4.1.06
o Page 4-333. For Format 2 of the ACCEPT Statement, add the following
new General Rule 12 before the old rule 11, and renumber the
subsequent rules:
12. DAY, with the phrase YYYYDDD, is composed of the data
elements year in the Gregorian calendar and day of the year.
DAY, with the phrase YYYYDDD, when accessed by a COBOL
program, behaves as if it had been described as an unsigned
elementary integer data item of usage display seven
digits in length, the character positions of which, numbered
from left to right, are:
Char Contents
---- --------
1-4 Four numeric characters of the year in the Gregorian
calendar.
5-7 Three numeric characters of the day of the year in
the range 01 through 366.
-added V4.1.06
o Page 4-335. The ACCEPT Statement. General Rules. Add the following
new General Rule after General Rule 21, and renumber the subsequent
General Rules accordingly:
22. Prior to the execution of this ACCEPT statement, a DISPLAY
statement which specifies the same screen-name or
identifier-1 as is specified in this ACCEPT statement must
have been executed. There must not have been any ACCEPT or
DISPLAY statement executed since then.
o Page 4-335. Section "The ACCEPT Statement". General Rules. Add the
following new general rule between rules 25 and 26 and renumber the
rules that follow:
26. If identifier-1 is a group item that has a
variable-occurrence data item subordinate to it, the ACCEPT
statement acts as if the MODE IS BLOCK clause were specified.
o Page 4-427. The MERGE Statement. General Format. Modify the syntax
diagram as follows:
After the word "KEY", insert the word "IS", all capitals, no
underline, boxed and marked with the OSVS dialect bubble.
o Page 4-457. The PERFORM Statement. Syntax Rules. Add a heading for
Format 3 immediately before the heading "Formats 3 and 4". Add the
following new rule under this new heading and renumber subsequent
rules as appropriate:
6. If the TEST phrase is specified, the EXIT phrase must not be
specified.
o Page 4-503. Section "The SET Statement". General Rules. Format 5. In
Table 4-17, change all occurrences of the digit 9 to read 11.
o Page 4-506. The SORT Statement. General Format. Modify the syntax
diagram for Format 1 as follows:
After the word "KEY", insert the word "IS", all capitals, no
underline, boxed and marked with the OSVS dialect bubble.
o Page 4-513. The SORT Statement. General Rule 11a. Change the second
sentence to read:
The initiation is performed as if an OPEN statement with the
INPUT and the WITH LOCK phrases had been executed.
o Page 4-542. The USE Statement, general formats, formats 2 and 3.
Change the curly braces around BEGINNING and END to square brackets,
add EXTEND to the end of the stack that is in braces at the end of
the format, and insert [GLOBAL] immediately after USE. (Underline
the word GLOBAL and enclose it in square brackets.)
o Page 4-542. The USE Statement, general formats, format 3.
Underline the word USE.
o Page 4-544. The USE Statement, general rules. Renumber general
rule 8 as rule 9 and replace general rule 7 with the following:
7. If the BEGINNING phrase is specified explicitly or
implicitly, the following actions are taken during the
execution of an applicable OPEN statement:
Open Mode Action
--------- ------
INPUT Read header labels
Execute beginning declarative
OUTPUT Execute beginning declarative
Write header labels
I/O Read header labels
Execute beginning declarative
Write header labels
EXTEND Read header labels
Execute beginning declaratives (trailer
labels treated as header)
Write header labels
o Page 4-544. The USE Statement, general rules. Add the following new
general rule 8:
8. If the ENDING phrase is specified explicitly or implicitly,
the following actions are taken during the execution of an
applicable CLOSE statement:
Open Mode Action
--------- ------
INPUT Read trailer labels
Execute ending declarative
OUTPUT Execute ending declarative
Write trailer labels
I/O Read trailer labels
Execute ending declarative
Write trailer labels
EXTEND Execute ending declaratives
Write trailer labels
Chapter 5 (Object COBOL Language Extensions)
--------------------------------------------
o Page 5-2. Section "Directives". Change the description of the +N
switch in the second column of the list to read as follows:
Enables the use of the syntax FACTORY, END FACTORY, CLASS-OBJECT,
and END CLASS-OBJECT.
-added V4.0.07
o Page 5-2. Section "Directives". Change the description of the +W
switch in the second column of the list to read as follows, leaving
the note unchanged:
Uses Working-Storage to mean Object-Storage in instances and
class objects. Uses Working-Storage to mean Local-Storage in
methods. If -N is also set, uses Working-Storage to mean
Object-Storage in classes.
When Working-Storage is used to mean Local-Storage or
Object-Storage, a Local-Storage or Object-Storage Section,
respectively, must not be specified.
-added V4.0.07
o Page 5-8. Section "Class-object". Replace the existing syntax with
the following, immediately after the heading "General Format":
Format 1
--------
Note: This is the preferred syntax.
[IDENTIFICATION DIVISION.]
-------------- --------
FACTORY.
-------
[data-division]
[PROCEDURE DIVISION.]
--------- --------
[method-1]...
END FACTORY.
--- -------
Format 2
--------
[IDENTIFICATION DIVISION.]
-------------- --------
CLASS-OBJECT.
------------
[data-division]
[PROCEDURE DIVISION.]
--------- --------
[method-1]...
END CLASS-OBJECT.
--- ------------
-added V4.0.07
Chapter 6 (Compiler-directing Statements)
-----------------------------------------
o Page 6-12. General Rule 14. Replace the second paragraph with the
following:
To use this type of "partial word replacement" the portion of
the words to be modified must be enclosed either:
a. in pairs of left and right parentheses. For example, (ABC)
or
b. within colons. For example, :XYZ: is a valid candidate.
Only paragraph b. of the rule should be boxed and marked with the
ANS85 dialect bubble.
Appendix A (Syntax Summary for COBOL Features)
----------------------------------------------
o Page A-25. Section headed "General Format for Intrinsic Functions".
Add the following five functions, boxed with an ANS85 dialect bubble,
to the end of the list of Intrinsic Functions:
FUNCTION SUM ({argument-1}...)
-------- ---
FUNCTION TAN (argument-1)
-------- ---
FUNCTION UPPER-CASE (argument-1)
-------- ----------
FUNCTION VARIANCE ({argument-1}...)
-------- --------
FUNCTION WHEN-COMPILED
-------- -------------
-added V4.0.07
o Page A-58. Section headed "Class-object". Replace the syntax
immediately after the heading "General Format" with the following:
Format 1
--------
[IDENTIFICATION DIVISION.]
-------------- --------
FACTORY.
-------
[data-division]
[PROCEDURE DIVISION.]
--------- --------
[method-1]...
END FACTORY.
--- -------
Format 2
--------
[IDENTIFICATION DIVISION.]
-------------- --------
CLASS-OBJECT.
------------
[data-division]
[PROCEDURE DIVISION.]
--------- --------
[method-1]...
END CLASS-OBJECT.
--- ------------
-added V4.0.07
Appendix D (Reserved Words)
---------------------------
o Page D-8. Entry for reserved word FUNCTION, change:
VS( 3,4)
to:
...
Language Reference - Additional Topics
======================================
Chapter 1 (Report Writer)
-------------------------
o Page 1-10. Section "The Report Clause". Syntax Rules. Add a second
sentence to syntax rule 2 as follows, boxed and marked with an OSVS
dialect bubble:
A report-name may appear in two REPORT clauses.
Chapter 11 (Microsoft COBOL V1.0 and V2.0 Syntax Support)
---------------------------------------------------------
o Page 11-4. Data Division. The USAGE Clause. Delete General Rule 1.
Renumber the remaining rules. In General Rule 2 (old rule 3)
replace "S9(5)" with "S9(4)".
Error Messages
==============
Chapter 2 (Syntax Checking Messages)
------------------------------------
o Page 2-28. Add the following message:
164 More than 20 USE GLOBAL statements.
o You have used more than 20 USE GLOBAL statements in a
program. There is a system limit of 20 USE GLOBAL statements
in a program.
o Page 2-28. Add the following message:
195 ASCENDING/DESCENDING KEY clause must appear before INDEXED BY
clause
o Your selected flagging dialect does not support reversing the
order of these clauses in the OCCURS phrase of a data item
definition.
-added V4.1.06
o Page 2-76. Add the following message:
755 Special register used with ACCEPT/DISPLAY/EXHIBIT
or CALL statement
o Your program contains an ACCEPT, DISPLAY, EXHIBIT or CALL
statement that uses special registers.
o Page 2-76. Add the following message:
795 END PROGRAM <program-name> missing
o The END PROGRAM <program-name> statement is missing from a
nested program.
Chapter 3 (Code Generation Messages)
------------------------------------
o Page 3-15. Replace the description of code generation error 078 with
the following:
078 Too many code relocations (limit = <limit>, actual
= <relocations>) (Recoverable)
o You tried to compile a program that resulted in more
than 65535 relocation entries.
o To prevent the message being displayed, recompile the
program specifying the FIXOPT Compiler directive.
See also:
FIXOPT Compiler directive
-added V4.1.10.
Chapter 4 (Run-time System Messages)
------------------------------------
o Page 4-5. Add the following at the bottom of the page:
Return-code Values
------------------
The run-time system always returns a value to the operating
system when a COBOL program terminates. If the program terminates
normally, the value is taken from the program's special register
RETURN-CODE If the run-time system terminates the program because
an unrecoverable error has occurred or because it has received a
message from the operating system to quit immediately, the value
returned depends on the operating system as described below.
DOS, Windows and OS/2
The value returned is 32 for a run-time system error and 16
for a quit interrupt when running under DOS, Windows or OS/2. A
keyboard quit interrupt is generated when the user presses Ctrl +
Break. Use the if command with the errorlevel parameter to test
the returned value, as shown in the following batch file
fragment:
run myprog
if errorlevel 32 goto rts_error
if errorlevel 16 goto rts_interrupt
UNIX
The run-time system returns a value of -1 for a run-time system
error and -2 for an abnormal termination on receiving the UNIX
quit or kill signal. Typically, many UNIX implementations
translate the value of -1 to the unsigned value 255, and the
value -2 to the unsigned value 254. You can configure the RTS to
ignore quit or kill signals generated from the keyboard by using
the run-time switch i (see your COBOL System Reference chapter
Running for further details). Use the Bourne shell special
parameter ? to obtain the value returned to the operating system,
as shown in the following shell script fragment:
cobrun prog
if test
-modified V4.1.10
o Page 4-8. Add a new message before message 012 as follows:
011 Process limit reached (Fatal)
o One of the following has occurred:
- The Run-Time System cannot create a new process as the
operating system limit on the total number of processes per
user or system-wide would be exceeded.
- Insufficient memory is available to complete the
operation.
o You should terminate any processes that you are no longer
using, or make more memory available.
Your operating system might enable you to increase the
maximum number of processes allowed. Refer to your operating
system documentation for further information.
-added V4.1.06
o Page 4-14. In the explanation for error 040, add a side
heading of "DOS, Windows, and OS/2" to the final paragraph.
Replace "Use" with:
On DOS, Windows and OS/2, use
o Page 4-25. Message 135 should read:
135 File not found (Recoverable)
o Depending on the version of utils.lbr that you have
installed, this message might be displayed as "File must not
exist"; however, the meaning is still intended to be "File
not found".
o Page 4-30. In the explanation of message 165 add at the end:
o Tried to load a module whose format is invalid for this
operating system.
o Page 4-39. Add new messages before message 206 as follows:
204 Mainframe Pointer Manager (MFPM) module is required but not
loaded (Recoverable)
o An attempt has been made using the 16-bit Run-Time System
to call a program compiled with the AMODE(24) or AMODE(31)
compiler directive, but the Mainframe Pointer Manager (MFPM)
module has not been loaded.
o Add MFPM to the list of programs to be loaded in the INSTALL
section of the .cfg files used by your application, or add a
definition to MFPM in an installf library used by your
application.
If you are using Organizer, you should add MFPM to the
%LIBRARY pseudo-variable in the command-line parameters for
the Edit+Animate and Run tools.
Ensure that the file mfpm.dle (for DOS) or mfpm.dlw (for
Windows) exists in a directory specified by the COBDIR
environment variable; or (for OS/2 only) that mfpm.dll
exists in a directory that is on your LIBPATH.
205 Invalid mainframe pointer value (Fatal)
o An attempt has been made to reference an invalid mainframe
address.
o Check your program's logic and recode the appropriate
statements.
-added V4.1.06
o Page 4-42. Change the explanation of message 227 as follows:
227 EXTERNAL data definition inconsistent (Fatal)
o Two or more programs are defining the same external data
item, but the first loaded program has defined the size
differently from the second or subsequent loaded program.
o Make sure that both or all of your programs define the size
of the external data item as being the same.
Chapter 5 (File Status Codes)
-----------------------------
o Page 5-5. Add the following explanation for status code 44:
44 A boundary violation exists.
Possible causes are:
o An attempt has been made to WRITE or REWRITE a
record that is larger than the largest or smaller than
the smallest record allowed by the RECORD IS VARYING
clause of the associated file.
o An attempt has been made to REWRITE a record
to a file, and the record is not the same size
as the record it replaces.
Compatibility Guide
===================
Chapter 4 (Introduction to Conversion Series 3)
-----------------------------------------------
o Page 4-2. In the section Converting Data Files, replace last
paragraph with:
You must convert this data file to separate data and index
files, using RMISAM or the equivalent utility in your RM
product.
Chapter 7 (RM/COBOL Conversion Issues)
--------------------------------------
o Page 7-13. Under "File and Record Locking", delete the third
bullet point and then add the following to the end of the
section:
RM/COBOL ignores locks on files opened for INPUT. When the
RM Compiler directive is set, this COBOL system detects locks
on files opened for INPUT. To emulate RM/COBOL behavior, you
must use the B or B1 run-time switch. Setting either of these
switches permits a file to be read sequentially, even if
another process has records locked in that file.
Chapter 9 (Running Convert3)
----------------------------
o Page 9-2. In the section File Details, replace paragraph 4 with
the following:
The setting of the RM directive. This can be either R for
RM/COBOL, (which will cause ORGANIZATION SEQUENTIAL files to be
treated as Line Sequential with SIGN SEPARATE) or A for RM/COBOL
with the ANSI switch set (which will cause ORGANIZATION
SEQUENTIAL files to be treated as Record Sequential with SIGN
INCLUDE). If your program contains any Organization Sequential
files with COMP-3 data, you must use A. See your Object COBOL
User Guide for full details of the RM Compiler directive.
Getting Started
===============
Appendix A (Contacting Micro Focus)
-----------------------------------
o Page A-3. Section "Info-Fax System". Change the phone number to:
(415) 843-7170
-added V4.1.10
o Page A-3, Section "Fax Numbers". Change the fax number of the
office in France to:
o France (1) 47.75.75.80
-added V4.1.10
Programmer's Guide to Writing Programs
======================================
Chapter 3 (System Limits and Programming Restrictions)
------------------------------------------------------
o Page 3-9. Before the heading "Direct System Limits", add:
Maximum core heap size
----------------------
On the 16-bit COBOL system for DOS:
o Without XM, limited by disk space for the swap files
o With XM, 8mb (no paging by the run-time system)
On the 16-bit COBOL system on Windows and OS/2:
o If the P3 switch is not set, 16Mb (no paging by the
run-time sytem)
o If the P3 switch is set, 32Mb
On 32-bit COBOL systems:
o No limit, other than disk space
Chapter 8 (The COBOL Interfacing Environment)
---------------------------------------------
o Page 8-9. The second table on this page should be replaced with:
Bit Meaning
------------------
4 0 Parameters are not passed in processor
registers
1 The call or entry point should conform to
OS/2 optlink calling convention, in which some
parameters are passed in processor registers.
Note that this cannot be combined with other
calling conventions.
OS/2:
5 0 Call is not thunked
1 The call is to be a thunked call to a 16-bit
program. This is only applicable on OS/2
6 0 The call does not conform to the Windows
stdcall calling convention
1 The call conforms to the Windows stdcall
calling convention
This has no effect on dynamic calls, but alters
the call-name on static-linked calls
7-15 Reserved (must be 0)
o Page 8-12. Delete the section "Interfacing Between 16-bit and 32-bit
Modules" that begins on this page and continues to page 8-25. Replace
with it with:
Interfacing Between 16-bit and 32-bit Modules
=============================================
OS/2 V2:
This section is only applicable to OS/2 V2.
This section describes how to interface between 16-bit and
32-bit modules. It assumes a knowledge of the differences
between 16-bit and 32-bit architecture and a good
understanding of language calling conventions.
OS/2 V2 enables execution of both 16-bit and 32-bit
applications, including the mixing of 16-bit and 32-bit
modules in the same application. Interfacing between the
16-bit and 32-bit modules is referred to as thunking. This
COBOL system provides a means of implementing thunking by
using a call convention. This provides support for most call
interfaces. Call convention 32 provides the thunking
interface (see the section "Call Conventions" for
information on call conventions).
By using the call convention you can create a seamless
interface to your existing 16-bit support modules, thus
enabling you to use any existing support modules without
recoding or recompiling the 16-bit .dll files.
The figure below illustrates 32-bit to 16-bit thunking:
--------------- --------- ----------------
| 32-bit |<---->| Thunk |<---->|16-bit support|
| application | --------- |module (.dll) |
--------------- ^ ----------------
^ |
| |
| |
v |
---------------- |
|32-bit support|<--------|
| module |
----------------
Example Thunking Interface
--------------------------
The following example demonstrates how to call an existing
16-bit C support module (CSWAP) from a 32-bit application
using a thunk interface.
Given the existing software, you could create a thunk
interface using the call convention as in the following
example:
special-names.
call-convention 32 is thunked.
data division.
working-storage section.
01 pptr16 pic xxxx comp-5.
01 ptrnum pic xx comp-5 value1.
linkage section.
01 ws-item1 pic xx comp-5.
01 ws-item2 pic xx comp-5.
procedure division using by value ws-item1
by reference ws-item2.
call thunked "cswap" using by value ws-item2
by reference ws-item2.
exit program.
stop run.
Items of USAGE POINTER passed to the called program
need to be converted, using the routines described
in the next section.
Using call convention 32 automatically thunks to a
16-bit function and converts all BY REFERENCE
parameters.
Thunking Support API Routines
-----------------------------
Two API routines are supplied that allow conversion of
USAGE POINTER data items from a 32-bit address to a
16-bit address and vice-versa. These routines are
described below.
The case of these API items must be preserved, so a
COBOL program that uses them must be compiled using the
CASE compiler directive
_mFflattosel
------------
Converts from a 32-bit address to a 16-bit address.
Syntax:
call '_mFseltoflat' using by value <mypointer-32>
returning <mypointer-16>
Parameters:
<mypointer-32> usage pointer
<mypointer-16> usage pointer
On Entry:
<mypointer-32> 32:0 flat address
On Exit:
<mypointer-32> 16:16 segmented address
Comments:
This routine is called from 32-bit applications.
The 32:0 flat address is converted to a 16:16
segmented address.
_mFseltoflat
------------
Converts from a 16-bit address to a 32-bit address.
Syntax:
call '_mFflattosel' using by value <mypointer-16>
returning <mypointer-32>
Parameters:
<mypointer-16> usage pointer
<mypointer-32> usage pointer
On Entry:
<mypointer-16> 16:16 segmented address
On Exit:
<mypointer-32> 0:32 flat address
Comments:
This routine is called from 16-bit applications.
The 16:16 segmented address is converted to a 0:32
flat address.
Chapter 14 (Concurrency Support)
--------------------------------
o Page 14-1. In the first paragraph, delete the side heading
"16-bit and 32-bit for UNIX".
o Page 14-2. In the section "Overview", in the third paragraph,
change the side heading to:
16-bit OS/2
and change the text "On OS/2" to:
On 16-bit OS/2
o Page 14-2. In the section "Overview", add the following before the
last paragraph:
16-bit Windows
On 16-bit Windows this concurrency support facility
is mapped on the run-time system's own co-operative
task switching.
32-bit
On 32-bit COBOL systems this concurrency support facility
is mapped onto an operating system's process.
o Page 14-2. In the section "Installing Concurrency Support", in the
first paragraph, replace the side heading with:
16-bit
and change the first word of the sentence, "The", to:
On the 16-bit COBOL system, the
o Page 14-2. In the section "Installing Concurrency Support", in the
third paragraph of this section, change the side heading to:
32-bit
and replace the first words of the sentence, "On UNIX", with:
On 32-bit systems
o Page 14-4. In the third paragraph, beginning "Concurrency
under Windows", change the side heading to:
16-bit on Windows
and change the first words, "Concurrency under Windows" to:
Concurrency on the 16-bit COBOL system for Windows
and in the fourth paragraph, beginning "Because of", change
the side heading to:
16-bit on DOS, Windows and OS/2
and insert the words:
16-bit COBOL
before the words "run-time system" in the first sentence.
o Page 14-7. In the entry for CBL_CULL_RUN_UNITS, in the second
paragraph of the section "Comments:", add the side heading:
16-bit
and replace the first word, "This", with:
On the 16-bit COBOL system, this
o Page 14-9. In the entry for CBL_EXEC_RUN_UNIT, in the last paragraph
of the section "Comments:", add the side heading:
16-bit
and replace the first word, "This", with:
On the 16-bit COBOL system, this
o Page 14-11. In the first paragraph at the top of the page, add the
side heading:
16-bit
and replace the first word, "This", with:
On the 16-bit COBOL system, this
In the entry for CBL_PUT_SHMEM_PTR, in the last paragraph of the
section "Comments:", add the side heading:
16-bit
and replace the first word, "This", with:
On the 16-bit COBOL system, this
o Page 14-11. In the entry for CBL_YEILD_RUN_UNIT, in the
last paragraph of the section "Comments:", add the side
heading:
16-bit
and replace the first word, "This", with:
On the 16-bit COBOL system, this
Chapter 18 (Library Routines)
-----------------------------
o Page 18-8. After the first paragraph on this page,
add the following paragraph:
Once an error procedure has been posted, until it is
removed either implicitly (for example, during error
processing) or explicitly (by calling CBL_ERROR_PROC with
<install-flag> set to "1"), subsequent attempts to
install that error procedure are silently ignored.
o Page 18-8. After the eighth paragraph on the page
(beginning "On 32-bit systems"), add the following new
paragraph:
If an error procedure is installed during error
processing (either by itself, or by another error
procedure) then it is executed as soon as the error
procedure that installed it returns, assuming that
it doesn't return with a ZERO return code.
o Page 18-8. In the last paragraph delete the text "On the 16-bit
system," and change "if" to "If".
o Page 18-20. In the section "On entry:", add the following
at the end of the entry for list-item "<printer-no>":
Note that for LPT1, <printer-no> is 0, for LPT2 it is 1, and
so on.
In the section "Comments:", after the first paragraph, add:
This routine is only available for use with parallel printers
that are local to the machine. It does not work for printers
that are on a network, as these are serial printers.
Object COBOL User Guide
=======================
Chapter 6 (Directives for Compiler)
-----------------------------------
o Page 6-21. In the entry for ANIM, in the section "Properties:",
change the "Default" item to:
Default: NOANIM
o Page 6-20. Before the entry for ANALYZE, add:
AMODE
=====
Provides compatibility with mainframe-style pointers.
Syntax:
>>--+---+---+----+--AMODE----"<format>"--------><
|-/-| |-NO-|
Parameters:
<format> Specifies the storage format of pointers
Properties:
Default: NOAMODE
Phase: Syntax check
Environment: 16-bit, and 32-bit systems on Windows NT
and OS/2
In general, to eliminate potential problems that might occur when
trying to be selective about which programs are compiled with
this directive, we strongly recommended that you use the AMODE
directive on all programs in the application, and that you use
the same <value> for each subprogram.
The possible values of <format> are:
24 All pointers are stored in a 24-bit format. This format is
compatible with 'below-the-line' storage on the mainframe.
The top 8 bits of the pointer are masked off when the address
of a linkage item is set from the pointer. This means that,
as on the mainframe, the top 8 bits can be manipulated
directly by the user's code.
31 All pointers are stored in a 31-bit format. This format is
compatible with 'above-the-line' storage on the mainframe.
The top bit of the pointer is masked off when the address of
a linkage item is set from the pointer. This means that, as
on the mainframe, the top bit can be manipulated directly by
the user's code.
The AMODE directive cannot be used for programs that need to call
a Micro Focus call-by-name or call-by-number routine or an
external API that expects pointer items to be in the native
machine format.
The directives RDEFPTR and CONVERTPTR must not be used with the
AMODE directive.
o Page 6-46. In the entry for COMP-6, change the entry for
"Dependencies:" to:
RM or MF must be set.
RM and RM"ANSI" set COMP-6"1".
NORM sets COMP-6"2".
-added V4.1.06
o Page 6-46. Replace the second paragraph, beginning
"Even if you specify...", with:
Even if you specify the COMP-6 directive, the
reserved word COMP-6 is recognized only if it belongs
to the dialect specified by RM or MF"10".
-added V4.1.06
o Page 6-59. At the end of the entry for DEFAULTBYTE, add the
following:
Comments: <integer> is a decimal value. For example, if
you want to specify an EBCDIC space use
DEFAULTBYTE"64"; to specify an ASCII space use
DEFAULTBYTE"32".
o Page 6-62. Within the "Comments" section for DETECT-LOCK,
delete the second paragraph and replace with:
If a READ statement attempts to lock a record (that is,
if the statement LOCK MODE IS AUTOMATIC has been
specified, or a WITH LOCK phrase is used on the READ
statement), and the record is locked by another program,
an I/O status of 9/068 is returned. If NODETECT-LOCK is
specified, and the READ statement is not attempting to
lock a record an I/O status of 0/000 is returned.
o Page 6-74. In the description of the FILETYPE directive, delete the
paragraph beginning:
Type 1 is available
-nwb45207 added V4.1.10
-nwb44393 added V4.1.10
o Page 6-84. Add the following at the end of the "Comments:" section
for GNT:
On 32-bit COBOL systems, use this directive in preference to the
OMF directive.
On 32-bit COBOL systems, This directive creates a file in the
format specified, with the name specified. For example, if you
specify GNT"myprog.gnt", then a file myprog.gnt is produced that
contains generated code.
-added NWB42068 V4.1.10
o Page 6-86. In the entry for HOST-NUMCOMPARE,
in the section "Syntax:" change the syntax to:
>>--+---+--+------HOST-NUMCOMPARE--"<integer>"--+--><
+-/-+ +-NO---HOST-NUMCOMPARE---------------+
and in the section "Parameters:", add:
<integer> Must be 1 or 2.
and in the section "Comments:"/"Remarks:", add before the first
paragraph:
The HOST-NUMCOMPARE directive is Early User Syntax support. You
must use the EARLY-RELEASE directive to enable this feature. This
directive might change or be removed in a later revision of this
COBOL system.
<integer> can be:
1
and after the last paragraph of this section add:
2 Improves compatibility with IBM mainframe compilers for a
subset of IF statements involving comparisons between numeric
data items and numeric literals.
Setting HOST-NUMCOMPARE(2) does not provide 100% compatibility
with the IBM mainframe behavior, but does provide emulation
for the most common cases.
You cannot use the HOST-NUMCOMPARE(2) in conjunction with the
HOST-NUMCOMPARE(1).
o Page 6-87. In the entry for HOST-NUMMOVE, in the section "Syntax:"
change the syntax to:
>>--+---+--+------HOST-NUMMOVE--"<integer>"--+--><
+-/-+ +-NO---HOST-NUMMOVE---------------+
and in the section "Parameters:", add:
<integer> Must be 1 or 2.
and in the section "Comments:", add before the first paragraph:
<integer> can be:
1
and replace the text for list item with:
2 Improves compatibility with IBM mainframe compilers for a
subset of MOVE statements involving numeric/alphanumeric
data types and numeric/numeric data types.
HOST-NUMMOVE(2) does not provide 100% compatibility with the
IBM mainframe behavior, but does provide emulation for the
most common cases.
You cannot use the HOST-NUMMOVE(2) directive in conjunction with
the HOST-NUMMOVE directive.
o Page 6-91. Before the entry for INCLUDE-FILLER, add the following new
entry:
IMPLICITSCOPE
=============
Specifies whether warning messages are produced if statements
containing subsidiary imperative statements are terminated other
than by an explicit scope terminator.
Syntax:
>>--+---+--+----+----IMPLICITSCOPE----------><
|-/-| |-NO-|
Parameters: None
Properties:
Default: IMPLICITSCOPE
Phase: Syntax check
Environment: All
For example, a warning message is produced when an IF
statement is not terminated by an END-IF, or when an ADD
statement with an ON SIZE ERROR clause is not terminated by
an END-ADD. However, a simple imperative add (for example,
ADD 1 to x) without the optional END-ADD will not receive
such a warning message.
The messages produced by this directive are warnings, so are
visible if the WARNINGS directive is set appropriately.
Example:
The following examples show cases that cause warning errors to be
produced:
add 1 to n
on size error
move 1 to size-error-flag.
In the above example, the scope of the ADD statement is
terminated by the period.
if x = 1
if y = 1
display "y = 1"
else
display "Y not = 1"
else
display "x not = "
end-if
In this example the inner IF is implicitly terminated by the else
belonging to the outer IF.
o Page 6-99. In the entry for the LINKCOUNT directive, in the section
"Parameters:", change "The number allowed." to:
The number allowed (maximum 65535).
- NWB45359 added V4.1.10
o Page 6-100. In the entry for the LINKCOUNT directive, in the
section "Comments:", add at the end:
<integer> has a maximum value of 65535. However the
maximum size will depend on how many other data items
are defined. If it is set too high a 781-S 'Maximum number
of data items exceeded' error might occur. In this case
the value in LINKCOUNT should be lowered.
o Page 6-143. In the entry for RECMODE, in the section "Comments:", in
the entry for OSVS, delete the third sentence of the second
paragraph. After the entry for OSVS, add:
VSC23 Fixed or variable length depending on the file's record
definitions. If all record definitions for the file are
the same length, and are fixed length and/or the FD entry
has a RECORD CONTAINS <x> CHARACTERS clause, the file is
fixed length record format. Otherwise it is in variablle
record format.
This setting is compatible with VS COBOL II and COBOL/370
when compiled with NOCMPR2.
o Page 10-117. In the entry for OBJ, add the following at the end of
the "Comments:" section:
On 32-bit COBOL systems, use this directive in preference to the
OMF directive.
On 32-bit COBOL systems, This directive creates a file in the
format specified, with the name specified. For example, if you
specify OBJ"myprog.obj", then a file myprog.obj is produced that
contains generated code.
o Page 10-123. In the entry for OMF, add the following at the end of
the "Comments" section:
On 32-bit COBOL systems, use the directives OBJ or GNT in
preference to this directive.
o Page 6-148. In the entry for RM, in the section "Dependencies:", in
the first and third lines, add:
COMP-6"1",
after the word "sets", and In the fifth line, add:
COMP-6"2",
after the word "sets".
o Page 6-150. In the entry for SAA, in the section "Dependencies:",
change the second line to:
SAA"2" sets ANS85 at end.
o Page 10-174 (CN -181). In the entry for VSC2, in the section
"Dependencies:", change the second line to:
If <integer> > 2, VSC2"<integer>" sets ANS85 at end.
Chapter 7 (Linking)
-------------------
o Page 7-5. In the section "Dynamic Linking", delete the second,
parenthesized, sentence, and replace with:
Check that there is no 'B' in the version number
on the first line of $COBDIR/cobver
Chapter 15 (Terminfo Database and Terminal Devices)
---------------------------------------------------
o Page 15-7. In the table, in the section "Optional Entries",
add at the end:
Move safely in standout mode msgr
(if appropriate)
o Page 15-13. The bulleted list item that begins "Adis restarts".
Delete the second sentence in this item.
Programmer's Guide to File Handling
===================================
Chapter 2 (File Naming)
-----------------------
o Page 2-11. Under the heading "Activating the Mapper File",
replace the section on activating the mapper file on 16-bit
systems with the following:
16-bit To use Mfextmap in an application on the 16-bit COBOL
system, you must put an entry for it in the
[MFRUN-INSTALL] section of the run.cfg configuraton
file. The entry in run.cfg should look like this:
[MFRUN-INSTALL]
$COBDIR\MFEXTMAP
o Page 2-11. Immediately below the heading "Activating the
Mapper File", insert the following:
You cannot use Mfextmap with a statically linked application.
With a dynamically linked application, you can use the
INITCALL"MFEXTMAP" Compiler directive or the appropriate
method of run-time configuration as described below.
o Page 2-18. Under the heading "Setting Up Pipes", alter the
first paragraph to read as follows:
32-bit On 32-bit COBOL systems, when you specify the
contents of an environment variable, you can
use the following three characters to set up
pipes or named pipes:
o Page 2-19. Under the heading "The '<' Character", alter the
example to read:
dd_dir="<cmd /c dir"
o Page 2-19. Under the heading "The '>' Character", alter the
example to read:
dd_dir=">cmd /c pr -h Title"
o Page 2-20. Change the example of using the '|' character to
read:
dd_file1="|cmd /c proc"
Chapter 4 (Using File Status)
-----------------------------
o Page 4-8. Add the following to the section "IBM Mainframe Status
Codes":
IBM mainframe 9<x> file status codes (see your "Mainframe
Programmer's Guide" for details) are within the range 90 to 99
where the second byte <x> is a single alphanumeric character.
Micro Focus extended file status codes have the character 9 as
the first byte and the second byte is a binary value equivalent
to a run-time error number. If you do not specify a file status
data item for a file, file errors with a first byte value of 9
result in display of a run-time error message. If you are using
HOSTSTAT, therefore, you must ensure that a file status data item
is defined within your program, otherwise, on receipt of a 9<x>
file status, the run-time system assumes this is an extended file
status code, treats the second byte as a binary value and
displays an invalid run-time error message. You should also
ensure that your own code treats the second byte of file status
codes beginning with the character 9 as a single alphanumeric
character and not as a binary value.
Chapter 6 (Sharing Files)
-------------------------
o Page 6-14. Add the following to the section "All File Types":
UNIX
Implementation of DOS and OS/2 file handling compatibility code
within this COBOL system means that on UNIX, because of the way
in which UNIX handles file locks, if a file is opened twice by
the same program, and that file is subsequently closed using a
file descriptor (FD) received from one of the open operations,
any locks obtained by the other open operation are lost. This is
the expected behavior of a close operation, as described in the
POSIX standard X/Open guidelines.
The run-time tunable posix_lock_prob provides compatibility with
the behavior exhibited in V3.0. To emulate this behavior, set
posix_lock_prob to TRUE:
set posix_lock_prob=TRUE
See your Object COBOL User Guide for full details on the
posix_lock_prob run-time tunable.
Chapter 8 (File Handler Utilities, UNIX)
----------------------------------------
o Page 8-4. Within the "Overview" section, alter the
description of the types of indexed file supported by the
file handling utilities to read as follows:
The file handling utilities support five types of
indexed file:
o C-ISAM format (indexed files with fixed length records, that
is, files created using either the modified version of C-ISAM
supplied with this COBOL system or the standard C-ISAM file
handler).
o X/Open format
o LEVEL II format (created by LEVEL II or later versions
of COBOL).
o Micro Focus COBOL indexed files (indexed files with variable
length records, data compression, or created by programs
compiled using IDXFORMAT"3").
o IDXFORMAT"4"
o Page 8-9. Add the following, below Table 8-1:
Note: Throughout this chapter, I0 indicates a C-ISAM file created
using either the modified C-ISAM file handler provided with
this COBOL system, or the standard C-ISAM file handler,
while I3 indicates a Micro Focus COBOL indexed file, that
is, an indexed file with variable length records, data
compression or created by a program compiled using
IDXFORMAT"3".
o Page 8-38. Under the heading "reorg.reo Paramter File", add
the following to the bottom of the list of contents of
reorg.reo:
PK (0:4:CHARTYPE) # prime key
Chapter 11 (Directory Handling)
-------------------------------
o Page 11-3. Add the following to the Comments section on
CBL_COPY_FILE:
DOS, Windows CBL_COPY_FILE emulates the equivalent operating
and OS/2 system call. On DOS, Windows and OS/2, therefore,
the new file is stamped with the same time and
date as the original file.
UNIX CBL_COPY_FILE emulates the equivalent operating
system call. On UNIX, therefore, the new file is
stamped with the current time and date.
Chapter 13 (Callable File Handler)
----------------------------------
o Page 13-9. Alter the description of Offset 7 (Open mode) to
read as follows:
7 1 Open mode. You must set this field to 128
before opening a file. This field is
written to by the Callable File Handler so
that, on return, it indicates the open mode
of the file:
0 - INPUT
1 - OUTPUT
2 - I/O
3 - EXTEND
128 - File is closed
o Page 13-11. Alter the description of file format (offset 34),
as follows:
0 - Operating system default. C-ISAM on UNIX, same as
specifying a value of 3 on DOS, Windows and OS/2.
1 - C-ISAM
2 - LEVEL II COBOL format
3 - Micro Focus COBOL format.
4 - IDXFORMAT"4" format.
o Page 13-18. Add the following to the table of operation codes:
EC WRITE BEFORE mnemonic-name S
ED WRITE AFTER mnemonic-name S
o Page 13-22. Alter the description of Offset 7 (Open mode)
to read as follows:
Offset 7 Open mode. Must be set to 128 before opening
a file.
o Page 13-26. Add the following to the table of operation codes:
EC WRITE BEFORE mnemonic-name S
ED WRITE AFTER mnemonic-name S
o Page 13-40. Add the following to the end of the
paragraph which begins "Global settings are listed ...":
The file handler expects filenames appearing in extfh.cfg to be
exactly the same (ignoring case) as the name with which it
attempts to open the file, so if the file handler attempts to
open the file using the full pathname, you must specify the full
pathname in extfh.cfg. Note that a "\" (backslash) character
appearing within extfh.cfg is treated as an escape character and
so, for each backslash character in the pathname you must specify
two backslash characters ("\\" instead of "\").
Chapter 14 (Handling C-ISAM Files)
----------------------------------
o Page 14-1. Under the heading, "C-ISAM Modules", alter the
first paragraph to read:
On UNIX systems, the RTS uses a version of the C-ISAM
file handler that has been modified to fulfill this
COBOL system's record locking requirements. Note that
the format of files created using the modified C-ISAM
file handler is identical to the format of files
created using the standard C-ISAM file handler.
Chapter 16 (Byte-stream File Handling)
--------------------------------------
o Page 16-10. Within the description of the byte-count
parameter of the CBL_WRITE_FILE routine, insert the side
heading "DOS, Windows and OS/2" next to the paragraph:
Putting a value of zero in this field causes the file
to be truncated or extended to the size specified in
the file-offset field.
Chapter 18 (Fileshare)
----------------------
o Page 18-10. Within the section "In a Configuration File",
add, as the first note in the list of Notes:
o The Fileshare Client configuration file can contain
a maximum of 16 unique Fileshare Server names.
o Page 18-15. Within the section "Fileshare Client Configuration"
add, as the first note in the list of Notes:
o The Fileshare Client configuration file can contain
a maximum of 16 unique Fileshare Server names.
o Page 18-16. To the definition of "server-name", add:
The Fileshare Client configuration file can contain
a maximum of 16 unique Fileshare Server names.
o Page 18-28. At the bottom of the page, alter the paragraph
numbered "2." to read:
Now take a backup of your database files. Any log files
are now obsolete. Delete them.
o Page 18-29. Under the heading, "Recovery Log File Backup",
delete the last sentence of the first paragraph:
On start-up, the Fileshare Server automatically backs
up the log file.
o Page 18-33. Under the heading "Database Sequence Numbering",
alter the message severity to 'S' (severe):
FS038-S A matching sequence number not found in <filename>
o Page 18-71. Alter the command:
fs &
to:
fs > server-1.log 2>&1
and append the following text to the paragraph which
follows the command:
You need to redirect the output from the command
because otherwise, on some UNIX systems, output is
sent to the terminal after it has been disconnected
and, consequently, the entire session is terminated.
Chapter 24 (Embedded SQL Using DB2)
-----------------------------------
o Page 24 -6. Alter the line:
sh mkrts
to:
sh mkrts sqlinit.o
Chapter 30 (File Structures)
----------------------------
o Page 30 -3. Within the section "Fixed and Variable Format",
alter the third bullet point to read:
The OCCURS...DEPENDING ON clause which creates variable
format when you set the RECMODE"OSVS" Compiler directive.
o Page 30 -17. At the bottom of the page, under the heading, "Indexed
Organization on UNIX", alter the first sentence to read:
If you are using C-ISAM (either the modified C-ISAM
provided with this COBOL system or the standard
C-ISAM file handler), the C-ISAM file handler handles
all fixed length indexed records.
=========================================================================
Micro Focus, Animator, and COBOL Workbench are registered trademarks of
Micro Focus Limited.
Object COBOL, Toolbox, CCI, Dialog System, Fileshare, Operating System
Extensions, OSX, and Panels are trademarks of Micro Focus Limited.
IBM, OS/2, and PC are registered trademarks of International Business
Machines Corporation.
Windows is a trademark of Microsoft Corporation.
UNIX is a registered trademark of X/Open Company Limited.
=========================================================================
@(#)Vrn/dun.1/25Apr97/nrV
Copyright (C) 1992-97 Micro Focus Limited