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

⟦fd15f9fa2⟧ Ada Source

    Length: 8192 (0x2000)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, procedure Client, seg_056e08

Derivation

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

E3 Source Code



with Transport;
with Transport_Defs;
with Text_Io;
with Io;
with Byte_Defs;
with System;

procedure Client is
    Connection : Transport.Connection_Id;  
    Local_Connection : Transport.Connection_Id;
    Status : Transport_Defs.Status_Code;
    Numero : Natural;
    Iter : Transport.Connection_Id_Iterator;  
    Socket_Trouve : Boolean := False;  
    Mess : String (1 .. 100);
    Taille : Natural;  
    Sock_Low : Natural;
    Sock_High : Natural;
    Reponse : Character;


    function String_To_Bs (Chaine : String) return Byte_Defs.Byte_String is
        Bs : Byte_Defs.Byte_String (Chaine'Range);
    begin  
        for I in Chaine'Range loop
            Bs (I) := Character'Pos (Chaine (I));
        end loop;  
        return Bs;
    end String_To_Bs;

begin
    Text_Io.Put_Line ("message a envoyer : ");
    Text_Io.Get_Line (Item => Mess, Last => Taille);


    Text_Io.Put_Line ("No Socket low : ");
    Io.Get (Item => Sock_Low, Width => 0);

    Text_Io.Put_Line ("No Socket High : ");
    Io.Get (Item => Sock_High, Width => 0);

    Transport.Open (Connection => Local_Connection,
                    Status => Status,
                    Network => "TCP/IP",
                    Local_Socket => Transport_Defs.Null_Socket_Id);

    if Transport_Defs."/=" (Status, Transport_Defs.Ok) then
        Text_Io.Put_Line ("Local_Connection non ouverte .");  
        return;
    end if;

    Transport.Init (Iter);

    while not Transport.Done (Iter) loop
        Connection := Transport.Value (Iter);
        declare
            Socket : constant Transport_Defs.Socket_Id :=
               Transport.Local_Socket (Connection);
        begin  
            if (System."=" (Socket (Socket'First), System.Byte (Sock_Low)) and
                (System."=" (Socket (Socket'Last),
                             System.Byte (Sock_High)))) then
                Socket_Trouve := True;
                exit;
            end if;

        end;
        Transport.Next (Iter);
    end loop;

    if Socket_Trouve then
        for I in 1 .. 5 loop
            Transport.Connect
               (Connection => Local_Connection,
                Status => Status,
                Remote_Host => Transport.Local_Host (Connection),
                Remote_Socket => Transport.Local_Socket (Connection),
                Max_Wait => 1.0);
            if Transport_Defs."=" (Status, Transport_Defs.Ok) then
                exit;
            else  
                Text_Io.Put_Line ("Status connect : " &
                                  Transport_Defs.Image (Status));

            end if;
        end loop;
        if Transport_Defs."=" (Status, Transport_Defs.Ok) then
            declare
                Count : Natural;  
                Bs : constant Byte_Defs.Byte_String :=
                   String_To_Bs (Mess (Mess'First .. Mess'First + Taille - 1));
            begin  
                Transport.Transmit (Connection => Local_Connection,
                                    Status => Status,
                                    Data => Bs,
                                    Count => Count,
                                    Max_Wait => Duration'Last,
                                    More => False);
                Text_Io.Put_Line ("status transmit : " &
                                  Transport_Defs.Image (Status));
                Text_Io.Put_Line ("count : " & Natural'Image (Count));

            end;
        end if;
    end if;


    Text_Io.Put_Line ("avant le close ...");
    Text_Io.Get (Item => Reponse);

    Transport.Close (Local_Connection);

end Client;

E3 Meta Data

    nblk1=7
    nid=6
    hdr6=a
        [0x00] rec0=26 rec1=00 rec2=01 rec3=02e
        [0x01] rec0=02 rec1=00 rec2=07 rec3=004
        [0x02] rec0=1a rec1=00 rec2=05 rec3=01c
        [0x03] rec0=1c rec1=00 rec2=03 rec3=020
        [0x04] rec0=15 rec1=00 rec2=04 rec3=000
        [0x05] rec0=0a rec1=00 rec2=03 rec3=000
        [0x06] rec0=10 rec1=70 rec2=00 rec3=037
    tail 0x2154dd94c87c57106ce06 0x42a00088462060003
Free Block Chain:
  0x6: 0000  00 02 03 fc 80 2a 20 41 66 66 69 63 68 65 20 28  ┆     * Affiche (┆
  0x2: 0000  00 00 03 fc 80 32 20 20 20 20 20 4e 65 74 20 3a  ┆     2     Net :┆