I seem to have found a bug in how unconditional forecasts for VARX models are produced. I have found out that no matter which values for the exogenous variable I use for the forecast period (with the length of options.controls being equal to T + fhor), the forecast stays exactly the same. I guess line 841 in bvar_.m should read:
I also wonder why the code does not allow to use exogenous variables while producing conditional forecasts. When I comment line 632 in bvar_m.m and fix the bug described above, everything seems to work OK.
forecast_data.xdata = [forecast_data.xdata exogenous(T+1 : T+fhor,:)];