Sort an array of ten 30 character items into ascending order of surname. Each line contains a name in the form e.g. Mr J Smith, Dr John R Smith or John Smith. There are no field or record delimiters, qualifications, suffixes, double-barrelled names or similar complications. Define names and values for the items in the array, using any programming language you choose. Using low level string and record manipulation and not higher level functions such as SORT, either draw a flowchart to show how you would perform the sort, or write the program.

Most computer languages have a command that assigns a numerical value to a character variable, such as VAL($A) in Visual Basic.

I used to assign such a problem as you stated and found the "bubble method" to be the easiest to use for most students.

Assign your data into an array of 30 subscripted string variables.
Assign the first string variable as $large.

Set up a loop that runs from 1 to 30, or n, comparing each item to $large.
if the item is less than or equal to VAL($large) keep going in the loop, if the item is greater then assign its value to $large. Keep track of where you found the largest with a variable.

At the end of the first loop, the largest value,(the highest name in your alpha list) will be exchanged with the last entry, and that last entry will be placed in the position where $large was found.

Repeat the loop from 1 to 29, or n-1, the second largest will now be in the second last position etc.

To sort the given array of ten 30-character items into ascending order of surname, we can follow the steps below:

1. Define an array of strings to store the names. For example, in Python, we can define the array as follows:
```python
names = ["Mr J Smith", "Dr John R Smith", "John Smith", ...] # and so on for the remaining names
```

2. Implement a sorting algorithm that can compare and rearrange the strings based on the surnames. For this particular scenario, we can use the bubble sort algorithm.

3. Iterate through the array and compare each name with its consecutive name. If the current name's surname is greater than the next name's surname, swap their positions. Repeat this process until the array is sorted.

Here's an example implementation of the bubble sort algorithm in Python:

```python
def bubble_sort(arr):
n = len(arr)

for i in range(n-1):
for j in range(n-i-1):
if get_surname(arr[j]) > get_surname(arr[j+1]):
arr[j], arr[j+1] = arr[j+1], arr[j]

def get_surname(name):
split_name = name.split()
return split_name[-1]

# Example usage
names = ["Mr J Smith", "Dr John R Smith", "John Smith", ...] # The original array
bubble_sort(names)
print(names) # Sorted array
```

In this implementation, the `get_surname` function extracts the surname from the name string by splitting it into words and returning the last word (assuming the last word represents the surname).

The bubble sort algorithm is used here due to its simplicity, but keep in mind that it's not the most efficient sorting algorithm when dealing with larger arrays. Other sorting algorithms like merge sort or quicksort would be more efficient.