DataMuseum.dk

Presents historical artifacts from the history of:

Rational R1000/400

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

See our Wiki for more about Rational R1000/400

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦57378e756⟧ Ada Source

    Length: 211968 (0x33c00)
    Types: Ada Source
    Notes: 03_class, FILE, Long Ada Source, R1k_Segment, e3_tag, package body Func_In, package body Func_In10, package body Func_In5, package body Func_In_In_In, package body Func_In_In_In_X_String, package body Func_In_X_String, package body Proc_In, package body Proc_In10, package body Proc_In_In, package body Proc_In_In_In, package body Proc_In_In_In_In, package body Proc_In_In_In_Out_Out, package body Proc_In_In_Out_Out, package body Proc_Inout, package body Xlbt_Proc_Var, seg_004f47

Derivation

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

E3 Source Code



--/ if R1000 then
with Subprogram_Implementation;
--/ elsif Cdf_Hpux then
--// with System;
--/ elsif TeleGen2 and then Unix then
--// with System;
--/ end if;
with Unchecked_Deallocation;

with Xlbt_Arithmetic;  
use Xlbt_Arithmetic;  
with Xlbt_Exceptions;  
use Xlbt_Exceptions;  
with Xlbt_String;  
use Xlbt_String;

with Xlbit_Library2;  
use Xlbit_Library2;

with Xlbmt_Network_Types;  
use Xlbmt_Network_Types;

package body Xlbt_Proc_Var is
------------------------------------------------------------------------------
-- X Library Machine Types
--
-- Xlbt_Proc_Var - Machine/Compiler dependent procedure-variable interface
------------------------------------------------------------------------------
-- Copyright 1989 - 1991 by Rational, Santa Clara, California.
--
--                  All Rights Reserved.
--
-- Permission to use, copy, modify, and distribute this software and its
-- documentation for any purpose and without fee is hereby granted,
-- provided that the above copyright notice(s) appear in all copies and that
-- both that copyright notice(s) and this permission notice appear in
-- supporting documentation, and that the name of Rational not be used in
-- advertising or publicity pertaining to distribution of the software
-- without specific, written prior permission.
--
-- Rational disclaims all warranties with regard to this software, including
-- all implied warranties of merchantability and fitness, in no event shall
-- Rational be liable for any special, indirect or consequential damages or
-- any damages whatsoever resulting from loss of use, data or profits, whether
-- in an action of contract, negligence or other tortious action, arising out
-- of or in connection with the use or performance of this software.
------------------------------------------------------------------------------
--\x0c
    ------------------------------------------------------------------------------
-- X_Procedure_Variable - type completions
--
-- A procedure variable is a pointer to a record.  Key is used to validate the
-- Data pointer.  Pvv.Data.Key /= Pvv.Key means that the procedure variable
-- has gone "stale" (it has been freed).  As a secondary check we also check
-- Pvv.Data.Sig for being the correct signature.  Since our implementation is
-- "type safe" we know that the Sig should be correct; however, since the
-- problem of dangling pointers to freed data cannot be solved in Ada (without
-- garbage collection and the removal of Unchecked_Deallocation) we may still
-- have a "stale" pointer that needs to be caught.  We can't guarantee it.
------------------------------------------------------------------------------

----Each procedure variable has a pointer to the data we need to invoke a
--  procedure.
--      Key     - This is a signature value that is used to determine when
--                a procedure variable value has gone "stale".  A stale value
--                is one that has been freed.  We can't guarantee to catch
--                100% of all such things but we can catch "many" of them.
--      Sig     - This is the "signature" value for the procedure.  We use this
--                to determine whether or not the procedure variable value
--                is of the correct "type" (correct parameter list).  If a
--                value has been freed then this may or may not also help us
--                catch use of a dangling pointer, but it helps.

    Magic_Value : constant S_Long := 16#71F2D3C4#;  -- semi-random value

    type X_Procedure_Data_Rec is  
        record  
            Key : S_Long;  
            Sig : X_Procedure_Signature;
--/ if R1000 then
            Subprog : Subprogram_Implementation.Subprogram_Type;
--/ elsif Cdf_Hpux then
--//             Subprog : System.Address;
--//             A1      : System.Address;
--/ elsif TeleGen2 and then Unix then
--//             Subprog : System.Address;
--//             A4 : System.Address;
--/ else
--//             What_Is : Something;
--/ end if;
        end record;

    procedure Heap_Free_X_Procedure_Data     is  
       new Unchecked_Deallocation (X_Procedure_Data_Rec,  
                                   X_Procedure_Data);  
    procedure Heap_Free_X_Procedure_Variable is  
       new Unchecked_Deallocation (X_Procedure_Variable_Rec,  
                                   X_Procedure_Variable);

--\x0c
    ------------------------------------------------------------------------------
-- X_Procedure_Signature
--
-- Multitasking!  We need a Mutex to guard our Signature_Source.  We use the
-- one attached to X_Lib.
------------------------------------------------------------------------------

    Signature_Source : X_Procedure_Signature := None_X_Procedure_Signature;

--\x0c
    ------------------------------------------------------------------------------
-- R1000 Subprogram Variables
------------------------------------------------------------------------------

--/ if R1000 then

    package Si renames Subprogram_Implementation;

    Modes_Proc_Inout       : constant Si.Mode_Vector := (1 => Si.In_Out_Mode);  
    Modes_Proc_In          : constant Si.Mode_Vector := (1 => Si.In_Mode);  
    Modes_Proc_In_In       : constant Si.Mode_Vector := (1 .. 2 => Si.In_Mode);  
    Modes_Proc_In_In_In    : constant Si.Mode_Vector := (1 .. 3 => Si.In_Mode);  
    Modes_Proc_In_In_In_In : constant Si.Mode_Vector := (1 .. 4 => Si.In_Mode);  
    Modes_Proc_In10        : constant Si.Mode_Vector := (1 .. 10 => Si.In_Mode);

    Modes_Proc_In_In_In_Out_Out :
       constant  
                Si.Mode_Vector := (1 .. 3          => Si.In_Mode,  
                                            4 .. 5 => Si.Out_Mode);

    Modes_Proc_Out_In : constant Si.Mode_Vector := (1 => Si.Out_Mode,  
                                                    2 => Si.In_Mode);

    Modes_Proc_In_In_Out_Out : constant Si.Mode_Vector :=  
       (1 .. 2 => Si.In_Mode,  
        3 .. 4 => Si.Out_Mode);

    Modes_Func_In : constant Si.Mode_Vector := (1 => Si.In_Mode,  
                                                2 => Si.Return_Mode);

    Modes_Func_In_In_In : constant Si.Mode_Vector := (1 .. 3 => Si.In_Mode,  
                                                      4      => Si.Return_Mode);

--  function Uca_Placeholder is new Si.Return_Placeholder (U_Char_Array);

    Modes_Func_In_X_String : constant Si.Mode_Vector := (1 => Si.In_Mode,  
                                                         2 => Si.Return_Mode);

    function String_Placeholder is new Si.Return_Placeholder (X_String);

    Modes_Func_In_In_In_X_String :
       constant  
                Si.Mode_Vector := (1 .. 3     => Si.In_Mode,  
                                            4 => Si.Return_Mode);

    Modes_Func_In5  : constant Si.Mode_Vector := (1 .. 5 => Si.In_Mode,  
                                                  6      => Si.Return_Mode);  
    Modes_Func_In10 : constant Si.Mode_Vector := (1 .. 10 => Si.In_Mode,  
                                                  11      => Si.Return_Mode);

--/ end if; -- R1000

--\x0c
    procedure Free_X_Procedure_Variable (Var : in out X_Procedure_Variable) is
------------------------------------------------------------------------------
--  Var     - Specifies what to free.  Our caller has verified that this
--            value is not "stale" before calling.
--
-- Called to uninitialize and then to free a procedure variable value.  This
-- is done so that we have a chance of detecting "stale" or dangling values.
------------------------------------------------------------------------------
    begin

        Var.Data.Sig := None_X_Procedure_Signature;  
        Var.Data.Key := 0;  
        Var.Key      := 0;

        Heap_Free_X_Procedure_Data (Var.Data);  
        Heap_Free_X_Procedure_Variable (Var);

    end Free_X_Procedure_Variable;

--\x0c
    --/ if Cdf_Hpux then
--//
--//     function New_Procedure_Data
--//                 (Sig     : X_Procedure_Signature;
--//                  Subprog : System.Address;
--//                  A1      : System.Address) return X_Procedure_Variable is
--// ------------------------------------------------------------------------------
--// -- Allocate storage for a new procedure variable.
--// ------------------------------------------------------------------------------
--//     begin
--//
--//         return new X_Procedure_Variable_Rec'
--//                       (Key  => Magic_Value,
--//                        Data => new X_Procedure_Data_Rec'(Key     => Magic_Value,
--//                                                          Sig     => Sig,
--//                                                          Subprog => Subprog,
--//                                                          A1      => A1));
--//
--//     end New_Procedure_Data;
--/ end if;

--\x0c
    --/ if TeleGen2 and then Unix then
--//
--//     function New_Procedure_Data
--//                 (Sig     : X_Procedure_Signature;
--//                  Subprog : System.Address;
--//                  A4      : System.Address) return X_Procedure_Variable is
--// ------------------------------------------------------------------------------
--// -- Allocate storage for a new procedure variable.  We do this outside of the
--// -- generics for the TeleSoft compiler in order to get around a compiler bug
--// -- that causes the compiler to go belly-up.
--// ------------------------------------------------------------------------------
--//     begin
--//
--//         return new X_Procedure_Variable_Rec'
--//                       (Key  => Magic_Value,
--//                        Data => new X_Procedure_Data_Rec'(Key     => Magic_Value,
--//                                                          Sig     => Sig,
--//                                                          Subprog => Subprog,
--//                                                          A4      => A4));
--//
--//     end New_Procedure_Data;
--//
--/ end if;

--\x0c
    function X_Unique_Procedure_Signature return X_Procedure_Signature is
------------------------------------------------------------------------------
-- Compute and return the next available signature value.
------------------------------------------------------------------------------
        Sig : X_Procedure_Signature;  
    begin

        Lock_Mutex (Mutex);  
        begin  
            if Signature_Source.Second = S_Long'Last then  
                Signature_Source.Second := S_Long'First;  
                Signature_Source.First  := Signature_Source.First + 1;  
            else  
                Signature_Source.Second := Signature_Source.Second + 1;  
            end if;  
            Sig := Signature_Source;  
        exception  
            when others >  
                Unlock_Mutex (Mutex);  
                raise;  
        end;  
        Unlock_Mutex (Mutex);  
        return Sig;

    end X_Unique_Procedure_Signature;

--\x0c
    function X_Equal_Signature (Pval1 : X_Procedure_Variable;  
                                Pval2 : X_Procedure_Variable) return Boolean is
--------------------------------------------------------------------------
-- Returns TRUE if a) either value is None or b) the signature value of the
-- first parameter is the same as the signature value for the second parameter.
------------------------------------------------------------------------------
    begin

        if Pval1 = None_X_Procedure_Variable or else  
           Pval2 = None_X_Procedure_Variable then  
            return True;  
        end if;  
        if Pval1.Key /= Magic_Value or else  
           Pval1.Data.Key /= Magic_Value then  
            raise X_Bad_Procedure_Variable;  
        elsif Pval2.Key /= Magic_Value or else  
              Pval2.Data.Key /= Magic_Value then  
            raise X_Bad_Procedure_Variable;  
        end if;  
        return Pval1.Data.Sig = Pval2.Data.Sig;

    end X_Equal_Signature;

--\x0c
    function X_Equal_Signature (Pval : X_Procedure_Variable;  
                                Sig  : X_Procedure_Signature) return Boolean is
--------------------------------------------------------------------------
-- Returns TRUE if a) either value is None or b) the signature value of the
-- first parameter is the same as the signature value for the second parameter.
------------------------------------------------------------------------------
    begin

        if Pval = None_X_Procedure_Variable then  
            return True;  
        end if;  
        if Pval.Key /= Magic_Value or else  
           Pval.Data.Key /= Magic_Value then  
            raise X_Bad_Procedure_Variable;  
        end if;  
        return Pval.Data.Sig = Sig;
    end X_Equal_Signature;

--\x0c
    function X_Equal_Signature (Sig1 : X_Procedure_Signature;  
                                Sig2 : X_Procedure_Signature) return Boolean is
--------------------------------------------------------------------------
-- Returns TRUE if a) either value is None or b) the signature value of the
-- first parameter is the same as the signature value for the second parameter.
------------------------------------------------------------------------------
    begin

        return Sig1 = Sig2;

    end X_Equal_Signature;

--\x0c
    ------------------------------------------------------------------------------
-- Procedure with 1 In Out parameter.
------------------------------------------------------------------------------
--/ if R1000 then

    package body Proc_Inout is

        Signature  : constant X_Procedure_Signature :=  
           X_Unique_Procedure_Signature;  
        Signature1 : constant Long_Integer          :=  
           Long_Integer (Signature.First) * 2 ** 31 +  
              Long_Integer (Signature.Second);

        procedure Call (Pvv  :        Pv;  
                        Data : in out Parm1) is  
            Pvvv   : Subprogram_Implementation.Subprogram_Type;  
            Offset : constant Si.Offset_Vector := (Pvvv'Offset, Data'Offset);  
        begin  
            if Pvv = None or else  
               Pvv.Key /= Magic_Value or else  
               Pvv.Data.Key /= Magic_Value or else  
               Pvv.Data.Sig /= Signature then  
                raise X_Bad_Procedure_Variable;  
            end if;  
            Pvvv := Pvv.Data.Subprog;  
            Si.Invoke (Modes_Proc_Inout, Offset);  
        end Call;

        function Value return Pv is  
            Pdr : X_Procedure_Data;  
            Pvr : X_Procedure_Variable;  
        begin  
            Pdr := new X_Procedure_Data_Rec'  
                          (Key     => Magic_Value,  
                           Sig     => Signature,  
                           Subprog => Si.Get (Modes_Proc_Inout, Signature1));  
            Pvr := new X_Procedure_Variable_Rec'  
                          (Key  => Magic_Value,  
                           Data => Pdr);  
            return Pv (Pvr);  
        exception  
            when others =>  
                Heap_Free_X_Procedure_Data (Pdr);  
                Heap_Free_X_Procedure_Variable (Pvr);  
                raise;  
        end Value;

        procedure Free (Pvv : in out Pv) is  
        begin  
            if Pvv = None or else  
               Pvv.Key /= Magic_Value or else  
               Pvv.Data.Key /= Magic_Value or else  
               Pvv.Data.Sig /= Signature then  
                raise X_Bad_Procedure_Variable;  
            end if;  
            Free_X_Procedure_Variable (X_Procedure_Variable (Pvv));  
        end Free;

        function To_Pv (Pvv : X_Procedure_Variable) return Pv is  
        begin  
            if Pvv = None_X_Procedure_Variable then  
                return None;  
            elsif Pvv.Key /= Magic_Value or else  
                  Pvv.Data.Key /= Magic_Value or else  
                  Pvv.Data.Sig /= Signature then  
                raise X_Bad_Procedure_Variable;  
            end if;  
            return Pv (Pvv);  
        end To_Pv;

        function From_Pv (Pvv : Pv) return X_Procedure_Variable is  
        begin  
            if Pvv = None then  
                return None_X_Procedure_Variable;  
            elsif Pvv.Key /= Magic_Value or else  
                  Pvv.Data.Key /= Magic_Value or else  
                  Pvv.Data.Sig /= Signature then  
                raise X_Bad_Procedure_Variable;  
            end if;  
            return X_Procedure_Variable (Pvv);  
        end From_Pv;

    end Proc_Inout;

--/ end if; -- R1000

--\x0c
    ------------------------------------------------------------------------------
-- Procedure with 1 In Out parameter.
------------------------------------------------------------------------------
--/ if Cdf_Hpux then
--//
--//     package body Proc_Inout is
--//
--//         Signature : constant X_Procedure_Signature :=
--//            X_Unique_Procedure_Signature;
--//
--//         procedure Invoke_Subprog (Subprog : System.Address;
--//                                   A1      : System.Address;
--//                                   Offset  : Integer);
--//         pragma Interface (Assembly, Invoke_Subprog);
--//         pragma Import_Procedure (Internal => Invoke_Subprog,
--//                                  External => "__Xlbmt_InOut_Invoke_Procedure",
--//                                  Parameter_Types => (System.Address,
--//                                                      System.Address, Integer),
--//                                  Mechanism => (Value, Value, Value));
--//
--//         function Get_A7 return Integer;
--//         pragma Interface (Assembly, Get_A7);
--//         pragma Import_Function (Internal        => Get_A7,
--//                                 External        => "__Xlbmt_Get_A7",
--//                                 Parameter_Types => null,
--//                                 Result_Type     => Integer);
--//
--//         function Get_A1 return System.Address;
--//         pragma Interface (Assembly, Get_A1);
--//         pragma Import_Function (Internal        => Get_A1,
--//                                 External        => "__Xlbmt_Get_A1",
--//                                 Parameter_Types => null,
--//                                 Result_Type     => System.Address);
--//
--//         procedure Call (Pvv : Pv; Data : in out Parm1) is
--//             Sp1, Sp2 : Integer;
--//
--//             procedure Call (Data : in out Parm1) is
--//             begin
--//                 Sp2 := Get_A7;
--//             end Call;
--//
--//         begin
--//             if Pvv = None or else Pvv.Key /= Magic_Value or else
--//                Pvv.Data.Key /= Magic_Value or else
--//                Pvv.Data.Sig /= Signature then
--//                 raise X_Bad_Procedure_Variable;
--//             end if;
--//
--//             Sp1 := Get_A7;
--//             Call (Data);
--//             Invoke_Subprog (Pvv.Data.Subprog, Pvv.Data.A1, Sp1 - Sp2);
--//         end Call;
--//
--//         function Value return Pv is
--//             Pvr : X_Procedure_Variable;
--//         begin
--//             Pvr := New_Procedure_Data (Signature, Called'Address, Get_A1);
--//             return Pv (Pvr);
--//         exception
--//             when others =>
--//                 Heap_Free_X_Procedure_Data (Pvr.Data);
--//                 Heap_Free_X_Procedure_Variable (Pvr);
--//                 raise;
--//         end Value;
--//
--//         procedure Free (Pvv : in out Pv) is
--//         begin
--//             if Pvv = None or else Pvv.Key /= Magic_Value or else
--//                Pvv.Data.Key /= Magic_Value or else
--//                Pvv.Data.Sig /= Signature then
--//                 raise X_Bad_Procedure_Variable;
--//             end if;
--//             Free_X_Procedure_Variable (X_Procedure_Variable (Pvv));
--//         end Free;
--//
--//         function To_Pv (Pvv : X_Procedure_Variable) return Pv is
--//         begin
--//             if Pvv = None_X_Procedure_Variable then
--//                 return None;
--//             elsif Pvv.Key /= Magic_Value or else
--//                   Pvv.Data.Key /= Magic_Value or else
--//                   Pvv.Data.Sig /= Signature then
--//                 raise X_Bad_Procedure_Variable;
--//             end if;
--//             return Pv (Pvv);
--//         end To_Pv;
--//
--//         function From_Pv (Pvv : Pv) return X_Procedure_Variable is
--//         begin
--//             if Pvv = None then
--//                 return None_X_Procedure_Variable;
--//             elsif Pvv.Key /= Magic_Value or else
--//                   Pvv.Data.Key /= Magic_Value or else
--//                   Pvv.Data.Sig /= Signature then
--//                 raise X_Bad_Procedure_Variable;
--//             end if;
--//             return X_Procedure_Variable (Pvv);
--//         end From_Pv;
--//
--//     end Proc_Inout;
--//
--/ end if;    -- Cdf_Hpux

--\x0c
    ------------------------------------------------------------------------------
-- Procedure with 1 In Out parameter.
------------------------------------------------------------------------------
--/ if TeleGen2 and then Unix then
--//
--// package body Proc_Inout is
--//
--//    Signature : constant X_Procedure_Signature :=
--//       X_Unique_Procedure_Signature;
--//
--//    procedure Invoke_Subprog (Subprog : System.Address;
--//                              A4      : System.Address;
--//                              Arg1    : System.Address);
--//    pragma Interface (Assembly, Invoke_Subprog);
--//    pragma Linkname (Invoke_Subprog, "_Xlbmt_InOut_Invoke_Procedure");
--//
--//    function Get_A4 return System.Address;
--//    pragma Interface (Assembly, Get_A4);
--//    pragma Linkname (Get_A4, "_Xlbmt_Get_A4");
--//
--//    procedure Call (Pvv  :        Pv;
--//                    Data : in out Parm1) is
--//    begin
--//        if Pvv = None or else
--//           Pvv.Key /= Magic_Value or else
--//           Pvv.Data.Key /= Magic_Value or else
--//           Pvv.Data.Sig /= Signature then
--//            raise X_Bad_Procedure_Variable;
--//        end if;
--//        Invoke_Subprog (Pvv.Data.Subprog, Pvv.Data.A4, Pvv'Address);
--//    end Call;
--//
--//    function Value return Pv is
--//        Pvr : X_Procedure_Variable;
--//    begin
--//        Pvr := New_Procedure_Data (Signature, Called'Address, Get_A4 );
--//        return Pv (Pvr);
--//    exception
--//        when others =>
--//            Heap_Free_X_Procedure_Data (Pvr.Data);
--//            Heap_Free_X_Procedure_Variable (Pvr);
--//            raise;
--//    end Value;
--//
--//    procedure Free (Pvv : in out Pv) is
--//    begin
--//        if Pvv = None or else
--//           Pvv.Key /= Magic_Value or else
--//           Pvv.Data.Key /= Magic_Value or else
--//           Pvv.Data.Sig /= Signature then
--//            raise X_Bad_Procedure_Variable;
--//        end if;
--//        Free_X_Procedure_Variable (X_Procedure_Variable (Pvv));
--//    end Free;
--//
--//    function To_Pv (Pvv : X_Procedure_Variable) return Pv is
--//    begin
--//        if Pvv = None_X_Procedure_Variable then
--//            return None;
--//        elsif Pvv.Key /= Magic_Value or else
--//              Pvv.Data.Key /= Magic_Value or else
--//              Pvv.Data.Sig /= Signature then
--//            raise X_Bad_Procedure_Variable;
--//        end if;
--//        return Pv (Pvv);
--//    end To_Pv;
--//
--//    function From_Pv (Pvv : Pv) return X_Procedure_Variable is
--//    begin
--//        if Pvv = None then
--//            return None_X_Procedure_Variable;
--//        elsif Pvv.Key /= Magic_Value or else
--//              Pvv.Data.Key /= Magic_Value or else
--//              Pvv.Data.Sig /= Signature then
--//            raise X_Bad_Procedure_Variable;
--//        end if;
--//        return X_Procedure_Variable (Pvv);
--//    end From_Pv;
--//
--// end Proc_Inout;
--//
--/ end if; -- TeleGen2 and then Unix

