Trailing-Edge
-
PDP-10 Archives
-
bb-bt99g-bb
-
cbl12b.d09
There is 1 other file named cbl12b.d09 in the archive. Click here to see a list.
EDIT DESCRIPTIONS FOR COBOL-10-V12B
EDIT 1510 FOR COBOL
[SYMPTOM]
The wrong numeric literal value may be stored in the literal
table of a program.
[DIAGNOSIS]
Edit 1507 to MOVGEN changed the order of some subroutine
calls. Accumulator 13 is no longer set up as expected by
code that follows.
[CURE]
Edit 1510 will use a different ac.
********************************************************************************
EDIT 1511 FOR COBOL
[SYMPTOM]
A computation that yields in an internal value such as '4.5'
may result in '4' even if the 'ROUNDED' clause is specified
if a conversion from floating point to binary is required.
[DIAGNOSIS]
If the fractional part of a floating point field ends in the
equivalent of .49999999999999 and rounding is specified, the
data is first converted to binary and the extra places
dropped, and then the data is rounded. The correction
factor for floating point to binary conversion is not
generated if the rounding clause is used. It was assumed
that the rounding factor would be sufficient, but since this
factor is not applied until after the data is converted, it
does not have the expected effect.
[CURE]
Edit 1511 to EXPGEN will change the order of the tests for
rounding and floating point conversion so the correction
factor will always be generated if data is converted from
floating point to binary. This will not cause rounding
where it is not specified, as the correction factor is too
small.
********************************************************************************
EDIT 1512 FOR COBOL
[SYMPTOM]
For COBOL-68 and -74, where two display numeric fields A and B are
defined as follows,
01 A PIC 9(x) [DISPLAY-n].
01 B PIC S9(x) [DISPLAY-n].
where "x" is any valid digit count and "n" is 6, 7 or 9, the statement
IF A = - B action clause for True outcome
ELSE action clause for False outcome.
always takes the ELSE path, even when A equals - B. However,
IF - B = A action clause for True outcome
ELSE action clause for False outcome.
works correctly.
[DIAGNOSIS]
In MOVGEN the code is generated to move the operand to an AC and then
for the negation a MOVN instruction is generated. This instruction is
supposed to move the negative of the contents of the AC to itself.
However, the effective address of the sending field is not put into
the generated instruction, which means that the value in AC0 is always
being moved to the AC and negated. If AC0 is the sending AC, there is
no problem, as in the second example in the symptom statement, where
the negation is to the first operand, which is assigned to AC0. However,
in the first example above, the negated operand is second and is assigned
to AC2. In this case, the negative of the contents of AC0 was overlaying
the contents of AC2. In all cases where the contents of AC0 were non-zero
the subsequent test would prove False.
[CURE]
Install edit 1512 to the COBOL-68 and COBOL-74 compilers to put the
effective address of the sending operand into the generated MOVN
instruction.
********************************************************************************
EDIT 1523 FOR COBOL
[SYMPTOM]
The heading for a listing says 'S U B' instead of 'S U B P R
O G R A M'.
[DIAGNOSIS]
COBOLF never sets up the byte pointer to 'P R O G R A M'
after putting out the prefix 'S U B'.
[CURE]
Ac TA points to 'SUB', have it point to 'SUBPROGRAM'.
********************************************************************************
EDIT 1533 FOR COBOL
[SYMPTOM]
A syntax is given on all alternate keys if the record
containing their definition is variable in length.
[DIAGNOSIS]
Edit 1501 put in code to disallow variable length alternate
keys. A new label was created so the loop which follows it
would only execute the test once, but the JRST statement was
not changed to use the new label.
[CURE]
Edit 1533 to CLEANC will change the JRST statement.
********************************************************************************
EDIT 1534 FOR COBOL
[SYMPTOM]
ILL MEM REF while compiling a DBMS/COBOL program, on systems with
one-word global byte pointers implemented.
[DIAGNOSIS]
COBOL edit 1115 is creating an incorrect byte pointer, which is being
interpreted a a pointer to a non-zero section when one-word global
byte pointers are implemented.
[CURE]
Simplify and fix the byte pointer generation algorithm.
********************************************************************************
EDIT 1536 FOR COBOL
[SYMPTOM]
A program deleting records from an RMS file being accessed
sequentially may get a syntax error on the DELETE statement
specifying that an 'INVALID KEY' clause is required.
[DIAGNOSIS]
The code generator determines if a file is being accessed
sequentially, and if so, calls a subroutine to set up a
standard argument list in the literal table of the program.
Upon returning from this subroutine, AC16 is no longer
pointing to the current file table. AC16 is used again
later on in the code as the file table address, and
depending on its value, may indicate to a second test that
an 'INVALID KEY' clause is now required.
[CURE]
Edit 1536 to IOGEN will reset AC16 to the current file's
table entry.
********************************************************************************
EDIT 1537 FOR COBOL
[SYMPTOM]
A syntax error will be given on a data field with usage COMP
if it is declared in a record layout for an ASCII file.
[DIAGNOSIS]
Edit 1424 gives this error since the data is not transferred
correctly from the record area to the buffer. The last bit
is dropped. The error should not be based on the recording
mode of the file, but on the usage mode of the record
layout. Sixbit and ebcdic data will be transferred
correctly.
[CURE]
Edit 1537 to COBOLC and DIAGS will fix the edit so the error
will be given if a COMP field is found in a record layout
with usage mode ASCII.
********************************************************************************
EDIT 1542 FOR COBOL
[SYMPTOM]
The first word in working storage got trashed in a move from
a sixbit to an Asciz field.
[DIAGNOSIS]
In module IFGEN, in routine IFKADM, the divide was incorrect
to get the number of words to reserve. Instead of dividing
by the number of bytes per word, it divided by the byte
size.
[CURE]
Divide by the number of bytes per word rather than the byte
size.
********************************************************************************
EDIT 1543 FOR COBOL
[SYMPTOM]
Edit 1411 does not suppress the truncation warning if an ON
SIZE ERROR clause is used
[DIAGNOSIS]
The code does not check if there is an ON SIZE ERROR clause
on the statement before generating the warning.
[CURE]
Check to see that the GNSERA bit in the opcode is off before
checking for truncation.
********************************************************************************
EDIT 212 FOR ISAM
[SYMPTOM]
ISAM files become corrupted when updating a file with a
poorly chosen blocking factor such that index block is
exactly one over a sector boundry.
[DIAGNOSIS]
The ISAM index block length computation is off by one. In
computing the index block length a header length of one word
was used, when in reality index blocks have a header length
of 2 words.
[CURE]
Change the calculation to use a 2 word header instead of a
one word header.
********************************************************************************
EDIT 1116 FOR LIBOL
[SYMPTOM]
An RMS program will halt with a fatal error message from the
OTS stating that the file being used is not open for the
specified i-o.
[DIAGNOSIS]
If a file is unavailable at the time of open and a use
procedure is executed which will cause the file open to be
re-attempted, the file status is not reset before trying
again. If a later request succeeds, the file status still
specifies the file is unavailable. When later i-o requests
attempt to verify that a file has been opened correctly
according to the verb's requirements, the file status
implies the file is not open, so all i-o requests fail.
[CURE]
Before re-attempting an open on a file, edit 1116 to RMSIO
will reset the file status and corresponding flag bits in
the file table.
********************************************************************************
EDIT 1126 FOR LIBOL
[SYMPTOM]
Blank lines in an ascii text file are ignored by COBOL.
[DIAGNOSIS]
COBOL processes <LF> characters for output files only, for
positioning records on a page. These characters are ignored
when reading files. Leading <CR>'s are assumed to have been
generated by 'WRITE AFTER ADVANCING' clauses which indicate
that the data record follows the <CR>, so the <CR> character
should be ignored.
[CURE]
We are issuing edit 1126 to INTERM, LBLPRM and CBLIO in
conditional assembly brackets. We do not intend to support
this code as the default for COBOL as it will alter current
file handling. The new code will trap any leading <CR>
found while reading an ascii file and cause a space-filled
record to be returned to the user program. The default
definition of the new feature test switch BLANKL is zero;
to enable this feature, its value should be set to 1 in
INTERM, as shown in the filcom. A possible side-effect of
this edit is that where one record has been written, two
records will be read, the first triggered by a leading <CR>
and the second triggered by the transfer of the expected
number of characters from the file buffer.
********************************************************************************
EDIT 1127 FOR LIBOL
[SYMPTOM]
When assembling COBST get warnings that complain about
obsolete symbols.
[DIAGNOSIS]
Using obsolete symbols in COBST.
[CURE]
Remove them.
********************************************************************************
END OF COBOL-10-V12B