Olá, nilson, pelo pouco que entendo e pelo que percebÃ, a sua variável COD é uma matriz multidimensional, e no combo temos que usar um array, ou uma matriz unidimencional, dá no mesmo.
O que eu sugirio é que você faça o seguinte:
Depois do seu GOTO TOP, coloque COD := Array( Recno() )
Isto cria um array com todos os registros.
Depois, dentro do DO WHILE não use AADD() , crie um contador e adicione os elementos no array,tipo assim:
nCont := 1
DO WHILE.......
COD[ nCont ] := .........
SKIP
ENDDO
Deve funcionar...
Abaixo um exemplo que uso para selecionar usuarios:
Select Usuario; set Order to 1 ; go top
aRecs := {}
DO WHILE !EOF()
aadd( aRecs, { user } )
Skip
ENDDO
aUser := Array( Len( aRecs ) )
FOR a := 1 TO Len( aUser )
aUser[ a ] := aRecs[ a,1 ]
NEXT a
E funciona perfeito.
Eroni