Lista de Comandos

Embed Size (px)

Citation preview

Lista de ComandosNombre ADDR AUTO BACKGROUND BEGIN BREAK CALL CHANOPT CHDIR CLEAR CLIPCLEAR CLIPFROMFILE CLIPFROMSTR CLIPLOCK CLIPTOFILE CLIPUNLOCK CLOSE CONTINUE DATA DEF DELETE DIM DIRECT DISABLE DREAD DROP DUMP EDIT ENABLE END ENDTRACE ENTER ERASE ESCAPE ESCON/ESCOFF EXECUTE EXIT EXITTO EXTRACT Descripcin Breve Carga un Programa Pblico como Residente Numeracin Automtica de Lneas de Programa Opera el Programa Actual en modo Background Cierra Todos los Canales Abiertos Excepto el Canal 0 Sale de un Ciclo Llamada a un Programa Pblico Controla Parmetros de un Archivo o Dispositivo Cambia de Directorio o Carpeta Limpia Variables Limpia Datos desde el Portapapeles Copia el Contenido de un Archivo al Portapapeles Copia el Contenido de una Cadena al Portapapeles Bloquea el Portapapeles Copia el Contenido del Portapapeles a un Archivo String Desbloquea el Portapapeles Cierra un Canal Transfiere el Control de Flujo a la Siguiente Instruccion Inserta Datos en Programa Define Funcin Elimina Lnea(s) de Programa Dimensiona un Arreglo Crea un Archivo Directo Deshabilita el Acceso a Disco Lee Datos desde Instrucciones DATA Libera un Programa Pblico Residente en Memoria Muestra Estado de Variables de un Programa Edita una Lnea de Programa Habilita el Acceso a Disco Fin de Programa Finaliza la Traza de un Programa Entra a Programa Pblico Variables Pasadas por Programa que Llama Elimina un Archivo Interrumpe la Ejecucin de un Programa Habilita/Deshabilita la Captura de Interrumpcin de un Programa Ejecuta Instruccin como si se Ingresara por Consola Retorna el Control del Programa Pblico al Programa que Llama Bifurcacin Incondicional Lectura de Archivo con Bloqueo de Registro

FIELD FILE FILEOPT FIND FLOATINGPOINT FOR...NEXT GOSUB GOTO IF INDEXED INITFILE INPUT INPUTE INPUTN IOLIST LCHECKIN LET LIST LOAD LOCK MERGE MKDIR MKEYED ON GOTO/GOSUB OPEN PRECISION PREFIX PRINT PROGRAM READ RELEASE REM REMOVE RENAME RENUM REPEAT...UNTIL RESCLOSE RESERVE RESET RESTORE

Asigna Datos a una Plantilla String Define un Archivo en Disco Controla Caractersticas de una Filesystem Lectura de Archivo Previene Redondeo en Operaciones Aritmticas Ejecuta una Secuencia de Cdigo n Veces Va a una Sub Rutina dentro del Programa Va a una Lnea Indicada Ejecuta una Instruccin Condicional Crea un Archivo Indexado Inicializa un Archivo Existente Peticin de Datos al Usuario o Lectura Peticin de Datos al Usuario con Capacidades de Edicin Peticin de Datos al Usuario slo de tipo Numrico Lista o Set de Variables para Usar en Instrucciones de Entrada y Salida Chequeo en Licencia Asignacin de Dato a una Variable Escribe las Lneas de Programa Indicadas en el Canal Especificado Carga un Programa en el Espacio de Trabajo Bloquea un Archivo Coloca Texto en el Programa Cargado en el Espacio de Trabajo Crea un Directorio o Carpeta Crea un Archivo Multi-llaves Va a una Lnea o Sub-rutina segn Mltiples Opciones Abre un Archivo Asigna la Precisin Decimal Estable las Rutas de Bsqueda en el Sistema de Archivos Imprime Datos en el Canal Especificado Crea un Archivo de Tipo Programa Lee Datos desde un Archivo o Dispositivo Sale del Intrprete del Lenguaje Comentario en Programas Elimina Llave desde un Archivo de Llaves Renombra un Archivo Renumera las Lneas de un Programa Forma un Ciclo de Programa Cierra un Archivo de Recursos Instruccin No Operativa en el Lenguaje (se conserva por compatibilidad) Restauracin de Valores y Ciclos en un Programa Altera el Orden de Lectura de la Instruccin DREAD

RETRY RETURN RMDIR RUN SAVE SELECT SERIAL SETDAY SETDRIVE SETERR SETESC SETOPTS SETTIME SETTRACE SINGLE STEP (.) SORT SQLCLOSE SQLEXEC SQLOPEN SQLPREP SQLSET START STOP STRING SWITCH... CASE... SWEND TABLE UNLOCK UPDATELIC WAIT WHILE...WEND WRITE

Vuelve el Puntero de Programa a la Lnea Donde Ocurre el Error Termina Ejecucin de Sub-Rutina llamada con GOSUB Remueve Directorio o Carpeta Ejecuta un Programa Guarda un Programa en Disco Abre Archivo MKEYED y Proporciona un Filtro de los Registros Crea un Archivo Serial Establece el Valor de la Funcin DAY Cambia el Disco Predeterminado Establece una Captura Global de Errores en el Programa Establece Rutina para Manejo de Interrupciones Establece Modos No Estndar en el Funcionamiento del Lenguaje Establece la Hora del Reloj del Sistema Inicia la Traza de un Programa Avance Lnea a Lnea de la Ejecucin de un Programa Crea un Archivo de Tipo SORT Desconecta desde una Fuente de Datos Ejecuta una Instruccin SQL Abre un Canal SQL Prepara una Instruccin SQL para Ejecutarla Carga los Argumentos Opcionales Requeridos en la Instruccin SQL Ejecuta una Inicializacin de Alto Nivel en el Lenguaje Detiene la Ejecucin de un Programa o Sale de una Rutina Pblica Crea un Archivo de Tipo String Crea una Estructura de Decisin de Multiva Tabla de Traduccin de Datos Desbloquea Archivo Actualiza Licencia para el Administrador de Licencias BASIS Suspende la Ejecucin de la Tarea Actual Crea un Ciclo de Programa Condicional Escribe Datos en el Canal Especificado

Lista de Funciones

Funcin !() ABS() ADJN() AND() ARGV() ASC() ATH() ATN() BIN() BSZ() CHANOPT() CHR() CLIPISFORMAT() CLIPREGFORMAT() CLIPTOSTR() COS() CPL() CRC() CRC16() CTRL() CVS() CVT() DATE() DEC() DECRYPT() DIMS() DIR() DSK() ENCRYPT() EPT() ERR() ERRMES() FATTR() FBIN()

