Those are technically called passed by value and passed by reference, corresponding to your program.
With "passed by value", your passed variables remain the same no matter how you change it in your local scope (functions, procedures, block code). In this case, it's F1 and F2 .
With "passed by reference", every change you made to the local variables would be applied to your passed variables. In this case, it's S1 and S2 .
There's one more thing you should remember about this is that if you pass by value, you can call functions and procedures with constants (such as 5 for integers, 'abc' for strings, ...) but if you pass by reference, you have to provide the variable(s) when calling your functions/procedures.