|
|
DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 Tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: E T
Length: 151044 (0x24e04)
Types: TextFile
Names: »ENVIRONMENT_RELEASE12_5_0_LPT«
└─⟦d10a02448⟧ Bits:30000409 8mm tape, Rational 1000, ENVIRONMENT, D_12_7_3
└─⟦fc9b38f02⟧ »DATA«
└─⟦47afa1691⟧
└─⟦this⟧
└─⟦5f3412b64⟧ Bits:30000745 8mm tape, Rational 1000, ENVIRONMENT 12_6_5 TOOLS
└─⟦91c658230⟧ »DATA«
└─⟦75a4ca594⟧
└─⟦this⟧
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\f