A-1. Consideraciones Generales
	La base de datos ideal para especímenes está diseñado para permitir:  1) facilidad para ordenar registros de especímenes en las categorías o secuencias deseables; 2) búsqueda,  recuperación, y cálculos eficientes de la información deseada; 3) eficiente corrección, edición y actualización;  4) facilidad para compartir datos con otras instituciones e indivíduos; y 5) uso eficiente del espacio del disco. 
	Como una regla general,  es mejor esparcir los datos dentro de las unidades prácticas más pequeñas. Lo más fácil es combinar campos despues, que separarlos. Mientras más números de campo sean reconocidos,  existe mejor posibilidad de ordenar e indexar especímenes y lo más fácil es efectuar búsquedas y resolver interrogantes. Así mismo, cuando los campos son pequeños, es más fácil revisar y editar los datos para que sean consistentes.  
	Los datos ingresados en los campos los cuales probablemente van a ser usados para seleccionar o indexar la base de datos deben ser monitoreados y mantenidos en un formato y escritura uniforme. Por ejemplo, dado que Ud.  frecuentemente puede requerir ordenar los registros de la base de datos o crear reportes los cuales son ordenados por el nombre del colector y el número, es importante estandarizar la forma de escritura del nombre del colector. Si esta es consistente, puede ser modificada posteriormente, si es necesario, con un reemplazo global de un comando.
	Es también mejor, cuando el espacio del disquete es limitado, usar abreviaciones estándares donde sea práctico, y evitar frases o palabras repetitivas, tales como  “Depto.” o “Altitud”. Protocolos simples pueden ser usados  para convertir las abreviaciones o añadir palabras repetitivas cuando se desee, ya sea directamente a la base de datos o para imprimir un reporte (para ejemplos vea las Secciónes E-2  y H-1.) 
	En la mayoría de programas para base de datos, la cantidad de espacio usado es una función directa del número de los registros por la suma de la longitud de los campos. Los campos que son llenados con información ocupan tanto espacio como los campos vacíos.  Por lo tanto es importante no hacer campos más grandes de lo necesario, y  generalmente es práctico  no construir campos que raramente contendrán información, tal como un campo para "número de cromosomas“ , el cual puede anotarse en el campo de notas, de ser necesario.
	Los software de dBase reconocen varios tipos de campo, incluyendo campos numéricos, de caracteres, logicos y de fecha. Un campo es mejor diseñando como numérico cuando: a) serán ingresados en él solamente números, y b) si se requiere seleccionar, indexar o efectuar cálculos en el campo. Los campos numéricos automaticamente justifican su contenido al lado derecho, mientras los de carácter tienen justificación a la izquierda y por lo tanto no seleccionan números en un orden numérico real.
	Es posible reducir el uso de espacio utilizando algunos enlaces ("linked"), o “bases de datos relacionales” ("relational data bases"). Por ejemplo, una lista de los nombres científicos puede ser almacenada en una base de datos, y ligada al registro de especímenes mantenidos en otra base de datos, por medio de un único número referencial. Esto es una práctica común para bases de datos grandes, y es posible hacerlo usando dBase. Sin embargo, no es necesario en una base de datos pequeña, la cual puede ser convertida posteriormente a partir de un "flat file" a un diseño relacional. 
	Nuestras colecciones de plantas vasculares del norte peruano son capturadas en cuanto llegan en  un archivo de dBase IV (o V) llamado DETBASE. La estructura del archivo  DETBASE, y una muestra de registro se muestra en la Figura 1. A continuación se presenta una explicación del contenido de los campos.
1. CLASE - Este campo permite la selección de los principales grupos de los taxa (PTEridofitas, GYMnospermas, MONocotiledoneass, DICotiledoneas) para el catálogo florístico.
2. FAMILIA - Se usan también abreviaciones de tres letras como en Weber (1982).  Vea el  Apéndice 1 para las abreviaciones; el Apéndice 2 para la ubicación  de familias de los géneros de helechos. 
3. GENERO -	Nombre del género
4., 7.  ESPECIES, SUBESPECIE - Epíteto específico e infraespecífico, respectivamente.
5., 8. AUTOR, AUTOR2 - Autor(es) (incluyendo el autor de los basiónimos entre paréntesis) de la  especie y taxón subespecífico respectivamente. Si es posible, use abreviaciones estándar, como en  Brummitt & Powell, 1992.
6. VAR_SSP  - Rango de taxón subespecífico (f., ssp., or var.)
	
9. AFF_CF - Este campo es para  comentarios abreviados, o "calificadores" acerca de la determinación. Usualmente no es importante que se siga un modelo o formato rígido, pero generalmente se incluyen los siguientes parámetros:
	cf. [”comparable a”]
	aff. [afin, “relacionado con”]
	vel aff. [o  un taxon cercano]
	s.s. [sensu stricto, en sentido estricto]
	s.l. [sensu lato, en sentido amplio]
	hybrid [híbrido]
	ex (o e) descr [identificación basada solamente en una descripción publicada;
		no hubo otros especímenes disponibles para comparación]
	* - Usamos un asterisco en este campo para indicar los comentarios más extensos acerca de la determinación, tal como nombre del subgénero, o un taxon más estrechamente relacionado, etc. puede encontrarse en el campo NOTAS.
10. DEPTO - Abreviaciones de los departamentos peruanos usados en  Cat. Fl. Peru (Brako & Zarucchi, 1993).
AM = Amazonas
AN = Ancash
AP = Apurimac
AR = Arequipa
AY = Ayacucho
CA = Cajamarca
CU = Cuzco
HU = Huánuco
HV = Huancavelica
IC = Ica
JU = Junín
LA = Lambayeque
LI = Lima
LL = La Libertad
LO = Loreto
MD = Madre de Dios
MO = Moquegua
PA = Pasco
PI = Piura
PU = Puno
SM = San Martín
TA = Tacna
TU = Tumbes
UC = Ucayali
11. SITIO - Este campo puede ser usado para proyectos codificados por números o letras, va a ser determinado individualmente por el usuario. Permite que los datos de colección asociados con algún proyecto en particular sean rapidamente obtenidos para usarlos en reportes, recuentos, catálogos y datos estadísticos.
12. PROV - Nombre de la provincia
13. LOCAL - Toda la demás información acerca de la localidad.
14. HABITAT - Información acerca del hábitat, especies asociadas. 
15. OBSERV - Información correspondiente al hábito de una planta, información ecológica, etc.
16. COLECTOR - Nombre del colector principal.
17. COL_AD - Nombres de los colectores adicionales, separados por comas.
18. NUMERO - Número de colecta. Este campo acepta solamente datos numéricos.
19. SUFFIX - Este campo es usado para sufijos, tales como "a" y "b", o “-93" del número de la colección. 
20. HERBARIO - Acrónimos para los herbarios donde se encuentran los especímenes, separados por comas.
21. DUPL - Este campo puede ser usado:  a) para seleccionar etiquetas de especímenes o de determinación para impresión, de tal forma que las etiquetas que necesitan el mismo número de copias sean impresas en la misma hoja y se ahorre papel;   y  b) para indicar cuantos duplicados se encuentran disponibles para distribución.
22-24. DIA, MES, ANO - Información de fechas. NOTA: abreviamos los meses con letras y no con números para evitar confundirlo con los dias.
25-26. ELEVACION, ELEV2 - Estos campos aceptarán 4 dígitos de datos numéricos, y asume las medidas en metros. Si contamos unicamente con un dato de altitud, se ingresa en el campo ELEVACION. Si se citan rangos altitudinales, como 2800-3200 m, se ingresa la altitud baja en ELEVACION y la más alta en ELEV2. 
	
26-27. CORDLAT, CORDLON - Estos campos aceptarán solamente 4 dígitos. Nuestra base de datos asume  latitud sur (S), y longitud oeste (W). Si es necesario, se puede añadir campos de caracter simple después de CORDLAT y CORDLON para diferenciar Norte-Sur y Este-Oeste. 
28. NOTAS - Cualquier tipo de información adicional.
29. DETERMIN - Nombre de quien hizo la determinación, seguido por una coma y la fecha. 
30. ENVIOS - Indica si la determinación más reciente del registro ha sido enviado al colector o no.  (Vea H-3.)  
31. ANNOT - Indica si las etiquetas de determinación están listas para imprimirse, o ya fueron impresas. (Usamos “A” y “D,” respectivamente, para “annotated” y “done.”)
	La gran utilidad de bases de datos se debe a su capacidad de ordenar rapidamente de muchas formas y luego editarlo, imprimirlo, copiarlo o exportarlo en cualquier orden.
	La herramienta principal para ordenar una base de datos es el "index". Esto es como el índice de un libro, un archivo auxiliar asociado con la base de datos el cual contiene la información para un ordenamiento rápido del archivo en un orden determinado por el usuario.  Con un index en uso, el  archivo de la base de datos puede ser editado, impreso (como una lista o reporte), copiado o exportado, y todas estas operaciones serán efectuados siguiendo el orden del índice en uso. Pueden definirse múltiples índices para cualquier base de datos, y las especificaciones son nominadas con "tag", a través del cual pueden recuperarse en el momento que uno lo requiera. Los índices automaticamente se actualizan cuando el archivo es editado, y se guardan cuando se cierra el archivo. La búsqueda de un registro específico en una base de datos muy grande, o en una computadora lenta, puede resultar una pérdida de tiempo, pero en una base de datos indexado, las búsquedas (usando el comando SEEK) para el campo indexado son más rápida.
	La creación de índices puede hacerse a través del menú o del "dot prompt" (comando line).
D-1. Creación de un índice a partir del menú 
	1.  A partir del modo EDIT o BROWSE, seleccione el menú ORGANIZE.
	2.  Seleccione CREATE NEW INDEX.
	3.  Usando el submenú que se visualiza, debe presionar primero ENTER , antes de ingresar su selección.
	4.  INDEX NAME (o “tag”):  Este es el nombre usado para recuperar el índice desde el comando line, de tal forma que debe hacerlo fácil de recordar. Para un index simple, puede asignarse el mismo nombre del campo.
	5.  Después de haber seleccionado todo lo requerido, presione CTRL-END.
	6.  La base de datos aparecerá en el nuevo formato hasta que sea cerrado o el índice cambiado.
Ejemplos: 
NOTE: A menos que se especifique de otra forma, asuma los valores por defecto para: 
FOR clause => [none], 
Order of index => [Ascending]; 
Display first duplicate key only => [NO].
Los registros ordenados por número de la coleta:
	
Index name		NUMERO	(o un nombre deseado)
	
