Parameters are used to pass data into a subroutine, so the same code can work on different values each time it is called.
SUBROUTINE greet(name)
OUTPUT 'Hello, ', name
ENDSUBROUTINE
greet('Amina') # Hello, Amina
greet('Ben') # Hello, Ben
Without a parameter the subroutine could only ever greet one fixed person. The parameter is what makes it general.
More than one parameter — an explicit requirement
The specification states students "should be able to use subroutines that require more than one parameter."
SUBROUTINE calculateTotal(price, quantity, taxRate)
subtotal ← price * quantity
RETURN subtotal * (1 + taxRate)
ENDSUBROUTINE
cost ← calculateTotal(12.50, 3, 0.20)
Order matters. The values are matched to the parameters in the order they are written: 12.50 → price, 3 → quantity, 0.20 → taxRate. Swapping them silently produces a wrong answer — calculateTotal(3, 12.50, 0.20) would still run, but would calculate the wrong total.
The AQA terminology note — worth knowing
"Teachers should be aware that the terms arguments and parameters are sometimes used but in examinable material we will use the term parameter to refer to both of these."
Some textbooks distinguish the parameter (the name in the definition) from the argument (the actual value passed). AQA does not test this distinction — use the word parameter for both and you are safe.
How data flows in
the value 5 is passed IN
↓
SUBROUTINE double(number)
RETURN number * 2
ENDSUBROUTINE
result ← double(5) # result = 10
Inside the subroutine, number behaves like a local variable holding the value that was passed in.
AQA tip. In a "describe the use of parameters" question, say what they do (pass data into a subroutine) and why (so the same subroutine can be reused with different values). The reusability point is where the second mark usually is.