Multics Technical Bulletin                             MTB-735-02
  Language Archive Support

  To:       Distribution

  From:     Richard Gray

  Date:     24 April 1986

  Subject:  The  Implications  of  Archive  Component  Support  for
            Multics Languages

  1.  Abstract

       This MTB  proposes the addition of support  to languages for
  accessing sources  that are components  of archives.  The  MTB is
  intended for language and related utility developers/maintainers.
  The  MTB focusses  on (a)   adding support  for explicit  archive
  component pathnames,  (b) defining and  adding support for  a new
  implicit   archive  component    pathname  convention,   and  (c)
  discussing  the implications/effects of  (a) and (b)  on language
  use of source segments.

  Comments on this MTB should be sent to the author -

       via Multics mail:
          JRGray.Multics on System M

       via posted mail:
          Richard Gray
          Advanced Computing Technology Center
          Foothills Professional Building
          Room #301, 1620 - 29th Street N.W.
          Calgary, Alberta T2N 4L7
          CANADA

       via telephone:
          (403)-284-6400
          (403)-284-6410

          via forum:
            >udd>Multics>JRGray>meetings>Archive_Component_Support
          (ac_sup)

  _________________________________________________________________

  Multics project  internal documentation; not to  be reproduced or
  distributed outside the Multics project.


  MTB-735-02                             Multics Technical Bulletin
                                           Language Archive Support

                          TABLE OF CONTENTS

  Section    Page  Subject
  =======    ====  =======

  1          i     Abstract
  2          1     Preface
  3          2     Introduction
  4          3     Definitions
  4.1        3     . . Explicit Archive Component Pathnames
  4.2        3     . . Implicit Archive Pathnames
  5          4     Advantages
  6          4     Disadvantages
  7          5     Language Use of Pathnames
  8          6     Notes


  Multics Technical Bulletin                             MTB-735-02
  Language Archive Support

  2.  Preface

  This  MTB  proposes  the  addition  of  support  to languages for
  accessing sources  that are components  of archives.  The  MTB is
  intended for  language and related utility  developers.  This MTB
  is not  designed to be a  comprehensive evaluation on all  of the
  many  possible methods of  accessing archive components;  it just
  discusses some aspects of special value for languages.

  In  the first  section, explicit  and implicit  archive component
  pathnames  are  defined.   The  next  two  sections  describe the
  advantages  and disadvantages  of each.   This is  followed by  a
  section  describing how  languages will  access sources utilizing
  these   changes.   Finally,  there   is  a  section   on  related
  considerations.


  MTB-735-02                             Multics Technical Bulletin
                                           Language Archive Support

  3.  Introduction

  Since source segments are usually stored in archives, it would be
  convenient  if  languages  could  access  these sources directly.
  Currently languages (translators,  debuggers) access source files
  as  simple storage  system segments.   We intend  to extend  this
  behaviour to include archive  components.  This MTB describes the
  current  way  some  programs  refer  to  archive  components (the
  explicit archive  component convention), and also  proposes a new
  mechanism called the implicit archive component convention.

  This MTB  will describe the implications of  these mechanisms and
  their implementation.


  Multics Technical Bulletin                             MTB-735-02
  Language Archive Support

  4.  Definitions

  4.1.  Explicit Archive Component Pathnames

  An archive component is specified explicitly when the description
  of the file includes an archive  name, followed by a double colon
  (::),  followed  by  a  component  name.   This  is  the  archive
  component  pathname that  is currently  supported by  many of the
  system routines and is documented in the MPM Reference Manual (AG
  91).

  Example:  >udd>Ex_proj>Ex_person>foo::bar.pl1

  4.2.  Implicit Archive Pathnames

  An archive component is  referenced implicitly when the entryname
  includes no  archive specification but  one is deduced  using the
  following rules:

  1. There is no explicit archive component (no double colon).

  2. A  storage  system  segment  does  exist  with  the  specified
     entryname.

  3. The segment is an archive (it has a valid archive header).

  4. There  is a valid  archive component in  the archive with  the
     same name as the entryname.

  5. The entryname does not have the '.archive' suffix.


  MTB-735-02                             Multics Technical Bulletin
                                           Language Archive Support

  5.  Advantages

  Explicit  archive  component   pathnames  allow  the  unambiguous
  reference to archive components, and are upwardly compatible with
  current usage.   The explicit convention will  also allow related
  internal  include   files  (sources  only  referenced   within  a
  subsystem) to be  stored in one archive.  This  will help prevent
  name-space pollution for include files.

  Implicit  archive component  pathnames will  allow sources  to be
  archived  and still referenced  in the same  manner as when  they
  were normal  storage system segments (assuming  the sourcename is
  an addname on the archive).  The  user does not have to know that
  the source is a component of an archive.

  6.  Disadvantages

  The  explicit archive  component convention  has the disadvantage
  (compared to the implicit convention)  that the user must specify
  that the source is a component of a particular archive.

  There are a few minor disadvantages in connection with the use of
  the implicit archive component convention.  (i) We are precluding
  the use  of implicit archive components that  have the ".archive"
  suffix to  allow references to entire archives.   (ii) An attempt
  to  refer to an  entire archive by  a name that  does not have  a
  ".archive"  suffix  will  result  in  an  unintentional  implicit
  archive  component reference.  This  will probably result  in the
  status  code  error_table_$no_component  being  returned  by  the
  appropriate routine.


  Multics Technical Bulletin                             MTB-735-02
  Language Archive Support

  7.  Language Use of Pathnames

  Languages use two types of  sources:  the main source segment and
  include files.  The  main source segment is found  directly via a
  pathname argument.  Include files are found using entrynames that
  refer  to  sources  indirectly   via  the  search_path  mechanism
  ('translator' search path).

  We  propose  to  add  archive  component  support  to  the module
  find_source_file_.    This  module  is   used  by  most   of  the
  translators to reference the main source segment.

  We  also propose  that we  add archive  component support  to the
  module find_include_file_.  This module is used by most languages
  to  reference  include  files.    When  an  explicit  archive  is
  specified,  then the search  path mechanism is  used to find  the
  archive.

       Example:  %include alm::sthedr

       The use  of the explicit archive components  could group all
       those include files that are used internally by ALM that are
       of no interest to outside programs.

  Modifying   initiate_file_$component  to  support   the  implicit
  archive  component  convention  will  automatically  extend  this
  support  to  any  module  that  uses  initiate_file_$component to
  support  the   explicit  component  convention.    This  includes
  find_source_file_ and find_include_file_ .

  Some   translators  regenerate   source  pathnames   and  related
  information from pointer values via the translator_info_ routine.
  This routine will be modified to  allow for the return of archive
  component pathnames.


  MTB-735-02                             Multics Technical Bulletin
                                           Language Archive Support

  8.  Notes

  The widespread use of the implicit archive convention will result
  in more archives  that have addnames on them.   The incorrect use
  of addnames on archives by  some commands can currently result in
  the  destruction  of  the  archive.   These  commands  should  be
  modified to prevent such tragic occurrences.

  For example, a user editing a source in qedx, types:

            w blat_util_.pl1

  If  he is  in the  directory that  contains bound_blat_.s.archive
  that has  blat_util_.pl1 as an addname,  then blat_util_.pl1 will
  overwrite the entire archive.