Index expression 	NUMERO
Los registros ordenados por colector y número.
NOTA: En este ejemplo, Ud. debe usar STR() para convertir los datos de  NUMERO a Caracter ; si no es así leerá el siguiente mensaje de error “Data type mismatch.”
	
Index name		COLECCION
	
Index expression  	COLECTOR+STR(NUMERO)
Para las colecciones de Sagástegui, ordenado por número
	
Index name		SAGAST
	
Index expression  	NUMERO
	
FOR clause		COLECTOR=”Sagástegui”
Registros ordenados por familia, género, y especie.
	
Index name		TAXON
	
Index expression	FAMILIA+GENERO+ESPECIES
	
Una lista de todas las especies encontradas en la base de datos, ordenadas  por familia y especies, con cada especie enlistada una sola vez (" UNIQUE list").
	
Index name				UNITAXON
	
Index expression  			FAMILIA+GENERO+ESPECIES
	
Display first duplicate key only 	YES
D-2. Uso de los Índices 
	Una vez creados, todos los índices para una base de datos <FILENAME>.DBF son automáticamente almacenados en un archivo llamado  <FILENAME>.MDX. Este  archivo es automáticamente actualizado cada vez que los registros en la base de datos son cambiados o añadidos. 
D-2.1.  Ordenamiento de la base de datos por un índice
A partir del MENU:
	1.  En el modo BROWSE o EDIT, ingrese al menú ORGANIZE, y seleccione 
Order records by index. NOTA: Una vez que el índice se ha creado, el reordenamiento de la base de datos por el índice es extremadamente rápido. 
	2.  Seleccione el nombre del índice de manera automática a partir del menú. Por medio de la selección 
Natural Order regresará al orden no indexado.
A partir de "dot prompt":
	
.use <filename> 
order <name of index>
    e.g., 
.use detbase order taxon
   O, si el archivo ya está en uso:
	
.set order to taxon 
   Retornar a la base de datos no indexado:
	
.set order to	
D-2.2.  Busqueda en archivos indexados 
	Los archivos indexados  pueden ser usados para búsquedas muy rápidas  en el campo indexado. Para ello use el comando 
seek  a partir del "dot prompt". El comando 
seek solamente busca en campos indexados, en el orden en el cual aparecen en la expresión del índice.
 
Ejemplos:
Para localizar el primer registro con número de colección 8347 en DETBASE
.use detbase order numero
.seek 8347		[NOTA: Los datos en campos numéricos no deben colocarse entre
.edit			comillas]
 
Para localizar el primer registro de Lamiaceae en el índice TAXON de DETBASE
.use detbase order taxon
.seek “LAM”		[NOTA: Datos tipo carácter deben colocarse entre comillas]
.edit
Para localizar el primer registro de 
Salvia en el índice TAXON 
.use detbase order taxon
.seek “LAMSalvia”
.edit
D-2.3. Situaciones del dBase que afectan el comando SEEK 
SET EXACT ON/OFF	Esta expresión determina cómo dBase ejecuta búsquedas e interpreta afirmaciones condicionales (“Condition statements”).  Con EXACT ON, el contenido del campo debe relacionarse exactamente con las condiciones establecidas para la búsqueda. Con EXACT OFF, pueden aparecer caracteres adicionales en el campo. Por ejemplo, con  EXACT ON, una búsqueda para "Leiva" en el campo de colector, no encontrará ningún registro de “Leiva, S.”  En cambio con EXACT OFF, para “Leiva” reportará también registros de “Leiva”, “Leiva, S.” and “Leiva, P.” sin discriminación. 
SET NEAR ON/OFF		Esta expresión establece cómo dBase responde si no se localiza ningún registro solicitado. Con  NEAR ON,  localizará el registro con mayor semejanza al valor especificado. Con  NEAR OFF, el panel de registro se ubicará al final del archivo, y aparecerá el mensaje “Value not found” (Valor no encontrado).
	
D-2.4. Notas sobre la edición de archivos indexados 
	Casi cualquier operación puede efectuarse en un archivo cuando éste es indexado, pero es necesario tomar algunas precauciones.
	1. Si los datos son cambiados en el campo indexado, el registro puede ubicarse en una nueva posición tan pronto como este sea capturado, y la pantalla lo mostrará en su nueva posición. Si no desea seguir al registro a su nueva posición, vaya al menú 
Records, y elija 
“no” en  “
Follow record to new position (Siga el registro en su nueva posición).” 
	2.  Operaciones con archivos globales, i.e., donde dBase tiene que buscar a través de todo el archivo ciertos registros, corre más rapidamente sobre archivos sin indexar, que en aquellos donde el indice está en uso. Antes de efectuar tales operaciones, retorne la base de datos a una forma sin indexar. Ejemplos de tales operaciones son: SEARCHes sobre campos no indexados,  SORTs, COUNTs, y el comando REPLACE (si es global).
	3.  Borre los índices que no necesite. Esto puede realizarse a través del menú Organize.  Los índices requieren espacio, e incluso tiempo, ya que constantemente están actualizándose cuando el archivo es modificado. Incluso cada vez que que se cambia la estructura del archivo, o borra registros de  la base de datos, los índices son automaticamente regenerados, y necesitan tiempo.
	4.  No intente modificar la estructura de la base de datos mientras un índice está uso.
	5.  Muy rara vez, Ud. puede tener problemas para visualizar toda la base de datos a través de "browse". Si esto ocurre, vaya a "Organize Menu" y use el comando "Reindex".  
	6.  Si Ud. copia un archivo indexado de la base de datos a  otro disco, pero no copia el archivo index (MDX), recibirá un mensaje de error la primera vez que use el archivo copiado. 
Production.MDX file not found. Ud debe seleccionar 
Proceed el cual es seguido por el mensaje  
Production index file reference deleted.
D-3. Localización de registros sin un índice
	La forma más rápida para localizar un registro particular es a través del uso de un Index, como se describió anteriormente. Sin embargo puede necesitar la búsqueda de un registro en un archivo no indexado.  SEARCHing en un campo no indexado es mucho más lento que SEEKing en un campo indexado. La ventaja es que las búsquedas pueden localizar caracteres a partir de una  frase en cualquier campo, mientras SEEK puede encontrar solamente los caracteres al inicio del campo.
	Ud. puede efectuar búsquedas en campos no indexados a partir del Menú o de la línea de comando (dot prompt). Note que la línea de comando permite búsquedas más complejas. 
D-3.1.  A partir del Menú: “Search”
	Coloque el cursor en el campo que Ud. desea buscar. Use la opción 
"Search" en el Menú 
Go To. Si la palabra que busca NO está al inicio del campo, use "*" en ambos lados de la palabra..
	Por ejemplo, para localizar registros con la palabra “Cachil”  dentro del campo LOCAL, “search” para 
*Cachil*.
D-3.2.  A partir del Comando Line: “Locate”
	El comando LOCATE FOR <condition> iniciará la búsqueda al inicio del archivo y encontrará el primer registro que reune la condición dada. La búsqueda puede continuarse con el comando CONTINUE.  Al igual que el comando SEEK,  el comando LOCATE es afectado por las condiciones  “EXACT” y “NEAR”. 
Ejemplos:
Para encontrar un registro cuando “Wurdack” 
 es  la primera palabra en el campo  DETERMIN 
.locate for determin=”Wurdack”
	
Para encontrar un registro con “Cachil” en cualquier lugar del campo LOCAL.
.locate for “Cachil”$local
Para encontrar un registro con el colector Sanchez, para altitudes menores de 3500 m, y la palabra "jalca" contenida en el campo de hábitat.
.locate for colector=”Sanchez”.and.elevacion<3500.and.”jalca”$habitat
Para continuar la búsqueda a través de todo el archivo para un carácter especificado por el último comando  LOCATE:
.continue (o 
cont)
	Tipicamente, las bases de datos están sujetas a constantes actualizaciones y correcciones, algunas veces por diferentes personas. Se discuten aquí algunas recomendaciones para facilitar la actualización y los procedimientos de mantenimiento.
 
	La adición de determinaciones nuevas a la base de datos es tipicamente el cambio más común e importante que puede hacerse al archivo. Si van a ser añadidas múltiples determinaciones, puede hacerse más rápidamente usando un index en el campo  NUMERO, luego usar el comando SEEK para localizar el registro. Puede también usar "
set fields" como se sugirió  anteriormente.
	Es necesario desplazarse entre la línea de comando y  la base de datos, para ejecutar  
seek.  Para evitar pérdida de datos recién ingresados, tenga cuidado de usar 
Ctrl-End para retornar a la línea de comando, y no la tecla Escape (Esc),  o los datos no serán archivados.  
	En muchas ocasiones puede ser necesario una edición a gran escala, o “global” en la base de datos. Por ejemplo, orden y recuperación eficientes de información en una base de datos depende de la consistencia en la escritura correcta de los nombres de las personas, lugares, especies, y otros. De encontrar errores, usar el comando "
replace",  el mismo que es una herramienta poderosa para las correcciones. La sintaxis adecuada y las opciones para este comando son las siguentes: 
NOTA: Antes de efectuar un reemplazo global, puede ser necesario usar el comando SET EXACT ON para evitar errores.
REPLACE <fieldname> WITH <expression>	
	SCOPE afirmación			FOR condición			WHILE condición				
Reemplazar el  contenido del campo con una expresión seleccionada. En ausencia de SCOPE, FOR, o WHILE , será reemplazado solamente un registro (Vea Apéndice 3)
Ejemplos:
Para reemplazar los datos en el campo de COLECTOR del actual registro solamente con  “Sánchez Vega, I.”
.replace colector with “Sánchez Vega, I.”
Para reemplazar los datos en el campo de COLECTOR para todos los registros con “Sánchez Vega, I.” 
.replace colector with “Sánchez Vega, I.” all
Para reemplazar con “I. Sánchez Vega” el campo de COLECTOR de todos los registros en los cuales la primera palabra actualmente es “Sanchez” 
.replace colector with “I. Sánchez Vega” for colector=”Sanchez”
Para reemplazar el campo de  CLASE con “MON” para todos los registros que contienen “POA” en el campo de FAMILIA. 
.replace clase with “MON” for familia=”POA”
Para ingresar  “3" en el campo de SITIO para todos los registros que contienen la palabra  “Cachil” en cualquier lugar en el campo  LOCAL.
.replace sitio with “3" for “Cachil”$local
 	El comando 
replace puede usarse también con expresiones más complejas, tales como los siguientes ejemplos, adaptados de nuestro programa para etiquetas de especímenes. NOTA: Si Ud. añade caracteres al campo, tal como se ha hecho aquí, el campo usualmente primero debe elongarse, y el tipo de campo cambiado si fuese necesario.
.replace determin with “det. by ” + rtrim(determin) all
	Esto inserta los caracteres “det. by “ al inicio del campo DETERMIN. La función 
