Uma dica que talvez possa facilitar em outras situações: o codeblock não precisa ser numa linha só.
Inclusive deu pra localizar coisa errada, o último faltou iif()
{ || iif( CC_MOEDA = 'R', ;
'REAL ', ;
iif( CC_MOEDA = 'G', ;
'GUARANI', ;
iif( CC_MOEDA = 'D', ;
'DOLAR ', ;
(CC_MOEDA = 'P', ;
'PESO '))))},;
Mas eu usaria uma função ou algo parecido, pra ficar mais fácil de ajustar.
{ || NomeMoeda( CC_MOEDA ) }
FUNCTION NomeMoeda( cMoeda )
LOCAL cRetorno := "", nItem
LOCAL aMoedas := { ;
{ "R", "REAL" }, ;
{ "G", "GUARANI" }, ;
{ "D", "DOLAR" }, ;
{ "P", "PESO" } }
nItem := AScan( aMoedas, { | x | x[ 1 ] == cMoeda } )
IF nItem != 0
cRetorno := aMoedas[ nItem, 2 ]
ENDIF
RETURN cRetorno
Também dá pra colocar a função direto no codeblock, mas pra que complicar.... NomeMoeda() pode usar em outros lugares do aplicativo.