There are no other files named dbms61.doc in the archive.
DBMS.DOC -- Changes from Version 6(363) to Version 6.1(1171)
COPYRIGHT (C) 1974,1984 BY
DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.
THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE
INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER
COPIES THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY
OTHER PERSON. NO TITLE TO AND OWNERSHIP OF THE SOFTWARE IS HEREBY
THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE
AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL.
DBS6A.DOC Page 2
DBMS.DOC -- Changes from Version 6(363) to Version 6.1(1171)
DBMS-20 Version 6.1 is a minor Engineering release and fully replaces
DBMS-20 Version 6.
The major changes between DBMS-20 Version 6 and Version 6.1 are:
1. A new, interactive, query-like Extended DML utility (XDML).
2. A FORDML option to allow generation of FORTRAN-77 (ANSI
X3.9-1978 FORTRAN) CHARACTER data type declarations for
certain User Work Area items.
3. Numerous fixes addressing general, integrity, and some
4. A simplified, common, and consistent host language library
5. Improved installation procedures.
6. An updated, more complete installation verification test
DBMS-20 Version 6.1(1171) consists of the following components:
SCHEMA - The Data Description Language (DDL) translator.
FORDML - The Data Manipulation Language (DML) translator
for FORTRAN (embedded in the compiler for COBOL).
DBCS - The Database Control System (DBCS) which includes
run-time statistics (STATS). Embodied in link-time
library DBMS.REL (DBMSF.REL for FORTRAN) and in
the host OTS for COBOL and DBMSF.EXE for FORTRAN.
DBMEND - The Database Recovery/Journal manipulation utility.
DBINFO - The Database information utility.
XDML - The new interactive DML utility.
The DBMS-20 Version 6.1 software has been tested on and will run under
TOPS-20 Version 5.1 or later (KL model B systems) and Version 4.1 (KS
and KL model A systems).
DBMS-20 conforms most closely to the CODASYL DATA BASE TASK GROUP
REPORT of April 1971, with certain ommissions and extensions.
DBS6A.DOC Page 3
1.1 Documentation Set
DBMS-20 Documentation Directory AA-J876B-TM
DBMS-20 User's Guide AD-H229A-T1
DBMS-20 DML Reference Manual AD-H232A-T1
DBMS-20 DDL Reference Manual AD-H213A-T1
DBMS-20 Utilities Manual AD-H228A-T1
DBMS-20 DBCS Error Message Reference Manual AD-J878B-TM
DBMS-20 Installation Guide AA-J875B-TM
DBMS-20 DDL Programmer's Reference Card AV-J879B-TM
DBMS-20 DML Programmer's Reference Card AV-H230B-TM
DBMS-20 Utilities Reference Card AV-Z784A-TM
DBMS-20 Poster AV-Z783A-TM
DBMS-20 Version 6 Update Document EY-AD034-ID-001
1.2 Required Software
The following software is required to install and patch DBMS-20
LINK 5.1(2030) or later
MACRO 53.1(1152) or later
MAIL 5(11) or later
MAKLIB 2.2(104) or later
PA1050 5.1(627) or later
RDMAIL 5(13) or later
HELPER.REL 7.4(52) or later
MACREL.REL For 5.1 or 4.1(KS, KL/A) or later
SCAN.REL 7.4(630) or later
WILD.REL 7.4(345) or later
MACSYM.UNV For 5.1 or 4.1(KS, KL/A) or later
MONSYM.UNV For 5.1 or 4.1(KS, KL/A) or later
One of the following languages is a pre-requisite for installing
DBMS-20 Version 6.1. These languages are the host languages for
processing the DML. No previous host language versions are supported
for use with DBMS-20 Version 6.1. Edit numbers listed are for the
COBOL-68/74 12B(1131/1056) or later
COBOL-20 13(1515/1110) or later
FORTRAN 7(1716/3261) or later
DBMS-20 Version 6.1 is interfaced to these host languages by using
and/or updating the following components of each language:
COBOL-20 (V13) COBLIB.REL,C8XSHR.REL,COBOTS-V13.EXE,DBMS.REL
FORTRAN (V7) FORLIB.REL,DBMSF.REL,DBMSF.EXE
DBS6A.DOC Page 4
1.3 Maintenance Policy
DBMS-20 Version 6 will continue to be supported for a period of six
months after the release of DBMS-20 Version 6.1. During that time,
problems affecting both versions will be corrected by edits applicable
to each version. Once support for Version 6 has been discontinued,
corrections provided will only be applicable to Version 6.1.
2.0 EXTERNAL CHANGES
2.1 Compatability With Version 6
DBMS-20 Version 6.1 is fully compatable with Version 6 unless
otherwise stated below. All database files used with Version 6 can be
used with 6.1 with no changes. All Version 6 journals and lock files
can also be used directly. In most instances, schema files can be
used as is, however changes made to Version 6.1 to eliminate problems
may require minor changes to the DDL, see section 2.3 below. Refer to
sections 2.3 and 2.5 for significant and minor changes applicable to
the operation of the DBMS utilites.
Application programs using a DBMS PRIOR to Version 6 must be both
re-compiled and reloaded to use the Version 6.1 DBMS software. It is
expected that some amount of application and DDL upgrading will be
necessary to complete this task (refer to the DBMS-20 User's Guide).
Application programs which are currently using DBMS Version 6 do NOT
have to be re-compiled and generally do NOT have to be re-loaded to
take advantage of DBMS Version 6.1. However examine section 2.3 to
determine whether or not the fixes in Version 6.1 require minor
modifications to the application programs and/or the DDL.
The one instance in which application programs must be RE-LOADED is
when they have initially been loaded with a private copy of the DBMS
software. This situation will normally occur for COBOL programs
compiled with "/R" or "/TWO-SEGMENT" and for FORTRAN programs loaded
with %DBSNS set to a non-zero value. Using such programs loaded with
a private copy of DBMS Version 6 in a simultaneous access environment
along with programs using DBMS-20 Version 6.1 CAN produce unexpected
exceptions and procedural difficulties.
2.2 New Capabilities
1. The XDML utility.
Version 6.1 provides a new Extended DML utility called XDML,
which can be used to access the database in an interactive
fashion. Most of the DML verbs avaialable for use in the
host languages are available, and there is a broad complement
of commands implemented to control the utility interface and
provide useful database and utility status information.
DBS6A.DOC Page 5
2. FORDML option for generating CHARACTER data type
The new FORDML switch /CHARACTER selects an alternate
translation of certain schema data items and SYSCOM items
from INTEGERs and INTEGER arrays to FORTRAN-77 CHARACTER data
type variables and arrays. The prefix NO can be used to
select the Version 6 translation mode to INTEGERs.
/NOCHARACTER is the default for DBMS-20 Version 6.1, and it
is planned that /CHARACTER will be the default for any
subsequent DBMS releases. The items affected are:
SYSCOM items ARNAM, RECNAM, ERREC, ERSET, and ERAREA.
All Schema data items declared as USAGE DISPLAY-7.
Refer to the DDL and DML Reference Manuals for more
information on the use of /CHARACTER and the requirements for
padding within records when converting from /NOCHARACTER to
3. Host independent link-time library.
With COBOL-20 Version 13, and FORTRAN Version 7, the language
link-time libraries are no longer modified to include a copy
of the DBCS routines. Instead, these routines are now
extracted at link-time from the file SYS:DBMS.REL for COBOL
or SYS:DBMSF.REL for FORTRAN. COBOL-20 Version 13 is
distributed with a dummy DBMS.REL to satisfy link-time global
references for some older programs which may or may not use
DBMS, depending upon site specific circumstances. Once
support for DBMS-20 Version 6 is dropped, it is expected that
the need for seperate host specific DBMS link-time libraries
will be eliminated, and DBMSF.REL will no longer be needed.
2.3 Significant Or Incompatable Changes.
These changes may require changes to the DDL and application programs,
and to the operational procedures used when running the utilites.
They represent fixes required to make the product conform to the Task
Group Report and/or the DBMS-20 documentation, and to eliminate
problems and inconsistencies in the software or product behavior. The
majority of these changes have previously been introduced via the
Autopatch process for DBMS-20 Version 6, and through the DBMS Software
1. Usage mode conflicts.
The usage modes declared for the various areas in a defined
transaction must not conflict with the usage modes in effect
for those areas when the transaction is initiated. Each area
must be open with a usage mode which allows the type of
access required by the transaction.
DBS6A.DOC Page 6
2. Padding of SYSCOM character string items.
All SYSCOM character string items; AREA-NAME (ARNAM),
RECORD-NAME(RECNAM), ERROR-SET(ERSET), ERROR-RECORD(ERREC),
and ERROR-AREA(ERAREA) will (when set by DBCS) contain
strings that are left justified, and space padded to the
right. In Version 6, ERROR-SET, ERROR-RECORD, and ERROR-AREA
were padded with nulls. This predominently affects FORTRAN
applications, and occurs regardless of the setting of the
/CHARACTER switch when the FORTRAN program is translated by
FORDML. The file PADSCM.FIX has been supplied to allow
reinstating the Version 6 behavior for the Version 6.1
release ONLY. Refer to the installation guide for details on
how to apply this edit.
3. Buffer count/cluster count conflict.
When an area is opened, the buffer count must be evenly
divisible by the largest defined transaction cluster count
for that area.
4. DBINFO SS (Sub-Schema) command.
The DBINFO SS command now requires a privacy key if the
Sub-schema has a privacy lock. This has always been the
intended behavior, and conforms to the capabilites as
documented in the Version 6 DDL Programmer's Reference Card.
In order to lessen the impact that this might have, the
restriction that privacy keys must be typed in all upper case
has been eliminated.
5. SETDB/UNSET with open transaction.
Attempts to call SETDB or UNSET within the scope of an active
transaction produces ARG errors.
6. Sorted FINDs with range keys.
FIND Rse6 (not FINS6) now matches record type if supplied,
returns an ESA exception when the supplied search key is
greater than all record key values for the specified record
type, and returns ERROR-DATA set to 0 on exact matchs. These
changes could require application program modifications.
7. SCHEMA and existing database files in multiple directories.
When the /CREATE switch is given, Schema no longer attempts
to delete an existing database file before creating the next
higher generation. If an earlier generation exists, Schema
produces an informational message locating the existing file,
then supercedes it with the next higher generation number in
the specified output directory (defaults to DSK:). This
means that if a database file is located via a search path in
a directory that is not the specified or default output
directory, the existing database file will be retained, even
though a new one is being created in the output directory.
8. DELETE TRANSACTION changes.
Delete transaction can ONLY occur within the scope of an
active transaction. Also, when any transaction or command
that has been recorded in the journal is deleted, the
DBS6A.DOC Page 7
transaction or command will be re-opened if necessary (DBMEND
only), a JRTEXT block with text 'DELETED TRANSACTION' or
'DELETED COMMAND' will be added, and the transaction or
command will be closed such that it represents the 'null'
transaction or command when processed with either MERGE
BEFORE or MERGE AFTER. Note that if DBMEND is performing the
DELETE TRANSACTION, the true 'null' transaction will only be
created if the default backup images clause in the Schema
ENCL corresponds to the type of images that were being
journaled when the transaction was initiated.
9. DBMEND DISPLAY RUNUNITID option.
The RUNUNITID option was effectively defeated by Version 6,
since run-unit ids are always displayed. This option has
been removed from the documentation for Version 6.1, however
it will still be accepted as a no-op for Version 6.1. This
option will not be supported in subsequent versions.
10. AT MOST 1 RECORD PER n PAGES
For Version 6.1, DBCS will always look at the first page of a
window when checking distribution constraints for 1 RECORD
PER n PAGES, even if the via set order is PRIOR or FIRST. In
this way, target pages and overflow pages will contain the
same distributions, eliminating distribution violations.
11. DELETE MEMBERS and FORDML
FORDML no longer incorrectly requires or parses the keyword
SET after the MEMBERS FROM set-name clause of DELETE.
12. DBMEND EXCLUDE privacy keys
The EXCLUDE command now validates the privacy key (if any)
before it does the exclusion. This means the EXCLUDE command
will now produce a ?MNDPBA (Privacy Breach Attempted) error
message if no privacy key is given (or no administration
privacy key has been specified), and there is a privacy key
associated with EXCLUSIVE UPDATE usage mode for the specified
2.4 Changes Producing Performance Improvements.
These are not general or intended performance improvements, but rather
improvements resulting from the elimination of software problems.
Other than in these specific areas, no noticeable performance
differences between DBMS-20 Version 6 and Version 6.1 have been found.
1. For area locking, queued locks for run-units that have died
will be removed from the queue by other run-units. In
addition, conflict checking is performed correctly preventing
DBS6A.DOC Page 8
2. For area locking, only those areas that are open are locked
for the default transaction.
3. For page locking, the first run-unit to queue an upgrade lock
request no longer receives a deadly embrace exception. In
addition, the deadly embrace routine now completes many more
recursive walks before running out of stack space and
producing a premature deadly embrace exception.
4. A default transaction is no longer initiated when opening the
5. FIND NEXT of AREA no longer flushes all buffers on each call.
6. For databases with multiple physical pages per logical page
(PAGE SIZE IS greater than 512 WORDS), the time required to
update the database pages (usually at CLOSE TRANSACTION time)
may be noticeably less. There may also be a noticeable
reduction in the time required to CLOSE such database areas.
7. DBCS now correctly flushes buffers by checking for the
unmodified buffer that has been least recently used (per
2.5 Other Changes
1. SYSCOM items AREA-NAME and RECORD-NAME are updated after
every successful DML operation.
2. Currency registers are zeroed when the areas pointed to by
those registers are closed. The SYSTEM record will only have
currency when the area that contains it is open.
3. The sixth word in the .LOK file has been used to retain the
PID of the last run-unit that held the .LOK file while it was
in a consistent state.
4. All database files (.DBS, .AID, and .TMP) are modified on the
initial DML open to have a huge btye count, allowing the
files to be read via sequential I/O by programs wishing to do
5. The DBMEND BUILD command no longer places <CR><LF>s in the
output file after each block, and can now extract JRDATA
6. With COBOL-68/74 Version 12B LIBOL edit 1056, COBOL-20
Version 13, and FORTRAN-77 Version 7, non DBMS programs will
no longer be loaded with DBMS modules unless specifically
DBS6A.DOC Page 9
7. With COBOL 68-74 Version 12B compiler edit 1414, and COBOL-20
Version 13, DBMS USE procedures can be used from the
DECLARATIVES section of COBOL subprograms.
8. The Left half of the ERROR-DATA field should no longer
contain garbage values.
9. Quoted strings are now acceptable as transaction names for
the DML transaction verbs. The string must represent a
transaction defined in the DDL.
10. Multiple area-names are now parsed correctly on DBMEND
11. Switching JOURNALs in DBMEND such that an implict SCHEMA
switch is required will now correctly switch to the new
SCHEMA. Multiple SCHEMAs can now be used in a single
12. FORDML now correctly lets the transaction name on CLOSE
TRANSACTION and DELETE TRANSACTION be optional.
13. In DBINFO, areas can now be opened and closed between
14. The ABORT word in the LOK file has been broken into 2 flags
and a reserved field. There is now an ABORT flag, which has
the same usage as the original ABORT WORD, and a MODIFY flag,
which if on means that the LOK file is being destructively
updated by the current user. The later flag provides enough
information to allows other users to assume ownership of the
LOK file from a dead run-unit and be sure that the LOK file
is in a consistent, usable state.
15. The extra digit or space that in most cases followed the
ERROR-DATA value in the DBCS expression NOTE will no longer
16. When a run-unit terminates in a panic stop, ALL sub-schemas
are now checked in order to close any open database files.
Previously only the current sub-schema was checked.
17. DBINFO's /CREF output now correctly shows direct-key aliases.
18. The DBMEND /DELETE TRANSACTION transaction name
(DBMEND-BACK-OUT) now correctly appears in the journal
without the trailing digit 9.
DBS6A.DOC Page 10
3.0 KNOWN BUGS AND DEFICIENCIES
3.1 Known Documentation Problems
1. When storing a record that has Location mode DIRECT and a key
with a value of zero, DBCS first checks to see if the page
that is the current of the target area is applicable. If
there is no current of area, or if that page lies outside the
range of the record, DBCS starts its page selection search
with the first page in the range of the record. Both the DDL
Reference Manual (LOCATION MODE, Storing DIRECT records) and
the DML Reference Manual (STORE, LOCATION MODE DIRECT) are
incorrect in this respect.
2. A data-name defined in a Schema data clause must be unique
within the schema and can not be the same as any data-name in
a program that accesses the data base. The DDL Reference
Manual (DATA) fails to specify this restriction.
3. Appendix B, Organization of Schema Files and the In-Core
Sub-Schema, in the DBMS-20 DDL Reference Manual has NOT been
updated for Version 6.1 and is known to contain many
4. In chapter 4, under Error Messages, in the DBCS Error Message
Manual, the first sentence of the DBSSNI explanation should
be: The ?DBSSNI error message appears on your terminal when
you attempt to enter DBCS at other than the SBIND, INITDB, or
DBSTP$ entry points, and there is no sub-schema current.
3.2 Known Software Problems
1. DBMEND ignores all .TMP files, even those that are preserved.
Therefore DELETE TRANSACTION and MERGE BEFORE/AFTER will not
move Temporary Before or After images from the journal to the
preserved .TMP files.
DBS6A.DOC Page 11
3.3.1 General Restrictions -
1. The directory specified for .DBS files is not stored in the
schema file for .AID or .TMP file specifications (they have
device, filename, and file type). If the database files do
not reside in the connected directory, a device must be
specified which is a logical name defining the directory in
order for the .AID or preserved .TMP files to properly reside
with the database files. This problem will be addressed in
some subsequent release.
2. Before a database area can have its .TMP files PRESERVED, it
must be initialized (have the ASR written) while the area is
not declared TEMPORARY.
3. ASSIGN INDEX FOR set-name CHAIN SIZE IS 1 RECORD does not
produce the specified index node size in all cases. The
minimum chain size that can be used given the current sorted
set design is 2.
3.3.2 XDML Specific Restrictions -
1. Only one INVOKE may be done per utility invocation.
2. Only limited COBOL data declaration entries, no
qualification, no subscripting, limited OCCURS processing,
and no FORTRAN declarations are parsed from the invoked
3. DBCS messages can not be logged.
4. Once XDML is EXITed, either explictly or via an implicit
EXIT, it cannot be restarted, re-entered, or continued.
5. Pressing keypad keys causes XDML to echo a bell <BELL>
character and keypad keys still function within commentary
6. In TOPS-20 release 5 and 5.1, the COMND% JSYS function .CMTOK
returns the wrong error message when the token cannot be
parsed. This manifests itself in XDML as "?Invalid Directory
or User Name" when a "/" is not seen in a DBKey (e.g. during
an ACCEPT or FIND rse1 command").
7. Privacy Keys currently echo in batch LOG files.
8. Privacy keys are always accepted from the TTY: input stream,
even if the INVOKE, OPEN, or ENABLE is processed from a TAKE
DBS6A.DOC Page 12
9. Recursive Commands are not allowed.
10. The DML verb ACCESS, the COBOL DML verbs IF and USE, the
FORTRAN DML verbs END and USE, the non DML verb DBCS
routines, and the FORTRAN intrinsic functions are not
11. The FETCH command does not accept a list of data items (like
4.0 INSTALLATION INSTRUCTIONS
Before installing DBMS be sure to read the DBMS61.BWR file and the
DBMS-20 Installation Guide for detailed installation instructions.
5.0 INTERNAL CHANGES
Autopatch Tape 4
364 Error 0357 during simultaneous updates.
365 DBMEND, /MERGE BEFORE, "INVALID BLOCK DESCRIPTOR".
366 "ILLEGAL MEM. REF." from COBFUN or "FREE BLOCK OVERLAP" from
367 DBMEND, "INVALID BLOCK DESCRIPTOR ON JOURNAL PAGE 2".
373 Consecutive CALC FINDs to the same nonexistent database page,
"MEMORY PROTECTION VIOLATION".
401 Database with 17 areas, SBIND fails, NOT ENOUGH MEMORY.
405 DBMEND, areas that share buffers get clobbered during /DEL TRA.
407 Consecutive CALC FINDs to same nonex. database page
generate MEMORY PROTECTION VIOLATION. Replaces edit 373.
410 ILLEGAL MEMORY REFERENCE when lock routine checks lock page
for shared locks.
411 Exception 0157 when trying to close database after referencing
nonex. database page.
Autopatch tape 5
412 Exception 0157 when trying to close database after a smaller
than normal cluster (end-of-area) has overwritten a normal
DBS6A.DOC Page 13
415 822 exception when modifying optional nonmember of a sorted
set, if the sort field is modified.
416 ERROR-STATUS has bad data after DBSXWX message.
417 Program sleeps in OPEN JOURNAL when concurrent run-unit has an
420 DBMEND gives "INVALID BLOCK DESCRIPTOR" or PA1050 errors.
Replaces edit 367.
421 Edit 416 trashed ERROR-STATUS.
422 Typo in edit 417, re-released.
423 Large .SCH file confuses DBINFO, "CORISA" message after
424 AREA-NAME and RECORD-NAME not updated after successful FIND
425 Inconsistent behavior when PMAPing nonex. page in a null file
section of a long file.
426 JSYS error return 777777 reported from ENQ call at LOK.OP+2.
427 SETDB$ gets MEMORY PROTECTION VIOLATION.
430 No way to tell in journal if DBMEND deleted a transaction.
431 FORDML does not allow CLOSE or DELETE TRANSACTION without
optional transaction name.
432 XX63 errors when deleting a transaction, using journal that
is brand new or has just rolled over.
435 Edit 422 poses potential buried update problem.
436 JRDATA gets a ?Mem Prot Violation when trying to extract the
SIZE argument from the arg list left over after the call to
437 FIND rse6 not doing indexed find when the set is unified (no
global DUP clause).
441 Bad byte pointer in edit 415.
442 FIND PRIOR/LAST can return undeserved exceptions, bad currency
for multi member sets.
443 FFUFP error returns are trashed, in FF.UFP (DBMIO).
444 DELETE TRANSACTION/DBMEND MERGE BEFORE produce 1402/1602
exceptions or corrupted data bases when the journal is
formatted just so.
446 Make sure that all DBKEYs of areas being closed are removed
from the in-core blocks (includes all currency registers).
The SYSTEM rec will now appear current only when the area in
which it exists is opened.
447 Eliminate xx60 and 0356 exceptions for long files opened
read-only. Also eliminate 0157 exception when clustering.
Supersedes edit 425.
450 DBINFO does not allow individual areas to be opened and closed
between DISPLAY commands.
451 Eliminate xx02 exceptions when new index block targetted for
area other than where existing index blocks exist. Completes
6%113 and allows use of V5A data bases without addition of
ASSIGN INDEX to the Schema.
DBS6A.DOC Page 14
Also eliminate xx02 exceptions when new buoy record targetted
for area other than record which preceds it.
452 DDL transaction syntax; global USAGE-MODE followed by
individual USAGE-MODE doesn't work.
453 Reserved for Autopatch
454 Reserved for Autopatch
455 Reserved for Autopatch
456 DBMEND drops its locks on the journal at inopportune moments
during a /DEL TRA, allowing other run-units to place a
transaction on the journal after DBMEND has released it and
before a bad transaction has been backed out. This edit
continues the work of 323.
457 Prevent FIND6/FINS6 from returning record of wrong type.
Cause range keys to match and return ERROR-DATA properly.
Change range match exception from NRS to ESA per documentation.
Eliminate other pathalogical problems with sorted finds.
Autopatch tape 6
460 Restrict the case in which DBMEND will back out a potentially
incomplete transaction by checking that: there are no other
currently active database updaters; the count of users that
have the journal open is not 0. These conditions are
symptomatic of a system crash while an update transaction may
have been in progress.
461 Eliminate PA1050 after DBMEND HELP command. Prevents page
create traps used in native core management, and other ills.
462 Don't expand INVOKE statement when using COBOL 68274 convertor.
Corresponds to COBOL edit 1413.
463 Stop needless JR-BUF flushes during FIND NEXT OF AREA.
464 Allow DBMEND to get control of the lock file if the last
lock file controller died before releasing it.
465 Cause DBCS to set a huge byte count for all .DBS,.TMP, and .AID
files. Allows utilities doing byte I/O to read the data.
466 Cause DBCS error when DELETE TRANSACTION is executed
and a defined transaction is not active. (I.E., user
did a DELETE TRANSACTION without an OPEN TRANSACTION.)
467 Prevent xx58 exceptions when calling FIND6 with currency
suppression. Make text string arguments work with FIND6
and currency suppression.
470 Find LAST/PRIOR/-offset of area fails with exception 326
when target page does not exist in area.
471 Cluster pages still mapped at CLOSE area when area opened
update and non-ex. cluster read (calc FIND to non-ex. rec).
472 SCHEMA deletes old .DBS files, even if they are in other
directories in a logical definition.
473 INI.LK causes ill.mem.ref. when address returned from ALCME.
is on a page boundary.
474 DBMEND BUILD Command does not extract JRDATA blocks.
475 When setting area locks; For any area; retrieval-user1/
retrieval-user2 can be seen as a conflict (user2 gets queued),
update-user1/retrieval-user2 may not be seen as a conflict
(both locks get granted), and conflicts with queued locks for
dead run-units will eventually hang up a simultaneous access
environment until a DBMEND/Delete transaction is done. Also,
if the lock file fills up, concurrent users will hang and a
DBS6A.DOC Page 15
DBMEND Abort command must be issued to kill all run-units.
476 Reserved for Autopatch
477 Reserved for Autopatch
500 Reserved for Autopatch
501 The default transaction always puts a lock on all areas
defined in the subschema, but only the areas that are
opened at the time of the transaction should be locked.
502 Using the default transaction around the opening and closing
of areas will put unnecessary locks on areas other than the
one currently being opened.
503 Expansion of edit 437.
504 Eliminate bogus deadly embrace exception RNA 20028 on first
upgrade of a shared lock to an exclusive lock for a given page.
Also reduce the amount of stack storage required to do page
lock deadly embrace detection, and prevent stack overflows
in error processing after exception RNA 20042 (deadly embrace
loop ran out of stack space).
505 Produce exception if open transaction when calling SETDB
(ARG 37033) or UNSET (ARG 37034).
506 DBMEND /START *:LAST not finding the last transaction in the
507 DBMEND BUILD with DISPLAY DATA not outputting blocks properly.
474 forgot one offset.
510 DBMEND /SCHEMA ..., /SCHEMA ... gets ILLEGAL INSTR.
511 DBMEND /DELETE TRANS just quits when it can't get the journal
file. This edit will release any dead run-unit's locks before
512 DBMEND BUILD outputting CRLF between blocks.
513 Error in size of data storage during a BIND call can cause
the wrong record name to be used for the exception.
514 Cause DBMEND Delete Transaction for the potentially incomplete
transaction case to 1. Re-open the transaction, 2. Correctly
nullify the transaction by dumping AIs, 3. Be more thorough
in preventing backing out good transactions.
515 STATS sometimes clears stats when not requested.
516 BIND$ code not properly detecting arg for "ASSIGN JOURNAL...
BUFFER COUNT IS data-name".
517 Change DBMS installation .CTL file to conform to LIBOL/C74LIB
edit which prevents pieces of DBMS from being loaded with
520 Ill-mem-ref during store of direct record with 0 key. Also,
eliminate garbage in left half of ERROR-DATA if no JSYS
error data is being supplied during exception.
521 Eliminate bad definitions for pointers of control-line in tool
522 FIND-3 on unopened area produces 360 exception, should be 301.
523 Used the wrong AC in edit 511.
524 Area spec'd in CLUSTER but not USAGE for a transaction causes
a DDLSAF error...misleading. Message should point out the
525 Attempt to DELETE a retrieval transaction within a run-unit
causes a 1463, leaves locks behind. Also,fix checking of
area open status .vs. delcared usage in the transaction.
526 A record is stored in wrong window if "1 SET PER 4 PAGES".
owner is calc record - first member of second sorted set
DBS6A.DOC Page 16
is stored in first set's window.
527 Sharing buffers among areas causes havoc such as executing
TMP/AID code when no TMP/AID files in use, Illegal Memeory
References of various causes, Unexpected Channel 22
interrupts usually accompanied by massive numbers of DB
pages mapped into the process, possible corrupted data
base files, and other random events.
530 Edit 450 wiped out ability to set page limits in DBINFO.
531 DBCS allows the uneducated user to allocate area buffers
such that a transaction cluster will not fit in. This can
result in variety of errors, eg., 1256/15002.
532 Reserved for Autopatch
533 Reserved for Autopatch
534 Reserved for Autopatch
Autopatch Tape 7
535 Resolve ALCPA. call from SCHIO after edit 473. Corresponds to
COBOL edit 1467.
536 A field level, sort key, MODIFY verb after OPEN TRANSACTION
may cause memory protection error or 856/15008, 856/15009,...
The problem was PAGHDR was not inited at GETIO.
537 FORDML may place the ')' of a long BIND call in column 73,
causing 'unmatched paren' from FORTRA.
540 Rework of edit 412 to clear BH.FLG and BH.PAG of only
those buffers about to be over written. This edit removes 412.
541 A rework of edit 464 which "Allowed DBMEND to get control
of the lock file if the last lock file owner died before
releasing it." Edit 541 makes sure that DBMEND doesn't
just release the "dead" run-unit's locks and lock file if the
lock file was in an inconsistant state. It reminds the user
to do an ABORT and DELETE TRANSACTION so the "trashed" lock
file is discarded.
542 BIND$ code not properly detecting arg for "ASSIGN JOURNAL...
BUFFER COUNT IS data-name". Replaces edit 516 which failed
when extra bits set in left half.
543 Makes ERRRG. check to see if "exception" macro was called with
2 or three args, if called with 2 args it zeroes out the left
half if ERDATA. This should end the problem of trashed
544 Make edit 426 compatible with edit 543, which is inadvertently
wiping out the left-half ERROR-DATA information that 426 set up.
545 Prevent xx59 (NMA) error when non-sort FIND-6 request
does not include real DATA items.
546 Reserved for Autopatch
547 Reserved for Autopatch
550 Reserved for Autopatch
551 Extend the usefulness of edit 514 by creating a dynamic
linked list of memory storage for the table of already
compared pages. This means we never backout a transaction
whose database image is identical.
552 Decrease the overhead of edit 447 by doing at most an RMAP
and maybe a PMAP (unmap) jsys for a PMAP failure with LNGFX9
553 Allow the transaction verb processors to accept a transaction
name as a quoted string.
DBS6A.DOC Page 17
554 No symptoms but CUR.RB must be indexed via (SS) and the
restore currency loop doesn't loop back far enough. ie.
AREABLK is never advanced to the next AREA.
555 Standard deviation routine sometimes causes divide by 0.
556 The journal is not properly set for overwrite when
the transaction limit is reached (Size is....). The only
effect of the error is that DBMEND will report an "Invalid
Block" descriptor on a MERGE BEFORE. The MERGE operation
is successful, only the message is incorrect.
557 Reserved for Autopatch
560 Reserved for Autopatch
561 Reserved for Autopatch
563 Allow multiple area names on DBMEND commands (AID, EXCLUDE,
FORCEOPEN, OPEN, PRESERVE, etc...) to be parsed as documented.
Also make sure CLOSE closes the area(s) specified.
564 Make DBMEND /MERGE AFTER with end boundary END *:LAST stop
at the last journal transaction, not the start boundary.
565 Make DBMEND change SCHEMAs when a new journal is specified
which identifies a SCHEMA other than the current one. Also
prevent numerous SCHEMA switches from causing a SOF due to
exceeding PID quota.
566 Give NNS exception at SYSREC creation if some of the sets
having SYSREC as owner are missing from the current
567 Reserved for Autopatch
570 Reserved for Autopatch
571 Reserved for Autopatch
Autopatch Tape 8
572 Do proper buffer selection in GETBUF. Was not choosing
oldest UNMODIFIED buffer.
573 Make DBINFO set artificial cluster sizes for all areas for all
transactions, to avoid 958/24006 exceptions (was only setting
default transaction, which is the only one used, but all
are checked during OPEN).
***** Start of DBMS-20 Version 6.1 *****
1100 Move Revision History from DBSDCL.MAC into DBHIST.MAC.
1101 Add ANSI-78 FORTRAN CHARACTER data support to FORDML.
1102 Fixup for edit 527 - create a new loc, BH.AREA, to hold
AREABLK. This edit simplifies some low level code.
1103 Reverse DBINFO SS privacy key check to check for key when
needed. Also convert privacy keys to upper case for
1104 Officially decommit DISPLAY RUNUNITID since it does not
actually function in V6. Leave command option as no-op
1105 6.1 repackaging edit. Remove host language assembly
dependencies, create DBMS.REL, modify host language
1106 Add XDML to the product.
1107 Comment out Tape Journal support code, leaving in hooks
where possible. Also eliminate MERGE BEFORE start boundary
DBS6A.DOC Page 18
check problem when label block is encountered. This problem
cannot occur in V6.
1110 Merge COBOL modifications to shared files, place update
warning in same.
1111 Cause record distribution of 1 RECORD PER n PAGES to
always check the first page of the window during overflow
page selection. Also prevent consideration of any distribution
when selecting a page for a new index record.
1112 In DBINFO, If a page has calc chains but no records, make
sure the page is considered/listed for DISPLAY CALC.
1113 Make FORDML accept the PRIVACY KEY clause after OPEN ALL.
1114 Eliminate problems with ALIASes. Make SCHEMA link CL for
2nd and following ALIAS/USING under proper DL. Prevent
bogus DC set insert for DIRECT key ALIAS. Cause DMLVOK
to generate proper data descrip for DIRECT key ALIAS.
1115 Eliminate line continuation problems at end of statement in
the DML (FORDML, COBOL compiler) generated BIND call lines.
1116 Correct SCHEMA processing of Sub-schema record item + lines.
1117 Allow journal buffer data name declaration to be generated
by the DML processors (FORDML, COBOL compiler) while
1120 Allow FORTRAN programs to specify a privacy key of less
than 5 chars.
1121 Make sure the sharer counts are properly decremented
after a journal close, and the update share flag cleared
after close JOURNAL/RUN-UNIT.
1122 Eliminate bogus requirement for keyword SET in DELETE
MEMBERS clause for FORDML.
1123 Correct MEM.UNL to properly return to the caller on all
instances of a record not being a member of the specified
set. Removes exception RNM 28009.
1124 Eliminate infinite loop when find rse5 get record with
location mode other than calc. Give a ARG error if so.
1125 Change the test to determine if a transaction is open (for T-O prompt)
from psw.tac to trnact.
1126 This edit is a rework of edit 541 which was:
"A rework of edit 464 which "Allowed DBMEND to get control
of the lock file if the last lock file owner died before
releasing it." Edit 541 makes sure that DBMEND doesn't
just release the "dead" run-unit's locks and lock file if the
lock file was in an inconsistant state. It reminds the user
to do an ABORT and DELETE TRANSACTION so the "trashed" lock
file is discarded.".
Edit 541 placed a zero in LK.LLL to indicate the lock file
was in an indeteminate state but in so doing we lost the
value of the PID (ie the knowledge of who owns the lock file).
Change the LK.ABO word to a LK.ABO bit (in the same word)
so we can have space for 35 other flags in the lock file.
LK.MOD is the first new flag and it will be set to indicate
that the job whose PID is in LK.LLL is actually modifing the
lock file. For the time LK.MOD is set, a very short time,
we know that the lock file may be in an indeterminate state.
1127 "DELETE ALL MEMBERS FROM wrong-set-name" returns as if it succeeded.
DBS6A.DOC Page 19
There is no indication that owner does not own "wrong-set-name".
This edit will give excep DSO (8007) if DELETE with a MEMBERS clause
and there are no members and we are at top of DEL.TREE (ie
1130 The ERROR-DATA number sometimes has an extra digit appended to it.
The storage variable TMPNUM(X) was not cleared to nulls, important
when variable is less than one word and less than the last variable.
1131 If ABOCLS (abortive close) called from DBPST$ is called before
AREALST(SS) is setup, ie at BIND time, the user program will
ILL MEM REF. Run THEFOI from DBMSV6 distribution tape with FORTRAN
version 7 and DBMSF.EXE. Solution is to test AREALST(SS) for a
non zero value - if zero just return as no areas can be open.
1132 DBMEND DOES NOT ACCEPT, AS IT DID IN VERSION-5, A COMMA AS A LEGAL
SEPERATOR FOR THE /DISPLAY ARGUMENTS.
1133 A /SCHEMA wrong-name FOLLOWED BY /SS CAUSES AN ERROR MESSAGE AS IT
SHOULD BUT SUBSEQUENT /SCHEMA AND /SS COMMANDS CAUSE INCOMPLETE DATA
TO BE DISPLAYED IF /DISPLAY CREF IS ISSUED. ALSO THE SUBSCHEMA NAME
IS GARBAGED IN THE DISPLAY REPORT.
Solution is to re-init the world - close the data-base - release JFNs
- free memory - zero the ss area - initialize some variables to zero.
1134 Avoid possible illegal memory reference when DELET$ is called with
only two arguments (ie no MEMBERS clause). Don't try to pick up
third argument if there is none.
1135 "We have our 02's defined as size is n words... The data
definitions are in 03's that are mixed DISPLAY-7 and COMP.
XDML flags the first and every DISPLAY-7 item as 'Usage mode
conflicts'... I think the reason is that XDML makes the erroneous
assumption that the 02 is DISPLAY-6. Our other schemas that have
mixed DISPLAY-6 and COMP items will invoke properly..."
Fix is to not set ELM1FLG at DLD6 when it is called from DLWRD
(ie SIZE IS). This allows CURUSG to be set later by P$D7
(ie 03 Usage clause).
1136 Be sure to check "privacy" keys for DBMEND's /EXCLUDE
1137 In DBBIND, for TMP files, check the special case for all sub-schemas
(DBINFO /SS<crlf> generates a BMASK = 0) normally -1 = all ss's
1140 Dont allow GENMEM to give away the hi-seg memory.
1141 Get rid of a macro Q error from dbs10.mac
1142 Eliminate unused DBMEND Error, Warning, and Info messages.
1143 Dont let XDML change the usage of the the record's elementary items
after the first one is defined. This check was being done below the
02 level but did not operate at the 02 levels under the 01 (record)
1144 Avoid push down list overflow when there are no SETs and command is
SHOW CURRENCY ALL. ie Dont call EXCORE with a null argument.
1145 Avoid ?duplicate identifier found... for multiple records specifing
the same LOCATION MODE DIRECT identifier. This is not an error.
1146 More for SIZE IS n WORDS fix. have DLWRD dispatch to dld6, dld7 or
dld9 depending on any previously defined elementary items. Do not
always do a simple default to display-6 (dld6) as this can produce
1147 Give version number variables DEC reserved names, and make them less
visible. Clears up problems with IQL.
1150 Have XDML, when echoeing a take file and logging I-O, supress the
command echo from being logged, as output, in the I-O log file.
It (the echo) will still be logged as command input.
DBS6A.DOC Page 20
1151 XDML, when it creates a UWA pointer to a DB for an ALIAS does
the wrong thing. It adds in the whole byte pointer when it wants
to get only the byte size.
1152 Release the dbs page 0 lock (placed as part of the jrn locking
mechanism) when unlocking the journal. This function went away
when the default transaction envelope was removed from OPEN JOURNAL.
1153 Fix XDINVO so it can find a control line for an ALIAS resolution
of a DIRECT key. Note it cannot be found in the $D.C set as it is
not a member.
1154 Allow XDML to handle DISPLAY and ACCEPT on records that have no
data items, or whose data items are excluded at the subschema level,
by giving new '%XDMNDI' warning.
1155 Eliminate buried and lost update potential, DBCS data structure
corruption, and performance problems associated with the two
flavors of UFPGS%, multiple physical pages per logical database
page, the page ranges per file section table, and exclusive
update using page locks.
1156 Check for multiple sub-schemas during a panic stop, make sure
all files get closed.
1157 Be sure to output a SIGST (start significance) command. This
was not being done for the case of S9V99, ie one place of
1160 Add changes to allow useful RNA exceptions to be generated when
attempting simultaneous access in a CFS environment.
1161 Make sure XDML still requires a privacy key for OPEN, if specified,
even when we are enabled as the result of the ENABLE command and
was no adminstrative key. Now set M.PRIV only if an adminstrative
key was seen, and set M.ENAB when we are ENABLED.
1162 Make DBINFO command /CREF display data concerning direct-key
aliases. Output the alias for the direct-key and under the
direct-key the name of the aliased set.
1163 Suplement to 1156, make sure ABOCLS code also works for DBMEND, and
any other utilities that do not use the schema stacking mechanism, but
just refer to one sub-schema thru SS.
1164 Now that SCHEMA processes "+" signs in the sub-schema section
make sure that XDML just ignores any redefines passed as a text
line. In the past this condition caused the XDMLNL error message.
1165 Allow the DBCS default transaction to correctly be applied and
removed around the FIND/GET for XDML's FETCH. The prevents extant
locks left over after the FETCH completes.
1166 Report journal not available or in use by another run-unit if its
tied up by another CPU. Prevent leaving around an opened but not
locked journal if the lock fails in a CFS environment. Fix yet another
DBMEND SCHEMA/SCHEMA failure. Turn off DBMEND's No preserve bit
when resetting flags to allow further open type operations to work.
1167 Allow DBMEND to correctly label a deleted transaction end as
DBMEND-BACK-OUT (not DBMEND-BACK-OUT9)
1170 Allow DBMEND to correctly record the size of the jrn file in the label
block. Must refer to the last used jrn buf.
1171 Allow production of correct Bachman diagram when the CRU owns a set
whos members are not part of the current sub-schema.
DBS6A.DOC Page 21
6.1 DIGITAL Recommendations To The User.
1. DIGITAL recommends the user read and understand the supplied
documentation thoroughly before attempting to install and use
the supplied software.
2. DIGITAL strongly recommends the use of the journalling
facility to preserve database integrity.
6.2 Suggestions From Users.
These suggestions have been accumulated from various sources, and
their appearance here does not imply any commitment on the part of
DIGITAL to implement any of the items.
6.2.1 General Suggestions. -
1. When using area locks and looking for the next run-unit to
wake up in order to allow my queued lock to get serviced
sometime, in addition to checking for queued locks of dead
run-units (to remove them), also check for active retrieval
only locks for a dead run-unit, and remove them also.
6.2.2 XDML Specific Suggestions. -
1. Add ability to allow more than one, plus multiple Schemas and
Sub-Schemas to be INVOKEd.
2. Parse a larger subset of COBOL data descriptions from the
Sub-Schema. Process and use RENAMES and REDEFINES. Allow
proper nesting of OCCURS clauses at other than the elementary
3. Parse FORTRAN data declarations in Sub-Schema.
4. Allow display of group item to show nested items like COBDDT.
5. Add XDML local variables and counters.
6. Add pointer verification/correction facilities.
DBS6A.DOC Page 22
7. Expand the HELP facility to provide HELP for "HELP
8. Allow parsing the schema name as a filespec (with appropriate
9. Add IF for testing error conditions and data, and general
10. Support an 8 bit data type.
11. Add ability to ASSIGN all default commands back to their
pertinent keys ASSIGN DEFAULT-COMMAND (TO) ALL-DEFAULT-KEYS,
and ability to deassign all keys, and just those with default
commands DEASSIGN ALL-KEYS, DEASSIGN
[End of DBS6A.DOC]