Nun, sowit ich mich erinnere erstellt

new ProgramParameter[3];

4 Parameter !
Nähmlich von 0 - 3.
Da Paramter 3, also der 4. nicht besetzt ist, willst du einen NULL-Pointer übergeben. Dein Programm will aber nur 3 Parameter (DSPPMG).