DataMuseum.dk

Presents historical artifacts from the history of:

Rational R1000/400

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Rational R1000/400

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦4b6084459⟧ TextFile

    Length: 151043 (0x24e03)
    Types: TextFile
    Notes: R1k Text-file segment

Derivation

└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
    └─ ⟦5a81ac88f⟧ »Space Info Vol 1« 
        └─⟦b65e76a9c⟧ 
            └─⟦this⟧ 

TextFile




        




















                   Rational Environment Release Information

                               Release D_12_5_0

        





       Copyright  1991 by Rational



       Part Number: 508-003207-005

       September 1991 (Software Release D_12_5_0)


















        \f




       ENP-100i and CMC are trademarks of CMC Corporation.

       EXOS 204 is a trademark of Excelan, Inc.

       IBM is a registered trademark and RISC System/6000 is a trademark
       of International Business Machines Corporation.

       PostScript  is  a   registered   trademark   of   Adobe   Systems
       Incorporated.

       Rational   and  R1000  are  registered  trademarks  and  Rational
       Environment is a trademark of Rational.

       Sun Workstation is a registered trademark  of  Sun  Microsystems,
       Inc.

       UNIX is a registered trademark of AT&T.




                                   Rational
                             3320 Scott Boulevard
                      Santa Clara, California  95054-3197


       1.  Overview

       This D_12_5_0 release of the Rational Environment is primarily a
       maintenance release that:

       *  Fixes a large  number  of  problems  from  previous  releases,
          enabling  existing  commands  to work correctly. Some of these
          fixes introduce new features  (see  section  6);  other  fixes
          involve  changed  features  (see  section  7).  A  major  fix,
          described in section 6.3.4, enables you  to  free  significant
          amounts of disk space on your system.

       *  Introduces various new Environment interfaces, including:

          -  Two            new            networking           packages
             (!Tools.Networking.Transport_Name.Service               and
             !Tools.Networking.Transport.Route);  see  sections  6.6 and
             6.7

          -  A package for managing the storage of  encrypted  passwords
             that      provide      access     to     remote     systems
             (!Commands.Remote_Passwords); see section 6.5

          -  A  new  subsystem  (!Tools.Math_Support),  which   contains
             implementations  of  two secondary standards for elementary
             mathematical functions; see section 6.9

          -  Various new commands in !Commands.System_Maintenance and in
             package !Commands.Access_List; see sections 6.3 and 6.1

                                                    September 1991     R\f

                                                        Release D_12_5_0


          -  New  commands  in !Commands.Abbreviations for printing; see
             6.2

       *  Changes the way an R1000  is  initialized  at  boot  time  to
          simplify   R1000   system   management   and   layered-product
          installation. See section 9.

       *  Provides a single release that can be installed on  any  R1000
          configuration.

       *  Provides up-to-date, significantly expanded online help for 23
          packages. See section 8.


       2.  Supported Configurations and Upgrades

       D_12_5_0 supports the following configurations of the R1000:

       *  Series 100

       *  Series 200 (Models 10, 20, and 40)

       *  Series 300 System (300S)

       *  Series 300 Coprocessor (300C) for the IBM  RISC  System/6000
          and Sun Workstation servers.

       *  Series 400 System (400S)

       *  Series 400 Coprocessor (400C) for the IBM RISC System/6000 and
          Sun Workstation servers.

       D_12_5_0 supports two kinds of tape drive:

       *  The 9-track tape drive, which is standard on  the  Series  100
          and 200 and an optional upgrade to the Series 300S.

       *  The  8-millimeter  cartridge  tape drive, which is standard on
          the Series 300S, 300C, 400S, and 400C, and an optional upgrade
          to the Series 200.

       D_12_5_0  also  supports the optional expansion of memory from 32
       megabytes to 64 megabytes to  improve  system  performance.  This
       upgrade applies to all series except the Series 100.

       The  combinations  of  configurations  and  upgrades supported by
       D_12_5_0 are shown in Table 1.


         Table 1    Configurations and Upgrades Supported by D_12_5_0






       R     September 1991                                            1\f

       Rational Environment Release Information



                  ---------------------------------------- 
                 |         |       |       |      |       |
                 |         | 8-mm  |9-Track|32-Mb |  64-Mb|
                 |Configura| Tape  | Tape  |Memory| Memory|
                 |  tion   | Drive | Drive |      |       |
                  ---------------------------------------- 
                 |         |       |       |      |       |
                 |Series   |N/A    |Standar|Standa| N/A   |
                 |100      |       |d      |  rd  |       |
                  ---------------------------------------- 
                 |         |       |       |      |       |
                 |Series   |Upgrade|Standar|Standa| Upgrad|
                 |200      |       |d      |  rd  |       |
                  ---------------------------------------- 
                 |         |       |       |      |       |
                 |Series   |Standar|Upgrade|Standa| Upgrad|
                 |300S     |d      |       |  rd  |       |
                  ---------------------------------------- 
                 |         |       |       |      |       |
                 |Series   |Standar|N/A    |Standa| Upgrad|
                 |300C     |d      |       |  rd  |       |
                  ---------------------------------------- 
                 |         |       |       |      |       |
                 |Series   |Standar|N/A    |Standa| Upgrad|
                 |400S     |d      |       |  rd  |       |
                  ---------------------------------------- 
                 |         |       |       |      |       |
                 |Series   |Standar|N/A    |Standa| Upgrad|
                 |400C     |d      |       |  rd  |       |
                  ---------------------------------------- 




       3.  Compatibility

       D_12_5_0 is fully compatible  with  all  production  versions  of
       Rational layered software products:

       Design Facility: 2167    6_0_7 or later
       Design Facility: 2167A   6_2_5 or later
       Documentation Tools      10_2_9 or later
       Design Tools             10_2_9 or later
       Rational Teamwork Interface 2_1_2 or later
       Rational Publishing Interface 1_0_2 or later

       CDF: Mc68020_Bare        5_1_2 or later
       CDF: Mc68020_Os2000      6_1_3 or later
       CDF: Mc68020_Hp_Unix     6_2_4 or later

       Remote Compilation Facility 3_2_0 or later
       RCF: Rs6000_Aix_Ibm      3_2_0 or later

       Target Build Utility     10_0_3 or later

       2                                            September 1991     R\f

                                                        Release D_12_5_0


       RPC                      1_0_2 or later

       Software Analysis Workstation 6_0_0 or later

       Mail                     11_4_5 or later

       Rational X Interface     10_5_2 or later


       4.  Upgrade Impact

       The Environment can be upgraded from D_12_1_1 to D_12_5_0 without
       forcing   you   to   Archive.Save   and   Archive.Restore    your
       applications.  You  will  not  have to modify or recompile any of
       your own tools, with the possible exception of:

       *  Tools  written  against  the  unit  specifications  listed  in
          "Impact of Specification Changes," below.

       *  Customizations  of  the  unit  bodies  listed  in  "Impact  of
          Implementation Changes," below.

       The new declarations  listed  in  section  6  are  all  installed
       upward-compatibly  and  therefore  have no impact on user-written
       tools.

       Once upgraded to D_12_5_0, a  system  cannot  be  reverted  to  a
       previous Environment release.


       4.1.  Impact of Specification Changes

       The   installation   process   for  D_12_5_0  overwrites  several
       Environment unit specifications. Overwriting these specifications
       causes the demotion of any customer-created tools written against
       them. The installation process  tries  to  recompile  such  tools
       automatically;  however,  depending  on  the nature of the tools,
       some may require modification  before  they  can  be  recompiled.
       Units that cannot be recompiled during installation are listed in
       the installation log.

       Following are the unit specifications that are  overwritten  when
       D_12_5_0 is installed:

       *  !Commands.Abbreviations.Print'Spec (see section 7.12.2).

       *  !Implementation.Work_Order_Implementation'Spec   (see  section
          7.20.5). Note that the changes to this unit affect only  tools
          that  were  created  under D_12_1_1 or earlier releases; tools
          created under D_12_2_4 are not affected.

       Furthermore, the units !Machine.Initialize@ are either demoted or
       moved  to  other  locations to accommodate the new mechanisms for
       initializing an R1000 (see section 9).


       R     September 1991                                            3\f

       Rational Environment Release Information


       4.2.  Impact of Implementation Changes

       The installation process for D_12_5_0 overwrites one  unit  body.
       Because  this  body may contain user customizations, its contents
       are saved in a text file in the same library as  the  overwritten
       body. The name of the file is of the form Unit_Name_Vnn, where nn
       is the unit's default version number. The customizations then can
       be transferred to the new implementation.

       Following  is the unit whose body is overwritten when D_12_5_0 is
       installed:

       *  !Commands.Abbreviations.Print'Body (see section 7.12.2).


       5.  Known Problems


       5.1.  Problem in Spelling Checker

       The D_12_5_0 release of  the  Environment  affects  the  spelling
       checker.   Specifically,   one-character   words   that  are  not
       explicitly added to a dictionary are now  flagged  as  suspicious
       spellings.    To  minimize  the  impact  of  this  change,    the 
       installation process adds the one-letter words "I," "A," and  "a"
       to the master dictionary. 

       For  example,  in  the  following  text,   the  spelling  checker 
       reports "e" and "g" as suspicious spellings:

            Pick two prime numbers less than 20 (e.g., 11 and 17).
            

       5.2.  Problem for CDF Customization

       The D_12_5_0 release of the Environment affects the  installation
       of customizations of the Mc68020_Bare CDF. Specifically, you will
       not be able to install  new  or  changed  customizations  without
       first making a minor change to the following package body:

       !Targets.Implementation.Motorola_68k_Target_Download.Exos5_0_1.
       Units.-
       Exos_Operations'Body

       As  delivered, this package cannot be promoted to the coded state
       on a D_12_5_0 system because of changes made to the Environment's
       compilation  system  that  enable  it  to comply with validation.
       Existing customizations are not affected by  the  problem  unless
       this package is demoted and an attempt is made to repromote it.

       The change you need to make to the Exos_Operations'Body follows:

       1. Locate  the  line  that  is  indicated by >>> in the following
          excerpt (this is line 126 in the unit):


       4                                            September 1991     R\f

                                                        Release D_12_5_0

          type Message_Buffer is
            record
             Msg_Header : Message_Header;
        >>>  Data : Machine_Defs.Byte_String (1 .. Natural (Max_Message_Length));
            end record;

       2. Replace the indicated line with the line below:

              Data : Machine_Defs.Byte_String (1 .. Max_Message_Length);

       Attempting to promote the package body without making this change
       will  cause two lines to be flagged with errors. You should leave
       these lines unchanged; change only the line indicated in  step  1
       above.


       6.  New Environment Interfaces

       D_12_5_0 provides a number of new interfaces, including:

       *  New  procedures and functions; see sections 6.1, 6.2, 6.3, and
          6.4

       *  New packages; see section 6.5, 6.6, and 6.7

       *  New networking features; see section 6.8

       *  New subsystems; see sections 6.9 and 6.10


       6.1.  New Procedures in Package Access_List


       6.1.1.  Procedure Remove

       procedure Remove (Group      : String := ">>SIMPLE NAME<<";
                         For_Object : Name   := "<SELECTION>";
                         Response   : String := "<PROFILE>");

       Removes the specified group from the access list of  each  of  the
       specified objects.


       6.1.2.  Procedure Remove_Default

       procedure Remove_Default (Group     : String := ">>SIMPLE
       NAME<<";
                                 For_World : Name   := "<SELECTION>";
                                 Response  : String := "<PROFILE>");

       Removes  the  specified group from the default access list of each
       of the specified worlds.



       R     September 1991                                            5\f

       Rational Environment Release Information


       6.2.  New Procedures in !Commands.Abbreviations

       The procedures in the following paragraphs allow  easy  reference
       to  networked printers. These procedures are sensitive to the new
       printer-configuration mechanism described in section 9.5. If this
       mechanism  is  not  in  use  at  your  site,  you  should use the
       Queue.Cancel, Queue.Display, and Queue.Print commands instead  of
       the commands described below.


       6.2.1.  Procedure Cancel_Print_Request

       procedure Cancel_Print_Request (Printer    : String :=
       "<Default>";
                                       Request_Id : Positive);

       Removes  the  specified  print  request  from  the  queue  of the
       specified printer.

       The Printer parameter accepts any  printer  name  that  has  been
       defined  in the printer-configuration files (see section 9.5). By
       default,  the  parameter  specifies  the  printer  name  that  is
       associated with the user who enters the command (this association
       is established using a user-printer map).

       You  can  obtain  a  print  request's  number  from  the  display
       generated by the Display_Queue procedure.


       6.2.2.  Procedure Display_Queue

       procedure Display_Queue (Printer : String := "<Default>");

       Displays  the  print  requests  currently queued on the specified
       printer.

       The display shows the identification number for each request. The
       identification   number   can  be  specified  as  the  Request_Id
       parameter when using the Cancel_Print_Request command.

       The Printer parameter accepts any  printer  name  that  has  been
       defined  in the printer-configuration files (see section 9.5). By
       default,  the  parameter  specifies  the  printer  name  that  is
       associated with the user who enters the command (this association
       is established using a user-printer map).


       6.2.3.  Procedure Print

       procedure Print (Object_Or_Image  : String   := "<CURSOR>";

                        From_First_Page  : Positive := 1;
                        To_Last_Page     : Positive := 3000;

                        Display_As_Twoup : Boolean  := True;

       6                                            September 1991     R\f

                                                        Release D_12_5_0


                        Display_Border   : Boolean  := True;
                        Display_Filename : Boolean  := True;
                        Display_Date     : Boolean  := True;

                        Ignore_Display_Parameters_For_Postscript :
       Boolean := True;
                        Highlight_Reserved_Words_For_Ada         :
       Boolean := True;

                        Other_Options    : String   := "";

                        Number_Of_Copies : Positive := 1;
                        Printer          : String   := "<Default>";
                        Effort_Only      : Boolean  := False);


       Prints one or  more  objects  or  images,  including  PostScript
       files,  plain text files, Ada units, mail messages, command logs,
       and so on. By default, this command prints the  object  or  image
       indicated by the cursor.

       The  print  request  initiated by this command is directed to the
       device specified  by  the  Printer  parameter.  By  default,  the
       command  uses  the  device  that  is associated with the user who
       entered the command. This association is set  up  by  the  system
       manager in a user-printer map.

       You  can  use  the  Print command's parameters to control various
       characteristics of the print job. These parameters correspond  to
       one or more options that are defined by the Queue.Print command.

       See  the  comments in the command specification for details about
       the parameters.


       6.3.  New Procedures in System_Maintenance Subsystem

       !Commands.System_Maintenance'Spec_View    contains    the     new
       procedures described in the following paragraphs.


       6.3.1.  Procedure Analyze_Disks_For_Backup

       Locates and checks for corrupt data on disks. This procedure must
       be used only by Rational personnel or under their direction.  For
       a detailed description, see the specification of this procedure.

       The fully qualified name of this procedure is:
       !Commands.System_Maintenance'Spec_View.Units.Analyze_Disks_For_
       Backup






       R     September 1991                                            7\f

       Rational Environment Release Information


       6.3.2.  Procedure Destroy_Library

       procedure Destroy_Library (Existing    : String  := ">>OBJECT To Destroy<<";
                                  Effort_Only : Boolean := True;
                                  Response    : String  := "<PROFILE>");

       Deletes  a  library regardless of its contents. This procedure is
       useful for:

       *  Removing the home worlds of deleted users

       *  Removing any large libraries that may contain subsystems

       No special capability is required to use this command.  You  must
       have D access to a world in order to delete it.

       Warning: The actions of this command are not reversible. To avoid
       unintended deletions, you can execute  this  command  first  with
       Effort_Only  set  to  True  and  verify  that  the resulting list
       contains only the objects you want to delete.

       The fully qualified name of this procedure is:
       !Commands.System_Maintenance'Spec_View.Units.Destroy_Library


       6.3.3.  Procedure Monitor_Performance

       procedure Monitor_Performance
                    (Max_Samples     : Natural := 500;
                     Sample_Interval : Duration := 60.0 * 12;
                     Output_File     : String := ">>filename<<";
                     Append_To_File  : Boolean := False;
                     Header          : String := "Performance data");

       Provides system performance statistics.

       This procedure monitors system performance at a global  level  by
       taking  the specified number of samples, one sample per specified
       interval,   and   writing   the   output   to   Output_File.   If
       Append_To_File  is True, data is appended to the end of the file;
       otherwise, the file is overwritten. The Header string is  entered
       in the file before the reported data.

       The output file contains one entry per line, where each entry has
       fields containing the information shown in Table 2.


                  Table 2   Fields in Entries of Output Files







       8                                            September 1991     R\f

                                                        Release D_12_5_0



               ---------------------------------------------- 
              |     |                                        |
              |Field|              Information               |
               ---------------------------------------------- 
              |     |                                        |
              |Time |Time that the entry is written.         |
               ---------------------------------------------- 
              |     |                                        |
              |Cpu  |CPU % used during the sample interval.  |
              |     |If the load is high, this number will be|
              |     |very inflated because it must be        |
              |     |computed. Values greater than 100% are  |
              |     |common under high loads, so this value  |
              |     |must be considered approximate.         |
               ---------------------------------------------- 
              |     |                                        |
              |DiskW|Number of disk waits in this sample.    |
              |     |Roughly, the number of disk transfers,  |
              |     |which is a function of the number of    |
              |     |page faults.                            |
               ---------------------------------------------- 
              |     |                                        |
              |Users|Number of users logged on at the end of |
              |     |the interval.                           |
               ---------------------------------------------- 
              |     |                                        |
              |Jobs |Number of jobs running at the end of the|
              |     |interval.                               |
               ---------------------------------------------- 
              |     |                                        |
              |Jobs_|Number of jobs that terminated during   |
              |T    |the interval. Indicates the level of    |
              |     |command activity.                       |
               ---------------------------------------------- 
              |     |                                        |
              |Load1|CPU run load for last 15 min.           |
              |5    |                                        |
               ---------------------------------------------- 
              |     |                                        |
              |Disk1|Disk load for last 15 min.              |
              |5    |                                        |
               ---------------------------------------------- 
              |     |                                        |
              |Whld1|Withheld task load for last 15 min.     |
              |5    |                                        |
               ---------------------------------------------- 



       The fully qualified name of this procedure is:
       !Commands.System_Maintenance'Spec_View.Units.Monitor_Performance




       R     September 1991                                            9\f

       Rational Environment Release Information


       6.3.4.  Procedure Repair_Cg_Attrs

       Reclaims disk space by removing lost objects that  were  produced
       and  not  properly  deleted  by  the  code  generator in previous
       Environment releases (D_12_5_0 fixes this  problem).  You  should
       execute  this  command  once  after  installation  of D_12_5_0 is
       complete.

       The Repair_Cg_Attrs command marks the objects for removal.  Their
       disk  space  is  reclaimed  the  next time normal disk collection
       runs.

       Note that:

       *  You can execute the Repair_Cg_Attrs  command  whether  or  not
          users are logged in.

       *  You  must  belong  to  the  Privileged  group  to execute this
          command.

       *  The amount of time required by this  command  depends  on  the
          number  of  objects to be traversed. In Rational's experience,
          this command takes from 1 to 4 hours.

       *  The amount of disk space that  is  freed  increases  with  the
          length  of  time  the  system  has  been  in use since initial
          installation. More specifically,  the  amount  of  freed  disk
          space increases with the number of coding operations that have
          been performed on unit specifications since installation.

       The fully qualified name of this procedure is:
       !Commands.System_Maintenance'Spec_View.Units.Repair_Cg_Attrs


       6.4.  New Functions in Package Work_Order_Implementation

       Package  !Implementation.Work_Order_Implementation  contains  two
       new functions:

       function Create_User_Name (The_Order : Work_Order_Handle) return
       String;

       function Close_User_Name (The_Order : Work_Order_Handle) return
       String;

       This  package  also  contains  a changed declaration; see section
       7.20.5.

       These changes and  additions  to  Work_Order_Implementation  were
       previously available to users of Series 400S and 400C through the
       D_12_2_4 release of the Environment.





       10                                           September 1991     R\f

                                                        Release D_12_5_0


       6.5.  Package Remote_Passwords

       Package !Commands.Remote_Passwords  provides  encrypted  password
       storage  for  efficient access to other systems from an R1000. In
       previous  Environment   releases,   this   package   was   called
       !Tools.Dtia_Rpc_Mechanisms'Spec_View.Units.Remote_Passwords   and
       was available only with selected optional products.

       This package can be used to add, change, or delete entries  in  a
       remote-passwords  file,  which  is a text file that specifies the
       usernames and passwords to be used when accessing remote hosts.

       The commands in this package provide a convenient alternative  to
       locating  the  file  in the library hierarchy and then editing it
       directly. Furthermore, the commands in this package provide a way
       to encrypt the passwords listed in the file.


       6.6.  Package Transport_Name.Service

       Package      !Tools.Networking.Transport_Name.Service     exports
       subprograms that programmers can use to translate a service  name
       and   a   machine   name  to  a  Transport_Defs.Network_Name  and
       Transport_Defs.Socket_Id.

       This tool  is  intended  for  implementing  software  that  forms
       network client-server connections; it supports reconfiguration of
       the Socket_Id that identifies the server without modifying client
       or server software.


       6.7.  Package Transport.Route

       Package  !Tools.Networking.Transport.Route  provides  an abstract
       interface to the routing table, which contains gateways  and  the
       destinations that can be reached through them. This routing table
       is  used  by  Rational  Networking  for  routing  transport-level
       datagrams.

       Package  Transport.Route provides a programmatic interface to the
       routing        table.        In         contrast,         package
       !Tools.Networking.Transport_Route provides a command interface to
       it. In fact,  package  Transport_Route  is  a  further  layer  of
       abstraction on package Transport.Route.


       6.8.  IP Subnetting

       Rational Networking supports IP subnetting as defined in RFC 950,
       "Internet  Standard  Subnetting  Procedure."  IP  subnetting   is
       supported  only  on the R1000 Series 400 (and not the Series 100,
       200, or 300). Note  that  IP  subnetting  is  different  from  IP
       routing,   which   is  supported  in  all  releases  of  Rational
       Networking in all series of R1000.  For  general  information  on
       this  technology, refer to RFC 950 or Internetworking with TCP/IP

       R     September 1991                                           11\f

       Rational Environment Release Information


       by Douglas Comer.

       To configure a Series 400 for IP subnetting, you:

       1. Create a text file called !Machine.Tcp_Ip_Subnet_Mask.

       2. Enter into the file an IP address, in decimal-dotted notation,
          in  which  every bit of the network number or subnet number of
          this machine is 1, and all other bits (the host number of this
          machine) are 0.

          For example, the following commands can be used to configure a
          Series 400 to operate in a  class  B  network  (in  which  the
          network  number  is represented in the first 16 bits of the IP
          address) with a  subnet  number  represented  in  the  4  bits
          immediately following the network number:

          Log.Set_Output ("!Machine.Tcp_Ip_Subnet_Mask");
          Io.Put_Line ("255.255.240.0");        -- 240 = 2#11110000#
          Log.Reset_Output;

       3. Execute     !Tools.Networking.Tcp_Ip_Boot    to    make    the
          configuration take effect. This command is  normally  executed
          when  booting  the  Environment, but you can execute it at any
          time in the Series 400.

          Because   Tcp_Ip_Boot   abruptly   disconnects   any    TCP/IP
          connections  and  Telnet  logins  that  presently exist, it is
          recommended that you execute Tcp_Ip_Boot from an  RS232  login
          port  or from the console command interpreter, with all Telnet
          users logged out.

       After Tcp_Ip_Boot has executed, the Series 400 will  endeavor  to
       route IP datagrams to machines whose IP addresses differ from its
       own in any of the bits of the Subnet_Mask.

       IP subnetting fails in either of the following cases:

       *  Tcp_Ip_Boot     could     not     read     a     mask     from
          !Machine.Tcp_Ip_Subnet_Mask.

       *  You attempt to install subnetting on an R1000 Series 100, 200,
          or 300.


       6.9.  Math_Support Subsystem

       A  new  subsystem,  called   !Tools.Math_Support,   contains   an
       implementation  of the two proposed secondary standards developed
       by the ISO-IEC/JTC1/SC22/WG9  (Ada)  Numerics  Rapporteur  Group.
       These   standards   provide   various   elementary   mathematical
       functions, implemented for the R1000  target  and  for  use  with
       Rational M68K Cross-Development Facilities.


       12                                           September 1991     R\f

                                                        Release D_12_5_0


       For more information about this subsystem, see the notes provided
       in the subsystem itself.


       6.10.  Dfs Subsystem

       A new subsystem, called !Machine.Dfs, contains procedures  and  a
       package  for  managing  Diagnostic File System (DFS) information.
       The paragraph below describes a procedure of  particular  use  to
       system  managers.  See  also section 7.14 for descriptions of DFS
       changes.


       6.10.1.  Procedure Analyze_Crashdump

       procedure Analyze_Crashdump
            (Tape_Drive         : Natural := 0;
             Expunge            : Boolean := True;
             Output_File        : String  :=
       "!Machine.Error_Logs.Crash_Summary";
             Working_Directory  : String  :=
       "!Machine.Temporary.Crash_Info";
             Read_Tape          : Boolean := True;
             Ask_To_Read_Memory : Boolean := True;
             Volume             : Natural := 0);

       Analyzes a crash-dump tape and produces a  textual  summary  that
       can  be sent to Rational for analysis. This summary is especially
       useful at secure sites,  because  it  can  be  sent  to  Rational
       instead of the crash-dump tape.

       The fully qualified name of this command is:
       !Machine.Dfs'Spec_View.Units.Analyze_Crashdump


       7.  Changes from D_12_1_1

       This   section   describes   the   changes,   enhancements,   and
       user-visible  problem  fixes  that  D_12_5_0  makes  to  existing
       features  of  the Environment. The information in this section is
       presented in roughly the same order in which it would be found in
       the Rational Environment Reference Manual:

       *  General editing and screen operations (EI); see section 7.1

       *  Editing  specific  types  of  objects  such  as  Ada units and
          command windows (EST); see section 7.2

       *  Debugger information (DEB); see section 7.3

       *  Information on session and job management  (SJM)-specifically,
          session switches; see section 7.4

       *  Library-management  information  (LM),  including  changes  to
          access control (see  section  7.5),  library  switches  (7.8),

       R     September 1991                                           13\f

       Rational Environment Release Information


          links (7.6), compilation (7.7), and archive (7.9)

       *  String Tools (ST) and Programming Tools (PT); see section 7.10

       *  System-management  information  (SMU),  including  changes  to
          package  Operator  (see  section   7.11),   printing   (7.12),
          initializing an R1000 (7.13), the diagnostic file system (DFS)
          (7.14), procedures in System_Availability  (7.15),  procedures
          in  System_Maintenance (7.16), the boot process (7.17), system
          backup (7.18), and miscellaneous features (7.19)

       *  Information about subsystems and CMVC (PM); see section 7.20

       Following these  are  sections  about  Environment  changes  that
       pertain to networking; see section 7.21.


       7.1.  Editor Changes

       When  overwrite mode is on, Procedure Editor.Character.Delete now
       replaces a character with a blank space instead of  deleting  it.
       Editor.Character.Delete  is  typically  bound  to the [Delete] or
       [Backspace] key.

       A problem was fixed so that control characters copied from  other
       windows using RXI or RWI are properly inverted.


       7.2.  Changes to Package Common

       The  Common.Object.Delete  procedure, when applied to a subsystem
       or view, now generates a command window containing an appropriate
       deletion  command.  This  procedure  is  typically  bound  to the
       [Object] - [D] key combination.

       The Common.Definition command, when used in  a  debugger  window,
       now  uses  the value of <CURSOR> if there is no selection in that
       window. Also, the In_Place parameter to Definition is  no  longer
       ignored in a debugger window.


       7.3.  Changes to Debugging


       7.3.1.  Setting Breakpoints

       The  Debug.Break  command is now able to set breakpoints properly
       at nested accept statements.

       The Debug.Break command now  works  correctly  in  all  cases  in
       generic formal procedures.

       The  Debug.Break  command  in  the  R1000 debugger now allows two
       breakpoints to be taken at the same location in a  generic,  such
       that  one  Break  command  specifies  the  generic  and the other

       14                                           September 1991     R\f

                                                        Release D_12_5_0


       specifies a specific instantiation.

       The R1000 debugger now reports all actions pertaining to a  given
       location.  In  this respect, the R1000 debugger and CDF debuggers
       now behave the same. In particular:

       *  If more than one break is set at the same location,  then  all
          applicable  breaks  are  now  reported  to  the user when that
          location is encountered.

       *  If you use Debug.Run to step your program  to  a  location  at
          which  a breakpoint is set (including a temporary breakpoint),
          the  R1000  debugger  now  reports  both  the  step  and   the
          breakpoint to the user.


       7.3.2.  Displaying Values

       The  Debug.Put  command was changed so that if special-type image
       functions return an object image containing Ascii.Lf's, all lines
       in  the  image  are  indented  the  same  amount by the debugger.
       Consequently, image functions can be written without concern  for
       the  depth  of  the  subobjects  they  display within the largest
       object displayed by the Put command.

       The Debug.Put command was changed so that predefined special-type
       image  functions  no  longer  raise  exceptions  when  applied to
       uninitialized data.

       The Debug.Put command  now  works  correctly  with  variables  in
       generic formal procedures in all cases.


       7.3.3.  Quitting While the Debugger Is Running

       A  workaround  now  exists  for  the following situation. In some
       circumstances, if you quit your session while a job under control
       of  the  debugger  is running, your session won't terminate. This
       will prevent you from logging back in on  the  same  session  and
       will cause other users' sessions to hang (fail to terminate) when
       Quit is executed. If this situation occurs, you now can kill  the
       debugger  using  Job.Kill  from another session, which will allow
       your original session and all other hung sessions to terminate.

       This problem arises when you enter the Quit command while  a  job
       that was started under the debugger is actively sending output to
       a window. You can avoid the problem by stopping or killing such a
       job before executing Quit.


       7.3.4.  Other Debugger Changes

       Error  messages  have  been  improved  for  a  number of debugger
       commands.


       R     September 1991                                           15\f

       Rational Environment Release Information


       The Common.Definition command, when used in  a  debugger  window,
       now  uses  the value of <CURSOR> if there is no selection in that
       window. Also, the In_Place parameter to Definition is  no  longer
       ignored in a debugger window.

       Problems were fixed in debugger name resolution so that:

       *  Instantiation names are now resolved properly in CDF products.
          This problem affected release 6_2_4  CDF  compilers,  but  not
          previous CDF products.

       *  Debugger commands no longer fail for instantiations of generic
          functions that are given operator names (for example, "+")

       The Debug.Show (State_Type => Debug.Traces) command now  displays
       the state of machine instruction tracing.

       The   Debug.Show  (State_Type  =>  Debug.Histories)  command  now
       displays the state of machine instruction history.

       The Debug.Trace and Debug.History commands  now  perform  machine
       instruction tracing and history correctly.

       Performance  enhancements  were made to the initialization of the
       R1000_Debugger subsystem, causing the R1000 to boot faster.


       7.4.  Changes to Session Switches

       There is one new session switch:

       *  Speller.Allow_Underscores

          Controls whether underscore characters (_) cause word  breaks.
          When  the  switch  is  set to False (the default), underscores
          embedded in a  string  are  treated  as  word  breaks  by  the
          spelling  checker. When the switch is set to True, underscores
          are not treated as word breaks, so that  a  string  containing
          embedded underscores is treated as a single word.


       7.5.  Access-Control Changes

       Problems were fixed so that access lists containing seven entries
       are  now  processed  correctly.  That  is,  commands  in  package
       Access_List no longer raise Constraint_Error when processing ACLs
       with seven entries.

       Changing the ACL of an object no longer changes the  last  update
       timestamp on that object.

       Access-list  compaction now removes groups that were deleted from
       access lists stored in Cmvc_Access_Control databases.



       16                                           September 1991     R\f

                                                        Release D_12_5_0


       7.6.  Changes to Links Management

       The Links.Edit, Links.Add, and Links.Delete commands now  observe
       ACL restrictions.


       7.7.  Compilation Changes

       A  code-generator  problem  was  fixed  so  that  promoting  unit
       specifications (and certain other units) to the  coded  state  no
       longer  generates  lost objects that consume disk space. That is,
       the hidden objects that  are  generated  during  coding  are  now
       automatically  deleted  when  the  operation is complete. You can
       remove  the  lost  objects  that   accumulated   under   previous
       Environment releases, thereby freeing significant amounts of disk
       space (see section 6.3.4).

       The D_12_5_0 release of the  Environment  contains  a  number  of
       fixes  for  problems  that  formerly  prevented  units from being
       installed, coded, or executed. These fixes are listed in sections
       7.7.1, 7.7.2, and 7.7.3.


       7.7.1.  Installing Units

       A  problem  was  fixed where a library-unit generic instantiation
       failed to install in a spec view if the generic  contained  other
       instantiations in its private part.

       A  problem  was  fixed  so  that  promote  operations  no  longer
       incorrectly demand:

       *  A body for a  subprogram  to  which  a  pragma  Interface  was
          applied

       *  A  body  for  a  package  spec, all of whose subprograms had a
          pragma Interface applied

       A problem was fixed that prevented pragma  Interface  from  being
       applied to operators.

       The R1000 compiler now:

       *  Handles literals that are greater than 64 bits

       *  Computes Standard.Character'Size correctly

       Improved error messages are now displayed if you try to install a
       unit for a non-R1000 target whose CDF compiler is not running.

       You  can  no  longer  use  incremental  operations   to   add   a
       representation  specification or a pragma Pack to a type that had
       other types derived from it.



       R     September 1991                                           17\f

       Rational Environment Release Information


       7.7.2.  Coding Units

       The Compilation.Promote and Compilation.Make  commands  now  code
       Ada  units in a different order. This new coding order causes the
       coding of a unit body to follow  the  coding  of  its  spec  more
       closely,  thereby  minimizing  the number of units that are coded
       between them. This change in  coding  order  should  improve  the
       effectiveness of inlining in CDF compilers.

       When you promote a main unit body to the coded state, its spec is
       now automatically coded as well. (This corrects  a  problem  that
       was  introduced  in  the  D_12_1_1  release.)  Note that no other
       compilation in the world is possible  while  the  spec  (and  any
       other  required  units)  is  being  implicitly promoted to coded,
       because the program library for the enclosing world is locked.

       The R1000 code generator now handles qualified,  non-infix  calls
       to Universal_Fixed-valued operators, such as P."/"(a,b).

       The  R1000  code  generator  now performs compile-time evaluation
       correctly for the following:

       *  Literals greater than 64 bits

       *  The Storage_Size attribute

       *  Renames of built-in operators

       The R1000  code  generator  now  successfully  ignores  a  pragma
       Interface       that      is      encountered      while      the
       Semantics.Ignore_Interface_Pragmas switch is set to True.

       Pragma Pack no longer causes a Write_To_Read_Only_Page  exception
       when  applied  to a record or to an array type that is introduced
       in a private part and completed in a body.

       A problem was fixed in which promoting main programs to the coded
       state caused deadlocks in the dependency database.

       A  problem  was  fixed  so  that CDF debuggers no longer lose the
       correspondence between code locations and  Ada  source  locations
       when debugging instantiations of macro-expanded library units.

       A  problem was fixed that caused certain main programs to fail to
       code (and command windows to fail to promote)  with  the  message
       Unsatisfiable  import  requirement.  This  problem arose for main
       programs and commands  that  withed  units  from  code  views  in
       secondary  subsystems, where these code views referenced generics
       defined outside subsystems. In  D_12_5_0,  such  coding/promotion
       now  succeeds,  generating  a  lengthy  warning  message  that is
       relevant only if coding fails for some other reason.

       Non-R1000 code generators now refuse to promote  a  main  program
       whose closure contains a package for which a body is optional, if
       a body for that package exists and is not in the coded state.

       18                                           September 1991     R\f

                                                        Release D_12_5_0


       7.7.3.  Executing Units

       The  R1000  code  generator  now  emits  correct  code  so   that
       multidimensional    array    aggregates    with    string-literal
       subaggregates no longer fail at execution time.

       The R1000 code generator now correctly computes the  Storage_Size
       attribute of access types for which a Storage_Size representation
       specification has been given.

       A  problem  was   fixed   that   caused   very   large   (usually
       machine-generated) programs to fail at run time with a variety of
       errors. These programs are "very large" in that they contain more
       than   1,024   references   to   units   (if  compiled  with  the
       Retain_Delta1_Compatibility switch set to True) or to  individual
       declarations (if compiled with this switch set to False).

       A  problem  was  fixed  that  caused  Type_Error  to be raised by
       renames of function-valued attributes (such as 'Pos or 'Val) when
       used inside a function.


       7.8.  Library Switches

       You  must  now  enable  privileges  to use the Switches.Associate
       command  to  change  the  associations  of  switch  files  within
       subsystems.


       7.9.  Archive Changes

       The Archive.Restore and Archive.List commands no longer crash the
       R1000 when you use them to restore or read a multireel archive.

       The Archive.Restore command no longer fails with a layout error.

       The Archive.Restore command no longer causes the R1000 to run out
       of  action  IDs,  for example, when a large number of empty files
       are restored.

       The Archive.Save and Archive.Restore commands  are  now  able  to
       save/restore work orders of any size.

       The    Archive.Restore    command   now   processes   switch-file
       associations  consistently  with  renaming  introduced   by   the
       For_Prefix and Use_Prefix parameters.

       The   Archive.Restore   and  Archive.Copy  commands  now  produce
       improved error messages.

       When the Device parameter of the Archive.Save command specifies a
       library  name and that library does not exist, a world is created
       outside  a  subsystem  and  a  directory  is  created  inside   a
       subsystem. Previously, directories were always created.


       R     September 1991                                           19\f

       Rational Environment Release Information


       Problems   were  fixed  so  that  data  containing  newlines  and
       formfeeds is now saved  and  restored  consistently.  Previously,
       such  restored  data caused CMVC to report inconsistencies in its
       database.


       7.9.1.  Archiving Units with Large CDBs

       Archive commands  no  longer  fail  when  saving,  restoring,  or
       copying  Ada  units whose compatibility database (CDB) signatures
       are very large. It should now be possible to  successfully  save,
       restore,  or  copy  Ada units regardless of the size of their CDB
       signatures.

       Note, however, that an Ada unit that  can  be  saved  only  on  a
       D_12_5_0  Environment must be restored onto a D_12_5_0 (or later)
       Environment. Attempting to restore such a unit  onto  an  earlier
       Environment causes the following message to be displayed:

            INTERNAL ERROR (declaration mapping): ARCHIVE_IS_BAD
            restoring the !subsystem.view.Units.unit


       7.9.2.  Archive Options

       The After option of the Archive.Save command now works correctly.

       The  Archive.Save, Archive.Restore, and Archive.List commands now
       accept the following new option:

       *  Unload

          A Boolean option. When True (the default), causes the tape  to
          be rewound and unloaded after the operation is complete.

          When  False,  this option causes the tape to be rewound to the
          beginning and to remain online and  available  for  subsequent
          requests.  This  is  useful  when  you  want to perform a list
          operation followed by a restore operation, or if you  want  to
          perform  several  restore  operations  in  a  row.  Note that,
          because the tape is rewound, successive save  operations  will
          overwrite each other.

          When  the  tape  is  left  online,  subsequent requests send a
          tape-mount request to the operator's console,  which  must  be
          answered before the tape can be accessed.

       The Archive.Save command now accepts the following new option:

       *  Starting_At = time

          Delays  the  save operation until the specified time, which can
          be a date, a time of day, or both, and can be written  in  any
          of  the styles defined by the !Tools.Time_Utilities.Date_Format
          type and the !Tools.Time_Utilities.Time_Format type. The  save

       20                                           September 1991     R\f

                                                        Release D_12_5_0


          operation  starts  only  if  the  tape-mount  request has been
          answered.


       7.10.  Changes to String Tools and Programming Tools

       The implementation of package  !Tools.Unbounded_String  has  been
       modified  to  improve  its  free-space management and performance
       characteristics. This should noticeably improve  the  performance
       of the Compose tool and RDF document generation.

       The    implementations   of   packages   !Tools.Set_Generic   and
       !Tools.Map_Generic have been modified to improve their free-space
       management and performance characteristics.


       7.11.  Changes to Package Operator

       The  Operator.Add_To_Group command now permits naming expressions
       to be used in the User and Group parameters. In  particular,  you
       can  now  use  wildcards,  set  notation,  and  indirect files to
       reference multiple user and group names. In both parameters,  you
       can use expressions that resolve to simple names; the expressions
       are automatically evaluated in the proper context. For example:

            Operator.Add_To_Group
            ("[Phil,Vicki,Anderson]","Project_7_@");

       The  Operator.Cancel_Shutdown  command  now   sends   a   message
       informing users that shutdown is canceled.

       The  Operator.Create_Group  command  now  issues an error message
       when no more groups can be created. In previous releases, the job
       would "hang" and the system would go into wait service.

       The Operator.Delete_Group command can no longer be used to delete
       predefined groups (such as Operator and Privileged).

       The Operator.Delete_User command can no longer be used to  delete
       predefined users (such as Operator).

       The  Operator.Delete_User  command now generates a message in the
       error log.

       The Operator.Remove_From_Group command can no longer be  used  to
       remove  users  from  their own groups. For example, the following
       command now fails:

            Operator.Remove_From_Group ("Anderson","Anderson");

       The  Operator.Remove_From_Group  command   now   permits   naming
       expressions  to  be  used  in  the  User and Group parameters. In
       particular, you can now use wildcards, set notation, and indirect
       files  to  reference  multiple  user  and  group  names.  In both
       parameters, you can use expressions that resolve to simple names;

       R     September 1991                                           21\f

       Rational Environment Release Information


       the   expressions  are  automatically  evaluated  in  the  proper
       context. For example:

            Operator.Remove_From_Group
            ("[Phil,Vicki,Anderson]","Project_7_@");


       7.12.  Changes Pertaining to Printing

       The print spooler now properly honors pragma Page.

       A new, file-driven mechanism  exists  for  configuring  printers.
       This  mechanism  provides  an  alternative  to using user-created
       procedures that call package Queue. This mechanism also  supports
       the use of the !Commands.Abbreviations.Print command.


       7.12.1.  Change to Package Queue

       The Queue.Add command now accepts the following new option, which
       allows you to define a device that is a directory on a  networked
       workstation:

       *  Ftp

          A  Boolean option. When True, specifies that print requests be
          sent via FTP to the directory and machine  referenced  by  the
          device.  Each  print  request is sent as a separate file. Once
          the files are on the other machine, you can use that machine's
          print commands or tools to print the files.

          When  you  specify  the  Ftp option, you must also specify the
          Device parameter with the name of an R1000 file that contains,
          on separate lines:

          -  The   network   name   of   the  destination  machine.  The
             destination machine can be any computer system, typically a
             workstation.

          -  The   full  pathname  of  the  destination  directory.  The
             directory pathname must contain punctuation appropriate  to
             the destination machine, and must have trailing punctuation
             that  permits  appending  the  name  of   the   transferred
             print-request file.

          -  A  suffix  to be appended to the filenames that are created
             on the workstation. If no suffix is to be appended, leave a
             blank line. The specified suffix can be used by print tools
             as a way of identifying  which  files  to  print.  This  is
             useful   when  several  devices  send  files  to  the  same
             directory.

          -  The pathname of an Environment remote-passwords  file.  The
             remote-passwords  file must contain a username and password
             suitable for accessing the destination machine.

       22                                           September 1991     R\f

                                                        Release D_12_5_0


          It is recommended that you  place  the  device  file  and  the
          remote-passwords file in the !Machine.Queues.Ftp library.


       7.12.2.  Changes to !Commands.Abbreviations.Print

       !Commands.Abbreviations.Print   has  a  new  parameter  list  and
       implementation, so that it now:

       *  Is sensitive to the user-printer map and printer-configuration
          file  to  determine  what  printer  to  go to. By default, the
          command uses the device that is associated with the  user  who
          enters the command.

       *  Provides   parameters   for  specifying  information  normally
          entered through options with Queue.Print.

       *  Is able to print  PostScript  files,  plain  text  files,  Ada
          units, windows, and mailboxes.

       Because  the  changes  to  this command are so significant, it is
       described under "New Features" in this release note (see  section
       6.2).


       7.13.  Machine-Initialization Software

       D_12_5_0  changes  the software that is automatically executed by
       the  Environment  during  the  boot  process.  The  software   is
       reorganized to make it easier to:

       *  Install layered products

       *  Distinguish      Rational-specific,     site-specific,     and
          machine-specific customizations

       *  Configure a network of printers for large sites

       See section 9 for a detailed explanation of these changes.


       7.14.  Changes to Diagnostic File System (DFS)

       When an R1000 crashes, the DFS now creates a file in the DFS area
       to  preserve  a  synopsis of the machine state at the time of the
       crash. The existence of  this  "tombstone"  file  allows  you  to
       reboot  the  R1000  without  losing all crash information. System
       managers can access the crash-information file by:

       *  Using System_Report.Generate with Report_Type set  to  Outages
          or to Everything

       *  Inspecting  the system error log (the Environment boot process
          now automatically copies a textual image of the last tombstone
          file into the system error log)

       R     September 1991                                           23\f

       Rational Environment Release Information


       Crash   messages   have   been  streamlined  so  that  irrelevant
       information is suppressed.

       The DFS  recovery  process  now  remembers  the  hardware  memory
       configuration.    This   greatly   simplifies   the   Environment
       installation process.

       See also sections 6.10 and 7.15 for more information relating  to
       the DFS.


       7.15.  !Tools.System_Availability

       The  System_Report.Generate  command  now  includes machine crash
       information when Report_Type is set to Outages or to Everything.

       The System_Report.Generate command now  includes  percentages  of
       disk space used when Report_Type is set to Daemons.


       7.16.  !Commands.System_Maintenance

       The   Set_Universe_Acls  command  is  now  more  consistent  with
       Check_Universe_Acls.


       7.17.  Changes to the Boot Process

       Performance enhancements were introduced to cause the R1000  boot
       process  to  take  10  to 20 minutes less than it did in previous
       releases.

       The Environment boot process now automatically copies  a  textual
       image  of  the last "tombstone" file into the system error log (a
       tombstone file contains a synopsis of the machine  state  at  the
       time of the last crash).


       7.18.  Changes Pertaining to Backups

       The  R1000  now shuts down and reboots automatically after a tape
       backup is restored. This makes disk collection work properly.

       The Starting_At parameter is  no  longer  ignored  when  you  use
       either of the following commands to take a secondary backup:

       *  !Commands.Abbreviations.Secondary_Backup

       *  !Commands.Abbreviations.Do_Backup


       7.19.  Miscellaneous System-Management Changes

       The  Shutdown  and  Snapshot  commands have been removed from the
       Kernel command interpreter on the operator's console.

       24                                           September 1991     R\f

                                                        Release D_12_5_0


       The Daemon.Quiesce command no longer raises an exception when the
       Additional_Delay parameter is given the value Duration'Last.


       7.20.  CMVC Changes


       7.20.1.  Changes to Editing Activities

       The  activity  editor  now properly handles entries that refer to
       nonexistent subsystems and views.


       7.20.2.  Changes to Package Cmvc

       Various commands in  package  Cmvc  now  produce  improved  error
       messages.

       The   Cmvc.Accept_Changes   command  now  correctly  accepts  new
       subunits into a view even when no  stubs  already  exist  in  the
       parent units.

       The  Cmvc.Build command no longer produces a Numeric_Error if the
       configuration name does not contain an underscore character  (  _
       ).

       The Cmvc.Copy command now copies a source view correctly, even if
       it contains units that contain insertion points.

       The Cmvc.Copy command and its  derivatives  now  preserve  Delta1
       compatibility    when    copying   a   view   that   contains   a
       Delta1-compatible loaded main program. (Such copy operations  now
       copy    the    underlying    code   database   along   with   the
       Delta1-compatible loaded main program.)

       The Cmvc.Import command now reports all problems that result from
       link-name  conflicts.  In  previous  releases,  the command would
       report only the first conflict it encountered. (A conflict arises
       when  units  in different imported views have the same link name,
       for example, because they have the same simple name.)

       The Cmvc.Initial command no longer requires you to have D  access
       to  the  world  in which a subsystem is created. Furthermore, the
       remaining access requirements no  longer  have  to  come  from  a
       single ACL entry, as was the case in previous releases.

       The Cmvc.Join command no longer operates atomically when multiple
       objects are specified. That is,  individual  failures  no  longer
       cause  the  entire  operation  to  be  abandoned  and its partial
       effects undone. The command is now allowed to  continue  even  if
       one or more individual objects fail to join, and any objects that
       are successfully joined remain that way.

       The Cmvc.Make_Code_View command now causes links for  code  views
       to  be  deleted.  This reduces the likelihood of errors when code

       R     September 1991                                           25\f

       Rational Environment Release Information


       views are archived and restored.

       The Cmvc.Make_Controlled command no  longer  operates  atomically
       when multiple objects are specified. That is, individual failures
       no longer cause the entire operation  to  be  abandoned  and  its
       partial  effects  undone.  The command is now allowed to continue
       even if one or more individual objects cannot be made controlled;
       any  objects that have been made controlled remain that way. This
       is particularly important when the Save_Source parameter  is  set
       to  True  and  some  of  the  specified  objects  are binary (and
       therefore incapable of being saved in the CMVC database).

       The  Cmvc.Make_Controlled  command  now  echoes  its   parameters
       correctly.

       A    problem    was    fixed    so   that   the   Cmvc.Make_Path,
       Cmvc.Make_Subpath, and Cmvc.Copy commands can successfully  cause
       units to be promoted in the newly created views.

       The  Cmvc.Release  command  no  longer  fails  if  information is
       missing from the View.State.Last_Release_Name file.  The  command
       now  uses  default  values  to  reconstruct the file, rather than
       causing an error.

       The Cmvc.Show_@ commands (such as Cmvc.Show_All_Uncontrolled)  no
       longer fail with errors when they encounter an open object. These
       commands now persevere  in  this  situation  (provided  that  the
       profile is set appropriately).


       7.20.3.  Changes to Package Cmvc_Maintenance

       The   Cmvc_Maintenance.Check_Consistency  command  now  uses  the
       response characteristics specified in its Response profile.

       The Cmvc.Show_Image_Of_Generation command now uses  the  response
       characteristics specified in its Response profile.


       7.20.4.  Changes to Work Orders

       Bugs  were  fixed  so  that using Archive.Save or Archive.Copy on
       large  (300  Kb  to  400  Kb)  work  orders  no   longer   raises
       Storage_Error.


       7.20.5.  Spec Change in Package Work_Order_Implementation

       A       change       has      been      made      to      package
       !Implementation.Work_Order_Implementation'Spec.  In   particular,
       the parameter list in the Work_Order_Operations.Traverse_Comments
       generic  procedure  has  been  changed  to  fix  a  problem  from
       D_12_1_1.



       26                                           September 1991     R\f

                                                        Release D_12_5_0


       The  generic procedure now has the following specification, which
       provides a new parameter called User_Name:

       generic
           with procedure Visit (The_User    : User_Id;
                                 User_Name   : String;
                                 The_Comment : String;
                                 The_Element : Element_Name;
                                 The_Time    : Calendar.Time);
       procedure Traverse_Comments
                    (For_Work_Order : Work_Order_Handle; Success : out
       Status);

       You  must  recompile  any  tools  created  under   the   D_12_1_1
       Environment   release   if   those  tools  are  compiled  against
       !Implementation.Work_Order_Implementation'Spec. Furthermore,  you
       may  need  to modify those tools to accommodate the new parameter
       list.

       Package Work_Order_Implementation also contains new declarations;
       see section 6.4.

       These  changes  and  additions  to Work_Order_Implementation were
       previously available to users of Series 400S and 400C through the
       D_12_2_4 release of the Environment.


       7.21.  Networking Changes


       7.21.1.  IP Routing

       A default IP route is now supported for the Series 400 (which has
       a CMC ENP-100i Ethernet controller). This change does not affect
       the  Series  100,  200,  or  300  (which has an Excelan EXOS 204
       Ethernet controller).

       A default IP route must be defined in every  Series  400  machine
       (CMC  ENP-100i)  that uses IP routing (that is, communicates with
       machines in other  IP  networks  or  subnets).  Furthermore,  the
       default  IP router must do at least one of the following when the
       R1000 sends an IP datagram to it:

       *  Relay the datagram toward its target, or

       *  Send an ICMP Redirect message back to the R1000, directing  it
          to another IP router.

       The default router must do one or both of these things for any IP
       datagram targeted to  any  machine  with  which  the  R1000  must
       communicate.

       To define a default IP route, you:



       R     September 1991                                           27\f

       Rational Environment Release Information


       1. Add  a line to !Machine.Transport_Routes that designates an IP
          router, with no other text and no white space  in  that  line.
          The router can be designated by:

          *  Its IP address (in decimal-dotted notation), or

          *  A   name  that  can  be  resolved  to  an  IP  address  via
             !Machine.Transport_Name_Map. You must use a  name  that  is
             defined  in  !Machine.Transport_Name_Map, because it is not
             possible to communicate with the name server  (the  machine
             designated  in !Machine.Tcp_Ip_Name_Server) at the time the
             name is resolved.

       2. After editing (and closing) !Machine.Transport_Routes, execute
          Tcp_Ip_Boot to load the default IP route into the CMC ENP-100i
          Ethernet controller.

       To change the default IP route:

       1. Edit !Machine.Transport_Routes to designate the new default IP
          router  in a line with no white space and no other information
          (see above).

       2. Execute  Transport_Route.Undefine  to  erase  any  default  IP
          routes  that  are  presently  defined.  You  can  find them by
          executing Transport_Route.Show.

       3. After editing (and closing) !Machine.Transport_Routes, execute
          Tcp_Ip_Boot to load the default IP route into the CMC ENP-100i
          Ethernet controller.

       You can  define  other,  nondefault  IP  routes  using  other  IP
       routers,   as  described  in  package  Transport_Route,  but  any
       nondefault route that is not used for a period of 30  minutes  is
       likely  to  be  deleted  by  the  Series  400 (CMC ENP-100i), and
       subsequent  datagrams  to  which  the  route  pertained  will  be
       transmitted  to  the  default  IP  router (until an ICMP Redirect
       message is received).

       If you must use a nondefault route  in  a  Series  400,  and  the
       default IP router cannot redirect you to it periodically, you can
       define it in  !Machine.Transport_Routes  and  then  execute  this
       program to prevent its being deleted because of disuse:

            Scheduler.Set_Job_Attribute
            (System_Utilities.Get_Job,"Kind","Server");
            loop
                Transport_Route.Load;
                delay 25 * 60.0;
            end loop;

       Transport_Route.Show will display a route that is deleted because
       of disuse as though it were still in  effect.  The  only  way  to
       discover  the  contents  of the Series 400 IP routing table is to
       transmit test IP datagrams and observe (on the Ethernet)  the  IP

       28                                           September 1991     R\f

                                                        Release D_12_5_0


       routers to which they are relayed.


       7.21.2.  Miscellaneous Networking Changes

       Package  !Tools.Networking.Transport_Defs now contains additional
       error codes.

       Several problems were fixed, which occurred  only  with  the  CMC
       ENP-100i Ethernet controller:

       *  It  is  now  possible  to receive a UDP datagram that contains
          more than 1,472 bytes of user data.

          In previous releases of the Environment, when  a  program  was
          executing  the  Transport.Receive  command and waiting for UDP
          datagrams,   Transport.Receive   would   return    Status    =
          CONNECTION_BROKEN   and   that  connection  would  close  upon
          receiving a UDP datagram in multiple IP fragments.

       *  Transport.Receive now correctly returns Status NOT_OPEN if the
          connection  is  not  open.  In  previous  releases, the Status
          NOT_CONNECTED was returned.

       In the Ftp.Get command, setting the Append_To_File  parameter  to
       True no longer fails if the specified file already exists.

       You  can  now  use FTP to append data to an existing object on an
       R1000, without incurring the following error:

            ***  Problem with local file - Problem opening local file.
            *** Ftp transfer failed with status = FILE_ERROR.
            ++* <filename> was not retrieved.


       8.  Documentation

       The D_12_5_0 release of the Environment includes new and  updated
       online help for the packages listed below. Many of these packages
       have  been  significantly  rewritten  and  the  introductions  of
       important   packages  (such  as  Archive,  Compilation,  Profile,
       Program, Remote_Passwords)  now  contain  extensive  introductory
       material. Use the What.Does command to obtain online help.

       The  new  and  updated packages are listed by the volume in which
       they appear in the Rational Environment Reference Manual:

       *  One package from the Debugging (DEB) book (Volume 3):

          -  Debug

       *  All packages from the Session and Job  Management  (SJM)  book
          (Volume 4):

          -  Job

       R     September 1991                                           29\f

       Rational Environment Release Information


          -  Log

          -  Profile

          -  Program

          -  Remote_Passwords

          -  Search_List

          -  What

       *  All packages from the Library Management (LM) book (Volume 5):

          -  Access_List

          -  Access_List_Tools

          -  Archive

          -  Compilation

          -  File_Utilities

          -  Library

          -  Links

          -  Switches

          -  Xref

       *  Six  packages  from the System Management Utilities (SMU) book
          (Volume 10):

          -  Message

          -  Operator

          -  Queue

          -  System_Backup

          -  Tape

          -  Terminal

        


       9.  Appendix A: !Machine.Initialization

       D_12_5_0 changes the software that is automatically  executed  by
       the   Environment  during  the  boot  process.  The  software  is
       reorganized to make it easier to:

       30                                           September 1991     R\f

                                                        Release D_12_5_0


       *  Install layered products

       *  Distinguish     Rational-specific,     site-specific,      and
          machine-specific customizations

       *  Configure a network of printers for large sites

       The   following  subsections  describe  the  new  mechanisms  for
       initializing an R1000. See also the "Installation Procedure"  for
       specific steps to convert any existing initialization software to
       the new mechanisms.


       9.1.  Overview

       Each  time  an  R1000  is  booted,  software  is  executed   that
       initializes layered products, sets various system parameters (for
       example,  disk-collection  thresholds  and  snapshot  intervals),
       starts servers, enables terminals, and so on.

       In  previous Environment releases, the boot process automatically
       executed !Machine.Initialize, which in turn executed a family  of
       procedures (with names of the form !Machine.Initialize_@).

       In  D_12_5_0, !Machine.Initialize is no longer used. Instead, all
       system-initialization   software    resides    in    the    world
       !Machine.Initialization, which is structured as shown:

            !Machine.Initialization : Library (World);
              Local    : Library (World);
              Rational : Library (World);
              Site     : Library (World);
              Start    : Ada (Load_Proc);

       The  D_12_5_0  boot  process  automatically  executes  the  Start
       procedure, which in turn executes all the procedures that  reside
       in (or are referenced in) the Local, Rational, and Site worlds:

       *  The  world  Rational  contains  or  references  software  that
          initializes Rational products and provides  standard  settings
          for  many  system  parameters.  Users  should  not  modify the
          objects in this world.

       *  The worlds Site and Local provide a place for system  managers
          to put objects that customize the initialization process. Such
          objects can  be  used  to  override  various  standard  system
          parameter    settings,    to    initialize    customer-written
          applications,   and   to   specify   terminal   and    printer
          configurations:

          -  The  world  Site  is  intended for customer-written objects
             that are common to two or more machines at a given site.

          -  The world Local is intended  for  customer-written  objects
             that apply only to the current R1000.

       R     September 1991                                           31\f

       Rational Environment Release Information


       The following subsections give more detail about these worlds.


       9.1.1.  World !Machine.Initialization.Rational

       The  Rational  world  contains  objects supplied by Rational that
       perform basic initialization  services  for  the  current  R1000.
       These objects include:

       *  Loaded     main    procedures    that    are    executed    by
          !Machine.Initialization.Start whenever the system is booted.

       *  "_Start" files that reference procedures located elsewhere  in
          the  Environment.  These  are  text files whose names end with
          _Start;  the  procedures  they  reference  are   executed   by
          !Machine.Initialization.Start.

       On  a  typical  system,  this  world contains objects such as the
       following:

            !Machine.Initialization.Rational : Library (World);
              Clean_Machine_Temporary   : C Load_Proc;
              Cross_Compilers           : C Load_Proc;
              Design_Facilities         : C Load_Proc;
              Dtia                      : C Load_Proc;
              Finish_Install            : C Load_Proc;
              Log_Previous_Outage_Start :   Text;
              Mail_Start                :   Text;
              Network                   : C Load_Proc;
              Parameters                : C Load_Proc;
              Printers                  : C Load_Proc;
              Servers                   : C Load_Proc;
              Teamwork_Interface        : C Load_Proc;
              Terminals                 : C Load_Proc;

       The procedures that are supplied or referenced in this world:

       *  Perform cleanup and compaction

       *  Initialize the installed Rational products, such as CDFs, RDF,
          Rational Networking, and so on

       *  Initialize servers, including the archive and FTP servers

       *  Set standard values for various system parameters, such as the
          medium-term  scheduler,  snapshot  intervals   and   warnings,
          disk-collection thresholds, and so on

       *  Initialize  terminals and printers according to user-specified
          requirements (given in files in the Site and Local worlds)

       For more specific information, you can  browse  the  comments  in
       each object in this world.



       32                                           September 1991     R\f

                                                        Release D_12_5_0


       9.1.2.  Worlds !Machine.Initialization.[Site,Local]

       The  Site  and  Local worlds are where system managers can create
       objects to control sitewide  or  machine-specific  initialization
       and configuration. These objects may include:

       *  Ada   procedures   that   supplement  or  override  the  basic
          initialization services performed by objects in  the  Rational
          world.  All  procedures  in  the  Site  and  Local  worlds are
          executed by !Machine.Initialization.Start each time the system
          is booted.

       *  "_Start"  files that reference procedures located elsewhere in
          the Environment. These are text files  whose  names  end  with
          _Start;   the   procedures  they  reference  are  executed  by
          !Machine.Initialization.Start.  Using  a  "_Start   file"   is
          equivalent   to  calling  Program.Run  or  Program.Run_Job  to
          execute the referenced procedure. (See section 9.3.2.)

       *  Configuration files that tell the Environment  how  to  enable
          and  configure  ports  for login and ports for printing. These
          are text files that are read by two of the procedures executed
          by  !Machine.Initialization.Start. A default file for enabling
          login ports is created in the Local world during installation.
          (See sections 9.4 and 9.5.)

       *  Text files that tell the Environment how to initialize layered
          products  such  as  the  Cross-Development  Facility  or   the
          Rational   Design   Facility.   (See   the   comments  in  the
          specifications of the  Cross_Compilers  and  Design_Facilities
          procedures in !Machine.Initialization.Rational.)

       At  most  sites,  system  managers will use the Site and/or Local
       worlds as a place for procedures (or "_Start" files) that:

       *  Set password policy

       *  Set login limits

       *  Start server programs for site-specific networking, databases,
          and  applications  (for  example,  a  login monitor or network
          security server)

       At some sites, system managers may need to use these  worlds  for
       procedures that:

       *  Provide nonstandard daemon settings, for example:

          -  The  time  at  which  daily  and  weekly  clients run. (The
             standard times are 3:00 a.m. for  daily  clients  and  2:30
             a.m. for weekly clients.)

          -  How  often  snapshots  are  taken.  (The  standard snapshot
             interval is every 30 minutes.)


       R     September 1991                                           33\f

       Rational Environment Release Information


          -  Whether (and when) to send  a  snapshot  warning,  snapshot
             start messages, and snapshot finish messages. (The standard
             is to send a warning 20 seconds before  the  next  snapshot
             and to notify users only when the snapshot has finished.)

          -  The  interval for daemon warnings. (The standard is to send
             a warning 2 minutes before the daily clients begin.)

          -  Whether to send disk-collection  threshold  warnings.  (The
             standard  is  to warn users when collection thresholds have
             been passed.)

          -  What kinds of system log messages appear  on  the  operator
             console.  (The  standard is to route only warning, problem,
             and fatal messages to the operator console.)

          -  Whether clients should perform access-list compaction. (The
             standard is for all relevant clients to perform access-list
             compaction.)

       *  Provide  customized  disk-collection  thresholds   (see   also
          section   9.3.4).  Note,  however,  that  values  set  by  the
          procedure in world Rational are calculated based on your  disk
          configuration  and  should  be  sufficient;  see your Rational
          technical  representative  if  you  want  to   use   different
          thresholds.

       *  Provide  nonstandard  medium-term scheduler settings. (You can
          enter  the  Scheduler.Display  command  to  see  the  standard
          settings.)  Note, however, that values set by the procedure in
          world  Rational  should  be  sufficient;  see  your   Rational
          technical   representative   if  you  want  to  use  different
          settings.


       9.2.  Setting Up the Site and Local Worlds

       If you have a new R1000, you can use the following guidelines  to
       set up your Site and Local worlds:

       1. Decide  whether  you need to provide any system customizations
          such as those listed in section 9.1.2. Create the  appropriate
          procedures  and/or  "_Start"  files,  using the hints given in
          section 9.3.

       2. Inspect  the  default  Terminal_Configuration  file  that  was
          created  in  the  Local  world  during installation. This file
          enables ports 235 through 249 for login. Edit this file if you
          want to enable a different set of ports and/or specify further
          connection or communication information; see section 9.4.

       3. Decide whether to implement a printer-configuration  mechanism
          to  enable  users to use the !Commands.Abbreviations.Print and
          to facilitate  the  use  of  networked  printers.  Create  the
          appropriate files; see section 9.5.

       34                                           September 1991     R\f

                                                        Release D_12_5_0


       4. If  you  have layered products such as the CDF or RDF, inspect
          the comments in the specifications of the Cross_Compilers  and
          Design_Facilities                 procedures                in
          !Machine.Initialization.Rational. Create  any  files  required
          for initializing these products (for example, a text file that
          registers an RDF customization).

       If you are upgrading from a previous  release  to  D_12_5_0,  the
       Local  world  will  already  contain several objects that contain
       customizations:

       *  A Terminal_Configuration file is automatically created in  the
          Local  world  that  enables  the  same  set of ports that were
          enabled at the time of installation. This file also  preserves
          any  nondefault  communication  characteristics  that  were in
          effect for RS232 ports.

       *  The !Machine.Initialize_Site procedure is automatically  moved
          into  the  Local  world,  as  described  in  the "Installation
          Procedure."

       After your R1000 has been upgraded, you  can  use  the  following
       guidelines to set up your Site and Local worlds:

       1. Inspect  the  Initialize_Site  procedure  that has been copied
          into the Local world during installation. Edit this  procedure
          to   preserve   any   system  customizations  that  are  still
          appropriate.  You  may  want  to  split  this  procedure  into
          separate  procedures  and move appropriate procedures into the
          Site world. See  the  "Installation  Procedure"  for  specific
          recommendations  for handling this procedure. See also section
          9.3  for  information  about  initialization  procedures   and
          "_Start" files.

       2. Inspect  the  default  Terminal_Configuration  file  that  was
          created in the Local world during installation. Edit this file
          if  you want to enable a different set of ports and/or specify
          further connection or communication information;  see  section
          9.4.

       3. Decide  whether to implement a printer-configuration mechanism
          to enable users to use the  !Commands.Abbreviations.Print  and
          to  facilitate  the  use  of  networked  printers.  Create the
          appropriate files; see section 9.5.

       4. If you have layered products such as the CDF or  RDF,  inspect
          the  comments in the specifications of the Cross_Compilers and
          Design_Facilities                procedures                 in
          !Machine.Initialization.Rational.  Create  any  files required
          for initializing these products (for example, a text file that
          registers an RDF customization).





       R     September 1991                                           35\f

       Rational Environment Release Information


       9.3.  Hints for Implementing System Customizations

       This section provides information about:

       *  Writing  customized  initialization procedures in the Site and
          Local worlds; see section 9.3.1.

       *  Writing "_Start" files that reference procedures  that  reside
          in other Environment libraries; see section 9.3.2.

       *  Controlling  the  order in which the customized initialization
          procedures and the "_Start" files are processed by  the  Start
          procedure; see section 9.3.3.

       *  Customizing disk-collection thresholds; see section 9.3.4.


       9.3.1.  Writing Customized Initialization Procedures

       You can write procedures in the Site or Local worlds to implement
       system customizations such as password  policies,  system  daemon
       settings,  and  so on. All procedures that appear in these worlds
       are executed by the Start procedure each time the R1000 boots.

       Customized  initialization  procedures  can  contain   calls   to
       procedures  in various standard Environment packages. Some useful
       packages include:

       *  Package  Daemon,  which  contains  procedures  that   schedule
          clients and warnings

       *  Package  Operator, which contains procedures that set password
          policy and login limits

       *  Package Scheduler, which contains procedures that control  the
          medium-term scheduler

       *  Package  Program, which contains procedures that execute other
          programs

       Note that:

       *  You do not  have  to  provide  initialization  procedures  for
          configuring  login  ports and printer ports; it is recommended
          that you use configuration files instead (see sections 9.4 and
          9.5).

       *  You  do  not  have  to write an initialization procedure "from
          scratch" for customizing disk-collection  thresholds;  if  you
          must  customize  these  thresholds, it is recommended that you
          edit the sample initialization procedure provided in the Local
          world (see section 9.3.4).

       When writing customized initialization procedures:


       36                                           September 1991     R\f

                                                        Release D_12_5_0


       *  You  can  create  separate  procedures  or  put all calls in a
          single procedure. Separate procedures take longer to  execute,
          but make it easier to see what operations are being performed.

       *  You  must  not  duplicate procedure names across the Rational,
          Site, and Local worlds.

       *  You can specify the relative  execution  order  of  procedures
          using annotations (see section 9.3.3).


       9.3.2.    Using   "_Start"   Files  to  Reference  Initialization
       Procedures

       As an alternative to writing procedures directly in the Site  and
       Local worlds, you can create "_Start" files in one or both worlds
       to reference customized initialization procedures that reside

       elsewhere in the Environment. "_Start" files are processed by the
       Start  procedure  each  time  the R1000 boots, and the procedures
       they reference are executed.

       When writing "_Start" files:

       *  You must choose filenames that end with _Start

       *  You must not duplicate filenames across  the  Rational,  Site,
          and Local worlds.

       *  You  must  use  annotations  to  reference the procedure to be
          executed, as illustrated below.

       *  You may use annotations to control  the  order  in  which  the
          Start   procedure  executes  the  referenced  procedures  (see
          section 9.3.3).

       Referencing a procedure in a world or directory. A "_Start"  file
       with   the  following  contents  illustrates  the  basic  set  of
       annotations required to reference a procedure that resides in  an
       Environment world or directory:

            --|Procedure_Name Initialize_Routine
            --|Procedure_Context !Commands.Example
            --|Parameters Notify => "manager",
            --|Parameters Effort_Only => False

       *  The  --|Procedure_Name  annotation  specifies  the name of the
          referenced procedure. If the procedure resides directly  in  a
          library,  you  supply  the  procedure's  simple  name;  if the
          procedure resides in a package, you supply  the  name  in  the
          form Package_Name.Procedure_Name.

       *  The  --|Procedure_Context annotation specifies the Environment
          world or directory that contains the referenced procedure.


       R     September 1991                                           37\f

       Rational Environment Release Information


       *  Each of the --|Parameters annotations specifies the  value  to
          be  used  for  one  of  the  procedure's parameters. Note that
          string values must be enclosed in quotation marks, and  commas
          must be included to separate multiple parameters.

       Referencing  a procedure in a subsystem. A "_Start" file with the
       following contents illustrates how to reference a procedure  that
       resides  in  an Environment subsystem. Note that you must replace
       the --|Procedure_Context annotation  with  the  --|Subsystem  and
       (optional) --|Activity annotations:

            --|Procedure_Name Excelan_Boot_Server
            --|Subsystem !Targets.Implementation.Motorola_68k_Download
            --|Activity !Machine.Release.Current.Activity
            --|No_Wait

       *  The   --|Subsystem   annotation  specifies  the  name  of  the
          subsystem that contains the procedure. (When  this  annotation
          is specified, the --|Procedure_Context annotation is ignored.)

       *  The  --|Activity  annotation specifies the activity to be used
          to obtain the view name and construct the full pathname of the
          procedure.      If      you      omit     this     annotation,
          !Machine.Release.Current.Activity is used.

       *  Note that Excelan_Boot_Server is  a  parameterless  procedure;
          otherwise,  one  or  more  --|Parameters  annotations would be
          present.

       *  The --|No_Wait annotation permits  concurrent  execution  (see
          section  9.3.3).  This  annotation  is  present  because  this
          procedure starts a server.

       Specifying further information. "_Start" files may  also  contain
       annotations  that  control the order in which the Start procedure
       will execute the referenced procedures. See section 9.3.3.

       Using a "_Start" file is equivalent to executing  the  referenced
       procedure via Program.Run_Job or Program.Run. See the comments in
       the specification of !Machine.Initialization.Start for additional
       annotations  that specify the equivalent of the Options parameter
       in the Program.Run_Job procedure and the Context parameter in the
       Program.Run and Program.Run_Job procedures.


       9.3.3.  Controlling the Order of Execution

       You   can   specify   the   relative   execution   order  of  all
       initialization procedures (including those referenced in "_Start"
       files).  To  do  this, you include annotations in the appropriate
       procedure specifications or "_Start" files:

       *  To specify that procedure A cannot run until procedure  B  has
          finished,  you include the annotation --|Prerequisite B in the
          specification of procedure A (or in  the  "_Start"  file  that

       38                                           September 1991     R\f

                                                        Release D_12_5_0


          references procedure A).

          If  procedure  B is referenced in a "_Start" file, you specify
          the filename as  the  annotation's  argument:  --|Prerequisite
          B_Start.

          Note that the argument of this annotation is a simple name and
          that all three worlds (Rational, Local, and Site) are searched
          for  that  simple name. Therefore, simple names must be unique
          across these three worlds if you want to use this annotation.

       *  To specify that procedure  A  must  finish  before  any  other
          procedure  can  start  executing,  you  include the annotation
          --|Wait in  the  specification  of  procedure  A  (or  in  the
          "_Start" file that references procedure A).

          Using  this  annotation is equivalent to executing procedure A
          via Program.Run

       *  To specify that procedure A is to execute as  a  separate  job
          concurrent  with  other procedures, you include the annotation
          --|No_Wait in the specification of  procedure  A  (or  in  the
          "_Start" file that references procedure A).

          Using  this  annotation is equivalent to executing procedure A
          via Program.Run_Job.

       If none of the annotations listed above are present  in  a  given
       procedure  or  "_Start"  file, the --|Wait annotation is assumed.
       That  is,  procedures  are  executed  sequentially  unless   told
       otherwise.

       If   a   circular   dependency  results  from  a  combination  of
       annotations, it will  be  reported  and  ignored,  so  that  each
       procedure will run.

       Note  that you can execute the Start command with the Effort_Only
       parameter set to True to test the execution  order  that  results
       from your annotations.

       See    the    comments    in    the    specification    of    the
       !Machine.Initialization.Start   procedure    for    a    complete
       description of annotation usage, along with examples.


       9.3.4.  Customizing Disk-Collection Thresholds

       You   can   customize  the  disk-collection  thresholds  for  the
       particular needs of your site. To  implement  a  change  in  your
       disk-collection thresholds:

       1. Create an empty Ada unit in the Local world.

       2. Copy  the  contents  of  the following file into the empty Ada
          unit:

       R     September 1991                                           39\f

       Rational Environment Release Information


          !Machine.Initialization.Local.Local_Gc_Thresholds_Sample.

       3. In the Ada unit, edit the Thresholds1 and  Thresholds2  arrays
          to specify the desired thresholds.

       4. Promote the Ada unit.

       Note, however, that values set by the procedure in world Rational
       are calculated based on your disk  configuration  and  should  be
       sufficient;  see  your  Rational  technical representative if you
       want to use different thresholds.


       9.4.  Enabling and Configuring Login Ports

       D_12_5_0     provides     a     file-driven     mechanism      in
       !Machine.Initialization  for  enabling  and configuring ports for
       login.

       At the very least, you must ensure that this mechanism has enough
       information  to  enable  the  desired  login  ports  (see section
       9.4.1). In addition, you may optionally  use  this  mechanism  to
       specify:

       *  Connection  and  terminal-type  characteristics for Telnet and
          RS232      ports,      such      as      logoff-on-disconnect,
          disconnect-on-logoff, and so on

       *  Communication  characteristics  for  RS232 ports, such as flow
          control, parity, and so on

       Such information is specified  using  the  options  described  in
       section 9.4.4.


       9.4.1.  Enabling Ports for Login

       Ports for terminal devices must be enabled for login each time an
       R1000  boots.  Accordingly,   the   !Machine.Initialization.Start
       procedure  calls  a  procedure  called  Terminals in the Rational
       world.  This  procedure  in   turn   consults   a   file   called
       Terminal_Configuration  in  the  Local  world  to determine which
       ports to enable for login. This file-driven mechanism  takes  the
       place  of  a  procedure like !Machine.Initialize_Terminals, which
       enables  terminals  via  calls  to  the  Operator.Enable_Terminal
       procedure.

       The  Terminal_Configuration  file is automatically created in the
       Local world during installation:

       *  On a new machine, a  Terminal_Configuration  file  is  created
          that enables ports 235 through 249 for login.

       *  On an R1000 that is being upgraded from a previous Environment
          release, the Terminal_Configuration file contains entries  for

       40                                           September 1991     R\f

                                                        Release D_12_5_0


          the  same  set  of  ports  that  were  enabled  at the time of
          installation.  (This  file  also  preserves   any   nondefault
          communication  characteristics  that  were in effect for RS232
          ports; see section 9.4.4.)

       You can edit the  Terminal_Configuration  file  at  any  time  to
       change  which ports are enabled. The changes take effect the next
       time you boot the  R1000.  Alternatively,  you  can  execute  the
       Rational.Terminals  procedure  to  make  the  changes take effect
       without  booting  the  R1000.  Note  that  you  must   keep   the
       Terminal_Configuration  file in the Local world, even if you want
       to enable the same ports on all machines at a given site.

       Following is  a  sample  Terminal_Configuration  file  containing
       basic enabling information:

           16 => (Enable)
           224 .. 249 => (Enable)
           -- Ports 250 and 251 are for printers; disable them for login
           250..251 => (Login_Disabled)

       As shown, the Terminal_Configuration file consists of:

       *  Comments preceded with Ada comment notation (--)

       *  Entries of the general form: Port_Range => (Options), where:

          -  Port_Range  can  be a single port number or a range of port
             numbers

          -  Options must be enclosed in parentheses

       The options that pertain to  enabling  and  disabling  ports  are
       summarized in Table A-1.


        ------------------------------------------------------------ 
       |            |                                               |
       |   Option   |                  Description                  |
        ------------------------------------------------------------ 
       |            |                                               |
       |Enable      |When specified for a given port, enables the   |
       |            |port for login. Note that the port cannot      |
       |            |subsequently be enabled for any other device,  |
       |            |such as a printer.                             |
        ------------------------------------------------------------ 
       |            |                                               |
       |Login_      |When specified for a given port, prevents the  |
       |Disabled    |port from being enabled for login-for example, |
       |            |by subsequent usage of the                     |
       |            |Operator.Enable_Terminal command. Note that the|
       |            |port can subsequently be enabled for other     |
       |            |devices, such as printers.                     |
        ------------------------------------------------------------ 

       R     September 1991                                           41\f

       Rational Environment Release Information



        ------------------------------------------------------------ 
       |            |                                               |
       |   Option   |                  Description                  |
        ------------------------------------------------------------ 
       |            |                                               |
       |Disable     |When specified for a given port, disables the  |
       |            |port for all devices. Note that the port can   |
       |            |subsequently be enabled for any device,        |
       |            |including login. Specifying this option is     |
       |            |equivalent to having no entry for the port in  |
       |            |the file.                                      |
        ------------------------------------------------------------ 



       Port  16  is  always  enabled for login, regardless of whether an
       entry exists for it. An entry for port  16  is  included  in  the
       automatically    created    Terminal_Configuration    file    for
       explicitness.

       Do not assign the Enable option to any  port  that  you  plan  to
       enable  for  a  printer or other device (such as a CDF). Instead,
       you can assign the Login_Disabled option or the Disable option to
       those  ports,  or  you  can simply omit entries for them from the
       file. Assigning the Login_Disabled option is recommended  if  you
       want  to  ensure  that  printer ports cannot be enabled for login
       even if the print spooler is killed.


       9.4.2.  Customizing Port Characteristics

       You can add information to  the  Terminal_Configuration  file  to
       specify   connection   characteristics   for   RS232   ports  and
       communication characteristics for RS232 and  Telnet  ports.  Such
       information is specified via the options listed in section 9.4.4.

       The  simplest  way  to specify multiple options is to assign them
       directly to a port or range of ports:

       *  Multiple options  in  a  single  entry  must  be  enclosed  by
          parentheses.

       *  Multiple options must be separated by commas.

       *  The  options can extend over several lines, although the entry
          itself must start on a new line.

       For example,  the  following  entry  assigns  several  connection
       characteristics to ports 224..249 and then enables those ports:

            224..249 => (Logoff_On_Disconnect,
                         Disconnect_On_Logoff,
                         Enable)


       42                                           September 1991     R\f

                                                        Release D_12_5_0


       You   can   organize   recurrent  sets  of  options  and  improve
       readability in the Terminal_Configuration  file  by  defining  an
       abbreviation  for  each  set  of  options and then assigning each
       abbreviation to a port or range of ports:

       *  Abbreviation entries are of the general  form  Abbreviation  =
          Options.  Note  that  the  equals  sign  (=) is used to define
          abbreviations, and not the => symbol, which is used  for  port
          assignment.

       *  Existing  abbreviations can be nested in the definition of new
          abbreviations.

       For example,  the  following  entries  create  the  abbreviations
       User_Ports   and   Telnet_Ports,   assigning   the   Telnet_Ports
       abbreviation to ports 224..249:

            -- Port settings for user login ports
            User_Ports   = (Logoff_On_Disconnect, Disconnect_On_Logoff)

            -- Port settings for telnet ports
            Telnet_Ports = (Terminal_Type => Xrterm, User_Ports)

            224..249     => (Telnet_Ports, Enable)

       When adding entries to a  Terminal_Configuration  file,  bear  in
       mind that:

       *  Nondefault  communication characteristics for RS232 ports must
          be set each time an R1000 boots. Consequently, if a port is to
          have  nondefault values for any of the options listed in Table
          A-4, you must include these options  in  the  entry  for  that
          port. Omitting an option causes its default value to be set.

       *  Connection  and  terminal-type  characteristics persist across
          boots, retaining the last values that were set for them. Thus,
          in principle, the options listed in Tables A-2 and A-3 need to
          be  set  only  once  and  then  can  be   omitted   from   the
          Terminal_Configuration   file.  However,  you  may  choose  to
          include values for these options in the file  to  ensure  that
          booting  the  system  resets them to the proper values in case
          they had been changed.

       *  The options for each port are set in the order in  which  they
          are  assigned  in  the Terminal_Configuration file. Similarly,
          the options in an abbreviation are set in the order  in  which
          they  are declared. If a single port number is included in the
          ranges of more than one entry, that port takes the options  of
          the last entry in which it appears.


       9.4.3.  A Sample Terminal_Configuration File

       The  following  sample  file  shows  how a system manager can use
       abbreviations to organize  port  information  meaningfully.  Note

       R     September 1991                                           43\f

       Rational Environment Release Information


       that  a  number of connection options have been explicitly set to
       ensure that booting the system sets them to a known  value.  Note
       also  that specifying the Disable option for the printer ports is
       not absolutely necessary; however, specifying this option ensures
       that  no  previous  entry  in  the file had inadvertently enabled
       these ports.

            -- Operator line 16 settings
            Operator_Port = (~Logoff_On_Disconnect,
                             ~Disconnect_On_Logoff,
                             ~Login_Disabled)

            -- User login port settings
            User_Ports = (Logoff_On_Disconnect, Disconnect_On_Logoff,
                          ~Login_Disabled,
                          ~Log_Failed_Logins,
                          ~Disconnect_On_Failed_Login,
                          ~Disconnect_On_Disconnect)

            -- Dial-in port connection settings
            Dialin_Ports = (Terminal_Type => VT100,
                            Input_Rate => Baud_2400, 
                            Output_Rate => Baud_2400,
                            Parity => None,
                            Bits_Per_Char => Char_8,
                            Stop_Bits => 1,
                            User_Ports)

            -- Telnet port settings
            Telnet_Ports = (Terminal_Type => Xrterm, User_Ports)

            -- Printer port settings
            Printer_Ports = (Login_Disabled)

            -- Ports not in use
            Unused = (Login_Disabled)


            16 => (Operator_Port, Enable)
            17..31 => (Dialin_Ports, Enable)
            224..249 => (Telnet_Ports, Enable)
            250..251 => (Disable, Printer_Ports)
            252..255 => (Disable, Unused)


       9.4.4.  Terminal-Configuration Options

       Tables A-2, A-3, and A-4 summarize the connection, terminal type,
       and   RS232   communication   options  you  can  specify  in  the
       Terminal_Configuration file. These options  invoke  corresponding
       procedures in package Terminal.


          Table A-2   Boolean Options for Connection Characteristics




       44                                           September 1991     R\f

                                                        Release D_12_5_0



        ------------------------------------------------------------ 
       |                      |                                     |
       |        Option        |             Description             |
        ------------------------------------------------------------ 
       |                      |                                     |
       |Disconnect_On_        |When specified for a given port,     |
       |Disconnect            |causes the Environment to respond to |
       |                      |an incoming disconnect signal        |
       |                      |received on that port by initiating  |
       |                      |an outgoing disconnect signal on that|
       |                      |port.                                |
        ------------------------------------------------------------ 
       |                      |                                     |
       |Disconnect_On_Failed_ |When specified for a given port,     |
       |Login                 |causes the Environment to initiate an|
       |                      |outgoing disconnect signal on that   |
       |                      |port when a user repeatedly fails to |
       |                      |log in on that port (for example, by |
       |                      |repeatedly entering an incorrect     |
       |                      |password or unrecognized username).  |
        ------------------------------------------------------------ 
       |                      |                                     |
       |Disconnect_On_Logoff  |When specified for a given port,     |
       |                      |causes the Environment to initiate an|
       |                      |outgoing disconnect signal on that   |
       |                      |port when a user logs off a session  |
       |                      |running on that port.                |
        ------------------------------------------------------------ 
       |                      |                                     |
       |Log_Failed_Logins     |When specified for a given port,     |
       |                      |causes the Environment to write an   |
       |                      |entry to the system error log when a |
       |                      |user repeatedly fails to log in on   |
       |                      |that port (for example, by repeatedly|
       |                      |entering an incorrect password or    |
       |                      |unrecognized username).              |
        ------------------------------------------------------------ 
       |                      |                                     |
       |Logoff_on_Disconnect  |When specified for a given port,     |
       |                      |causes the Environment to respond to |
       |                      |a disconnect received on that port by|
       |                      |logging off that port's session.     |
        ------------------------------------------------------------ 




          Table A-3   Enumeration Option for Specifying Terminal Type







       R     September 1991                                           45\f

       Rational Environment Release Information



        ------------------------------------------------------------- 
       |                    |                                        |
       |  Option => Value   |              Description               |
        ------------------------------------------------------------- 
       |                    |                                        |
       |Terminal_Type       |Specifies the output driver type for a  |
       |                    |given port. Value can be any valid      |
       |                    |terminal type name, including (but not  |
       |                    |limited to):                            |
       |                    |Cit500r  Facit  Rational  Vt100  Xrterm |
        ------------------------------------------------------------- 




            Table A-4   Enumeration Options for RS232 Communication
        ------------------------------------------------------------- 
       |                    |       |                                |
       |                    |Default|                                |
       |  Option => Value   | Value |          Description           |
        ------------------------------------------------------------- 
       |                    |       |                                |
       |Bits_Per_Char       |Char_8 |Specifies the number of data    |
       |                    |       |bits per character. Value can   |
       |                    |       |be: Char_5  Char_6  Char_7      |
       |                    |       |Char_8                          |
        ------------------------------------------------------------- 
       |                    |       |                                |
       |Flow_Control        | None  |Specifies software flow control |
       |                    |       |for data transmitted by the     |
       |                    |       |R1000 on the specified port.    |
       |                    |       |Value can be:                   |
       |                    |       |None  Xon_Xoff  Dtr  Rts        |
        ------------------------------------------------------------- 
       |                    |       |                                |
       |Input_Rate          | Baud_ |Sets the incoming data rate for |
       |                    | 9600  |a given port. Value can be:     |
       |                    |       |Baud_50     Baud_75     Baud_110|
       |                    |       |Baud_134_5  Baud_150    Baud_200|
       |                    |       |Baud_300    Baud_600            |
       |                    |       |Baud_1200                       |
       |                    |       |Baud_1800   Baud_2400           |
       |                    |       |Baud_9600                       |
       |                    |       |Baud_19200  Disabled            |
       |                    |       |Ext_Rec_Clk                     |
        ------------------------------------------------------------- 
       |                    |       |                                |
       |Output_Rate         | Baud_ |Sets the outgoing data rate for |
       |                    | 9600  |a given port. Values are the    |
       |                    |       |same as for Input_Rate.         |
        ------------------------------------------------------------- 




       46                                           September 1991     R\f

                                                        Release D_12_5_0



        ------------------------------------------------------------- 
       |                    |       |                                |
       |                    |Default|                                |
       |  Option => Value   | Value |          Description           |
        ------------------------------------------------------------- 
       |                    |       |                                |
       |Parity              | None  |Sets the parity for transmitted |
       |                    |       |and received data on a given    |
       |                    |       |port. Value can be: None  Odd   |
       |                    |       |Even                            |
        ------------------------------------------------------------- 
       |                    |       |                                |
       |Stop_Bits           |   2   |Sets the number of stop bits for|
       |                    |       |a given port. Value is a natural|
       |                    |       |number in the range 1..2.       |
        ------------------------------------------------------------- 
       |                    |       |                                |
       |Receive_Flow_Control| None  |Specifies flow control of data  |
       |                    |       |received by the R1000 on the    |
       |                    |       |specified port. Value can be:   |
       |                    |       |None  Xon_Xoff  Dtr  Rts        |
        ------------------------------------------------------------- 
       |                    |       |                                |
       |Receive_Xon_Xoff_   |(17,19)|Specifies flow-control bytes so |
       |Bytes               |       |that the R1000 can regulate the |
       |                    |       |data it receives on the         |
       |                    |       |specified port. Value is (n,m), |
       |                    |       |where n and m are natural       |
       |                    |       |numbers in the range 0..255.    |
        ------------------------------------------------------------- 
       |                    |       |                                |
       |Xon_Xoff_Bytes      |(17,19)|Specifies the flow-control bytes|
       |                    |       |that the R1000 recognizes for   |
       |                    |       |the specified port. Value is:   |
       |                    |       |(n,m), where n and m are natural|
       |                    |       |numbers in the range 0..255.    |
        ------------------------------------------------------------- 




       9.5.  Configuring Printers

       D_12_5_0      provides     a     file-driven     mechanism     in
       !Machine.Initialization for  configuring  a  group  of  networked
       and/or  local  printers.  This  mechanism  allows you to define a
       printer name for each printer on the network and to  specify  how
       each  printer  is  to  be  accessed.  Furthermore,  you  can also
       associate a printer name with each user, so  that  when  a  given
       user      enters      the     Print     command     (that     is,
       !Commands.Abbreviations.Print), the print job will,  by  default,
       be  sent  to the device that is defined by the associated printer
       name.


       R     September 1991                                           47\f

       Rational Environment Release Information


       This new mechanism automatically adds the  specified  devices  to
       the  appropriate  R1000s,  creates the necessary print classes on
       the appropriate  R1000s,  and  associates  each  class  with  the
       specified  device,  thereby creating print queues. Thus, when you
       use the new mechanism, you do not need  to  use  procedures  from
       package  Queue  (such as Add, Create, Enable, and Register) to do
       these things.

       Existing sites can choose whether to use this new mechanism or to
       continue   using  procedures  from  package  Queue  to  configure
       printers. However, because the new mechanism combines  class  and
       machine  information,  it  is  recommended  that large sites with
       multiple networked printers use the  new  !Machine.Initialization
       mechanism.  Small  sites  with few printers connected directly to
       R1000s may want to continue using package Queue.


       9.5.1.  Where to Specify Printer Information

       Each  time  an  R1000  boots,  the  !Machine.Initialization.Start
       procedure  calls  a  procedure  called  Printers  in the Rational
       world. This procedure initializes the print spooler on that R1000
       based on the information in the following user-created files:

       *  !Machine.Initialization.Site.Printer_Configuration,      which
          defines a printer name for each of the  devices  available  on
          the network and specifies how each device is to be accessed. A
          copy of this file must exist on all R1000s  from  which  users
          will  enter  the  Print  command  and  on all R1000s that will
          handle print requests for the specified devices.

       *  !Machine.Initialization.Local.Printer_Configuration,     which
          defines   additional  printer  names  for  additional  devices
          intended only for users of the current R1000.

       *  !Machine.Initialization.Local.User_Printer_Map,          which
          associates a default printer name with individual users on the
          current R1000. When a user executes the Print command with the
          default  Printer  parameter,  the  command looks up the user's
          name and sends the print request to the corresponding printer.

       At   a   minimum,   the   Print   command   requires   that   one
       Printer_Configuration  file  exist  in  either  the Site or Local
       world. If no User_Printer_Map file exists (or if the file  exists
       but  contains  no entry for a particular user), the Print command
       uses    the    first    printer    name    defined     in     the
       Site.Printer_Configuration  file. If this file doesn't exist, the
       first printer name  defined  in  the  Local.Printer_Configuration
       file is used.

       If you choose not to create any of these files, you will have to:

       *  Create  an  initialization  procedure  (in  either the Site or
          Local world) that uses package Queue to  create  print  queues
          each time the system boots.

       48                                           September 1991     R\f

                                                        Release D_12_5_0


       *  Either:

          -  Use    the    Queue.Print    command    instead    of   the
             !Commands.Abbreviations.Print command.

          -  Use   the   !Commands.Abbreviations.Print   command,    but
             explicitly   specify   the   class  name  for  the  Printer
             parameter.


       9.5.2.  Adding Entries to a Printer_Configuration File

       During  installation,  an  empty  Printer_Configuration  file  is
       created in the Local world. After installation, you can:

       *  Add  entries  to  this  file  to  enable  the use of the Print
          command.

       *  Move  this  file  (or  create  an   additional   file   called
          Printer_Configuration)  in  the  Site  world,  if  you need to
          define sitewide printer information.

       Each entry in a Printer_Configuration file defines a printer name
       and specifies the characteristics of the device it represents.

       Each  entry  must  start  on  a new line, but the information can
       extend over several lines and  can  include  single  and  in-line
       comments.  For  readability, the entries are often formatted like
       command parameters.

       Each entry has the general form:

            Printer_Name => (Device_Type => Device_Info,
                             Other_Device_Characteristics,
                             Laser_Comm => Boolean,
                             Reverse_Output_Pages => Boolean,
                             On_Node => R1000_Name)

       where:

       *  Printer_Name is the name by which you want to refer to a given
          device in a Print command.

       *  Device_Type  is  one  of  the  following four kinds of printer
          devices:

          -  Direct, which specifies a printer connected to an R1000 via
             direct line.

          -  Telnet, which specifies a printer connected to an R1000 via
             Telnet.

          -  File,  which  specifies  a  file  on  an  R1000  in   which
             print-spooler output is collected. Subsequent processing is
             required to get this output printed.

       R     September 1991                                           49\f

       Rational Environment Release Information


          -  Workstation,  which  specifies  a  directory  on  a  remote
             workstation to which print requests are sent. Such requests
             are sent via FTP  as  individual  files;  from  the  remote
             directory,  they  can  be  printed  using the workstation's
             print tools.

       *  Device_Info  is  further  information  about  the  device  you
          specified.  The  information  depends  on  the  type of device
          specified (see the paragraphs below).

       *  Other_Device_Characteristics are  additional  entry  elements,
          separated  by  commas, that give further information about the
          chosen device (see the paragraphs below).

       *  The Laser_Comm option, when True, specifies that printing will
          be  done on a laser printer. Omitting this option implies that
          printing will be done on a line printer.

          For Direct and Telnet  devices,  setting  Laser_Comm  to  True
          specifies  that  a  laser  printer  is connected; for File and
          Workstation devices, setting Laser_Comm to True specifies that
          the  collected  print requests will eventually be printed on a
          laser printer.

       *  The Reverse_Output_Pages option allows you to adjust the order
          in which pages are spooled to accommodate the way your printer
          stacks pages in its output tray. This option applies  only  if
          the Laser_Comm option is set to True.

          -  Setting  Reverse_Output_Pages  to  True  causes  the  print
             spooler to reverse the order of output pages, so  that  the
             last logical page is printed first. Omitting this option is
             equivalent to specifying True.

          -  Setting Reverse_Output_Pages  to  False  causes  the  print
             spooler  to  keep the pages of output in the order in which
             they appear in the source file.

       *  The On_Node option specifies the network  name  of  the  R1000
          that  contains the print spooler for the device. Omitting this
          option is equivalent to specifying the  name  of  the  current
          R1000.

       The  following  paragraphs  describe  printer-configuration  file
       entries for each of the four kinds  of  devices.  (See  also  the
       comments          in         the         specification         of
       !Machine.Initialization.Rational.Printers.)


       9.5.3.  Specifying a Directly Connected Printer

       To specify a printer connected to an R1000 via direct  line,  you
       specify an entry of the following general form:

            Printer_Name => (Direct => Protocol,

       50                                           September 1991     R\f

                                                        Release D_12_5_0


                             Device => Terminal_n,
                             Laser_Comm => Boolean,
                             Reverse_Output_Pages => Boolean,
                             On_Node => R1000_Name)

       where:

       *  Protocol  specifies the printer flow control and can be either
          Xon_Xoff or Dtr. See the printer manual for details.

       *  Terminal_n represents the RS232C port to which the printer  is
          connected  (n is the port number). The specified port must not
          be enabled for login in the Local.Terminal_Configuration file.

       *  The Laser_Comm option,  when  True,  specifies  that  a  laser
          printer     is     connected    and    enables    a    two-way
          printer-communication  protocol.  Omitting   the   option   is
          equivalent  to  specifying  False,  which  means  that  a line
          printer is connected.

       *  The Reverse_Output_Pages option allows you to adjust the order
          in which pages are spooled to accommodate the way your printer
          stacks pages in its  output  tray,  as  described  in  section
          9.5.2. This option applies only if Laser_Comm is set to True.

       *  The  On_Node option specifies the network name of the R1000 to
          which the printer is directly connected. Omitting this  option
          is equivalent to specifying the name of the current R1000.

       The  following  entry  creates  a  printer  name called Lp, which
       represents a line printer that is directly connected to  port  30
       of an R1000 called Jazmo:

            -- Lineprinter connected to jazmo
            Lp => (Direct  => Xon_Xoff,
                   Device  => terminal_30,
                   On_Node => jazmo)


       9.5.4.  Specifying a Networked Printer

       To  specify  a  printer  connected  to  an  R1000 via Telnet, you
       specify an entry of the following general form:

            Printer_Name => (Telnet  => Host_Name,
                             Device  => Terminal_n,
                             Laser_Comm => Boolean,
                             Reverse_Output_Pages => Boolean,
                             On_Node => R1000_Name)

       where:

       *  Host_Name is the network name of the printer.



       R     September 1991                                           51\f

       Rational Environment Release Information


       *  Terminal_n represents the Telnet port to which the printer  is
          connected  (n is the port number). The specified port must not
          be enabled for login in the Local.Terminal_Configuration file.

       *  The Laser_Comm option,  when  True,  specifies  that  a  laser
          printer     is     connected    and    enables    a    two-way
          printer-communication  protocol.  Omitting   the   option   is
          equivalent  to  specifying  False,  which  means  that  a line
          printer is connected.

       *  The Reverse_Output_Pages option allows you to adjust the order
          in which pages are spooled to accommodate the way your printer
          stacks pages in its  output  tray,  as  described  in  section
          9.5.2. This option applies only if Laser_Comm is set to True.

       *  The  On_Node option specifies the network name of the R1000 to
          which the printer  is  connected  via  Telnet.  Omitting  this
          option  is  equivalent  to  specifying the name of the current
          R1000.

       The following entry creates a printer name called  Dlaser,  which
       represents  a  laser printer that is connected via Telnet to port
       226 of an R1000 called Roget. Because of  the  way  this  printer
       stacks its output, print requests are spooled to this device with
       their pages in ascending (rather than reversed) order:

            -- Documentation's laser printer
            Dlaser => (Telnet => doc_laser,
                       Device => terminal_226,
                       Laser_Comm,
                       Reverse_Output_Pages => false,
                       On_Node => roget)


       9.5.5.  Specifying an Environment File

       To specify a file in which to collect print-spooler  output,  you
       specify an entry of the following general form:

            Printer_Name => (File => Environment_Pathname,
                             Laser_Comm => Boolean,
                             Reverse_Output_Pages => Boolean,
                             On_Node => R1000_Name)

       where:

       *  Environment_Pathname  specifies  the  file  to which output is
          written. The pathname must name a  file  that  exists  on  the
          R1000  named by On_Node. Note that the group Spooler must have
          access to the specified file.

       *  The Laser_Comm option, when True, specifies that the collected
          print  requests will eventually be printed on a laser printer.
          Omitting the option is equivalent to specifying  False,  which
          means that a line printer will be used.

       52                                           September 1991     R\f

                                                        Release D_12_5_0


       *  The Reverse_Output_Pages option allows you to adjust the order
          in which pages are spooled to accommodate the way your printer
          stacks  pages  in  its  output  tray,  as described in section
          9.5.2. This option applies only if Laser_Comm is set to True.

       *  The On_Node option specifies the network name of the R1000  on
          which  the file is located. Omitting this option is equivalent
          to specifying the name of the current R1000.

       The following entry creates a printer  name  called  Hold,  which
       represents  a  file  on  an R1000 called Logo. Low-priority print
       requests are sent to this file, where they are held until someone
       prints  the  file  using  the Print command (specifying a printer
       name that represents a connected printer):

            -- Place to hold large requests until printers are free in
            the evening
            Hold => (File => !Machine.Queues.Local.Held_Print_Requests,
                     On_Node => Logo)


       9.5.6.  Specifying a Workstation Directory

       To specify a directory on a workstation to which  print  requests
       are sent, you specify an entry of the following general form:

            Printer_Name => (Workstation => Host_Name,
                             Path => Directory_Name,
                             Laser_Comm => Boolean,
                             Suffix => String,
                             Reverse_Output_Pages => Boolean,
                             On_Node => R1000_Name)

       where:

       *  Host_Name  is the network name of the workstation to which the
          files will be transferred.

       *  Directory_Name is the pathname of  the  workstation  directory
          into  which  the  files  will  be  transferred.  The directory
          pathname must have syntax appropriate to the  workstation  and
          must  have  trailing  punctuation that permits the name of the
          transferred print-request file to be appended.

       *  The Laser_Comm option, when True, specifies that the collected
          print  requests will eventually be printed on a laser printer.
          Omitting the option is equivalent to specifying  False,  which
          means that a line printer will be used.

       *  The  Suffix  option  allows  you  to  specify  a  string to be
          appended to the filenames that are created on the workstation.
          Omitting  this  option  causes no suffix to be appended to the
          filenames. The specified suffix can be used by print tools  as
          a way of identifying which files to print. This is useful when
          several printer names send files to the same directory.

       R     September 1991                                           53\f

       Rational Environment Release Information


       *  The Reverse_Output_Pages option allows you to adjust the order
          in which pages are spooled to accommodate the way your printer
          stacks pages in its  output  tray,  as  described  in  section
          9.5.2. This option applies only if Laser_Comm is set to True.

       *  The  On_Node  option  specifies  the network name of the R1000
          whose print spooler handles the print requests. Omitting  this
          option  is  equivalent  to  specifying the name of the current
          R1000.

       When print requests are sent as files to a workstation,  any  FTP
       messages   are  directed  to  a  log  file  that  is  created  in
       !Machine.Queues.Ftp. This log file is automatically cleared after
       each  100  print  requests. Messages pertaining to creating print
       classes and enabling devices are directed  to  the  system  error
       log.

       The  following  two  entries  create  printer  names Dc_Laser and
       Dc_Lineprinter,  both  of  which  direct  print  requests  to   a
       directory  on  a UNIX workstation called Enterprise. These print
       requests, which are routed through the print spooler on an  R1000
       called  Capitol,  are  sent  as  files  with  different suffixes,
       depending on the printer name (_Lsr and _Lpt, respectively):

            -- Laser printer attached to workstation in Washington,
            -- D.C., office;
            -- spooled on R1000 called Capitol.
            Dc_Laser => (Workstation => Enterprise,
                         Path => /usr/spool/ratqueue/,
                         Laser_Comm,
                         Suffix => _Lsr,
                         On_Node => Capitol)

            -- Line printer attached to workstation in Washington, D.C.,
            -- office;
            -- spooled on R1000 called Capitol.
            Dc_Lineprinter =>
                        (Workstation => Enterprise,
                         Path => /usr/spool/ratqueue/,
                         Suffix => _Lpt,
                         On_Node => Capitol)

       Print tools on the workstation, such as the following sample, are
       required to actually print the requests:

     # This program spools print requests placed in /usr/spool/ratqueue to
     # the appropriate printer based on the suffix of the spooled file.
     # It checks the spool directory at five-minute intervals to see if any
     # new files need printing. This runs as a C-shell script. To execute,
     # type csh and the name of this file.


       54                                           September 1991     R\f

                                                        Release D_12_5_0


     :
     set xFTPxDIRx=/usr/spool/ratqueue             #spool directory
     #
     set xFTPxSUFFIXxLSRx=_Lsr      # Laser printer suffix
     set xFTPxSUFFIXxLPTx=_Lpt      # Line printer suffix
     #
     set xPRINTxLISTxLSRx=/tmp/rat_print_lsr.$$    # Laser printer list file
     set xPRINTxLISTxLPTx=/tmp/rat_print_lpt.$$    # Line printer list file
     #
     set xPRINTxCOMMANDx=/tmp/rat_command.$$       # temporary print command file
     #
     set xPRINTxDELAYx=120          # interval to wait before printing
     set xRECHECKxTIMEx=180         # interval for checking print requests
     #
     cd $xFTPxDIRx
     while (1 == 1)
     #
     # Creates a list of files to print for each printer.
     #
         ls $xFTPxDIRx | grep $xFTPxSUFFIXxLSRx > $xPRINTxLISTxLSRx
         ls $xFTPxDIRx | grep $xFTPxSUFFIXxLPTx > $xPRINTxLISTxLPTx
     #
     # Adds the laser- and line-printer files to the print-command file
     # (the device name of each type of printer should be provided after the -P).
     #
      cat $xPRINTxLISTxLSRx | sed -e 's^.^lpr -r -Plaser &^' > $xPRINTxCOMMANDx
      cat $xPRINTxLISTxLPTx | sed -e 's^.^lpr -r -Pline &^' >> $xPRINTxCOMMANDx
     #
     # Waits the specified amount of time before printing the requests.
     # (This delay allows time for the FTP operation to complete and should
     # be adjusted based on the average length of files being printed.)
     #
         sleep $xPRINTxDELAYx
     #
     # Prints the files if there are any to print.
     #
         set LCNT=`cat $xPRINTxCOMMANDx | wc -l `
         if ( $LCNT != 0 ) then
             chmod +x $xPRINTxCOMMANDx
             $xPRINTxCOMMANDx
         endif
     #
     # Waits the specified amount of time.
     #
     
       R     September 1991                                           55\f

       Rational Environment Release Information


         sleep $xRECHECKxTIMEx
     #
     # Removes the old temporary files.
     #
         rm $xPRINTxLISTxLSRx
         rm $xPRINTxLISTxLPTx
         rm $xPRINTxCOMMANDx
     #
     end


       9.5.7.  Associating Default Printers with Individual Users

       To  associate a default printer with each user, you must create a
       file called User_Printer_Map in the Local world and  add  entries
       of the following form:

            Username  Printer_Name

       where:

       *  Username is either:

          -  The username for an R1000 user

          -  The   string   Others,   which  represents  all  users  not
             explicitly listed by name.

       *  Printer_Name is defined in a Printer_Configuration file.

       Following is a sample User_Printer_Map file:

            phil dc_laser
            sue dlaser
            others lp

       See   also    the    comments    in    the    specification    of
       !Machine.Initialization.Rational.Printers.


















       56                                           September 1991     R\f

                                                        Release D_12_5_0


                                   Contents


       1.  Overview                                                    0
       2.  Supported Configurations and Upgrades                       1
       3.  Compatibility                                               2
       4.  Upgrade Impact                                              3
          4.1.  Impact of Specification Changes                        3
          4.2.  Impact of Implementation Changes                       4
       5.  Known Problems                                              4
          5.1.  Problem in Spelling Checker                            4
          5.2.  Problem for CDF Customization                          4
       6.  New Environment Interfaces                                  5
          6.1.  New Procedures in Package Access_List                  5
             6.1.1.  Procedure Remove                                  5
             6.1.2.  Procedure Remove_Default                          5
          6.2.  New Procedures in !Commands.Abbreviations              6
             6.2.1.  Procedure Cancel_Print_Request                    6
             6.2.2.  Procedure Display_Queue                           6
             6.2.3.  Procedure Print                                   6
          6.3.  New Procedures in System_Maintenance Subsystem         7
             6.3.1.  Procedure Analyze_Disks_For_Backup                7
             6.3.2.  Procedure Destroy_Library                         8
             6.3.3.  Procedure Monitor_Performance                     8
             6.3.4.  Procedure Repair_Cg_Attrs                        10
          6.4.  New Functions in Package Work_Order_Implementation    10
          6.5.  Package Remote_Passwords                              11
          6.6.  Package Transport_Name.Service                        11
          6.7.  Package Transport.Route                               11
          6.8.  IP Subnetting                                         11
          6.9.  Math_Support Subsystem                                12
          6.10.  Dfs Subsystem                                        13
             6.10.1.  Procedure Analyze_Crashdump                     13
       7.  Changes from D_12_1_1                                      13
          7.1.  Editor Changes                                        14
          7.2.  Changes to Package Common                             14
          7.3.  Changes to Debugging                                  14
             7.3.1.  Setting Breakpoints                              14
             7.3.2.  Displaying Values                                15
             7.3.3.  Quitting While the Debugger Is Running           15
             7.3.4.  Other Debugger Changes                           15
          7.4.  Changes to Session Switches                           16
          7.5.  Access-Control Changes                                16
          7.6.  Changes to Links Management                           17
          7.7.  Compilation Changes                                   17
             7.7.1.  Installing Units                                 17
             7.7.2.  Coding Units                                     18
             7.7.3.  Executing Units                                  19
          7.8.  Library Switches                                      19
          7.9.  Archive Changes                                       19
             7.9.1.  Archiving Units with Large CDBs                  20
             7.9.2.  Archive Options                                  20
          7.10.  Changes to String Tools and Programming Tools        21
          7.11.  Changes to Package Operator                          21
          7.12.  Changes Pertaining to Printing                       22

       R     September 1991                                          iii\f

       Rational Environment Release Information


             7.12.1.  Change to Package Queue                         22
             7.12.2.  Changes to !Commands.Abbreviations.Print        23
          7.13.  Machine-Initialization Software                      23
          7.14.  Changes to Diagnostic File System (DFS)              23
          7.15.  !Tools.System_Availability                           24
          7.16.  !Commands.System_Maintenance                         24
          7.17.  Changes to the Boot Process                          24
          7.18.  Changes Pertaining to Backups                        24
          7.19.  Miscellaneous System-Management Changes              24
          7.20.  CMVC Changes                                         25
             7.20.1.  Changes to Editing Activities                   25
             7.20.2.  Changes to Package Cmvc                         25
             7.20.3.  Changes to Package Cmvc_Maintenance             26
             7.20.4.  Changes to Work Orders                          26
             7.20.5.  Spec Change in Package Work_Order_Implementation26
          7.21.  Networking Changes                                   27
             7.21.1.  IP Routing                                      27
             7.21.2.  Miscellaneous Networking Changes                29
       8.  Documentation                                              29
       9.  Appendix A: !Machine.Initialization                        30
          9.1.  Overview                                              31
             9.1.1.  World !Machine.Initialization.Rational           32
             9.1.2.  Worlds !Machine.Initialization.[Site,Local]      33
          9.2.  Setting Up the Site and Local Worlds                  34
          9.3.  Hints for Implementing System Customizations          36
             9.3.1.  Writing Customized Initialization Procedures     36
             9.3.2.  Using "_Start" Files to Reference Initialization
             Procedures                                               37
             9.3.3.  Controlling the Order of Execution               38
             9.3.4.  Customizing Disk-Collection Thresholds           39
          9.4.  Enabling and Configuring Login Ports                  40
             9.4.1.  Enabling Ports for Login                         40
             9.4.2.  Customizing Port Characteristics                 42
             9.4.3.  A Sample Terminal_Configuration File             43
             9.4.4.  Terminal-Configuration Options                   44
          9.5.  Configuring Printers                                  47
             9.5.1.  Where to Specify Printer Information             48
             9.5.2.  Adding Entries to a Printer_Configuration File   49
             9.5.3.  Specifying a Directly Connected Printer          50
             9.5.4.  Specifying a Networked Printer                   51
             9.5.5.  Specifying an Environment File                   52
             9.5.6.  Specifying a Workstation Directory               53
             9.5.7.  Associating Default Printers with Individual
             Users56












       iv                                           September 1991     R