Write a pascal program that will accept the names of all sales staff members and their total sales for the month. The algorithm must calculate the commission at 3% of their total sales amount. It should also display the name, total sales and commission of the member with the highest commission.

To write a Pascal program that accepts the names and total sales of sales staff members and calculates their commissions, you can follow the algorithm outlined below:

1. Declare variables to store the names, total sales, and commissions.
2. Initialize a variable to store the highest commission.
3. Prompt the user to enter the number of sales staff members.
4. Use a loop to iterate over the number of sales staff members entered.
5. Inside the loop, prompt the user to enter the name and total sales for each staff member.
6. Calculate the commission as 3% of the total sales.
7. Check if the calculated commission is greater than the highest commission.
a. If true, update the highest commission and store the name, total sales, and commission of the member.
8. Display the name, total sales, and commission of the member with the highest commission.

Here's an example implementation of the program in Pascal:

```pascal
program SalesCommission;

var
names: array [1..100] of string;
totalSales, commission, highestCommission: array [1..100] of real;
numOfStaff, i, highestIndex: integer;

begin
highestIndex := 0; // no highest commission yet

writeln('Enter the number of sales staff members:');
readln(numOfStaff);

// Input names and total sales
for i := 1 to numOfStaff do
begin
writeln('Enter the name of sales staff member #', i, ':');
readln(names[i]);

writeln('Enter the total sales for the month:');
readln(totalSales[i]);

// Calculate commission
commission[i] := 0.03 * totalSales[i];

// Check if the current commission is the highest
if commission[i] > highestCommission[highestIndex] then
begin
highestIndex := i;
end;
end;

// Display the member with the highest commission
writeln();
writeln('Member with the highest commission:');
writeln('Name:', names[highestIndex]);
writeln('Total Sales:', totalSales[highestIndex]:0:2);
writeln('Commission:', commission[highestIndex]:0:2);

readln;
end.
```

Note: In the example above, we are using arrays to store the names, total sales, and commissions of the sales staff members. The size of the arrays is set to 100, but you can modify it according to your needs.