Trailing-Edge - PDP-10 Archives - BB-4148F-BM_1984 - documentation/dbms61.doc
There are no other files named dbms61.doc in the archive.

DBMS.DOC -- Changes from Version 6(363) to Version 6.1(1171)
June 1984

COPYRIGHT (C) 1974,1984 BY



DBS6A.DOC                                                       Page 2

DBMS.DOC -- Changes from Version 6(363) to Version 6.1(1171)
June 1984


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
         performance problems.

     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
Version 6.1.

        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-74        C74LIB.REL,C74SHR.REL,C74O12.EXE,DBMS.REL
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.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.

                All AREA-IDs.

         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),
         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.

         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.

         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.

         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
         unnecessary waits.
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
         command lines.

    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.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.

3.3  Restrictions
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


Before installing DBMS be sure to read the  DBMS61.BWR  file  and  the
DBMS-20 Installation Guide for detailed installation instructions.


Autopatch Tape 4
364     Error 0357 during simultaneous updates.
370     Reserved.
371     Reserved.
372     Reserved.
373     Consecutive CALC FINDs to the same nonexistent database page,
374     Reserved.
375     Reserved.
376     Reserved.
377     Reserved.
400     Reserved.
401     Database with 17 areas, SBIND fails, NOT ENOUGH MEMORY.
402     Reserved.
403     Reserved.
404     Reserved.
405     DBMEND, areas that share buffers get clobbered during /DEL TRA.
406     Reserved.
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

        size cluster.
413     Reserved.
414     Reserved.
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
        open transaction.
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
        /SS command.
424     AREA-NAME and RECORD-NAME not updated after successful FIND
        or STORE.
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.
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.
433     Reserved.
434     Reserved.
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).
440     Reserved.
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).
        exceptions or corrupted data bases when the journal is
        formatted just so.
445     Reserved.
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
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.
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
        it exits.
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
        non-DBMS programs.
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
        specific problem.
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 
        ERROR-DATA register.
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
562     Reserved
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).
574-1077        Reserved.

***** 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
        for V6.1.
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
        processing ACCESS.
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
        immediate sons).
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.
        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
        MDT errors
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
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
         item level.

     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
         IF/THEN/ELSE primitives.

    10.  Support an 8 bit data type.

    11.  Add ability to ASSIGN all  default  commands  back  to  their
         and ability to deassign all keys, and just those with default
         commands          DEASSIGN         ALL-KEYS,         DEASSIGN

[End of DBS6A.DOC]