rtrim() recorta los espacios en blanco en el lado derecho del campo, de tal manera que haya espacio para la nueva combinación. 
   
.replace elevacion with “Alt. “ + ltrim(elevacion) + “ msnm.” for elevacion#”  “
	Esto revisa el campo de  ELEVACION para verificar que no esté vacío (elevacion#”    “), y si no lo está, recorta los espacios  en blanco al lado izquierdo del campo, inserta “Alt. “ antes del contenido del campo y  después “ msnm.”  De esta manera “3500"  se convierte en “Alt. 3500 msnm.” 
.replace observ with stuff(observ,AT(“rojo”,observ),4,”amarillo”) for “rojo”$observ
	Las funciones  STUFF() y AT() pueden ser usadas con el comando  REPLACE para ejecutar la acción "búsqueda y reemplace" (“search and replace”). El ejemplo anterior reemplazará la palabra “rojo” con la palabra “amarillo”,  en cualquier parte que esté presente en el campo  OBSERV, en todo el archivo. El comando indicará a dBase: iniciar en la posición donde se encuentra la palabra “rojo” en el campo OBSERV [
AT(“rojo”,observ)]; elimina las 
4 letras; y sustituye la palabra 
“amarillo”. [Por supuesto, se reemplazará  “rojo” incluso cuando estas letras forma parte de otras palabras,  para especificar la búsqueda puede usar espacios antes y después de  las palabras entrecomilladas.]
 
	El comando 
replace puede efectuar incluso cálculos matemáticos, como en el siguiente ejemplo, el cual convierte pies a metros en el campo  ELEVACION, multiplicando el valor del campo por .305.
 
.replace elevacion with elevacion*.305
	Para mayor ayuda en la construcción de expresiones complejas, vea las funciones  SUBSTR(), STUFF(), y AT() en el Manual de Lenguaje de dBase. Para calculadas expresiones, vea Sección F.  
	A fin  de mantener la base de datos como una herramienta eficiente para la recuperación de información, frecuentemente es necesario corregir los campos individuales, especialmente campos indexados, para su consistencia en escritura correcta y uso, particularmente de nombres de las personas, lugares y especies. 
	 Para lo cual puede usar un index  UNIQUE de tal forma que cada variante en la corrección es enlistada una sola vez. 
	Por ejemplo, para corregir a consistencia en el campo del  COLECTOR:
1) crea un índice UNIQUE por COLECTOR. 2)  LIST COLECTOR TO PRINT. [Vea comando  LIST, Sección G-1.] Ud. obtendrá una lista semejante a:
A. Sagastegui
A. Sagastegui A.
A. Sagástegui
Dillon
Dillon, M.
Dillon, M.O.
Dillon, M. O.
I. Sánchez V.
I. Sánchez Vega 
J. Sanchez
J.Sanchez
M. Dillon
Sagastegui
Sagástegui
Sanchez   [for I. Sánchez 		Vega]
Sanchez, J.
Sanchez V., I.
Sánchez Vega, I.
	Una vez que se ha seleccionado la escritura deseada, Ud. puede cambiar todas las otras versiones del nombre, usando un comando "replace". Por ejemplo, se puede seleccionar el nombre  
Sánchez Vega, I. para ese colector. Para corregir todas las otras versiones del nombre:
.set order to		[Retornar la base de datos  a la forma no indexada, o el proceso será lento]
.set exact on		[para evitar cambiar accidentalmente Sanchez, J. a Sánchez Vega, I.]
.replace for colector=”I. Sánchez V.”.or.colector=”I. Sánchez Vega” .or. colector = 	”Sanchez”.or.colector=”Sanchez V., I.” colector with “Sánchez Vega, I.”
	De acuerdo a las necesidades de su trabajo, Ud. puede requerir cambiar la estructura de la base de datos. Por ejemplo, puede necesitar alargar el campo NOTAS, o añadir campos extra para proyectos adicionales o códigos para procesamiento de especímenes. La estructura de una base de datos pueden cambiarse cuando Ud. lo necesite, usando el comando  
modify structure. Sin embargo, es preciso tener algunas precauciones:
	1.  Efectue una copia de seguridad del archivo, antes de efectuar cualquier cambio en la estructura.
	2.  Después de ello, revise que el disquete tenga el espacio suficiente para efectuar el cambio. Se necesitará igual espacio libre de la base de datos ya existente, o más aun si se desea alargar o crear nuevos campo.
	3.  Si desea cambiar un campo de Tipo  C (Caracter) a Tipo N (Numérico), todos los datos de carácter, y los siguentes se perderán. Por ejemplo,  “B127" en un campo de  Carácter, aparecerá como “0" en el resultante campo Numérico, mientras  “127B” se traducirá como “127".
	4. Ud. puede cambiar el nombre de los campos ya existentes, pero NUNCA al mismo tiempo que está efectuando otro cambio en la estructura.
	5. Ud. puede añadir nuevos campos, y cambiar la longitud o tipo  (pero NO el nombre) de campos ya existentes al mismo tiempo.
F. Estadística Simple
	Esta sección resume los comandos disponibles en la base de datos, los cuales pueden ser utilizados para obtener simple información numérica y estadística.
F-1. Conteo de registros con una condición dada
COUNT				Cuenta registros con una condición dada.
	
SCOPE afirmación
	
FOR condición
	
WHILE condición
Ejemplos:
Cuántos especímenes colectados por Sagástegui hay en la base de datos?
.count for colector="Sagastegui"
Cuántos especímenes no están determinados en la base de datos?
.count for especies="   "
Cuántos especímenes de 
Piptochaetium han sido colectados por Sánchez?
.count for colector= "Sanchez".and.genero="Piptochaetium"
Cuántas determinaciones hizo Leiva en 1995?
.count for "Leiva"$determin.and."95"$determin
Cuántos especímenes de 
Palicourea se colectaron en Bosque Cachil?
.count for "Cachil"$local.and.genero="Palicourea"
Cuántas especies de 
Palicourea se reportan para Bosque Cachil? (Suponga que "3" es el código del proyecto para Cachil)
Primero, genere un índice UNIQUE en GENERO+ESPECIES+SITIO
.count for genero="Palicourea".and.especies#" ".and.sitio="3"
Cuántos géneros están representados en la base de datos?
Primero establezca un índice UNIQUE en GENERO
.count all
F-2. Usando la línea de comandos para computarizar
	Usted puede utilizar dBase como una calculadora para operaciones matemáticas simples, usando +,-,*, y/, para sumar, restar, multiplicar y dividir respectivamente.
Ejemplo: En la línea de comando(dot prompt), escriba
.?3*4
  12
Que porcentage de especímenes en la base de datos son Asteraceae?
.count for familia="AST"
  312
.?312/reccount()   [donde reccount()=número de registros en la base de datos actual]
 
0.18
F-3. El comando CALCULATE
	Aparentemente este comando tiene un uso limitado para nuestros objetivos, pero sus funciones se resumen a continuación.
CALCULATE<lista opcional>   Realiza cálculos de datos en los campos
	SCOPE afirmación
	FOR condición
	WHILE condición
donde "lista opcional" puede ser una de las siguientes
	AVG(exp)		valor promedio de un campo (o expresión)
	MAX(exp)		encuentra el valor más grande de un campo
	MIN(exp)		encuentra el valor más pequeño de un campo
	SUM(exp)		suma de valores en el campo
Ejemplos:
Cuántos duplicados hay para distribución?
.calculate sum(dupl)
Cuál es el número de colecta más pequeño de Sagástegui en la base de datos?
.calculate min(número) for colector="Sagastegui"
Cuál es la altitud promedio donde han sido colectados los especímenes en la base de datos?
.calculate avg(elevacion)
Cuál es el tamaño máximo necesario para el campo OBSERV? (i.e., cuál es el conjunto de carácteres más largo que aparece en el campo?) NOTE que LEN(exp) da una longitud.
.calculate max(len(observ))
	Con la base de datos es posible generar una gran variedad de reportes útiles para diferentes propósitos, desde procesamiento de especímenes hasta de investigación.
	Usando dBase IV y WordPerfect 5.1, se pueden generar reportes impresos mediante: 
1) el comando 
list; 
2) el 
report form generator; 
3) exportación de archivos de texto delimitado (ASCII) a WordPerfect.
	Recientemente hemos evolucionado a dBase V y WordPerfect 6.0 para Windows, los cuales tienen diferente capacidad para generar reportes. WordPerfect 6.0 puede importar archivos directamente de bases de datos (ya sea dBase IV o V), con la instalación estándar.  El generador de reportes de dBase V (Crystal Reports) es diferente del de dBase IV, y no tenemos experiencia con él, ya que la capacidad de WordPerfect 6.0 lo reemplaza (excepto para la función "Group Band").
G-1. El comando LIST
	Este comando, disponible desde la línea de comando, es el más rápido, y con frecuencia el mejor generador de listas de trabajo, e.g., listas para revisión de datos. Usando las diversas opciones disponibles con el comando, así como los índices disponibles, los datos pueden ser ordenados y filtrados de muchas formas posibles. La desventaja de este método es que permite solamente un formato limitado de impresión, y no es apropiado para generar copias publicables.
	Los campos son formateados en columnas, con el nombre del campo en la parte superior. Sin embargo, si el total de la amplitud de los datos seleccionados en cada registro excede la amplitud de la página, la impresora interrumpe o enlaza los renglones. En el último de los casos, el trazo de la columna es interrumpido y difícil de interpretar. En cualquiera de los dos casos, el comando list con frecuencia es poco práctico para reportes que contengan cantidades relativamente grandes de datos por registro.
LIST				Despliega el contenido del archivo en lista columnar en la pantalla.
FIELDS <lista de campos>	Enlista solamente los campos específicos, en el orden mostrado.
SCOPE afirmación
FOR condición
WHILE condición
TO PRINTER/TO FILE 	También manda la lista a la impresora o al archivo.
OFF 				Evita que el número de registro se imprima (ahorrando espacio)
Ejemplo:
.list fields colector,número,género,especies for año>1992 to printer off
G-2. El Generador de Reportes (dBaseIV)
	Este programa depende de dBase IV y puede ser utilizado para generar reportes estándares formateados de calidad publicable o casi publicable. Los reportes generados de esta forma pueden también ser escritos para archivos de texto y exportados a un procesador de palabras para su edición posterior. Este es un método más práctico para imprimir reportes cuando los datos por registro exceden la amplitud del papel. El reporte se genera mediante el arreglo de templetes de campos en una pantalla de diseño de reportes. Este diseño puede archivarse permanentemente (con una extensión 
.FRM) para un uso posterior.
G-2.1. Diseño de un Reporte
G-2.1.1. Procedimiento Básico
	1. Abra la base de datos a la que se le va a aplicar el reporte.
	2. En el comando line, escriba: 
