-- PUT, ASSIGN, RESET, AND GET SEQUENCE USING X0SEQ PACKAGE

with Instrument, X0seq;
use Instrument;

procedure Iseqa2 is

    package Intseq is new X0seq (50, Integer);

    use Intseq;

    My_Sequence, My_Other_Sequence : Sequence;

    X : Integer;

begin

    Start ("ISEQA2", "PUT_NEXT, ASSIGN, RESET GET_NEXT OFF BOTH ");
    for Ii in 1 .. 1000 loop

        for I in 1 .. 10 loop

            Put_Next (My_Sequence, I);

        end loop;

        Assign (My_Sequence, My_Other_Sequence);

        if

           Is_Empty_To_End (My_Sequence) and then

           Is_Empty_To_End (My_Other_Sequence) then

            Reset (My_Other_Sequence);

            Reset (My_Sequence);

            for I in 1 .. 10 loop

                Get_Next (My_Sequence, X);

                if

                   I /= X

                    then

                    Comment
                       ("GET_NEXT DOES NOT GET THE CORRECT SEQUENCE ELEMENT");

                end if;

                Get_Next (My_Other_Sequence, X);

                if

                   I /= X

                    then

                    Comment
                       ("GET_NEXT DOESN'T GET THE RIGHT OTHER_SEQUENCE ELEMENT");

                end if;

            end loop;

        else

            Comment ("POINTER VALUE OF IS WRONG AFTER ASSIGN");

        end if;

    end loop;

    Stop;

end Iseqa2;