Descripcin Invierte el Significado Lgico de la Expresin Entrega el Valor Absoluto (sin Signo) de un Nmero Ajuste Numrico Une Dos Expresiones y Entrega Valor Binario Lgico Entrega los Argumentos Pasados al Lenguaje durante la Invocacin Entrega Valor Numrico ASCII del Primer Caracter del String Convierte Valor ASCII a Hexadecimal Entrega el Arco Tangente de un Valor Especificado Convierte un Valor Decimal en un String Binario Memoria de Sistema Disponible (para compatibilidad con Antiguos BASICs) Obtiene la Configuracin Actual del Canal Especificado Convierte un Valor Entero a Caracter Chequea la Disponibilidad de Formatos en el Portapapeles Registra Formatos para el Portapapeles Obtiene Datos del Portapapeles en un Formato Especificado Entrega el Coseno de un Valor Especificado Compila un Texto al Formato Interno del Lenguaje Cdigo de Redundancia Cclica Implementa CCITT CRC-16 Obtiene Datos desde un Control GUI Convierte un String en Varios Formatos Disponibles Convierte Unidades entre Formatos Pixel, Caracter y Semicaracter Convierte Valores Julianos a Formato Calendario Convierte un String Binario en un Valor Numrico Desencripta un String Especificado Obtiene las Dimensiones de un Arreglo Obtiene el Directorio o Carpeta Predeterminado Obtiene la Unidad de Disco Predeterminada Encripta un String Especificado Entrega el Orden de Magnitud del Valor Especificado Entrega el Error ms Reciente como un Valor Entero Entrega el Mensaje de Error Asociado a un Nmero de Error y Permite Modificar Mensaje Obtiene Informacin sobre los Atributos de un Campo Convierte un Nmero Decimal a Binario Flotante

FDEC() FID() FIELD() y NFIELD() FILEOPT() FILL() FIN() FNx() FPT() GAP() HSA() HSH() HTA() IND() INFO() INT() IOR() JUL() KEY(), KEYF(), KEYL(), KEYN(), KEYP() KGEN() LCHECKOUT() LINFO() LOG() LRC() LST() MASK() MAX() MENUINFO() MIN() MOD() MSGBOX() NEVAL()

Convierte un Binario Flotante a Nmero Decimal Obtiene la Identificacin de un Archivo Accede a Datos en Plantillas de Campo Obtiene Opciones del Sistema de Archivos Genera una Cadena Repetida de Texto Obtiene Informacin desde un Archivo Ejecuta una Funcin Definida por el Usuario Obtiene la Parte Fraccional de una Expresin Numrica Genera la Paridad Impar de una Cadena Obtiene el Sector ms Alto Disponible en el Disco Similar a CRC pero con un Algoritmo Distinto Convierte un Valor Hexadecimal a una Cadena Legible Obtiene el Puntero del Indice de un Archivo Obtiene Informacin del Sistema Convierte un Argumento Nmero Removiendo la Parte Fraccional Aplica la Lgica Binaria de O Obtiene el Valor en Notacin Juliana de una Fecha Dada Obtiene llaves desde archivos DIRECT, SORT o MKEYED Obtiene el Valor de una Llave Contenida en un Registro Verifica una Licencia de Cierta Caracterstica Entrega una Cadena de Informacin Sobre la Licencia Entrega el Logaritmo Comn (Base 10) de un Argumento Entrega String de 1 Byte como resultado de aplicar un funcin OR exclusiva a los Bytes de su Argumento Entrega la Forma Listable de una Lnea de Programa Compilada Verifica una Cadena Buscando Igualdad con una SubCadena (similar a POS con algunas diferencias) Entrega el Valor Mayor de un Conjunto de Argumentos Numricos Recupera una Cadena de Texto con la Estructura de Men Entrega el Valor Menor de un Conjunto de Argumentos Numricos Entrega el Mdulo (Residuo) de una Divisin Crea un Cuadro de Dilogo y Entrega el Valor del Botn Pulsado por el Usuario Evala una Expresin Numrica y Entrega su valor

NOT() NOTICE() NOTICETPL() NUM() PAD() PACK() PGM() POS() PUB() RESFIRST() RESGET() RESINFO() RESNEXT() RESOPEN() RND() ROUND() SCALL() SENDMSG() SEVAL() SGN() SIN() SQLERR() SQLFETCH() SQLLIST() SQLTABLES() SQLTMPL() SQR() SSORT() SSZ() STBL() STR() SWAP()

Cambia los Bits del Argumento y Entrega el Resultado Entrega la Cadena de Notice usando el Notify ID que fue Pasado Entrega la Plantilla de un Cdigo Especfico de Notice Convierte un Argumento de Cadena a su Equivalente Numrico Rellena una Cadena de Texto con un Caracter Especificado Funcin de Antiguas Versiones BASIC mantenida por Compatibilidad Entrega la Forma Compilada de una Lnea de Cdigo presente en el Espacio de Trabajo Actual Verifica una Cadena Buscando su Relacin con una SubCadena Lista de Programas Pblicos en Memoria Obtiene Identificador de un Recurso Obtiene un Recurso Obtiene Informacin del Archivo de Recurso Obtiene el Siguiente Recurso Abre un Archivo de Recurso Entrega un Nmero Aleatorio Redondea un Nmero Ejecuta Comandos del Sistema Operativo Enva Mensajes a Ventanas y Controles Evala una Expresin de Cadena Indica el Signo Decimal de un Nmero Entrega el Seno de un Argumento Obtiene el ltimo Error SQL Obtiene Resultado de SQL Entrega el Nombre de Todas las Bases de Datos Disponibles en el Sistema Entrega la Lista de Tablas Disponibles en la Base de Datos Activa Entrega la Plantilla Usada para Recuperar los Datos de una Consulta SQL Entrega la Raz Cuadrada de un Argumento Ordena una Cadena de Texto Tamao de Sector del Sistema (Compatibilidad con Versiones Antiguas de BASIC) Mantiene una Variable en Memoria Alta Convierte un Valor Numrico a Cadena de Texto con una Mscara Opcional Intercambia Bytes en Forma Adyacente

TBL() TCB() TMPL() TSK() UPK() WINFIRST() WININFO() WINNEXT() XOR()

Ejecuta la Traduccin de una Cadena en Base a los Valores de TABLE Entrega Informacin del Estado Actual de la Aplicacin Entrega una Plantilla que Describe un Archivo o Dispositivo Entrega una Lista de los Alias de Dispositivos Entrega el Resultado Numrico de una Cadena Empaquetada Entrega el ID de Contexto de una Ventana Devuelve una Cadena con Informacin Sobre el Contenido de una Ventana SYSGUI Obtiene el Siguiente ID de Contexto de una Ventana Ejecuta un OR Exclusivo de los Bit de los Argumentos Dados

Lista de VariablesVariable ARGC CHN CTL DAY DSZ OPTS PFX PSZ REV SQLCHN SQLUNT SSN SYS TIM UNT Descripcin Entrega el Nmero de Argumentos Pasados desde la Lnea de Ejecucin del Intrprete Obtiene los Canales Abiertos Actualmente Obtiene el Valor de la Variable CTL Obtiene la Fecha del Sistema Obtiene la Memoria Disponible en el Espacio de Trabajo del Usuario Devuelve una Cadena que Contiene el Vector de Opciones de Pro5 Obtiene el Prefijo de Bsqueda de Archivos en el Sistema Obtiene el Tamao del Programa Entrega el Nivel de Revisin del Lenguaje Obtiene una Lista Ordenada de los Canales SQL en Uso Obtiene el Primer Canal SQL Disponible para Usar Entrega el Nmero de Serie del Lenguaje Nivel Actual del Lenguaje Entrega la Hora del Da Obtiene Nmero de Canal Disponible para Usar