.create report <report form filename> Puede usar cualquier nombre para la forma de reporte de archivo. Aparecerá una pantalla de diseño.
	3'. Opción 1. Del 
Layout Menu, puede seleccionar 
Quick Layout, y luego 
Column o 
Form. La pantalla de diseño formateará automaticamente el reporte, conteniendo todos los campos de la base de datos, ordenados ya sea en Columna (Browse Mode) o Forma Layout (Edit Form), con los encabezados provistos. Los campos no deseados pueden ser eliminados, y hacerse otras modificaciones. Sin embargo, estos trazos tienden a usar mucho espacio en la impresión, por lo que un 
Custom Layout (trazo diseñado) (Opción 2) es preferible para nuestros propósitos.
	3".Opción 2. Escriba el título del reporte bajo
Report Intro Band [Introducción]. La 
Page Header Band es utilizada normalmente para encabezados de columnas cuando el reporte se imprime con la forma de columna común. Es raro su uso en trazos diseñados, y puede dejarse vacío.
	4. Los "templetes de campo" se ordenan en la 
Detail Band [Cuerpo], de la siguiente forma:
		a) Posicione el cursor donde desee que se imprima el primer campo.
		b) Presione 
F5 para una lista de campos.
		c) Sobreilumine un campo, e.g. COLETOR, y retorne.
		d) Se le mostrará una caja de diálogo con variables de despliegue, para verificar. Presione CTRL END.
		e) El templete de campo (una línea de XXX's para campos de carácter, 999's para campos numéricos) aparecerá en la 
Detail Band. NOTA: El nombre del campo NO aparecerá, a menos que usted lo escriba; de cualquier forma cuando usted diseñe el reporte puede identificar los templetes del campo que ha agregado sobreiluminándolos con el cursor; el nombre del campo se verá en el 
Status Bar al final de la pantalla.
		f) Seleccione todos los campos que quiera, ordenados en columnas, hileras, o parráfos como lo desee.
	5. Desde el 
Report Form Design Screen, usted puede 
View Report on Screen (Ver el reporte en la pantalla), desde el 
Print Menu. Si desea, puede imprimir el reporte directamente desde el menú de impresión (print menu).
	6. Si tiene problemas con el formateo de longitud de página, puede diseñar una longitud de página y archivarla para una forma de impresión permanente (.PF file), usando el menú de impresión.
	7. Para guardar la forma de reporte para un uso posterior, 
Save changes and exit (guarde los cambios y salga).
G-2.1.2. Notas en el ordenamiento de templetes de campo
	1. Si conecta los templetes de los campos con un espacio duro (el cual se mostrará como una caja obscurecida), todos, excepto un espacio entre los campos será recortado. Esto es importante porque le permite conjugar datos de diferentes campos, en lugar de imprimirlos en un formato de columna, e.g.,
Chionanthus wurdackii Stahl
Schrebera americana (Zahlbruckner) Gilg
NO
Chionanthus		wurdackii		Stahl
Schrebera		americana		(Zahlbruckner) Gilg
	2. Para determinar el número de campos que pueden acomodarse en una línea, generalmente se requiere experimentación. La longitud de la línea estándar en la pantalla de diseño (Design Screen) es 254. Es posible programar los márgenes derecho e izquierdo usando el 
Words Menu, 
antes de que haya iniciado los templetes de los campos. Sin embargo, con el márgen derecho programado en 60 (por ejemplo),  la pantalla de diseño no le permitirá que le ponga más campos en una línea que tiene un total de 60 carácteres. Y si usted esta recortando los espacios en blanco de los campos, como arriba, las longitudes actuales de las líneas serán generadas mucho más cortas que el total de las longitudes de los campos.  También es posible programar 
Word Wrap, si piensa que las líneas son muy largas para la página, pero en mi experiencia no todas las impresoras responden a esta programación, y algunas enlazarán los renglones aun con el 
Word Wrap apagado.
	3. Cualquier carácter o signo de puntuación que usted escriba entre los templetes de campos, tales como ":", "det.por", o "NOTAS: "también se imprimirá en esa posición en el reporte. No obstante, si el campo asociado con este texto está vacío, el texto se imprimirá de todos modos.
G-2.1.3. Uso de bandas grupales (Group Bands)
	Si va a imprimir de un archivo indexado, usted probablemente desee los registros agrupados en base al índice. Por ejemplo, si el archivo es indexado por 
FAMILIA + 
GENERO + 
ESPECIES, puede usar las 
bandas grupales (“Group Bands”) para conseguir los siguientes resultados.
Sin “Group Band”:
ACA Aphelandra acanthifolia Hook.
ACA Aphelandra formosa (H. & B.) Nees
ACA Beloperone sessilifolia Lindau
ACA Thunbergia alata Bojer
ACT Saurauia bullosa Wawra
ACT Saurauia loeseneriana Busc.
ACT Saurauia peruviana Busc.
“Group Band” = FAMILIA: 
	ACA
Aphelandra acanthifolia Hook.
Aphelandra formosa (H. & B.) Nees
Beloperone sessilifolia Lindau
Thunbergia alata Bojer
	ACT
Saurauia bullosa Wawra
Saurauia loeseneriana Busc.
Saurauia peruviana Busc.
Para añadir bandas grupales:
	1. Posicione el cursor en el Report Intro Band, bajo el título que ha capturado.
	2. Elija 
Add a group band (Añadir una banda de grupo) de el 
Bands Menu.
	3. Elija 
Field Value del menú.
	4. Elija el campo que quiere agrupar.
	5. Ingrese cualquier el templete de campo donde quiera que se imprima en el 
Report Intro Band. Use 
F5 (como en 4b anteriormente). Si quiere que tenga sangrias, como se muestra en los ejemplos, debe marcarlas en el templete.
	6. Ingrese banda(s) de sub-grupo ("sub-group band) en las líneas siguientes, si quiere. Por ejemplo, podría también agrupar géneros, dentro de los grupos de familia.
Ejemplo:
Un diagrama de una forma de reporte utilizada para enviar listas de determinaciones.
(En una forma de reporte actual, los campos se despliegan como 
XXX's y 
999's, no como nombres de campos como se muestra):
Report Intro Band-------------------------------------------
	Lista de determinaciones para CPUN, junio 1995
Group Band (Bandas Grupales)---------------------------------------------
	[COLECTOR]
Detail Band (Cuerpo)--------------------------------------------
[NUMERO][SUFFIX] - [FAMILIA]: [GENERO][ESPECIES][AUTOR][VAR_SSP]...(*)
	det. por [DETERMIN]; NOTAS: [NOTAS]
[LINEA EN BLANCO]
(*) la línea continua... [SUBESPECIE][AUTOR2][AFF_CF]
G-2.2. Impresión de un reporte
	Para imprimir un reporte desde un archivo de forma de reporte existente:
	1. 
Use el archivo de la base de datos a la que el reporte se refiere.
	2. Si usa una forma de impresión estándar, ingrese
	
._pform="<print form filename>"
	3. Para ver la estructura de la forma del reporte, y para hacer modificaciones necesarias, tales como cambio de título, escriba
	
.modify report <report form filename>
	Puede entonces imprimir desde el menú de impresión.
	4. Alternativamente, puede imprimir directamente de la línea de comando escribiendo
	
.report form <report form filename> to print
	5. 
O puede exportar el reporte a un archivo de texto de ASCII, legible por un procesador de palabras.
	
.report form <report form filename> to file <newfile>.txt
G-3. Exportación de archivos de texto ASCII a WordPerfect
	Datos sin formato o con algun formateo preliminar, pueden ser exportados para edición e impresión a un procesador de palabras como WordPerfect, por varias vías.
	1. Los datos pueden ser preformateados por el comando LIST (opción LIST to FILE, Sección G-1). Este archivo puede ser leido directamente por WordPerfect.
	2. Los datos pueden ser preformateados de una manera más intensa por una 
Report Form (opción REPORT FORM to FILE, Sección G-2).  Esta opción es preferible a la Opción 3 cuando se desea banda grupal.
	3. Los datos pueden ser escritos para  un archivo de WordPerfect Secondary Merge ( o "Data File" in WP 6.0). Esta opción permite el formateo más extenso. Los procedimientos se diferencían de WP5.1 y WP 6.0, y son los siguientes:
G-3.1. Exportación de datos a archivos de WordPerfect Merge (WordPerfect 5.1)
	1. 
.use <filename>
	2. Ordene los registros con un index, si lo desea 
(.set order to...)
	3. 
.copy to <newfile> delimited   [En este punto, puede elegir cuales registros desea, con una "FOR clause". Vea el comando 
COPY para opciones, Apéndice 3b.] Esto provocará que se cree un archivo de ASCII, con una extensión TXT, a menos que se especifique lo contrario. Los archivos de textos delimitados se ven así cuando son leidos por WordPerfect:
“ACA”,”Aphelandra”,”acanthifolia”,”Hook.”,”“,”“,”“,”LL”,”“,”Bolivar”,”El tambo, cerca a la ciudad de Bolivar”,”Ladera de arbustos y arboles.”,”Arbusto, pubescente. Flores anaranjadas”,”I. Sanchez Vega”,”“,”5034",”“,”CPUN,F,OS”,”“,”28",”Ago”,”1989",”3100",”“,”“,”“,”“,”D. Wasshausen, 1993",”no”,”“
“ACA”,”Aphelandra”,”formosa”,”(H. & B.) Nees”, . . . . . . 
Para convertir un archivo de texto delimitado ASCII a un Archivo Secundario de Fusión (Secondary Merge File):
	 4. Abandone dBase. En la linea de comando de DOS, escriba 
CONVERT
	     Name of input file? <PATHNAME>\<filename>.txt
	     Nombre del archivo original? <directorio>\<nombre del archivo>.txt
	     
Name of output file? <PATHNAME>\<filename>.sf
	     Nombre del nuevo archivo? <directorio>\<nombre del archivo>.sf
	     Elija 
Mailmerge to WordPerfect Secondary Merge
                 Enter field delimiter characters  , [ENTER]
	     Escriba los caracteres que limitaran los campos, [RETORNO]
	     
Enter record delimiter characters  {13}{10} [ENTER]
	     Escriba los caracteres que limitaran los registros {13}{10} [RETORNO]	
	     
Enter character to be stripped from file  ” [ENTER]
	     Escriba los caracteres que serán extraidos del archivo 
”  [RETORNO]
El  Archivo Secundario de Fusión aparecerá de la siguiente forma sigue:
ACA
ENDFIELD
Aphelandra
ENDFIELD
acanthifolia
ENDFIELD
Hook.
ENDFIELD
ENDFIELD
ENDFIELD
. . . . . 
ENDFIELD
D. Wasshausen, 1993
ENDFIELD
no
ENDFIELD
ENDFIELD
ENDRECORD
ACA
ENDFIELD
Aphelandra
ENDFIELD
formosa
ENDFIELD
(H. & B.) Nees
ENDFIELD . . . . . . 
	5. En este punto, tiene una segunda oportunidad para ordenar los registros en los campos seleccionados (con 
Merge/Sort), si no se hizo en dBase.
G-3.2. Exportación de datos a archivos de Datos de WordPerfect - WordPerfect 6.0
	WordPerfect 6.0 tiene una capacidad poderosa para leer e importar archivos de bases de datos. Con una instalación estándar apropiada, no es necesario copiar la base de datos a un archivo de texto de ASCII. También es posible elegir los campos deseados, y filtrar, o "query" (buscar) los registros a medida que son importados. Una vez importados, pueden ser ordenados con facilidad. Por lo tanto generalmente no es necesario preformatear los datos utilizando el comando list o el generador de reportes. (Sin embargo, la función de "Bandas Grupales" no esta disponible).
	También es posible importar archivos de texto de ASCII, directamente de WordPerfect. La utilidad CONVERT ya no existe.
G-3.2.1. Importación directa de registros de bases  de datos (se requiere instalación especial) 
	1. Introduzca la pantalla de documento de WordPerfect.
	2. Elija 
Spreadsheet/Database del menú 
Insert.
	3. Elija 
Import.
	4. De la barra de 
Data Type, elija 
dBase. [Si no ha hecho la instalación apropiada, se le pedirá que lo haga.]
	5. Elija el nombre de archivo y la vía del directorio de dBASE.
	6. Aparecerá una lista de campos. Elija los campos que desea importar.
	7. Si lo desea, elija 
Query para definir las condiciones de selección. Ejemplo: Para importar solamente aquellos registros con 
annot="a", elija el campo 
ANNOT y escriba 
a en el espacio inferior.
	8. Los datos serán importados en la forma de un archivo secundario de fusión, descrito anteriormente.
	9. Puede ordenar los registros como se desee. [Note que WordPerfect no puede realizar ordenamiento ''Unique", análogo al provisto por la opción de índice de dBase "UNIQUE". Para obtener este resultado, ordene los registros de la base de datos por el índice UNIQUE deseado, y luego copiélo para una archivo temporal para ser importado por WordPerfect.]
		a) Seleccione 
Sort desde el menú 
Tools.
		b) Seleccione 
User-defined sort y 
New...
		c) Escriba el número de Campo que desea ordenar. WordPerfect ordenará la primera palabra en el campo. Si desea ordenar más de un campo, elija 
