Creo que no se puede hacer lookup con arrays de estructuras de datos.

En su lugar puedes utilizar la función C bsearch, que realiza la búsqueda
comparando los elementos con una función que tu defines:

      *
      * Necesito qc2le por las funciones C que utiliza el programa
      *
     H bnddir('QC2LE')

     D bsearch         PR              *   extproc('bsearch')
     D   Buscar                        *   value
     D   base                          *   value
     D   numElem                     10U 0 value
     D   tamElem                     10U 0 value
     D   fnComparar                    *   procptr value


   - Buscar sería un puntero al elemento de Dades2 que quieres buscar
   - base sería un puntero a Arrayestruc
   - numElem es %elem( Arrayestruc) (nº de registros)
   - tamElem es %size(Dades2 ) (tamaño de un elemento de la DS).
   - fncomparar es un puntero a una función que has de definir tu para
   comparar datos con el formato de la DS que utilizas. Por ejemplo, para
   comparar dos enteros sin signo sería así:
   - La función devuelve un puntero al elemento del array coincidente si
   lo encuentra, o un puntero nulo si no.

P listaDin_compararUns...
P                 B                   export
D                 PI            10I 0
D   elemento1                   10U 0 const
D   elemento2                   10U 0 const
 /free

  select ;
    when elemento1 < elemento2 ;
      return -1 ;
    when elemento1 > elemento2 ;
      return 1 ;
    other ;
      return 0 ;
  endsl ;

 /end-free
P listaDin_compararUns...

En tu caso, elemento1 y elemento2 serán DS's (likeds(Arrayestruc) o
likeds(Dades2))

Por último, para que la búsqueda funcione, Arrayestruc ha de estar ordenada
según los criterios de la función de comparar que crees. Si inicialmente no
es así puedes usar la función C qsort para ordenarla:

D qsort           PR                  extproc('qsort')
D   base                          *   value
D   numElem                     10U 0 value
D   tamElem                     10U 0 value
D   fnComparar                    *   procptr value

Todo esto funciona en V5R2 y posteriores. Puede que también en versiones
anteriores, pero no lo he probado.

Espero que te sirva.

Saludos.
Fernando Pérez
__________________________________________________
Forum.HELP400 es un servicio m&amp;#225;s de NEWS/400.
&amp;#169; Publicaciones Help400, S.L. - Todos los derechos reservados
http://www.help400.es
_____________________________________________________

Para darte de baja visita la siguente URL:
http://listas.combios.es/mailman/listinfo/forum.help400

Responder a