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&#225;s de NEWS/400.
&#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