Add Key.
	10. Guarde los datos importados a un archivo, como <filename>.DAT.
G-3.2.2. Importación de archivos de Texto Delimitado (ASCII)
	1. Siga los pasos 1 & 2 como en WordPerfect 5.1.
	2. Salga de dBase y entre a WordPerfect.
	3. Seleccione 
Spreadsheet/Database desde el 
Menu Insert.
	4. Seleccione 
Import.
	5. Desde la barra 
DataType, seleccione 
ASCII Text File.
	6. Escriba el nombre del archivo de TXT y la vía del directorio.
	7. Los datos serán importados en la forma de un archivo secundario de fusión.
	8. Siga los pasos 9 y 10 como anteriormente.
G-3.3. Archivos Primarios de Fusión (Formas) 
	Un archivo primario de fusión (=”form file” en WP 6.0) da instrucciones a WordPerfect de como formatear datos que acaba de importar. (Para ejemplos de archivos primarios de fusión vea Figura 2). Para crear este archivo:
G-3.3.1. Diseño de un Archivo Primario de Fusión (WP 5.1)
	1. Haga una lista numérica de los campos en su segundo archivo de fusión.
	2. Abra un documento nuevo.
	3. Seleccione el tipo de carácter principal (“font type”).
	4. Inserte en el documento los "códigos de fusión" ("merge codes") numerados donde quiera que aparescan los campos del mismo número. Para hacerlo presione 
SHIFT-F9,1,<number> en la página en el lugar deseado. También puede insertar cualquier otro texto deseado.
	5. Inserte el código de fusión "PAGE OFF" al final presionando 
SHIFT-F9,4, o la impresora avanzará una página para cada registro.
	6. Guarde el archivo
	7. Fusione los archivos presionando Ctrl-F9,1, y los nombres de los archivos primarios y secundarios al indicarsele.
G-3.3.2. Diseño de un Archivo de Formato (“form file”) (WP6.0)
	1. Seleccione 
Merge desde el 
Menu Tools
	2. Seleccione 
Create a Form File.
	3. Cuando se le indique a 
Associate a Data File, escriba los nombres de los archivos de datos que acaba de crear.
	4. Diseñe el archivo de Forma como se describió para WordPerfect 5.1. No obstante, si importó el archivo directamente, cuando seleccione 
Insert Field, se le dará una lista de nombres de campo para seleccionar, y no necesitará usar números de campos. Estos nombres de campos también aparecerán en el archivo.
	Esta sección contiene guias de sugerencia para generar etiquetas de especímenes, listas y etiquetas de determinaciones, y catálogos de especies. Otros usos valuables no detallados aqui, son fácil de obtener de la generación de listas de exsiccatas e índices para exsiccatas para tratamientos taxónomicos. Para la producción de etiquetas de alta calidad, usamos dos técnicas no discutidas anteriormente: un programa de dBase para interpretar las abreviaciones y añadir verbaje repetitivo, tales como "Depto." y "det. by", y una definición de una "etiqueta" estandar en WordPerfect. Estas técnicas son aplicables tambien para otros propósitos, pero su uso se detalla aquí, en Sección H-1. 
H-1. Etiquetas de Especímenes
	Hacer etiquetas de especímenes directamente de las bases de datos ahorra mucho tiempo y esfuerzo, ya que es generalmente más fácil capturar datos en la base de datos que directamente en las etiquetas o en un formato de etiquetas de un procesador de palabras, y gran parte del formateo se hace automaticamente. Un procedimiento general que utilizamos para hacer etiquetas es el siguiente.
	1. 
Captura de datos - Los especímenes registrados se capturan en un archivo llamado ETIQUETA.DBF, con la misma estructura de "DETBASE."
	2. 
Inicie el programa de dBase de etiquetas (LABELS.PRG) - Este programa cumple lo siguiente:
	a) Modifica las abreviaciones de nombres de familia, y nombres de departamento a su escritura completa, y añade los prefijos y sufijos apropiados al contenido de los campos.
	b) Escribe los datos en un archivo de texto ASCII el cual puede ser leido por Word Perfect. (Este paso no es necesario para procesadores de palabras que pueden importar bases de datos directamente, tales como WordPerfect 6.0)
	3. 
Genere un archivo de datos WP - El archivo es escrito a un "archivo Secondary Mail Merge (=Archivo de Datos, in WP 6.0) por uno de los métodos descritos en la Seccion G-3.
	4. 
Fusione el archivo secundario de fusión (datos) con un archivo primario de fusión (forma) el cual ha sido creado en Word Perfect (vea Sección G-3.3 y Figura 2.)
	5. 
Formatee con un formato de etiquetas diseñadas, el cual ya ha sido creado en Word Perfect.
	6. Un poco de 
edición manual simple (adición y eliminación de lineas en blanco para hacer que las etiquetas quepan entre los cortes de páginas) es requerida en el archivo final de etiquetas de Word Perfect. Después de la captura de datos, este es generalmente el único paso del procedimiento que consume tiempo.
	7. 
Tip para ahorrar papel - Si necesita cantidades variables de etiquetas, puede ordenar la base de datos antes de exportar el campo DUPL. Este permitirá ordenar las etiquetas de acuerdo al número de duplicados que necesita.
H-1.1. Un programa de etiquetas dBase para conversión de datos
	El programa que usamos para convertir registros de base de datos para la producción de etiquetas se encuentra en el Apéndice 4a, y su funcionalidad se explica a continuación.
	Líneas 1-3: El archivo de captura de datos ETIQUETA es copiado en una estructura nueva de archivo llamada ETIQUET2. Este archivo nuevo contiene solamente aquellos campos necesarios para la producción de etiquetas. Además, varios campos son mas largos y de diferente tipo, para acomodar las transformaciones de los contenidos de los campos logradas en el programa. (Vea Apéndice 4b para la estructura del archivo ETIQUET2).
	Líneas 4-14: Varios campos son modificados para ser más legibles. Por ejemplo,
	PROV		Cutervo=>		Prov. Cutervo.
	ELEVACION	3500   =>		Alt. 3500 m
	CORDLAT	548    =>		[5 48'S; 79 22'W]
	CORDLON	7922
	NUMERO	15320  =>		15320 (justificado a la izquierda)
	NOTA: El programa distinguirá los campos que están vacíos y no les agregará datos adicionales (e.g., "Prov.""Alt."or"det."), produciendo una etiqueta más límpia que la mayoría de los programas.
	Líneas 15-16: "FAMILIA" y "DEPTO" son subrutinas que traducen las abreviaciones de familia y departamento. Esto se realiza usando los archivos auxiliares (FAMILIA.DBF, DEPTO.DBF; vea Apéndice 4b) las cuáles contienen las abreviaciones y la escritura completa. Los archivos son indexados en los campos que contienen la escritura abreviada, i.e., FAMILIA y DEPTO, con las etiquetas indexadas "FAMABB" y "DEPTABB", respectivamente. Se pueden hacer adiciones a estos archivos auxiliares cuando sea necesario, y más de una abreviación puede utilizarse para cualquier familia o departamento. La subrutina "FAMILY" también es útil cuando se generan catálogos para publicación, y pueden ser utilizados independientemente para este propósito.
	ASC		=>	ASCLEPIADACEAE
	CA		=>	Depto. Cajamarca:
Línea 17: Escribe un archivo de texto ASCII desde la base de datos convertida.
Líneas 18-20: Elimina todos los registros desde el archivo ETIQUET2 y cierra todas las bases de datos.
Líneas 21-24: Escribe el mensaje en la pantalla indicándole al usuario como ha sido nombrado el nuevo archivo de texto ASCII.
H-1.2. Formato de Etiquetas de WordPerfect
 
