|
|
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 - metrics - download
Length: 36216 (0x8d78)
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«
└─⟦ce93db669⟧
└─⟦this⟧
with Io_Exceptions;
package Basic_Io is
type Count is range 0 .. Integer'Last;
subtype Positive_Count is Count range 1 .. Count'Last;
function Get_Integer return String;
-- Skips any leading blanks, line terminators or page
-- terminators. Then reads a plus or a minus sign if
-- present, then reads according to the syntax of an
-- integer literal, which may be based. Stores in item
-- a string containing an optional sign and an integer
-- literal.
--
-- The exception DATA_ERROR is raised if the sequence
-- of characters does not correspond to the syntax
-- escribed above.
--
-- The exception END_ERROR is raised if the file terminator
-- is read. This means that the starting sequence of an
-- integer has not been met.
--
-- Note that the character terminating the operation must
-- be available for the next get operation.
--
function Get_Real return String;
-- Corresponds to get_integer except that it reads according
-- to the syntax of a real literal, which may be based.
function Get_Enumeration return String;
-- Corresponds to get_integer except that it reads according
-- to the syntax of an identifier, where upper and lower
-- case letters are equivalent to a character literal
-- including the apostrophes.
function Get_Item (Length : in Integer) return String;
-- Reads a string from the current line and stores it in
-- item. If the remaining number of characters on the
-- current line is less than the length then only these
-- characters are returned. The line terminator is not
-- skipped.
procedure Put_Item (Item : in String);
-- If the length of the string is greater than the current
-- maximum line (linelength), the exception LAYOUT_ERROR
-- is raised.
--
-- If the string does not fit on the current line a line
-- terminator is output, then the item is output.
-- Line and page lengths - ARM 14.3.3.
--
procedure Set_Line_Length (To : in Count);
procedure Set_Page_Length (To : in Count);
function Line_Length return Count;
function Page_Length return Count;
-- Operations oncolumns, lines and pages - ARM 14.3.4.
--
procedure New_Line;
procedure Skip_Line;
function End_Of_Line return Boolean;
procedure New_Page;
procedure Skip_Page;
function End_Of_Page return Boolean;
function End_Of_File return Boolean;
procedure Set_Col (To : in Positive_Count);
procedure Set_Line (To : in Positive_Count);
function Col return Positive_Count;
function Line return Positive_Count;
function Page return Positive_Count;
-- Character and string procedures defined is ARM 14.3.6.
--
procedure Get_Character (Item : out Character);
procedure Get_String (Item : out String);
procedure Get_Line (Item : out String; Last : out Natural);
procedure Put_Character (Item : in Character);
procedure Put_String (Item : in String);
procedure Put_Line (Item : in String);
-- exceptions:
Use_Error : exception renames Io_Exceptions.Use_Error;
Device_Error : exception renames Io_Exceptions.Device_Error;
End_Error : exception renames Io_Exceptions.End_Error;
Data_Error : exception renames Io_Exceptions.Data_Error;
Layout_Error : exception renames Io_Exceptions.Layout_Error;
end Basic_Io;with Io_Exceptions;
generic
type Element_Type is private;
package Direct_Io is
type File_Type is limited private;
type File_Mode is (In_File, Inout_File, Out_File);
type Count is new Integer range 0 .. Integer'Last / Element_Type'Size;
subtype Positive_Count is Count range 1 .. Count'Last;
-- File management
procedure Create (File : in out File_Type;
Mode : File_Mode := Inout_File;
Name : String := "";
Form : String := "");
procedure Open (File : in out File_Type;
Mode : File_Mode;
Name : String;
Form : String := "");
procedure Close (File : in out File_Type);
procedure Delete (File : in out File_Type);
procedure Reset (File : in out File_Type; Mode : File_Mode);
procedure Reset (File : in out File_Type);
function Mode (File : File_Type) return File_Mode;
function Name (File : File_Type) return String;
function Form (File : File_Type) return String;
function Is_Open (File : File_Type) return Boolean;
-- Input and output operations
procedure Read (File : File_Type;
Item : out Element_Type;
From : Positive_Count);
procedure Read (File : File_Type; Item : out Element_Type);
procedure Write (File : File_Type;
Item : Element_Type;
To : Positive_Count);
procedure Write (File : File_Type; Item : Element_Type);
procedure Set_Index (File : File_Type; To : Positive_Count);
function Index (File : File_Type) return Positive_Count;
function Size (File : File_Type) return Count;
function End_Of_File (File : File_Type) return Boolean;
-- Exceptions
Status_Error : exception renames Io_Exceptions.Status_Error;
Mode_Error : exception renames Io_Exceptions.Mode_Error;
Name_Error : exception renames Io_Exceptions.Name_Error;
Use_Error : exception renames Io_Exceptions.Use_Error;
Device_Error : exception renames Io_Exceptions.Device_Error;
End_Error : exception renames Io_Exceptions.End_Error;
Data_Error : exception renames Io_Exceptions.Data_Error;
private
type File_Type is access Integer;
end Direct_Io;package Io_Exceptions is
Status_Error : exception;
Mode_Error : exception;
Name_Error : exception;
Use_Error : exception;
Device_Error : exception;
End_Error : exception;
Data_Error : exception;
Layout_Error : exception;
end Io_Exceptions;-- Source code for SEQUENTIAL_IO
pragma Page;
with Io_Exceptions;
generic
type Element_Type is private;
package Sequential_Io is
type File_Type is limited private;
type File_Mode is (In_File, Out_File);
pragma Page;
-- File management
procedure Create (File : in out File_Type;
Mode : in File_Mode := Out_File;
Name : in String := "";
Form : in String := "");
procedure Open (File : in out File_Type;
Mode : in File_Mode;
Name : in String;
Form : in String := "");
procedure Close (File : in out File_Type);
procedure Delete (File : in out File_Type);
procedure Reset (File : in out File_Type; Mode : in File_Mode);
procedure Reset (File : in out File_Type);
function Mode (File : in File_Type) return File_Mode;
function Name (File : in File_Type) return String;
function Form (File : in File_Type) return String;
function Is_Open (File : in File_Type) return Boolean;
pragma Page;
-- Input and output operations
procedure Read (File : in File_Type; Item : out Element_Type);
procedure Write (File : in File_Type; Item : in Element_Type);
function End_Of_File (File : in File_Type) return Boolean;
pragma Page;
-- Exceptions
Status_Error : exception renames Io_Exceptions.Status_Error;
Mode_Error : exception renames Io_Exceptions.Mode_Error;
Name_Error : exception renames Io_Exceptions.Name_Error;
Use_Error : exception renames Io_Exceptions.Use_Error;
Device_Error : exception renames Io_Exceptions.Device_Error;
End_Error : exception renames Io_Exceptions.End_Error;
Data_Error : exception renames Io_Exceptions.Data_Error;
pragma Page;
private
type File_Type is new Integer;
end Sequential_Io;with Basic_Io;
with Io_Exceptions;
package Text_Io is
type File_Type is limited private;
type File_Mode is (In_File, Out_File);
type Count is range 0 .. 16_384;
subtype Positive_Count is Count range 1 .. Count'Last;
Unbounded : constant Count := 0; -- line and page length
-- max. size of an integer output field 2#....#;
subtype Field is Integer range 0 .. 1000;
subtype Number_Base is Integer range 2 .. 16;
type Type_Set is (Lower_Case, Upper_Case);
-- File management
procedure Create (File : in out File_Type;
Mode : in File_Mode := Out_File;
Name : in String := "";
Form : in String := "");
procedure Open (File : in out File_Type;
Mode : in File_Mode;
Name : in String;
Form : in String := "");
procedure Close (File : in out File_Type);
procedure Delete (File : in out File_Type);
procedure Reset (File : in out File_Type; Mode : in File_Mode);
procedure Reset (File : in out File_Type);
function Mode (File : in File_Type) return File_Mode;
function Name (File : in File_Type) return String;
function Form (File : in File_Type) return String;
function Is_Open (File : in File_Type) return Boolean;
--control of default input and output files
procedure Set_Input (File : in File_Type);
procedure Set_Output (File : in File_Type);
function Standard_Input return File_Type;
function Standard_Output return File_Type;
function Current_Input return File_Type;
function Current_Output return File_Type;
-- specification of line and page lengths
procedure Set_Line_Length (File : in File_Type; To : in Count);
procedure Set_Line_Length (To : in Count);
procedure Set_Page_Length (File : in File_Type; To : in Count);
procedure Set_Page_Length (To : in Count);
function Line_Length (File : in File_Type) return Count;
function Line_Length return Count;
function Page_Length (File : in File_Type) return Count;
function Page_Length return Count;
--Column, Line, and Page control
procedure New_Line (File : in File_Type; Spacing : in Positive_Count := 1);
procedure New_Line (Spacing : in Positive_Count := 1);
procedure Skip_Line (File : in File_Type; Spacing : in Positive_Count := 1);
procedure Skip_Line (Spacing : in Positive_Count := 1);
function End_Of_Line (File : in File_Type) return Boolean;
function End_Of_Line return Boolean;
procedure New_Page (File : in File_Type);
procedure New_Page;
procedure Skip_Page (File : in File_Type);
procedure Skip_Page;
function End_Of_Page (File : in File_Type) return Boolean;
function End_Of_Page return Boolean;
function End_Of_File (File : in File_Type) return Boolean;
function End_Of_File return Boolean;
procedure Set_Col (File : in File_Type; To : in Positive_Count);
procedure Set_Col (To : in Positive_Count);
procedure Set_Line (File : in File_Type; To : in Positive_Count);
procedure Set_Line (To : in Positive_Count);
function Col (File : in File_Type) return Positive_Count;
function Col return Positive_Count;
function Line (File : in File_Type) return Positive_Count;
function Line return Positive_Count;
function Page (File : in File_Type) return Positive_Count;
function Page return Positive_Count;
-- Character Input-Output
procedure Get (File : in File_Type; Item : out Character);
procedure Get (Item : out Character);
procedure Put (File : in File_Type; Item : in Character);
procedure Put (Item : in Character);
-- String Input-Output
procedure Get (File : in File_Type; Item : out String);
procedure Get (Item : out String);
procedure Put (File : in File_Type; Item : in String);
procedure Put (Item : in String);
procedure Get_Line
(File : in File_Type; Item : out String; Last : out Natural);
procedure Get_Line (Item : out String; Last : out Natural);
procedure Put_Line (File : in File_Type; Item : in String);
procedure Put_Line (Item : in String);
-- Generic Package for Input-Output of Intger Types
generic
type Num is range <>;
package Integer_Io is
Default_Width : Field := Num'Width;
Default_Base : Number_Base := 10;
procedure Get (File : in File_Type;
Item : out Num;
Width : in Field := 0);
procedure Get (Item : out Num; Width : in Field := 0);
procedure Put (File : in File_Type;
Item : in Num;
Width : in Field := 0;
Base : in Number_Base := Default_Base);
procedure Put (Item : in Num;
Width : in Field := 0;
Base : in Number_Base := Default_Base);
procedure Get (From : in String; Item : out Num; Last : out Positive);
procedure Put (To : out String;
Item : in Num;
Base : in Number_Base := Default_Base);
end Integer_Io;
-- Generic Packages for Input-Output of Real Types
generic
type Num is digits <>;
package Float_Io is
Default_Fore : Field := 2;
Default_Aft : Field := Num'Digits - 1;
Default_Exp : Field := 3;
procedure Get (File : in File_Type;
Item : out Num;
Width : in Field := 0);
procedure Get (Item : out Num; Width : in Field := 0);
procedure Put (File : in File_Type;
Item : in Num;
Fore : in Field := Default_Fore;
Aft : in Field := Default_Aft;
Exp : in Field := Default_Exp);
procedure Put (Item : in Num;
Fore : in Field := Default_Fore;
Aft : in Field := Default_Aft;
Exp : in Field := Default_Exp);
procedure Get (From : in String; Item : out Num; Last : out Positive);
procedure Put (To : out String;
Item : in Num;
Aft : in Field := Default_Aft;
Exp : in Field := Default_Exp);
end Float_Io;
generic
type Num is delta <>;
package Fixed_Io is
Default_Fore : Field := Num'Fore;
Default_Aft : Field := Num'Aft;
Default_Exp : Field := 0;
procedure Get (File : in File_Type;
Item : out Num;
Width : in Field := 0);
procedure Get (Item : out Num; Width : in Field := 0);
procedure Put (File : in File_Type;
Item : in Num;
Fore : in Field := Default_Fore;
Aft : in Field := Default_Aft;
Exp : in Field := Default_Exp);
procedure Put (Item : in Num;
Fore : in Field := Default_Fore;
Aft : in Field := Default_Aft;
Exp : in Field := Default_Exp);
procedure Get (From : in String; Item : out Num; Last : out Positive);
procedure Put (To : out String;
Item : in Num;
Aft : in Field := Default_Aft;
Exp : in Field := Default_Exp);
end Fixed_Io;
-- Generic Package for Input-Output of enumeration Types
generic
type Enum is (<>);
package Enumeration_Io is
Default_Width : Field := 0;
Default_Setting : Type_Set := Upper_Case;
procedure Get (File : in File_Type; Item : out Enum);
procedure Get (Item : out Enum);
procedure Put (File : File_Type;
Item : in Enum;
Width : in Field := Default_Width;
Set : in Type_Set := Default_Setting);
procedure Put (Item : in Enum;
Width : in Field := Default_Width;
Set : in Type_Set := Default_Setting);
procedure Get (From : in String; Item : out Enum; Last : out Positive);
procedure Put (To : out String;
Item : in Enum;
Set : in Type_Set := Default_Setting);
end Enumeration_Io;
-- Exceptions
Status_Error : exception renames Io_Exceptions.Status_Error;
Mode_Error : exception renames Io_Exceptions.Mode_Error;
Name_Error : exception renames Io_Exceptions.Name_Error;
Use_Error : exception renames Io_Exceptions.Use_Error;
Device_Error : exception renames Io_Exceptions.Device_Error;
End_Error : exception renames Io_Exceptions.End_Error;
Data_Error : exception renames Io_Exceptions.Data_Error;
Layout_Error : exception renames Io_Exceptions.Layout_Error;
private
type File_Type is
record
Ft : Integer := -1;
end record;
-- Unfortunately, we don't know what this is.
end Text_Io;package Calendar is
type Time is private;
subtype Year_Number is Integer range 1901 .. 2099;
subtype Month_Number is Integer range 1 .. 12;
subtype Day_Number is Integer range 1 .. 31;
subtype Day_Duration is Duration range 0.0 .. 86_400.0;
function Clock return Time;
function Year (Date : Time) return Year_Number;
function Month (Date : Time) return Month_Number;
function Day (Date : Time) return Day_Number;
function Seconds (Date : Time) return Day_Duration;
procedure Split (Date : Time;
Year : out Year_Number;
Month : out Month_Number;
Day : out Day_Number;
Seconds : out Day_Duration);
function Time_Of (Year : Year_Number;
Month : Month_Number;
Day : Day_Number;
Seconds : Day_Duration := 0.0) return Time;
function "+" (Left : Time; Right : Duration) return Time;
function "+" (Left : Duration; Right : Time) return Time;
function "-" (Left : Time; Right : Duration) return Time;
function "-" (Left : Time; Right : Time) return Duration;
function "<" (Left, Right : Time) return Boolean;
function "<=" (Left, Right : Time) return Boolean;
function ">" (Left, Right : Time) return Boolean;
function ">=" (Left, Right : Time) return Boolean;
Time_Error : exception; -- can be raised by TIME_OF, "+" and "-"
private
type Time is
record
I : Integer;
end record;
end Calendar;package Machine_Code is
end Machine_Code;package System is
-- for integer'size use 32;
type Address is access Integer;
-- for address'size use 4*storage_unit;
type Name is (Aix_6000);
System_Name : constant Name := Aix_6000;
Storage_Unit : constant := 8;
Memory_Size : constant := 1024 * 1024 * 256;
-- 256 Mb.
-- System-Dependent Named Numbers:
Min_Int : constant := -(2 ** 31);
Max_Int : constant := (2 ** 31) - 1;
Max_Digits : constant := 15;
Max_Mantissa : constant := 31;
Fine_Delta : constant := 1.0 / (2 ** Max_Mantissa);
Tick : constant := 0.00006;
-- Other System-dependent Declarations
subtype Priority is Integer range 0 .. 255;
Max_Object_Size : constant := (32 * 1024) - 1;
Max_Record_Count : constant := (32 * 1024) - 1;
Max_Text_Io_Count : constant := 16 * 1024;
Max_Text_Io_Field : constant := 1000;
end System;generic
type Source is limited private;
type Target is limited private;
function Unchecked_Conversion (S : Source) return Target;generic
type Object is limited private;
type Name is access Object;
procedure Unchecked_Deallocation (X : in out Name);package Math_Pack is
--======================================================================
-- Mathematical Constants
--======================================================================
Pi : constant := 3.1415_92653_58979_32384_62643_38327_95029;
E : constant := 2.7182_81828_45904_52353_60287_47135_26625;
--======================================================================
-- Miscellaneous Mathematical Functions
--======================================================================
function Sqrt (X : Float) return Float;
function Sqrt (X : Long_Float) return Long_Float;
-- Computes square root of X.
-- X >= 0.0;
--======================================================================
-- Logarithmic functions
--======================================================================
function Ln (X : Float) return Float;
function Ln (X : Long_Float) return Long_Float;
-- Computes the natural logarithm (base e) of x.
-- X > 0.0
function Log (X : Float; Base : Float := 10.0) return Float;
function Log (X : Long_Float; Base : Long_Float := 10.0) return Float;
-- Computes logarithm of X with respect to an arbitrary
-- base (default is 10).
-- X > 0.0
-- BASE real, but not 0.0
function Exp (X : Float; Base : Float := E) return Float;
function Exp (X : Long_Float; Base : Long_Float := E) return Long_Float;
-- Computes BASE raised to power of X. The base defaults
-- to "e".
-- X real
-- BASE real, but not 0.0
--======================================================================
-- Trigonometric Functions
--======================================================================
function Sin (X : Float) return Float;
function Sin (X : Long_Float) return Long_Float;
-- Computes sine of X in radians.
-- X real
function Cos (X : Float) return Float;
function Cos (X : Long_Float) return Long_Float;
-- Computes cosine of X in radians.
-- X real
function Tan (X : Float) return Float;
function Tan (X : Long_Float) return Long_Float;
-- Computes tangent of X in radians.
-- X real
function Arc_Sin (X : Float) return Float;
function Arc_Sin (X : Long_Float) return Long_Float;
-- Computes the arc sine of X and produces a result
-- in radians.
-- -1.0 <= X <= 1.0
function Arc_Cos (X : Float) return Float;
function Arc_Cos (X : Long_Float) return Long_Float;
-- Computes the arc cosine of X and produces a result
-- in radians.
-- -1.0 <= X <= 1.0
function Arc_Tan (Y : Float; X : Float := 1.0) return Float;
function Arc_Tan (Y : Long_Float; X : Long_Float := 1.0) return Long_Float;
-- If X = 1.0 (default), the arc tangent of Y is
-- computed. The result is in radians and lies in the
-- interval: -PI/2 <= arc tan <= PI/2. If X /= 1.0,
-- the arc tangent of Y/X is returned. The result
-- is in radians and lies in the following intervals
-- depending of the sign of Y:
--
-- Y >= 0, X > 0: 0 <= arc tan < PI/2
-- Y > 0, X <= 0: PI/2 <= arc tan < PI
-- Y < 0, X >= 0: 0 > arc tan >= -PI/2
-- Y <= 0, X < 0: -PI/2 > arc tan >= -PI
function Sinh (X : Float) return Float;
function Sinh (X : Long_Float) return Long_Float;
-- Computes the hyperbolic sine of X.
-- X real
function Cosh (X : Float) return Float;
function Cosh (X : Long_Float) return Long_Float;
-- Computes the hyperbolic cosine of X.
-- X real
function Tanh (X : Float) return Float;
function Tanh (X : Long_Float) return Long_Float;
-- Computes the hyperbolic tangent of X.
function Arc_Tanh (X : Float) return Float;
function Arc_Tanh (X : Long_Float) return Long_Float;
-- Computes the hyperbolic arctangent of X.
-- -1.0 < X < 1.0
--======================================================================
-- Exceptions
--======================================================================
-- NOTE: The exception NUMERIC_ERROR is raised if any
-- function in this package is called with an argument
-- which has a value which is not in the valid range of
-- values for that argument. The user may provide an
-- exception handler for this exception.
--======================================================================
end Math_Pack;*** 527 ***
!RC.MAIN_PROGRAMS.REV4_WORKING.UNITS.RELEASES.[!TARGETS.RS6000_AIX_IBM,!TARGETS.IMPLEMENTATION.RELEASE_RS6000_AIX_IBM_1_1_0.INSTALL_ACTIVITY]
!TARGETS.RS6000_AIX_IBM
W||| 5/15/91 20:37:32|WORLD|||
ANETWORK_PUBLIC=>RCOD|DNETWORK_PUBLIC=>RW|TRS6000_AIX_IBM|
!TARGETS.RS6000_AIX_IBM.IO
N||| 5/15/91 20:37:04|DIRECTORY|||
!TARGETS.RS6000_AIX_IBM.IO.SWITCHES
H||| 3/16/90 19:27:18|SWITCH||1|
ANETWORK_PUBLIC=>RW|
!TARGETS.RS6000_AIX_IBM.IO
K
!TARGETS.RS6000_AIX_IBM.IO.SWITCHES
!TARGETS.RS6000_AIX_IBM.IO.BASIC_IO'SPEC
V|-3475|4| 5/10/90 12:39:57|PACKAGE_SPEC||1|
ANETWORK_PUBLIC=>RW|
!TARGETS.RS6000_AIX_IBM.IO.DIRECT_IO'SPEC
V3475|-2284|4| 8/21/90 13:00:24|GENERIC_PACKAGE||1|
ANETWORK_PUBLIC=>RW|
!TARGETS.RS6000_AIX_IBM.IO.IO_EXCEPTIONS'SPEC
V5759|-273|4| 5/07/90 14:57:13|PACKAGE_SPEC||1|
ANETWORK_PUBLIC=>RW|
!TARGETS.RS6000_AIX_IBM.IO.SEQUENTIAL_IO'SPEC
V6032|-1902|4| 5/07/90 15:51:22|GENERIC_PACKAGE||1|
ANETWORK_PUBLIC=>RW|
!TARGETS.RS6000_AIX_IBM.IO.TEXT_IO'SPEC
V7934|-9113|4| 5/31/90 20:24:44|PACKAGE_SPEC||1|
ANETWORK_PUBLIC=>RW|
!TARGETS.RS6000_AIX_IBM.LRM
N||| 5/15/91 20:37:17|DIRECTORY|||
!TARGETS.RS6000_AIX_IBM.LRM.SWITCHES
H||| 2/21/90 15:47:03|SWITCH||1|
ANETWORK_PUBLIC=>RW|
!TARGETS.RS6000_AIX_IBM.LRM
K
!TARGETS.RS6000_AIX_IBM.LRM.SWITCHES
!TARGETS.RS6000_AIX_IBM.LRM.CALENDAR'SPEC
V17047|-1560|4| 7/26/90 11:14:32|PACKAGE_SPEC||1|
ANETWORK_PUBLIC=>RW|
!TARGETS.RS6000_AIX_IBM.LRM.MACHINE_CODE'SPEC
V18607|-41|4| 5/08/90 23:40:59|PACKAGE_SPEC||1|
ANETWORK_PUBLIC=>RW|
!TARGETS.RS6000_AIX_IBM.LRM.SYSTEM'SPEC
V18648|-884|4| 8/09/90 13:18:09|PACKAGE_SPEC||1|
ANETWORK_PUBLIC=>RW|
!TARGETS.RS6000_AIX_IBM.LRM.UNCHECKED_CONVERSION'SPEC
V19532|-137|4| 5/08/90 23:41:16|GENERIC_FUNCTION||1|
ANETWORK_PUBLIC=>RW|
!TARGETS.RS6000_AIX_IBM.LRM.UNCHECKED_DEALLOCATION'SPEC
V19669|-127|4| 5/08/90 23:41:28|GENERIC_PROCEDURE||1|
ANETWORK_PUBLIC=>RW|
!TARGETS.RS6000_AIX_IBM.REUSABLE_COMPONENTS
N||| 5/15/91 20:37:29|DIRECTORY|||
!TARGETS.RS6000_AIX_IBM.REUSABLE_COMPONENTS.SWITCHES
H||| 2/21/90 15:47:05|SWITCH||1|
ANETWORK_PUBLIC=>RW|
!TARGETS.RS6000_AIX_IBM.REUSABLE_COMPONENTS
K
!TARGETS.RS6000_AIX_IBM.REUSABLE_COMPONENTS.SWITCHES
!TARGETS.RS6000_AIX_IBM.REUSABLE_COMPONENTS.MATH_PACK'SPEC
V19796|-4563|4| 5/07/90 18:42:25|PACKAGE_SPEC||1|
ANETWORK_PUBLIC=>RW|
!TARGETS.RS6000_AIX_IBM.SWITCHES
H||| 2/08/90 13:41:30|SWITCH|||
ANETWORK_PUBLIC=>RW|
!TARGETS.RS6000_AIX_IBM.TARGET_INTERFACE
N||| 5/15/91 20:37:35|DIRECTORY|||
!TARGETS.RS6000_AIX_IBM.TARGET_INTERFACE.SWITCHES
H||| 2/21/90 15:47:04|SWITCH||1|
ANETWORK_PUBLIC=>RW|
!TARGETS.RS6000_AIX_IBM.TARGET_INTERFACE
K
!TARGETS.RS6000_AIX_IBM.TARGET_INTERFACE.SWITCHES
!TARGETS.RS6000_AIX_IBM
Y
!TARGETS.RS6000_AIX_IBM.SWITCHES
!TARGETS.IMPLEMENTATION.RELEASE_RS6000_AIX_IBM_1_1_0.INSTALL_ACTIVITY
A||| 1/10/92 09:00:51|ACTIVITY||2|
ANETWORK_PUBLIC=>RW|
!TARGETS.IMPLEMENTATION.RCF_CUSTOMIZATION.RS6000_AIX_IBM
!TARGETS.IMPLEMENTATION.RCF_CUSTOMIZATION.RS6000_AIX_IBM.REV1_1_SPEC
!TARGETS.IMPLEMENTATION.RCF_CUSTOMIZATION.RS6000_AIX_IBM.REV1_1_0
procedure Install_Customization (Target_Key : String := "<DEFAULT>";
Release_Number : String := "<DEFAULT>";
Version : String := "<DEFAULT>");with Activity;
with Archive;
with Debug_Tools;
with Directory_Tools;
with Log;
with Links;
with Profile;
with Program;
with String_Utilities;
procedure Install_Customization (Target_Key : String := "<DEFAULT>";
Release_Number : String := "<DEFAULT>";
Version : String := "<DEFAULT>") is
Bad_Current_Context : exception;
Def_Con : constant String := Directory_Tools.Naming.Default_Context;
Install_World_Prefix : constant String := "!Targets.Implementation.Release";
function Default_Release_Suffix return String is
begin
if Install_World_Prefix'Length < Def_Con'Length and then
String_Utilities.Equal
(Install_World_Prefix,
Def_Con (Def_Con'First ..
Def_Con'First + Install_World_Prefix'Length - 1),
Ignore_Case => True) then
return Def_Con (Def_Con'First + Install_World_Prefix'Length ..
Def_Con'Last);
else
raise Bad_Current_Context;
end if;
end Default_Release_Suffix;
function Get_Target_Key return String is
begin
if String_Utilities.Equal
(Release_Number, "<DEFAULT>", Ignore_Case => True) then
declare
Release_Suffix : constant String := Default_Release_Suffix;
Last_Underscore : constant Integer :=
String_Utilities.Reverse_Locate
(Fragment => "_", Within => Release_Suffix);
Second_To_Last_Underscore : constant Integer :=
String_Utilities.Reverse_Locate
(Fragment => "_",
Within => Release_Suffix (Release_Suffix'First ..
Last_Underscore - 1));
Third_To_Last_Underscore : constant Integer :=
String_Utilities.Reverse_Locate
(Fragment => "_",
Within => Release_Suffix
(Release_Suffix'First ..
Second_To_Last_Underscore - 1));
begin
if Third_To_Last_Underscore > Release_Suffix'First then
return Release_Suffix (Release_Suffix'First + 1 ..
Third_To_Last_Underscore - 1);
else
raise Bad_Current_Context;
end if;
end;
else
return Release_Number;
end if;
end Get_Target_Key;
function Get_Release_Number return String is
begin
if String_Utilities.Equal
(Release_Number, "<DEFAULT>", Ignore_Case => True) then
declare
Release_Suffix : constant String := Default_Release_Suffix;
Last_Underscore : constant Integer :=
String_Utilities.Reverse_Locate
(Fragment => "_", Within => Release_Suffix);
Second_To_Last_Underscore : constant Integer :=
String_Utilities.Reverse_Locate
(Fragment => "_",
Within => Release_Suffix (Release_Suffix'First ..
Last_Underscore - 1));
Third_To_Last_Underscore : constant Integer :=
String_Utilities.Reverse_Locate
(Fragment => "_",
Within => Release_Suffix
(Release_Suffix'First ..
Second_To_Last_Underscore - 1));
begin
if Third_To_Last_Underscore > Release_Suffix'First then
return Release_Suffix (Third_To_Last_Underscore + 1 ..
Last_Underscore - 1);
else
raise Bad_Current_Context;
end if;
end;
else
return Release_Number;
end if;
end Get_Release_Number;
function Get_Version return String is
begin
if String_Utilities.Equal
(Version, "<DEFAULT>", Ignore_Case => True) then
declare
Release_Suffix : constant String := Default_Release_Suffix;
Last_Underscore : constant Integer :=
String_Utilities.Reverse_Locate
(Fragment => "_", Within => Release_Suffix);
begin
if Last_Underscore > Release_Suffix'First then
return Release_Suffix
(Last_Underscore .. Release_Suffix'Last);
else
raise Bad_Current_Context;
end if;
end;
else
return Version;
end if;
end Get_Version;
function Release_World return String is
begin
return "!targets.implementation.release_" & Get_Target_Key &
"_" & Get_Release_Number & Get_Version;
end Release_World;
procedure Restore_Predefined is
begin
Log.Put_Line ("Restoring predefined world");
Archive.Restore (Objects => "[?,~!Targets." & Get_Target_Key & "]",
Use_Prefix => "*",
For_Prefix => "*",
Options => "changed_objects replace",
Device => Release_World & ".predefined_archive",
Response => "<PROFILE>");
Log.Put_Line ("Successfully restored predefined world");
exception
when others =>
Log.Put_Line (Debug_Tools.Get_Exception_Name &
" raised in Restore_Predefined",
Kind => Profile.Error_Msg);
raise;
end Restore_Predefined;
procedure Merge_Activities is
begin
Log.Put_Line
("Merging " & Release_World &
".install_activity into !machine.release.current.activity");
Activity.Merge (Source => Release_World & ".install_activity",
Subsystem => "?",
Spec_View => "?",
Load_View => "?",
Mode => Activity.Exact_Copy,
Target => "!machine.release.current.activity",
Response => "<PROFILE>");
Log.Put_Line ("Successfully merged activities");
exception
when others =>
Log.Put_Line (Debug_Tools.Get_Exception_Name &
" raised in Merge_Activities",
Kind => Profile.Error_Msg);
raise;
end Merge_Activities;
procedure Replace_Links is
Key : constant String := Get_Target_Key;
begin
Log.Put_Line ("Replacing link to " & Key);
Links.Replace (Source => "!targets.implementation.Rcf_customization." &
Key & "'spec_view.units." & Key,
Link => "#",
World => "!machine.release.current.commands",
Response => "<PROFILE>");
Log.Put_Line ("Successfully replaced link");
exception
when others =>
Log.Put_Line (Message => "Unable to define link to " & Key,
Kind => Profile.Warning_Msg);
Log.Put_Line (Debug_Tools.Get_Exception_Name &
" raised in Replace_Links");
end Replace_Links;
procedure Register_Target is
Key : constant String := Get_Target_Key;
begin
Log.Put_Line ("Registering target " & Key);
Program.Run_Job (Key & ".register");
Log.Put_Line ("Successfully registered target " & Key);
exception
when others =>
Log.Put_Line (Debug_Tools.Get_Exception_Name &
" raised in Register_Target");
raise;
end Register_Target;
begin
Restore_Predefined;
Merge_Activities;
Replace_Links;
--Register_Target;
exception
when Bad_Current_Context =>
Log.Put_Line ("Unable to install " & Target_Key &
" due to unhandled exception " &
Debug_Tools.Get_Exception_Name, Profile.Negative_Msg);
when others =>
Log.Put_Line ("Unable to install " & Get_Target_Key &
" due to unhandled exception " &
Debug_Tools.Get_Exception_Name, Profile.Negative_Msg);
end Install_Customization;