* make_deb.sh
* Removed wrong comment recently added.
(we will need to fix hbfimage compilation anyway)
* harbour-ce-spec
* harbour-w32-spec
* harbour.spec
* debian/control
* include/vm.api
* include/extend.api
* include/button.ch
* include/hbstack.h
* include/item.api
* include/rdd.api
* include/gt.api
* include/dbinfo.ch
* include/error.api
* include/filesys.api
* include/hbapigt.h
* include/clipdefs.h
* include/assert.ch
* include/fm.api
* include/extend.h
* source/compiler/genhrb.c
* config/os2/install.cf
* tests/db_brows.prg
* tests/debugtst.prg
* tests/ac_test.prg
* tests/testhtml.prg
* tests/tstcolor.prg
* doc/hdr_tpl.txt
* doc/man/harbour.1
* doc/dirstruc.txt
* doc/howtobld.txt
* doc/en/diskspac.txt
* doc/en/string.txt
* doc/en/rddord.txt
* doc/en/math.txt
* doc/en/error.txt
* doc/en/treport.txt
* doc/en/memvar2.txt
* doc/en/terminal.txt
* doc/en/dir.txt
* doc/en/rddmisc.txt
* doc/en/var.txt
* doc/en/nation.txt
* doc/en/dbstrux.txt
* doc/en/datetime.txt
* doc/en/memo.txt
* doc/en/tgetlist.txt
* doc/en/tlabel.txt
* doc/en/hb_compa.txt
* doc/en/array.txt
* doc/en/rdddb.txt
* doc/en/dbsdf.txt
* doc/en/tbrowse.txt
* doc/en/hvm.txt
* doc/en/input.txt
* doc/en/dbdelim.txt
* doc/en/browse.txt
* doc/en/menu.txt
* doc/en/file.txt
* doc/en/binnum.txt
* doc/en/tclass.txt
* doc/en/set.txt
* doc/en/misc.txt
* doc/en/sayget.txt
* doc/en/readme.txt
* doc/es/diskspac.txt
* doc/es/tlabel.txt
* doc/es/array.txt
* doc/es/dbsdf.txt
* doc/es/tbrowse.txt
* doc/es/math.txt
* doc/es/hvm.txt
* doc/es/treport.txt
* doc/es/input.txt
* doc/es/dbdelim.txt
* doc/es/browse.txt
* doc/es/memvar2.txt
* doc/es/command.txt
* doc/es/dir.txt
* doc/es/file.txt
* doc/es/eval.txt
* doc/es/binnum.txt
* doc/es/nation.txt
* doc/es/var.txt
* doc/es/tclass.txt
* doc/es/dbstrux.txt
* doc/es/misc.txt
* doc/es/datetime.txt
* doc/es/sayget.txt
* doc/es/memo.txt
* doc/es/readme.txt
* doc/es/tgetlist.txt
* doc/readme.txt
* contrib/hbct/ctnet.c
* contrib/hbct/video.c
* contrib/hbct/dattime3.c
* contrib/hbct/color.c
* contrib/hbnf/acctyear.prg
* contrib/hbnf/byteneg.prg
* contrib/hbnf/isshare.prg
* contrib/hbnf/sinkey.prg
* contrib/hbnf/dhkey.h
* contrib/hbnf/kspeed.c
* contrib/hbnf/prtscr.c
* contrib/hbnf/descendn.c
* contrib/hbnf/peek.c
* contrib/hbnf/scancode.prg
* contrib/hbnf/vidmode.prg
* contrib/hbnf/nwsem.prg
* contrib/hbnf/acctadj.prg
* contrib/hbnf/week.prg
* contrib/hbnf/vidcur.prg
* contrib/hbnf/iamidle.c
* contrib/hbnf/prtesc.prg
* contrib/hbnf/miltime.prg
* contrib/hbnf/proper.c
* contrib/hbnf/acctmnth.prg
* contrib/hbnf/savearr.prg
* contrib/hbnf/rand1.prg
* contrib/hbnf/madd.prg
* contrib/hbnf/dispmsg.prg
* contrib/hbnf/settime.prg
* contrib/hbnf/restsets.prg
* contrib/hbnf/page.prg
* contrib/hbnf/byt2bit.prg
* contrib/hbnf/setkeys.c
* contrib/hbnf/month.prg
* contrib/hbnf/byt2hex.prg
* contrib/hbnf/findith.prg
* contrib/hbnf/at2.prg
* contrib/hbnf/acctweek.prg
* contrib/hbnf/dispc.c
* contrib/hbnf/gcd.prg
* contrib/hbnf/pegs.prg
* contrib/hbnf/min2dhm.prg
* contrib/hbnf/acctqtr.prg
* contrib/hbnf/numlock.c
* contrib/hbnf/dosver.prg
* contrib/hbnf/nooccur.prg
* contrib/hbnf/dayofyr.prg
* contrib/hbnf/metaph.prg
* contrib/hbnf/ontick.c
* contrib/hbnf/menu1.prg
* contrib/hbnf/byteand.prg
* contrib/hbnf/sqzn.prg
* contrib/hbnf/bytexor.prg
* contrib/hbnf/ftidle.c
* contrib/hbnf/workdays.prg
* contrib/hbnf/byteor.prg
* contrib/hbnf/asum.prg
* contrib/hbnf/shift.c
* contrib/hbnf/sleep.prg
* contrib/hbnf/wda.prg
* contrib/hbnf/aavg.prg
* contrib/hbnf/woy.prg
* contrib/hbnf/origin.c
* contrib/hbnf/any2any.prg
* contrib/hbnf/chdir.c
* contrib/hbnf/adessort.prg
* contrib/hbnf/setdate.prg
* contrib/hbnf/netpv.prg
* contrib/hbnf/amedian.prg
* contrib/hbnf/blink.prg
* contrib/hbnf/stod.c
* contrib/hbnf/vertmenu.prg
* contrib/hbnf/qtr.prg
* contrib/hbnf/linked.prg
* contrib/hbnf/n2color.c
* contrib/hbnf/aredit.prg
* contrib/hbnf/alt.c
* contrib/hbnf/xbox.prg
* contrib/hbnf/ftround.prg
* contrib/hbnf/hex2dec.prg
* contrib/hbnf/nwuid.prg
* contrib/hbnf/dectobin.prg
* contrib/hbnf/bitset.prg
* contrib/hbnf/aemaxlen.prg
* contrib/hbnf/nwlstat.prg
* contrib/hbnf/invclr.prg
* contrib/hbnf/ctrl.c
* contrib/hbnf/lastday.prg
* contrib/hbnf/tempfile.prg
* contrib/hbnf/diskfunc.prg
* contrib/hbnf/scregion.prg
* contrib/hbnf/mouse2.prg
* contrib/hbnf/d2e.prg
* contrib/hbnf/ftisprn.c
* contrib/hbnf/pickday.prg
* contrib/hbnf/firstday.prg
* contrib/hbnf/daytobow.prg
* contrib/hbnf/anomatch.prg
* contrib/hbnf/pvid.prg
* contrib/hbnf/isbiton.prg
* contrib/hbnf/color2n.c
* contrib/hbnf/isbit.prg
* contrib/hbnf/putkey.c
* contrib/hbnf/cntryset.prg
* contrib/hbnf/datecnfg.prg
* contrib/hbnf/getenvrn.c
* contrib/hbnf/easter.prg
* contrib/hbnf/bytenot.prg
* contrib/hbnf/ntow.prg
* contrib/hbnf/poke.c
* contrib/hbnf/aeminlen.prg
* contrib/hbnf/floptst.prg
* contrib/hbnf/pchr.prg
* contrib/hbnf/savesets.prg
* contrib/hbnf/mkdir.c
* contrib/hbnf/year.prg
* contrib/hbnf/caplock.c
* contrib/hbnf/rmdir.c
* contrib/hbnf/calendar.prg
* contrib/hbnf/e2d.prg
* contrib/hbnf/elapsed.prg
* contrib/hbnf/sysmem.prg
* contrib/hbnf/bitclr.prg
* contrib/hbnf/eltime.prg
* contrib/hbnf/aading.prg
* contrib/hbnf/dfile.prg
* contrib/hbnf/elapmil.prg
* contrib/hbnf/setlastk.c
* contrib/hbnf/pending.prg
* contrib/hbnf/clrsel.prg
* contrib/rddads/doc/en/adsfuncs.txt
* contrib/rddads/doc/en/readme.txt
* contrib/hbclip/hbclip.ch
* contrib/hbclip/readme.txt
* contrib/hbmisc/doc/en/ht_dbf.txt
* utils/hbdoc/rtf.prg
* utils/hbdoc/fclass1.prg
* utils/hbdoc/genos2.prg
* utils/hbdoc/genng.prg
* utils/hbdoc/genasc.prg
* utils/hbdoc/genchm.prg
* utils/hbdoc/os2.prg
* utils/hbdoc/ng.prg
* utils/hbdoc/genhpc.prg
* utils/hbdoc/html.prg
* utils/hbdoc/ffile1.prg
* utils/hbdoc/ft_funcs.prg
* utils/hbdoc/hbdoc.prg
* utils/hbdoc/troff.prg
* utils/hbdoc/genhtm.prg
* utils/hbdoc/genpdf1.prg
* utils/hbdoc/gentrf.prg
* utils/hbdoc/genrtf.prg
* utils/hbmake/fclass1.prg
* utils/hbmake/prb_stak.prg
* utils/hbmake/ffile1.prg
* utils/hbmake/ft_funcs.prg
* utils/hbmake/pickfile.prg
* utils/hbmake/hbmutils.prg
* More cleanups, formatting (filename casing, CA-Cl*pper, etc).
664 lines
24 KiB
Plaintext
664 lines
24 KiB
Plaintext
/*
|
||
* $Id$
|
||
*/
|
||
|
||
/*
|
||
* Las siguientes partes son derechos adquiridos de sus autores individuales.
|
||
* www - http://www.harbour-project.org
|
||
*
|
||
* Copyright 2000 Alejandro de G rate <alex_degarate@hotmail.com>
|
||
* Documentaci¢n en Espa¤ol de:
|
||
* ARRAY(), AADD(), ASIZE(), ATAIL(), ASIZE(),
|
||
* AINS(), ADEL(), ADEL(), AFILL(), ASCAN()
|
||
* AEVAL(), ACOPY(), ACLONE(), ASORT()
|
||
*
|
||
* Vea doc/license.txt por los t‚rminos de la licencia.
|
||
*
|
||
*/
|
||
|
||
/* $DOC$
|
||
* $FUNCNAME$
|
||
* ARRAY()
|
||
* $CATEGORY$
|
||
* ARRAY
|
||
* $ONELINER$
|
||
* Crea un array sin inicializar de la longitud especificada
|
||
* $SYNTAX$
|
||
* ARRAY( <nElementos> [, <nElementos>...] ) --> aArray
|
||
* $ARGUMENTS$
|
||
* <nElementos> es el n£mero de elementos de la dimensi¢n especificada.
|
||
* $RETURNS$
|
||
* Un array con las dimensiones especificadas.
|
||
* $DESCRIPTION$
|
||
* Esta funci¢n retorna un array sin inicializar de tama¤o <nElementos>
|
||
* Si par metros <nElementos> adicionales son especificados se crea
|
||
* un array anidado multidimensional sin inicializar dentro de la misma
|
||
* referencia del array.
|
||
* Crear una variable de memoria con el mismo nombre que el array puede
|
||
* destruir el array original y liberar el contenido entero del array.
|
||
* Esto depende, por supuesto del tipo de almacenamiento de ambos: del
|
||
* array y la variable con el mismo nombre que el array.
|
||
* $EXAMPLES$
|
||
* * El siguiente ejemplo crea un array de diez elementos iniciales,
|
||
* luego en cada elemento de ese array, va creando submatrices
|
||
* lineales con la funci¢n ARRAY(). Cada una con la misma cantidad
|
||
* de items que la posici¢n que ocupa en aArray. Finalmente lo
|
||
* muestra.
|
||
*
|
||
* LOCAL aArray := Array(10)
|
||
* LOCAL i := 1, j
|
||
*
|
||
* FOR i = 1 to LEN( aArray )
|
||
* aArray [i] := Array(i)
|
||
* NEXT
|
||
*
|
||
* FOR i = 1 to LEN( aArray )
|
||
* ? i
|
||
* FOR j = 1 to LEN( aArray [i] )
|
||
* ?? " ", aArray [i][j]
|
||
* NEXT
|
||
* NEXT
|
||
*
|
||
* $STATUS$
|
||
* R
|
||
* $COMPLIANCE$
|
||
* Esta funci¢n es CA-Cl*pper Compatible en todos los casos, excepto que
|
||
* los arrays en Harbour pueden tener un n£mero ilimitado de elementos
|
||
* mientras que Clipper tiene un l¡mite de 4096 elementos por dimensi¢n.
|
||
* Los arrays en Harbour pueden tener un n£mero ilimitado de dimensiones
|
||
* $FILES$
|
||
* El c¢digo fuente est en source\vm\arrays.c
|
||
* La librer¡a asociada es vm
|
||
* $SEEALSO$
|
||
* AADD(),ADEL(),AFILL(),AINS()
|
||
* $END$
|
||
*/
|
||
|
||
|
||
* $DOC$
|
||
* $FUNCNAME$
|
||
* AADD()
|
||
* $CATEGORY$
|
||
* ARRAY
|
||
* $ONELINER$
|
||
* Agrega din micamente un nuevo elemento al final de un array
|
||
* $SYNTAX$
|
||
* AADD(<aDestino>, <xValor>) --> Valor
|
||
* $ARGUMENTS$
|
||
* <aDestino> es el array al cual se agrega un nuevo elemento.
|
||
*
|
||
* <xValor> es el valor asignado al nuevo elemento.
|
||
* $RETURNS$
|
||
* AADD() eval£a <xValor> y retorna su valor. Si <xValor> no esta
|
||
* especificado, AADD() retorna NIL.
|
||
* $DESCRIPTION$
|
||
* AADD() es una funci¢n que din micamente incrementa la longitud actual
|
||
* del array destino en un elemento y asigna el valor <xValor> al reci‚n
|
||
* creado elemento del array.
|
||
* <xValor> puede ser un puntero de referencia a otro array, el cual
|
||
* puede ser asignado a la posici¢n sub¡ndice.
|
||
*
|
||
* Es £til para construir listas din micas o colas (queues).
|
||
* Cada vez que se ejecuta un comando @...GET, el sistema usa AADD()
|
||
* para agregar un nuevo elemento al final del array GetList, y entonces
|
||
* asignar un nuevo objeto Get al nuevo elemento.
|
||
* $EXAMPLES$
|
||
* * Este ejemplo muestra el efecto de m£ltiples llamadas de la funci¢n
|
||
* AADD() a un array, donde va agrgando un nuevo elemento cada vez.
|
||
*
|
||
* LOCAL aArray := {}
|
||
* FOR x:= 1 to 10
|
||
* AADD( aArray, x)
|
||
* NEXT
|
||
*
|
||
* * Este ejemplo crea un array multidemensional
|
||
* LOCAL aArray := {} // Resultado: aArray es un array vac¡o
|
||
* AADD( aArray, {10, 10122734 }) // Resultado: aArray es {10, 10122734}
|
||
* AADD( aArray, {11, 13173645 }) // Resultado: aArray es
|
||
* { { 10, 10122734 }, { 11, 13173645 } }
|
||
* $STATUS$
|
||
* R
|
||
* $COMPLIANCE$
|
||
* Esta funci¢n es totalmente compatible con CA-Cl*pper.
|
||
* $PLATFORMS$
|
||
* Todas las plataformas
|
||
* $FILES$
|
||
* El c¢digo fuente est en source\vm\arrays.c
|
||
* La librer¡a asociada es vm
|
||
* $SEEALSO$
|
||
* AINS(), ASIZE()
|
||
* $END$
|
||
|
||
|
||
/* $DOC$
|
||
* $FUNCNAME$
|
||
* ASIZE()
|
||
* $CATEGORY$
|
||
* ARRAY
|
||
* $ONELINER$
|
||
* Ajusta (aumenta ¢ decrementa) el tama¤o de un array
|
||
* $SYNTAX$
|
||
* ASIZE(<aDestino>, <nLongitud>) --> aDestino
|
||
* $ARGUMENTS$
|
||
* <aDestino> es el nombre del array a ser din micamente alterado
|
||
*
|
||
* <nLongitud> es el valor Num‚rico del nuevo tama¤o de <aDestino>
|
||
* $RETURNS$
|
||
* ASIZE() retorna una referencia al array <aDestino>.
|
||
* $DESCRIPTION$
|
||
* Esta funci¢n din micamente incrementa ¢ decrementa el tama¤o del
|
||
* array <aDestino> ajustando la longitud del array a <nLongitud>
|
||
* posiciones.
|
||
*
|
||
* Si la longitud del array <aDestino> is acortada, aquellos elementos
|
||
* al final se pierden. Si la longitud del array es alargada un valor
|
||
* NIL es asignado a los elementos en las nuevas posiciones.
|
||
* $EXAMPLES$
|
||
* * El siguiente ejemplo crea un array con un s¢lo elemento, luego lo
|
||
* agranda y luego lo vuelve al tama¤o original.
|
||
*
|
||
* aArray := { 1 } // Resultado: aArray es { 1 }
|
||
* ASIZE( aArray, 3) // Resultado: aArray es { 1, NIL, NIL }
|
||
* ASIZE( aArray, 1) // Resultado: aArray es { 1 }
|
||
* $STATUS$
|
||
* R
|
||
* $COMPLIANCE$
|
||
* Si HB_COMPAT_C53 es definido, la funci¢n genera un Error, de otro
|
||
* modo retornar el mismo array.
|
||
* $FILES$
|
||
* El c¢digo fuente est en source\vm\arrays.c
|
||
* La librer¡a asociada es vm
|
||
* $SEEALSO$
|
||
* AADD(), ADEL(), AFILL(), AINS()
|
||
* $END$
|
||
*/
|
||
|
||
|
||
/* $DOC$
|
||
* $FUNCNAME$
|
||
* ATAIL()
|
||
* $CATEGORY$
|
||
* ARRAY
|
||
* $ONELINER$
|
||
* Retorna el £ltimo elemento de un array
|
||
* $SYNTAX$
|
||
* ATAIL( <aArray> ) --> Elemento
|
||
* $ARGUMENTS$
|
||
* <aArray> es el nombre del array a usar
|
||
* $RETURNS$
|
||
* ATAIL() retorna <Elemento> que puede ser un valor ¢ una referencia
|
||
* contenida en el £ltimo elemento en el array.
|
||
* $DESCRIPTION$
|
||
* Esta funci¢n devuelve el £ltimo elemento en el array llamado <aArray>
|
||
* No modifica el tama¤o del array ni el valor de ning£n sub¡ndice.
|
||
* $EXAMPLES$
|
||
* * El siguiente ejemplo crea un array unidimensional y devuelve el
|
||
* £ltimo elemento.
|
||
*
|
||
* aArray := { "Cu l", "es el", "futuro", "de xBase ?", "Harbour!" }
|
||
* ? ATAIL( aArray )
|
||
* $STATUS$
|
||
* R
|
||
* $COMPLIANCE$
|
||
* Esta funci¢n es totalmente compatible con CA-Cl*pper.
|
||
* $FILES$
|
||
* El c¢digo fuente est en source\vm\arrays.c
|
||
* La librer¡a asociada es vm
|
||
* $SEEALSO$
|
||
* LEN(),ARRAY(),ASIZE(),AADD()
|
||
* $END$
|
||
*/
|
||
|
||
|
||
/* $DOC$
|
||
* $FUNCNAME$
|
||
* AINS()
|
||
* $CATEGORY$
|
||
* ARRAY
|
||
* $ONELINER$
|
||
* Inserta un elemento NIL en una posici¢n del array
|
||
* $SYNTAX$
|
||
* AINS( <aArray>, <nPos> ) --> aDestino
|
||
* $ARGUMENTS$
|
||
* <aArray> es el nombre del array al que se va a insertar un item
|
||
*
|
||
* <nPos> es la posici¢n en el <aArray>
|
||
* $RETURNS$
|
||
* AINS() retorna una referencia al array destino, <aDestino>
|
||
* $DESCRIPTION$
|
||
* Esta funci¢n inserta un valor NIL en el array llamado <aArray>
|
||
* en la posicion <nPos>.
|
||
*
|
||
* Todos los elementos del array comenzando con la <nPos> ser n
|
||
* desplazados hacia arriba una posici¢n y el £ltimo item en el array
|
||
* ser removido completamente. En otras palabras, si se va a insertar
|
||
* un item en la quinta posici¢n de un array de diez elementos, el
|
||
* elemento que previamente estaba en la quinta posici¢n ahora ser
|
||
* reubicado a la sexta posici¢n. El elemento reci‚n agregado ser de
|
||
* tipo NIL y el £ltimo elemento es descartado. La longitud del array
|
||
* <aArray> permanece sin cambios.
|
||
* $EXAMPLES$
|
||
* * El siguiente ejemplo crea un array lineal, al cual se inserta un
|
||
* elemento en la quinta posici¢n, perdi‚ndose el £ltimo.
|
||
*
|
||
* LOCAL aArray:= { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }
|
||
* AINS( aArray, 5)
|
||
*
|
||
* Resultado: aArray es { 1, 2, 3, 4, NIL, 5, 6, 7, 8, 9 }
|
||
* $STATUS$
|
||
* R
|
||
* $COMPLIANCE$
|
||
* Esta funci¢n es totalmente compatible con CA-Cl*pper.
|
||
* $FILES$
|
||
* El c¢digo fuente est en source\vm\arrays.c
|
||
* La librer¡a asociada es vm
|
||
* $SEEALSO$
|
||
* AADD(), ACOPY(), ADEL(), AEVAL(), AFILL(), ASIZE()
|
||
* $END$
|
||
*/
|
||
|
||
|
||
/* $DOC$
|
||
* $FUNCNAME$
|
||
* ADEL()
|
||
* $CATEGORY$
|
||
* ARRAY
|
||
* $ONELINER$
|
||
* Borra un elemento del array
|
||
* $SYNTAX$
|
||
* ADEL(<aDestino>, <nPos>) --> aDestino
|
||
* $ARGUMENTS$
|
||
* <aDestino> es el nombre del array cuyo elemento ser removido.
|
||
*
|
||
* <nPos> es la posici¢n del elemento a borrar
|
||
* $RETURNS$
|
||
* ADEL() retorna una referencia al array destino, <aDestino>
|
||
* $DESCRIPTION$
|
||
* Esta funci¢n borra el elemento que se encuentra en la posici¢n <nPos>
|
||
* en el array <aDestino>. Todos los elementos en el array <aDestino>
|
||
* m s all de la posici¢n dada <nPos> ser n movidos hacia abajo una
|
||
* posici¢n en el array.
|
||
* En otras palabras, si se borra un item de la quinta posici¢n de un
|
||
* array de diez elementos, el elemento que estaba en la sexta posici¢n
|
||
* ahora ser reubicado a la quinta posici¢n.
|
||
* La longitud del array <aDestino> permanece sin cambios y el £ltimo
|
||
* elemento en el array toma el valor NIL.
|
||
* $EXAMPLES$
|
||
* * El siguiente ejemplo crea un array lineal, del cual se borra el
|
||
* elemento en la quinta posici¢n.
|
||
*
|
||
* LOCAL aArray:= { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }
|
||
* ADEL( aArray, 5)
|
||
*
|
||
* Resultado: aArray es { 1, 2, 3, 4, 6, 7, 8, 9, NIL }
|
||
* $STATUS$
|
||
* R
|
||
* $COMPLIANCE$
|
||
* Esta funci¢n es totalmente compatible con CA-Cl*pper.
|
||
* $FILES$
|
||
* El c¢digo fuente est en source\vm\arrays.c
|
||
* La librer¡a asociada es vm
|
||
* $SEEALSO$
|
||
* ACOPY(), AINS(), AFILL()
|
||
* $END$
|
||
*/
|
||
|
||
|
||
/* $DOC$
|
||
* $FUNCNAME$
|
||
* AFILL()
|
||
* $CATEGORY$
|
||
* ARRAY
|
||
* $ONELINER$
|
||
* Rellena un array con un valor especificado
|
||
* $SYNTAX$
|
||
* AFILL( <aDestino>, <xValor>, [<nInicio>], [<nContador>]) --> aDestino
|
||
* $ARGUMENTS$
|
||
* <aDestino> es el nombre del array a rellenar
|
||
*
|
||
* <xValor> es la expresi¢n con la que ser rellenado <aDestino>
|
||
*
|
||
* <nInicio> es la posici¢n de comienzo, sub¡ndice del array
|
||
*
|
||
* <nContador> es el n£mero de elementos que se van a rellenar
|
||
* $RETURNS$
|
||
* AFILL() retorna una referencia al array destino, <aDestino>
|
||
* $DESCRIPTION$
|
||
* Esta funci¢n rellena cada elemento del array llamado <aDestino> con
|
||
* el valor <xValor>. Si es especificado, <nInicio> marca el elemento
|
||
* de inicio para continuar rellenando por <nContador> posiciones.
|
||
* Si no es especificado, el valor de <nInicio> ser 1, y el valor de
|
||
* <nContador> ser el valor de LEN(<aDestino>); y todos las posiciones
|
||
* del array <aDestino> ser n llenadas con la expresi¢n de <xValor>.
|
||
*
|
||
* Advertencia !:
|
||
* Esta funci¢n s¢lo trabaja en una sola dimensi¢n de <aDestino>.
|
||
* Si hay punteros de referencia a otros arrays dentro de un sub¡ndice
|
||
* de <aDestino> estos valores se perder n, porque esta funci¢n los
|
||
* sobreescribe con los nuevos valores.
|
||
* $EXAMPLES$
|
||
* * El siguiente ejemplo crea un array con valores asignados, luego
|
||
* lo rellena con el valor cinco.
|
||
*
|
||
* LOCAL aTest := { NIL, 0, 1, 2 }
|
||
* Afill( aTest, 5) // Resultado aTest es { 5, 5, 5, 5 }
|
||
* $STATUS$
|
||
* R
|
||
* $COMPLIANCE$
|
||
* Esta funci¢n es totalmente compatible con CA-Cl*pper.
|
||
* $FILES$
|
||
* El c¢digo fuente est en source\vm\arrays.c
|
||
* La librer¡a asociada es vm
|
||
* $SEEALSO$
|
||
* AADD(), AEVAL(), DBSTRUCT(), DIRECTORY()
|
||
* $END$
|
||
*/
|
||
|
||
|
||
/* $DOC$
|
||
* $FUNCNAME$
|
||
* ASCAN()
|
||
* $CATEGORY$
|
||
* ARRAY
|
||
* $ONELINER$
|
||
* Busca en un array por un valor o hasta que el block devuelva .T.
|
||
* $SYNTAX$
|
||
* ASCAN( <aDestino>, <xBuscar>,
|
||
* [<nInicio>], [<nContador>] ) --> nParadoEn
|
||
* $ARGUMENTS$
|
||
* <aDestino> es el nombre del array a examinar
|
||
*
|
||
* <xBuscar > es la expresi¢n a encontrar en <aDestino>
|
||
*
|
||
* <nInicio> es la posici¢n a la cual comenzar la b£squeda
|
||
*
|
||
* <nContador> es el n£mero de elementos a examinar
|
||
* $RETURNS$
|
||
* ASCAN() retorna un valor num‚rico <nParadoEn>, de la posici¢n donde
|
||
* <xBuscar> fu‚ encontrada.
|
||
* $DESCRIPTION$
|
||
* Esta funci¢n examina el contenido de un array llamado <aDestino> en
|
||
* busca del valor de <xBuscar>. El valor devuelto es la posici¢n en el
|
||
* array <aDestino> en el cual <xBuscar> fue encontrada.
|
||
* Si esta expresi¢n no es encontrada el valor retornado es cero.
|
||
*
|
||
* Si es especificada, la posici¢n de inicio al cual comenzar la
|
||
* b£squeda puede ser establecida con el valor pasado en <nInicio>.
|
||
* Por defecto es uno.
|
||
*
|
||
* Si es especificado, el n£mero de elementos del array a examinar puede
|
||
* ser establecido con el valor pasado en <nContador>. Por defecto es
|
||
* el n£mero total de elementos en el array <aDestino>.
|
||
*
|
||
* Si <xBuscar> es un bloque de c¢digo, la operaci¢n de la funci¢n es
|
||
* ligeramente diferente. Cada referencia del subindice del array es
|
||
* pasada al bloque de c¢digo para ser evaluada. La rutina de b£squeda
|
||
* continuar hasta que el valor obtenido del bloque de c¢digo sea
|
||
* verdadero (.T.) ¢ hasta que el final del array haya sido alcanzado.
|
||
* $EXAMPLES$
|
||
* * El siguiente ejemplo utiliza una funci¢n de biblioteca para llenar
|
||
* el array aDir con los nombres de archivos en el directorio actual.
|
||
* Posteriormente, busca si entre ellos esta presente el archivo
|
||
* test.prg, devuelve cero si no esta, ¢ mayor de cero si est .
|
||
*
|
||
* LOCAL aDir := DIRECTORY( "*.*")
|
||
* ? ASCAN( aDir,,,{|x,y| x[1] == "test.prg" } )
|
||
* $STATUS$
|
||
* R
|
||
* $COMPLIANCE$
|
||
* Esta funci¢n no es compatible con CA-Cl*pper . La funci¢n ASCAN() de
|
||
* Clipper es afectada por la condici¢n SET EXACT ON/OFF
|
||
* $FILES$
|
||
* El c¢digo fuente est en source\vm\arrays.c
|
||
* La librer¡a asociada es vm
|
||
* $SEEALSO$
|
||
* AEVAL(), EVAL()
|
||
* $END$
|
||
*/
|
||
|
||
/* $DOC$
|
||
* $FUNCNAME$
|
||
* AEVAL()
|
||
* $CATEGORY$
|
||
* ARRAY
|
||
* $ONELINER$
|
||
* Ejecuta un bloque de c¢digo por cada elemento en el array
|
||
* $SYNTAX$
|
||
* AEVAL(<aArray>, <bBlock>, [<nInicio>], [<nContador>]) --> aArray
|
||
* $ARGUMENTS$
|
||
* <aArray> es el array a ser evaluado.
|
||
*
|
||
* <bBloque> es el bloque de c¢digo a evaluar para cada elemento
|
||
* procesado
|
||
* <nInicio> es el elemento de inicio del array a evaluar.
|
||
*
|
||
* <nContador> es el n£mero de elementos a procesar desde <nInicio>
|
||
* hasta el final del array <aArray>
|
||
* $RETURNS$
|
||
* AEVAL() retorna una referencia a <aArray>
|
||
* $DESCRIPTION$
|
||
* Esta funci¢n eval£a y procesa los elementos en <aArray>.
|
||
* Un bloque de c¢digo pasado como <bBloque> define la operacion a ser
|
||
* ejecutada sobre cada elemento del array. Todos los elementos en
|
||
* <aArray> ser n evaluados a menos que sea especificada la posici¢n de
|
||
* comienzo en <nInicio> por <nContador> elementos.
|
||
* Por defecto <nInicio> es uno.
|
||
*
|
||
* Dos par metros son pasados al bloque de c¢digo <bBloque>. Los
|
||
* elementos individuales en el array son el primer par metro y su
|
||
* posici¢n en el array es el segundo.
|
||
*
|
||
* AEVAL() no reemplaza al bucle FOR...NEXT para procesar arrays.
|
||
* Si un array es una unidad aut¢noma, AEVAL() es apropiado. Si el array
|
||
* va a ser alterado ¢ si los elementos van a ser reevaluados, un
|
||
* bucle FOR...NEXT es m s apropiado.
|
||
* $EXAMPLES$
|
||
*
|
||
* $STATUS$
|
||
* R
|
||
* $COMPLIANCE$
|
||
* Esta funci¢n es totalmente compatible con CA-Cl*pper.
|
||
* $FILES$
|
||
* El c¢digo fuente est en source\vm\arrays.c
|
||
* La librer¡a asociada es vm
|
||
* $SEEALSO$
|
||
* EVAL(),DBEVAL()
|
||
* $END$
|
||
*/
|
||
|
||
|
||
/* $DOC$
|
||
* $FUNCNAME$
|
||
* ACOPY()
|
||
* $CATEGORY$
|
||
* ARRAY
|
||
* $ONELINER$
|
||
* Copia elementos de un array a otro
|
||
* $SYNTAX$
|
||
* ACOPY( <aOrigen>, <aDestino>, [<nInicio>], [<nContador>],
|
||
* [<nPosDestino>] )--> aDestino
|
||
* $ARGUMENTS$
|
||
* <aOrigen> es el array desde el que se copian los elementos.
|
||
*
|
||
* <aDestino> es el array al que se copian los elementos.
|
||
*
|
||
* <nInicio> es la posici¢n desde donde se inicia la copia en
|
||
* <aOrigen>. Por defecto es uno.
|
||
* <nContador> es el n£mero de elementos a copiar comenzando en la
|
||
* posici¢n <nInicio>
|
||
*
|
||
* <nPosDestino> es la posici¢n de inicio en el array <aDestino> hacia
|
||
* donde se copian los elementos. Por defecto es uno.
|
||
* $RETURNS$
|
||
* ACOPY() retorna una referencia al array <aDestino>
|
||
* $DESCRIPTION$
|
||
* ACOPY() copia elementos desde el array <aOrigen> hacia el array
|
||
* <aDestino>. Esta funci¢n copia todo tipo de datos.
|
||
*
|
||
* Si un elemento en el array <aOrigen> es un puntero de referencia a
|
||
* otro array (submatriz), esa referencia ser copiada al array
|
||
* <aDestino> pero no todas las dimensiones ser n copiadas de un array
|
||
* al otro. Esto debe ser realizado via funci¢n ACLONE().
|
||
*
|
||
* Note
|
||
* Si el array <aOrigen> es mayor que <aDestino>, los elementos en el
|
||
* array comienzan a ser copiados en <nPosDestino> y continuan
|
||
* copiandose hasta que el final del array <aDestino> es alcanzado, los
|
||
* elementos que sobran en <aOrigen> se descartan.
|
||
* La funci¢n ACOPY() no agrega posiciones al array destino, el tama¤o
|
||
* del array <aDestino> permanece constante.
|
||
* $EXAMPLES$
|
||
* * El ejemplo siguiente copia un array sobre otro.
|
||
*
|
||
* LOCAL nContador := 2, nInicio := 1, aUltimo, aPrimero
|
||
* aUltimo := { "HARBOUR", " es el ", "Heredero" }
|
||
* aPrimero := { "CLIPPER", " fue el ", "Pionero" }
|
||
* ACOPY( aUltimo, aPrimero, nInicio, nContador)
|
||
* $STATUS$
|
||
* R
|
||
* $COMPLIANCE$
|
||
* Esta funci¢n es totalmente compatible con CA-Cl*pper.
|
||
* $FILES$
|
||
* El c¢digo fuente est en source\vm\arrays.c
|
||
* La librer¡a asociada es vm
|
||
* $SEEALSO$
|
||
* ACLONE(),ADEL(),AEVAL(),AFILL(),AINS(),ASORT()
|
||
* $END$
|
||
*/
|
||
|
||
|
||
/* $DOC$
|
||
* $FUNCNAME$
|
||
* ACLONE()
|
||
* $CATEGORY$
|
||
* ARRAY
|
||
* $ONELINER$
|
||
* Duplica un array anidado ¢ multidimensional
|
||
* $SYNTAX$
|
||
* ACLONE( <aOrigen> ) --> aDuplicado
|
||
* $ARGUMENTS$
|
||
* <aOrigen> es el nombre del array a ser clonado.
|
||
* $RETURNS$
|
||
* ACLONE() retorna <aDuplicate> un nueva referencia a otro array
|
||
* exactamente igual al original.
|
||
* $DESCRIPTION$
|
||
* Esta funci¢n realiza una copia completa del array llamado <aOrigen>.
|
||
* Crea todas las dimensiones en el array <aDestino> que existen en el
|
||
* array original y luego llena cada dimensi¢n con los mismos valores
|
||
* de los elementos en el original.
|
||
* Ambos arrays coexisten como entidades distintas.
|
||
* $EXAMPLES$
|
||
* * El ejemplo siguiente crea un array bidimensional y lo duplica.
|
||
* Se muestra que son copiadas ambas dimensiones.
|
||
*
|
||
* LOCAL aOrigen, aDestino
|
||
* aOrigen := { {1, 2}, {3, 4}, {5, 6}, {7, 8}, {9, 10} }
|
||
* aDestino := ACLONE( aOrigen )
|
||
*
|
||
* * primera dimensi¢n
|
||
* ? "Impares son: " // Resultado: es {1, 3, 5, 7, 9}
|
||
* FOR n := 1 TO LEN( aDestino)
|
||
* ?? aDestino [n][1]
|
||
* NEXT
|
||
*
|
||
* * segunda dimensi¢n
|
||
* ? "Pares son: " // Resultado: es {2, 4, 6, 8, 10}
|
||
* FOR n := 1 TO LEN( aDestino)
|
||
* ?? aDestino [n][2]
|
||
* NEXT
|
||
*
|
||
* $STATUS$
|
||
* R
|
||
* $COMPLIANCE$
|
||
* Clipper retorna NIL si el par metro no es un array.
|
||
* $FILES$
|
||
* El c¢digo fuente est en source\vm\arrays.c
|
||
* La librer¡a asociada es vm
|
||
* $SEEALSO$
|
||
* ACOPY(),ADEL(),AINS(),ASIZE()
|
||
* $END$
|
||
*/
|
||
|
||
|
||
/* $DOC$
|
||
* $FUNCNAME$
|
||
* ASORT()
|
||
* $CATEGORY$
|
||
* ARRAY
|
||
* $ONELINER$
|
||
* Ordena un array
|
||
* $SYNTAX$
|
||
* ASORT( <aDestino>, [<nInicio>], [<nContador>],
|
||
* [<bOrden>] ) --> aDestino
|
||
* $ARGUMENTS$
|
||
* <aDestino> es el nombre del array a ser ordenado.
|
||
*
|
||
* <nInicio> es el primer elemento para comenzar el ordenamiento.
|
||
* Por defecto es uno.
|
||
*
|
||
* <nContador> es el n£mero de elementos a ordenar comenzando en la
|
||
* posici¢n <nInicio>. Por defecto son todos los elementos
|
||
*
|
||
* <bOrden> es el bloque de c¢digo para el orden de ordenamiento,
|
||
* por defecto es en orden ascendente {| x, y | x < y }.
|
||
* El bloque de c¢digo debe recibir dos elementos del array
|
||
* como parametros y debe retornar .T. si el orden es el
|
||
* correcto, .F. en caso contrario.
|
||
* $RETURNS$
|
||
* ASORT() retorna una referencia al reciente array ordenado <aDestino>
|
||
* ¢ NIL si el par metro <aDestino> no es un array.
|
||
* $DESCRIPTION$
|
||
* Esta funcion ordena todo ¢ parte de un array dado. Si <bOrden> es
|
||
* omitido, la funci¢n espera que <aDestino> sea un array unidimensional
|
||
* conteniendo un solo tipo de datos (uno de: CHARACTER, DATE, LOGICAL,
|
||
* NUMERIC) y ordena este array en orden ascendente: los caracteres son
|
||
* ordenados por su valor ASCII, las fechas son ordenadas
|
||
* cronologicamente el valor l¢gico .F. va antes de .T. y los valores
|
||
* num‚ricos son ordenados por su valor.
|
||
*
|
||
* Si <bOrden> es especificado este es usado para manejar la forma de
|
||
* ordenamiento. Cada vez que el bloque es evaluado, dos elementos del
|
||
* array son pasados al bloque de c¢digo, y el bloque debe retornar un
|
||
* valor l¢gico que define si esos elementos estan en orden (.T.) ¢ no
|
||
* (.F.). Usando este bloque se puede ordenar arrays multidimensionales
|
||
* hacer un ordenamiento descendente ¢ a£n (pero para que querria Ud.
|
||
* hacerlo) ordenar un array que contenga diferentes tipo de datos.
|
||
* $EXAMPLES$
|
||
* * El siguiente ejemplo ordena valores numericos en orden ascendente
|
||
*
|
||
* ASORT( { 3, 1, 4, 42, 5, 9 }) // Resultado: { 1, 3, 4, 5, 9, 42}
|
||
*
|
||
* * El siguiente ejemplo ordena cadenas en orden descendente
|
||
* LOCAL aKeys := { "Ctrl", "Alt", "Delete" }, n
|
||
* LOCAL bOrden := {| x, y | UPPER( x ) > UPPER( y ) }
|
||
* ASORT( aKeys,,, bOrden )
|
||
* FOR n = 1 TO LEN( aKeys )
|
||
* ? aKeys [n] // Resultado: { "Delete", "Ctrl", "Alt"}
|
||
* NEXT
|
||
*
|
||
* * El siguiente ejemplo ordena dos arrays bidimensionales de acuerdo
|
||
* al segundo elemento de cada par.
|
||
*
|
||
* LOCAL aPair := { {"Sun",8}, {"Mon",1}, {"Tue",57}, {"Wed",-6} }
|
||
* ASORT( aPair,,, {| x, y | x[2] < y[2] } )
|
||
*
|
||
* FOR n = 1 TO LEN( aPair )
|
||
* ? aPair [n][1], aPair [n][2]
|
||
* NEXT
|
||
* // Resultado: { {"Wed",-6}, {"Mon",1}, {"Sun",8}, {"Tue",57} }
|
||
* $STATUS$
|
||
* R
|
||
* $COMPLIANCE$
|
||
* La frecuencia de llamada al bloque de c¢digo y el orden difiere de
|
||
* Clipper debido a que Harbour usa un algoritmo distinto (m s r pido)
|
||
* de ordenamiento (quicksort).
|
||
* $FILES$
|
||
* El c¢digo fuente est en source\vm\arrays.c
|
||
* La librer¡a asociada es vm
|
||
* $SEEALSO$
|
||
* ASCAN(),EVAL(),SORT
|
||
* $END$
|
||
*/
|
||
|
||
|