H-1.2.1.  Como funciona el formato de etiquetas
	"Etiquetas" es un opción de "Tipo de Papel" en WordPerfect. WordPerfect (dependiendo de la versión) reconoce varios tamaños y formatos diferentes de etiquetas. Si su versión no tiene definición de etiquetas, puede crear una y guardarla en su archivo para su uso futuro.
	El código de formato de Etiquetas debe ser ingresado en el Archivo Primario de Fusión (Form), o aparecerá al inicio de cada etiqueta provocando que la impresora avanze una página por cada etiqueta. Añádalo al archivo fusionado después de que la fusión ha sido completada.
	WordPerfect trata cada etiqueta como una página, las "páginas" se imprimen de izquierda a derecha, en lugar de arriba hacia abajo como en Formato de Columna. Por lo tanto si quiere hacer la prueba con una hoja de 6 etiquetas, debe solicitar la impresión de las Páginas 1-6. Si requiere 3 páginas, imprimirá 3 etiquetas en una hoja de papel (empezando en el lado izquierdo) y dejará 3 en blanco.
H-1.2.2. Creación de un formato para etiquetas
	1'. En WordPerfect 5.1:
		Presione: 
Shift-F8, Page(
2), Paper Size(
7),Add(
2),Labels(
8), 
yes
	1". En WordPerfect 6.0:
		Seleccione 