--\x0c
    ------------------------------------------------------------------------------
-- Procedure with 1 In parameter.
------------------------------------------------------------------------------
--/ if R1000 then

    package body Proc_In is

        Signature  : constant X_Procedure_Signature :=  
           X_Unique_Procedure_Signature;  
        Signature1 : constant Long_Integer          :=  
           Long_Integer (Signature.First) * 2 ** 31 +  
              Long_Integer (Signature.Second);

        procedure Call (Pvv  :    Pv;  
                        Data : in Parm1) is  
            Pvvv   : Subprogram_Implementation.Subprogram_Type;  
            Offset : constant Si.Offset_Vector := (Pvvv'Offset, Data'Offset);  
        begin  
            if Pvv = None or else  
               Pvv.Key /= Magic_Value or else  
               Pvv.Data.Key /= Magic_Value or else  
               Pvv.Data.Sig /= Signature then  
                raise X_Bad_Procedure_Variable;  
            end if;  
            Pvvv := Pvv.Data.Subprog;  
            Si.Invoke (Modes_Proc_In, Offset);  
        end Call;

        function Value return Pv is  
            Pdr : X_Procedure_Data;  
            Pvr : X_Procedure_Variable;  
        begin  
            Pdr := new X_Procedure_Data_Rec'  
                          (Key     => Magic_Value,  
                           Sig     => Signature,  
                           Subprog => Si.Get (Modes_Proc_In, Signature1));  
            Pvr := new X_Procedure_Variable_Rec'  
                          (Key  => Magic_Value,  
                           Data => Pdr);  
            return Pv (Pvr);  
        exception  
            when others =>  
                Heap_Free_X_Procedure_Data (Pdr);  
                Heap_Free_X_Procedure_Variable (Pvr);  
                raise;  
        end Value;

        procedure Free (Pvv : in out Pv) is  
        begin  
            if Pvv = None or else  
               Pvv.Key /= Magic_Value or else  
               Pvv.Data.Key /= Magic_Value or else  
               Pvv.Data.Sig /= Signature then  
                raise X_Bad_Procedure_Variable;  
            end if;  
            Free_X_Procedure_Variable (X_Procedure_Variable (Pvv));  
        end Free;

        function To_Pv (Pvv : X_Procedure_Variable) return Pv is  
        begin  
            if Pvv = None_X_Procedure_Variable then  
                return None;  
            elsif Pvv.Key /= Magic_Value or else  
                  Pvv.Data.Key /= Magic_Value or else  
                  Pvv.Data.Sig /= Signature then  
                raise X_Bad_Procedure_Variable;  
            end if;  
            return Pv (Pvv);  
        end To_Pv;

        function From_Pv (Pvv : Pv) return X_Procedure_Variable is  
        begin  
            if Pvv = None then  
                return None_X_Procedure_Variable;  
            elsif Pvv.Key /= Magic_Value or else  
                  Pvv.Data.Key /= Magic_Value or else  
                  Pvv.Data.Sig /= Signature then  
                raise X_Bad_Procedure_Variable;  
            end if;  
            return X_Procedure_Variable (Pvv);  
        end From_Pv;

    end Proc_In;

--/ end if; -- R1000

--\x0c
    ------------------------------------------------------------------------------
-- Procedure with 1 In parameter.
------------------------------------------------------------------------------
--/ if Cdf_Hpux then
--//
--//     package body Proc_In is
--//
--//         Signature : constant X_Procedure_Signature :=
--//            X_Unique_Procedure_Signature;
--//
--//         procedure Invoke_Subprog (Subprog : System.Address;
--//                                   A1      : System.Address;
--//                                   Offset  : Integer);
--//         pragma Interface (Assembly, Invoke_Subprog);
--//         pragma Import_Procedure (Internal => Invoke_Subprog,
--//                                  External => "__Xlbmt_In_Invoke_Procedure",
--//                                  Parameter_Types => (System.Address,
--//                                                      System.Address, Integer),
--//                                  Mechanism => (Value, Value, Value));
--//
--//         function Get_A7 return Integer;
--//         pragma Interface (Assembly, Get_A7);
--//         pragma Import_Function (Internal        => Get_A7,
--//                                 External        => "__Xlbmt_Get_A7",
--//                                 Parameter_Types => null,
--//                                 Result_Type     => Integer);
--//
--//         function Get_A1 return System.Address;
--//         pragma Interface (Assembly, Get_A1);
--//         pragma Import_Function (Internal        => Get_A1,
--//                                 External        => "__Xlbmt_Get_A1",
--//                                 Parameter_Types => null,
--//                                 Result_Type     => System.Address);
--//
--//         procedure Call (Pvv : Pv; Data : in Parm1) is
--//             Sp1, Sp2 : Integer;
--//
--//             procedure Call (Data : in Parm1) is
--//             begin
--//                 Sp2 := Get_A7;
--//             end Call;
--//
--//         begin
--//             if Pvv = None or else Pvv.Key /= Magic_Value or else
--//                Pvv.Data.Key /= Magic_Value or else
--//                Pvv.Data.Sig /= Signature then
--//                 raise X_Bad_Procedure_Variable;
--//             end if;
--//
--//             Sp1 := Get_A7;
--//             Call (Data);
--//             Invoke_Subprog (Pvv.Data.Subprog, Pvv.Data.A1, Sp1 - Sp2);
--//         end Call;
--//
--//         function Value return Pv is
--//             Pvr : X_Procedure_Variable;
--//         begin
--//             Pvr := New_Procedure_Data (Signature, Called'Address, Get_A1);
--//             return Pv (Pvr);
--//         exception
--//             when others =>
--//                 Heap_Free_X_Procedure_Data (Pvr.Data);
--//                 Heap_Free_X_Procedure_Variable (Pvr);
--//                 raise;
--//         end Value;
--//
--//         procedure Free (Pvv : in out Pv) is
--//         begin
--//             if Pvv = None or else Pvv.Key /= Magic_Value or else
--//                Pvv.Data.Key /= Magic_Value or else
--//                Pvv.Data.Sig /= Signature then
--//                 raise X_Bad_Procedure_Variable;
--//             end if;
--//             Free_X_Procedure_Variable (X_Procedure_Variable (Pvv));
--//         end Free;
--//
--//         function To_Pv (Pvv : X_Procedure_Variable) return Pv is
--//         begin
--//             if Pvv = None_X_Procedure_Variable then
--//                 return None;
--//             elsif Pvv.Key /= Magic_Value or else
--//                   Pvv.Data.Key /= Magic_Value or else
--//                   Pvv.Data.Sig /= Signature then
--//                 raise X_Bad_Procedure_Variable;
--//             end if;
--//             return Pv (Pvv);
--//         end To_Pv;
--//
--//         function From_Pv (Pvv : Pv) return X_Procedure_Variable is
--//         begin
--//             if Pvv = None then
--//                 return None_X_Procedure_Variable;
--//             elsif Pvv.Key /= Magic_Value or else
--//                   Pvv.Data.Key /= Magic_Value or else
--//                   Pvv.Data.Sig /= Signature then
--//                 raise X_Bad_Procedure_Variable;
--//             end if;
--//             return X_Procedure_Variable (Pvv);
--//         end From_Pv;
--//
--//     end Proc_In;
--//
--/ end if; -- Cdf_Hpux

--\x0c
    ------------------------------------------------------------------------------
-- Procedure with 1 In parameter.
------------------------------------------------------------------------------
--/ if TeleGen2 and then Unix then
--//
--// package body Proc_In is
--//
--//    Signature : constant X_Procedure_Signature :=
--//       X_Unique_Procedure_Signature;
--//
--//    procedure Invoke_Subprog (Subprog : System.Address;
--//                              A4      : System.Address;
--//                              Arg1    : System.Address);
--//    pragma Interface (Assembly, Invoke_Subprog);
--//    pragma Linkname (Invoke_Subprog, "_Xlbmt_In_Invoke_Procedure");
--//
--//    function Get_A4 return System.Address;
--//    pragma Interface (Assembly, Get_A4);
--//    pragma Linkname (Get_A4, "_Xlbmt_Get_A4");
--//
--//    procedure Call (Pvv  :    Pv;
--//                    Data : in Parm1) is
--//    begin
--//        if Pvv = None or else
--//           Pvv.Key /= Magic_Value or else
--//           Pvv.Data.Key /= Magic_Value or else
--//           Pvv.Data.Sig /= Signature then
--//            raise X_Bad_Procedure_Variable;
--//        end if;
--//        Invoke_Subprog (Pvv.Data.Subprog, Pvv.Data.A4, Pvv'Address);
--//    end Call;
--//
--//    function Value return Pv is
--//        Pvr : X_Procedure_Variable;
--//    begin
--//        Pvr := New_Procedure_Data (Signature, Called'Address, Get_A4 );
--//        return Pv (Pvr);
--//    exception
--//        when others =>
--//            Heap_Free_X_Procedure_Data (Pvr.Data);
--//            Heap_Free_X_Procedure_Variable (Pvr);
--//            raise;
--//    end Value;
--//
--//    procedure Free (Pvv : in out Pv) is
--//    begin
--//        if Pvv = None or else
--//           Pvv.Key /= Magic_Value or else
--//           Pvv.Data.Key /= Magic_Value or else
--//           Pvv.Data.Sig /= Signature then
--//            raise X_Bad_Procedure_Variable;
--//        end if;
--//        Free_X_Procedure_Variable (X_Procedure_Variable (Pvv));
--//    end Free;
--//
--//    function To_Pv (Pvv : X_Procedure_Variable) return Pv is
--//    begin
--//        if Pvv = None_X_Procedure_Variable then
--//            return None;
--//        elsif Pvv.Key /= Magic_Value or else
--//              Pvv.Data.Key /= Magic_Value or else
--//              Pvv.Data.Sig /= Signature then
--//            raise X_Bad_Procedure_Variable;
--//        end if;
--//        return Pv (Pvv);
--//    end To_Pv;
--//
--//    function From_Pv (Pvv : Pv) return X_Procedure_Variable is
--//    begin
--//        if Pvv = None then
--//            return None_X_Procedure_Variable;
--//        elsif Pvv.Key /= Magic_Value or else
--//              Pvv.Data.Key /= Magic_Value or else
--//              Pvv.Data.Sig /= Signature then
--//            raise X_Bad_Procedure_Variable;
--//        end if;
--//        return X_Procedure_Variable (Pvv);
--//    end From_Pv;
--//
--// end Proc_In;
--//
--/ end if; -- TeleGen2 and then Unix

--\x0c
    ------------------------------------------------------------------------------