Templates - Plantillas StringVisin General Pro5 permite un tipo de descriptor de registros llamado template (en adelante lo llamaremos plantilla) para asociarlo con una variable string. La instruccin DIM puede usarse para asociar

una plantilla con una variable string. Por ejemplo, la siguiente instruccin usa a B$ como la plantilla para la variable string A$: 1000 DIM A$:B$ A la plantilla (en este caso B$) puede drsele un valor que describa uno o ms campos en la variable string. La siguiente instruccin es un ejemplo de definicin de una plantilla y su asociacin con una variable: 0900 LET B$=NOMBRE:C(10),EDAD:N(3) 1000 DIM A$:B$ La instruccin en la lnea 0900 describe dos campos llamados NOMBRE y EDAD. Los tipos de campos (indicados por C y N) describen la forma de los datos dentro de cada campo. El nmero en parntesis especifica el largo de los campos. El campo NOMBRE es un string de caracteres de 10 bytes de largo, y el campo EDAD es un string numrico de 3 bytes de largo. Una vez que el string es definido con una plantilla, sus campos pueden accesarse por nombre. El nombre toma el formato: variable.campo Un nombre puede ser un string de hasta 32 caracteres alfanumricos. Y debido a que variable y el punto que delimita son necesarios, el largo mximo para campo es 30 caracteres (asumiendo un carcter para el nombre e variable). En la prctica, campo sera ms corto de 30 caracteres. Un nombre campo adicional, usado para igualdades de formato externos es *. Este nombre puede usarse para definir campos o para llenar espacios. Un ejemplo de acceso a un campo de una variable por nombre es: 1000 LET C$=A.NOMBRE$ Este ejemplo accesa el campo llamado NOMBRE en la variable string llamada A$ (ms acerca de esto despus). El tipo de campo (C y N en el ejemplo anterior) describe la forma de los datos dentro del campo. Los siguientes tipos estn permitidos:

C N I U F D B X

Simple string de caracteres Un string numrico Un entero binario con signo (1 a 6 bytes) Un entero binario sin signo (1 a 6 bytes) IEEE valor binario de punto flotante (8 bytes) BCD valor de punto flotante (8 bytes) Punto flotante financiero (8 bytes), formato matemtico para Pro5 Valor flotante local (C 4 bytes)

Y Valor doble local (C 8 bytes)

Visin General

La designacin del largo de un campo plantilla puede especificarse fija o variable. Los rangos permitidos dependen del tipo de campo, como se muestra en la tabla anterior. Los continuacin campos de largo variable se indican por un asterisco en la designacin del largo, por ejemplo: B$=NOMBRE:C(10*) El asterisco indica que el campo se termina con un avance de lnea ($0A$). En este caso el 10 no usado explcitamente por Pro5, pero puede resultar til para aplicaciones (tal como un administrador de bases de datos). Si el terminador de campo que se requiere es distinto de un avance de lnea, entonces de puede especificar como se muestra a continuacin: B$=NOMBRE:C(10*=0) En este ejemplo, se da un carcter nulo como terminador. Cualquier valor entre 0 y 255 puede ser dado como valor de terminador. Finalmente, si el fin del campo va a ser el fin del string mismo (sin terminador), entonces se puede declarar como sigue: B$=NOMBRE:C(10*=)

NOTA: Usted no intentara usar terminadores de campo con

registros que contengan datos binarios, esto es, tipos de datos distintos de C y N.

Algunos formatos de archivos no Pro5 contienen datos en forma de bytes-swapped o palabras-swapped. Estos swapping pueden especificarse como sigue: C$=CONTADOR:I/BWL(4) El carcter slash siguiente al tipo de campo indica las opciones de swapping siguientes. Las letras B(byte), W(word) y L(long) pueden ser ingresadas en cualquier combinacin para especificar el swapping. La siguiente tabla describe cada opcin.

Largo

Largo

Palabra

Palabra

Palabra

Palabra

Opcin Swap Byte Byte Byte Byte Byte Byte Byte Byte

Ninguna B W L BW BL WL BWL

0 1 2 4 3 5 6 7

1 0 3 5 2 4 7 6

2 3 0 6 1 7 4 5

3 2 1 7 0 6 5 4

4 5 6 0 7 1 2 3

5 4 7 1 6 0 3 2

6 7 4 2 5 3 0 1

7 6 5 3 4 2 1 0

Visin General

El swapping solamente es vlido para ciertos tipos de campos. La siguiente tabla contiene los tipos de campos permitidos y las opciones soportadas para cada tipo:

continuaci n Admite Interca m de n n s s s s s s s Min Mx Admite ser variabl e 32767 s 32767 4 4 n/a n/a n/a n/a n/a s n n n n n n n

Tipo

Largo

C String carcter N Numrico I Entero

U Entero sin signo F IEEE flotante (8 bytes) D BCD flotante (8 bytes) B Financiero flotante (8 bytes) X C flotante Y C doble Atributos de Campo Definidos por El Usuario

variabl e variabl e variabl e variabl e 8 8 8 4 8

1 1 1 1 n/a n/a n/a n/a n/a

Un atributo definido por el usuario para un string puede darse opcionalmente para especificacin del largo: NOMBRE:C(10):access=5 mask=###XX## opt=y: Los dos puntos siguientes a la especificacin del largo indican el comienzo de las opciones definidas por el usuario. Todo texto ingresado a continuacin de los dos puntos se mantiene exactamente como fue ingresado. Se puede usar cualquier texto, pero se recomienda el formato palabra_clave=valor (como se usa arriba) a fin de usar algunas de las caractersticas descritas posteriormente.

Repitiendo Se puede definir un campo del tipo arreglo: Campos VENTAS[5]:N(10) El valor entre corchetes en el ejemplo anterior significa que VENTAS representa 5 campos (1 a 5) cada uno del tipo numrico. Note que el arreglo es basado en uno. Slo estn permitidos arreglos de 1 dimensin.

La siguiente es una plantilla que describe el formato Pro5 de la funcin FID(): 1000 DIM A$:TIPO:I(1),TAMLLAVE:I(1),REGS:I(4),TAMREG:I(2 ), 1000:NOMBRE:C(64*=) TIPO y TAMLLAVE son enteros de 1 byte. REGS es un entero de 4 bytes. TAMREG es un entero de 2 bytes. NOMBRE es un string de caracteres que es el resto del valor devuelto por la funcin FID(). Despus de dimensionar un string con una plantilla, los datos del string mismo son inicializados para representar datos en una plantilla vaca. Los campos de tipo carcter contendrn espacios, campos numricos contendrn ceros y campos de largo variable estarn vacos.

