Progress - compiler messages

 
Vista:

compiler messages

Publicado por ANDRO (5 intervenciones) el 04/12/2008 18:44:39
hola todos,
estoy trabajando en un reporte, pero al momento de compilar sale un error:

**Solo se permiten elementos de matriz individuales en expresiones. (361)
**No se ha podido comprender linea 85.

debo recorrer un campo de una tabla que tiene la caracteristica que es bidimiencional de cuatro posiciones. anexo fracmento de codigo:

en la teoria el campo es de esta naturaleza:

ar_slspsn[4] (Salesperson) x(8)

mi programa:

DEFINE VARIABLE wcVen1 LIKE ar_slspsn LABEL "De Vendedor".
DEFINE VARIABLE wcVen2 LIKE ar_slspsn LABEL "A Vendedor".
.
.
. (continua)....

REPEAT:

/**********inicializacion de variables************/
wcVen1 = "".
wcVen1 = "".
wfCorte = TODAY.
i = 1.
/*********fin inicializacion de variables************/

/*****VALIDACIONES DE ACCESO*************/
UPDATE wcVen1 wcVen2 wcEnt wfCorte.

IF wcEnt = "" THEN DO:
MESSAGE "Entidad en blanco, Reintente".
UNDO, RETRY.
END.

IF wcVen1 > wcVen2 THEN DO: (****esta es la linea 85 )
MESSAGE "Codigo vendedor inicial mayor, q codigo vendedor final".
UNDO, RETRY.
END.
.
.
. continua....
DO WHILE i <= 4 :
/*for each con rompimiento por vendedor*/
FOR EACH ar_mstr WHERE ar_slspsn[i] >= wcVen1 AND ar_slspsn[i] <= wcVen2 AND (ar_type = "I" OR ar_type = "M" OR ar_type = "P")
AND ar_entity = wcEnt AND ar_curr = "COP" AND ar_open = "yes" AND ar_domain = GLOBAL_domain BREAK BY ar_slspsn[i] :

como puedo solucionar ese error que el compilador me arroja?
gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

RE:compiler messages

Publicado por Liliana Pacheco (13 intervenciones) el 04/12/2008 22:16:18
Hola el problema es la definicion de las variable.

DEFINE VARIABLE wcVen1 LIKE ar_slspsn LABEL "De Vendedor".
DEFINE VARIABLE wcVen2 LIKE ar_slspsn LABEL "A Vendedor".

al definirlas asi estas diciendo que tambien son bidimiencional.
debes definirlas asi:

DEFINE VARIABLE wcVen1 AS CHARACTER FORMAT "X(8)" LABEL "De Vendedor".
DEFINE VARIABLE wcVen2 AS CHARACTER FORMAT "X(8)" LABEL "A Vendedor".
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:compiler messages

Publicado por Miguel Angel (140 intervenciones) el 05/12/2008 16:21:58
Y es que la variable ar_slspsn es un arreglo, es decir, una variable que puede contener varios valores. En el caso de ar_slspsn está definida con cuatro posiciones. Es decir tu variable de trabajo la estuvieras realmente definiendo de la siguiente forma:

DEF VAR wcVen1 AS CHARACTER FORMAT "X(8)" LABEL "De Vendedor" Ext 4.

Es valido asignar wcVen1 con espacios de la siguiente forma:

wcVen1 = "".

En este caso todos los elementos de wcVen1 serán igual a espacios, y es lo mismo a decir:

DO i = 1 to 4:
wcVen1[i] = "".
END.

Pero en el caso de la comparación de dos variables no puedes hacer esto:

IF wcVen1 > wcVen"

Porque realmente no le estás definiendo a Progress los valores que estás tratando de comparar. Lo que debes hacer es lo mismo que en el segundo ejemplo de la asignación:

DO i = 1 to 4:
IF wcVen1[i] > wcVen2[i] THEN
....
....
....
END.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:compiler messages

Publicado por Rayne Flores (9 intervenciones) el 08/03/2009 03:53:10
Progress no acepta arreglos Bidimensionales, por lo tanto, no podrás hacerlo de esa manera, tendras que llenar línea por líneas y luego llenar el arreglo

espero te sirva

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar