|
DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - download
Length: 168974 (0x2940e) Types: TextFile Notes: R1k Text-file segment
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000 └─ ⟦5a81ac88f⟧ »Space Info Vol 1« └─⟦dd137ea4c⟧ └─⟦this⟧
D_10_20_0 Release (This release note can be viewed online or printed on a system line printer using Queue.Print with Options => "raw".) 1. Overview The main objectives of the D_10_20_0 release of the Rational Environment are: * To provide a production release of the Rational Environment that will support production versions of the Cross-Development Facility and Rational Design Facility products. * To complete Delta features that were not implemented in the D_9_25_1 release. For a complete list of new features, see Section 4 of this document. * To fix outstanding bugs discovered in the D_9_25_1 release. 2. Compatibility An upgrade to the D_10_20_0 product will require the following releases of the Design Facility, Cross-Development Facility, Target Build Utility, and Rational Network Mail products. It will not be possible to run older versions of these products with D_10_20_0. Upgrade of these products will be done in conjunction with the D_10_20_0 Environment upgrade. Release Required for Compatibility with Delta 1 R 10/17/88 1\f Rational Environment Release Information ------------------------- | Product | Revisio| | | n | ------------------------- | Design Facility| Rev6_0_| | | x | ------------------------- | MIL-STD-1750A | Rev3_0_| | CDF | x | ------------------------- | M68000 Family | Rev3_0_| | CDF | x | ------------------------- | MC68020/OS-2000| Rev3_0_| | CDF | x | ------------------------- | VAX/VMS CDF | Rev3_0_| | | x | ------------------------- | Target Build | Code9_4| | Utility | _4 | ------------------------- | Network Mail | Rev10_0| | | _0 | ------------------------- 2.1. Interoperability 2.1.1. Archive It will be possible to use Archive to move data between D_10_20_0 and earlier Delta systems. In some cases, moving subsystems between D_10_20_0 and earlier Delta systems will not work: 2 10/17/88 R\f D_10_20_0 Release * It will not be possible to move subsystems or views of subsystems on D_10_20_0 machines to primary subsystems on earlier Delta machines. * If you are moving a subsystem view from a primary subsystem on a D_9_25_1 machine to a secondary subsystem on a D_10_20_0 machine, you may get a semantic error when trying to promote Ada units. The error message will indicate that declaration numbering failed because new declaration numbers cannot be added to a secondary subsystem. This problem will occur if there is a compilation-unit specification that contains a generic instantiation in the view. The workaround for this problem is to make the secondary subsystem on the D_10_20_0 machine a primary subsystem using Cmvc_Maintenance.Make_Primary(Moving_Primary =>True), make the primary subsystem on the D_9_25_1 machine a secondary using Cmvc_Maintenance.Make_Secondary, and then promote the Ada units in the primary to the coded state. If possible, you should continue development on the D_10_20_0 machine-that is, keep that subsystem as the primary. If development must continue on the D_9_25_1 machine, you should first fix the compatibility database on the D_9_25_1 secondary by running the Cmvc_Maintenance.Update_Cdb command and then remember to move your primary back to the D_9_25_1 machine. If development continues on the D_9_25_1 machine, the problem will recur the next time the spec of the generic being instantiated changes. You should not encounter this problem moving views from a D_10_20_0 machine to a D_9_25_1 machine. 2.1.2. Mail Rational Network Mail will work between machines running earlier releases and those running D_10_20_0. 2.1.3. Network Telnet, FTP, and RPC will work between machines running earlier releases and those running D_10_20_0. 2.1.4. Target Build Utility All Target Build Utility state will be preserved; that is, the next invocation of Move_Via_Tape or Move_Via_Network will move and recompile the same set of units it would have before the upgrade to D_10_20_0. R 10/17/88 3\f Rational Environment Release Information 2.1.5. Package Remote The operations in the new package Remote (see Section 4.7) will work even if the remote machine is running an earlier release. 4 10/17/88 R\f D_10_20_0 Release 2.2. Terminal Keymaps In the D_9_25_1 release of the Environment, the names of keys for different terminal types are defined in a single Visible_Key_Names package (!Machine.Editor_Data.Visible_Key_Names). In D_10_20_0, a key name package that defines the key names for that terminal only is included for each terminal type This will prevent having to recompile all programs that depend on a single Visible_Key_Names package every time a terminal type is added or a key name for a specific terminal is changed. After this release has been installed, all programs that are compiled against Visible_Key_Names should be modified to use the Key_Names enumeration type in the different key name packages for each terminal type. These programs most likely will be individual users' Terminal_Type_Commands procedures or any programs that use the Window_Io.Raw package to read raw data from a keyboard. This change was released in D_9_25_1_2 and later releases. 3. Upgrade Impact The D_9_25_1 to D_10_20_0 upgrade will not force customers to Archive.Save and Restore or to recompile any of their programs. Tools written against Directory_Tools, Cmvc, Work_Order, Work_Order_Errors, and Work_Order_Implementation specs may need to be modified. The new D_10_20_0 compilation system will require running a program (run automatically as part of the upgrade) to convert all existing subsystem compatibility databases to a new format. The time necessary to run this program will vary depending on the number of subsystems on the machine. To convert 200 subsystems takes about 1.5 hours. CMVC history may be affected by changes to the pretty-printer to implement alignment. If the new D_10_20_0 pretty-printer capabilities are used (specified by modifying a library switch), the image of a newly formatted program may be different even if the differences are only in the format. Such changes will be stored in the CMVC database. All differences caused by the new pretty-printer will be shown with the Cmvc.Show_History_By_Generation command, but the configuration editor will attempt to minimize display of differences due to changes in white space. For the new compiler to pass certain validation tests, the precision of Universal_Real was changed. This may cause incompatibilities between subsystem spec and load views if constants of this type are exported. Such an incompatibility will appear after either view has been recompiled. One solution is to recompile the other view. If the incompatibility occurs R 10/17/88 5\f Rational Environment Release Information after the load view is recompiled, users may make a new spec view and update the imports for clients instead. Once a system is upgraded to D_10_20_0, it is not possible to revert to a previous Environment release. 6 10/17/88 R\f D_10_20_0 Release 3.1. Spec Changes Some Environment specs have changed in D_10_20_0. The changes mentioned below are changes with respect to D_9_25_1, and some may have been introduced in the D_9_33_0 or D_10_9_10 release. If a release number appears after the spec name, this indicates that the changes first appeared in that release. * !Commands.Ada * !Commands.Cmvc (some changes appear in D_9_33_0) * !Commands.Work_Order (D_9_33_0) * !Commands.Debug (D_9_33_0) * !Commands.Operator * !Implementation.Cmvc_Implementation * !Implementation.Work_Order_Implementation (D_10_9_10) * !Implementation.Work_Order_Errors (D_10_9_10) * !Tools.Networking.Transport * !Tools.Compatibility.Revn_N_Spec.Units.Check * !Commands.Archive (spec comments updated) 3.2. Keymaps There are new versions of the standard Environment keymaps located in !Machine.Editor_Data. These new versions contain no modifications to the current key bindings, but they do contain recommended standard key bindings for layered products such as Network Mail or Design Facility. These recommendations are in the form of comments that can be uncommented if applicable. Installation of D_10_20_0 overwrites the existing keymaps in Machine.Editor_Data. It is recommended that site-specific key bindings be implemented via creation of user-specific keymaps. If site-specific key bindings have been made to the system default keymaps, part of the upgrade process is to save the old keymap. It is recommended that these site-specific bindings be merged into user keymaps. 4. New Features 4.1. New Specs The following packages are new to the Environment in D_10_20_0: R 10/17/88 7\f Rational Environment Release Information * !Commands.Cmvc_Hierarchy * !Commands.Debug_Maintenance * !Commands.Remote * !Implementation.Compatibility 8 10/17/88 R\f D_10_20_0 Release This release also contains the specifications for Lrm_Interface and Design tools, but these tools will not work unless they are authorized. This authorization will be established for all customers of the Rational Design Facility. Users who do not have this authorization can compile programs against these specifications, but the programs will not execute. These specifications are in !Tools.Design and !Tools.Lrm. 4.2. CMVC Features 4.2.1. Support for Controlling Binary Objects This new feature enables controlling of objects using Cmvc.Make_Controlled without saving the object's image in the CMVC database. This is the mechanism that must be used to control objects that have no textual representation-that is, objects other than text files and Ada units. For objects whose source is not maintained: * If an object is checked out, Cmvc.Abandon_Reservation will not revert the object to its previous state. * Cmvc.Check_Out will not cause the object to be updated to the latest checked-in value if a later version does not exist in another view. * Cmvc.Accept_Changes will not cause the object to be updated if the version being accepted does not exist in another view. * Cmvc.Make_Controlled will not check that the new object being controlled is equivalent to the last checked-in value. A new function, !Implementation.Cmvc_Implementation.Element_Operations.Saves_Sour ce, can be used to determine whether the image of an object is stored in the database. 4.2.2. Support for Non-R1000 Target Code Spec/load subsystems are able to contain both spec/load and combined views. There are still two types of subsystem: spec/load and combined. Spec/load subsystems are able to contain spec, load, and combined views, and hierarchical importing is enforced. Combined subsystems can contain only combined views, and circular imports are allowed. If non-R1000 subsystems do not export any generic compilation units, then spec/load subsystems still can be used. If they do, then these subsystems must be implemented using combined views. This new feature allows the combination of spec/load and combined views within the same subsystems so that CMVC control of code for multiple targets is possible by joining objects in the combined R 10/17/88 9\f Rational Environment Release Information views for the target code with the load views for R1000 code. 4.2.3. Cmvc_Hierarchy Operations The Cmvc_Hierarchy operations provide the capability of constructing and managing the release of multisubsystem Ada programs. When an application consists of multiple subsystems, the subsystems can be included in an Environment object called a system. A subsystem is included in a system by establishing a parent-child relationship between the system and subsystem objects using the command Cmvc_Hierarchy.Add_Child. Automated facilities are available to track the latest releases of the children of a system object and to build activities that reference these releases. System objects have the same internal directory structure as subsystems. Systems contain views called system views. Views in systems contain the same subdirectories found in subsystem views and an additional subdirectory called Paths. 10 10/17/88 R\f D_10_20_0 Release The initial system view is a working view. Within the state directory of the working system view, you can build a release activity. A release activity built in this directory, using the Cmvc_Hierarchy.Build_Activity command, will automatically contain entries that reference the latest release from each child subsystem. If necessary, you can modify the activity after it has been built using the Cmvc_Hierarchy.Build_Activity command. The activity should not be modified directly using the activity object editor. Once the activity is correct, a released system view of the system can be spawned from the working view. A system can contain multiple paths that correspond to the paths in the child subsystems. The release activity in each system can be made to reference releases from the corresponding paths in the child subsystems by using path restrictions to limit the child subsystem views to be included when the Cmvc_Hierarchy.Build_Activity command is executed. It is also possible for systems to be children of other systems. If this is the case, the build command copies the contents of the child system's activity into the parent system's activity. 4.2.4. Configuration Editor The configuration editor (CMVC OE) allows the display and manipulation of information in the CMVC database. For example, the current contents of a configuration can be viewed, previous generations can be displayed, and latest changes can be accepted. The CMVC OE is entered by executing !Commands.Cmvc.Edit on a view or a configuration. When applied to a view, the corresponding configuration is displayed. The CMVC OE then shows all of the objects in the configuration in a directory-like format. Three types of images are managed by the CMVC OE: configuration images contain the contents of configurations; generation images contain the contents of particular generations of elements; and history images contain the history and notes associated with particular generations. The CMVC editor does not redraw its image unless the user presses the [Format] key. If you have a CMVC editor display on the screen and perform CMVC operations that should affect the display, it will become out of date. Press [Format] to make it up to date again. 4.2.4.1. Configuration Images Configuration images display the contents of a configuration in a directory-like format. An elided configuration image lists the generations selected by the configuration. An expanded configuration image displays reservation information for each element. This information specifies whether the element is currently checked out or checked in, when the reservation R 10/17/88 11\f Rational Environment Release Information operation occurred, and which view owns the reservation. When a checkin time is displayed, it is the time when the latest generation was checked in, and when a checkout time is displayed, it is the time when the latest generation was checked out. The configuration image also is used to provide access to generation images and history images for the elements in the configuration. Underlining is used in expanded configuration images to mark items that are checked out or out of date. This allows [Next Item] and [Previous Item] to move the cursor to elements of interest. Further expansion of a configuration image past the reservation information displays the reservation token associated with each item in the configuration. The next level of expansion displays the token name and all working views that currently are joined to this configuration for the particular element. CMVC operations such as Check_In, Check_Out, and Accept_Changes can be executed from configuration images by pressing the [Promote], [Demote], and [Complete], respectively. The configuration image is updated to reflect the results of these operations. 4.2.4.2. Generation Images Generation images contain the text of particular generations of elements. These images are accessed through the [Definition] key applied to elements in configuration images. In an expanded form, a generation image contains additional information specifying the differences between the current generation and the previous generation. Differences are shown on a line-by-line basis. A line beginning with a minus (-) indicates that the line was deleted from the previous generation. A line beginning with plus (+) indicates that a line was added to the previous generation. The start of each difference region is underlined to allow [Next Item] and [Previous Item] to move the cursor between difference regions. The generations of a particular element form a sequence from a starting generation to the latest generation. It is possible to iterate through the sequence of generations using Common.Undo and Common.Redo. For example, Undo applied to a generation image will display the image of the previous generation. 4.2.4.3. History Images History images contain the history and notes that have been entered for a particular generation. History images are accessed through the Common.Explain command from either configuration images or generation images. Note that if the cursor is currently on an underline, Explain will produce an explanation of the underline instead of displaying the history image, but in such a case the history image can be displayed by moving the 12 10/17/88 R\f D_10_20_0 Release cursor off the underline. History for a generation includes the checkout and checkin times as well as the user who performed the operation. Notes include the comments provided to CMVC commands as well as notes added by editing the history image. New notes also may be appended to a history image by editing the history image. This allows the history to edited at any time that is convenient. Common.Undo and Common.Redo can be used to iterate over the history for differant generations of the same element. History images also exist for the configurations themselves. History images for configurations display the release history for the configuration. The release history is displayed by using Common.Explain when the cursor is on the header line of the configuration image. 4.2.4.4. Associated Directory Objects When a configuration is associated with a view, the view can be considered the associated directory object of the configuration. Similarly, each controlled object in the view is the associated directory object for some element in the configuration. Commands such as Check_In, Check_Out and Accept_Changes, when applied to elements in a configuration, actually are applied to the associated directory object in the associated view. Commands also are provided to go between images managed by the CMVC OE and associated objects in the directory system. 4.2.4.5. Configuration Image Commands Configuration image commands from package !Commands.Common include: * Definition: Displays the generation image for the generation of the element currently in the configuration when applied to elements in the configuration image listing. * Explain: Displays the history image for the generation of the selected element. If the cursor is on the header line, then release history for the configuration is displayed. If the cursor in on an underline (other than the header), an explanation of the underline is given. * Expand: Shows verbose information for the element or entire configuration. Each expansion displays information at the new level. There are four levels of information. Level one shows just the element and generation information. Level two shows reservation information. Level three shows the reservation token name. Level four shows the reservation token name and the working views that are joined by that token. R 10/17/88 13\f Rational Environment Release Information * Elide: Shows elided information for the element or entire configuration. Each elision goes back one level as defined above in Expand. * Revert/Format: Redraw the configuration image with current information from the CMVC database. Note that CMVC OE images are updated automatically when Promote, Demote, or Complete are executed but not when the CMVC database is changed by any other command. * Promote: Checks in objects that are checked out; can be applied to the entire configuration or individual elements. The configuration must have an associated view. Check_In is performed with the default options for Cmvc.Check_In. The image is updated to reflect the result of the operation. * Demote: Checks out objects; can be applied to the entire configuration or individual elements. The configuration must have an associated view. Check_Out is performed with the default options for Cmvc.Check_Out and with Allow_Demotion => True. The image is updated to reflect the result of the operation. * Edit: Checks out and then displays the associated object. The configuration must have an associated view. The Check_Out is performed with the same options as the Demote operation. The cursor is left in the associated object if the Check_Out succeeds. * Complete: Accepts changes on objects; can be applied to the entire configuration or individual elements. The configuration must have an associated view. Accept_Changes is performed with the default options for Cmvc.Accept_Changes and with Allow_Demotion => True and Remake_Demoted_Units => False. The image is updated to reflect the result of the operation. * Enclosing_Object: Displays the enclosing subsystem. 4.2.4.6. Generation Image Commands Generation image commands from package !Commands.Common include: * Definition: Displays the associated directory object for this generation. * Explain: Displays the history image for the history associated with the current generation. Note that if the cursor is on an underline, an explanation of the underline is given. * Expand: Shows differences between this generation and the previous generation. Differences are shown on a line-by-line basis. Lines beginning with a minus (-) indicate lines deleted from the previous generation. Lines beginning with plus (+) indicate lines added to the previous generation. The start of each difference region is underlined. 14 10/17/88 R\f D_10_20_0 Release * Elide: Does not display differences. * Undo: Displays the previous generation for the current element. The Repeat_Count parameter controls which preceding generation is displayed. * Redo: Displays the next generation for the current element. The Repeat_Count parameter controls which succeeding generation is displayed. * Enclosing_Object: Displays the configuration image for the last configuration that was visited. 4.2.4.7. History Image Commands History image commands from package !Commands.Common include: * Definition: Displays the directory object associated with the generation for which history is being displayed. * Edit: Allows new notes to be added to the history image. * Commit/Promote: Commit the additional history. * Expand: Displays the cumulative history for previous generations. The Repeat_Count parameter controls the range of history that is shown. * Elide: Reduces the cumulative history that is displayed. The Repeat_Count parameter controls the range of history that is shown. * Revert/Format: Redraw the history image with current information from the CMVC database. * Enclosing_Object: Displays the generation image for the generation associated with current history image. * Undo: Displays the history image for a generation that preceded the current generation. The Repeat_Count parameter controls which preceding generation is displayed. * Redo: Displays the history image for a generation that follows the current generation. The Repeat_Count parameter controls which succeeding generation is displayed. 4.2.4.8. Spec Commands The following commands are executed directly from the specification of !Commands.Cmvc: * Edit: Displays a configuration image for the specified configuration when applied to a configuration, view, or any object within a view. R 10/17/88 15\f Rational Environment Release Information * Def: Displays the associated directory object for the selected element or configuration when executed from a configuration image. This command is applicable only if the configuration has an associated view. * Notes: Displays the history image for the generation associated with the directory object when applied to a controlled directory object. 4.2.4.9. Other Commands Other Cmvc and Compilation commands can be executed from configuration images in the CMVC OE. These commands are applicable only when the configuration has an associated view. The commands are applied to the corresponding directory objects in the associated view. For example, Compilation.Make ("<CURSOR>") can be executed in a CMVC OE configuration image and will compile the corresponding object in the view associated with the current configuration. Note that names in these commands must be either fully qualified or special names such as "<CURSOR>", "<IMAGE>", "<SELECTION>", or "<REGION>", which are interpreted by the CMVC OE to apply to associated directory objects. 4.2.5. Clarifications of CMVC Functionality Following paragraphs describe behavior of CMVC which have been subject to misinterpretation. The execution of Cmvc.Join (What_Object => "X", To_Which_View => "V") is equivalent to: Cmvc.Sever ("X"); Cmvc.Join ("X", "V"); That is, the result is that X is first removed from any join set it is currently in and then it is placed in a join set with V. This means that for views A and B each with an object X, then Join (X, A) from B is not necessarily the same as Join (X, B) from A. If a new unit is to be added to a join set, the command should always join the new unit to an existing join set. Otherwise two join sets will result: one with the new unit and the one it was joined to, and one with all the other members of the old join set. If wildcards are used to join objects in a view and the wrong direction is used, large numbers of joined objects can be (accidentally) severed. 16 10/17/88 R\f D_10_20_0 Release Cmvc.Join performs all join operations atomically. This means that any error will result in none of the joins being done, even if there are progress (+++) messages in the log. Most CMVC operations behave this way. Import restriction files may be named for the full pathname of a view. For example, if you want to apply an import restriction to subsystem !Subs.Sub1.Code, but not to !Other_Subs.Sub1.Code, then you can create an import restriction file for your load view named "Other_Subs_Sub1_Code", rather than naming it simply "Code". If you describe an import restriction with the simple name of a subsystem, the restriction will apply to all subsystems with that simple name. This can result in units from other spec views unexpectedly being absent from the importing view, or the entire Cmvc.Import operation may fail. Rational recommends using full pathnames in naming import restrictions. If you try to control an element in a view without saving source, and the CMVC database is already saving source for an element of that name, Make_Controlled will fail. You must destroy all configurations containing the old element, uncontrol the old element in any existing views, and expunge the database before you will be able to control the new element. There are interfaces in Cmvc_Implementation which enable you to iterate over all configurations and locate the ones containing a particular element. !Implementation.Directory or !Tools.Directory_Tools may be used to find which views contain that element. When a code view is made, the compatibility signature of each imported spec view is recorded in that code view for later checking. Since there are no semantic dependencies between code views and imported specs, this is the only way to know if the imported spec view changes. If the spec view is later modified, the unit's signature and the signature in the code view will differ, and the views will be incompatible. The code generator checks the signatures at load time, when the code view is referenced while running a command or while coding a main procedure. If they are incompatible, the code generator issues an error message and refuses to handle the code view. Demotion of a checked in, controlled Ada unit with open insertion points will fail with a message indicating that the unit must first be checked out. Such units should be checked out and checked back in manually. This affects Compilation.Demote as well as the implicit demotions done by Archive when the Remake option is specified. This behavior is necessary because, when the unit is demoted, the system subsumes the insertion point into the parent unit, making its image differ from that stored in the CMVC database. To avoid the manual check out and check in operations, units should not be checked in if they have open insertion points. When a spec view is spawned from another spec view that contains controlled objects, objects in the new spec view will be R 10/17/88 17\f Rational Environment Release Information controlled and joined to the source spec view. This result is different from that when a spec view is spawned from a working view or a release view that contains controlled objects, where the objects in the new spec view are left uncontrolled. Changes to the pretty printer (such as the new alignment characteristics described in "Pretty Printer Changes") can result in objects whose image does not match that recorded in the CMVC database. Check_Consistency will report such mismatches. In order to make the images recorded in the CMVC database consistent with the reformatted images of objects, one can Check_Out and then Check_In each object without modification. This creates a new generation that has the image produced by the current pretty printer, which matches the object in the view. Note, however that the Check out operation also performs an implicit "accept changes" operation if the object does not correspond to the latest generation in its join set. This means that the contents of the view may be changed by the procedure outlined above. Rational recommends that before the explicit check out and check in for pretty printer compatibility is done, all joined paths and subpaths should be made consistent; that is, all joined objects should be updated to the most recent generation for that join set. Note also that this procedure will not work for release views, even if the release view is first unfrozen - because objects in release views cannot be checked out. 4.2.6. Compatibility Checking A new procedure and function for compatibility checking are supplied in !Tools.Compatibility. These can be used to determine whether units in spec and load views are compatible. See the commented package spec for more details. 4.2.7. Compatibility Database Utilities The new package !Implementation.Compatibility includes programmatic interfaces that can be used to identify whether a subsystem is a primary or secondary. One function returns the subsystem_id for a specified subsystem; other functions return Boolean values. See the online spec for details. The new package Cdb_Maintenance has been added to !Tools.Compatibility. The subprograms in this package are designed to be used by Rational support personnel, for diagnosing and addressing problems associated with the compatibility database. See the commented spec for more details. These tools replace the procedure !Commands.Cmvc_Maintenance.Repair_Cdb that is documented in the Program Management volume of the Rational Environment Reference Manual. The procedure Verify in the new package replaces and improves on Repair_Cdb with Effort_Only => 18 10/17/88 R\f D_10_20_0 Release True. There is no functionality equivalent to Repair_Cdb with Effort_Only => False; instead, repair operations involve recompilation of incompatible units. 4.3. Dependents Object Editor The new dependents OE replaces the obsolescence, name resolution, and show usage menus. The new output looks similar to the D_9_25_1 display for these menus, and all of the D_9_25_1 menu capabilities still exist. More information is available in dependents/usage menus, and the capability to demote lists of dependent declarations and statements, rather than entire compilation units, has been added. Four new session switches have been added to control menu displays: * The Dependents_Delta0_Compatibility switch controls two features of the display. When true, the menus will look like D_9_25_1 menus. When false, the first line of the menu may look different to reflect some of the new capabilities. Also, the names of objects will appear differently. The simple name of the object will appear first, followed by the name of the library containing the object. The default value is true. * The Dependents_In_Order_Pathnames switch controls the display of object names. When true, object names will appear as full directory pathnames starting with !. When false, object names will be displayed with the simple name of the object first, followed by the name of the enclosing library. The Dependents_Delta0_Compatibility switch must be false for this switch to have an effect. The default value is false. * The Dependents_Show_Library switch controls whether object names will be displayed as simple names or as full pathnames. For this switch to have an effect, the Dependents_Delta0_Compatibility and Dependents_In_Order_Pathnames switches must be false. The default value is true. * The Dependents_Show_Unit_State switch controls whether Ada unit state information for each object is included in the display. The default value is false. 4.3.1. Show Usage and Obsolescence Menus Although the initial display gives the same information available in earlier Environment releases, more information can be obtained using commands from package Common. The following is a quick overview of how to use some of these new commands. An application note with more details is planned; availability will be announced with the production release of the product. R 10/17/88 19\f Rational Environment Release Information * The initial display will show a list of the immediate dependents for a compilation unit or declaration. Press [Complete] to get the demote closure of the dependents. * The initial display will show a list of compilation units that depend on a compilation unit or declaration. Use the Common.Expand ([Object] - [!]) and Common.Elide ([Object] - [.]) commands to control display information. The editor's window banner will indicate the type of information being displayed. The following terms are used in this banner: * State: Indicates that the state of the item is being displayed. * Unit: Indicates that the name of the compilation unit containing the dependency is being displayed. * Parent: Indicates that the name of the enclosing Ada construct is being displayed. When this construct is the same as the compilation unit, *comp_unit* is displayed. * Kind: Indicates that the type of usage is being displayed. For instance, stmts means that the usage is in a statement, decls means that the usage is in a declaration, and call means that the usage is in a subprogram call. * Item: Indicates that the items containing the usage are being displayed. The item level can be expanded to show the Ada source where the actual usage occurs. At this level, all direct references to the subject of the usage/obsolescence are underlined, and you can use the Editor.Cursor.Next and Editor.Cursor.Previous commands to traverse through the references. * Region selection can be used to select a set of displayed items. Once selected, [Demote] and [Promote] can be used to demote and promote these items. This can be useful and save a lot of compilation when you have a few dependencies within each of the compilation units in the demote closure. If there are many dependencies in a compilation unit, then the time required to demote and promote them incrementally using the dependents object editor may be longer than demoting and repromoting the entire compilation unit. 4.4. System Management 4.4.1. Logoff on Disconnect Implementation of this feature is included in D_10_20_0. If this terminal characteristic is enabled, the user's session will be terminated if a disconnect is detected on the terminal's port. A disconnect on an RS232 port is detected by a drop in the DCD signal; a disconnect on a Telnet port is detected by the 20 10/17/88 R\f D_10_20_0 Release termination of the Telnet session. In either case, uncommitted buffers will be saved before the user's session is terminated. By default, this feature is not enabled for all ports. To enable the feature, use the Terminal.Set_Logoff_On_Disconnect procedure. Any disconnect event on an RS232 port is passed to the program reading from the port. That is, if the R1000 detects a transition from ON to OFF on the DCD input (pin 8) of the RS232 interface, a disconnect status code will be returned to the program. With previous releases, RS232 disconnect events were often not reported; a bug in the input handling software caused them to be lost. In particular, if a port is at a login prompt (that is, the port has been enabled for login, but no one is currently logged in) and the R1000 sees DCD switch to OFF, the login manager issues the error message "Unable to process input" immediately following the login prompt. This message is not indicative of a fatal condition; the ability to log in is not advsersely affected. This condition can be avoided by making certain DCD does not switch OFF for RS232 ports being used for logging in. The Rational terminal cable (part no. 125-001808-003) is properly wired to avoid this condition. The DCD can switch OFF if it is connected to the R1000's DTR output; this output is switched OFF by the R1000 to initiate a disconnect. For example, if a port has been configured with Disconnect_on_Logoff = True and DTR is connected to DCD, then whenever anyone logs out the login manager will issue the "unable to process input" message. DCD can also switch OFF if it is connected to external equipment (such as a terminal server) that switches this signal OFF. 4.4.2. Systemwide Login A systemwide login has been implemented. If a coded parameterless procedure called System_Login exists in !Machine, it will be executed unconditionally. After this, the D_9_25_1 rules for login procedure execution will be used: a user's searchlist is employed in an attempt to find a parameterless procedure called Login. 4.4.3. Tape Log Entries Entries logging tape mount requests, tape mounting, and tape unloading are now written into the system error logs. Reports generated by the tools in System_Availability generate reports with this new information. R 10/17/88 21\f Rational Environment Release Information 4.4.4. Password Policies The system manager can set system-wide policies for password expiration and length. The new interfaces for setting policies and getting information about these policies have been added to package Operator. Changing these policies will require operator capability. 4.4.4.1. Password Security The system can ensure that the number of characters in a password passed to the Operator.Create_User or Operator.Change_Password procedures is more than a specified minimum. The default is zero. The system allows the system manager to establish password expiration periods. There are actually two periods: the first is the duration a password can exist without changing before the user is asked (at each login) to change the password; the second is the duration a password can exist without being changed. When this second interval expires, the user will not be able to login; they will have to get the operator to change their password before they will be able to login again. The password minimum length and expiration periods are set using the Set_Password_Policy procedure in !Commands.Operator. This procedure has three parameters: * Minimum_Length - Specifies the minimum acceptable length for a password. All passwords must be at least this number of characters long. * Change_Warning - Specifies the number of days after which the user will be notified at login that the account password should be changed. The actual time that warnings will start is midnight of the day that the warning period expires. This period is measured from the day that the user last changed their password. * Change_Deadline - Specifies the number of days after which the user will not be allowed to login without changing the password. The actual time of expiration will be midnight of the day that the deadline period expires. This period is measured from the day that the user last changed their password. When a machine is booted, the Change_Warning and Change_Deadline are set to Days'Last; call Set_Password_Policy in Machine.Initialize to reset the policies. The procedure Show_Password_Policy in !Commands.Operator can be used to display the current password policies and the expiration dates for specified users. This procedure takes one parameter: * For_User - Specifies the users for which expiration dates will be displayed. Wildcards can be used to specify more than one 22 10/17/88 R\f D_10_20_0 Release user. For example, "@" specifies all users on the machine. If there is no Change_Warning or Change_Deadline set, the For_User parameter is ignored. Also provided in package !Commands.Operator are functions that return the minimum password length, password warning period, password expiration period, and the expiration dates for a specific user. 4.4.5. Additional Diagnostic Support Support for diagnostic communication using a PAD has been added. Also, the R1000 system does not have to be constantly connected to the telephone line to run the remote diagnostics/debuggers. The R1000 will continue to retry outgoing calls instead of giving up after three unsuccessful attempts. To allow for automatic boot when power is restored to an unattended R1000 Series 200, changes were made to allow a two-minute delay for the disks to spin up. This delay is invoked only if the keyswitch is in automatic mode and the Boot/Crash/Maintenance settings for I/O Processor Auto Boot and R1000 Auto Boot are set to YES. The delay may be terminated by pressing any key. You will be prompted when the delay is invoked with a message from the IOC: 2 minute delay for disks to load, hit any key to bypass When a system is booted, the status of disk drives that are online is displayed, as well the WRITE ENABLED / WRITE PROTECTED status of the drive. 4.5. Keyboard Macro Editor Keyboard macros can be saved in a clear text form that can be edited. To save keyboard macros in this form, use the Editor.Macro.Save procedure with Expanded => True. If Expanded is false, the macros will be saved in binary form. If the macros are saved in editable form, they will be reparsed at each login, which can be time-consuming. In general, users are advised to edit the macro file, make sure that it is correct, and then save the macros in binary form. If changes are made to the macro file, a user must run Editor.Macro.Restore or log off and then on again for the changes to have an effect. The macros file is created in your home world, and it is called Terminal_Type_Macros, where Terminal_Type can be Rational, Facit, VT100, or a user-defined terminal type. R 10/17/88 23\f Rational Environment Release Information The first line of each macro contains the macro number. Each subsequent line describes the keystrokes and contains two entries. The first entry indicates whether the command in that line should be executed immediately (EXECUTE) or should be brought up in a Command window (PROMPT). The next entry is the command. At the end of the file is a list of the key bindings that map each macro number to a key. 4.6. Ada Completion If the user requests semantic completion for an Ada fragment that has multiple possible completions, the Environment will display a Completion Menu with the possible choices. For D_10_20_0 this Completion Menu will look exactly as it did in D_9_25_1; however, now a user can select an entry in the menu and press [Complete] and that selection will be used to complete the construct in the Command window or Ada program where completion was originally requested. In addition, completion of an Ada fragment with a partial parameter list will result in a full parameter profile expansion that utilizes the partial parameter values where applicable. 4.7. Remote Execution A new package called !Commands.Remote has been added. This package contains two procedures that give a user the ability to execute programs on other R1000s on the same network and to display the image of an object from another R1000 (on the same network) in a local I/O window. The identity of the remote jobs (and therefore their access rights) are identical with that for the Archive Server running on the remote machine, unless the user's local session switch Profile.Remote_Password has a value. See SJM-76 and following pages in the Rational Environment Reference Manual for an explanation of how remote user names and passwords are used with Archive.Copy; use of the password with commands in package Remote is identical. Remote jobs will run with the user name of the remote archive server, but the access rights for the jobs will be as documented in SJM. 4.8. Debugger Maintenance A new package called !Commands.Debug_Maintenance has been added. This package contains a procedure called Wait_For_Job that can be used to synchronize user programs with the debugger. When called, this procedure pauses while the debugger has the running 24 10/17/88 R\f D_10_20_0 Release flag on and returns when the program stops in the debugger. This can be useful for writing debugger script programs. For example: Debug.Break (Location => "Test_Program.1s"); Debug.Execute; Debug_Maintenance.Wait_For_Job; Debug.Put (Variable => "Test_Variable"); 4.9. Networking A new optional feature has been added to Telnet_Server. Associated with each Telnet port is a Boolean state variable named Convert_Received_New_Line_To_Cr. When it is true, a received Telnet New_Line signal (CR and LF) will be returned as CR alone to the caller of Telnet_Server.Receive. When false, such a signal will be returned as the sequence CR and LF. The default value (assigned at system boot time) of this switch is true. For existing applications, this has worked well: it compensates for the behavior of Bridge and other Telnet clients that send CRLF when the user typed only CR. For future applications that need to transfer binary data, turning this switch off (false) probably will work better. The Telnet_Server exports operations to read and write the value of this switch. 4.10. Editor In D_10_20_0, there is a notification in the Message window banner indicating the number of unread mail messages. 4.11. Print Spooler The print spooler will notify users of the device on which the request is being printed when the request starts printing and in the print completion message. It will also attempt to queue a request to another device (associated with the specified class), if the current device cannot be connected to successfully, before trying again with the original device. 4.12. Debugger The Break command now accepts a machine address and sets a break at that address. Run(Machine_Instruction) is implemented for CDF targets. Task_Display with the Addresses flag set to true echoes the current PC of stopped tasks for CDF targets. The ability to make selections in debugger windows and pass selections to debugger commands has been expanded. Certain lines indicating a source location, exception name, or task name can be R 10/17/88 25\f Rational Environment Release Information selected in a debugger ouptut window; the selection then can be used as a parameter to debugger or other Environment commands. The debugger commands will accept special names, such as "<REGION>", "<SELECTION>", and so on. The following debugger output is selectable: * Reports of events (breakpoint reached, step completed, trace output, exception handled, task stopped) can be selected. They contain the location of the event, task involved, and exception name (if applicable). * Task display output can be selected and used to indicate a task or its defining location. * Stack display output indicates the task and location in the frame. * History display output indicates the task and location of the history entry. * Command echoing for Put and Modify commands can be selected and, if you press [Put], the object will be redisplayed. Selections are interpreted as follows: * Locations: Whenever a location is required in a command, "<SELECTION>" can be given and, if the selected line contains an Ada location, that location will be used. * Exceptions: The exception name for the Catch, Propagate, and Forget commands will accept a selection. For example, if the debugger catches an exception and displays: Exception .FOO.BAR caught at .BLAP.MUMBLE.3s [task %root_Task] the first line can be selected and the [Propagate] key used to propagate that exception. * Tasks: Lines that indicate a location almost always contain a task name. These lines can be selected. If the null string is given for a task name to a debugger command and a task is selected, that task will be used for the following commands: Clear_Stepping, Execute, History_Display, Hold, Information, Register_Display/Modify, Release, Run, Set_Task_Name, Stack, Stop, Task_Display. * If a command (such as the Break command) requires both a location and a task, the selection is used to derive the location and not the task name. For example, after Task_Display is executed, a line of the output can be selected, the stack command issued, and the stack for the defining task will be displayed. 26 10/17/88 R\f D_10_20_0 Release As another example, if you were to indicate the Break command on the same selection, a breakpoint will be set on the first declaration of the task, but it will apply to all tasks. 4.13. Facit Keymappings The following table summarizes the keymappings that have been added to the D_9_25_1 Facit terminal keymap. These changes were released in D_9_25_1_2 and subsequent releases. Facit Keymappings ---------------------------------------- | Key Name | Command | ---------------------------------------- | ESC_TAB | Editor.Char.Tab_Forward | ---------------------------------------- | ESC_BACK_TAB| Editor.Char.Tab_Backward | ---------------------------------------- | ESC_RIGHT | Editor.Cursor.Next | ---------------------------------------- | ESC_LEFT | Editor.Cursor.Previous | ---------------------------------------- | ESC_EQUAL | Editor.Char.Insert_String| | | (Value => "=>") | ---------------------------------------- | ESC_SEMICOLO| Editor.Char.Insert_String| | N | (Value => ":=") | ---------------------------------------- 4.14. Archive An option called Different_Objects has been added to the (New, Updated, Changed, Existing)_Objects group of package Archive. Changing the Access Control List for an object modifies the system update time. This can affect whether objects are restored by operations from package Archive when options Update_Objects or Changed_Objects are used. It is possible that some object which should be restored (because newer contents were in the backup) will not be restored (because the ACL for the older version was changed). To avoid this problem, users should consider using the new option Different_Objects with Archive operations. There also is a new option called Goal_State on Archive.Copy and Archive.Restore. * If Goal_State = Installed or Coded, units will be promoted to that state regardless of the state they were in when they were saved/copied. R 10/17/88 27\f Rational Environment Release Information * If Goal_State = Archived, units will be in the archived state when the command is finished. No mechanisms exist within the system to restore units directly to this state, so units are still parsed and are demoted to archived at the end of the archive process. * If units in the archived state are copied onto the same machine, they will be copied as archived. If Goal = Source, they will be promoted to source after copying. For network Copy or Restore operations that do not specify a Goal_State option, units that were in the archived state when saved will become source (or greater). 4.14.1. Archive Mappings The names to which archived links and switches are restored can be changed by use of the file !Machine.Archive_Mappings. This file now can also specify changes to target key names. If the string name of the target key saved on the archive is different from the string name on the system, the old (archived) name can be mapped to the new (system's) name. The Archive_Mappings file contains up to three groups of name pairs, with groups separated by two blank lines: <link_name_on_archive> <link_name_on_system> ... <blank> <blank> <switch_name_on_archive> <switch_name_on_system> ... <blank> <blank> <target_key_name_on_archive> <target_key_name_on_system> When Archive.Restore notices a link name, switch name, or target key name that is one of the <..._on_archive> names, it creates a link, switch, or target key using the <..._on_system> name instead of the archived name. The file !Machine.Archive_Mappings must exist before the restore is started; it cannot be read from the archive. If package Archive attempts to restore a controlled Ada unit and the information in the CMVC database does not match the text being restored, an error will be reported. In this situation, the database may not properly indicate which of the object(s) were restored. As the associated message text indicates, checking the object(s) out then back in again will force the object to be stored in the database as a new generation; this 28 10/17/88 R\f D_10_20_0 Release will ensure that current database information is correct. Before checking an object in again, it is wise to compare the object's image with the images of other generations, using Cmvc.Show_Image_Of_Generation. (This situation can arise when the new unit is pretty printed differently from the way it is represented in the database.) When an entire view is restored but that view is not repesented in the existing CMVC database and the database itself is not restored, Archive operations leave the objects in the view uncontrolled. One must explicitly control the objects if that is desired. For operations in package Archive as with other Environment tools, when a response profile is specified as a string, any option not specified in the string is set to its default value. In particular, the default value for the Activity option is the nil activity. When the <Profile> option is included in the string, options not explicitly set are supplied from the current Response_Profile. Thus, Profile.Set (Profile.Value ("+++, ++*, ***")); sets the current activity to nil, while Profile.Set (Profile.Value ("+++ ++*, ***, Activity=>(!Machine.Release.Current.Activity)")); and Profile.Set (Profile.Value ("+++ ++*, ***, <Profile>")); explicitly set the activity, and preserve its prior setting, respectively. One consequence of this is that if the Response parameter of many Archive commands is set to <Raise>, or if the Error_Reaction value is set to Propagate, operations may terminate ungracefully, leaving things in an indeterminate state. The purpose of the Error_Reaction value Propagate is to raise an exception (or propagate one) as soon as an error occurs. The string profile <Raise> includes Propagate. The Response parameter should be set to "Raise, <Profile>" to set the Error_Reaction to Raise_Exception, but take the remaining profile parameter items from the current profile. This is mentioned in the spec for the Profile package. 4.15. Code Generator The precision with which compile time float or universal real literals were computed is greater in this release than in the previous release. This means that literals of 14 or more digits R 10/17/88 29\f Rational Environment Release Information are now represented more precisely than before. It also means that, if a spec view and corresponding load view containing visible compile time float or universal real literals were not installed with the same version of the compiler, they may be compatible (and they may not execute properly). In many cases, the source in the load view can be changed to yield an internal representation for the literal which is the same as that in the spec view. If you require assistance with this, please contact the Response Center. 4.16. Miscellaneous New Features Most semantic error messages now include LRM references. There are new semantic switches: * Reject_Bad_Lrm_Pragmas: Causes warnings in Ada pragmas to be given as errors (and thus prevents installation of the unit with the error). * Reject_Bad_Rational_Pragmas: Causes warnings in Rational pragmas to be given as errors. * Reject_Undefined_Pragmas: Causes any undefined pragmas to be marked as errors. * Flag_Inevitable_Exceptions: Checks for statically determinable situations that surely raise an exception when executed and flags them with a warning. * Reject_Inevitable_Exceptions: Changes the severity of the message above from a warning to an error. Common.Object.Sort has been implemented for the Window Directory. You now can sort on any of the fields in the display. Sort takes a numeric parameter (typically through a prefix key). The values are: 1 By Usage By order of most recent usage 2 By Mode By modified (*), committed ( ), read only (=) 3 By Size By size of image, increasing 4 By Type By object type, (library), (text), and so on 5 By Name By image name Negative numbers reverse the order of the sort. For example, this could be useful if you want to identify all modified buffers or all the text windows. 30 10/17/88 R\f D_10_20_0 Release 5. Changes from D_9_25_1 5.1. Spec Changes Some Environment specifications change in D_10_20_0. The changes listed below are changes with respect to D_9_25_1, and some may have been introduced in the D_9_33_0 or D_10_9_10 release. If a release number appears after the spec name, this indicates that the changes first appeared in that release. * !Commands.Ada * !Commands.Cmvc (some changes appear in D_9_33_0) * !Commands.Work_Order (D_9_33_0) * !Commands.Debug (D_9_33_0) * !Commands.Operator * !Implementation.Work_Order_Implementation (D_10_9_10) * !Implementation.Work_Order_Errors (D_10_9_10) * !Tools.Compatibility.Revn_N_Spec.Units.Check * !Tools.Networking.Transport * !Commands.Archive (functional changes; spec comments updated) Significant changes are noted in the following tables. Changes in Package Ada ----------------------------------------------------------------- |Declaration | Type of | Description | | | Change | | ----------------------------------------------------------------- |procedure |New |procedure Expand_Names | |Expand_Names |subprogram| (Name : String := "<SELECTION>"; | | | | Prefix_Standard : Boolean := False;| | | | Prefix_Unit : Boolean := False; | | | | Expand_Operators : Boolean := | | | |False); | | | |Prepends identifier names from package| | | |Standard, from the current unit, and | | | |for operators (such as +), as | | | |specified. | ----------------------------------------------------------------- R 10/17/88 31\f Rational Environment Release Information Changes in Package Cmvc 32 10/17/88 R\f D_10_20_0 Release ----------------------------------------------------------------- |Declaration | Type of | Description | | | Change | | ----------------------------------------------------------------- |procedure |New |Allow_Demotion : Boolean := False; | |Abandon_Reserva|parameters|Controls whether reverting back to | |tion | |previous generation will cause | | | |demotion of dependent units. | | | | | | | |Remake_Demoted_Units : Boolean := | | | |True; | | | |Causes units that were demoted by | | | |implicit accept changes to be | | | |repromoted. | | | | | | | |Goal : Compilation_Unit_State := | | | | Compilation.Coded;| | | |Remakes demotions caused by the | | | |implicit accept changes to this state.| ----------------------------------------------------------------- |procedure |New |Remake_Demoted_Units : Boolean := | |Accept_Changes |parameters|True; | | | |Causes units that were demoted by | | | |implicit accept changes to be | | | |repromoted. | | | | | | | |Goal : Compilation_Unit_State := | | | | Compilation.Coded;| | | |Remakes demotions caused by the | | | |implicit accept changes to this state.| ----------------------------------------------------------------- |procedure Build|Changed |View_To_Import : String := | | |defaults | "<INHERIT_IMPORTS>";| | | |Behaves like old default, which is to | | | |use imports information from | | | |configuration. | | | | | | | |Model : String := "<INHERIT_MODEL>"; | | | |Uses model information from | | | |configuration; old default was | | | |"R1000". | ----------------------------------------------------------------- |procedure |New |Remake_Demoted_Units : Boolean := | |Check_Out |parameters|True; | | | |Causes units that were demoted by | | | |implicit accept changes to be | | | |repromoted. | | | | | | | |Goal : Compilation_Unit_State := | | | | Compilation.Coded;| | | |Remakes demotions caused by the | | | |implicit accept changes to this state.| ----------------------------------------------------------------- R 10/17/88 33\f Rational Environment Release Information ----------------------------------------------------------------- |procedure Copy |Changed |Reservation_Token_Name : String := | | |default | "<AUTO_GENERATE>";| | |and new |Behaves like old default, which was " | | |parameters|". | | | | | | | |Create_Load_View : Boolean := False; | | | |Allows creation of a load view from a | | | |combined view. | | | | | | | |Create_Combined_View : Boolean := | | | |False; | | | |Allows creation of a combined view | | | |from a load view. | ----------------------------------------------------------------- 34 10/17/88 R\f D_10_20_0 Release Changes in Package Cmvc (continued) R 10/17/88 35\f Rational Environment Release Information ----------------------------------------------------------------- |Declaration | Type of | Description | | | Change | | ----------------------------------------------------------------- |procedure Def |New |procedure Def | | |subprogram| (What_Object : String := "<CURSOR>";| | | | In_Place : Boolean := False); | | | |Displays the corresponding directory | | | |system objects for an image in the | | | |CMVC object editor and vice versa. | ----------------------------------------------------------------- |procedure Edit |New |procedure Edit | | |subprogram| (View_Or_Config : String := | | | |"CURSOR>"; | | | | In_Place : Boolean := False; | | | | Allow_Check_Out : Boolean := True; | | | | Allow_Check_In : Boolean := True; | | | | Allow Accept_Changes : Boolean := | | | |True); | | | |Calls up the CMVC object editor for a | | | |configuration associated with a view; | | | |the editor displays reservation state,| | | |history, and notes; parameters can be | | | |used to limit the CMVC operations that| | | |can be accomplished using the object | | | |editor. | ----------------------------------------------------------------- |procedure |Renamed |System_Object : String := | |Initial |and added | ">>SYSTEM OBJECT NAME<<";| | |parameters|Renames parameter from Subsystem, in | | | |keeping with new type. | | | | | | | |System_Object_Type : | | | |System_Object_Enum := | | | | Cmvc.Spec_Load_Subsystem;| | | |Replaces Subsystem_Type parameter. | | | | | | | |Create_Load_View : Boolean := True; | | | |Allows creation of a load view; | | | |otherwise creates a combined view when| | | |System_Object_Type is | | | |Spec_Load_Subsystem. | ----------------------------------------------------------------- |procedure Join |New |Reservation_Token_Name : String := "";| | |parameter |Allows specification of a token name. | ----------------------------------------------------------------- |procedure |New |Save_Source : Boolean := True; | |Make_Controlled|parameter |Specifies whether source will be saved| | | |in the CMVC database for all objects | | | |with the same name. | ----------------------------------------------------------------- 36 10/17/88 R\f D_10_20_0 Release ----------------------------------------------------------------- |procedure |New |Create_Load_View : Boolean := False; | |Make_Path |parameters|Allows creation of a load view from a | | | |combined view. | | | | | | | |Create_Combined_View : Boolean := | | | |False; | | | |Allows creation of a combined view | | | |from a load view. | ----------------------------------------------------------------- |procedure Notes|New |procedure Notes | | |subprogram| (What_Object : String := "<CURSOR>";| | | | In_Place : Boolean := False); | | | |Displays notes for a controlled object| | | |and allows appending new notes. | ----------------------------------------------------------------- R 10/17/88 37\f Rational Environment Release Information Changes in Package Cmvc (continued) ----------------------------------------------------------------- |Declaration | Type of | Description | | | Change | | ----------------------------------------------------------------- |procedure |New |Allow_Demotion : Boolean := False; | |Revert |parameters|Controls whether reverting back to | | | |previous generation will cause | | | |demotion of dependent units. | | | | | | | |Remake_Demoted_Units : Boolean := | | | |True; | | | |Causes units that were demoted by | | | |implicit accept changes to be | | | |repromoted. | | | | | | | |Goal : Compilation_Unit_State := | | | | Compilation.Coded;| | | |Remakes demotions caused by the | | | |implicit accept changes to this state.| ----------------------------------------------------------------- |procedure Sever|Parameter |Renames What_Objects to What_Object. | | |name | | | |change | | ----------------------------------------------------------------- |procedure |Changed |procedure Show_All_Uncontrolled | |Show_All_Uncont|parameter | (In_View : String := "<CURSOR>"; | |rolled | | Response : String := "<PROFILE>"); | | | |Lists objects that are uncontrolled. | ----------------------------------------------------------------- |type |New |type System_Object_Enum is | |System_Object_E|enumeratio| (Spec_Load_Subsystem, | |num |n type |Combined_Subsystem, | | | | System);| | | |Replaces Subsystem_Type_Enum. | ----------------------------------------------------------------- 38 10/17/88 R\f D_10_20_0 Release Changes in Package Operator R 10/17/88 39\f Rational Environment Release Information ----------------------------------------------------------------- |Declaration | Type of | Description | | | Change | | ----------------------------------------------------------------- |subtype Days |New |subtype Days is positive; | | |subtype | | ----------------------------------------------------------------- |function |New |function Get_Minimum_Password_Length | |Get_Minimum_ |subprogram| return Natural;| |Password_Length| |Returns the value set by | | | |Set_Password_Policy. | ----------------------------------------------------------------- |function |New |function Get_Password_Deadline return | |Get_Password_De|subprogram|Days; | |adline | |Returns the value set by | | | |Set_Password_Policy. | ----------------------------------------------------------------- |function |New |function Get_Password_Warning return | |Get_Password_Wa|subprogram|Days; | |rning | |Returns the value set by | | | |Set_Password_Policy. | ----------------------------------------------------------------- |function |New |function Get_User_Deadline | |Get_User_Deadli|subprogram| (For_User : String := | |ne | | System_Utilities.User_Name) return | | | |String; | | | |Returns the image of the date | | | |(mm/dd/yy) that is the deadline for | | | |changing the password; passes this to | | | |Time_Utilities for a numeric value. | ----------------------------------------------------------------- |function |New |function Get_User_Warning | |Get_User_Warnin|subprogram| (For_User : String := | |g | | System_Utilities.User_Name) return | | | |String; | | | |Returns the image of the date | | | |(mm/dd/yy) when user is warned to | | | |change the password; passes it to | | | |Time_Utilities for a numeric value. | ----------------------------------------------------------------- 40 10/17/88 R\f D_10_20_0 Release ----------------------------------------------------------------- |procedure |New |Set_Password_Policy | |Set_Password_Po|subprogram| (Minimum_Length : Natural := 0; | |licy | | Change_Warning : Days := | | | | Operator.Days'Last;| | | | Change_Deadline : Days := | | | | Operator.Days'Last);| | | |Sets systemwide password policies: | | | |minimum length in characters; number | | | |of days from last change when user is | | | |warned upon login to change password; | | | |number of days without change until | | | |user cannot log in without changing | | | |password; requires operator | | | |capability. | ----------------------------------------------------------------- |procedure |New |procedure Show_Password_Policy | |Show_Password_P|subprogram| (For_User : String := | |olicy | | System_Utilities.User_Name);| | | |Displays the current policy, warning, | | | |and deadline date for the user. | ----------------------------------------------------------------- R 10/17/88 41\f Rational Environment Release Information Changes in !Tools.System_Availability.RevX_X_Spec.Units 42 10/17/88 R\f D_10_20_0 Release ----------------------------------------------------------------- |Declaration | Type of | Description | | | Change | | ----------------------------------------------------------------- |procedure |New |procedure Load_Logs | |Log_Reader.Load|subprogram| (Start_Time : Calendar_Time; | |_Logs | | Stop_Time : Calendar_Time; | | | | From_Directory : String := | | | | "!Machine.Error_Logs");| | | |Builds a map of all log files, using | | | |start and stop times as interval | | | |bounds if provided. | ----------------------------------------------------------------- |function |New |function Done (I : Mount_Iterator) | |System_Informat|subprogram|return | |ion.Done | | Boolean;| ----------------------------------------------------------------- |procedure |New |procedure Next (I : in out | |System_Informat|subprogram|Mount_Iterator); | |ion.Next | | | ----------------------------------------------------------------- |procedure |New |procedure Initialize (I : out | |System |subprogram| Mount_Iterator);| | | | | |_Information.In| | | |itialize | | | ----------------------------------------------------------------- |type |New type |type Mount_Information is record | |System_Informat| | Request_Time : Time_Utilities.Time; | |ion. | | Volume : | |Mount_Informati| |Bounded_String.Variable_String | |on | | (40);| | | | Mount_Time : Time_Utilities.Time; | | | | Unload_Time : Time_Utilities.Time; | | | | Density : | | | |Bounded_String.Variable_String | | | | (20);| | | | end record; | | | |Maintains data about tape activity; | | | |the value of the density field is not | | | |trustworthy because of hardware | | | |limitations. | ----------------------------------------------------------------- |type |New type |type Mount_Iterator is private; | |System_Informat| |Retrieves information about tape mount| |ion. | |requests. | |Mount_Iterator | | | ----------------------------------------------------------------- |function |New |function Value (I : Mount_Iterator) | |System_Informat|subprogram| return Mount_Information;| |ion.Value | | | ----------------------------------------------------------------- R 10/17/88 43\f Rational Environment Release Information ----------------------------------------------------------------- |type |New |Adds new Tape_Mounts class for use | |System_Report. |enumeratio|with System_Report.Generate; tape | |Report_Class |n |mount information is also included | | | |when Everything is used for the report| | | |class. | ----------------------------------------------------------------- 44 10/17/88 R\f D_10_20_0 Release Changes in Package Transport ----------------------------------------------------------------- |Declaration | Type of | Description | | | Change | | ----------------------------------------------------------------- |function |New |function Get_Options | |Get_Options |subprogram| (Network : | | | |Transport_Defs.Network_Name; | | | | Context : String := "") return | | | |String; | | | |Returns current options (i.e., | | | |protocol parameters) and their values | | | |for the network-context pair; a null | | | |string returned indicates an undefined| | | |pair or no options. | ----------------------------------------------------------------- |function |New |function Get_Statistics | |Get_Statistics |subprogram| (Network : | | | |Transport_Defs.Network_Name; | | | | Context : String := "") return | | | |String; | | | |Returns statistics with which to | | | |monitor the performance of the named | | | |network-context pair; the form of the | | | |output is similar to that for | | | |Set_Options.Options. | ----------------------------------------------------------------- |function |New |function Set_Options | |Set_Options |subprogram| (Network : | | | |Transport_Defs.Network_Name; | | | | Context : String := ""; | | | | Options : String := "") return | | | |String; | | | |Returns a null string if the set | | | |operation is successful; otherwise, it| | | |returns an error message that may | | | |include embedded ascii.lf characters; | | | |the Options string is a sequence of | | | |"<name>=<value>" pairs. | ----------------------------------------------------------------- R 10/17/88 45\f Rational Environment Release Information Changes in Package Work_Order ----------------------------------------------------------------- |Declaration | Type of | Description | | | Change | | ----------------------------------------------------------------- |procedure |New |Renumber_Fields : Boolean := True | |Create_Field |parameter |Causes the display position for the | | |and |new field to be interpreted as an | | |changed |ordinal position, with consequent | | |default |renumbering of existing fields. | | | | | | | |Display_Position : Natural := | | | |Natural'Last | | | |Causes the new field to be placed at | | | |the end of the venture (new default | | | |value). | ----------------------------------------------------------------- |function |New |Ignore_Garbage : Boolean := True | |Default |parameter |Causes the function to return Nil if | | | |the default work order has been | | | |deleted or corrupted. | ----------------------------------------------------------------- |function |New |Ignore_Garbage : Boolean := True | |Default_List |parameter |Causes the function to return Nil if | | | |the default work-order list has been | | | |deleted or corrupted. | ----------------------------------------------------------------- |function |New |Ignore_Garbage : Boolean := True | |Default_Venture|parameter |Causes the function to return Nil if | | | |the default venture has been deleted | | | |or corrupted. | ----------------------------------------------------------------- |procedure |New |procedure Delete_Field | |Delete_Field |subprogram| (Field_Name : String := ">>FIELD | | | |NAME<<"; | | | | Venture_Name : String :="<VENTURE>";| | | | Even_If_Data_Present : Boolean := | | | |False; | | | | Response : String := "<PROFILE>"); | | | |Deletes the named field from a | | | |venture; if work orders have data in | | | |this field, the operation fails unless| | | |Even_If_Data_Present is true. | ----------------------------------------------------------------- 5.2. CMVC Changes The Copy, Make_Path, and Initial procedures take additional parameters to allow combined views to be made in spec/load subsystems. The Make_Controlled procedure accepts an additional parameter to control whether source is saved in the CMVC 46 10/17/88 R\f D_10_20_0 Release database. Bug fixes were made in Accept_Changes to allow changes to be accepted between different targets. Cmvc.Initial now will copy directory structure from the model. Controlled objects no longer can be withdrawn. There is now support for longer lines in CMVC, which can be about 1000 characters long. Leading blanks are not counted. R 10/17/88 47\f Rational Environment Release Information Changes in Cmvc_Implementation have been made to set the usernames when an object is first controlled and to provide better error messages when objects cannot be checked in because of locking or access-control problems. No controlled objects except the Release_History file will be allowed in a view's state directory. This is to prevent accidental controlling of switch files, target builder state, and so on. In the D_9_25_0 release, CMVC permitted users to control compiler-generated files whose names appear in library displays enclosed with "<" and ">". These include assembly listing files, object code files, and so on. In this release, the undesirable operation is not allowed. Files of this sort that were controlled will remain controlled after the Environment upgrade. If any of these objects exist, they should be made uncontrolled with Cmvc.Make_Uncontrolled to facilitate normal compiler operation. 5.3. Changes in Work Orders The specs for Work_Order, Work_Order_Implementation, and Work_Order_Errors have been changed in minor ways to accommodate two changes: * There is now a Renumber_Fields parameter in Work_Order.Create_Field that causes Display_Position to be interpreted as would be expected. * The Get_Default procedures now turn any nonexistent object ID into Nil (by default) when returning a result. 5.4. Naming Changes 5.4.1. Target Attribute A new attribute, 'T, has been added to specify targets in a naming expression. This will allow selectively naming objects based on target keys. For example, assume that within the subsystem !Projects.My_Project are two paths, one for the R1000 and one for a MIL-STD-1750A target. The naming expression: !Projects.My_Project.@'C(Load_View)'T(Mil_Std_1750a) will resolve to all load views of the subsystem in the Mil_Std_1750a target path. Note that the target key associated with an object is the target key of the object's nearest enclosing world. To obtain a list of possible target keys, execute the Compilation.Set_Target_Key procedure with its default parameters. 48 10/17/88 R\f D_10_20_0 Release 5.4.2. Directory Naming Resolution of names ending with 'Spec will no longer match subprogram bodies that have no corresponding specification. The functions that return unique names in packages !Implementation.Directory.Naming and !Tools.Directory_Tools.Naming will now return Unit_Name'Spec'V(XX) for all specifications, instead of Unit_Name'V(XX). R 10/17/88 49\f Rational Environment Release Information 5.4.3. View Attributes Two new attributes have been added to naming that use an activity to transform a subsystem reference into a view reference. The 'View attribute yields a load view, and the 'Spec_View attribute yields a spec view. Both attributes take an optional argument, which is a naming expression that should resolve to one or more activities. 'C(Activity) is appended to the argument before it is resolved. The initial context for the resolution of the argument is the context of the 'View or 'Spec_View attribute itself. If the name resolves to no activity file, the naming (sub)expression using the attribute is undefined. If no argument is given, the value of Activity.The_Current_Activity is used. It is an error if no such activity is defined for the job at the time of resolution. The meaning of the 'View attribute is described below. The 'Spec_View attribute has an analogous definition, with "spec view" substituted for each reference to "load view." Consider the naming expression "<context>'View(<activity>)", where "<context>" is an arbitrary naming expression yielding a set of objects and "<context><activity>" is a naming expression yielding a set of activity files. The resolution of this naming expression is the set of objects obtained by resolving each object in the <context> set against each activity in the <activity> set. If C is an object in <context> and A is an activity in <activity>, then C'View(A) is defined as follows: * If C is a subsystem that has a load-view entry in A, the result is this load view. If C has no load-view entry in A, the result is undefined. * If C is an object properly contained in subsystem S, and S has a load-view entry in A, then the result is the object in this load view whose full name is the same as C's except for the name segment that denotes the view that contains C. (For example, !Foo.SS.Rev1.Units. Mumble'View is !Foo.SS.Rev2.Units.Mumble if the load view in the default activity for subsystem SS is Rev2.) If such an object does not exist or S has no load-view entry in A, the result is undefined. * If C is not in a subsystem, the result is undefined. 5.5. Pretty-Printer Changes The D_10_20_0 Ada editor has been changed to implement the alignment of structures in its pretty-printing algorithms. This feature can be enabled on a library-by-library basis using the 50 10/17/88 R\f D_10_20_0 Release Format.Alignment_Threshold library switch. This switch controls alignment of lexical constructs by specifying the amount of extra white space one is willing to endure for the sake of aligning the components of consecutive statements. The default value for this switch is zero. If it is changed to a nonzero value, alignment of constructs will be attempted. Units created after the switch value is modified will have the new alignment characteristics. R 10/17/88 51\f Rational Environment Release Information It is now possible to reformat existing programs regardless of unit state using the Library.Reformat_Image procedure. Note that any changes to controlled objects using Reformat_Image will cause the CMVC database to be updated when the unit is checked out and then checked back in again. If you use the Cmvc.Show_History_By_Generation command, all textual differences will be displayed, but the configuration editor will attempt to minimize display of white space differences in generation images. 5.6. Editor Changes The behavior of Image.End_Of has been modified. If the actual end of the image is not in column 1, this operation will take the cursor to the first column of the next line after the end of the image. However, if the cursor is already there, it will go to the real end of the image. Thus, if End_Of is iterated, it will toggle rather like Line.Beginning_Of. This makes it possible to distinguish files that have an empty line at the end from those that do not. The rules have changed for interpreting characters for some types of patterns used in regular expression searching: * To negate a character class, the negation sign (~) can be placed either outside or as the first character inside the class. * Contiguous negation signs cancel each other out. * Wildcard characters %, &, and ? are interpreted as wildcards even if they appear within a character class. * The % wildcard character matches any legal Ada character as well as beginning and end of line, except when it appears within a character class. When it appears in a character class, it matches only legal Ada characters. 5.7. Changes to Help Files This release includes the most up-to-date help files for all of Rational's production products. It includes help on session switches. 5.8. Changes to Terminal Keymaps The files !Machine.Editor_Data.Facit_Commands and ...Rational_Commands are overwritten when D_10_20_0 is installed. Standard Environment key bindings are not changed, but the new file includes recommended key bindings associated with the Design Facility, Mail, and CMVC, as shown in the following table; these key bindings are commented out. 52 10/17/88 R\f D_10_20_0 Release If a site uses a customized keymap, customization details are saved in a separate file before the upgrade and reapplied after the upgrade by the Rational technical representative. R 10/17/88 53\f Rational Environment Release Information Recommended New Key Bindings 54 10/17/88 R\f D_10_20_0 Release ---------------------------------------------------------- | Logical Key | Facit | Rational | Command | | Name | | | | ---------------------------------------------------------- |DESIGN | | | | |FACILITY | | | | ---------------------------------------------------------- |PDL |Esc_Numeric|F4 |Design_Implementation| |Definition |_1 | |.Definition | ---------------------------------------------------------- |PDL Show |Esc_Numeric|S_F4 |Design_Implementation| |Usage |_2 | |.Show_Usage | ---------------------------------------------------------- |PDL Explain |Esc_Numeric|C_F4 |Design_Implementation| | |_3 | |.Explain | ---------------------------------------------------------- |PDL Enclosing|Esc_Numeric|CS_F4 |Design_Implementation| | |_4 | |.Enclosing | ---------------------------------------------------------- |PDL Complete |Esc_Complt |M_Complt |Design_Implementation| | | | |.Complete | ---------------------------------------------------------- |PDL Format |Esc_Format |M_Format |Design_Implementation| | | | |.Format | ---------------------------------------------------------- |"--| " |Esc_Bar |M_Bar |Editor.Char.Insert_St| | | | |ring("--|") | ---------------------------------------------------------- |"--| @" |Esc_At_Sign|M_At_Sign |Editor.Char.Insert_St| | | | |ring("--| @") | ---------------------------------------------------------- |"--| @" |Esc_2 |M_2 |Editor.Char.Insert_St| | | | |ring("--| @") | ---------------------------------------------------------- |SPELLING | | | | |CHECKER | | | | ---------------------------------------------------------- |Check Text |Word.? |Word.? |Speller.Check_Text | ---------------------------------------------------------- |Learn Word |Word.Promot|Word.Promo|Speller.Learn_Word | | | |t | | ---------------------------------------------------------- |Learn |Word.R |Word.R |Speller.Learn_Replace| |Replacement | | |ment | ---------------------------------------------------------- |Check Image |Word.M |Word.M |Speller.Check_Image | ---------------------------------------------------------- |Explain Next |Word.N |Word.N |Speller.Explain_Next | ---------------------------------------------------------- |Speller |Word.w |Word.w |Speller.Window | |Window | | | | ---------------------------------------------------------- R 10/17/88 55\f Rational Environment Release Information ---------------------------------------------------------- |Speller |Word.W |Word.W |Speller.Window(In_Pla| |Window(In | | |ce=>True) | |place) | | | | ---------------------------------------------------------- |Explain Next |Word.down |Word.Down |Speller.Explain.Next | ---------------------------------------------------------- |Exchange |Word.Numeri|Word.Numer|Speller.Exchange_Word| |Word(1) |c_1 |ic_1 |(Choice => 1) | ---------------------------------------------------------- | ... | | | ...| | |... |... | | ---------------------------------------------------------- |Exchange |Word.Numeri|Word.Numer|Speller.Exchange_Word| |Word(9) |c_9 |ic_9 |(Choice => 9) | ---------------------------------------------------------- |DOCUMENT | | | | |FORMATTER | | | | ---------------------------------------------------------- |Compose |Esc_5 |CM_F4 |Formatter.Compose | |Document | | | | ---------------------------------------------------------- |CMVC | | | | ---------------------------------------------------------- |Check In |Esc_3 |On overlay|Cmvc.Check_In | ---------------------------------------------------------- |Check Out |Esc_4 |On overlay|Cmvc.Check_Out | ---------------------------------------------------------- |MAIL | | | | ---------------------------------------------------------- |Main Mailbox |Esc_Enter |C_F1 |Mail.Edit | ---------------------------------------------------------- |Send Message |Esc_Dot |M_F1 |Mail.Send | ---------------------------------------------------------- |Reply Message|Esc_Numeric|CS_F1 |Mail.Reply | | |_Comma | | | ---------------------------------------------------------- |Forward |Esc_Dash |MS_F1 |Mail.Forward | |Message | | | | ---------------------------------------------------------- 56 10/17/88 R\f D_10_20_0 Release 5.9. Compilation Changes To conform to LRM library semantics, Compilation.Compile now views external links in a library such that all linked units appear as if they are physically in the library. If an external link exists with the same simple Ada name as a unit being compiled into the library, then the external unit is demoted to source before Compilation.Compile creates the new unit in the library and replaces the external link with an internal link. If the demotion fails, the new unit will not be placed into the library. 5.10. Changes in Editing Ada Units When editing Ada units, syntactic completion of: procedure p is will result in: procedure P is [declaration] begin [statement] end P; but syntactic completion of: procedure P is begin will result in: procedure P is begin [statement] end P; 5.11. Miscellaneous Changes When an insertion point is opened at the end of a package body that has no initialization code, this is now a statement insertion point, rather than an exception handler. Non-R1000 target spec units have open private parts. Definition now works from searchlists. The precision for compile-time float or universal real literals has been increased. (There is a potential for incompatibilities between newly compiled bodies and previously compiled specs. In this situation, users should recompile all elements for consistent type definitions.) R 10/17/88 57\f Rational Environment Release Information The standard definitions for type Float and type Duration have changed. For the correct new upper and lower bounds on these types, use (for example): Io.Put_Line(Float'Last); -- for the upper bound of type Float Io.Put_Line(Float(Duration'First)); -- for the lower bound of type Duration The range values in package Standard for type Float and type Duration are displayed incorrectly by the editor. 58 10/17/88 R\f D_10_20_0 Release 6. Bug Fixes 6.1. Network Fixed Transport_Name to permit the booting of a system that has a name map file (!Machine.Transport_Name_Map) that does not exist or cannot be read. Fixed the following bugs in package Transport_Stream: * If a task was aborted in the middle of allocating a stream, it was possible for the stream to be left allocated, with an underlying open transport connection. This is undesirable from a resource-utilization point of view. * Depending on timing, the two tasks Transport_Stream.Worker and .Scavenger could become deadlocked on each other, with the result that all subsequent Allocate and Deallocate operations would also be deadlocked. Improved Interchange.Convert'Body so that, when converting from an Interchange.Duration to a Standard.Duration, the returned value is rounded to the nearest model number, rather than the next-lowest model number. Previous releases always rounded down, resulting in values that were off by almost as much as Standard.Duration'Delta (30.5 microseconds). Changed the Telnet_Server so that, if a task is waiting for an incoming connection (for example, receiving when the port is not connected) and it is unregistered (for example, some other task closes its file handle), the waiting task is unblocked. In previous releases, the task remained blocked until a connection arrived and only then discovered that it was no longer registered. Fixed a bug in the Telnet_Protocol implementation: sometimes, when receiving data quickly, Constraint_Error was erroneously raised in Receive. Fixed a bug in Telnet_Protocol.Receive: if the port was not connected, and Max_Wait expired, Receive would erroneously return Kind = Disconnect. Now it returns Kind = Data, Count = 0. Fixed a bug where, if Ftp.(Put, Get) failed because the target machine was down, no exception was raised even if requested in the Response profile. This now works correctly. Fixed a bug in which Ftp.(Get_Set, Retrieve_Set, List) left undeleted files containing lists of filenames in !Machine.Temporary. In this release, these temporary files are deleted. Fixed a bug in FTP client software: when an IBM FTP server (part of the "IBM TCP/IP for VM" program offering) returned a reply R 10/17/88 59\f Rational Environment Release Information code 332, the Rational FTP client did not automatically send an ACCT command. Fixed a bug in the Telnet interface that lost the terminal identification sequence, resulting in an incorrect terminal type being used during login. In package Ftp_Name_Map, the case of Local_Roof => "!" is now handled correctly. Support for the AX25 protocol used by the MC68020 Bare CDF is included. See the CDF 2.0.0 release note for more information. In this release, an R1000 will transmit an ARP query on the Ethernet whenever its Ethernet controller is rebooted (usually at the time the Environment is booted). All other machines on the Ethernet will receive this packet and update their ARP tables to contain the correct Ethernet address of the sender (the R1000 that was just booted). The implications are that, if you swap the Ethernet controller in an R1000 that is running D_10_20_0, other machines on the Ethernet will learn the Ethernet address of the new controller automatically; no manual action is needed to update their ARP tables. With the D_10_20_0 release, the R1000 transmits an ARP query on the Ethernet whenever its Ethernet controller is rebooted, which is usually at the time the Environment is booted. All other machines on the Ethernet will receive this packet and update their ARP tables to contain the correct Ethernet address of the sender. One consequence of this is that if you swap the Ethernet controller in an R1000 running D_10_20_0, other machines on the Ethernet will learn the Ethernet address of the new controller automatically; no manual action is needed to update their ARP tables. 6.2. Ada Units If the parser encounters a malformed numeric literal (for example, one whose value exceeds Long_Integer'Last), it underlines it and puts a message on it, rather than converting it to zero. An integer literal with an exponent of negative zero (for example, 4e-0) is now diagnosed as an error. If you type a based literal using colons (for example, 16:FFF:), the parser will convert the colons to the preferred pound signs. If "X : Integer;" appears in a statement list, it is now diagnosed as an error rather than being turned into a labeled begin block. 60 10/17/88 R\f D_10_20_0 Release The parser now deletes a right parenthesis only if it is preceded by another right parenthesis. The wrong DIANA was being generated for expressions such as: A (A'Range) (1 .. 10) resulting in incorrect operation. Incremental operations now check to prevent insertion of alternatives after a when others clause. Fixed a problem of record types with limited components (declared in a package spec that declares the limited component type) not being assignable within the package. Intermediate results no longer cause Numeric_Error (Overflow). All integer expressions are evaluated as Long_Integer, and Numeric_Error will be raised only if the final result is outside the base type for the expression. Conversions now raise only Constraint_Error (Type Range). If the argument of a conversion was outside the base type of the target type, Numeric_Error (Overflow) was raised. The LRM permits only Constraint_Error to be raised. The values of some fixed-point attributes ('Mantissa, 'Safe_Large, and 'Safe_Small) were formerly computed incorrectly for some fixed/floating-point subtypes-most notably in the case of a subtype that imposed a coarser delta or digits constraint than its parent type. Ada.Create_Body_Part now deals with overloads. In previous releases, if a package specification included a procedure named P with a corresponding body in the package body, and a new overloaded procedure P was added to the specification, then Ada.Create_Body_Part would fail because it seemed that the body already existed. In this release, the overloaded procedure body is created correctly. Create_Body and Create_Private now perform the correct completion of incomplete types. 6.3. CMVC A problem with the compatibility database has been fixed. This problem occurred when declarations in a subunit of a generic package were modified after the generic formal part was changed; the usual symptom was an Illegal_Reference exception during elaboration of the subunit. Fixed bug in Cmvc.Destroy_View that, after destroying a code view, prevented a new code view with the same name from being created. R 10/17/88 61\f Rational Environment Release Information Added checks for circular importing for views in spec/load subsystems. This will prevent spec views from being in their own import closure. Fixed bug in Cmvc.Accept_Changes that caused the checked-out version to be copied when Accept_Changes was performed from object to object and the source was checked out. The correct behavior is for the last checked-in generation to be copied to the destination. Cmvc.Remove_Import and Cmvc.Remove_Unused_Imports do not do anything for code views. Cmvc.Make_Code_View was fixed to completely destroy the skeletal view when the code archive could not be made because all of the units in the source view were not coded. Cmvc_Maintenance.Check_Consistency was improved. For example, running Library.Destroy and then Check_Consistency on a subsystem leaves the subsystem in a state that can be destroyed by CMVC. To avoid incompatibilities, Cmvc_Maintenance.Make_Primary will now succeed only if the subsystem contains no non-R1000 target views with coded units. Cmvc.Make_Uncontrolled may now be applied to spec views. State directories in the configuration directory are created for working and spec views when the views are destroyed (and configurations are kept). This helps the later build operation to be successful. Cmvc.Release applied to system views creates a release information directory that contains files describing the release activity. These files can be used to rebuild the component views of the system view. Futhermore, Cmvc_Hierarchy.Build_Activity tries to rebuild the activity in a release based on the files in Release_Information if a system view has been destroyed and then rebuilt. Compilation.Destroy and Library.Destroy will no longer destroy objects of the subsystem or view subclasses. Cmvc.Destroy_View/Subsystem changes the subclass to World before doing a destroy. Fixed bug in Cmvc.Build that would sometimes cause a view to be built with a different name than the configuration. Check_Consistency will check for switch file existence. Cmvc.Sever will no longer loop if applied to an uncontrolled object; if it is applied to a view, it will sever all objects in the view. 62 10/17/88 R\f D_10_20_0 Release Abandon_Reservation will now obey the Allow_Demotion switch. Replace_Model allows changing the model only to one with a compatible target key. Changed Cmvc.Copy so that specifying View_To_Import = " " causes no imports for the new view, regardless of any other switch settings. Fixed bug that caused Destroy_View to fail if the model is deleted. Fixed bug that caused Check_Consistency to fail if a view contained units that did not save source. Fixed bug in Cmvc.Build that resulted in text files not being recreated properly. For a package spec in a spec view with a closed private part, if the package spec was joined to a package spec in a load view with an open private part, then Cmvc.Accept_Changes would not work properly on these units. Accept_Changes will now properly handle such units. Binding the model world to a library switch file no longer causes a Subsystem Spec Look-Through error to be reported later. The Default file mechanism in the export directory of a spec view now works as described in the training courses and as documented in the PM Volume of the Environment Reference Manual. Cmvc.Build applied to a configuration object name will correctly compute the view name. The <Inherit_Imports> parameter string will work correctly. Many CMVC operations would not do anything (and would supply no message to the user) if the naming expression given them did not resolve to anything. They will now provide a message. 6.4. Code Generator Fewer intermediate results will now cause NUMERIC_ERROR (Overflow). All integer expressions are evaluated as Long_Integer and NUMERIC_ERROR will be raised only if the final result is outside of the range of the base type for the expression. This substantially reduces the number of explicit overflow checks the code generator must emit. If an intermediate result is outside of the range of Long_Integer, NUMERIC_ERROR (Overflow) is raised. If the argument of a conversion was outside the base type of the target type, the Code Generator formerly raised NUMERIC_ERROR (Overflow). Conversions now raise only CONSTRAINT_ERROR (Type Range), as required by the LRM. R 10/17/88 63\f Rational Environment Release Information In previous Environment releases, values of the fixed point attributes 'Mantissa, 'Safe_Large, and 'Safe_Small were computed incorrectly for some fixed/floating point subtypes (most notably in the case of a subtype that imposed a coarser delta or digits constraint than its parent type). These are now computed correctly. A bug having to do with two-part type declarations completed by derivation is fixed, so the following construct is handled correctly: type T is private; ... private ... type T is new Foo; A bug causing Operand_Class_Error to be raised at runtime for certain source constructs is fixed. A bug is fixed which had resulted in a failure at code generation time with the error message "attempt to reference above TOS" or with an Illegal_Reference exception at runtime. 6.5. Work Orders Set_Field will correctly update the screen for nonstring fields and complain for fields that have already been set. Explain on the blank line after the Notes in a venture will no longer loop. Fixed bug that caused doing [Object] - [G] on a locked venture to leave the venture locked. Prompting for [Object] - [I] in ventures is now more verbose. Fixed a bug that caused characters to be dropped from work order fields when the data was restored from an Archive (either via Archive.Restore or Archive.Copy). 6.6. Editor If you made a deleted Command window visible via a prompt-for or a mark operation, it would overlap the window below. Now it takes space away from the parent window, as it should. Also, Window.Expand has been fixed so that it will not overlap windows or allow a window to extend past the end of the screen. Fixed a problem where the editor would become confused after a Window.Transpose involving an empty frame that had formerly held a promoted frame. 64 10/17/88 R\f D_10_20_0 Release What.Load correctly uses the Verbose parameter when bound to a key. If Editor.Region.Move is attempted with the destination point in a protected (elided) area, the editor would delete the selection from the source, place it on the hold stack, and then give the error message. Now it does nothing but display the error message. Fixed a problem where keymaps would not distinguish uppercase and lowercase names in keystrings (for example, Image.U, and Image.u). Fixed several problems with window management. Two of particular interest: * If a minor window is deleted ([Window] - [X]), the major window is resized, and then the minor window is brought back, the minor window is now resized to be in proper proportion to the major window. * If the session switch Window_Frames_Startup is greater than Window_Frames, the latter value will be used for the initial number of frames. Region.Format now preserves extra spaces after a sentence terminator. R 10/17/88 65\f Rational Environment Release Information 6.7. Debugger Debugger.Put on constants returns results in more cases. Commands attempt to give more meaningful error messages when units have been demoted or recoded. A check was added to Special_Type_Display to prevent a machine crash when the Image function is declared in a frame that has been popped. A user-supplied Image function must remain elaborated to be callable. It should be declared in a package, not in a procedure frame. Cleaned up the printing of array bounds on the Put command. Common.Enclosing now handles the In_Place parameter correctly. 6.8. Miscellaneous Completion with partially supplied parameters now works, giving fully named notation completion with the parameters substituted where appropriate. Corrected a bug in the Facit terminal handler that caused an incorrect control sequence to be sent by Shift-F12. Corrected a bug that caused some horizontal border lines to be processed incorrectly for overlapping windows. Corrected a bug that caused blank lines to be handled incorrectly after they were scrolled horizontally. Corrected a bug where multiple scrolling requests were combined into a single operation to scroll more lines than there were in a window. This could happen when a macro that caused scrolling was executed repeatedly. This usually left the window unchanged (and incorrect), but then it lost track of the cursor, yielding exceptions until a [Control] - [L] repaired the damage. Fixed a problem in which the editor could become deadlocked if a user was editing one version of a screen dump and attempted to overwrite it via Editor.Screen.Dump. Fixed bug in Time_Utility.Day_Of_Week around Leap day. Fixed bug where Time_Utility.Value accepts nonexistent days: for example, 2/29/87. Changed ANSI tape handler to convert invalid dates in labels to ANSI unspecified dates. Formerly this raised Time_Error exceptions. Fixed problem of having a comma (,) before a linefeed in an indirect file. 66 10/17/88 R\f D_10_20_0 Release Fixed searchlist problem where a nonexistent library name existed in the searchlist. Window_Io.Open now causes the window to be made visible if the job is attached. The Window Directory will not redraw the display after a job completes if there is a selection in the Window Directory window. R 10/17/88 67\f Rational Environment Release Information Package Queue now produces better messages in Remove and Disable procedures with immediate Flag => True; now it can handle the "%%" trailer for PostScript and Reversed => True. Fixed File_Utilities.Difference (Subobjects => True) so that now it will do all subobjects. Print spooler fixes : * Prevent using up all transport connections when spooler cannot connect to the device. * Prevent hanging the spooler when display requests are aborted. Terminal.Settings now shows the current state of Logoff_on_Disconnect. Fixed a bug that caused Terminal_Specific.Output.Disconnect to raise the Constraint_Error (Overflow) exception. Fixed a problem in which Library.Copy (From => "Lib1.?", To => "Lib2", Recursive => False) would not work correctly if there were sublibraries in the source. Changed Compilation.Parse (and Archive.Restore, Archive.Copy) to copy the format switches from the switch file of the library into which units are being parsed to the image objects that are created. Changed activity editor display to deal with subsystems whose parent library is a directory. Changed Archive.Save to deal correctly with case of saving a subsystem that does not contain a code database. Changed Replace option in package Archive to look for frozen installed dependents of Ada units being restored and unfreeze them. Fixed problem in which package Archive would sometimes save the wrong parentage information for a world. Changed package Archive to always copy the code database if a view or subsystem is processed, even if the view is skipped because of the Updated_Objects switch. Fixed problem in which package Archive would lose data from user-defined fields in work orders. This release of the help files fixes all known bugs relating to help, including [Help On Help] causing two menu items to show up instead of displaying information on how to use the help system. Fixed a bug that caused the machine to crash when a job that was displaying a large file was killed. 68 10/17/88 R\f D_10_20_0 Release Fixed a problem with fill mode and very long lines with no word breaks. Fixed a bug in !Commands.Abbreviations.Do_Backup where, if a starting time was specified (using the Starting_At parameter), the delay was computed incorrectly. Fixed a bug in the Environment clock that caused the system time to drift. Fixed a bug in the D_10_18_1 release (the beta test release of D1) where Archive would fail to restore any links in a world if any one link could not be restored because of access violations. Several bugs in microcode which could lead to deadly embraces between jobs or tasks during aborts or job termination were fixed. R 10/17/88 69\f Rational Environment Release Information 7. Documentation Updates Along with the D_10_20_0 Rational Environment, there are updates to the Rational Environment Reference Manual. These will include a full set of replacement pages for the Project Management volume and for the Master Index section of Volume 1. The new Project Management book will contain an expanded Key Concepts section, more complete chapter introductions and reference entries, and documentation for new package Cmvc_Hierarchy. The material also will be updated to reflect the changes to this material from D_9_25_1. The Master Index will be updated to contain index entries for the Project Management book. The online help information will be updated to include information from the new Project Management book. The following information corrects and updates the Project Management volume revision for D_10_20_0: * Most Cmvc operations operate on multiple objects atomically. This means that any error will result in no objects being affected, even if there are progress (+++) messages in the log. For example, if you specify multiple objects to be joined, and one of them cannot be joined for some reason, none of the objects are joined. * As noted in section 4.2.7 of this document, Repair_Cdb in package Cmvc_Maintenance does not perform the documented operations. * For many of the documented procedures in package Check, there are equivalent functions which are not documented. See the package spec !Tools.Compatibility.Revn.Units.Check for details. 70 10/17/88 R\f D_10_20_0 Release Appendix A Changes in Rational Network Mail For those customers who have installed Rational Network Mail on their R1000, the following changes have been made under the D_10_20_0 Environment release. Rational sites that do not have Mail installed are unaffected by these changes. * There are a number of new session switches: * Mail_Cc_Sender : Boolean := False. When true, sender is added to the initial cc list. * Mail_Retain_Deleted_Messages : Boolean := True. When false, Object.Delete expunges messages rather than marking them as deleted. * Mail_Position_Cursor_Unread : Boolean := True. When true, positions cursor on first unread message when mailbox window is redrawn or reformatted. * Mail_Send_Empty_Messages : Boolean := True. When false, refuses to send messages whose message field is empty or just the initial prompt appears. * Mail_Include_Text_In_Reply : Boolean := False. When true, contents of original message are inserted at the end of the reply. * Mail_Cursor_On_Text_In_Reply : Boolean := False. When true, cursor is initially positioned on the message field in a reply; when false, it is positioned on the To field. * Mail_Move_Cursor_On_Delete : Boolean := True. When true, moves cursor to next undeleted message on message delete. * Prompts use brackets [ ] rather than angle brackets < >. * You can select the header line in a mailbox (the one that says STATUS FROM ...). Object.Delete with this selection causes an expunge of the mailbox. * Object.Delete marks an unread message as if it were read. * Object.Undo marks an undeleted message as unread. * The text of the forwarded message is inserted into the bottom of the forward window when the window is displayed, rather than when it is sent. It can be edited (if, for example, you just want to excerpt it). Note this means if someone forwards something to you, you cannot trust the contents of the ostensible forwarded message. * You can edit the contents of the To and Subject fields on a reply. R 10/17/88 71\f Rational Environment Release Information * The repainting code for mailboxes has been revamped. It should be much faster and cause less screen redraw. * Mailbox names (at the beginning of mailbox windows) can be selected using the object selection operations (Object.Parent and so on). A selected mailbox can be deleted (if it is empty) via Object.Delete. * Object.Delete in a transmit window is the same as Abandon. * Message windows use text object editor style of selections. * Mail.Notify: There is a new procedure that causes the number of unread mail messages to appear in the Message window banner. You may want to use this in your login procedure. This is an addition to the mail spec in !Commands. To use this procedure, you will need to add this procedure as the last one in !Commands.Mail. 72 10/17/88 R\f D_10_20_0 Release * Object.Redo: This still maps to Reply but, if you provide any numeric argument other than the default (1), it will map to Reply_All. Bug Fixes Fixed a bug in which the Mail.New_Messages function returned the wrong number if messages were copied or moved into the main mailbox. The mail OE no longer gets rid of the mailbox window if a locking collision occurs while trying to read a message. It now just reports an error. Mail.Reload_Name_Map now handles an empty name map file. R 10/17/88 73\f Rational Environment Release Information 74 10/17/88 R\f D_10_20_0 Release Appendix B Training Courses Courses Included in D_10_20_0 * Fundamentals * Advanced Topics * Subsystems and CMVC * System Management * Project Development Methods * Networking * Target Build Utility * MIL-STD-1750A CDF * MC68020 Bare CDF * Design Facility User Training Changes Since the Last Release * New training software has been released for all courses. The latest release is named Delta1_Rev1 for both old and new courses. * System Management, Project Development Methods, and the DF and CDF courses are newly added with this release. Fundamentals, Subsystems and CMVC, Networking, and Target Build Utility have changed very little. Advanced Topics has changed a lot, with many new exercises added and several bugs fixed. * New script tools have been released. The script window should appear on the screen automatically when users invoke the scripts. Users no longer will have to go to the Window Directory to find the script window. * Because of a conflict with key bindings for the Design Facility, the Next and Previous operations that were previously bound to F4 and F3 on the Rational Terminal have been switched. They are now bound to F3 and F4, respectively. Also, the highest-performance operation is the Next operation ([F3]). All other operations have slightly lower performance. Replacement pages describing the script tool changes for the Rational version of Fundamentals will be distributed to the field. R 10/17/88 75\f Rational Environment Release Information * Facit key bindings for the scripts have not changed. Online scripts are not supported for the VT100 or Sun terminals. * A new training user is now available. Its name is Basic_Product_Training and it contains all exercise software from Fundamentals, Advanced Topics, and Subsystems and CMVC. This was created to support training classes that combined a variety of material from each course into one class. Students will be able to perform any exercise from the basic product training series within the single user login. * Software for all CDF products will be distributed to all sites even though that site does not have all CDFs running. 76 10/17/88 R\f D_10_20_0 Release Appendix C Target Build Utility For those customers who have installed the Target Build Utility on their R1000, the installation of D_10_20_0 will result in the installation of a bug fix release of the Target_Build_Utility, Code9_4_4. Rational sites that do not have the Target Build Utility will not be affected by these changes. The following bugs are fixed in Code9_4_4: * The Code9_3_6 release of the Target_Build_Utility did not generate the correct compilation order for combined views. This problem has been fixed, and the fix has resulted in a change to the order in which commands will be called in the recompilation script. Previously the following commands were called for each view: Put_Context_Setup_Command Put_Compile_Command, once for each obsolete unit in the view This sequence has been changed to: Put_Context_Setup_Command, each time the unit to be compiled is from a different view than the last unit compiled Put_Compile_Command, once for each unit to be recompiled This change applies to Move_Via_Network, Move_Via_Tape, and Move_To_Directory. * Fixed a bug that reported Other_Error when executing Make_Consistent; this was due to unexpunged, archived units in the dependency_database. * Fixed a bug that resulted in consumption of action_ids when opening the Target_Builder state file. * Fixed a bug that caused Constraint_Error (Array_Index) to be raised when calling Make_Consistent with a Libraries parameter string with a lower index other than 1. Known Bugs and Workarounds: Consider the case where you have three subsystems called A, B, and C. Views in A import spec views in B, and views in B import spec views in C. The Target Builder may fail if the working view of B is downloaded independently from A and C, and then at some later time you attempt to download all three subsystems with one Make_Consistent command. You will not have this problem if you always use the Target Builder to move views to the target from the bottom up, or if you always move R 10/17/88 77\f Rational Environment Release Information all of the subsystems with a single Make_Consistent command. 78 10/17/88 R\f D_10_20_0 Release Contents 1. Overview 1 2. Compatibility 1 2.1. Interoperability 2 2.1.1. Archive 2 2.1.2. Mail 3 2.1.3. Network 3 2.1.4. Target Build Utility 3 2.1.5. Package Remote 4 2.2. Terminal Keymaps 5 3. Upgrade Impact 5 3.1. Spec Changes 7 3.2. Keymaps 7 4. New Features 7 4.1. New Specs 7 4.2. CMVC Features 9 4.2.1. Support for Controlling Binary Objects 9 4.2.2. Support for Non-R1000 Target Code 9 4.2.3. Cmvc_Hierarchy Operations 10 4.2.4. Configuration Editor 11 4.2.4.1. Configuration Images 11 4.2.4.2. Generation Images 12 4.2.4.3. History Images 12 4.2.4.4. Associated Directory Objects 13 4.2.4.5. Configuration Image Commands 13 4.2.4.6. Generation Image Commands 14 4.2.4.7. History Image Commands 15 4.2.4.8. Spec Commands 15 4.2.4.9. Other Commands 16 4.2.5. Clarifications of CMVC Functionality 16 4.2.6. Compatibility Checking 18 4.2.7. Compatibility Database Utilities 18 4.3. Dependents Object Editor 19 4.3.1. Show Usage and Obsolescence Menus 19 4.4. System Management 20 4.4.1. Logoff on Disconnect 20 4.4.2. Systemwide Login 21 4.4.3. Tape Log Entries 21 4.4.4. Password Policies 22 4.4.4.1. Password Security 22 4.4.5. Additional Diagnostic Support 23 4.5. Keyboard Macro Editor 23 4.6. Ada Completion 24 4.7. Remote Execution 24 4.8. Debugger Maintenance 24 4.9. Networking 25 4.10. Editor 25 4.11. Print Spooler 25 4.12. Debugger 25 4.13. Facit Keymappings 27 4.14. Archive 27 4.14.1. Archive Mappings 28 4.15. Code Generator 29 R 10/17/88 iii\f Rational Environment Release Information 4.16. Miscellaneous New Features 30 5. Changes from D_9_25_1 31 5.1. Spec Changes 31 5.2. CMVC Changes 46 5.3. Changes in Work Orders 48 5.4. Naming Changes 48 5.4.1. Target Attribute 48 5.4.2. Directory Naming 49 5.4.3. View Attributes 50 5.5. Pretty-Printer Changes 50 5.6. Editor Changes 52 5.7. Changes to Help Files 52 5.8. Changes to Terminal Keymaps 52 5.9. Compilation Changes 57 5.10. Changes in Editing Ada Units 57 5.11. Miscellaneous Changes 57 6. Bug Fixes 59 6.1. Network 59 6.2. Ada Units 60 6.3. CMVC 61 6.4. Code Generator 63 6.5. Work Orders 64 6.6. Editor 64 6.7. Debugger 66 6.8. Miscellaneous 66 7. Documentation Updates 70 A Changes in Rational Network Mail 71 B Training Courses 75 C Target Build Utility 77 iv 10/17/88 R