Macro: RUNPROGRAM
// 14.0 SHELL option does a ShellExecute. Can be:
// SHELL must be the first parameter
#IFSAME !1 SHELL
Runprogram$Shell !2 !3 !4
#ELSE
#IFSAME !1 WAIT BACKGROUND
#IF !0>3
#ERROR DFERR_COMP_INVALID_ARGUMENT TOO MANY ARGUMENTS TO RUNPROGRAM !1
#ELSE
#IFSAME !1 WAIT
!A [] $2CC !2 !3
#ELSE // BACKGROUND
!A [] $2CD !2 !3
#ENDIF
#ENDIF
#ELSE
// Number of args is checked by type checking of command for PIPE.
#IFSAME !1 PIPE
#IF !0<4
RUNPROGRAM_PIPE !2 "" !3 !4 !5 !6 !7 !8 !9
#ELSE
RUNPROGRAM_PIPE !2 !3 !4 !5 !6 !7 !8 !9
#ENDIF
#ELSE // Plain RUNPROGRAM.
#IF !0>2
#ERROR DFERR_COMP_INVALID_ARGUMENT TOO MANY ARGUMENTS TO RUNPROGRAM
#ELSE
!A [] $2C0 !1 !2
#ENDIF
#ENDIF
#ENDIF
#ENDIF