Accesando Como nota inicial, una vez que una variable string es definida con una plantilla, sus campos pueden ser accesados por Campos de nombre: Una Variable String 1000 LET B$=A.NOMBRE$ Previamente habamos dicho que la instruccin de arriba accesa el campo llamado NOMBRE en A$. Note que el signo $ no es dado explcitamente despus de A. El signo $ al final del nombre de campo indica que nosotros queremos accesar este como un string. CUALQUIER CAMPO EN UNA PLANTILLA PUEDE SER ACCESADO COMO UN STRING AUN SI ESTE FUE DEFINIDO COMO NUMERICO. Por ejemplo: 1000 LET B$=A.TAMREG$ Esto simplemente transferira los 2 bytes del campo llamado TAMREG$ a B$. Este tambin traspasara cualquier atributo de swapping del byte. Adicionalmente, los campos numricos tambin pueden accesarse como variables numricas: 1000 LET X=A.TAMREG 1000 LET X=A.TAMREG% Estos dos ejemplos producen el mismo resultado. En el primer

ejemplo Pro5 convertir el campo TAMREG a numrico (usando una conversin similar a la funcin DEC()). En el segundo ejemplo, convertir TAMREG a un entero Pro5. Si un string es definido con una plantilla an puede usarse como cualquier variable string: PRINT A$(4,6) Sin embargo, esto puede derrotar el propsito de la plantilla. Accesando al string mismo ignora la plantilla. Note el siguiente ejemplo: 1000 LET B$=A$ El contenido de A$ ser copiado a B$ pero no la plantilla. B$ puede tener su propia plantilla o puede ser simplemente una variable string. Los campos plantilla son mejores comparado a la forma de las especificaciones de substring y puede usarse en cualquier lugar donde un substring puede usarse. Si el campo es pasado a travs de una instruccin CALL a un programa pblico, es tratado como un valor de llamada. Una simple variable string pasada a travs de la instruccin ENTER tambin pasar su plantilla (si hay una). La informacin acerca de la plantilla puede accesarse con la funcin FATTR(). Esta funcin tiene varias formas. La primera forma regresa una descripcin de una plantilla string que puede usarse en una instruccin DIM: 1000 LET B$=FATTR(A$) Este ejemplo copia la descripcin de plantilla de A$, como dato, para B$. Ocurre un error si A$ no tiene una plantilla. Por ejemplo, si quiere definir B$ para que tenga los mismos campos que A$ usted seguira esta va: 1000 DIM B$:FATTR(A$)

Accesando Algunas veces es til tener una simple lista de los nombres de campos de una plantilla. Esto sera hecho as: Campos de 1000 LET B$=FATTR(A$,) Una Variable Note el segundo argumento nulo. Esto pondra en B$ una lista de nombres de campos desde A$, cada uno terminado con un String

avance de lnea. La informacin acerca de un campo especfico puede ser determinada de la siguiente manera: 1000 LET B$=FATTR(A$,TAMREG) Este ejemplo pondr una descripcin codificada en B$ que se describe a continuacin. Vea Formato para atributos de campo en esta seccin. Finalmente, los atributos definidos por el usuario pueden accesarse: 1000 DIM A$:TAMREG:I(2):access=5 mask=##,##0: 1010 LET B$=FATTR(A$,TAMREG,mask) Este ejemplo buscar la porcin definida por el usuario de TAMREG para la palabra clave mask y retornar su valor. Se generar un error si tal atributo no fue dado.

Funciones FIELD() y NFIELD()

Algunas veces es til determinar al momento de la ejecucin que campos sern accesados. Hasta ahora, un nombre de campo fue cdigo fijo como parte de un nombre de variable. Sin embargo, los campos tambin pueden accesarse a travs de dos funciones: FIELD() y NFIELD(). Ambas funciones toman una variable string (que contenga una plantilla), un nombre de campo ASCII, y un ndice opcional (para campos del tipo arreglo): 1000 LET B$=FIELD(A$,NOMBRE) 1010 LET X=NFIELD(A$,VENTAS,4) Estos dos ejemplos hacen lo mismo que: 1000 LET B$=A.NOMBRE$ 1010 LET X=A.VENTAS[4] La diferencia, de curso, es que la funcin FIELD() permite que el nombre del campo pueda determinarse en la ejecucin una herramienta til para administradores de bases de datos y generadores de reportes. Un caso especial de la funcin FIELD() toma solamente una variable string:

1000 LET B$=FIELD(A$) Esto causar que cualquier dato extra al fin de A$ sea descartado. Por ejemplo, si A$ se leyera de un archivo como en: 1000 READ RECORD (1)A$ A$ pudiera contener caracteres nulos extra usados para rellenar el registro. El uso de FIELD(A$) regresara solamente esa porcin de A$ contada por la plantilla. Esto es importante si A$ contuviera cualquier campo de largo variable. Estos campos quedaran grandes provocando que A$ convirtiera en grande. Un intento posterior de un WRITE RECORD A$ causara que el archivo generar una condicin de fin de registro a menos que los caracteres de relleno extraos fuesen removidos.

Verbo FIELD

La rplica para la funcin FIELD() es el verbo FIELD el cual coloca datos en un campo: 1000 FIELD A$,NOMBRE=JUAN 1010 FIELD A$,VENTAS,[4]=52.50 Estas dos instrucciones son equivalentes a: 1000 LET A.NOMBRE$=JUAN 1010 LET A.VENTAS[4]=52.50

Formato para Atributos de Campo

Como mencionamos anteriormente, la funcin FATTR() puede usarse para determinar los atributos para cada campo en una plantilla. Los atributos son retornados en un string con el siguiente formato:

Byte

Descripcin

1

Tipo de campo 1 = carcter 2 = numrico 3 = entero

4 = entero sin signo 5 6 7 8 9 IEEE punto flotante BCD punto flotante Financiero punto flotante C flotante C doble

2

Marca de bits $80$ = Campo de largo variable $40$ = Terminador de campo utilizado $04$ = Largo de swapped $02$ = Palabra de swapped $01$ = Bytes de swapped

3

Terminador de campo si es aplicable

4-5

Dimensiones de campo repetido (o $0001$ sino se repite)

6-7

Nmero de campo basado en el uso del terminador avance de lnea. Este valor representa el nmero de campo que sera usado en la definicin de un archivo MKEYED si la plantilla fue tratada como un descriptor de registro.

8-9

Desplazamiento del campo desde el campo de largo variable previo.

10-11 12-*

Largo del campo. Atributos del usuario.

Usando Plantillas