-- Procedure with 2 In parameters.
------------------------------------------------------------------------------
--/ if R1000 then

    package body Proc_In_In is

        Signature  : constant X_Procedure_Signature :=  
           X_Unique_Procedure_Signature;  
        Signature1 : constant Long_Integer          :=  
           Long_Integer (Signature.First) * 2 ** 31 +  
              Long_Integer (Signature.Second);

        procedure Call (Pvv   :    Pv;  
                        Data1 : in Parm1;  
                        Data2 : in Parm2) is  
            Pvvv   : Subprogram_Implementation.Subprogram_Type;  
            Offset : constant Si.Offset_Vector :=  
               (Pvvv'Offset, Data1'Offset, Data2'Offset);  
        begin  
            if Pvv = None or else  
               Pvv.Key /= Magic_Value or else  
               Pvv.Data.Key /= Magic_Value or else  
               Pvv.Data.Sig /= Signature then  
                raise X_Bad_Procedure_Variable;  
            end if;  
            Pvvv := Pvv.Data.Subprog;  
            Si.Invoke (Modes_Proc_In_In, Offset);  
        end Call;

        function Value return Pv is  
            Pdr : X_Procedure_Data;  
            Pvr : X_Procedure_Variable;  
        begin  
            Pdr := new X_Procedure_Data_Rec'  
                          (Key     => Magic_Value,  
                           Sig     => Signature,  
                           Subprog => Si.Get (Modes_Proc_In_In, Signature1));  
            Pvr := new X_Procedure_Variable_Rec'  
                          (Key  => Magic_Value,  
                           Data => Pdr);  
            return Pv (Pvr);  
        exception  
            when others =>  
                Heap_Free_X_Procedure_Data (Pdr);  
                Heap_Free_X_Procedure_Variable (Pvr);  
                raise;  
        end Value;

        procedure Free (Pvv : in out Pv) is  
        begin  
            if Pvv = None or else  
               Pvv.Key /= Magic_Value or else  
               Pvv.Data.Key /= Magic_Value or else  
               Pvv.Data.Sig /= Signature then  
                raise X_Bad_Procedure_Variable;  
            end if;  
            Free_X_Procedure_Variable (X_Procedure_Variable (Pvv));  
        end Free;

        function To_Pv (Pvv : X_Procedure_Variable) return Pv is  
        begin  
            if Pvv = None_X_Procedure_Variable then  
                return None;  
            elsif Pvv.Key /= Magic_Value or else  
                  Pvv.Data.Key /= Magic_Value or else  
                  Pvv.Data.Sig /= Signature then  
                raise X_Bad_Procedure_Variable;  
            end if;  
            return Pv (Pvv);  
        end To_Pv;

        function From_Pv (Pvv : Pv) return X_Procedure_Variable is  
        begin  
            if Pvv = None then  
                return None_X_Procedure_Variable;  
            elsif Pvv.Key /= Magic_Value or else  
                  Pvv.Data.Key /= Magic_Value or else  
                  Pvv.Data.Sig /= Signature then  
                raise X_Bad_Procedure_Variable;  
            end if;  
            return X_Procedure_Variable (Pvv);  
        end From_Pv;

    end Proc_In_In;

--/ end if; -- R1000

--\x0c
    ------------------------------------------------------------------------------
-- Procedure with 2 In parameters.
------------------------------------------------------------------------------
--/ if Cdf_Hpux then
--//
--//     package body Proc_In_In is
--//
--//         Signature : constant X_Procedure_Signature :=
--//            X_Unique_Procedure_Signature;
--//
--//         procedure Invoke_Subprog (Subprog : System.Address;
--//                                   A1      : System.Address;
--//                                   Offset  : Integer);
--//         pragma Interface (Assembly, Invoke_Subprog);
--//         pragma Import_Procedure (Internal => Invoke_Subprog,
--//                                  External => "__Xlbmt_In_Invoke_Procedure",
--//                                  Parameter_Types => (System.Address,
--//                                                      System.Address, Integer),
--//                                  Mechanism => (Value, Value, Value));
--//
--//         function Get_A7 return Integer;
--//         pragma Interface (Assembly, Get_A7);
--//         pragma Import_Function (Internal        => Get_A7,
--//                                 External        => "__Xlbmt_Get_A7",
--//                                 Parameter_Types => null,
--//                                 Result_Type     => Integer);
--//
--//         function Get_A1 return System.Address;
--//         pragma Interface (Assembly, Get_A1);
--//         pragma Import_Function (Internal        => Get_A1,
--//                                 External        => "__Xlbmt_Get_A1",
--//                                 Parameter_Types => null,
--//                                 Result_Type     => System.Address);
--//
--//         procedure Call (Pvv : Pv; Data1 : in Parm1; Data2 : in Parm2) is
--//             Sp1, Sp2 : Integer;
--//
--//             procedure Call (Data1 : in Parm1;
--//                             Data2 : in Parm2) is
--//             begin
--//                 Sp2 := Get_A7;
--//             end Call;
--//
--//         begin
--//             if Pvv = None or else Pvv.Key /= Magic_Value or else
--//                Pvv.Data.Key /= Magic_Value or else
--//                Pvv.Data.Sig /= Signature then
--//                 raise X_Bad_Procedure_Variable;
--//             end if;
--//
--//             Sp1 := Get_A7;
--//             Call (Data1, Data2);
--//             Invoke_Subprog (Pvv.Data.Subprog, Pvv.Data.A1, Sp1 - Sp2);
--//         end Call;
--//
--//         function Value return Pv is
--//             Pvr : X_Procedure_Variable;
--//         begin
--//             Pvr := New_Procedure_Data (Signature, Called'Address, Get_A1);
--//             return Pv (Pvr);
--//         exception
--//             when others =>
--//                 Heap_Free_X_Procedure_Data (Pvr.Data);
--//                 Heap_Free_X_Procedure_Variable (Pvr);
--//                 raise;
--//         end Value;
--//
--//         procedure Free (Pvv : in out Pv) is
--//         begin
--//             if Pvv = None or else Pvv.Key /= Magic_Value or else
--//                Pvv.Data.Key /= Magic_Value or else
--//                Pvv.Data.Sig /= Signature then
--//                 raise X_Bad_Procedure_Variable;
--//             end if;
--//             Free_X_Procedure_Variable (X_Procedure_Variable (Pvv));
--//         end Free;
--//
--//         function To_Pv (Pvv : X_Procedure_Variable) return Pv is
--//         begin
--//             if Pvv = None_X_Procedure_Variable then
--//                 return None;
--//             elsif Pvv.Key /= Magic_Value or else
--//                   Pvv.Data.Key /= Magic_Value or else
--//                   Pvv.Data.Sig /= Signature then
--//                 raise X_Bad_Procedure_Variable;
--//             end if;
--//             return Pv (Pvv);
--//         end To_Pv;
--//
--//         function From_Pv (Pvv : Pv) return X_Procedure_Variable is
--//         begin
--//             if Pvv = None then
--//                 return None_X_Procedure_Variable;
--//             elsif Pvv.Key /= Magic_Value or else
--//                   Pvv.Data.Key /= Magic_Value or else
--//                   Pvv.Data.Sig /= Signature then
--//                 raise X_Bad_Procedure_Variable;
--//             end if;
--//             return X_Procedure_Variable (Pvv);
--//         end From_Pv;
--//
--//     end Proc_In_In;
--//
--/ end if; -- Cdf_Hpux

--\x0c
    ------------------------------------------------------------------------------
-- Procedure with 2 In parameters.
------------------------------------------------------------------------------
--/ if TeleGen2 and then Unix then
--//
--// package body Proc_In_In is
--//
--//    Signature : constant X_Procedure_Signature :=
--//       X_Unique_Procedure_Signature;
--//
--//    procedure Invoke_Subprog (Subprog : System.Address;
--//                              A4      : System.Address;
--//                              Arg1    : System.Address);
--//    pragma Interface (Assembly, Invoke_Subprog);
--//    pragma Linkname (Invoke_Subprog, "_Xlbmt_In_Invoke_Procedure");
--//
--//    function Get_A4 return System.Address;
--//    pragma Interface (Assembly, Get_A4);
--//    pragma Linkname (Get_A4, "_Xlbmt_Get_A4");
--//
--//    procedure Call (Pvv   :    Pv;
--//                    Data1 : in Parm1;
--//                    Data2 : in Parm2) is
--//    begin
--//        if Pvv = None or else
--//           Pvv.Key /= Magic_Value or else
--//           Pvv.Data.Key /= Magic_Value or else
--//           Pvv.Data.Sig /= Signature then
--//            raise X_Bad_Procedure_Variable;
--//        end if;
--//        Invoke_Subprog (Pvv.Data.Subprog, Pvv.Data.A4, Pvv'Address);
--//    end Call;
--//
--//    function Value return Pv is
--//        Pvr : X_Procedure_Variable;
--//    begin
--//        Pvr := New_Procedure_Data (Signature, Called'Address, Get_A4 );
--//        return Pv (Pvr);
--//    exception
--//        when others =>
--//            Heap_Free_X_Procedure_Data (Pvr.Data);
--//            Heap_Free_X_Procedure_Variable (Pvr);
--//            raise;
--//    end Value;
--//
--//    procedure Free (Pvv : in out Pv) is
--//    begin
--//        if Pvv = None or else
--//           Pvv.Key /= Magic_Value or else
--//           Pvv.Data.Key /= Magic_Value or else
--//           Pvv.Data.Sig /= Signature then
--//            raise X_Bad_Procedure_Variable;
--//        end if;
--//        Free_X_Procedure_Variable (X_Procedure_Variable (Pvv));
--//    end Free;
--//
--//    function To_Pv (Pvv : X_Procedure_Variable) return Pv is
--//    begin
--//        if Pvv = None_X_Procedure_Variable then
--//            return None;
--//        elsif Pvv.Key /= Magic_Value or else
--//              Pvv.Data.Key /= Magic_Value or else
--//              Pvv.Data.Sig /= Signature then
--//            raise X_Bad_Procedure_Variable;
--//        end if;
--//        return Pv (Pvv);
--//    end To_Pv;
--//
--//    function From_Pv (Pvv : Pv) return X_Procedure_Variable is
--//    begin
--//        if Pvv = None then
--//            return None_X_Procedure_Variable;
--//        elsif Pvv.Key /= Magic_Value or else
--//              Pvv.Data.Key /= Magic_Value or else
--//              Pvv.Data.Sig /= Signature then
--//            raise X_Bad_Procedure_Variable;
--//        end if;
--//        return X_Procedure_Variable (Pvv);
--//    end From_Pv;
--//
--// end Proc_In_In;
--//
--/ end if; -- TeleGen2 and then Unix

--\x0c
    ------------------------------------------------------------------------------
-- Procedure with 3 In parameters.
------------------------------------------------------------------------------
--/ if R1000 then

    package body Proc_In_In_In is

        Signature  : constant X_Procedure_Signature :=  
           X_Unique_Procedure_Signature;  
        Signature1 : constant Long_Integer          :=  
           Long_Integer (Signature.First) * 2 ** 31 +  
              Long_Integer (Signature.Second);

        procedure Call (Pvv   :    Pv;  
                        Data1 : in Parm1;  
                        Data2 : in Parm2;  
                        Data3 : in Parm3) is  
            Pvvv   : Subprogram_Implementation.Subprogram_Type;  
            Offset : constant Si.Offset_Vector :=  
               (Pvvv'Offset, Data1'Offset, Data2'Offset, Data3'Offset);  
        begin  
            if Pvv = None or else  
               Pvv.Key /= Magic_Value or else  
               Pvv.Data.Key /= Magic_Value or else  
               Pvv.Data.Sig /= Signature then  
                raise X_Bad_Procedure_Variable;  
            end if;  
            Pvvv := Pvv.Data.Subprog;  
            Si.Invoke (Modes_Proc_In_In_In, Offset);  
        end Call;

        function Value return Pv is  
            Pdr : X_Procedure_Data;  
            Pvr : X_Procedure_Variable;  
        begin  
            Pdr := new X_Procedure_Data_Rec'  
                          (Key     => Magic_Value,  
                           Sig     => Signature,  
                           Subprog => Si.Get (Modes_Proc_In_In_In, Signature1));  
            Pvr := new X_Procedure_Variable_Rec'  
                          (Key  => Magic_Value,  
                           Data => Pdr);  
            return Pv (Pvr);  
        exception  
            when others =>  
                Heap_Free_X_Procedure_Data (Pdr);  
                Heap_Free_X_Procedure_Variable (Pvr);  
                raise;  
        end Value;

        procedure Free (Pvv : in out Pv) is  
        begin  
            if Pvv = None or else  
               Pvv.Key /= Magic_Value or else  
               Pvv.Data.Key /= Magic_Value or else  
               Pvv.Data.Sig /= Signature then  
                raise X_Bad_Procedure_Variable;  
            end if;  
            Free_X_Procedure_Variable (X_Procedure_Variable (Pvv));  
        end Free;

        function To_Pv (Pvv : X_Procedure_Variable) return Pv is  
        begin  
            if Pvv = None_X_Procedure_Variable then  
                return None;  
            elsif Pvv.Key /= Magic_Value or else  
                  Pvv.Data.Key /= Magic_Value or else  
                  Pvv.Data.Sig /= Signature then  
                raise X_Bad_Procedure_Variable;  
            end if;  
            return Pv (Pvv);  
        end To_Pv;

        function From_Pv (Pvv : Pv) return X_Procedure_Variable is  
        begin  
            if Pvv = None then  
                return None_X_Procedure_Variable;  
            elsif Pvv.Key /= Magic_Value or else  
                  Pvv.Data.Key /= Magic_Value or else  
                  Pvv.Data.Sig /= Signature then  
                raise X_Bad_Procedure_Variable;  
            end if;  
            return X_Procedure_Variable (Pvv);  
        end From_Pv;

    end Proc_In_In_In;

--/ end if; -- R1000

--\x0c
    ------------------------------------------------------------------------------
-- Procedure with 3 In parameters.
------------------------------------------------------------------------------
--/ if Cdf_Hpux then
--//
--//     package body Proc_In_In_In is
--//
--//         Signature : constant X_Procedure_Signature :=
--//            X_Unique_Procedure_Signature;
--//
--//         procedure Invoke_Subprog (Subprog : System.Address;
--//                                   A1      : System.Address;
--//                                   Offset  : Integer);
--//         pragma Interface (Assembly, Invoke_Subprog);
--//         pragma Import_Procedure (Internal => Invoke_Subprog,
--//                                  External => "__Xlbmt_In_Invoke_Procedure",
--//                                  Parameter_Types => (System.Address,
--//                                                      System.Address, Integer),
--//                                  Mechanism => (Value, Value, Value));
--//
--//         function Get_A7 return Integer;
--//         pragma Interface (Assembly, Get_A7);
--//         pragma Import_Function (Internal        => Get_A7,
--//                                 External        => "__Xlbmt_Get_A7",
--//                                 Parameter_Types => null,
--//                                 Result_Type     => Integer);
--//
--//         function Get_A1 return System.Address;
--//         pragma Interface (Assembly, Get_A1);
--//         pragma Import_Function (Internal        => Get_A1,
--//                                 External        => "__Xlbmt_Get_A1",
--//                                 Parameter_Types => null,
--//                                 Result_Type     => System.Address);
--//
--//         procedure Call (Pvv   :    Pv;
--//                         Data1 : in Parm1;
--//                         Data2 : in Parm2;
--//                         Data3 : in Parm3) is
--//             Sp1, Sp2 : Integer;
--//
--//             procedure Call (Data1 : in Parm1;
--//                             Data2 : in Parm2;
--//                             Data3 : in Parm3) is
--//             begin
--//                 Sp2 := Get_A7;
--//             end Call;
--//
--//         begin
--//             if Pvv = None or else Pvv.Key /= Magic_Value or else
--//                Pvv.Data.Key /= Magic_Value or else
--//                Pvv.Data.Sig /= Signature then
--//                 raise X_Bad_Procedure_Variable;
--//             end if;
--//
--//             Sp1 := Get_A7;
--//             Call (Data1, Data2, Data3);
--//             Invoke_Subprog (Pvv.Data.Subprog, Pvv.Data.A1, Sp1 - Sp2);
--//         end Call;
--//
--//         function Value return Pv is
--//             Pvr : X_Procedure_Variable;
--//         begin
--//             Pvr := New_Procedure_Data (Signature, Called'Address, Get_A1);
--//             return Pv (Pvr);
--//         exception
--//             when others =>
--//                 Heap_Free_X_Procedure_Data (Pvr.Data);
--//                 Heap_Free_X_Procedure_Variable (Pvr);
--//                 raise;
--//         end Value;
--//
--//         procedure Free (Pvv : in out Pv) is
--//         begin
--//             if Pvv = None or else Pvv.Key /= Magic_Value or else
--//                Pvv.Data.Key /= Magic_Value or else
--//                Pvv.Data.Sig /= Signature then
--//                 raise X_Bad_Procedure_Variable;
--//             end if;
--//             Free_X_Procedure_Variable (X_Procedure_Variable (Pvv));
--//         end Free;
--//
--//         function To_Pv (Pvv : X_Procedure_Variable) return Pv is
--//         begin
--//             if Pvv = None_X_Procedure_Variable then
--//                 return None;
--//             elsif Pvv.Key /= Magic_Value or else
--//                   Pvv.Data.Key /= Magic_Value or else
--//                   Pvv.Data.Sig /= Signature then
--//                 raise X_Bad_Procedure_Variable;
--//             end if;
--//             return Pv (Pvv);
--//         end To_Pv;
--//
--//         function From_Pv (Pvv : Pv) return X_Procedure_Variable is
--//         begin
--//             if Pvv = None then
--//                 return None_X_Procedure_Variable;
--//             elsif Pvv.Key /= Magic_Value or else
--//                   Pvv.Data.Key /= Magic_Value or else
--//                   Pvv.Data.Sig /= Signature then
--//                 raise X_Bad_Procedure_Variable;
--//             end if;
--//             return X_Procedure_Variable (Pvv);
--//         end From_Pv;
--//
--//     end Proc_In_In_In;
--//
--/ end if; -- Cdf_Hpux

--\x0c
    ------------------------------------------------------------------------------
-- Procedure with 3 In parameters.
------------------------------------------------------------------------------
--/ if TeleGen2 and then Unix then
--//
--// package body Proc_In_In_In is
--//
--//    Signature : constant X_Procedure_Signature :=
--//       X_Unique_Procedure_Signature;
--//
--//    procedure Invoke_Subprog (Subprog : System.Address;
--//                              A4      : System.Address;
--//                              Arg1    : System.Address);
--//    pragma Interface (Assembly, Invoke_Subprog);
--//    pragma Linkname (Invoke_Subprog, "_Xlbmt_In_Invoke_Procedure");
--//
--//    function Get_A4 return System.Address;
--//    pragma Interface (Assembly, Get_A4);
--//    pragma Linkname (Get_A4, "_Xlbmt_Get_A4");
--//
--//    procedure Call (Pvv   :    Pv;
--//                    Data1 : in Parm1;
--//                    Data2 : in Parm2;
--//                    Data3 : in Parm3) is
--//    begin
--//        if Pvv = None or else
--//           Pvv.Key /= Magic_Value or else
--//           Pvv.Data.Key /= Magic_Value or else
--//           Pvv.Data.Sig /= Signature then
--//            raise X_Bad_Procedure_Variable;
--//        end if;
--//        Invoke_Subprog (Pvv.Data.Subprog, Pvv.Data.A4, Pvv'Address);
--//    end Call;
--//
--//    function Value return Pv is
--//        Pvr : X_Procedure_Variable;
--//    begin
--//        Pvr := New_Procedure_Data (Signature, Called'Address, Get_A4 );
--//        return Pv (Pvr);
--//    exception
--//        when others =>
--//            Heap_Free_X_Procedure_Data (Pvr.Data);
--//            Heap_Free_X_Procedure_Variable (Pvr);
--//            raise;
--//    end Value;
--//
--//    procedure Free (Pvv : in out Pv) is
--//    begin
--//        if Pvv = None or else
--//           Pvv.Key /= Magic_Value or else
--//           Pvv.Data.Key /= Magic_Value or else
--//           Pvv.Data.Sig /= Signature then
--//            raise X_Bad_Procedure_Variable;
--//        end if;
--//        Free_X_Procedure_Variable (X_Procedure_Variable (Pvv));
--//    end Free;
--//
--//    function To_Pv (Pvv : X_Procedure_Variable) return Pv is
--//    begin
--//        if Pvv = None_X_Procedure_Variable then
--//            return None;
--//        elsif Pvv.Key /= Magic_Value or else
--//              Pvv.Data.Key /= Magic_Value or else
--//              Pvv.Data.Sig /= Signature then
--//            raise X_Bad_Procedure_Variable;
--//        end if;
--//        return Pv (Pvv);
--//    end To_Pv;
--//
--//    function From_Pv (Pvv : Pv) return X_Procedure_Variable is
--//    begin
--//        if Pvv = None then
--//            return None_X_Procedure_Variable;
--//        elsif Pvv.Key /= Magic_Value or else
--//              Pvv.Data.Key /= Magic_Value or else
--//              Pvv.Data.Sig /= Signature then
--//            raise X_Bad_Procedure_Variable;
--//        end if;
--//        return X_Procedure_Variable (Pvv);
--//    end From_Pv;
--//
--// end Proc_In_In_In;
--//
--/ end if; -- TeleGen2 and then Unix

--\x0c
    ------------------------------------------------------------------------------
-- Procedure with 4 In parameters.
------------------------------------------------------------------------------
--/ if R1000 then

    package body Proc_In_In_In_In is

        Signature  : constant X_Procedure_Signature :=  
           X_Unique_Procedure_Signature;  
        Signature1 : constant Long_Integer          :=  
           Long_Integer (Signature.First) * 2 ** 31 +  
              Long_Integer (Signature.Second);

        procedure Call (Pvv   :    Pv;  
                        Data1 : in Parm1;  
                        Data2 : in Parm2;  
                        Data3 : in Parm3;  
                        Data4 : in Parm4) is  
            Pvvv   : Subprogram_Implementation.Subprogram_Type;  
            Offset : constant Si.Offset_Vector :=  
               (Pvvv'Offset, Data1'Offset, Data2'Offset,  
                Data3'Offset, Data4'Offset);  
        begin  
            if Pvv = None or else  
               Pvv.Key /= Magic_Value or else  
               Pvv.Data.Key /= Magic_Value or else  
               Pvv.Data.Sig /= Signature then  
                raise X_Bad_Procedure_Variable;  
            end if;  
            Pvvv := Pvv.Data.Subprog;  
            Si.Invoke (Modes_Proc_In_In_In_In, Offset);  
        end Call;

        function Value return Pv is  
            Pdr : X_Procedure_Data;  
            Pvr : X_Procedure_Variable;  
        begin  
            Pdr := new X_Procedure_Data_Rec'  
                          (Key     => Magic_Value,  
                           Sig     => Signature,  
                           Subprog => Si.Get  
                                         (Modes_Proc_In_In_In_In, Signature1));  
            Pvr := new X_Procedure_Variable_Rec'  
                          (Key  => Magic_Value,  
                           Data => Pdr);  
            return Pv (Pvr);  
        exception  
            when others =>  
                Heap_Free_X_Procedure_Data (Pdr);  
                Heap_Free_X_Procedure_Variable (Pvr);  
                raise;  
        end Value;

        procedure Free (Pvv : in out Pv) is  
        begin  
            if Pvv = None or else  
               Pvv.Key /= Magic_Value or else  
               Pvv.Data.Key /= Magic_Value or else  
               Pvv.Data.Sig /= Signature then  
                raise X_Bad_Procedure_Variable;  
            end if;  
            Free_X_Procedure_Variable (X_Procedure_Variable (Pvv));  
        end Free;

        function To_Pv (Pvv : X_Procedure_Variable) return Pv is  
        begin  
            if Pvv = None_X_Procedure_Variable then  
                return None;  
            elsif Pvv.Key /= Magic_Value or else  
                  Pvv.Data.Key /= Magic_Value or else  
                  Pvv.Data.Sig /= Signature then  
                raise X_Bad_Procedure_Variable;  
            end if;  
            return Pv (Pvv);  
        end To_Pv;

        function From_Pv (Pvv : Pv) return X_Procedure_Variable is  
        begin  
            if Pvv = None then  
                return None_X_Procedure_Variable;  
            elsif Pvv.Key /= Magic_Value or else  
                  Pvv.Data.Key /= Magic_Value or else  
                  Pvv.Data.Sig /= Signature then  
                raise X_Bad_Procedure_Variable;  
            end if;  
            return X_Procedure_Variable (Pvv);  
        end From_Pv;

    end Proc_In_In_In_In;

--/ end if; -- R1000

--\x0c
    ------------------------------------------------------------------------------
-- Procedure with 4 In parameters.-----------------------------------------------------------------------------
--/ if Cdf_Hpux then
--//
--//     package body Proc_In_In_In_In is
--//
--//         Signature : constant X_Procedure_Signature :=
--//            X_Unique_Procedure_Signature;
--//
--//         procedure Invoke_Subprog (Subprog : System.Address;
--//                                   A1      : System.Address;
--//                                   Offset  : Integer);
--//         pragma Interface (Assembly, Invoke_Subprog);
--//         pragma Import_Procedure (Internal => Invoke_Subprog,
--//                                  External => "__Xlbmt_In_Invoke_Procedure",
--//                                  Parameter_Types => (System.Address,
--//                                                      System.Address, Integer),
--//                                  Mechanism => (Value, Value, Value));
--//
--//         function Get_A7 return Integer;
--//         pragma Interface (Assembly, Get_A7);
--//         pragma Import_Function (Internal        => Get_A7,
--//                                 External        => "__Xlbmt_Get_A7",
--//                                 Parameter_Types => null,
--//                                 Result_Type     => Integer);
--//
--//         function Get_A1 return System.Address;
--//         pragma Interface (Assembly, Get_A1);
--//         pragma Import_Function (Internal        => Get_A1,
--//                                 External        => "__Xlbmt_Get_A1",
--//                                 Parameter_Types => null,
--//                                 Result_Type     => System.Address);
--//
--//         procedure Call (Pvv   :    Pv;
--//                         Data1 : in Parm1;
--//                         Data2 : in Parm2;
--//                         Data3 : in Parm3;
--//                         Data4 : in Parm4) is
--//             Sp1, Sp2 : Integer;
--//
--//             procedure Call (Data1 : in Parm1;
--//                             Data2 : in Parm2;
--//                             Data3 : in Parm3;
--//                             Data4 : in Parm4) is
--//             begin
--//                 Sp2 := Get_A7;
--//             end Call;
--//
--//         begin
--//             if Pvv = None or else Pvv.Key /= Magic_Value or else
--//                Pvv.Data.Key /= Magic_Value or else
--//                Pvv.Data.Sig /= Signature then
--//                 raise X_Bad_Procedure_Variable;
--//             end if;
--//
--//             Sp1 := Get_A7;
--//             Call (Data1, Data2, Data3, Data4);
--//             Invoke_Subprog (Pvv.Data.Subprog, Pvv.Data.A1, Sp1 - Sp2);
--//         end Call;
--//
--//         function Value return Pv is
--//             Pvr : X_Procedure_Variable;
--//         begin
--//             Pvr := New_Procedure_Data (Signature, Called'Address, Get_A1);
--//             return Pv (Pvr);
--//         exception
--//             when others =>
--//                 Heap_Free_X_Procedure_Data (Pvr.Data);
--//                 Heap_Free_X_Procedure_Variable (Pvr);
--//                 raise;
--//         end Value;
--//
--//         procedure Free (Pvv : in out Pv) is
--//         begin
--//             if Pvv = None or else Pvv.Key /= Magic_Value or else
--//                Pvv.Data.Key /= Magic_Value or else
--//                Pvv.Data.Sig /= Signature then
--//                 raise X_Bad_Procedure_Variable;
--//             end if;
--//             Free_X_Procedure_Variable (X_Procedure_Variable (Pvv));
--//         end Free;
--//
--//         function To_Pv (Pvv : X_Procedure_Variable) return Pv is
--//         begin
--//             if Pvv = None_X_Procedure_Variable then
--//                 return None;
--//             elsif Pvv.Key /= Magic_Value or else
--//                   Pvv.Data.Key /= Magic_Value or else
--//                   Pvv.Data.Sig /= Signature then
--//                 raise X_Bad_Procedure_Variable;
--//             end if;
--//             return Pv (Pvv);
--//         end To_Pv;
--//
--//         function From_Pv (Pvv : Pv) return X_Procedure_Variable is
--//         begin
--//             if Pvv = None then
--//                 return None_X_Procedure_Variable;
--//             elsif Pvv.Key /= Magic_Value or else
--//                   Pvv.Data.Key /= Magic_Value or else
--//                   Pvv.Data.Sig /= Signature then
--//                 raise X_Bad_Procedure_Variable;
--//             end if;
--//             return X_Procedure_Variable (Pvv);
--//         end From_Pv;
--//
--//     end Proc_In_In_In_In;
--//
--/ end if; -- Cdf_Hpux

--\x0c
    ------------------------------------------------------------------------------
-- Procedure with 4 In parameters.
------------------------------------------------------------------------------
--/ if TeleGen2 and then Unix then
--//
--// package body Proc_In_In_In_In is
--//
--//    Signature : constant X_Procedure_Signature :=
--//       X_Unique_Procedure_Signature;
--//
--//    procedure Invoke_Subprog (Subprog : System.Address;
--//                              A4      : System.Address;
--//                              Arg1    : System.Address);
--//    pragma Interface (Assembly, Invoke_Subprog);
--//    pragma Linkname (Invoke_Subprog, "_Xlbmt_In_Invoke_Procedure");
--//
--//    function Get_A4 return System.Address;
--//    pragma Interface (Assembly, Get_A4);
--//    pragma Linkname (Get_A4, "_Xlbmt_Get_A4");
--//
--//    procedure Call (Pvv   :    Pv;
--//                    Data1 : in Parm1;
--//                    Data2 : in Parm2;
--//                    Data3 : in Parm3;
--//                    Data4 : in Parm4) is
--//    begin
--//        if Pvv = None or else
--//           Pvv.Key /= Magic_Value or else
--//           Pvv.Data.Key /= Magic_Value or else
--//           Pvv.Data.Sig /= Signature then
--//            raise X_Bad_Procedure_Variable;
--//        end if;
--//        Invoke_Subprog (Pvv.Data.Subprog, Pvv.Data.A4, Pvv'Address);
--//    end Call;
--//
--//    function Value return Pv is
--//        Pvr : X_Procedure_Variable;
--//    begin
--//        Pvr := New_Procedure_Data (Signature, Called'Address, Get_A4 );
--//        return Pv (Pvr);
--//    exception
--//        when others =>
--//            Heap_Free_X_Procedure_Data (Pvr.Data);
--//            Heap_Free_X_Procedure_Variable (Pvr);
--//            raise;
--//    end Value;
--//
--//    procedure Free (Pvv : in out Pv) is
--//    begin
--//        if Pvv = None or else
--//           Pvv.Key /= Magic_Value or else
--//           Pvv.Data.Key /= Magic_Value or else
--//           Pvv.Data.Sig /= Signature then
--//            raise X_Bad_Procedure_Variable;
--//        end if;
--//        Free_X_Procedure_Variable (X_Procedure_Variable (Pvv));
--//    end Free;
--//
--//    function To_Pv (Pvv : X_Procedure_Variable) return Pv is
--//    begin
--//        if Pvv = None_X_Procedure_Variable then
--//            return None;
--//        elsif Pvv.Key /= Magic_Value or else
--//              Pvv.Data.Key /= Magic_Value or else
--//              Pvv.Data.Sig /= Signature then
--//            raise X_Bad_Procedure_Variable;
--//        end if;
--//        return Pv (Pvv);
--//    end To_Pv;
--//
--//    function From_Pv (Pvv : Pv) return X_Procedure_Variable is
--//    begin
--//        if Pvv = None then
--//            return None_X_Procedure_Variable;
--//        elsif Pvv.Key /= Magic_Value or else
--//              Pvv.Data.Key /= Magic_Value or else
--//              Pvv.Data.Sig /= Signature then
--//            raise X_Bad_Procedure_Variable;
--//        end if;
--//        return X_Procedure_Variable (Pvv);
--//    end From_Pv;
--//
--// end Proc_In_In_In_In;
--//
--/ end if; -- TeleGen2 and then Unix

--\x0c
    ------------------------------------------------------------------------------
-- Procedure with 10 In parameters.
------------------------------------------------------------------------------
--/ if R1000 then

    package body Proc_In10 is

        Signature  : constant X_Procedure_Signature :=  
           X_Unique_Procedure_Signature;  
        Signature1 : constant Long_Integer          :=  
           Long_Integer (Signature.First) * 2 ** 31 +  
              Long_Integer (Signature.Second);

        procedure Call (Pvv    :    Pv;  
                        Data1  : in Parm1;  
                        Data2  : in Parm2;  
                        Data3  : in Parm3;  
                        Data4  : in Parm4;  
                        Data5  : in Parm5;  
                        Data6  : in Parm6;  
                        Data7  : in Parm7;  
                        Data8  : in Parm8;  
                        Data9  : in Parm9;  
                        Data10 : in Parm10) is  
            Pvvv   : Subprogram_Implementation.Subprogram_Type;  
            Offset : constant Si.Offset_Vector :=  
               (Pvvv'Offset, Data1'Offset, Data2'Offset, Data3'Offset,  
                Data4'Offset, Data5'Offset, Data6'Offset, Data7'Offset,  
                Data8'Offset, Data9'Offset, Data10'Offset);  
        begin  
            if Pvv = None or else  
               Pvv.Key /= Magic_Value or else  
               Pvv.Data.Key /= Magic_Value or else  
               Pvv.Data.Sig /= Signature then  
                raise X_Bad_Procedure_Variable;  
            end if;  
            Pvvv := Pvv.Data.Subprog;  
            Si.Invoke (Modes_Proc_In10, Offset);  
        end Call;

        function Value return Pv is  
            Pdr : X_Procedure_Data;  
            Pvr : X_Procedure_Variable;  
        begin  
            Pdr := new X_Procedure_Data_Rec'  
                          (Key     => Magic_Value,  
                           Sig     => Signature,  
                           Subprog => Si.Get (Modes_Proc_In10, Signature1));  
            Pvr := new X_Procedure_Variable_Rec'  
                          (Key  => Magic_Value,  
                           Data => Pdr);  
            return Pv (Pvr);  
        exception  
            when others =>  
                Heap_Free_X_Procedure_Data (Pdr);  
                Heap_Free_X_Procedure_Variable (Pvr);  
                raise;  
        end Value;

        procedure Free (Pvv : in out Pv) is  
        begin  
            if Pvv = None or else  
               Pvv.Key /= Magic_Value or else  
               Pvv.Data.Key /= Magic_Value or else  
               Pvv.Data.Sig /= Signature then  
                raise X_Bad_Procedure_Variable;  
            end if;  
            Free_X_Procedure_Variable (X_Procedure_Variable (Pvv));  
        end Free;

        function To_Pv (Pvv : X_Procedure_Variable) return Pv is  
        begin  
            if Pvv = None_X_Procedure_Variable then  
                return None;  
            elsif Pvv.Key /= Magic_Value or else  
                  Pvv.Data.Key /= Magic_Value or else  
                  Pvv.Data.Sig /= Signature then  
                raise X_Bad_Procedure_Variable;  
            end if;  
            return Pv (Pvv);  
        end To_Pv;

        function From_Pv (Pvv : Pv) return X_Procedure_Variable is  
        begin  
            if Pvv = None then  
                return None_X_Procedure_Variable;  
            elsif Pvv.Key /= Magic_Value or else  
                  Pvv.Data.Key /= Magic_Value or else  
                  Pvv.Data.Sig /= Signature then  
                raise X_Bad_Procedure_Variable;  
            end if;  
            return X_Procedure_Variable (Pvv);  
        end From_Pv;

    end Proc_In10;

--/ end if; -- R1000

--\x0c
    ------------------------------------------------------------------------------
-- Procedure with 10 In parameters.
------------------------------------------------------------------------------
--/ if Cdf_Hpux then
--//
--//     package body Proc_In10 is
--//
--//         Signature : constant X_Procedure_Signature :=
--//            X_Unique_Procedure_Signature;
--//
--//         procedure Invoke_Subprog (Subprog : System.Address;
--//                                   A1      : System.Address;
--//                                   Offset  : Integer);
--//         pragma Interface (Assembly, Invoke_Subprog);
--//         pragma Import_Procedure (Internal => Invoke_Subprog,
--//                                  External => "__Xlbmt_In_Invoke_Procedure",
--//                                  Parameter_Types => (System.Address,
--//                                                      System.Address, Integer),
--//                                  Mechanism => (Value, Value, Value));
--//
--//         function Get_A7 return Integer;
--//         pragma Interface (Assembly, Get_A7);
--//         pragma Import_Function (Internal        => Get_A7,
--//                                 External        => "__Xlbmt_Get_A7",
--//                                 Parameter_Types => null,
--//                                 Result_Type     => Integer);
--//
--//         function Get_A1 return System.Address;
--//         pragma Interface (Assembly, Get_A1);
--//         pragma Import_Function (Internal        => Get_A1,
--//                                 External        => "__Xlbmt_Get_A1",
--//                                 Parameter_Types => null,
--//                                 Result_Type     => System.Address);
--//
--//         procedure Call (Pvv    :    Pv;
--//                         Data1  : in Parm1;
--//                         Data2  : in Parm2;
--//                         Data3  : in Parm3;
--//                         Data4  : in Parm4;
--//                         Data5  : in Parm5;
--//                         Data6  : in Parm6;
--//                         Data7  : in Parm7;
--//                         Data8  : in Parm8;
--//                         Data9  : in Parm9;
--//                         Data10 : in Parm10) is
--//             Sp1, Sp2 : Integer;
--//
--//             procedure Call (Data1  : in Parm1;
--//                             Data2  : in Parm2;
--//                             Data3  : in Parm3;
--//                             Data4  : in Parm4;
--//                             Data5  : in Parm5;
--//                             Data6  : in Parm6;
--//                             Data7  : in Parm7;
--//                             Data8  : in Parm8;
--//                             Data9  : in Parm9;
--//                             Data10 : in Parm10) is
--//             begin
--//                 Sp2 := Get_A7;
--//             end Call;
--//
--//         begin
--//             if Pvv = None or else Pvv.Key /= Magic_Value or else
--//                Pvv.Data.Key /= Magic_Value or else
--//                Pvv.Data.Sig /= Signature then
--//                 raise X_Bad_Procedure_Variable;
--//             end if;
--//
--//             Sp1 := Get_A7;
--//             Call (Data1, Data2, Data3, Data4, Data5,
--//                   Data6, Data7, Data8, Data9, Data10);
--//             Invoke_Subprog (Pvv.Data.Subprog, Pvv.Data.A1, Sp1 - Sp2);
--//         end Call;
--//
--//         function Value return Pv is
--//             Pvr : X_Procedure_Variable;
--//         begin
--//             Pvr := New_Procedure_Data (Signature, Called'Address, Get_A1);
--//             return Pv (Pvr);
--//         exception
--//             when others =>
--//                 Heap_Free_X_Procedure_Data (Pvr.Data);
--//                 Heap_Free_X_Procedure_Variable (Pvr);
--//                 raise;
--//         end Value;
--//
--//         procedure Free (Pvv : in out Pv) is
--//         begin
--//             if Pvv = None or else Pvv.Key /= Magic_Value or else
--//                Pvv.Data.Key /= Magic_Value or else
--//                Pvv.Data.Sig /= Signature then
--//                 raise X_Bad_Procedure_Variable;
--//             end if;
--//             Free_X_Procedure_Variable (X_Procedure_Variable (Pvv));
--//         end Free;
--//
--//         function To_Pv (Pvv : X_Procedure_Variable) return Pv is
--//         begin
--//             if Pvv = None_X_Procedure_Variable then
--//                 return None;
--//             elsif Pvv.Key /= Magic_Value or else
--//                   Pvv.Data.Key /= Magic_Value or else
--//                   Pvv.Data.Sig /= Signature then
--//                 raise X_Bad_Procedure_Variable;
--//             end if;
--//             return Pv (Pvv);
--//         end To_Pv;
--//
--//         function From_Pv (Pvv : Pv) return X_Procedure_Variable is
--//         begin
--//             if Pvv = None then
--//                 return None_X_Procedure_Variable;
--//             elsif Pvv.Key /= Magic_Value or else
--//                   Pvv.Data.Key /= Magic_Value or else
--//                   Pvv.Data.Sig /= Signature then
--//                 raise X_Bad_Procedure_Variable;
--//             end if;
--//             return X_Procedure_Variable (Pvv);
--//         end From_Pv;
--//
--//     end Proc_In10;
--//
--/ end if; -- Cdf_Hpux

--\x0c
    ------------------------------------------------------------------------------
-- Procedure with 10 In parameters.
------------------------------------------------------------------------------
--/ if TeleGen2 and then Unix then
--//
--// package body Proc_In10 is
--//
--//    Signature : constant X_Procedure_Signature :=
--//       X_Unique_Procedure_Signature;
--//
--//    procedure Invoke_Subprog (Subprog : System.Address;
--//                              A4      : System.Address;
--//                              Arg1    : System.Address);
--//    pragma Interface (Assembly, Invoke_Subprog);
--//    pragma Linkname (Invoke_Subprog, "_Xlbmt_In_Invoke_Procedure");
--//
--//    function Get_A4 return System.Address;
--//    pragma Interface (Assembly, Get_A4);
--//    pragma Linkname (Get_A4, "_Xlbmt_Get_A4");
--//
--//    procedure Call (Pvv    :    Pv;
--//                    Data1  : in Parm1;
--//                    Data2  : in Parm2;
--//                    Data3  : in Parm3;
--//                    Data4  : in Parm4;
--//                    Data5  : in Parm5;
--//                    Data6  : in Parm6;
--//                    Data7  : in Parm7;
--//                    Data8  : in Parm8;
--//                    Data9  : in Parm9;
--//                    Data10 : in Parm10) is
--//    begin
--//        if Pvv = None or else
--//           Pvv.Key /= Magic_Value or else
--//           Pvv.Data.Key /= Magic_Value or else
--//           Pvv.Data.Sig /= Signature then
--//            raise X_Bad_Procedure_Variable;
--//        end if;
--//        Invoke_Subprog (Pvv.Data.Subprog, Pvv.Data.A4, Pvv'Address);
--//    end Call;
--//
--//    function Value return Pv is
--//        Pvr : X_Procedure_Variable;
--//    begin
--//        Pvr := New_Procedure_Data (Signature, Called'Address, Get_A4 );
--//        return Pv (Pvr);
--//    exception
--//        when others =>
--//            Heap_Free_X_Procedure_Data (Pvr.Data);
--//            Heap_Free_X_Procedure_Variable (Pvr);
--//            raise;
--//    end Value;
--//
--//    procedure Free (Pvv : in out Pv) is
--//    begin
--//        if Pvv = None or else
--//           Pvv.Key /= Magic_Value or else
--//           Pvv.Data.Key /= Magic_Value or else
--//           Pvv.Data.Sig /= Signature then
--//            raise X_Bad_Procedure_Variable;
--//        end if;
--//        Free_X_Procedure_Variable (X_Procedure_Variable (Pvv));
--//    end Free;
--//
--//    function To_Pv (Pvv : X_Procedure_Variable) return Pv is
--//    begin
--//        if Pvv = None_X_Procedure_Variable then
--//            return None;
--//        elsif Pvv.Key /= Magic_Value or else
--//              Pvv.Data.Key /= Magic_Value or else
--//              Pvv.Data.Sig /= Signature then
--//            raise X_Bad_Procedure_Variable;
--//        end if;
--//        return Pv (Pvv);
--//    end To_Pv;
--//
--//    function From_Pv (Pvv : Pv) return X_Procedure_Variable is
--//    begin
--//        if Pvv = None then
--//            return None_X_Procedure_Variable;
--//        elsif Pvv.Key /= Magic_Value or else
--//              Pvv.Data.Key /= Magic_Value or else
--//              Pvv.Data.Sig /= Signature then
--//            raise X_Bad_Procedure_Variable;
--//        end if;
--//        return X_Procedure_Variable (Pvv);
--//    end From_Pv;
--//
--// end Proc_In10;
--//
--/ end if; -- TeleGen2 and then Unix

--\x0c
    ------------------------------------------------------------------------------
-- Procedure with 3 In parameters and 2 Out parameters.
------------------------------------------------------------------------------
--/ if R1000 then

    package body Proc_In_In_In_Out_Out is

        Signature  : constant X_Procedure_Signature :=  
           X_Unique_Procedure_Signature;  
        Signature1 : constant Long_Integer          :=  
           Long_Integer (Signature.First) * 2 ** 31 +  
              Long_Integer (Signature.Second);

        procedure Call (Pvv   :     Pv;  
                        Data1 : in  Parm1;  
                        Data2 : in  Parm2;  
                        Data3 : in  Parm3;  
                        Data4 : out Parm4;  
                        Data5 : out Parm5) is  
            Pvvv   : Subprogram_Implementation.Subprogram_Type;  
            Offset : constant Si.Offset_Vector :=  
               (Pvvv'Offset, Data1'Offset, Data2'Offset,  
                Data3'Offset, Data4'Offset, Data5'Offset);  
        begin  
            if Pvv = None or else  
               Pvv.Key /= Magic_Value or else  
               Pvv.Data.Key /= Magic_Value or else  
               Pvv.Data.Sig /= Signature then  
                raise X_Bad_Procedure_Variable;  
            end if;  
            Pvvv := Pvv.Data.Subprog;  
            Si.Invoke (Modes_Proc_In_In_In_Out_Out, Offset);  
        end Call;

        function Value return Pv is  
            Pdr : X_Procedure_Data;  
            Pvr : X_Procedure_Variable;  
        begin  
            Pdr := new X_Procedure_Data_Rec'  
                          (Key     => Magic_Value,  
                           Sig     => Signature,  
                           Subprog => Si.Get (Modes_Proc_In_In_In_Out_Out,  
                                              Signature1));  
            Pvr := new X_Procedure_Variable_Rec'  
                          (Key  => Magic_Value,  
                           Data => Pdr);  
            return Pv (Pvr);  
        exception  
            when others =>  
                Heap_Free_X_Procedure_Data (Pdr);  
                Heap_Free_X_Procedure_Variable (Pvr);  
                raise;  
        end Value;

        procedure Free (Pvv : in out Pv) is  
        begin  
            if Pvv = None or else  
               Pvv.Key /= Magic_Value or else  
               Pvv.Data.Key /= Magic_Value or else  
               Pvv.Data.Sig /= Signature then  
                raise X_Bad_Procedure_Variable;  
            end if;  
            Free_X_Procedure_Variable (X_Procedure_Variable (Pvv));  
        end Free;

        function To_Pv (Pvv : X_Procedure_Variable) return Pv is  
        begin  
            if Pvv = None_X_Procedure_Variable then  
                return None;  
            elsif Pvv.Key /= Magic_Value or else  
                  Pvv.Data.Key /= Magic_Value or else  
                  Pvv.Data.Sig /= Signature then  
                raise X_Bad_Procedure_Variable;  
            end if;  
            return Pv (Pvv);  
        end To_Pv;

        function From_Pv (Pvv : Pv) return X_Procedure_Variable is  
        begin  
            if Pvv = None then  
                return None_X_Procedure_Variable;  
            elsif Pvv.Key /= Magic_Value or else  
                  Pvv.Data.Key /= Magic_Value or else  
                  Pvv.Data.Sig /= Signature then  
                raise X_Bad_Procedure_Variable;  
            end if;  
            return X_Procedure_Variable (Pvv);  
        end From_Pv;

    end Proc_In_In_In_Out_Out;

--/ end if; -- R1000

--\x0c
    ------------------------------------------------------------------------------
-- Procedure with 3 In parameters and 2 Out parameters.
------------------------------------------------------------------------------
--/ if Cdf_Hpux then
--//
--//     package body Proc_In_In_In_Out_Out is
--//
--//         Signature : constant X_Procedure_Signature :=
--//            X_Unique_Procedure_Signature;
--//
--//         procedure Invoke_Subprog (Subprog : System.Address;
--//                                   A1      : System.Address;
--//                                   Offset  : Integer);
--//         pragma Interface (Assembly, Invoke_Subprog);
--//         pragma Import_Procedure (Internal => Invoke_Subprog,
--//                                  External => "__Xlbmt_InOut_Invoke_Procedure",
--//                                  Parameter_Types => (System.Address,
--//                                                      System.Address, Integer),
--//                                  Mechanism => (Value, Value, Value));
--//
--//         function Get_A7 return Integer;
--//         pragma Interface (Assembly, Get_A7);
--//         pragma Import_Function (Internal        => Get_A7,
--//                                 External        => "__Xlbmt_Get_A7",
--//                                 Parameter_Types => null,
--//                                 Result_Type     => Integer);
--//
--//         function Get_A1 return System.Address;
--//         pragma Interface (Assembly, Get_A1);
--//         pragma Import_Function (Internal        => Get_A1,
--//                                 External        => "__Xlbmt_Get_A1",
--//                                 Parameter_Types => null,
--//                                 Result_Type     => System.Address);
--//
--//         procedure Call (Pvv   :     Pv;
--//                         Data1 : in  Parm1;
--//                         Data2 : in  Parm2;
--//                         Data3 : in  Parm3;
--//                         Data4 : out Parm4;
--//                         Data5 : out Parm5) is
--//             Sp1, Sp2 : Integer;
--//
--//             procedure Call (Data1 : in  Parm1;
--//                             Data2 : in  Parm2;
--//                             Data3 : in  Parm3;
--//                             Data4 : out Parm4;
--//                             Data5 : out Parm5) is
--//             begin
--//                 Sp2 := Get_A7;
--//             end Call;
--//
--//         begin
--//             if Pvv = None or else Pvv.Key /= Magic_Value or else
--//                Pvv.Data.Key /= Magic_Value or else
--//                Pvv.Data.Sig /= Signature then
--//                 raise X_Bad_Procedure_Variable;
--//             end if;
--//
--//             Sp1 := Get_A7;
--//             Call (Data1, Data2, Data3, Data4, Data5);
--//             Invoke_Subprog (Pvv.Data.Subprog, Pvv.Data.A1, Sp1 - Sp2);
--//         end Call;
--//
--//         function Value return Pv is
--//             Pvr : X_Procedure_Variable;
--//         begin
--//             Pvr := New_Procedure_Data (Signature, Called'Address, Get_A1);
--//             return Pv (Pvr);
--//         exception
--//             when others =>
--//                 Heap_Free_X_Procedure_Data (Pvr.Data);
--//                 Heap_Free_X_Procedure_Variable (Pvr);
--//                 raise;
--//         end Value;
--//
--//         procedure Free (Pvv : in out Pv) is
--//         begin
--//             if Pvv = None or else Pvv.Key /= Magic_Value or else
--//                Pvv.Data.Key /= Magic_Value or else
--//                Pvv.Data.Sig /= Signature then
--//                 raise X_Bad_Procedure_Variable;
--//             end if;
--//             Free_X_Procedure_Variable (X_Procedure_Variable (Pvv));
--//         end Free;
--//
--//         function To_Pv (Pvv : X_Procedure_Variable) return Pv is
--//         begin
--//             if Pvv = None_X_Procedure_Variable then
--//                 return None;
--//             elsif Pvv.Key /= Magic_Value or else
--//                   Pvv.Data.Key /= Magic_Value or else
--//                   Pvv.Data.Sig /= Signature then
--//                 raise X_Bad_Procedure_Variable;
--//             end if;
--//             return Pv (Pvv);
--//         end To_Pv;
--//
--//         function From_Pv (Pvv : Pv) return X_Procedure_Variable is
--//         begin
--//             if Pvv = None then
--//                 return None_X_Procedure_Variable;
--//             elsif Pvv.Key /= Magic_Value or else
--//                   Pvv.Data.Key /= Magic_Value or else
--//                   Pvv.Data.Sig /= Signature then
--//                 raise X_Bad_Procedure_Variable;
--//             end if;
--//             return X_Procedure_Variable (Pvv);
--//         end From_Pv;
--//
--//     end Proc_In_In_In_Out_Out;
--//
--/ end if; -- Cdf_Hpux

--\x0c
    ------------------------------------------------------------------------------
-- Procedure with 3 In parameters and 2 Out parameters.
------------------------------------------------------------------------------
--/ if TeleGen2 and then Unix then
--//
--// package body Proc_In_In_In_Out_Out is
--//
--//    Signature : constant X_Procedure_Signature :=
--//       X_Unique_Procedure_Signature;
--//
--//    procedure Invoke_Subprog (Subprog : System.Address;
--//                              A4      : System.Address;
--//                              Arg1    : System.Address);
--//    pragma Interface (Assembly, Invoke_Subprog);
--//    pragma Linkname (Invoke_Subprog, "_Xlbmt_InOut_Invoke_Procedure");
--//
--//    function Get_A4 return System.Address;
--//    pragma Interface (Assembly, Get_A4);
--//    pragma Linkname (Get_A4, "_Xlbmt_Get_A4");
--//
--//    procedure Call (Pvv   :     Pv;
--//                    Data1 : in  Parm1;
--//                    Data2 : in  Parm2;
--//                    Data3 : in  Parm3;
--//                    Data4 : out Parm4;
--//                    Data5 : out Parm5) is
--//    begin
--//        if Pvv = None or else
--//           Pvv.Key /= Magic_Value or else
--//           Pvv.Data.Key /= Magic_Value or else
--//           Pvv.Data.Sig /= Signature then
--//            raise X_Bad_Procedure_Variable;
--//        end if;
--//        Invoke_Subprog (Pvv.Data.Subprog, Pvv.Data.A4, Pvv'Address);
--//    end Call;
--//
--//    function Value return Pv is
--//        Pvr : X_Procedure_Variable;
--//    begin
--//        Pvr := New_Procedure_Data (Signature, Called'Address, Get_A4 );
--//        return Pv (Pvr);
--//    exception
--//        when others =>
--//            Heap_Free_X_Procedure_Data (Pvr.Data);
--//            Heap_Free_X_Procedure_Variable (Pvr);
--//            raise;
--//    end Value;
--//
--//    procedure Free (Pvv : in out Pv) is
--//    begin
--//        if Pvv = None or else
--//           Pvv.Key /= Magic_Value or else
--//           Pvv.Data.Key /= Magic_Value or else
--//           Pvv.Data.Sig /= Signature then
--//            raise X_Bad_Procedure_Variable;
--//        end if;
--//        Free_X_Procedure_Variable (X_Procedure_Variable (Pvv));
--//    end Free;
--//
--//    function To_Pv (Pvv : X_Procedure_Variable) return Pv is
--//    begin
--//        if Pvv = None_X_Procedure_Variable then
--//             return none;
--//        elsif Pvv.Key /= Magic_Value or else
--//              Pvv.Data.Key /= Magic_Value or else
--//             Pvv.Data.Sig /= Signature then
--//            raise X_Bad_Procedure_Variable;
--//        end if;
--//        return Pv (Pvv);
--//    end To_Pv;
--//
--//    function From_Pv (Pvv : Pv) return X_Procedure_Variable is
--//    begin
--//        if Pvv = None then
--//            return None_X_Procedure_Variable;
--//        elsif Pvv.Key /= Magic_Value or else
--//              Pvv.Data.Key /= Magic_Value or else
--//              Pvv.Data.Sig /= Signature then
--//            raise X_Bad_Procedure_Variable;
--//        end if;
--//        return X_Procedure_Variable (Pvv);
--//    end From_Pv;
--//
--// end Proc_In_In_In_Out_Out;
--//
--/ end if; -- TeleGen2 and then Unix

--\x0c
    ------------------------------------------------------------------------------
-- Procedure with 2 In parameters and 2 Out parameters.
------------------------------------------------------------------------------
--/ if R1000 then

    package body Proc_In_In_Out_Out is

        Signature  : constant X_Procedure_Signature :=  
           X_Unique_Procedure_Signature;  
        Signature1 : constant Long_Integer          :=  
           Long_Integer (Signature.First) * 2 ** 31 +  
              Long_Integer (Signature.Second);

        procedure Call (Pvv   :     Pv;  
                        Data1 : in  Parm1;  
                        Data2 : in  Parm2;  
                        Data3 : out Parm3;  
                        Data4 : out Parm4) is  
            Pvvv   : Subprogram_Implementation.Subprogram_Type;  
            Offset : constant Si.Offset_Vector :=  
               (Pvvv'Offset, Data1'Offset, Data2'Offset,  
                Data3'Offset, Data4'Offset);  
        begin  
            if Pvv = None or else  
               Pvv.Key /= Magic_Value or else  
               Pvv.Data.Key /= Magic_Value or else  
               Pvv.Data.Sig /= Signature then  
                raise X_Bad_Procedure_Variable;  
            end if;  
            Pvvv := Pvv.Data.Subprog;  
            Si.Invoke (Modes_Proc_In_In_Out_Out, Offset);  
        end Call;

        function Value return Pv is  
            Pdr : X_Procedure_Data;  
            Pvr : X_Procedure_Variable;  
        begin  
            Pdr := new X_Procedure_Data_Rec'  
                          (Key     => Magic_Value,  
                           Sig     => Signature,  
                           Subprog => Si.Get (Modes_Proc_In_In_Out_Out,  
                                              Signature1));  
            Pvr := new X_Procedure_Variable_Rec'  
                          (Key  => Magic_Value,  
                           Data => Pdr);  
            return Pv (Pvr);  
        exception  
            when others =>  
                Heap_Free_X_Procedure_Data (Pdr);  
                Heap_Free_X_Procedure_Variable (Pvr);  
                raise;  
        end Value;

        procedure Free (Pvv : in out Pv) is  
        begin  
            if Pvv = None or else  
               Pvv.Key /= Magic_Value or else  
               Pvv.Data.Key /= Magic_Value or else  
               Pvv.Data.Sig /= Signature then  
                raise X_Bad_Procedure_Variable;  
            end if;  
            Free_X_Procedure_Variable (X_Procedure_Variable (Pvv));  
        end Free;

        function To_Pv (Pvv : X_Procedure_Variable) return Pv is  
        begin  
            if Pvv = None_X_Procedure_Variable then  
                return None;  
            elsif Pvv.Key /= Magic_Value or else  
                  Pvv.Data.Key /= Magic_Value or else  
                  Pvv.Data.Sig /= Signature then  
                raise X_Bad_Procedure_Variable;  
            end if;  
            return Pv (Pvv);  
        end To_Pv;

        function From_Pv (Pvv : Pv) return X_Procedure_Variable is  
        begin  
            if Pvv = None then  
                return None_X_Procedure_Variable;  
            elsif Pvv.Key /= Magic_Value or else  
                  Pvv.Data.Key /= Magic_Value or else  
                  Pvv.Data.Sig /= Signature then  
                raise X_Bad_Procedure_Variable;  
            end if;  
            return X_Procedure_Variable (Pvv);  
        end From_Pv;

    end Proc_In_In_Out_Out;

--/ end if; -- R1000

--\x0c
    ------------------------------------------------------------------------------
-- Procedure with 2 In parameters and 2 Out parameters.
------------------------------------------------------------------------------
--/ if Cdf_Hpux then
--//
--//     package body Proc_In_In_Out_Out is
--//
--//         Signature : constant X_Procedure_Signature :=
--//            X_Unique_Procedure_Signature;
--//
--//         procedure Invoke_Subprog (Subprog : System.Address;
--//                                   A1      : System.Address;
--//                                   Offset  : Integer);
--//         pragma Interface (Assembly, Invoke_Subprog);
--//         pragma Import_Procedure (Internal => Invoke_Subprog,
--//                                  External => "__Xlbmt_InOut_Invoke_Procedure",
--//                                  Parameter_Types => (System.Address,
--//                                                      System.Address, Integer),
--//                                  Mechanism => (Value, Value, Value));
--//
--//         function Get_A7 return Integer;
--//         pragma Interface (Assembly, Get_A7);
--//         pragma Import_Function (Internal        => Get_A7,
--//                                 External        => "__Xlbmt_Get_A7",
--//                                 Parameter_Types => null,
--//                                 Result_Type     => Integer);
--//
--//         function Get_A1 return System.Address;
--//         pragma Interface (Assembly, Get_A1);
--//         pragma Import_Function (Internal        => Get_A1,
--//                                 External        => "__Xlbmt_Get_A1",
--//                                 Parameter_Types => null,
--//                                 Result_Type     => System.Address);
--//
--//         procedure Call (Pvv   :     Pv;
--//                         Data1 : in  Parm1;
--//                         Data2 : in  Parm2;
--//                         Data3 : out Parm3;
--//                         Data4 : out Parm4) is
--//             Sp1, Sp2 : Integer;
--//
--//             procedure Call (Data1 : in  Parm1;
--//                             Data2 : in  Parm2;
--//                             Data3 : out Parm3;
--//                             Data4 : out Parm4) is
--//             begin
--//                 Sp2 := Get_A7;
--//             end Call;
--//
--//         begin
--//             if Pvv = None or else Pvv.Key /= Magic_Value or else
--//                Pvv.Data.Key /= Magic_Value or else
--//                Pvv.Data.Sig /= Signature then
--//                 raise X_Bad_Procedure_Variable;
--//             end if;
--//
--//             Sp1 := Get_A7;
--//             Call (Data1, Data2, Data3, Data4);
--//             Invoke_Subprog (Pvv.Data.Subprog, Pvv.Data.A1, Sp1 - Sp2);
--//         end Call;
--//
--//         function Value return Pv is
--//             Pvr : X_Procedure_Variable;
--//         begin
--//             Pvr := New_Procedure_Data (Signature, Called'Address, Get_A1);
--//             return Pv (Pvr);
--//         exception
--//             when others =>
--//                 Heap_Free_X_Procedure_Data (Pvr.Data);
--//                 Heap_Free_X_Procedure_Variable (Pvr);
--//                 raise;
--//         end Value;
--//
--//         procedure Free (Pvv : in out Pv) is
--//         begin
--//             if Pvv = None or else Pvv.Key /= Magic_Value or else
--//                Pvv.Data.Key /= Magic_Value or else
--//                Pvv.Data.Sig /= Signature then
--//                 raise X_Bad_Procedure_Variable;
--//             end if;
--//             Free_X_Procedure_Variable (X_Procedure_Variable (Pvv));
--//         end Free;
--//
--//         function To_Pv (Pvv : X_Procedure_Variable) return Pv is
--//         begin
--//             if Pvv = None_X_Procedure_Variable then
--//                 return None;
--//             elsif Pvv.Key /= Magic_Value or else
--//                   Pvv.Data.Key /= Magic_Value or else
--//                   Pvv.Data.Sig /= Signature then
--//                 raise X_Bad_Procedure_Variable;
--//             end if;
--//             return Pv (Pvv);
--//         end To_Pv;
--//
--//         function From_Pv (Pvv : Pv) return X_Procedure_Variable is
--//         begin
--//             if Pvv = None then
--//                 return None_X_Procedure_Variable;
--//             elsif Pvv.Key /= Magic_Value or else
--//                   Pvv.Data.Key /= Magic_Value or else
--//                   Pvv.Data.Sig /= Signature then
--//                 raise X_Bad_Procedure_Variable;
--//             end if;
--//             return X_Procedure_Variable (Pvv);
--//         end From_Pv;
--//
--//     end Proc_In_In_Out_Out;
--//
--/ end if; -- Cdf_Hpux

--\x0c
    ------------------------------------------------------------------------------
-- Procedure with 2 In parameters and 2 Out parameters.
------------------------------------------------------------------------------
--/ if TeleGen2 and then Unix then
--//
--// package body Proc_In_In_Out_Out is
--//
--//    Signature : constant X_Procedure_Signature :=
--//       X_Unique_Procedure_Signature;
--//
--//    procedure Invoke_Subprog (Subprog : System.Address;
--//                              A4      : System.Address;
--//                              Arg1    : System.Address);
--//    pragma Interface (Assembly, Invoke_Subprog);
--//    pragma Linkname (Invoke_Subprog, "_Xlbmt_InOut_Invoke_Procedure");
--//
--//    function Get_A4 return System.Address;
--//    pragma Interface (Assembly, Get_A4);
--//    pragma Linkname (Get_A4, "_Xlbmt_Get_A4");
--//
--//    procedure Call (Pvv   :     Pv;
--//                    Data1 : in  Parm1;
--//                    Data2 : in  Parm2;
--//                    Data3 : out Parm3;
--//                    Data4 : out Parm4) is
--//    begin
--//        if Pvv = None or else
--//           Pvv.Key /= Magic_Value or else
--//           Pvv.Data.Key /= Magic_Value or else
--//           Pvv.Data.Sig /= Signature then
--//            raise X_Bad_Procedure_Variable;
--//        end if;
--//        Invoke_Subprog (Pvv.Data.Subprog, Pvv.Data.A4, Pvv'Address);
--//    end Call;
--//
--//    function Value return Pv is
--//        Pvr : X_Procedure_Variable;
--//    begin
--//        Pvr := New_Procedure_Data (Signature, Called'Address, Get_A4 );
--//        return Pv (Pvr);
--//    exception
--//        when others =>
--//            Heap_Free_X_Procedure_Data (Pvr.Data);
--//            Heap_Free_X_Procedure_Variable (Pvr);
--//            raise;
--//    end Value;
--//
--//    procedure Free (Pvv : in out Pv) is
--//    begin
--//        if Pvv = None or else
--//           Pvv.Key /= Magic_Value or else
--//           Pvv.Data.Key /= Magic_Value or else
--//           Pvv.Data.Sig /= Signature then
--//            raise X_Bad_Procedure_Variable;
--//        end if;
--//        Free_X_Procedure_Variable (X_Procedure_Variable (Pvv));
--//    end Free;
--//
--//    function To_Pv (Pvv : X_Procedure_Variable) return Pv is
--//    begin
--//        if Pvv = None_X_Procedure_Variable then
--//            return None;
--//        elsif Pvv.Key /= Magic_Value or else
--//              Pvv.Data.Key /= Magic_Value or else
--//              Pvv.Data.Sig /= Signature then
--//            raise X_Bad_Procedure_Variable;
--//        end if;
--//        return Pv (Pvv);
--//    end To_Pv;
--//
--//    function From_Pv (Pvv : Pv) return X_Procedure_Variable is
--//    begin
--//        if Pvv = None then
--//            return None_X_Procedure_Variable;
--//        elsif Pvv.Key /= Magic_Value or else
--//              Pvv.Data.Key /= Magic_Value or else
--//              Pvv.Data.Sig /= Signature then
--//            raise X_Bad_Procedure_Variable;
--//        end if;
--//        return X_Procedure_Variable (Pvv);
--//    end From_Pv;
--//
--// end Proc_In_In_Out_Out;
--//
--/ end if; -- TeleGen2 and then Unix

--\x0c
    ------------------------------------------------------------------------------
-- Function with 1 In parameter.
------------------------------------------------------------------------------
--/ if R1000 then

    package body Func_In is

        Force_Constrained_Type : Ret;   -- Forces Ret type to be a fully
                                        -- constrained type; LRM 12.3.2 (4).

        Signature  : constant X_Procedure_Signature :=  
           X_Unique_Procedure_Signature;  
        Signature1 : constant Long_Integer          :=  
           Long_Integer (Signature.First) * 2 ** 31 +  
              Long_Integer (Signature.Second);

        function Call (Pvv  :    Pv;  
                       Data : in Parm1) return Ret is  
            Return_Value : Ret;  
            Pvvv         : Subprogram_Implementation.Subprogram_Type;  
            Offset       : constant Si.Offset_Vector :=  
               (Pvvv'Offset, Data'Offset, Return_Value'Offset);  
        begin  
            if Pvv = None or else  
               Pvv.Key /= Magic_Value or else  
               Pvv.Data.Key /= Magic_Value or else  
               Pvv.Data.Sig /= Signature then  
                raise X_Bad_Procedure_Variable;  
            end if;  
            Pvvv := Pvv.Data.Subprog;  
            Si.Invoke (Modes_Func_In, Offset);  
            return Return_Value;  
        end Call;

        function Value return Pv is  
            Pdr : X_Procedure_Data;  
            Pvr : X_Procedure_Variable;  
        begin  
            Pdr := new X_Procedure_Data_Rec'  
                          (Key     => Magic_Value,  
                           Sig     => Signature,  
                           Subprog => Si.Get (Modes_Func_In, Signature1));  
            Pvr := new X_Procedure_Variable_Rec'  
                          (Key  => Magic_Value,  
                           Data => Pdr);  
            return Pv (Pvr);  
        exception  
            when others =>  
                Heap_Free_X_Procedure_Data (Pdr);  
                Heap_Free_X_Procedure_Variable (Pvr);  
                raise;  
        end Value;

        procedure Free (Pvv : in out Pv) is  
        begin  
            if Pvv = None or else  
               Pvv.Key /= Magic_Value or else  
               Pvv.Data.Key /= Magic_Value or else  
               Pvv.Data.Sig /= Signature then  
                raise X_Bad_Procedure_Variable;  
            end if;  
            Free_X_Procedure_Variable (X_Procedure_Variable (Pvv));  
        end Free;

        function To_Pv (Pvv : X_Procedure_Variable) return Pv is  
        begin  
            if Pvv = None_X_Procedure_Variable then  
                return None;  
            elsif Pvv.Key /= Magic_Value or else  
                  Pvv.Data.Key /= Magic_Value or else  
                  Pvv.Data.Sig /= Signature then  
                raise X_Bad_Procedure_Variable;  
            end if;  
            return Pv (Pvv);  
        end To_Pv;

        function From_Pv (Pvv : Pv) return X_Procedure_Variable is  
        begin  
            if Pvv = None then  
                return None_X_Procedure_Variable;  
            elsif Pvv.Key /= Magic_Value or else  
                  Pvv.Data.Key /= Magic_Value or else  
                  Pvv.Data.Sig /= Signature then  
                raise X_Bad_Procedure_Variable;  
            end if;  
            return X_Procedure_Variable (Pvv);  
        end From_Pv;

    end Func_In;

--/ end if; -- R1000

--\x0c
    ------------------------------------------------------------------------------
-- Function with 1 In parameter.
------------------------------------------------------------------------------
--/ if Cdf_Hpux then
--//
--//     package body Func_In is
--//
--//         Force_Constrained_Type : Ret;   -- Forces Ret type to be a fully
--//                                         -- constrained type; LRM 12.3.2 (4).
--//
--//         Signature : constant X_Procedure_Signature :=
--//            X_Unique_Procedure_Signature;
--//
--//         function Invoke_Subprog (Subprog : System.Address;
--//                                  A1      : System.Address;
--//                                  Offset  : Integer) return Ret;
--//         pragma Interface (Assembly, Invoke_Subprog);
--//         pragma Import_Function
--//            (Internal        => Invoke_Subprog,
--//             External        => "__Xlbmt_InOut_Invoke_Function",
--//             Parameter_Types => (System.Address, System.Address, Integer),
--//             Mechanism       => (Value, Value, Value),
--//             Result_Type     => Ret);
--//
--//         function Get_A7 return Integer;
--//         pragma Interface (Assembly, Get_A7);
--//         pragma Import_Function (Internal        => Get_A7,
--//                                 External        => "__Xlbmt_Get_A7",
--//                                 Parameter_Types => null,
--//                                 Result_Type     => Integer);
--//
--//         function Get_A1 return System.Address;
--//         pragma Interface (Assembly, Get_A1);
--//         pragma Import_Function (Internal        => Get_A1,
--//                                 External        => "__Xlbmt_Get_A1",
--//                                 Parameter_Types => null,
--//                                 Result_Type     => System.Address);
--//
--//         function Call (Pvv : Pv; Data : in Parm1) return Ret is
--//             Sp1, Sp2 : Integer;
--//
--//             procedure Call (Data : in Parm1) is
--//             begin
--//                 Sp2 := Get_A7;
--//             end Call;
--//
--//         begin
--//             if Pvv = None or else Pvv.Key /= Magic_Value or else
--//                Pvv.Data.Key /= Magic_Value or else
--//                Pvv.Data.Sig /= Signature then
--//                 raise X_Bad_Procedure_Variable;
--//             end if;
--//
--//             Sp1 := Get_A7;
--//             Call (Data);
--//             return Invoke_Subprog (Pvv.Data.Subprog, Pvv.Data.A1, Sp1 - Sp2);
--//         end Call;
--//
--//         function Value return Pv is
--//             Pvr : X_Procedure_Variable;
--//         begin
--//             Pvr := New_Procedure_Data (Signature, Called'Address, Get_A1);
--//             return Pv (Pvr);
--//         exception
--//             when others =>
--//                 Heap_Free_X_Procedure_Data (Pvr.Data);
--//                 Heap_Free_X_Procedure_Variable (Pvr);
--//                 raise;
--//         end Value;
--//
--//         procedure Free (Pvv : in out Pv) is
--//         begin
--//             if Pvv = None or else Pvv.Key /= Magic_Value or else
--//                Pvv.Data.Key /= Magic_Value or else
--//                Pvv.Data.Sig /= Signature then
--//                 raise X_Bad_Procedure_Variable;
--//             end if;
--//             Free_X_Procedure_Variable (X_Procedure_Variable (Pvv));
--//         end Free;
--//
--//         function To_Pv (Pvv : X_Procedure_Variable) return Pv is
--//         begin
--//             if Pvv = None_X_Procedure_Variable then
--//                 return None;
--//             elsif Pvv.Key /= Magic_Value or else
--//                   Pvv.Data.Key /= Magic_Value or else
--//                   Pvv.Data.Sig /= Signature then
--//                 raise X_Bad_Procedure_Variable;
--//             end if;
--//             return Pv (Pvv);
--//         end To_Pv;
--//
--//         function From_Pv (Pvv : Pv) return X_Procedure_Variable is
--//         begin
--//             if Pvv = None then
--//                 return None_X_Procedure_Variable;
--//             elsif Pvv.Key /= Magic_Value or else
--//                   Pvv.Data.Key /= Magic_Value or else
--//                   Pvv.Data.Sig /= Signature then
--//                 raise X_Bad_Procedure_Variable;
--//             end if;
--//             return X_Procedure_Variable (Pvv);
--//         end From_Pv;
--//
--//     end Func_In;
--//
--/ end if; -- Cdf_Hpux

--\x0c
    ------------------------------------------------------------------------------
-- Function with 1 In parameter.
------------------------------------------------------------------------------
--/ if TeleGen2 and then Unix then
--//
--// package body Func_In is
--//
--//    Force_Constrained_Type : Ret;   -- Forces Ret type to be a fully
--//                                    -- constrained type; LRM 12.3.2 (4).
--//
--//    Signature : constant X_Procedure_Signature :=
--//       X_Unique_Procedure_Signature;
--//
--//    function Invoke_Subprog (Subprog : System.Address;
--//                             A4      : System.Address;
--//                             Arg1    : System.Address) return Ret;
--//    pragma Interface (Assembly, Invoke_Subprog);
--//    pragma Linkname (Invoke_Subprog, "_Xlbmt_Invoke_Function");
--//
--//    function Get_A4 return System.Address;
--//    pragma Interface (Assembly, Get_A4);
--//    pragma Linkname (Get_A4, "_Xlbmt_Get_A4");
--//
--//    function Call (Pvv  :    Pv;
--//                   Data : in Parm1) return Ret is
--//    begin
--//        if Pvv = None or else
--//           Pvv.Key /= Magic_Value or else
--//           Pvv.Data.Key /= Magic_Value or else
--//           Pvv.Data.Sig /= Signature then
--//            raise X_Bad_Procedure_Variable;
--//        end if;
--//        return Invoke_Subprog (Pvv.Data.Subprog, Pvv.Data.A4, Pvv'Address);
--//    end Call;
--//
--//    function Value return Pv is
--//        Pvr : X_Procedure_Variable;
--//    begin
--//        Pvr := New_Procedure_Data (Signature, Called'Address, Get_A4 );
--//        return Pv (Pvr);
--//    exception
--//        when others =>
--//            Heap_Free_X_Procedure_Data (Pvr.Data);
--//            Heap_Free_X_Procedure_Variable (Pvr);
--//            raise;
--//    end Value;
--//
--//    procedure Free (Pvv : in out Pv) is
--//    begin
--//        if Pvv = None or else
--//           Pvv.Key /= Magic_Value or else
--//           Pvv.Data.Key /= Magic_Value or else
--//           Pvv.Data.Sig /= Signature then
--//            raise X_Bad_Procedure_Variable;
--//        end if;
--//        Free_X_Procedure_Variable (X_Procedure_Variable (Pvv));
--//    end Free;
--//
--//    function To_Pv (Pvv : X_Procedure_Variable) return Pv is
--//    begin
--//        if Pvv = None_X_Procedure_Variable then
--//            return None;
--//        elsif Pvv.Key /= Magic_Value or else
--//              Pvv.Data.Key /= Magic_Value or else
--//              Pvv.Data.Sig /= Signature then
--//            raise X_Bad_Procedure_Variable;
--//        end if;
--//        return Pv (Pvv);
--//    end To_Pv;
--//
--//    function From_Pv (Pvv : Pv) return X_Procedure_Variable is
--//    begin
--//        if Pvv = None then
--//            return None_X_Procedure_Variable;
--//        elsif Pvv.Key /= Magic_Value or else
--//              Pvv.Data.Key /= Magic_Value or else
--//              Pvv.Data.Sig /= Signature then
--//            raise X_Bad_Procedure_Variable;
--//        end if;
--//        return X_Procedure_Variable (Pvv);
--//    end From_Pv;
--//
--// end Func_In;
--//
--/ end if; -- TeleGen2 and then Unix

--\x0c
    ------------------------------------------------------------------------------
-- Function with 1 In parameter return String.
------------------------------------------------------------------------------
--/ if R1000 then

    package body Func_In_X_String is

        Signature  : constant X_Procedure_Signature :=  
           X_Unique_Procedure_Signature;  
        Signature1 : constant Long_Integer          :=  
           Long_Integer (Signature.First) * 2 ** 31 +  
              Long_Integer (Signature.Second);

        function Call (Pvv   :    Pv;  
                       Data1 : in Parm1) return X_String is  
            Return_Value : constant X_String         := String_Placeholder;  
            Pvvv         : Subprogram_Implementation.Subprogram_Type;  
            Offset       : constant Si.Offset_Vector :=  
               (Pvvv'Offset, Data1'Offset, Return_Value'Offset);  
        begin  
            if Pvv = None or else  
               Pvv.Key /= Magic_Value or else  
               Pvv.Data.Key /= Magic_Value or else  
               Pvv.Data.Sig /= Signature then  
                raise X_Bad_Procedure_Variable;  
            end if;  
            Pvvv := Pvv.Data.Subprog;  
            Si.Invoke (Modes_Func_In_X_String, Offset);  
            return Return_Value;  
        end Call;

        function Value return Pv is  
            Pdr : X_Procedure_Data;  
            Pvr : X_Procedure_Variable;  
        begin  
            Pdr := new X_Procedure_Data_Rec'  
                          (Key     => Magic_Value,  
                           Sig     => Signature,  
                           Subprog => Si.Get  
                                         (Modes_Func_In_X_String, Signature1));  
            Pvr := new X_Procedure_Variable_Rec'  
                          (Key  => Magic_Value,  
                           Data => Pdr);  
            return Pv (Pvr);  
        exception  
            when others =>  
                Heap_Free_X_Procedure_Data (Pdr);  
                Heap_Free_X_Procedure_Variable (Pvr);  
                raise;  
        end Value;

        procedure Free (Pvv : in out Pv) is  
        begin  
            if Pvv = None or else  
               Pvv.Key /= Magic_Value or else  
               Pvv.Data.Key /= Magic_Value or else  
               Pvv.Data.Sig /= Signature then  
                raise X_Bad_Procedure_Variable;  
            end if;  
            Free_X_Procedure_Variable (X_Procedure_Variable (Pvv));  
        end Free;

        function To_Pv (Pvv : X_Procedure_Variable) return Pv is  
        begin  
            if Pvv = None_X_Procedure_Variable then  
                return None;  
            elsif Pvv.Key /= Magic_Value or else  
                  Pvv.Data.Key /= Magic_Value or else  
                  Pvv.Data.Sig /= Signature then  
                raise X_Bad_Procedure_Variable;  
            end if;  
            return Pv (Pvv);  
        end To_Pv;

        function From_Pv (Pvv : Pv) return X_Procedure_Variable is  
        begin  
            if Pvv = None then  
                return None_X_Procedure_Variable;  
            elsif Pvv.Key /= Magic_Value or else  
                  Pvv.Data.Key /= Magic_Value or else  
                  Pvv.Data.Sig /= Signature then  
                raise X_Bad_Procedure_Variable;  
            end if;  
            return X_Procedure_Variable (Pvv);  
        end From_Pv;

    end Func_In_X_String;

--/ end if; -- R1000

--\x0c
    ------------------------------------------------------------------------------
-- Function with 1 In parameter return String.
------------------------------------------------------------------------------
--/ if Cdf_Hpux then
--//
--//     package body Func_In_X_String is
--//
--//         Signature : constant X_Procedure_Signature :=
--//            X_Unique_Procedure_Signature;
--//
--//         function Invoke_Subprog (Subprog : System.Address;
--//                                  A1      : System.Address;
--//                                  Offset  : Integer) return X_String;
--//         pragma Interface (Assembly, Invoke_Subprog);
--//         pragma Import_Function (Internal => Invoke_Subprog,
--//                                 External => "__Xlbmt_InOut_Invoke_Function",
--//                                 Parameter_Types => (System.Address,
--//                                                     System.Address, Integer),
--//                                 Mechanism => (Value, Value, Value),
--//                                 Result_Type => X_String);
--//
--//         function Get_A7 return Integer;
--//         pragma Interface (Assembly, Get_A7);
--//         pragma Import_Function (Internal        => Get_A7,
--//                                 External        => "__Xlbmt_Get_A7",
--//                                 Parameter_Types => null,
--//                                 Result_Type     => Integer);
--//
--//         function Get_A1 return System.Address;
--//         pragma Interface (Assembly, Get_A1);
--//         pragma Import_Function (Internal        => Get_A1,
--//                                 External        => "__Xlbmt_Get_A1",
--//                                 Parameter_Types => null,
--//                                 Result_Type     => System.Address);
--//
--//         function Call (Pvv : Pv; Data1 : in Parm1) return X_String is
--//             Sp1, Sp2 : Integer;
--//
--//             procedure Call (Data1 : in Parm1) is
--//             begin
--//                 Sp2 := Get_A7;
--//             end Call;
--//
--//         begin
--//             if Pvv = None or else Pvv.Key /= Magic_Value or else
--//                Pvv.Data.Key /= Magic_Value or else
--//                Pvv.Data.Sig /= Signature then
--//                 raise X_Bad_Procedure_Variable;
--//             end if;
--//
--//             Sp1 := Get_A7;
--//             Call (Data1);
--//             return Invoke_Subprog (Pvv.Data.Subprog, Pvv.Data.A1, Sp1 - Sp2);
--//         end Call;
--//
--//         function Value return Pv is
--//             Pvr : X_Procedure_Variable;
--//         begin
--//             Pvr := New_Procedure_Data (Signature, Called'Address, Get_A1);
--//             return Pv (Pvr);
--//         exception
--//             when others =>
--//                 Heap_Free_X_Procedure_Data (Pvr.Data);
--//                 Heap_Free_X_Procedure_Variable (Pvr);
--//                 raise;
--//         end Value;
--//
--//         procedure Free (Pvv : in out Pv) is
--//         begin
--//             if Pvv = None or else Pvv.Key /= Magic_Value or else
--//                Pvv.Data.Key /= Magic_Value or else
--//                Pvv.Data.Sig /= Signature then
--//                 raise X_Bad_Procedure_Variable;
--//             end if;
--//             Free_X_Procedure_Variable (X_Procedure_Variable (Pvv));
--//         end Free;
--//
--//         function To_Pv (Pvv : X_Procedure_Variable) return Pv is
--//         begin
--//             if Pvv = None_X_Procedure_Variable then
--//                 return None;
--//             elsif Pvv.Key /= Magic_Value or else
--//                   Pvv.Data.Key /= Magic_Value or else
--//                   Pvv.Data.Sig /= Signature then
--//                 raise X_Bad_Procedure_Variable;
--//             end if;
--//             return Pv (Pvv);
--//         end To_Pv;
--//
--//         function From_Pv (Pvv : Pv) return X_Procedure_Variable is
--//         begin
--//             if Pvv = None then
--//                 return None_X_Procedure_Variable;
--//             elsif Pvv.Key /= Magic_Value or else
--//                   Pvv.Data.Key /= Magic_Value or else
--//                   Pvv.Data.Sig /= Signature then
--//                 raise X_Bad_Procedure_Variable;
--//             end if;
--//             return X_Procedure_Variable (Pvv);
--//         end From_Pv;
--//
--//     end Func_In_X_String;
--//
--/ end if; -- Cdf_Hpux

--\x0c
    ------------------------------------------------------------------------------
-- Function with 1 In parameter return String.
------------------------------------------------------------------------------
--/ if TeleGen2 and then Unix then
--//
--// package body Func_In_X_String is
--//
--//    Signature : constant X_Procedure_Signature :=
--//       X_Unique_Procedure_Signature;
--//
--//    function Invoke_Subprog (Subprog : System.Address;
--//                             A4      : System.Address;
--//                             Arg1    : System.Address) return X_String;
--//    pragma Interface (Assembly, Invoke_Subprog);
--//    pragma Linkname (Invoke_Subprog, "_Xlbmt_Invoke_String_Function");
--//
--//    function Get_A4 return System.Address;
--//    pragma Interface (Assembly, Get_A4);
--//    pragma Linkname (Get_A4, "_Xlbmt_Get_A4");
--//
--//    function Call (Pvv   :    Pv;
--//                   Data1 : in Parm1) return X_String is
--//    begin
--//        if Pvv = None or else
--//           Pvv.Key /= Magic_Value or else
--//           Pvv.Data.Key /= Magic_Value or else
--//           Pvv.Data.Sig /= Signature then
--//            raise X_Bad_Procedure_Variable;
--//        end if;
--//        return Invoke_Subprog (Pvv.Data.Subprog, Pvv.Data.A4, Pvv'Address);
--//    end Call;
--//
--//    function Value return Pv is
--//        Pvr : X_Procedure_Variable;
--//    begin
--//        Pvr := New_Procedure_Data (Signature, Called'Address, Get_A4 );
--//        return Pv (Pvr);
--//    exception
--//        when others =>
--//            Heap_Free_X_Procedure_Data (Pvr.Data);
--//            Heap_Free_X_Procedure_Variable (Pvr);
--//            raise;
--//    end Value;
--//
--//    procedure Free (Pvv : in out Pv) is
--//    begin
--//        if Pvv = None or else
--//           Pvv.Key /= Magic_Value or else
--//           Pvv.Data.Key /= Magic_Value or else
--//           Pvv.Data.Sig /= Signature then
--//            raise X_Bad_Procedure_Variable;
--//        end if;
--//        Free_X_Procedure_Variable (X_Procedure_Variable (Pvv));
--//    end Free;
--//
--//    function To_Pv (Pvv : X_Procedure_Variable) return Pv is
--//    begin
--//        if Pvv = None_X_Procedure_Variable then
--//            return None;
--//        elsif Pvv.Key /= Magic_Value or else
--//              Pvv.Data.Key /= Magic_Value or else
--//              Pvv.Data.Sig /= Signature then
--//            raise X_Bad_Procedure_Variable;
--//        end if;
--//        return Pv (Pvv);
--//    end To_Pv;
--//
--//    function From_Pv (Pvv : Pv) return X_Procedure_Variable is
--//    begin
--//        if Pvv = None then
--//            return None_X_Procedure_Variable;
--//        elsif Pvv.Key /= Magic_Value or else
--//              Pvv.Data.Key /= Magic_Value or else
--//              Pvv.Data.Sig /= Signature then
--//            raise X_Bad_Procedure_Variable;
--//        end if;
--//        return X_Procedure_Variable (Pvv);
--//    end From_Pv;
--//
--// end Func_In_X_String;
--//
--/ end if; -- TeleGen2 and then Unix

--\x0c
    ------------------------------------------------------------------------------
-- Function with 3 In parameters return String.
------------------------------------------------------------------------------
--/ if R1000 then

    package body Func_In_In_In_X_String is

        Signature  : constant X_Procedure_Signature :=  
           X_Unique_Procedure_Signature;  
        Signature1 : constant Long_Integer          :=  
           Long_Integer (Signature.First) * 2 ** 31 +  
              Long_Integer (Signature.Second);

        function Call (Pvv   :    Pv;  
                       Data1 : in Parm1;  
                       Data2 : in Parm2;  
                       Data3 : in Parm3) return X_String is  
            Return_Value : constant X_String         := String_Placeholder;  
            Pvvv         : Subprogram_Implementation.Subprogram_Type;  
            Offset       : constant Si.Offset_Vector :=  
               (Pvvv'Offset, Data1'Offset, Data2'Offset,  
                Data3'Offset, Return_Value'Offset);  
        begin  
            if Pvv = None or else  
               Pvv.Key /= Magic_Value or else  
               Pvv.Data.Key /= Magic_Value or else  
               Pvv.Data.Sig /= Signature then  
                raise X_Bad_Procedure_Variable;  
            end if;  
            Pvvv := Pvv.Data.Subprog;  
            Si.Invoke (Modes_Func_In_In_In_X_String, Offset);  
            return Return_Value;  
        end Call;

        function Value return Pv is  
            Pdr : X_Procedure_Data;  
            Pvr : X_Procedure_Variable;  
        begin  
            Pdr := new X_Procedure_Data_Rec'  
                          (Key     => Magic_Value,  
                           Sig     => Signature,  
                           Subprog => Si.Get (Modes_Func_In_In_In, Signature1));  
            Pvr := new X_Procedure_Variable_Rec'  
                          (Key  => Magic_Value,  
                           Data => Pdr);  
            return Pv (Pvr);  
        exception  
            when others =>  
                Heap_Free_X_Procedure_Data (Pdr);  
                Heap_Free_X_Procedure_Variable (Pvr);  
                raise;  
        end Value;

        procedure Free (Pvv : in out Pv) is  
        begin  
            if Pvv = None or else  
               Pvv.Key /= Magic_Value or else  
               Pvv.Data.Key /= Magic_Value or else  
               Pvv.Data.Sig /= Signature then  
                raise X_Bad_Procedure_Variable;  
            end if;  
            Free_X_Procedure_Variable (X_Procedure_Variable (Pvv));  
        end Free;

        function To_Pv (Pvv : X_Procedure_Variable) return Pv is  
        begin  
            if Pvv = None_X_Procedure_Variable then  
                return None;  
            elsif Pvv.Key /= Magic_Value or else  
                  Pvv.Data.Key /= Magic_Value or else  
                  Pvv.Data.Sig /= Signature then  
                raise X_Bad_Procedure_Variable;  
            end if;  
            return Pv (Pvv);  
        end To_Pv;

        function From_Pv (Pvv : Pv) return X_Procedure_Variable is  
        begin  
            if Pvv = None then  
                return None_X_Procedure_Variable;  
            elsif Pvv.Key /= Magic_Value or else  
                  Pvv.Data.Key /= Magic_Value or else  
                  Pvv.Data.Sig /= Signature then  
                raise X_Bad_Procedure_Variable;  
            end if;  
            return X_Procedure_Variable (Pvv);  
        end From_Pv;

    end Func_In_In_In_X_String;

--/ end if; -- R1000

--\x0c
    ------------------------------------------------------------------------------
-- Function with 3 In parameters return String.
------------------------------------------------------------------------------
--/ if Cdf_Hpux then
--//
--//     package body Func_In_In_In_X_String is
--//
--//         Signature : constant X_Procedure_Signature :=
--//            X_Unique_Procedure_Signature;
--//
--//         function Invoke_Subprog (Subprog : System.Address;
--//                                  A1      : System.Address;
--//                                  Offset  : Integer) return X_String;
--//         pragma Interface (Assembly, Invoke_Subprog);
--//         pragma Import_Function (Internal => Invoke_Subprog,
--//                                 External => "__Xlbmt_InOut_Invoke_Function",
--//                                 Parameter_Types => (System.Address,
--//                                                     System.Address, Integer),
--//                                 Mechanism => (Value, Value, Value),
--//                                 Result_Type => X_String);
--//
--//         function Get_A7 return Integer;
--//         pragma Interface (Assembly, Get_A7);
--//         pragma Import_Function (Internal        => Get_A7,
--//                                 External        => "__Xlbmt_Get_A7",
--//                                 Parameter_Types => null,
--//                                 Result_Type     => Integer);
--//
--//         function Get_A1 return System.Address;
--//         pragma Interface (Assembly, Get_A1);
--//         pragma Import_Function (Internal        => Get_A1,
--//                                 External        => "__Xlbmt_Get_A1",
--//                                 Parameter_Types => null,
--//                                 Result_Type     => System.Address);
--//
--//         function Call (Pvv   :    Pv;
--//                        Data1 : in Parm1;
--//                        Data2 : in Parm2;
--//                        Data3 : in Parm3) return X_String is
--//             Sp1, Sp2 : Integer;
--//
--//             procedure Call (Data1 : in Parm1;
--//                             Data2 : in Parm2;
--//                             Data3 : in Parm3) is
--//             begin
--//                 Sp2 := Get_A7;
--//             end Call;
--//
--//         begin
--//             if Pvv = None or else Pvv.Key /= Magic_Value or else
--//                Pvv.Data.Key /= Magic_Value or else
--//                Pvv.Data.Sig /= Signature then
--//                 raise X_Bad_Procedure_Variable;
--//             end if;
--//
--//             Sp1 := Get_A7;
--//             Call (Data1, Data2, Data3);
--//             return Invoke_Subprog (Pvv.Data.Subprog, Pvv.Data.A1, Sp1 - Sp2);
--//         end Call;
--//
--//         function Value return Pv is
--//             Pvr : X_Procedure_Variable;
--//         begin
--//             Pvr := New_Procedure_Data (Signature, Called'Address, Get_A1);
--//             return Pv (Pvr);
--//         exception
--//             when others =>
--//                 Heap_Free_X_Procedure_Data (Pvr.Data);
--//                 Heap_Free_X_Procedure_Variable (Pvr);
--//                 raise;
--//         end Value;
--//
--//         procedure Free (Pvv : in out Pv) is
--//         begin
--//             if Pvv = None or else Pvv.Key /= Magic_Value or else
--//                Pvv.Data.Key /= Magic_Value or else
--//                Pvv.Data.Sig /= Signature then
--//                 raise X_Bad_Procedure_Variable;
--//             end if;
--//             Free_X_Procedure_Variable (X_Procedure_Variable (Pvv));
--//         end Free;
--//
--//         function To_Pv (Pvv : X_Procedure_Variable) return Pv is
--//         begin
--//             if Pvv = None_X_Procedure_Variable then
--//                 return None;
--//             elsif Pvv.Key /= Magic_Value or else
--//                   Pvv.Data.Key /= Magic_Value or else
--//                   Pvv.Data.Sig /= Signature then
--//                 raise X_Bad_Procedure_Variable;
--//             end if;
--//             return Pv (Pvv);
--//         end To_Pv;
--//
--//         function From_Pv (Pvv : Pv) return X_Procedure_Variable is
--//         begin
--//             if Pvv = None then
--//                 return None_X_Procedure_Variable;
--//             elsif Pvv.Key /= Magic_Value or else
--//                   Pvv.Data.Key /= Magic_Value or else
--//                   Pvv.Data.Sig /= Signature then
--//                 raise X_Bad_Procedure_Variable;
--//             end if;
--//             return X_Procedure_Variable (Pvv);
--//         end From_Pv;
--//
--//     end Func_In_In_In_X_String;
--//
--/ end if; -- Cdf_Hpux

--\x0c
    ------------------------------------------------------------------------------
-- Function with 3 In parameters return String.
------------------------------------------------------------------------------
--/ if TeleGen2 and then Unix then
--//
--// package body Func_In_In_In_X_String is
--//
--//    Signature : constant X_Procedure_Signature :=
--//       X_Unique_Procedure_Signature;
--//
--//    function Invoke_Subprog (Subprog : System.Address;
--//                             A4      : System.Address;
--//                             Arg1    : System.Address) return X_String;
--//    pragma Interface (Assembly, Invoke_Subprog);
--//    pragma Linkname (Invoke_Subprog, "_Xlbmt_Invoke_String_Function");
--//
--//    function Get_A4 return System.Address;
--//    pragma Interface (Assembly, Get_A4);
--//    pragma Linkname (Get_A4, "_Xlbmt_Get_A4");
--//
--//    function Call (Pvv   :    Pv;
--//                   Data1 : in Parm1;
--//                   Data2 : in Parm2;
--//                   Data3 : in Parm3) return X_String is
--//    begin
--//        if Pvv = None or else
--//           Pvv.Key /= Magic_Value or else
--//           Pvv.Data.Key /= Magic_Value or else
--//           Pvv.Data.Sig /= Signature then
--//            raise X_Bad_Procedure_Variable;
--//        end if;
--//        return Invoke_Subprog (Pvv.Data.Subprog, Pvv.Data.A4, Pvv'Address);
--//    end Call;
--//
--//    function Value return Pv is
--//        Pvr : X_Procedure_Variable;
--//    begin
--//        Pvr := New_Procedure_Data (Signature, Called'Address, Get_A4 );
--//        return Pv (Pvr);
--//    exception
--//        when others =>
--//            Heap_Free_X_Procedure_Data (Pvr.Data);
--//            Heap_Free_X_Procedure_Variable (Pvr);
--//            raise;
--//    end Value;
--//
--//    procedure Free (Pvv : in out Pv) is
--//    begin
--//        if Pvv = None or else
--//           Pvv.Key /= Magic_Value or else
--//           Pvv.Data.Key /= Magic_Value or else
--//           Pvv.Data.Sig /= Signature then
--//            raise X_Bad_Procedure_Variable;
--//        end if;
--//        Free_X_Procedure_Variable (X_Procedure_Variable (Pvv));
--//    end Free;
--//
--//    function To_Pv (Pvv : X_Procedure_Variable) return Pv is
--//    begin
--//        if Pvv = None_X_Procedure_Variable then
--//            return None;
--//        elsif Pvv.Key /= Magic_Value or else
--//              Pvv.Data.Key /= Magic_Value or else
--//              Pvv.Data.Sig /= Signature then
--//            raise X_Bad_Procedure_Variable;
--//        end if;
--//        return Pv (Pvv);
--//    end To_Pv;
--//
--//    function From_Pv (Pvv : Pv) return X_Procedure_Variable is
--//    begin
--//        if Pvv = None then
--//            return None_X_Procedure_Variable;
--//        elsif Pvv.Key /= Magic_Value or else
--//              Pvv.Data.Key /= Magic_Value or else
--//              Pvv.Data.Sig /= Signature then
--//            raise X_Bad_Procedure_Variable;
--//        end if;
--//        return X_Procedure_Variable (Pvv);
--//    end From_Pv;
--//
--// end Func_In_In_In_X_String;
--//
--/ end if; -- TeleGen2 and then Unix

--\x0c
    ------------------------------------------------------------------------------
-- Function with 3 In parameters.
------------------------------------------------------------------------------
--/ if R1000 then

    package body Func_In_In_In is

        Force_Constrained_Type : Ret;   -- Forces Ret type to be a fully
                                        -- constrained type; LRM 12.3.2 (4).

        Signature  : constant X_Procedure_Signature :=  
           X_Unique_Procedure_Signature;  
        Signature1 : constant Long_Integer          :=  
           Long_Integer (Signature.First) * 2 ** 31 +  
              Long_Integer (Signature.Second);

        function Call (Pvv   :    Pv;  
                       Data1 : in Parm1;  
                       Data2 : in Parm2;  
                       Data3 : in Parm3) return Ret is  
            Return_Value : Ret;  
            Pvvv         : Subprogram_Implementation.Subprogram_Type;  
            Offset       : constant Si.Offset_Vector :=  
               (Pvvv'Offset, Data1'Offset, Data2'Offset,  
                Data3'Offset, Return_Value'Offset);  
        begin  
            if Pvv = None or else  
               Pvv.Key /= Magic_Value or else  
               Pvv.Data.Key /= Magic_Value or else  
               Pvv.Data.Sig /= Signature then  
                raise X_Bad_Procedure_Variable;  
            end if;  
            Pvvv := Pvv.Data.Subprog;  
            Si.Invoke (Modes_Func_In_In_In, Offset);  
            return Return_Value;  
        end Call;

        function Value return Pv is  
            Pdr : X_Procedure_Data;  
            Pvr : X_Procedure_Variable;  
        begin  
            Pdr := new X_Procedure_Data_Rec'  
                          (Key     => Magic_Value,  
                           Sig     => Signature,  
                           Subprog => Si.Get (Modes_Func_In_In_In, Signature1));  
            Pvr := new X_Procedure_Variable_Rec'  
                          (Key  => Magic_Value,  
                           Data => Pdr);  
            return Pv (Pvr);  
        exception  
            when others =>  
                Heap_Free_X_Procedure_Data (Pdr);  
                Heap_Free_X_Procedure_Variable (Pvr);  
                raise;  
        end Value;

        procedure Free (Pvv : in out Pv) is  
        begin  
            if Pvv = None or else  
               Pvv.Key /= Magic_Value or else  
               Pvv.Data.Key /= Magic_Value or else  
               Pvv.Data.Sig /= Signature then  
                raise X_Bad_Procedure_Variable;  
            end if;  
            Free_X_Procedure_Variable (X_Procedure_Variable (Pvv));  
        end Free;

        function To_Pv (Pvv : X_Procedure_Variable) return Pv is  
        begin  
            if Pvv = None_X_Procedure_Variable then  
                return None;  
            elsif Pvv.Key /= Magic_Value or else  
                  Pvv.Data.Key /= Magic_Value or else  
                  Pvv.Data.Sig /= Signature then  
                raise X_Bad_Procedure_Variable;  
            end if;  
            return Pv (Pvv);  
        end To_Pv;

        function From_Pv (Pvv : Pv) return X_Procedure_Variable is  
        begin  
            if Pvv = None then  
                return None_X_Procedure_Variable;  
            elsif Pvv.Key /= Magic_Value or else  
                  Pvv.Data.Key /= Magic_Value or else  
                  Pvv.Data.Sig /= Signature then  
                raise X_Bad_Procedure_Variable;  
            end if;  
            return X_Procedure_Variable (Pvv);  
        end From_Pv;

    end Func_In_In_In;

--/ end if; -- R1000

--\x0c
    ------------------------------------------------------------------------------
-- Function with 3 In parameters.
------------------------------------------------------------------------------
--/ if Cdf_Hpux then
--//
--//     package body Func_In_In_In is
--//
--//         Force_Constrained_Type : Ret;   -- Forces Ret type to be a fully
--//                                         -- constrained type; LRM 12.3.2 (4).
--//
--//         Signature : constant X_Procedure_Signature :=
--//            X_Unique_Procedure_Signature;
--//
--//         function Invoke_Subprog (Subprog : System.Address;
--//                                  A1      : System.Address;
--//                                  Offset  : Integer) return Ret;
--//         pragma Interface (Assembly, Invoke_Subprog);
--//         pragma Import_Function
--//            (Internal        => Invoke_Subprog,
--//             External        => "__Xlbmt_InOut_Invoke_Function",
--//             Parameter_Types => (System.Address, System.Address, Integer),
--//             Mechanism       => (Value, Value, Value),
--//             Result_Type     => Ret);
--//
--//         function Get_A7 return Integer;
--//         pragma Interface (Assembly, Get_A7);
--//         pragma Import_Function (Internal        => Get_A7,
--//                                 External        => "__Xlbmt_Get_A7",
--//                                 Parameter_Types => null,
--//                                 Result_Type     => Integer);
--//
--//         function Get_A1 return System.Address;
--//         pragma Interface (Assembly, Get_A1);
--//         pragma Import_Function (Internal        => Get_A1,
--//                                 External        => "__Xlbmt_Get_A1",
--//                                 Parameter_Types => null,
--//                                 Result_Type     => System.Address);
--//
--//         function Call (Pvv   :    Pv;
--//                        Data1 : in Parm1;
--//                        Data2 : in Parm2;
--//                        Data3 : in Parm3) return Ret is
--//             Sp1, Sp2 : Integer;
--//
--//             procedure Call (Data1 : in Parm1;
--//                             Data2 : in Parm2;
--//                             Data3 : in Parm3) is
--//             begin
--//                 Sp2 := Get_A7;
--//             end Call;
--//
--//         begin
--//             if Pvv = None or else Pvv.Key /= Magic_Value or else
--//                Pvv.Data.Key /= Magic_Value or else
--//                Pvv.Data.Sig /= Signature then
--//                 raise X_Bad_Procedure_Variable;
--//             end if;
--//
--//             Sp1 := Get_A7;
--//             Call (Data1, Data2, Data3);
--//             return Invoke_Subprog (Pvv.Data.Subprog, Pvv.Data.A1, Sp1 - Sp2);
--//         end Call;
--//
--//         function Value return Pv is
--//             Pvr : X_Procedure_Variable;
--//         begin
--//             Pvr := New_Procedure_Data (Signature, Called'Address, Get_A1);
--//             return Pv (Pvr);
--//         exception
--//             when others =>
--//                 Heap_Free_X_Procedure_Data (Pvr.Data);
--//                 Heap_Free_X_Procedure_Variable (Pvr);
--//                 raise;
--//         end Value;
--//
--//         procedure Free (Pvv : in out Pv) is
--//         begin
--//             if Pvv = None or else Pvv.Key /= Magic_Value or else
--//                Pvv.Data.Key /= Magic_Value or else
--//                Pvv.Data.Sig /= Signature then
--//                 raise X_Bad_Procedure_Variable;
--//             end if;
--//             Free_X_Procedure_Variable (X_Procedure_Variable (Pvv));
--//         end Free;
--//
--//         function To_Pv (Pvv : X_Procedure_Variable) return Pv is
--//         begin
--//             if Pvv = None_X_Procedure_Variable then
--//                 return None;
--//             elsif Pvv.Key /= Magic_Value or else
--//                   Pvv.Data.Key /= Magic_Value or else
--//                   Pvv.Data.Sig /= Signature then
--//                 raise X_Bad_Procedure_Variable;
--//             end if;
--//             return Pv (Pvv);
--//         end To_Pv;
--//
--//         function From_Pv (Pvv : Pv) return X_Procedure_Variable is
--//         begin
--//             if Pvv = None then
--//                 return None_X_Procedure_Variable;
--//             elsif Pvv.Key /= Magic_Value or else
--//                   Pvv.Data.Key /= Magic_Value or else
--//                   Pvv.Data.Sig /= Signature then
--//                 raise X_Bad_Procedure_Variable;
--//             end if;
--//             return X_Procedure_Variable (Pvv);
--//         end From_Pv;
--//
--//     end Func_In_In_In;
--//
--/ end if; -- Cdf_Hpux

--\x0c
    ------------------------------------------------------------------------------
-- Function with 3 In parameters.
------------------------------------------------------------------------------
--/ if TeleGen2 and then Unix then
--//
--// package body Func_In_In_In is
--//
--//    Force_Constrained_Type : Ret;   -- Forces Ret type to be a fully
--//                                    -- constrained type; LRM 12.3.2 (4).
--//
--//    Signature : constant X_Procedure_Signature :=
--//       X_Unique_Procedure_Signature;
--//
--//    function Invoke_Subprog (Subprog : System.Address;
--//                             A4      : System.Address;
--//                             Arg1    : System.Address) return Ret;
--//    pragma Interface (Assembly, Invoke_Subprog);
--//    pragma Linkname (Invoke_Subprog, "_Xlbmt_Invoke_Function");
--//
--//    function Get_A4 return System.Address;
--//    pragma Interface (Assembly, Get_A4);
--//    pragma Linkname (Get_A4, "_Xlbmt_Get_A4");
--//
--//    function Call (Pvv   :    Pv;
--//                   Data1 : in Parm1;
--//                   Data2 : in Parm2;
--//                   Data3 : in Parm3) return Ret is
--//    begin
--//        if Pvv = None or else
--//           Pvv.Key /= Magic_Value or else
--//           Pvv.Data.Key /= Magic_Value or else
--//           Pvv.Data.Sig /= Signature then
--//            raise X_Bad_Procedure_Variable;
--//        end if;
--//        return Invoke_Subprog (Pvv.Data.Subprog, Pvv.Data.A4, Pvv'Address);
--//    end Call;
--//
--//    function Value return Pv is
--//        Pvr : X_Procedure_Variable;
--//    begin
--//        Pvr := New_Procedure_Data (Signature, Called'Address, Get_A4 );
--//        return Pv (Pvr);
--//    exception
--//        when others =>
--//            Heap_Free_X_Procedure_Data (Pvr.Data);
--//            Heap_Free_X_Procedure_Variable (Pvr);
--//            raise;
--//    end Value;
--//
--//    procedure Free (Pvv : in out Pv) is
--//    begin
--//        if Pvv = None or else
--//           Pvv.Key /= Magic_Value or else
--//           Pvv.Data.Key /= Magic_Value or else
--//           Pvv.Data.Sig /= Signature then
--//            raise X_Bad_Procedure_Variable;
--//        end if;
--//        Free_X_Procedure_Variable (X_Procedure_Variable (Pvv));
--//    end Free;
--//
--//    function To_Pv (Pvv : X_Procedure_Variable) return Pv is
--//    begin
--//        if Pvv = None_X_Procedure_Variable then
--//            return None;
--//        elsif Pvv.Key /= Magic_Value or else
--//              Pvv.Data.Key /= Magic_Value or else
--//              Pvv.Data.Sig /= Signature then
--//            raise X_Bad_Procedure_Variable;
--//        end if;
--//        return Pv (Pvv);
--//    end To_Pv;
--//
--//    function From_Pv (Pvv : Pv) return X_Procedure_Variable is
--//    begin
--//        if Pvv = None then
--//            return None_X_Procedure_Variable;
--//        elsif Pvv.Key /= Magic_Value or else
--//              Pvv.Data.Key /= Magic_Value or else
--//              Pvv.Data.Sig /= Signature then
--//            raise X_Bad_Procedure_Variable;
--//        end if;
--//        return X_Procedure_Variable (Pvv);
--//    end From_Pv;
--//
--// end Func_In_In_In;
--//
--/ end if; -- TeleGen2 and then Unix

--\x0c
    ------------------------------------------------------------------------------
-- Function with 5 In parameters.
------------------------------------------------------------------------------
--/ if R1000 then

    package body Func_In5 is

        Force_Constrained_Type : Ret;   -- Forces Ret type to be a fully
                                        -- constrained type; LRM 12.3.2 (4).

        Signature  : constant X_Procedure_Signature :=  
           X_Unique_Procedure_Signature;  
        Signature1 : constant Long_Integer          :=  
           Long_Integer (Signature.First) * 2 ** 31 +  
              Long_Integer (Signature.Second);

        function Call (Pvv   :    Pv;  
                       Data1 : in Parm1;  
                       Data2 : in Parm2;  
                       Data3 : in Parm3;  
                       Data4 : in Parm4;  
                       Data5 : in Parm5) return Ret is  
            Return_Value : Ret;  
            Pvvv         : Subprogram_Implementation.Subprogram_Type;  
            Offset       : constant Si.Offset_Vector :=  
               (Pvvv'Offset, Data1'Offset, Data2'Offset, Data3'Offset,  
                Data4'Offset, Data5'Offset, Return_Value'Offset);  
        begin  
            if Pvv = None or else  
               Pvv.Key /= Magic_Value or else  
               Pvv.Data.Key /= Magic_Value or else  
               Pvv.Data.Sig /= Signature then  
                raise X_Bad_Procedure_Variable;  
            end if;  
            Pvvv := Pvv.Data.Subprog;  
            Si.Invoke (Modes_Func_In5, Offset);  
            return Return_Value;  
        end Call;

        function Value return Pv is  
            Pdr : X_Procedure_Data;  
            Pvr : X_Procedure_Variable;  
        begin  
            Pdr := new X_Procedure_Data_Rec'  
                          (Key     => Magic_Value,  
                           Sig     => Signature,  
                           Subprog => Si.Get (Modes_Func_In5, Signature1));  
            Pvr := new X_Procedure_Variable_Rec'  
                          (Key  => Magic_Value,  
                           Data => Pdr);  
            return Pv (Pvr);  
        exception  
            when others =>  
                Heap_Free_X_Procedure_Data (Pdr);  
                Heap_Free_X_Procedure_Variable (Pvr);  
                raise;  
        end Value;

        procedure Free (Pvv : in out Pv) is  
        begin  
            if Pvv = None or else  
               Pvv.Key /= Magic_Value or else  
               Pvv.Data.Key /= Magic_Value or else  
               Pvv.Data.Sig /= Signature then  
                raise X_Bad_Procedure_Variable;  
            end if;  
            Free_X_Procedure_Variable (X_Procedure_Variable (Pvv));  
        end Free;

        function To_Pv (Pvv : X_Procedure_Variable) return Pv is  
        begin  
            if Pvv = None_X_Procedure_Variable then  
                return None;  
            elsif Pvv.Key /= Magic_Value or else  
                  Pvv.Data.Key /= Magic_Value or else  
                  Pvv.Data.Sig /= Signature then  
                raise X_Bad_Procedure_Variable;  
            end if;  
            return Pv (Pvv);  
        end To_Pv;

        function From_Pv (Pvv : Pv) return X_Procedure_Variable is  
        begin  
            if Pvv = None then  
                return None_X_Procedure_Variable;  
            elsif Pvv.Key /= Magic_Value or else  
                  Pvv.Data.Key /= Magic_Value or else  
                  Pvv.Data.Sig /= Signature then  
                raise X_Bad_Procedure_Variable;  
            end if;  
            return X_Procedure_Variable (Pvv);  
        end From_Pv;

    end Func_In5;

--/ end if; -- R1000

--\x0c
    ------------------------------------------------------------------------------
-- Function with 5 In parameters.
------------------------------------------------------------------------------
--/ if Cdf_Hpux then
--//
--//     package body Func_In5 is
--//
--//         Force_Constrained_Type : Ret;   -- Forces Ret type to be a fully
--//                                         -- constrained type; LRM 12.3.2 (4).
--//
--//         Signature : constant X_Procedure_Signature :=
--//            X_Unique_Procedure_Signature;
--//
--//         function Invoke_Subprog (Subprog : System.Address;
--//                                  A1      : System.Address;
--//                                  Offset  : Integer) return Ret;
--//         pragma Interface (Assembly, Invoke_Subprog);
--//         pragma Import_Function
--//            (Internal        => Invoke_Subprog,
--//             External        => "__Xlbmt_InOut_Invoke_Function",
--//             Parameter_Types => (System.Address, System.Address, Integer),
--//             Mechanism       => (Value, Value, Value),
--//             Result_Type     => Ret);
--//
--//         function Get_A7 return Integer;
--//         pragma Interface (Assembly, Get_A7);
--//         pragma Import_Function (Internal        => Get_A7,
--//                                 External        => "__Xlbmt_Get_A7",
--//                                 Parameter_Types => null,
--//                                 Result_Type     => Integer);
--//
--//         function Get_A1 return System.Address;
--//         pragma Interface (Assembly, Get_A1);
--//         pragma Import_Function (Internal        => Get_A1,
--//                                 External        => "__Xlbmt_Get_A1",
--//                                 Parameter_Types => null,
--//                                 Result_Type     => System.Address);
--//
--//         function Call (Pvv   :    Pv;
--//                        Data1 : in Parm1;
--//                        Data2 : in Parm2;
--//                        Data3 : in Parm3;
--//                        Data4 : in Parm4;
--//                        Data5 : in Parm5) return Ret is
--//             Sp1, Sp2 : Integer;
--//
--//             procedure Call (Data1 : in Parm1;
--//                             Data2 : in Parm2;
--//                             Data3 : in Parm3;
--//                             Data4 : in Parm4;
--//                             Data5 : in Parm5) is
--//             begin
--//                 Sp2 := Get_A7;
--//             end Call;
--//
--//         begin
--//             if Pvv = None or else Pvv.Key /= Magic_Value or else
--//                Pvv.Data.Key /= Magic_Value or else
--//                Pvv.Data.Sig /= Signature then
--//                 raise X_Bad_Procedure_Variable;
--//             end if;
--//
--//             Sp1 := Get_A7;
--//             Call (Data1, Data2, Data3, Data4, Data5);
--//             return Invoke_Subprog (Pvv.Data.Subprog, Pvv.Data.A1, Sp1 - Sp2);
--//         end Call;
--//
--//         function Value return Pv is
--//             Pvr : X_Procedure_Variable;
--//         begin
--//             Pvr := New_Procedure_Data (Signature, Called'Address, Get_A1);
--//             return Pv (Pvr);
--//         exception
--//             when others =>
--//                 Heap_Free_X_Procedure_Data (Pvr.Data);
--//                 Heap_Free_X_Procedure_Variable (Pvr);
--//                 raise;
--//         end Value;
--//
--//         procedure Free (Pvv : in out Pv) is
--//         begin
--//             if Pvv = None or else Pvv.Key /= Magic_Value or else
--//                Pvv.Data.Key /= Magic_Value or else
--//                Pvv.Data.Sig /= Signature then
--//                 raise X_Bad_Procedure_Variable;
--//             end if;
--//             Free_X_Procedure_Variable (X_Procedure_Variable (Pvv));
--//         end Free;
--//
--//         function To_Pv (Pvv : X_Procedure_Variable) return Pv is
--//         begin
--//             if Pvv = None_X_Procedure_Variable then
--//                 return None;
--//             elsif Pvv.Key /= Magic_Value or else
--//                   Pvv.Data.Key /= Magic_Value or else
--//                   Pvv.Data.Sig /= Signature then
--//                 raise X_Bad_Procedure_Variable;
--//             end if;
--//             return Pv (Pvv);
--//         end To_Pv;
--//
--//         function From_Pv (Pvv : Pv) return X_Procedure_Variable is
--//         begin
--//             if Pvv = None then
--//                 return None_X_Procedure_Variable;
--//             elsif Pvv.Key /= Magic_Value or else
--//                   Pvv.Data.Key /= Magic_Value or else
--//                   Pvv.Data.Sig /= Signature then
--//                 raise X_Bad_Procedure_Variable;
--//             end if;
--//             return X_Procedure_Variable (Pvv);
--//         end From_Pv;
--//
--//     end Func_In5;
--//
--/ end if; -- Cdf_Hpux

--\x0c
    ------------------------------------------------------------------------------
-- Function with 5 In parameters.
------------------------------------------------------------------------------
--/ if TeleGen2 and then Unix then
--//
--// package body Func_In5 is
--//
--//    Force_Constrained_Type : Ret;   -- Forces Ret type to be a fully
--//                                    -- constrained type; LRM 12.3.2 (4).
--//
--//    Signature : constant X_Procedure_Signature :=
--//       X_Unique_Procedure_Signature;
--//
--//    function Invoke_Subprog (Subprog : System.Address;
--//                             A4      : System.Address;
--//                             Arg1    : System.Address) return Ret;
--//    pragma Interface (Assembly, Invoke_Subprog);
--//    pragma Linkname (Invoke_Subprog, "_Xlbmt_Invoke_Function");
--//
--//    function Get_A4 return System.Address;
--//    pragma Interface (Assembly, Get_A4);
--//    pragma Linkname (Get_A4, "_Xlbmt_Get_A4");
--//
--//    function Call (Pvv   :    Pv;
--//                   Data1 : in Parm1;
--//                   Data2 : in Parm2;
--//                   Data3 : in Parm3;
--//                   Data4 : in Parm4;
--//                   Data5 : in Parm5) return Ret is
--//    begin
--//        if Pvv = None or else
--//           Pvv.Key /= Magic_Value or else
--//           Pvv.Data.Key /= Magic_Value or else
--//           Pvv.Data.Sig /= Signature then
--//            raise X_Bad_Procedure_Variable;
--//        end if;
--//        return Invoke_Subprog (Pvv.Data.Subprog, Pvv.Data.A4, Pvv'Address);
--//    end Call;
--//
--//    function Value return Pv is
--//        Pvr : X_Procedure_Variable;
--//    begin
--//        Pvr := New_Procedure_Data (Signature, Called'Address, Get_A4 );
--//        return Pv (Pvr);
--//    exception
--//        when others =>
--//            Heap_Free_X_Procedure_Data (Pvr.Data);
--//            Heap_Free_X_Procedure_Variable (Pvr);
--//            raise;
--//    end Value;
--//
--//    procedure Free (Pvv : in out Pv) is
--//    begin
--//        if Pvv = None or else
--//           Pvv.Key /= Magic_Value or else
--//           Pvv.Data.Key /= Magic_Value or else
--//           Pvv.Data.Sig /= Signature then
--//            raise X_Bad_Procedure_Variable;
--//        end if;
--//        Free_X_Procedure_Variable (X_Procedure_Variable (Pvv));
--//    end Free;
--//
--//    function To_Pv (Pvv : X_Procedure_Variable) return Pv is
--//    begin
--//        if Pvv = None_X_Procedure_Variable then
--//            return None;
--//        elsif Pvv.Key /= Magic_Value or else
--//              Pvv.Data.Key /= Magic_Value or else
--//              Pvv.Data.Sig /= Signature then
--//            raise X_Bad_Procedure_Variable;
--//        end if;
--//        return Pv (Pvv);
--//    end To_Pv;
--//
--//    function From_Pv (Pvv : Pv) return X_Procedure_Variable is
--//    begin
--//        if Pvv = None then
--//            return None_X_Procedure_Variable;
--//        elsif Pvv.Key /= Magic_Value or else
--//              Pvv.Data.Key /= Magic_Value or else
--//              Pvv.Data.Sig /= Signature then
--//            raise X_Bad_Procedure_Variable;
--//        end if;
--//        return X_Procedure_Variable (Pvv);
--//    end From_Pv;
--//
--// end Func_In5;
--//
--/ end if; -- TeleGen2 and then Unix

--\x0c
    ------------------------------------------------------------------------------
-- Function with 10 In parameters.
------------------------------------------------------------------------------
--/ if R1000 then

    package body Func_In10 is

        Force_Constrained_Type : Ret;   -- Forces Ret type to be a fully
                                        -- constrained type; LRM 12.3.2 (4).

        Signature  : constant X_Procedure_Signature :=  
           X_Unique_Procedure_Signature;  
        Signature1 : constant Long_Integer          :=  
           Long_Integer (Signature.First) * 2 ** 31 +  
              Long_Integer (Signature.Second);

        function Call (Pvv    :    Pv;  
                       Data1  : in Parm1;  
                       Data2  : in Parm2;  
                       Data3  : in Parm3;  
                       Data4  : in Parm4;  
                       Data5  : in Parm5;  
                       Data6  : in Parm6;  
                       Data7  : in Parm7;  
                       Data8  : in Parm8;  
                       Data9  : in Parm9;  
                       Data10 : in Parm10) return Ret is  
            Return_Value : Ret;  
            Pvvv         : Subprogram_Implementation.Subprogram_Type;  
            Offset       : constant Si.Offset_Vector :=  
               (Pvvv'Offset, Data1'Offset, Data2'Offset, Data3'Offset,  
                Data4'Offset, Data5'Offset, Data6'Offset, Data7'Offset,  
                Data8'Offset, Data9'Offset, Data10'Offset, Return_Value'Offset);  
        begin  
            if Pvv = None or else  
               Pvv.Key /= Magic_Value or else  
               Pvv.Data.Key /= Magic_Value or else  
               Pvv.Data.Sig /= Signature then  
                raise X_Bad_Procedure_Variable;  
            end if;  
            Pvvv := Pvv.Data.Subprog;  
            Si.Invoke (Modes_Func_In10, Offset);  
            return Return_Value;  
        end Call;

        function Value return Pv is  
            Pdr : X_Procedure_Data;  
            Pvr : X_Procedure_Variable;  
        begin  
            Pdr := new X_Procedure_Data_Rec'  
                          (Key     => Magic_Value,  
                           Sig     => Signature,  
                           Subprog => Si.Get (Modes_Func_In10, Signature1));  
            Pvr := new X_Procedure_Variable_Rec'  
                          (Key  => Magic_Value,  
                           Data => Pdr);  
            return Pv (Pvr);  
        exception  
            when others =>  
                Heap_Free_X_Procedure_Data (Pdr);  
                Heap_Free_X_Procedure_Variable (Pvr);  
                raise;  
        end Value;

        procedure Free (Pvv : in out Pv) is  
        begin  
            if Pvv = None or else  
               Pvv.Key /= Magic_Value or else  
               Pvv.Data.Key /= Magic_Value or else  
               Pvv.Data.Sig /= Signature then  
                raise X_Bad_Procedure_Variable;  
            end if;  
            Free_X_Procedure_Variable (X_Procedure_Variable (Pvv));  
        end Free;

        function To_Pv (Pvv : X_Procedure_Variable) return Pv is  
        begin  
            if Pvv = None_X_Procedure_Variable then  
                return None;  
            elsif Pvv.Key /= Magic_Value or else  
                  Pvv.Data.Key /= Magic_Value or else  
                  Pvv.Data.Sig /= Signature then  
                raise X_Bad_Procedure_Variable;  
            end if;  
            return Pv (Pvv);  
        end To_Pv;

        function From_Pv (Pvv : Pv) return X_Procedure_Variable is  
        begin  
            if Pvv = None then  
                return None_X_Procedure_Variable;  
            elsif Pvv.Key /= Magic_Value or else  
                  Pvv.Data.Key /= Magic_Value or else  
                  Pvv.Data.Sig /= Signature then  
                raise X_Bad_Procedure_Variable;  
            end if;  
            return X_Procedure_Variable (Pvv);  
        end From_Pv;

    end Func_In10;

--/ end if; -- R1000

--\x0c
    ------------------------------------------------------------------------------
-- Function with 10 In parameters.
------------------------------------------------------------------------------
--/ if Cdf_Hpux then
--//
--//     package body Func_In10 is
--//
--//         Force_Constrained_Type : Ret;   -- Forces Ret type to be a fully
--//                                         -- constrained type; LRM 12.3.2 (4).
--//
--//         Signature : constant X_Procedure_Signature :=
--//            X_Unique_Procedure_Signature;
--//
--//         function Invoke_Subprog (Subprog : System.Address;
--//                                  A1      : System.Address;
--//                                  Offset  : Integer) return Ret;
--//         pragma Interface (Assembly, Invoke_Subprog);
--//         pragma Import_Function
--//            (Internal        => Invoke_Subprog,
--//             External        => "__Xlbmt_InOut_Invoke_Function",
--//             Parameter_Types => (System.Address, System.Address, Integer),
--//             Mechanism       => (Value, Value, Value),
--//             Result_Type     => Ret);
--//
--//         function Get_A7 return Integer;
--//         pragma Interface (Assembly, Get_A7);
--//         pragma Import_Function (Internal        => Get_A7,
--//                                 External        => "__Xlbmt_Get_A7",
--//                                 Parameter_Types => null,
--//                                 Result_Type     => Integer);
--//
--//         function Get_A1 return System.Address;
--//         pragma Interface (Assembly, Get_A1);
--//         pragma Import_Function (Internal        => Get_A1,
--//                                 External        => "__Xlbmt_Get_A1",
--//                                 Parameter_Types => null,
--//                                 Result_Type     => System.Address);
--//
--//         function Call (Pvv    :    Pv;
--//                        Data1  : in Parm1;
--//                        Data2  : in Parm2;
--//                        Data3  : in Parm3;
--//                        Data4  : in Parm4;
--//                        Data5  : in Parm5;
--//                        Data6  : in Parm6;
--//                        Data7  : in Parm7;
--//                        Data8  : in Parm8;
--//                        Data9  : in Parm9;
--//                        Data10 : in Parm10) return Ret is
--//             Sp1, Sp2 : Integer;
--//
--//             procedure Call (Data1  : in Parm1;
--//                             Data2  : in Parm2;
--//                             Data3  : in Parm3;
--//                             Data4  : in Parm4;
--//                             Data5  : in Parm5;
--//                             Data6  : in Parm6;
--//                             Data7  : in Parm7;
--//                             Data8  : in Parm8;
--//                             Data9  : in Parm9;
--//                             Data10 : in Parm10) is
--//             begin
--//                 Sp2 := Get_A7;
--//             end Call;
--//
--//         begin
--//             if Pvv = None or else Pvv.Key /= Magic_Value or else
--//                Pvv.Data.Key /= Magic_Value or else
--//                Pvv.Data.Sig /= Signature then
--//                 raise X_Bad_Procedure_Variable;
--//             end if;
--//
--//             Sp1 := Get_A7;
--//             Call (Data1, Data2, Data3, Data4, Data5,
--//                   Data6, Data7, Data8, Data9, Data10);
--//             return Invoke_Subprog (Pvv.Data.Subprog, Pvv.Data.A1, Sp1 - Sp2);
--//         end Call;
--//
--//         function Value return Pv is
--//             Pvr : X_Procedure_Variable;
--//         begin
--//             Pvr := New_Procedure_Data (Signature, Called'Address, Get_A1);
--//             return Pv (Pvr);
--//         exception
--//             when others =>
--//                 Heap_Free_X_Procedure_Data (Pvr.Data);
--//                 Heap_Free_X_Procedure_Variable (Pvr);
--//                 raise;
--//         end Value;
--//
--//         procedure Free (Pvv : in out Pv) is
--//         begin
--//             if Pvv = None or else Pvv.Key /= Magic_Value or else
--//                Pvv.Data.Key /= Magic_Value or else
--//                Pvv.Data.Sig /= Signature then
--//                 raise X_Bad_Procedure_Variable;
--//             end if;
--//             Free_X_Procedure_Variable (X_Procedure_Variable (Pvv));
--//         end Free;
--//
--//         function To_Pv (Pvv : X_Procedure_Variable) return Pv is
--//         begin
--//             if Pvv = None_X_Procedure_Variable then
--//                 return None;
--//             elsif Pvv.Key /= Magic_Value or else
--//                   Pvv.Data.Key /= Magic_Value or else
--//                   Pvv.Data.Sig /= Signature then
--//                 raise X_Bad_Procedure_Variable;
--//             end if;
--//             return Pv (Pvv);
--//         end To_Pv;
--//
--//         function From_Pv (Pvv : Pv) return X_Procedure_Variable is
--//         begin
--//             if Pvv = None then
--//                 return None_X_Procedure_Variable;
--//             elsif Pvv.Key /= Magic_Value or else
--//                   Pvv.Data.Key /= Magic_Value or else
--//                   Pvv.Data.Sig /= Signature then
--//                 raise X_Bad_Procedure_Variable;
--//             end if;
--//             return X_Procedure_Variable (Pvv);
--//         end From_Pv;
--//
--//     end Func_In10;
--//
--/ end if; -- Cdf_Hpux

--\x0c
    ------------------------------------------------------------------------------
-- Function with 10 In parameters.
------------------------------------------------------------------------------
--/ if TeleGen2 and then Unix then
--//
--// package body Func_In10 is
--//
--//    Force_Constrained_Type : Ret;   -- Forces Ret type to be a fully
--//                                    -- constrained type; LRM 12.3.2 (4).
--//
--//    Signature : constant X_Procedure_Signature :=
--//       X_Unique_Procedure_Signature;
--//
--//    function Invoke_Subprog (Subprog : System.Address;
--//                             A4      : System.Address;
--//                             Arg1    : System.Address) return Ret;
--//    pragma Interface (Assembly, Invoke_Subprog);
--//    pragma Linkname (Invoke_Subprog, "_Xlbmt_Invoke_Function");
--//
--//    function Get_A4 return System.Address;
--//    pragma Interface (Assembly, Get_A4);
--//    pragma Linkname (Get_A4, "_Xlbmt_Get_A4");
--//
--//    function Call (Pvv    :    Pv;
--//                   Data1  : in Parm1;
--//                   Data2  : in Parm2;
--//                   Data3  : in Parm3;
--//                   Data4  : in Parm4;
--//                   Data5  : in Parm5;
--//                   Data6  : in Parm6;
--//                   Data7  : in Parm7;
--//                   Data8  : in Parm8;
--//                   Data9  : in Parm9;
--//                   Data10 : in Parm10) return Ret is
--//    begin
--//        if Pvv = None or else
--//           Pvv.Key /= Magic_Value or else
--//           Pvv.Data.Key /= Magic_Value or else
--//           Pvv.Data.Sig /= Signature then
--//            raise X_Bad_Procedure_Variable;
--//        end if;
--//        return Invoke_Subprog (Pvv.Data.Subprog, Pvv.Data.A4, Pvv'Address);
--//    end Call;
--//
--//    function Value return Pv is
--//        Pvr : X_Procedure_Variable;
--//    begin
--//        Pvr := New_Procedure_Data (Signature, Called'Address, Get_A4 );
--//        return Pv (Pvr);
--//    exception
--//        when others =>
--//            Heap_Free_X_Procedure_Data (Pvr.Data);
--//            Heap_Free_X_Procedure_Variable (Pvr);
--//            raise;
--//    end Value;
--//
--//    procedure Free (Pvv : in out Pv) is
--//    begin
--//        if Pvv = None or else
--//           Pvv.Key /= Magic_Value or else
--//           Pvv.Data.Key /= Magic_Value or else
--//           Pvv.Data.Sig /= Signature then
--//            raise X_Bad_Procedure_Variable;
--//        end if;
--//        Free_X_Procedure_Variable (X_Procedure_Variable (Pvv));
--//    end Free;
--//
--//    function To_Pv (Pvv : X_Procedure_Variable) return Pv is
--//    begin
--//        if Pvv = None_X_Procedure_Variable then
--//            return None;
--//        elsif Pvv.Key /= Magic_Value or else
--//              Pvv.Data.Key /= Magic_Value or else
--//              Pvv.Data.Sig /= Signature then
--//            raise X_Bad_Procedure_Variable;
--//        end if;
--//        return Pv (Pvv);
--//    end To_Pv;
--//
--//    function From_Pv (Pvv : Pv) return X_Procedure_Variable is
--//    begin
--//        if Pvv = None then
--//            return None_X_Procedure_Variable;
--//        elsif Pvv.Key /= Magic_Value or else
--//              Pvv.Data.Key /= Magic_Value or else
--//              Pvv.Data.Sig /= Signature then
--//            raise X_Bad_Procedure_Variable;
--//        end if;
--//        return X_Procedure_Variable (Pvv);
--//    end From_Pv;
--//
--// end Func_In10;
--//
--/ end if; -- TeleGen2 and then Unix

--\x0c
    function X_Procedure_Variable_Signature (Pvv : X_Procedure_Variable)  
                                            return X_Procedure_Signature is
------------------------------------------------------------------------------
--  Pvv - Specifies the procedure variable to use
--
-- Called to obtain the X_Signature value for the specified procedure
-- variable value.  Note: The "None" procedure variable values do not have
-- an X_Signature value and will raise Constraint_Error.
------------------------------------------------------------------------------
    begin

        if Pvv = None_X_Procedure_Variable or else  
           Pvv.Key /= Magic_Value or else  
           Pvv.Data.Key /= Magic_Value then  
            raise X_Bad_Procedure_Variable;  
        end if;  
        return Pvv.Data.Sig;

    end X_Procedure_Variable_Signature;

--\x0c
end Xlbt_Proc_Var;  

E3 Meta Data

    nblk1=ce
    nid=ce
    hdr6=19a
        [0x00] rec0=23 rec1=00 rec2=01 rec3=068
        [0x01] rec0=10 rec1=00 rec2=02 rec3=00c
        [0x02] rec0=10 rec1=00 rec2=03 rec3=00e
        [0x03] rec0=14 rec1=00 rec2=04 rec3=046
        [0x04] rec0=1b rec1=00 rec2=05 rec3=010
        [0x05] rec0=00 rec1=00 rec2=cd rec3=008
        [0x06] rec0=15 rec1=00 rec2=06 rec3=026
        [0x07] rec0=00 rec1=00 rec2=cc rec3=03e
        [0x08] rec0=17 rec1=00 rec2=07 rec3=048
        [0x09] rec0=00 rec1=00 rec2=cb rec3=004
        [0x0a] rec0=18 rec1=00 rec2=08 rec3=018
        [0x0b] rec0=00 rec1=00 rec2=ca rec3=00a
        [0x0c] rec0=15 rec1=00 rec2=09 rec3=03e
        [0x0d] rec0=15 rec1=00 rec2=0a rec3=03c
        [0x0e] rec0=19 rec1=00 rec2=0b rec3=030
        [0x0f] rec0=00 rec1=00 rec2=c9 rec3=002
        [0x10] rec0=19 rec1=00 rec2=0c rec3=03c
        [0x11] rec0=19 rec1=00 rec2=0d rec3=000
        [0x12] rec0=1a rec1=00 rec2=0e rec3=070
        [0x13] rec0=01 rec1=00 rec2=c8 rec3=012
        [0x14] rec0=18 rec1=00 rec2=0f rec3=020
        [0x15] rec0=00 rec1=00 rec2=c6 rec3=004
        [0x16] rec0=19 rec1=00 rec2=10 rec3=004
        [0x17] rec0=1c rec1=00 rec2=11 rec3=07e
        [0x18] rec0=14 rec1=00 rec2=12 rec3=038
        [0x19] rec0=16 rec1=00 rec2=13 rec3=004
        [0x1a] rec0=1a rec1=00 rec2=14 rec3=008
        [0x1b] rec0=17 rec1=00 rec2=15 rec3=008
        [0x1c] rec0=1a rec1=00 rec2=16 rec3=036
        [0x1d] rec0=19 rec1=00 rec2=17 rec3=018
        [0x1e] rec0=1a rec1=00 rec2=18 rec3=026
        [0x1f] rec0=1e rec1=00 rec2=19 rec3=04c
        [0x20] rec0=18 rec1=00 rec2=c7 rec3=068
        [0x21] rec0=01 rec1=00 rec2=1a rec3=012
        [0x22] rec0=18 rec1=00 rec2=1b rec3=082
        [0x23] rec0=1d rec1=00 rec2=1c rec3=078
        [0x24] rec0=14 rec1=00 rec2=1d rec3=046
        [0x25] rec0=16 rec1=00 rec2=1e rec3=022
        [0x26] rec0=1a rec1=00 rec2=1f rec3=026
        [0x27] rec0=17 rec1=00 rec2=20 rec3=026
        [0x28] rec0=1a rec1=00 rec2=21 rec3=06e
        [0x29] rec0=1b rec1=00 rec2=22 rec3=004
        [0x2a] rec0=1a rec1=00 rec2=23 rec3=010
        [0x2b] rec0=1d rec1=00 rec2=24 rec3=022
        [0x2c] rec0=00 rec1=00 rec2=c5 rec3=014
        [0x2d] rec0=19 rec1=00 rec2=25 rec3=01e
        [0x2e] rec0=00 rec1=00 rec2=c4 rec3=004
        [0x2f] rec0=19 rec1=00 rec2=26 rec3=01e
        [0x30] rec0=1d rec1=00 rec2=27 rec3=00e
        [0x31] rec0=12 rec1=00 rec2=28 rec3=07c
        [0x32] rec0=14 rec1=00 rec2=29 rec3=054
        [0x33] rec0=1a rec1=00 rec2=2a rec3=020
        [0x34] rec0=19 rec1=00 rec2=2b rec3=01c
        [0x35] rec0=1b rec1=00 rec2=2c rec3=044
        [0x36] rec0=18 rec1=00 rec2=2d rec3=036
        [0x37] rec0=1b rec1=00 rec2=2e rec3=036
        [0x38] rec0=1d rec1=00 rec2=2f rec3=02c
        [0x39] rec0=17 rec1=00 rec2=30 rec3=020
        [0x3a] rec0=00 rec1=00 rec2=c3 rec3=018
        [0x3b] rec0=1a rec1=00 rec2=31 rec3=038
        [0x3c] rec0=19 rec1=00 rec2=32 rec3=00e
        [0x3d] rec0=1a rec1=00 rec2=33 rec3=04c
        [0x3e] rec0=11 rec1=00 rec2=34 rec3=044
        [0x3f] rec0=19 rec1=00 rec2=35 rec3=01c
        [0x40] rec0=19 rec1=00 rec2=36 rec3=012
        [0x41] rec0=19 rec1=00 rec2=37 rec3=01e
        [0x42] rec0=19 rec1=00 rec2=38 rec3=048
        [0x43] rec0=1c rec1=00 rec2=39 rec3=02a
        [0x44] rec0=19 rec1=00 rec2=3a rec3=044
        [0x45] rec0=1c rec1=00 rec2=3b rec3=05a
        [0x46] rec0=01 rec1=00 rec2=c2 rec3=00c
        [0x47] rec0=17 rec1=00 rec2=3c rec3=03e
        [0x48] rec0=00 rec1=00 rec2=c1 rec3=004
        [0x49] rec0=19 rec1=00 rec2=3d rec3=064
        [0x4a] rec0=1d rec1=00 rec2=3e rec3=002
        [0x4b] rec0=13 rec1=00 rec2=3f rec3=052
        [0x4c] rec0=14 rec1=00 rec2=40 rec3=050
        [0x4d] rec0=19 rec1=00 rec2=41 rec3=02c
        [0x4e] rec0=17 rec1=00 rec2=42 rec3=060
        [0x4f] rec0=1c rec1=00 rec2=43 rec3=004
        [0x50] rec0=18 rec1=00 rec2=44 rec3=01c
        [0x51] rec0=1a rec1=00 rec2=45 rec3=086
        [0x52] rec0=1d rec1=00 rec2=46 rec3=024
        [0x53] rec0=19 rec1=00 rec2=47 rec3=03e
        [0x54] rec0=00 rec1=00 rec2=c0 rec3=014
        [0x55] rec0=17 rec1=00 rec2=48 rec3=036
        [0x56] rec0=00 rec1=00 rec2=bf rec3=004
        [0x57] rec0=19 rec1=00 rec2=49 rec3=038
        [0x58] rec0=1d rec1=00 rec2=4a rec3=02a
        [0x59] rec0=12 rec1=00 rec2=4b rec3=094
        [0x5a] rec0=14 rec1=00 rec2=4c rec3=04e
        [0x5b] rec0=17 rec1=00 rec2=4d rec3=01a
        [0x5c] rec0=18 rec1=00 rec2=4e rec3=008
        [0x5d] rec0=17 rec1=00 rec2=4f rec3=07a
        [0x5e] rec0=1c rec1=00 rec2=50 rec3=028
        [0x5f] rec0=17 rec1=00 rec2=51 rec3=030
        [0x60] rec0=1b rec1=00 rec2=52 rec3=036
        [0x61] rec0=1b rec1=00 rec2=53 rec3=016
        [0x62] rec0=19 rec1=00 rec2=54 rec3=042
        [0x63] rec0=00 rec1=00 rec2=be rec3=018
    tail 0x2170069ee819781bbf0c9 0x42a00088462063203
Free Block Chain:
  0xce: 0000  00 00 0b 80 2a 83 21 a0 05 60 94 36 00 ae 19 85  ┆    * !  ` 6    ┆