Update, with more features
The optional argument to \pFq is a set of key-value settings, but the settings can also be specified globally with \hypergeometricsetup.
One can set the symbol (default F), the fences (default brackets), the separator between parameters (default nothing), the skip between parameters (in mu units, default 8) and the divider (default a semicolon, but it can be bar).
\documentclass{article}
\usepackage{amsmath}
\ExplSyntaxOn
\NewDocumentCommand{\pFq}{O{}mmmmm}
{
% #2 = left subscript, #3 = right subscript
% #4 = top, #5 = bottom, #6 = right
\group_begin:
\keys_set:nn { hypergeometric } { #1 }
\hypergeometric_print:nnnnn { #2 } { #3 } { #4 } { #5 } { #6 }
\group_end:
}
\NewDocumentCommand{\hypergeometricsetup}{m}
{
\keys_set:nn { hypergeometric } { #1 }
}
\tl_new:N \l_hypergeometric_divider_tl
\tl_new:N \l_hypergeometric_left_tl
\tl_new:N \l_hypergeometric_right_tl
\keys_define:nn { hypergeometric }
{
symbol .tl_set:N = \l_hypergeometric_symbol_tl,
symbol .initial:n = F,
separator .tl_set:N = \l_hypergeometric_separator_tl,
separator .initial:n = {},
skip .tl_set:N = \l_hypergeometric_skip_tl,
skip .initial:n = 8,
divider .choice:,
divider/semicolon .code:n = \tl_set:Nn \l_hypergeometric_divider_tl { ;; },
divider/bar .code:n = \tl_set:Nn \l_hypergeometric_divider_tl { ;\middle|; },
divider .initial:n = semicolon,
fences .choice:,
fences/brack .code:n =
\tl_set:Nn \l_hypergeometric_left_tl {[}
\tl_set:Nn \l_hypergeometric_right_tl {]},
fences/parens .code:n =
\tl_set:Nn \l_hypergeometric_left_tl {(}
\tl_set:Nn \l_hypergeometric_right_tl {)},
fences .initial:n = brack,
}
\cs_new_protected:Nn \hypergeometric_print:nnnnn
{
% the main symbol
{} \sb {#1} \l_hypergeometric_symbol_tl \sb { #2 }
% the parameters
\left\l_hypergeometric_left_tl
\genfrac .. % no delimiters
{0pt} % no line
{} % default style
{ __hypergeometric_process:n { #3 } } % numerator
{ __hypergeometric_process:n { #4 } } % denominator
\l_hypergeometric_divider_tl
#5
\right\l_hypergeometric_right_tl
}
\cs_new_protected:Nn __hypergeometric_process:n
{
\clist_use:nn { #1 }
{
{\l_hypergeometric_separator_tl}
\mspace { \l_hypergeometric_skip_tl mu }
}
}
\ExplSyntaxOff
\begin{document}
[
\pFq{3}{2}{a,b,c}{d,e}{z}
\qquad
\pFq[skip=4]{3}{2}{a,b,c}{d,e}{z}
\qquad
\textstyle\pFq{3}{2}{a,b,c}{d,e}{z}
]
\hypergeometricsetup{
fences=parens,
separator={,},
divider=bar,
}
[
\pFq{3}{2}{a,b,c}{d,e}{z}
\qquad
\pFq[skip=4]{3}{2}{a,b,c}{d,e}{z}
\qquad
\textstyle\pFq{3}{2}{a,b,c}{d,e}{z}
]
[
\pFq{1}{1}{\nu+\frac{1}{2}}{2\nu+1}{2iz}
]
\end{document}

Original answer
A modification of TH's answer that allows \pFq to be in the argument of other commands.
\documentclass{article}
\usepackage{amsmath}
\newmuskip\pFqmuskip
\newcommand*\pFq[6][8]{%
\begingroup % only local assignments
\pFqmuskip=#1mu\relax
% make the comma math active
\mathcode\,=\string"8000 % and define it to be \pFqcomma \begingroup\lccode~=`,
\lowercase{\endgroup\let~}\pFqcomma
% typeset the formula
{}{#2}F{#3}{\left[\genfrac..{0pt}{}{#4}{#5};#6\right]}%
\endgroup
}
\newcommand{\pFqcomma}{\mskip\pFqmuskip}
\begin{document}
[
\pFq{3}{2}{a,b,c}{d,e}{z}
\qquad
\pFq[4]{3}{2}{a,b,c}{d,e}{z}
\qquad
\textstyle\pFq{3}{2}{a,b,c}{d,e}{z}
]
\end{document}
The trick is using math activation, rather than activation tout court. There's also an optional argument for changing the default spacing between the coefficients.

A modification for keeping the comma:
\documentclass{article}
\usepackage{amsmath}
\newmuskip\pFqmuskip
\newcommand*\pFq[6][8]{%
\begingroup % only local assignments
\pFqmuskip=#1mu\relax
\mathchardef\normalcomma=\mathcode, % make the comma math active \mathcode,=\string"8000
% and define it to be \pFqcomma
\begingroup\lccode\~=,
\lowercase{\endgroup\let~}\pFqcomma
% typeset the formula
{}{#2}F{#3}{\left[\genfrac..{0pt}{}{#4}{#5};#6\right]}%
\endgroup
}
\newcommand{\pFqcomma}{{\normalcomma}\mskip\pFqmuskip}
\begin{document}
[
\pFq{3}{2}{a,b,c}{d,e}{z}
\qquad
\pFq[4]{3}{2}{a,b,c}{d,e}{z}
\qquad
\textstyle\pFq{3}{2}{a,b,c}{d,e}{z}
]
\end{document}

{}_3 F_2\left(\begin{matrix}a-b+1& &b+a-1& &c+d-1\\&d-a+1& &e+d-b-1&\end{matrix}\middle;z\right), even if you make the the array tighter, there will still be a lot of space left. How about something like this:{}_3 F_2\left(\begin{matrix}a\quad b\quad c\\d\quad e\end{matrix}\middle;z\right)? – Jan Hlavacek Aug 29 '10 at 04:34tensorpackage, see http://tex.stackexchange.com/questions/334/non-kludgey-left-subscripts – Willie Wong Aug 29 '10 at 15:08