Mientras que la sintaxis de las plantillas en Pro5 se asemeja a la estructura y registros encontrados en muchos lenguajes compilados, el programador debe tener la precaucin de no pensar en ellas como similares. Como Pro5 es extremadamente dinmico, as tambin lo son las plantillas. Un string puede ser asignado a una nueva plantilla o recibir nuevos datos en cualquier momento. Esto no se sabe sino hasta que se intenta accesar un campo, donde el campo esta o si igual existe. Por lo tanto, accesar un string a travs de una plantilla puede no ser tan eficiente como usar cdigo normal para referenciar un substring. Por ejemplo, si usamos un campo numrico en un ciclo FOR/NEXT no es tan eficiente ya que el campo debe ser ubicado y todos los accesos requieren una conversin de su forma string a una forma numrica interna. Sera mejor asignar el campo a una variable numrica y entonces usar esta variable. Las caractersticas de plantillas estn pensadas para usarse con diccionarios de datos y administradores de bases de datos donde el formato de los datos del usuario no siempre es conocido por adelantado. Como un ejemplo, considere un simple generador de reportes. El usuario ingresara el nombre de un archivo desde el cual ser producido el reporte. El programa accesara un archivo de diccionario de datos para ubicar la plantilla deseada que describe el formato de registro del archivo ingresado. Un string se dimensiona con esta plantilla: DIM A$:PLANTILLA$ El prximo paso sera presentar al usuario una lista de los campos que contiene el archivo. La lista de campos se puede obtener desde: LET LISTA_CAMPOS$=FATTR(A$,) Una vez que los campos son seleccionados el programa los puede accesar usando las funciones FIELD() y NFIELD(). La informacin de atributos acerca de cada campo puede determinarse por: LET TIPO_CAMPO$=FATTR(A$,NOMBRE_CAMPO$) Una plantilla puede usarse para formatear una lnea de salida en un reporte. Las plantillas tambin pueden usarse para accesar listas de campos y atributos. Por ejemplo, la lista de los nombres de campos retornados por FATTR() contienen varios nombres terminados con avance de lnea. Esta lista sera fcil de

accesar por medio de crear una plantilla para esto: DIM LISTA_ARCHIVOS$:NOMBRE[100]:C(32*) LET LISTA_ARCHIVOS$=FATTR(A$,) Las instrucciones de arriba definan una variable LISTA_ARCHIVOS$ con una plantilla que puede contener hasta 100 nombres y llenar esta con la lista de los nombres de campos desde A$. El tercer nombre en la lista se podra accesar por: LET X$=LISTA_ARCHIVOS.NOMBRE$[3] Si la lista contuviera slo dos nombres, entonces se generara un error. Tambin, si la lista contuviera ms de 100 nombres, slo los primeros 100 nombres estaran accesibles. Los atributos para el tercer campo se podran determinar por: LET TIPO$=FATTR(A$,LISTA_ARCHIVO.NOMBRE$[3])

Trabajo con SQL en Visual Pro5Esta apartado cubre los siguientes aspectos:

Bases de Datos Locales Ejecucin de Comandos SQL

Pro5 ofrece comandos y funciones para simplificar el acceso a las bases de datos externas a PRO / 5, y permitir el acceso SQL a los archivos de datos propios de Pro5. Los comandos estn diseados para proporcionar un ptimo acceso a las capacidades de SQL disponibles en el Motor de base de SQL y en otros productos SQL con los cuales Pro5 est diseado para comunicarse.

Bases de Datos Locales El motor SQL de BASIS permite acceso a bases de datos nativas y bases de datos ODBC. Las bases de datos ODBC se definen utilizando la plataforma local dependiente del Administrador ODBC. Una vez que una base de datos se define y se asocia con un controlador ODBC desde el Administrador de ODBC, estar disponible para el acceso desde el motor SQL de BASIS. Las bases de datos nativas consisten de uno o ms archivos Pro5 y un diccionario de datos que describe las caractersticas de los archivos. Cada base de datos, deber ser descrita en un archivo sql.ini. El nmero de canales de SQL est limitado a 32.

NOTA: Usted debe incluir la siguiente lnea en su archivo config.bbx antes de poder acceder a los comandos SQL: SQL{=ruta} El parmetro opcional ruta apunta a la ubicacin de su archivo sql.ini. Si la ruta no se indica, Pro5 asume que el archivo sql.ini est en el directorio actual. Esta lnea habilita la capacidad SQL en Visual Pro5. El archivo sql.ini informa al motor SQL de Basis sobre las bases de datos nativas que haya disponibles. Por ejemplo, considere el siguiente archivo sql.ini: [BASIS Data Sources] Chile Company Reunion de Clases [Chile Company] CONFIG=C:/BASIS/ejemplos/chile/config.tpm [Reunion de Clases] CONFIG=C:/BASIS/ejemplos/reunion/config.tpm La seccin BASIS Data Sources en el archivo sql.ini es requerida. Esta seccin es sensible a maysculas y minsculas y debe aparecer como se muestra en el ejemplo. Bajo la seccin fuente de datos hay una lista de bases de datos disponibles. Cada base de datos representa un solo diccionario de datos. Cada fuente de datos debe tener su propia seccin, escrita tal cual fue mencionada en la seccin BASIS Data Sources. Cada fuente de datos debe tener su propio archivo de configuracin. Este archivo de configuracin indica donde esta el diccionario de datos en el disco y donde existen los datos lgicos de esta fuente de datos. Considere el siguiente archivo de configuracin: # Chile Company Configuration File DICTIONARY=C:/BASIS/ejemplos/chile/bbdict/ DATA=C:/BASIS/ejemplos/chile/data/ Las lneas que comienza con # son comentarios. El valor para DICTIONARY debe apuntar a la ubicacin fsica del diccionario de datos. A menudo, para resolver la ruta de ubicacin se requiere establecer una ruta global para stos datos. Si este es el caso, debera definir todas las variables globales en archivo de configuracin de diccionario

requeridas para encontrar la ruta fsica de sus datos. Este es tpicamente el valor DATA. Existen dos herramientas para definir diccionarios. DDBuilder provee una interfaz grfica para configurar y mantener diccionarios de datos. Se provee con Visual Pro5. La utilidad _ddedit provee una interfaz de caracter para realizar el mismo trabajo. Esta forma parte del set de Utilidades Extendidas.

Conceptos SQL [Seccin Pendiente de Traduccin]

Ejecucin de Comandos SQL Una vez que ha seleccionado una base de datos, puede adquirir una lista de las tablas disponibles usando la funcin SQLTABLES(). Las sentencias SQL se ejecutan en dos pasos. Primero, debe ejecutar una sentencia SQL mediante SQLPREP. SQLPREP verifica la validez de la sentencia y prepara la ejecucin estratgicamente. Segundo, usando SQLEXEC. SQLEXEC ejecuta la sentencia que fue preparada con SQLPREP. Si la sentencia SQL (o sentencias) contiene argumentos reemplazables, stos se pueden ajustar usando la instruccin SQLARG u, opcionalmente, usando la instruccin SQLEXEC. Leyendo datos desde SQL Una vez que la sentencia SQL fue ejecutada usando SQLEXEC, los datos pueden rescatarse usando la funcin SQLFETCH. Cuando todos los datos desde dicha sentencia se entregan, la funcin SQLFETCH arroja un !ERROR=2. Si se reporta cualquier otro error de parte de las instrucciones SQLPREP o SQLEXEC, podr hallar una explicacin del error en la documentacin de la funcin SQLERR(). Se puede cerrar una conexin con una base de datos usando la instruccin SQLCLOSE. Como ejemplo, considere acceder a la base de datos Chile Company, disponible en Visual Pro5. En esta base de datos de muestra hay varias tablas disponibles,y el siguiente programa muestra la seleccin de datos desde una de ellas. Primero. Enlace la base de datos. Puesto que el nombre de la base de datos la conocemos, podemos obviar el uso de la funcin SQLLIST() y enlazar directamente con la base de datos: 0010 SQLOPEN(1)"Chile Company"