Format Menu, Labels, Create.
	2.  Ingrese las especificaciones del formato en la pantalla de diseño. Para etiquetas de especímenes, nosotros utilizamos papel 8.5 x 11", 6 etiquetas por página, con las siguientes pulgadas especificadas: Width 3.75" - Height 3.33" - Columns 2 - Rows 3 - Top 0.25" - Left 0.25". Distance between columns 0.5" - Distance between rows 0.25". Label Margins All 0". La versión en inglés (US) de WordPerfect 6.0 tiene un gran número de especificaciones de etiquetas de marca Avery, las cuales se pueden adaptar. Avery 5164 y 5664 imprimen etiquetas 2x3 por página. Avery 5661 y 5261 imprimen etiquetas de 2x10 por página (y puede funcionar para etiquetas de determinaciones.
H-2. Etiquetas de determinación 
	Las etiquetas de determinación pueden generarse de manera similar a las etiquetas de especímenes, usando el mismo método. Como se puede ver en la explicación de la estructura de DETBASE, 
“a” es introducida en el campo ANNOT cuando la determinación se captura, lo que es considerado el "final". Enseguida está un ejemplo de como los datos pueden exportarse de dBase a WP5.1, para imprimir etiquetas de determinaciones (Se requieren otra vez modificaciones para WP6.0, pero la lógica es la misma.)
	1. 
.use detbase order coleccion [i.e., colector + str(número)]
	2. 
.copy fields genero, especies, autor, var_ssp, subespecie, autor2, aff_cf, colector, numero, suffix, [notas,] determin for annot="a"to annot delimited
	3. Convertir ANNOT.TXT a un archivo secundario de fusión de WordPerfect.
	4. Vaya a WordPerfect. Fusiona ANNOT.SF con un archivo primario de fusión (Sección G-3.3.) 
	5. Formatee el archivo fusionado con un formato de etiqueta diseñada. [Para etiquetas de determinaciones nosotros utilizamos papel 8-1/2 X 11", 20 etiquetas por página, con las siguientes especificaciones: Width 4.18" -Height 1"- Columns 2 - Rows 10 - Top 0.12" - Left 0"-Distance between columns 0.14" - Distance between rows 0" - Left Margin 0.25" - Right Margin 0.25" - Top Margin 0.13" - Bottom Margin 0"; o "Avery 5261".]
	6. Edite el documento final, eliminándo y añadiéndo líneas en blanco para que las etiquetas se localizen dentro de los cortes de página.
	7. En cuanto las etiquetas de determinación sean impresas, regrese a la base de datos y:
	
.replace for annot="a" annot with "d"
H-3. Listas de Determinaciones
	Las listas de determinaciones pueden elaborarse facilmente ya sea mediante el generador de reportes, o por exportación a WordPerfect. Si los datos son exportados a WordPerfect, las etiquetas de determinaciones serán impresas desde el mismo archivo, usando una forma de archivo primario de fusión diferente. Cuando mande las determinaciones a otro herbario, es preferible imprimir ambas listas y etiquetas de determinaciones.
	Cuando una determinación nueva es capturada en la base de datos, 
“no” se captura en el campo de ENVIOS. Periodicamente, listas actualizadas de determinaciones son enviadas al herbario apropiado.
	Tan pronto como la lista se imprima, regrese a la base de datos y
	
.replace for colector="Sanchez".and.envios.="no"envios with "yes"
H-4. Catálogos de Proyecto
	Listas de especies para áreas particulares del proyecto (o para la base de datos completa), pueden ser generadas utilizando la opción de índice UNIQUE en dBase (Vea Sección D-1), con la claúsula apropiada FOR ("FOR clause") o programa de filtro (filter setting). Desde aquí, están diponibles varios métodos para generar reportes, dependiendo del software en uso. El generador interno de reportes de dBase es útil porque la función de Bandas Grupales puede extraer los nombres de las familias como encabezados de grupo. Si se importa directamente desde WP 6.0, necesitará copiar  el archivo indexado a un archivo temporal para importación, ya que el ordenamiento "UNIQUE" no está disponible en WordPerfect.
	Las abreviaciones de 3-letras para familia no ordenan las familias alfabéticamente de acuerdo a su escritura actual. Para remediar esto, los registros deseados y los campos pueden ser copiados a un archivo intermedio, donde las abreviaciones pueden ser traducidas (Vea Sección H-1.1, "Líneas 15-16"), y el archivo subsecuentemente indexado. 
Agradecimientos
	El Dr. Michael O. Dillon originó la base de datos DETBASE para este proyecto de trabajo florístico en el norte de Perú, y ha brindado ayuda y estímulo en el desarrollo de estos protocolos, y al escribir este manual. Los Doctores Michael Huft y Charlotte Gyllenhaal brindaron su asistencia generosa con el syntaxis de los programas de dBase, y con el desarrollo del programa de etiquetas de especímenes.  Agradezco a Pedro Lezama y Laura Torres por la traducción del texto al español.
Literatura Citada
Brako, L. & J. Zarucchi, 1993.  Catalogue of the Flowering Plants and Gymnosperms of Peru. 	Monogr. Syst. Bot. Missouri Bot. Gard. 45. 
Brummitt & Powell, 1992. Authors of Plant Names. Royal Botanic Gardens, Kew.
Kubitzki, K., ed. 1990. The Families and Genera of Vascular Plants, Vol. 1: Pteridophytes and Gymnosperms, Vol. editors K. U. Kramer & P. S. Green. Springer-Verlag, Berlin Heidelberg. 
Tryon, R. M. & R. Stolze, ed. 1989-1994. Pteridophyta of Peru, Parts I-VI, in Fieldiana, Bot. n.s. nos. 20: 1-145. (1989), 22: 1-128. (1989), 27: 1-176. (1991), 29: 1-80. (1992), 32: 1-190. (1993), 34: 1-123. (1994).  
Weber, W. A. 1982.  Mnemonic three-letter acronyms for the families of vascular plants: a device 	for more effective herbarium curation.  Taxon 31: 74-88. 
 
Apéndice 1. Abreviaciones para las familias de plantas vasculares (Peru) Adaptada de Weber, W. A. 1982, Taxon 31: 74-88.
ACA   ACANTHACEAE
AHT   ACHATOCARPACEAE
ACT   ACTINIDIACEAE
AGA   AGAVACEAE
AIZ   AIZOACEAE
ALI   ALISMATACEAE
ALS   ALSTROEMERIACEAE
ALZ   ALZATEACEAE
AMA   AMARANTHACEAE
AML   AMARYLLIDACEAE
ANA   ANACARDIACEAE
ANS   ANISOPHYLLEACEAE
ANN   ANNONACEAE
API   APIACEAE
APO   APOCYNACEAE
AQF   AQUIFOLIACEAE
ARA   ARACEAE
ARL   ARALIACEAE
ARU   ARAUCARIACEAE
ARE   ARECACEAE
ARS   ARISTOLOCHIACEAE
ASC   ASCLEPIADACEAE
ASL   ASPLENIACEAE
AST   ASTERACEAE
AZL   AZOLLACEAE
BNP   BALANOPHORACEAE
BLS   BALSAMINACEAE
BAS   BASELLACEAE
BAT   BATACEAE
BEG   BEGONIACEAE
BER   BERBERIDACEAE
BET   BETULACEAE
BIG   BIGNONIACEAE
BIX   BIXACEAE
BLE   BLECHNACEAE
BOM   BOMBACACEAE
BOR   BORAGINACEAE
BRA   BRASSICACEAE
BML   BROMELIACEAE
BNL   BRUNELLIACEAE
BUD   BUDDLEJACEAE
BMN   BURMANNIACEAE
BRS   BURSERACEAE
BUX   BUXACEAE
CAB   CABOMBACEAE
CAC   CACTACEAE
CSL   CAESALPINIACEAE
CLL   CALLITRICHACEAE
CLC   CALYCERACEAE
CAM   CAMPANULACEAE
CAN   CANNABACEAE
CNA   CANNACEAE
CPP   CAPPARACEAE
CPR   CAPRIFOLIACEAE
CRC   CARICACEAE
CCR   CARYOCARACEAE
CRY   CARYOPHYLLACEAE
CEC   CECROPIACEAE
CEL   CELASTRACEAE
CTP   CERATOPHYLLACEAE
CHN   CHENOPODIACEAE
CLR   CHLORANTHACEAE
CHB   CHRYSOBALANACEAE
CLE   CLETHRACEAE
CLU   CLUSIACEAE
CCH   COCHLOSPERMACEAE
COL   COLUMELLIACEAE
CMB   COMBRETACEAE
CMM   COMMELINACEAE
CNN   CONNARACEAE
CNV   CONVOLVULACEAE
CRR   CORIARIACEAE
COR   CORNACEAE
COT   COSTACEAE
CRS   CRASSULACEAE
CUC   CUCURBITACEAE
CUN   CUNONIACEAE
CUP   CUPRESSACEAE
CUS   CUSCUTACEAE
CTH   CYATHEACEAE
CCD   CYCADACEAE
CYC   CYCLANTHACEAE
CYP   CYPERACEAE
CYR   CYRILLACEAE
DAV   DAVALLIACEAE
DST   DENNSTAEDTIACEAE
DLP   DIALYPETALANTHACEAE
DCH   DICHAPETALACEAE
DCK   DICKSONIACEAE
DLL   DILLENIACEAE
DSC   DIOSCOREACEAE
DRS   DROSERACEAE
DRY   DRYOPTERIDACEAE
EBN   EBENACEAE
ELC   ELAEOCARPACEAE
ELT   ELATINACEAE
EPH   EPHEDRACEAE
EQU   EQUISETACEAE
ERE   EREMOLEPIDACEAE
ERI   ERICACEAE
ERO   ERIOCAULACEAE
ERX   ERYTHROXYLACEAE
EUP   EUPHORBIACEAE
FAB   FABACEAE
FAG   FAGACEAE
FLC   FLACOURTIACEAE
FNK   FRANKENIACEAE
FUM   FUMARIACEAE
GEN   GENTIANACEAE
GER   GERANIACEAE
GSN   GESNERIACEAE
GNK   GINKGOACEAE
GLC   GLEICHENIACEAE
GNE   GNETACEAE
GMM   GRAMMITIDACEAE
GRS   GROSSULARIACEAE
GNN   GUNNERACEAE
HAE   HAEMODORACEAE
HAL   HALORAGACEAE
HLC   HELICONIACEAE
HRN   HERNANDIACEAE
HPC   HIPPOCRATEACEAE
HUM   HUMIRIACEAE
HDR   HYDRANGEACEAE
HDC   HYDROCHARITACEAE
HYD   HYDROPHYLLACEAE
HMP   HYMENOPHYLLACEAE
HYP   HYPERICACEAE
ICC   ICACINACEAE
IRI   IRIDACEAE
ISO   ISOETACEAE
JUG   JUGLANDACEAE
JUL   JULIANIACEAE
JUN   JUNCACEAE
JCG   JUNCAGINACEAE
KRM   KRAMERIACEAE
LCS   LACISTEMATACEAE
LAM   LAMIACEAE
LAU   LAURACEAE
LCY   LECYTHIDACEAE
LMN   LEMNACEAE
LNN   LENNOACEAE
LNT   LENTIBULARIACEAE
LIL   LILIACEAE
LMC   LIMNOCHARITACEAE
LIN   LINACEAE
LOA   LOASACEAE
LOB   LOBELIACEAE
LOG   LOGANIACEAE
LOM   LOMARIOPSIDACEAE
LPH   LOPHOSORIACEAE
LOR   LORANTHACEAE
LXS   LOXOMATACEAE
LYC   LYCOPODIACEAE
LYT   LYTHRACEAE
MLH   MALESHERBIACEAE
MLP   MALPIGHIACEAE
MLV   MALVACEAE
MRN   MARANTACEAE
MTT   MARATTIACEAE
MRC   MARCGRAVIACEAE
MSL   MARSILEACEAE
MAR   MARTYNIACEAE
MAY   MAYACACEAE
MLS   MELASTOMATACEAE
MEL   MELIACEAE
MNS   MENISPERMACEAE
MNY   MENYANTHACEAE
MTX   METAXYACEAE
MIM   MIMOSACEAE
MOL   MOLLUGINACEAE
MNM   MONIMIACEAE
MOR   MORACEAE
MUS   MUSACEAE
MYR   MYRICACEAE
MYS   MYRISTICACEAE
MRS   MYRSINACEAE
MRT   MYRTACEAE
NAJ   NAJADACEAE
NPH   NEPHROLEPIDACEAE
NOL   NOLANACEAE
NYC   NYCTAGINACEAE
NYM   NYMPHAEACEAE
OCH   OCHNACEAE
OLC   OLACACEAE
OLE   OLEACEAE
OLN   OLEANDRACEAE
ONA   ONAGRACEAE
OPH   OPHIOGLOSSACEAE
OPI   OPILIACEAE
ORC   ORCHIDACEAE
ORO   OROBANCHACEAE
OSM   OSMUNDACEAE
OXL   OXALIDACEAE
PAP   PAPAVERACEAE
PPL   PAPILIONACEAE
PAS   PASSIFLORACEAE
PED   PEDALIACEAE
PHT   PHYTOLACCACEAE
PIN   PINACEAE
PIP   PIPERACEAE
PGY   PLAGIOGYRIACEAE
PTG   PLANTAGINACEAE
PLB   PLUMBAGINACEAE
POA   POACEAE
PDC   PODOCARPACEAE
PDS   PODOSTEMACEAE
PLM   POLEMONIACEAE
PGL   POLYGALACEAE
PLG   POLYGONACEAE
PLP   POLYPODIACEAE
PON   PONTEDERIACEAE
POR   PORTULACACEAE
POT   POTAMOGETONACEAE
PRM   PRIMULACEAE
PRT   PROTEACEAE
PSL   PSILOTACEAE
PTR   PTERIDACEAE
QII   QUIINACEAE
RAF   RAFFLESIACEAE
RAN   RANUNCULACEAE
RPT   RAPATEACEAE
RHM   RHAMNACEAE
RHZ   RHIZOPHORACEAE
ROS   ROSACEAE
RUB   RUBIACEAE
RUP   RUPPIACEAE
RUT   RUTACEAE
SAB   SABIACEAE
SAL   SALICACEAE
SVN   SALVINIACEAE
SAN   SANTALACEAE
SAP   SAPINDACEAE
SPT   SAPOTACEAE
SAX   SAXIFRAGACEAE
SCZ   SCHIZAEACEAE
SCR   SCROPHULARIACEAE
SEL   SELAGINELLACEAE
SMR   SIMAROUBACEAE
SML   SMILACACEAE
SOL   SOLANACEAE
STP   STAPHYLEACEAE
STR   STERCULIACEAE
SRZ   STRELITZIACEAE
STY   STYRACACEAE
SYM   SYMPLOCACEAE
TEA   THEACEAE
THL   THELYPTERIDACEAE
TEO   THEOPHRASTACEAE
THY   THYMELAEACEAE
TIL   TILIACEAE
TOV   TOVARIACEAE
TRG   TRIGONIACEAE
TRI   TRIURIDACEAE
TRP   TROPAEOLACEAE
TNR   TURNERACEAE
TYP   TYPHACEAE
ULM   ULMACEAE
URT   URTICACEAE
VAL   VALERIANACEAE
VLL   VELLOZIACEAE
VRB   VERBENACEAE
VIO   VIOLACEAE
VIS   VISCACEAE
VIT   VITACEAE
VTT   VITTARIACEAE
VOC   VOCHYSIACEAE
WIN   WINTERACEAE
XYR   XYRIDACEAE
ZAN   ZANNICHELLIACEAE
ZIN   ZINGIBERACEAE
ZYG   ZYGOPHYLLACEAE
Apéndice  2. Familias de los géneros peruanos de Pteridophytas fide Pteridophyta of Peru (Tryon & Stolze, eds., 1989-1994)
 PTR	 Acrostichum 
PTR	 Adiantopsis 
PTR	 Adiantum 
CTH	 Alsophila 
SCZ	 Anemia
VTT	 Anetium 
PTR	 Anogramma 
VTT	 Antrophyum
ASL	 Asplenium
DRY	 Athyrium 
SVN	 Azolla* (AZL)
BLE	 Blechnum 
DST	 Blotiella 
DRY	 Bolbitis* (LOM)
OPH	 Botrychium 
PLP	 Campyloneurum 
PTR	 Ceratopteris
PTR	 Cheilanthes
CTH	 Cnemidaria
DRY	 Ctenitis
DCK	 Culcita
CTH	 Cyathea
DRY	 Cyclodium
DRY	 Cyclopeltis 
DRY	 Cyrtomium
DRY	 Cystopteris
MTT	 Danaea
DST	 Dennstaedtia
DCK	 Dicksonia
PLP	 Dicranoglossum
GLC	 Dicranopteris
DRY	 Didymochlaena 
DRY	 Diplazium
PTR	 Doryopteris
DRY	 Dryopteris
DRY	 Elaphoglossum* (LOM)
EQU	 Equisetum 
PTR	 Eriosorus
GLC	 Gleichenia
PLP	 Grammitis* (GMM)
VTT	 Hecistopteris
DRY	 Hemidictyum 
PTR	 Hemionitis 
DST	 Histiopteris
LYC	 Huperzia 
HMP	 Hymenophyllum
DST	 Hypolepis
ISO	 Isoetes
PTR	 Jamesonia
DRY	 Lastreopsis
DST	 Lindsaea
DRT	 Lomagramma* (LOM)
DRY	 Lomariopsis* (LOM)
DST	 Lonchitis
LPH	 Lophosoria 
LXS	 Loxsomopsis
LYC	 Lycopodiella
LYC	 Lycopodium 
SCZ	 Lygodium 
THL	 Macrothelypteris
MTT	 Marattia
MSL	 Marsilea
DRY	 Megalastrum 
MTX	 Metaxya 
PLP	 Microgramma 
DST	 Microlepia
CTH	 Nephelea
DAV	 Nephrolepis* (NPH)
PLP	 Niphidium 
PTR	 Notholaena
DRY	 Oleandra* (OLN)
DRY	 Olfersia
OPH	 Ophioglossum 
OSM	 Osmunda
DST	 Paesia
PLP	 Pecluma
PTR	 Pellaea
DRY	 Peltapteris
PTR	 Pityrogramma
PGY	 Plagiogyria
PLP	 Platycerium
PLP	 Pleopeltis
DRY	 Polybotrya
PLP	 Polypodium
DRY	 Polystichum 
PSL	 Psilotum
DST 	 Pteridium
PTR	 Pteris 
PTR	 Pterozonium
DRY	 Rumohra
DST	 Saccoloma
BLE	 Salpichlaena
SVN	 Salvinia 
SCZ	 Schizaea 
SEL	 Selaginella
PLP	 Solanopteris
CTH	 Sphaeropteris
DRY	 Stigmatopteris
DRY	 Tectaria
THL	 Thelypteris
PTR	 Trachypteris
CTH	 Trichipteris
HMP	 Trichomanes 
DRY	 Triplophyllum
VTT	 Vittaria
DRY	 Woodsia
 
* Familias reconocidas por Kramer & Green, en Kubitzki 1990.
 
Apéndice 3. Uso de comandos de dBase
Muchas operaciones de dBase pueden ejecutarse a través del Sistema de Menú. Sin embargo casi todas las operaciones del Menú puede ejecutarse tambien a través de la línea de comandos, y muchas operaciones especiales pueden realizarse utilizando comandos solamente. Debido a que el Sistema de Menú se explica por si mismo, suponemos que no es necesaria su discusión. En cambio, resumiremos el lenguaje útil del comando en la construcción y mantenimiento del especímen y otros tipos de bases de datos. Estos comandos se presentan en la línea de comando, los cuales se obtienen por presionar ESCAPE del Menú Principal. Después de ello, para llegar a la línea de comando del desplegado de base de datos, presione CTRL-END. También puede utilizar ESCAPE, pero esto ocasionará que se pierdan los datos nuevos del registro en uso. Para regresar al desplegado del mend de la línea de comando presione F2.
Apendice 3a. Afirmaciones de rango y de condición 
Muchos comandos son modificados por afirmaciones de condición o de rango, los cuales se explican primero y son utilizados en los siguientes ejemplos:
Afirmaciones de RANGO
Afirmaciones "scope" (de rango) son enunciados utilizados con los comandos, los cuales limitan los registros efectuados. Son:
ALL			Revisa un archivo completo desde el primer registro
NEXT[n]		Desde el registro en uso y revisa un registro n total
REST			Inicia con el registro en uso y continua al final del archivo
RECORD[n] 		El comando se aplica solamente el registro n 
CONDICIONES (o "claúsulas FOR")
Cuando utiliza un enunciado de afirmación con la palabra "for" (para) dBase revisa la base de datos completa, empezando con la primera, buscando registros que coincidan con la condición. Las claúsulas de condición son creadas con "operadores," las cuales son:
 =   igual a 
		
#   no igual
		
$   contenida en 	
>    mayor que
<    menor que
>=  mayor que o igual a
.AND.	   Lógico y
.OR.	   Lógico o
.NOT.	   Lógico no
 Note: Todos estes operadores, incluyendo < y > pueden utilizarse con datos de caracteres alfabéticos o numéricos.
	
EJEMPLOS DE AFIRMACIONES DE CONDICION
for COLECTOR="Leiva"		"Leiva" aparece primero en el campo COLECTOR
for COLECTOR#"Leiva"		"Leiva" no es la primer palabra del campo del COLECTOR
for "Cachil"$LOCAL			"Cachil" aparece en el cualquier orden en campo de LOCAL
for DEPTO="CA".or.DEPTO="PI"   	El campo DEPTO contiene CA o PI
for DEPTO="CA".and.GENERO="Linum"  Todos los registros de Linum de Cajamarca
for NUMERO>8347			Todos los registros con NUMERO mayor que 8347
Condiciones WHILE
La palabara WHILE (mientras) puede ser sustituida por la palabra FOR (para) en una claúsula condicional. Esto provoca que dBASE inicie la busqueda en el registro actual y continue hacia abajo a través del archivo hasta que encuentra un registro el cual no reune la condición requerida.
Es útil, "REPLACE" (reemplazar) por ejemplo, para acelerar una operación al corregir un archivo indexado.
Las condiciones WHILE y FOR también pueden utilizarse juntas.
Apendice 3b. Indice de Comandos dBase elegidos
La información mandatoria en el comando se muestra en la primera línea. Afirmaciones opcionales se muestran en las líneas con sangría.
Usted puede abreviar la mayoría de los comandos con cuatro letras y dBase las reconocerá.
APPEND				Presenta un registro vacRo para captura de datos al final de 					archivo.
APPEND FROM    Copia el archivo  al final del 						archivo en uso.
BROWSE				Despliega los registros con campos en columnas verticales
CALCULATE			Vea sección F-3.
CONTINUE				Vea sección D-3.2.
COPY TO 	Copia el archivo en uso al archivo del nombre elegido.
DELIMITED			Genera un archivo de texto ASCII(para exportar)
FIELDS	Copia solamente campos especficos
afirmación SCOPE
condición FOR
condición WHILE
Ejemplo:
.copy to leiva93 delimited fields genero,especies,colector,numero for ano>1992
Copia a un archivo de ASCII LEIVA93.TXT los campos enlistados, para los registros colectados después de 1992.
COUNT						Vea sección F-1
CREATE REPORT 		Vea sección G-2
DIR				Enlista los archivos de base de datos en el directorio en uso
DIR *.* 			Enlista todos los archivos del directorio en uso
DIR A:*.* 			Enlista todos los archivos en el drive A
EDIT				Despliega los registros con los campos en hileras horizontales
ERASE			Borra el archivo especificado (use nombre completo de archivo)
GOTO[END,BOTTOM,]	El cursor va a una localización específica en el 						archivo.
LOCATE FOR 	Vea sección D-3.2.
LIST					Vea sección G-1.
PACK			Borra permanentemente los registros que se marcaron para 				eliminar.
REPLACE...			Vea sección E-2.
REPORT FORM 	Vea sección G-2
SEEK	Vea sección D-2.2 & 3
SET CARRY ON/OFF		Vea sección B.br>
SET CARRY TO 
SET DIRECTORY TO 	Temporalmente cambia el directorio en uso  							de dBase
SET EXACT ON/OFF		Vea sección D-2.3.
SET FIELDS TO 	Vea sección C.
SET FILTER TO 
SET NEAR ON/OFF			Vea sección D-2.3.
SET ORDER TO 	Vea sección D-2.1.
SORT TO  ON 	 Crea un nuevo archivo de base de 							datos ordenado en los campos seleccionados.
Afirmación SCOPE
Condición FOR
Condición WHILE
ZAP		Borra permanentemente todos los registros del archivo, guardando la estructura 		solamente.
 	 Apéndice 4. Un programa de conversión de datos para etiquetas de especímenes
Apéndice 4a. Programa de etiquetas (LABELS.PRG)
1    select 1
2    use etiquet2
3    append from etiqueta
4    replace prov with "Prov. "+rtrim(prov)+"." for prov#"  "
5    replace elevacion with "Alt. "+ltrim(elevacion)+" m."
 						 for len(ltrim(elevacion))>0.and.elev2="    "
6    replace elevacion with "Alt. "+ltrim(elevacion)+""+ltrim(elev2)+" m."
 						 for len(ltrim(elevacion))>0.and.elev2#"    "
7    replace cordlat with "         " for cordlat="        0"
8    replace cordlon with "         " for cordlon="        0"
9    replace cordlat with "["+ltrim(substr(cordlat,6,2))+" "+substr(cordlat,8)+"'S;" 
						 for cordlat#"        "
10   replace cordlon with " "+ltrim(substr(cordlon,6,2))+" "+substr(cordlon,8)+"'W]"          						 for cordlon#”         “
11   replace numero with ltrim(numero) all
12   replace determin with "det. "+rtrim(determin) for determin#"   "
13   replace col_ad with "con "+rtrim(col_ad) for col_ad#"   "
14   do family
15   do depto
16   copy to etiqueta delimited
17   delete all
18   pack
19   close databases
20   TEXT
21   ETIQUETA.TXT has been created in the current dBase directory and is ready 
22   for conversion.
23   ENDTEXT
24   return
25
26   *translates 3letter family abbrev. to full name
27   PROCEDURE FAMILY
28   select 1
29   use etiquet2
30   select 3
31   use families order famabb
32   select 1
33   scan for familia#"   "
34      store rtrim(familia) to mabb
35      select 3
36      if seek(mabb)
37           store famnames to mfull
38           select 1
39           replace familia with mfull
40       else
41          select 1
42       endif
43   endscan
44   return
45
46   *translates 4 letter dept. abbrev. to "Depto."+ full name
47   PROCEDURE DEPTO
48   select 1
49   use etiquet2
50   select 3
51   use depto order deptabb
52   select 1
53   scan for depto#"  "
54       store rtrim(depto) to mabb
55       select 3
56       if seek(mabb)
57           store decode to mfull
58           select 1
59           replace depto with mfull
60       else
61           select 1
62       endif
63   endscan
64   return
Apendice 4b. Estructura de archivos auxiliares para el programa LABELS.PRG
ETIQUETA.DBF - Vea estructura de DETBASE 
ETIQUET2.DBF
NOTE: Numeros de campos son los de Archivo de Fusión Primário (Forma). 
Campo			Tipo	Longitud
				
     1	FAMILIA		C	25
     2	GENERO		C	20
     3	ESPECIES		C	20
     4	AUTOR		C	40
     5	VAR_SSP		C	 4
     6	SUBESPECIE	C	20
	     7	AUTOR2		C	40
     8	DEPTO		C	19
     9	PROV			C	27	
    10	LOCAL		C       150
    11	HABITAT		C       100
    12	OBSERV		C       254
    13	COLECTOR		C        30	
    14	COL_AD		C        55
    15	NUMERO		C	 8	
	    16	SUFFIX		C	 3
    17	DIA			C	 2
    18	MES			C	 3
    19	ANO			N	 4
    20	ELEVACION		C	18
    21	ELEV2		C          4 
    22	CORDLAT		C	 9
	    23	CORDLON		C	 9
    24	DETERMIN		C	30
___________________________________
Total Size			           895	
           				
DEPTO.DBF
      1	DEPTO		 C	 2
      2	DECODE		 C	19
FAMILIES.DBF
       1	FAMILIA		C	 3
       2	FAMNAMES   	C	25
Fig. 1.	Estructura del archivo DETBASE.DBF con muestra exemplar 
Campo			Tipo*	Longitud
    1	CLASE		C	 3		MON
    2	FAMILIA		C	 3		POA
	    3	GENERO		C	20		Bromus
    4	ESPECIES		C	20		lanatus
	    5	AUTOR		C	40		Kunth
    6	VAR_SSP		C	 4		var.
    7	SUBESPECIE	C	20 		ineditus
    8	AUTOR2		C	40		Einstein
    9	AFF_CF		C	 8		vel aff.
   10	DEPTO		C	 2		CA
   11	SITIO			C	 2		3
   12	PROV			C	20		Cajamarca
   13	LOCAL		C        150		Coymolache, ruta Cajamarca-Hualgayoc.
   14	HABITAT		C        100		Jalca graminosa.
   15	OBSERV		C        254		Perenne, láminas planas, panícula nutante.
   16	COLECTOR		C	30		I. Sánchez Vega
   17	COL_AD		C         50		W. Ruíz Vigo
   18	NUMERO		N	 8		2049
   19	SUFFIX		C	 3		a
   20	HERBARIO		C       	18		CPUN,F,OS
   21	DUPL			N	 2		3
   22	DIA			C	 2		 1
   23	MES			C	 3		Jul
   24	ANO			 	N	 4		1977
	   25	ELEVACION		N	 4		3850
   26	ELEV2		N	 4		4000
   27	CORDLAT		N	 4		 652
   28	CORDLON		N  	 4		7835
   29	NOTAS		C	40		primera coleccíon de Peru
   30	DETERMIN		C	25		I. Sánchez Vega, 1978
   31	ENVIOS		C	 3		NO
   32	ANNOT		C	 1		A
__________________________________
Longitud de RegistroTotal 		892	
* C = Caracter; N = Numérico
Fig. 2.	Archivo primário de fusión (forma) y muestra de etiqueta