Task

Show how to concatenate two arrays in your language.



If this is as simple as array1 + array2, so be it.




begin
    integer array a ( 1 :: 5 );
    integer array b ( 2 :: 4 );
    integer array c ( 1 :: 8 );
 
    % concatenates the arrays a and b into c                        %
    % the lower and upper bounds of each array must be specified in %
    % the corresponding *Lb and *Ub parameters                      %
    procedure arrayConcatenate ( integer array a ( * )
                               ; integer value aLb, aUb
                               ; integer array b ( * )
                               ; integer value bLb, bUb
                               ; integer array c ( * )
                               ; integer value cLb, cUb
                               ) ;
        begin
            integer cPos;
            assert( ( cUb - cLb ) + 1 >= ( ( aUb + bUb ) - ( aLb + bLb ) ) - 2 );
            cPos := cLb;
            for aPos := aLb until aUb do begin
                c( cPos ) := a( aPos );
                cPos := cPos + 1
            end for_aPos ;
            for bPos := bLb until bUb do begin
                c( cPos ) := b( bPos );
                cPos := cPos + 1
            end for_bPos
        end arrayConcatenate ;
 
    % test arrayConcatenate                                          %
    for aPos := 1 until 5 do a( aPos ) := aPos;
    for bPos := 2 until 4 do b( bPos ) := - bPos;
    arrayConcatenate( a, 1, 5, b, 2, 4, c, 1, 8 );
    for cPos := 1 until 8 do writeon( i_w := 1, s_w := 1, c( cPos ) )
 
end.