Segundo. Ejecute la sentencia deseada. En este caso una seleccin desde la tabla

clientes (customers) con su actual balance: 0020 SQLPREP(1)"select * from CUSTOMER where CURRENT_BAL>0"

Tercero. Formatee una cadena para recibir las filas de datos generadas por la sentencia SQL: 0030 DIM CLIENTE$:SQLTMPL(1)

Cuarto. Ejecute la sentencia preparada via SQLPREP(): 0040 SQLEXEC(1)

Quinto. Dado que la sentencia select no ordena los datos lo suficiente, es probable que comience a recibir datos inmediatamente, as que ejecute: 0050 CLIENTE$=SQLFETCH(1,ERR=90)

Sexto. El control de error manejar el fin del set de registros obtenidos (parecido a la condicin end of file o fin de archivo que encontramos al leer datos desde un archivo Pro5 tradicional). Si no se cae por error, la variable CLIENTE$ recibir la primera o siguiente fila desde la tabla seleccionada por la sentencia SQL. Usted puede hacer algo como esto y luego ir a recuperar otro registro: 0060 PRINT CLIENTE.CUST_NUM$," ",CLIENTE.CURRENT_BAL 0070 GOTO 50 ",CLIENTE.COMPANY$,"

Septimo. El control de error en la instruccin manejara el esperado end of file, y generar un diagnstico de error para otros errores o condiciones inesperadas: 0080 IF ERR=2 THEN GOTO 0110 0090 PRINT "Error",ERR,"encotrado, el texto del error sql es:"

0100 PRINT SQLERR(1,ERR=0110); GOTO 0100 0110 END

La funcin SQLFETCH() recuperar cualquier dato disponible como resultado de las instrucciones SQLPREP y SQLEXEC. Si no hay datos como resultado de la sentencia SQL, o si todos los datos ya fueron recuperados, SQLFETCH() arrojar un !ERROR=2. Si una sentencia ejecutada entreg una lista de filas y ahora se prepara otra sentencia y sta se ejecuta, la antigua lista de filas se descarta sin aviso. Adems, una consulta puede ser reiniciada simplemente haciendo otro SQLEXEC, sin ejecutar un nuevo SQLPREP. Esta es una buena prctica, pues SQLPREP puede consumir mucho tiempo.

Insertando una Fila en una Tabla Para insertar una fila en una base de datos, use las siguientes instrucciones: 0010 SQLOPEN(1)"Chile Company" 0020 SQLPREP (1)"insert CUSTOMER(CUST_NUM,FIRST_NAME,LAST_NAME) 0020:VALUES(6,'Cristian','Diaz')" 0030 SQLEXEC(1) into

Modificando una Fila en una Tabla SQLPREP insertar en la tabla CUSTOMER una nueva fila con la informacin proporcionada en las columnas apropiadas, y todas las columnas no especificadas contendrn datos por defecto para dichas columnas. Para modificar datos en el registro de un cliente en particular: 0010 SQLOPEN(1)"Chile Company" 0020 SQLPREP(1)"update CUSTOMER set CREDIT_CODE='01' 0020:where CUST_NUM=10" 0030 SQLEXEC(1)

Eliminando una Fila en una Tabla Para eliminar una fila: 0010 SQLOPEN(1)"Chile Company" 0020 SQLPREP(1)"delete from CUSTOMER where 0020:CUST_NUM=10" 0030 SQLEXEC(1)

Mltiples Instrucciones SQLPREP Los ejemplos anterior crean una nueva conexin y compilas un nuevo comando para cada operacin requerida. En la prctica es relativamente fcil mantener mltiples conexiones a bases de datos, cada cual con comandos previamente compilados con argumentos parametrizables, para seleccionar la fila con la cual queremos trabajar. Sera mucho ms efectivo para muchas de las operaciones antes mencionadas ejecutar un cdigo como el siguiente: 0010 DATABASE$="Chile Company" 0020 GETREC=SQLUNT; SQLOPEN(GETREC)DATABASE$ 0021 SQLPREP(GETREC)"select * from CUSTOMER where 0021:CUST_NUM=?" 0030 DELREC=SQLUNT; SQLOPEN(DELREC)DATABASE$ 0031 SQLPREP(DELREC)"delete from CUSTOMER where 0031:CUST_NUM=?" 0040 DIM CUST$:SQLTMPL(GETREC) 0050 INPUT "numero de cliente: ",CUST:("end"=1000,9999) 0060 SQLEXEC (GETREC)CUST 0070 CUST$=SQLFETCH(GETREC,ERR=0200) 0080 PRINT CUST.CUST_NUM," ",CUST.COMPANY$ 0090 INPUT (0,ERR=0090)"Elimina? (S/N) ",

0090:ANSWER$:("S"=100,"s"=100,"n"=50,"N"=50) 0100 SQLEXEC(DELREC)CUST 0110 PRINT CUST.CUST_NUM," eliminado" 0120 GOTO 0050 0200 PRINT "el registro no se encuentra"; GOTO 0050

Columnas de Tipo Fecha en Grillas Data Aware Cuando una sentencia SELECT en un canal SQL contiene columnas de tipo fecha, el programador tiene dos opciones bsicas: 1.- Desplegar la fecha como nmero en notacin juliana (opcin por defecto), o 2.- Primero convertir la fecha a un formato especfico de fecha. Por ejemplo, si usamos la siguiente instruccin en una Grilla Data Aware, la fecha se desplegara como valor en notacin Juliana: SELECT order_date as INVOICE_DATE FROM order ORDER_DATE, invoice_date as

La plantilla generada sera: ORDER_DATE:I(4),INVOICE_DATE:I(4) Sin embargo, la segunda opcin es convertir el valor fecha a una cadena formateada y entregar la cadena de representacin de fecha. La siguiente sentencia SELECT formatear los valores fechas como dd/mm/aaaa (da, mes, ao): SELECT date(order_date, '%Mz/%Dz/%Yd') as ORDER_DATE, date(invoice_date, '%Mz/%Dz/%Yd') as INVOICE_DATE FROM order

La plantilla generada para esta instruccin sera: ORDER_DATE:C(10),INVOICE_DATE:C(10)

Vea la documentacin de funcin DATE() para conocer la construccin de formatos para fechas.

