1. & 2. I am unable to locate any stright forward solution. You can make use of temp tables. Create a temp table in oracle having 2 cols - col_name and col_value and insert the variable name and it's value in these two cols. And then you can fetch these values from your SQL Script.

3. This can be worked out by calling an EXTERNAL ROUTINE The required OS command can be stored in a DLL (any routine written in C or C++). . You register the routine in your PL/SQL routine, and then call it to executu your OS command. OR you can even your DBMS_PIPE

Good Luck,

Pinakin.