Conceptos del Lenguaje - Vision GeneralLa seccin Conceptos del Lenguaje proporciona los antecedentes necesarios para comprender el resto del manual. Los trminos y conceptos discutidos aqu son la base fundamental de la construccin de programas en PRO5.Si usted es un programador principiante, algunos de los conceptos ms avanzados en esta seccin puede ser difciles de entender. Por lo tanto, usted debera considerar la posibilidad de leer esta seccin de nuevo en algn momento en el futuro, cuando usted est ms familiarizado con el diseo de programas. Si usted es un programador experimentado, parte de esta seccin puede parecer redundante. Sin embargo, incluso las ms sutiles diferencias entre los lenguajes de programacin pueden causar problemas si un programador los da por entendidos en base a la experiencia previa con algn lenguaje similar.

Espacio de TrabajoEl espacio de trabajo es un bloque de memoria RAM reservada por PRO / 5 y utilizada para mantener un programa y sus datos. Cada vez que inicie PRO / 5 tendr un espacio de trabajo vaco. Entonces podr introducir nueva informacin en el rea de trabajo o podr cargarla desde un disco donde se haya guardado previamente. En un sistema multi-usuario, todos los usuarios de PRO / 5 tienen su propio espacio de trabajo. El tamao del espacio de trabajo se puede cambiar con la instruccin START. El tamao mximo permitido depende del computador que est utilizando. Puede que tenga que cambiar el tamao del espacio de trabajo en funcin de la aplicacin que est utilizando. Algunos programas usan ms memoria de trabajo que otros.

Requerimientos de Memoria del Espacio de TrabajoPRO / 5 permite al usuario determinar el tamao del espacio de trabajo utilizando la instruccin START, o con la opcin -m en la lnea de comandos. Quienes ejecutan PRO / 5 en sistemas con un mnimo de memoria tendr que usar lo menos posible para una aplicacin particular. Sin embargo, podran surgir problemas al mover programas de un equipo a otro. La manera en que PRO / 5 utiliza la memoria de trabajo pueden ser afectados por el tamao de palabras y por requisitos de alineacin de datos sobre una determinada mquina. Se debe permitir un margen de seguridad a fin de evitar desbordamientos de memoria inesperada al pasar de un sistema a otro.

Comandos e InstruccionesUn solo comando de PRO / 5 se da en la forma de una instruccin. Cada instruccin se inicia con un comando. El comando le indica a PRO / 5 que ejecute alguna accin que normalmente se realiza en el espacio trabajo. Algunos comandos requieren informacin adicional para definir la accin a realizar. Esta informacin adicional se presenta en la forma de elementos sintcticos que se incluyen a continuacin del comando, tales como valores literales, variables, nombres de archivo, etc. El manual de Comandos describe cada instruccin reconocida en PRO / 5.

Algunos ejemplos de instrucciones: STOP RUN "MIPROGRAMA" PRINT "Hola, mundo."

Largo Mximo de un ComandoUna instruccin puede tener un maximo de 511 bytes.

Lneas e Instrucciones CompuestasUna lnea se compone de un nmero de lnea seguido de una etiqueta opcional y uno o varias instrucciones. Cuando se escribe una lnea en PRO / 5, se finaliza la lnea con un ENTER. Una lnea puede ser cualquier nmero entero entre cero (0) y 65534. Si el nmero de lnea no est explcitamente escrito, PRO / 5 supone que se trata de la lnea 0. Lnea 0 es un caso especial. Esta lnea se ejecuta de inmediato. Si la lnea contiene ms de una instruccin, diramos que es una instruccin compuesta. Los comandos dentro de una instruccin compuesta deben ir separadas por punto y coma. PRO / 5 ejecuta las declaraciones de izquierda a derecha. Algunos ejemplos de lneas: 1280 LET X=4; GOTO 4000 3000 STOP

Etiquetas de lneasUna lnea de PRO / 5 puede tener opcionalmente una etiqueta a continuacin del nmero de lnea. Una etiqueta puede ser de hasta 32 caracteres de largo. Debe comenzar con letras de AZ y puede contener letras, dgitos, o de signos de subrayado "_." Un signo de dos puntos ":" termina el nombre de la etiqueta. Por ejemplo: 1000 COMPARA: IF A$=B$ THEN GOSUB 2000 Una etiqueta puede ser la nica cosa que contenga la lnea: 1000 COMPARA: 1010 IF A$=B$ THEN GOSUB 2000 La referencia a una etiqueta se puede usar en cualquier lugar donde se puede referencias una lnea de programa (en este caso los dos puntos no se incluiran). 1000 GOSUB COMPARA 1010 ON X GOTO 2000,3000,VERIFICA_ERR,4000,SALIDA_RUTINA Generalmente, una referencia con etiqueta es igual de rpido que una referencia de nmero de lnea; por lo tanto, el uso de etiquetas principalmente se usara para mejorar la claridad del programa.

El Compilador/ListadorAntes que PRO / 5 pueda ejecutar un comando, el comando debe convertirse a su forma interna codificada. El compilador lo hace automticamente cuando se escribe una lnea. Este formato interno hace los programas ms compactos y rpidos de ejecutar. Aparece un mensaje de error si el compilador no es capaz de compilar una lnea, a causa de errores de sintaxis o insuficiencia de memoria. Por ejemplo, si el error es de sintaxis y la lnea comienza con un nmero de lnea, la lnea se almacena en el programa exactamente como se escribi, pero se marca indicando que no es vlida. Cualquier intento de ejecutar la lnea antes de corregirla causar un mensaje de error. Cuando escriba una lnea de cdigo, observe lo siguiente: Todas las letras minsculas que no estn encerradas entre comillas se convertirn internamente a maysculas. Los nombres de ciertos commandos y funciones se component de varios caracteres juntos como por ejemplo GOTO. Por ejemplo, GO TO no sera reconocido por el compilador por tener espacios entre GO y TO.

Los elementos de un commando se deben separar por espacios. Por ejemplo: Incorrecto PRINTA GOTO1000

Correcto PRINT A GOTO 1000

The lister converts a line from its internal, compiled form into a form you can read. This is done when you execute the LIST verb. The LISTed form of a line might not look identical to what was originally typed. PRO/5 removes redundant spaces from lines when they are compiled.

Modo Consola / Modo EjecucinEl objetivo de PRO / 5 es la realizacin de comandos (en forma de lneas). Usted puede digitar comandos PRO / 5 uno a uno (ejecucin de cada comando, segn se introduce), o usted puede almacenar una lista de comandos como un programa a ejecutarlo ms tarde. Cuando PRO / 5 est a la espera de lneas de comando se dice que est en modo consola. El smbolo "mayor que" (>) en el lado izquierdo de la pantalla indica esto. Para salir de PRO / 5, mientras est en modo consola, puede escribir RELEASE o BYE en el punto de insercin ">". Cuando se escribe una lnea sin un nmero de lnea (o con el nmero 0) se ejecuta de inmediato. Esto se denomina modo consola de comandos. Despus de la ejecucin, la lnea es descartada y PRO / 5 queda a la espera de instrucciones para otra lnea. Si una lnea se ingresa con un nmero de lnea distinto de cero se almacena en el espacio de trabajo en una lista junto con otras lneas que fueran escritas con nmeros de lnea. Estas son las lneas de un programa. Cuando est listo para poner en ejecucin de las lneas almacenadas en un programa, escriba RUN en la punto de insercin ">". PRO / 5 entrar en el modo de ejecucin. Mientras est en el modo de ejecucin, PRO / 5 est recibiendo rdenes de sus lneas almacenadas. Si quiere dar ms instrucciones a PRO / 5 en modo consola, entonces usted debe esperar hasta que termine el programa (o interrumpirlo - vase ms adelante). A diferencia de muchos BASICs populares, PRO / 5 en general, permite ejecutar casi cualquier comando, ya sea en modo consola o en modo de ejecucin. La excepciones se indican en la descripcin de los comandos en el Manual de comandos. While it is executing, the program may request input from the terminal. PRO/5 will temporarily suspend execution until something is typed. It is important to understand that in this instance you are NOT in console mode. You are entering information that will be processed by the program and not by PRO/5 itself. Mientras se encuentra en ejecucin, el programa puede solicitar entradas desde el terminal. PRO / 5 suspende temporalmente la ejecucin hasta que se ingresen datos. Es importante comprender que en este caso usted no est en modo consola. Est entrando informacin que ser procesada por el programa y no por PRO / 5.

Interrumpir la Ejecucin de ProgramaHay momentos en que necesita interrumpir la ejecucin del programa y volver al modo consola. Esto se conoce como escapar. En versiones anteriores de BASICs la tecla ESCAPE en el teclado se utilizaba para ello, de ah el trmino escapar. Sin embargo, debido a que PRO / 5 se ejecuta en muchos sistemas diferentes, se tecla o secuencia de teclas aplicable en cada caso puede ser algo distinta de ESCAPE (el sistema operativo anfitrin que decide la tecla, PRO / 5 se ajusta a esto). Revise su manual de sistema. Otras opciones de interrupcin son BREAK, ^C, ^ BREAK (MS-DOS), y DEL. Cuando se interrumpe la ejecucin del programa, PRO / 5 muestra la lnea que se interrumpi y, a continuacin, da el punto de insercin ">", lo que indica que est en modo consola. El usuario debe tener cuidado a la hora de interrumpir un programa, sobre todo si ha

comenzado una operacin de archivo que debe completarse. El programa puede "capturar" las interrupciones con el instruccin SETESC para asegurar la conclusin adecuada del procesamiento crtico. Para obtener ms informacin, consulte el comando SETESC.

Continuar la Ejecucin del Programa despus de la InterrupcinLa ejecucin del programa puede ser interrumpida por varias razones. Usted puede solicitar una interrupcin usando "Escapar" (vase ms arriba). El programa en s puede requerir una interrupcin (utilizando el comando ESCAPE). Por ltimo, el PRO / 5 puede decidir interrumpir el programa si se ha producido un error que el programa no poda controlar. En cualquier caso, PRO / 5 entra en modo consola. Si desea reanudar la ejecucin del programa en el punto de interrupcin simplemente escriba el comando RUN.NOTA: A diferencia de otros BASICs, el comando RUN no se inicia automticamente al comienzo del programa y no limpia ni inicializa datos. Si desea reiniciar el programa desde el principio con todos los datos a cero, entonces debe usar: BEGIN GOTO 1 RUN Finalmente, si quiere continuar la ejecucin en otra lnea dentro de la misma instancia de ejecucin conservando los datos, entonces primero escriba una instruccin GOTO indicando la lnea de continuacin. Por ejemplo, la siguiente instruccin continuar la ejecucin en la lnea 1000: GOTO 1000 RUN

Program EditingAl igual que con otros BASIC, PRO/5 ordena las lneas por su nmero. Cada vez que almacena una lnea en su programa, esta se coloca en la secuencia adecuada dentro de las otras lneas. Para esto Haga Esto Use el comando LIST para mostrar todo o parte del programa en la pantalla. Para listar todo el programa, escriba LIST. Para mostrar parte de programa, escriba LIST indicando la primera y ltima lnea que desea mostrar. Por ejemplo: LIST 1000,2000 Listar el programa a la El comando LIST se puede usar para enviar la salida a un destino impresora distino de la pantalla (como ser una impresora o un archivo). Agregar una nueva lnea Reemplazar una lnea existente Borrar una lnea existente Escriba la lnea con un nmero nico de lnea. PRO/5 insertar automticamente la lnea en el programa en el punto determinado por su nmero. Ingrese el mismo nmero de lnea con nueva informacin. La version existente sera sobreescrita. Simplemente escriba el nmero de la lnea.

Examinar el programa

Delete a range of lines. Use el comando DELETE indicando el rango de lneas que desea eliminar. Por ejemplo, la siguiente instruccin elimina todas las lneas

entre la 1000 y la 2000: DELETE 1000,2000 Agregar informacin a una lnea existente. Guardar un programa en disco Escriba el nmero de la lnea, seguida por dos puntos (:), y luego la nueva informacin. Vea el comando SAVE.

Recuperar de disco un programa previamente Vea el comando LOAD. guardado Vea los comandos DELETE, EDIT, MERGE, y RENUM para conseguir informacin adicional sobre edicin de programas. Si la ejecucin del programa fue interrumpida, puede editar libremente el programa antes de continuar la ejecucin. Esta es una ventaja significativa de PRO/5 por sobre otros BASICs porque estos no permiten la ejecucin despus de editar. Sin embargo, no puede editar lneas que se hallen en un GOSUB , WHILE, or FOR actovos; o una instruccin con un error pendiente por RETRY (una lnea con un error no controlado si puede ser editada). Todo programa tiene un commando END invisible que PRO/5 crea automticamente en la lnea 65535. Est no se mostrar cuando haga un LIST al programa. Esta ah para detener la ejecucin del programa en caso de que el programador olvide usar la instruccin END o STOP.

Superposicin de ProgramaA veces, un programa con la suficiente complejidad es demasiado grande para caber en el espacio de trabajo. Cuando esto ocurre, el programa debera dividirse en varios programas ms pequeos. Cada programa ejecuta su parte del trabajo y, a continuacin, pasa al siguiente programa. Esto se hace por medio de un comando RUN en el programa. Cuando un programa ejecuta otro, el nuevo programa se pone en el espacio de trabajo y sustituye al anterior. Esto se conoce como "superposicin".

Tipos de Datos/Estructuras de DatosTipos de DatosHay dos tipos de datos disponibles en PRO / 5, numricos y de cadena. Los datos numricos (o nmeros) consideran los valores que pueden utilizarse en los clculos aritmticos. PRO / 5 soporta punto flotante los tipos enteros. Una cadena es una secuencia de bytes de longitud arbitraria.

Estructura de DatosLa estructura ms comn de datos (sin contar las estructuras de archivo), permitidas en PRO / 5 es el arreglo. PRO / 5 es compatible tanto con arreglos numrica como de cadena. Adems, PRO / 5 provee una estructura orientada a cadena conocida como "plantilla". Una plantilla es similar a una estructura de registro usual en otras lenguajes y permite referencias simblicas a sub-campos de cadenas. Las plantillas facilitan la implementacin de gestores de bases de datos en general y generadores de reportes. Vea la seccin String Templates para ms detalles.