TUT.1. Instrucciones que controlan el flujo del programa
TUT.1.1. DO... LOOP, instruccin

	Repite un bloque de instrucciones mientras una condicin tenga el estado 
verdadero, o hasta que una condicin adquiera el estado verdadero.

DO [{WHILE | UNTIL} condicin]
    [bloqueinstrucciones]
LOOP

DO
    [bloqueinstrucciones]
LOOP [{WHILE | UNTIL} condicin]

	 condicin: una expresin numrica que BASIC evala como 
verdadero (no cero) o falso (cero).

	Ejemplo:

	i% = 0	    
	PRINT "El valor de i% al principio del bucle es ";i%
	DO WHILE i% < 10
	i% = i% + 1
	LOOP
	PRINT "El valor de i% al final del bucle es ";i%


TUT.1.2. END, instruccin

	Pone fin a un programa, procedimiento, bloque o tipo de datos definido 
por el usuario.

END [{DEF | FUNCTION | IF | SELECT | SUB | TYPE}]

	 DEF: termina la definicin de una funcin DEF FN que ocupe varias 
lneas.
	 FUNCTION: termina la definicin de un procedimiento FUNCTION.
	 IF: termina un bloque de instrucciones IF... THEN... ELSE.
	 SELECT: termina un bloque SELECT CASE.
	 SUB: termina un procedimiento SUB.
	 TYPE: termina la definicin de un tipo de datos definido por el 
usuario.
	Si no se especifica ningn argumento, END pondr fin al programa y 
cerrar todos los archivos.
	Ejemplo:

	PRINT "Juego terminado."
	END


TUT.1.3. EXIT, instruccin

	Sale de un bucle DO o FOR, un procedimiento FUNCTION o SUB, o una 
funcin DEF FN.

EXIT {DEF | DO | FOR | FUNCTION | SUB}

	 DEF: sale de una funcin DEF FN.
	 DO: sale de un bucle DO.
	 FOR: sale de un bucle FOR.
	 FUNCTION: sale de un procedimiento FUNCTION.
	 SUB: sale de un procedimiento SUB.

	Ejemplo:

	i% = 0
	DO
	  i% = i% + 1
	  IF i% = 500 THEN EXIT DO
	LOOP
	PRINT "SALE en"; i%


TUT.1.4. FOR... NEXT, instruccin

	Repite un bloque de instrucciones el nmero de veces especificado.

FOR contador = inicio TO fin [STEP incremento]
    [bloqueinstrucciones]
NEXT [contador [,contador]...]

	 contador: una variable numrica utilizada como contador de bucle.
	 inicio y fin: los valores inicial y final del contador.
	 incremento: el incremento con el que se cambia el contador cada vez 
que se ejecute el bucle.

	Ejemplo:

	FOR i% = 1 TO 15
	  PRINT i%
	NEXT i%
	FOR i% = 7 to -6 STEP -3
	  PRINT i%
	NEXT i%


TUT.1.5. IF... THEN... ELSE, instruccin

	Ejecuta una instruccin o bloque de instrucciones segn las condiciones 
especificadas.

IF condicin1 THEN
    [bloqueinstrucciones-1]
[ELSEIF condicin2 THEN
    [bloqueinstrucciones-2]]...
[ELSE
    [bloqueinstrucciones-n]]
END IF

IF condicin THEN instrucciones [ELSE instrucciones]

	 condicin1: expresin que puede ser evaluada como verdadera o 
falsa. 
	 condicin2: expresin que puede ser evaluada como verdadera o 
falsa.                 
	 bloqueinstrucciones-1: una o ms instrucciones en una o ms 
lneas.
	 bloqueinstrucciones-2: una o ms instrucciones en una o ms 
lneas.
   	 bloqueinstrucciones-n: una o ms instrucciones en una o ms 
lneas.
	 instrucciones: una o ms instrucciones, separadas con el signo de 
dos puntos.

	Ejemplo:

	INPUT "1  2? ", i%
	IF i% = 1 OR i% = 2 THEN
	  PRINT "OK"
	ELSE
	  PRINT "Valor no vlido"
	END IF


TUT.1.6. GOSUB... RETURN, instruccin

	Se bifurca a una subrutina y regresa desde la misma.

GOSUB lnea1
.
.
.
RETURN [lnea2]

	 lnea1: la etiqueta o el nmero de lnea correspondiente a la primera 
lnea de la subrutina.
	 lnea2: la etiqueta o el nmero de lnea al que regresar la subrutina.

	Si no se indica una etiqueta o nmero de lnea en RETURN, el programa 
continuar su ejecucin a partir de la instruccin que le sigue a GOSUB (para 
llamadas a subrutinas) o a partir del lugar donde ocurri un evento (para 
identificacin de eventos).

	Las instrucciones SUB y CALL constituyen una mejor alternativa para el 
uso de subrutinas GOSUB.

	Ejemplo:

	FOR i% = 1 TO 20
	  GOSUB Cuadro
	NEXT i%
	END

	Cuadro:
	PRINT i%, i% * i%
	RETURN


TUT.1.7. GOTO, instruccin

	Realiza una bifurcacin a una lnea especificada.

GOTO lnea

	 lnea: la etiqueta o el nmero de la siguiente lnea que ser 
ejecutada.

	DO... LOOP, SELECT CASE, IF... THEN... ELSE, SUB y 
FUNCTION ofrecen mejores formas de controlar el flujo de los programas.

	GOTO tambin se utiliza como palabra clave en la instruccin ON ERROR.

	Ejemplo:

	'Muestra el uso de ERDEV, ERDEV$, ERL, ERR, ERROR, ON 
	ERROR y RESUME.
	ON ERROR GOTO Identificador
	10 CHDIR "a:\"    'Origina ERR 71 "El disquete no est 
				   'listo",
           		   'si no hay disquete en la Unidad A.
	20 y% = 0
	30 x% = 5 / y%    'ERR 11 "Divisin entre cero."
	40 PRINT "x% ="; x%
	50 ERROR 57       'ERR 57 "Error de dispositivo I/O."

	Identificador:
	PRINT
	PRINT "Error "; ERR; " en la lnea "; ERL
	SELECT CASE ERR
	  CASE 71
	    PRINT "Usando el dispositivo "; ERDEV$; " cdigo 	    
de error  = "; ERDEV
	    RESUME NEXT
	  CASE 11
	    INPUT "Escriba el valor por el que desee dividir"; 
	    y%
	    RESUME  'Reintentar lnea 30 con el nuevo valor de 
		       'y%.
	  CASE ELSE
	    PRINT "Error inesperado, terminando el programa."
	    END
	END SELECT


TUT.1.8. ON... GOSUB y ON... GOTO, instrucciones

	Bifurcan a una de varias posiciones, segn el valor de una expresin.

ON expresin% GOSUB lista-lneas
ON expresin% GOTO lista-lneas

	 expresin%: una expresin entre 0 y 255.
	 lista-lneas: una serie de etiquetas o nmeros de lnea. Si el valor 
de la expresin es 1, el programa se bifurca a la primera lnea de la lista; si la 
expresin es 2, se bifurca a la segunda lnea, etc.

	SELECT CASE ofrece una mejor forma de realizar bifurcaciones 
mltiples.

	Ejemplo:

	FOR i% = 1 TO 2
	  ON i% GOSUB Uno, Dos
	NEXT i%
	END

	Uno: PRINT "Uno"
	RETURN
	Dos: PRINT "Dos"
	RETURN


TUT.1.9. SELECT CASE, instruccin

	Ejecuta uno de los bloques de instrucciones, segn el valor de una 
expresin.

SELECT CASE expresinaprobar
CASE listaexpresiones1
  [bloqueinstrucciones-1]
[CASE listaexpresiones2
  [bloqueinstrucciones-2]]...
[CASE ELSE
  [bloqueinstrucciones-n]]
END SELECT

	 expresinaprobar: cualquier expresin numrica o de cadena.
	 listaexpresiones1: una o ms expresiones para comparar con 
expresinaprobar.
	 listaexpresiones2: la palabra clave IS debe preceder a cualquier 
operador relacional que haya en una expresin.
	 bloqueinstrucciones-1: una o ms instrucciones en una o ms 
lneas.
	 bloqueinstrucciones-2: una o ms instrucciones en una o ms 
lneas.    
	 bloqueinstrucciones-n: una o ms instrucciones en una o ms 
lneas.

	El argumento listaexpresiones puede tener cualquiera de las 
siguientes formas o una combinacin, separadas por comas:

	expresin[,expresin]...
	expresin TO expresin
	IS operador-relacional expresin

           expresin: cualquier expresin numrica o de cadena que sea 		
	               compatible con expresinaprobar.
           operador-relacional: uno de los siguientes operadores
                                                             relacionales:  <, <=, >, >=, <> o =.

	Ejemplo:

	INPUT "Escriba nivel de riesgo aceptable (1-5): ", 
	Total
	SELECT CASE Total

	  CASE IS >= 5
	    PRINT "Riesgo y ganancia mximos."
	    PRINT "Seleccione plan de inversiones en bolsa de 	    
valores."

	  CASE 2 TO 4
	    PRINT "Riesgo y ganancia de moderados a altos."
	    PRINT "Seleccione fondo mutuo o bonos de 		    
corporaciones."
	  CASE 1
	    PRINT "Sin riesgo, pocas ganancias."
	    PRINT "Seleccione plan de pensin individual."

	END SELECT


TUT.1.10. STOP, instruccin

	Detiene la ejecucin de un programa.
STOP

	La palabra clave STOP tambin detiene la intercepcin de eventos en las 
instrucciones siguientes:

	COM 				ON PLAY    
	STRIG 			ON STRIG     
	TIMER 			ON TIMER
	ON COM      		KEY
	ON KEY         	PEN 
	ON PEN			PLAY 
	
	Ejemplo:

	FOR i% = 1 TO 10
	  PRINT i%
	  IF i% = 5 THEN STOP     'STOP hace una pausa; F5 	  
contina.
	NEXT i%


TUT.1.11. SYSTEM, instruccin

	Cierra los archivos abiertos y devuelve el control al sistema operativo.

SYSTEM


TUT.1.12. WHILE... WEND, instruccin

	Ejecuta una serie de instrucciones siempre que la condicin especificada 
tenga el estado verdadero.

WHILE condicin
.
.
.
WEND
	 condicin: una expresin numrica que BASIC evala como 
verdadera (no cero) o falsa (cero).

	DO... LOOP ofrece una mejor forma de ejecutar instrucciones en un 
bucle dentro del programa.


TUT.1.13. SLEEP, instruccin

	Suspende temporalmente la ejecucin del programa.

SLEEP [segundos&]			

	 segundos&: el nmero de segundos durante los que se suspender la 
ejecucin del programa.

	Si segundos& es 0  se omite, el programa ser suspendido hasta que se 
presione una tecla o hasta que ocurra un evento interceptado.

	Ejemplo:

	PRINT "Tomando una siesta de 10 segundos..."
	SLEEP 10
	PRINT "Despirtate!" 


TUT.2. Instrucciones que declaran constantes y variables
TUT.2.1. CONST, instruccin

	Declara una o ms constantes simblicas.

CONST nombreconst = expresin [,nombreconst = expresin]...
	
	 nombreconst: el nombre de la constante.  Este  nombre  puede  tener 
hasta 40 caracteres y debe comenzar con una letra. Los caracteres vlidos son A-
Z, 0-9 y el punto (.). No se pueden usar letras acentuadas ni la .
	 expresin: una expresin asignada a la constante. La expresin puede 
consistir de literales (tales como 1.0), otras constantes, cualquier operador 
aritmtico o lgico excepto el de exponenciacin (^) o una sola cadena literal.

	Ejemplo:

    CONST PI = 3.141593
    INPUT "Radio del crculo: "; r
    PRINT "rea = "; PI * r ^ 2


TUT.2.2. DATA, READ y RESTORE, instrucciones

	DATA especifica los valores que sern ledos por instrucciones READ 
subsecuentes; READ lee esos valores y los asigna a variables; RESTORE permite a 
READ volver a leer valores en las instrucciones DATA especificadas.

DATA constante[,constante]...
READ listavariables
RESTORE [lnea]

	 constante: una o ms constantes numricas o de cadena que 
especifican los datos que sern ledos. Las constantes de cadena que contengan 
comas (,) , dos puntos (:) o espacios antes o despus sern puestas entre 
comillas ("").
	 listavariables: una o ms variables, separadas por comas, a las 
que se asignarn valores. Los nombres de variables pueden tener hasta 40 
caracteres y deben comenzar con una letra. Los caracteres vlidos son A-Z, 0-9 y 
el punto (.). No se pueden usar letras acentuadas ni la .
	 lnea: la etiqueta o nmero de lnea de una instruccin DATA. Si se 
omite, la siguiente instruccin READ leer los valores de la primera instruccin 
DATA del programa.

	Slo se pueden introducir instrucciones DATA a nivel de mdulo. No 
pueden ser utilizados en procedimientos.

	Ejemplo:

	FOR i% = 1 TO 3
	  READ a%, b$
	  PRINT a%, b$
	  RESTORE
	NEXT i%
	DATA 1, "Repetir"


TUT.2.3. DIM y REDIM, instrucciones

	DIM declara una matriz o especifica un tipo de datos para una variable 
que no sea una matriz. REDIM declara o cambia el tamao de una matriz 
dinmica, borrando los valores anteriores.

DIM [SHARED] variable[(subndices)] [AS tipo]
             [,variable[(subndices)] [AS tipo]]...
REDIM [SHARED] variable(subndices) [AS tipo]
               [,variable(subndices) [AS tipo]]...

	 SHARED: especifica que las variables sern compartidas con todos los 
procedimientos SUB o FUNCTION existentes en el mdulo.
	 variable: el nombre de una matriz o variable.
	 subndices: las dimensiones de la matriz, indicadas de esta forma:

	[inferior TO] superior [,[inferior TO] superior]... 

	 inferior: el lmite inferior de los subndices de la matriz. El valor 	
	         predeterminado es 0.
	 superior: el lmite superior.

	 AS tipo: declara el tipo de datos de la matriz o variable (INTEGER, 
LONG, SINGLE, DOUBLE, STRING o un tipo de datos definido por el usuario).

	DIM declara matrices estticas o dinmicas. A menos que se haya 
determinado el almacenamiento de la matriz mediante $STATIC, $DYNAMIC o 
COMMON, las matrices cuyas dimensiones son definidas con  nmeros sern 
estticas y las matrices cuyas dimensiones son definidas con variables sern 
dinmicas. REDIM siempre declara matrices dinmicas.

	El almacenamiento de matrices estticas ser asignado al iniciar el 
programa y permanecer fijo. El almacenamiento de matrices dinmicas ser 
asignado durante la ejecucin del programa.

	Ejemplo:

	' $DYNAMIC
	DIM A(49, 49)
	REDIM A(19, 14)


TUT.2.4. ERASE, instruccin

	Reinicializa los elementos de una matriz o libera espacio de 
almacenamiento para matrices dinmicas.

ERASE nombrematriz [,nombrematriz]...

	 nombrematriz: el nombre de una matriz.

	Para matrices estticas, ERASE asigna cero a cada elemento de matrices 
numricas y asigna nulo a cada elemento de matrices de cadena.

	Para matrices dinmicas, ERASE libera la memoria utilizada por la 
matriz. Hay que volver a declarar las dimensiones de la matriz usando REDIM o 
DIM antes de usarla.
	Ejemplo:

	DIM a%(0)
	a%(0) = 6
	PRINT "Antes: "; a%(0)
	ERASE a%
	PRINT "Despus: "; a%(0)


TUT.2.5. OPTION BASE, instruccin

	Establece el lmite inferior predeterminado para subndices de matrices.

OPTION BASE {0 | 1}

	La instruccin DIM con la clasula TO constituye una mejor forma de 
definir el lmite inferior de un subndice de matriz.


TUT.2.6. TYPE... END TYPE, instruccin

	Define un tipo de datos que contiene uno o ms elementos.

TYPE tipousuario
  elemento AS tipo
  [elemento AS tipo]
.
.
.
END TYPE

	 tipousuario: el nombre del tipo de datos que ser definido. El 
nombre puede tener hasta 40 caracteres y debe comenzar con una letra. Los 
caracteres vlidos son A-Z, 0-9 y el punto (.). No se pueden usar letras 
acentuadas ni la .
	 elemento: un elemento del tipo de datos definido por el usuario.
	 tipo: el tipo de datos del elemento (INTEGER, LONG, SINGLE, 
DOUBLE, STRING o un tipo de datos definido por el usuario).

	Usaremos DIM, REDIM, COMMON, STATIC o SHARED para crear una 
variable con un tipo de datos definido por el usuario.

	Ejemplo:

	TYPE Cartas
	  Palo AS STRING * 9
	  Valor AS INTEGER
	END TYPE
	DIM Juego(1 TO 52) AS Carta
	Juego(1).Palo = "Bastos"
	Juego(1).Valor = 2
	PRINT Juego(1).Palo, Juego(1).Valor


TUT.2.7. REM, instruccin

	Permite insertar comentarios y explicaciones en un programa.

REM comentario
' comentario

	 comentario: cualquier texto.				

	Se har caso omiso a comentarios al ejecutar el programa, a menos que 
contengan metacomandos.

	Se puede insertar un comentario en la misma lnea despus de una 
instruccin ejecutable si va precedido de una forma de REM que utilice la 
comilla sencilla (') o si REM va precedido de dos puntos (:).

	Ejemplo:

	REM    Este es un comentario.
	'      Este tambin es un comentario.
	PRINT "Prueba1"   'Un comentario despus de la 
	instruccin PRINT.
	PRINT "Prueba2" : REM Otro comentario despus de la 
	instruccin PRINT.


TUT.2.8. SWAP, instruccin

	Intercambia los valores de dos variables.

SWAP variable1, variable2

	 variable1 y variable2: dos variables del mismo tipo de datos.
	Ejemplo:

	a% = 1: b% = 2
	PRINT "Antes: "; a%, b%
	SWAP a%, b%
	PRINT "Despus: "; a%, b%

TUT.2.9. COMMON, instruccin

	Define variables globales que podrn ser compartidas en todo el 
programa o entre programas encadenados.

COMMON [SHARED] listavariables

	 SHARED: indica que las variables sern compartidas en todos los 
procedimientos SUB o FUNCTION.
	 listavariables  Una o ms variables que sern compartidas:

	variable[( )] [AS tipo] [, variable[( )] [AS tipo]]...

	 variable: un nombre de variable BASIC. Los nombres de variables 
pueden tener hasta 40 caracteres y deben comenzar con una letra. Los caracteres 
vlidos son A-Z, 0-9 y el punto (.). No se pueden usar letras acentuadas ni la .
	 tipo: el tipo de datos de la variable (INTEGER, LONG, SINGLE, 
DOUBLE, STRING, o un tipo de datos definido por el usuario).

	A menos que haya sido declarada como matriz esttica en una 
instruccin DIM anterior, una variable de matriz en una instruccin COMMON 
ser una matriz dinmica. Ser necesario establecer sus dimensiones 
posteriormente a travs de una instruccin DIM o REDIM.


TUT.2.10. $DYNAMIC y $STATIC, metacomandos

	Establecen el almacenamiento predeterminado de matrices.

{REM | '} $STATIC
{REM | '} $DYNAMIC

	 {REM | '}: REM o un carcter de comentario (') debe preceder a los 
metacomandos.
	 $STATIC: especifica que las matrices declaradas en instrucciones DIM 
subsecuentes sean matrices estticas (a menos que sean declaradas en un 
procedimiento SUB o FUNCTION no esttica). El almacenamiento de matrices 
ser asignado al iniciar el programa y permanecer fijo.
	 $DYNAMIC: especifica que las matrices declaradas en instrucciones 
DIM subsecuentes sean matrices dinmicas. El almacenamiento de matrices ser 
asignado en forma dinmica durante la ejecucin del programa.

	DIM y REDIM generalmente constituyen una mejor manera de especificar 
si las matrices deben ser dinmicas o estticas.


TUT.2.11. LBOUND y UBOUND, funciones

	Devuelven el lmite inferior y superior (el subndice menor o mayor 
disponible), para la dimensin de matriz especificada.

LBOUND(matriz[,dimensin%])
UBOUND(matriz[,dimensin%])

	 matriz: el nombre de la matriz.
   	 dimensin%: indica la dimensin de la matriz cuyo lmite inferior o 
superior ser dado como resultado. Utilcese 1 para la primera dimensin, 2 
para la segunda, etc. El valor predeterminado es 1.

	Ejemplo:

    DIM a%(1 TO 3, 2 TO 7)
    PRINT LBOUND(a%, 1), UBOUND(a%, 2)


TUT.2.12. VARSEG y VARPTR, funciones

	VARPTR devuelve la direccin compensada de una variable. VARSEG 
devuelve la direccin de segmento de una variable.

VARPTR(nombre-variable)
VARSEG(nombre-variable)

	 nombre-variable: cualquier nombre de variable BASIC.


TUT.2.13. VARPTR$, funcin

	Devuelve una representacin de la direccin de una variable en forma de 
una cadena para ser utilizada en instrucciones DRAW y PLAY.

VARPTR$(cadena-comando$)

	 cadena-comando$: una variable de cadena que contiene comandos 
DRAW o PLAY.

	Ejemplo:

    	Escala$ = "CDEFGAB"
    	PLAY "L16"
    	FOR i% = 0 TO 6
    	  PLAY "O" + STR$(i%)
   	  PLAY "X" + VARPTR$(Escala$)
    	NEXT i%


TUT.3. Instrucciones que definen y llaman procedimientos
TUT.3.1. CALL, instruccin

	Transfiere el control a un procedimiento SUB.

[CALL] nombre [([listargumentos])]

	 nombre: el nombre del procedimiento SUB que ser llamado.
	 listargumentos: las variables o constantes que sern pasadas al 
procedimiento SUB. Separe los argumentos con comas. Para especificar 
argumentos de matrices, usaremos el nombre de la matriz seguido de 
parntesis vacos.

	Si se omite la palabra clave CALL, tambin se debern omitir los 
parntesis alrededor de listargumentos. Declrese el procedimiento en una 
instruccin DECLARE antes de llamarlo, o gurdese el programa y QBASIC 
generar automticamente una instruccin DECLARE.

	Para especificar un argumento cuyo valor no ser cambiado por el 
procedimiento, encierre el argumento entre parntesis.

	 Nota: El programa remline.bas ilustra llamadas a procedimientos 
SUB. Para ver o ejecutar este programa, carguemos remline.bas usando el 
comando Abrir del men Archivo.


TUT.3.2. DECLARE, instruccin

	Declara una funcin FUNCTION o subprograma SUB e invoca la 
verificacin de tipo de datos para los argumentos.

DECLARE {FUNCTION | SUB} nombre [([listaparmetros])]

	 nombre: el nombre del procedimiento.
	 listaparmetros: una o ms variables que especifican los 
parmetros que sern pasados al procedimiento cuando ste sea llamado:

	variable[( )] [AS tipo] [, variable[( )] [AS tipo]]...

	 variable: el nombre de una variable BASIC.
	 tipo: el tipo de datos de la variable (INTEGER, LONG, SINGLE, 		     
DOUBLE, STRING o un tipo de datos definido por el usuario). 	                ANY 
permite cualquier tipo de datos.

	DECLARE es requerido si se hace un llamado a un procedimiento SUB sin 
CALL. QBASIC generar automticamente instrucciones DECLARE cuando se 
guarde un programa.
	
	 Nota: El programa remline.bas muestra cmo declarar FUNCTION y 
procedimientos SUB. Para ver o ejecutar este programa, cargaremos   remline.bas 
usando el comando Abrir del men Archivo.


TUT.3.3. FUNCTION, instruccin

	Define un procedimiento FUNCTION.

FUNCTION nombre [(listaparmetros)] [STATIC]
    [bloqueinstrucciones]
  nombre = expresin
    [bloqueinstrucciones]
END FUNCTION

	 nombre: el nombre de la funcin y tipo de datos que devuelve 
especificado por un sufijo de tipo de datos (%, &, !, #, o $).
	 listaparmetros: una o ms variables que especifican parmetros 
que sern pasados a la funcin cuando sta sea llamada:

	variable[( )] [AS tipo] [, variable[( )] [AS tipo]]...

	 variable: un nombre de variable BASIC.
  	 tipo: el tipo de datos de la variable (INTEGER, LONG, SINGLE, 	  	     
DOUBLE, STRING, o un tipo
                            de datos definido por el usuario).

	 STATIC: especifica que los valores de las variables locales de la 
funcin sen guardados entre llamados a la funcin.
  	 expresin: el valor de la funcin devuelto.

	Cuando se llama a una funcin, se podr especificar que el valor de un 
argumento no sea cambiado por la funcin, poniendo el argumento entre 
parntesis.

	 Nota: (Ver la Nota de la seccin anterior).


TUT.3.4. RUN, instruccin

	Ejecuta el programa actual o el programa especificado.

RUN [{nmerolnea | archivo$}]

  	 nmerolnea: el nmero de lnea en el programa actual donde la 
ejecucin deber comenzar. Si no se especifica un nmero de lnea, la ejecucin 
comenzar en la primera lnea ejecutable.
  	 archivo$: el nombre de un archivo de origen de BASIC. QBASIC 
supone que tendr la extensin .bas.

	RUN cierra todos los archivos y borra la memoria del programa antes de 
cargar un programa. Utilizaremos la instruccin CHAIN si deseamos ejecutar un 
programa sin cerrar los archivos abiertos.

	Ejemplo:

	'Supone que el programa TEST.BAS est en el directorio 
	\DOS.
	RUN "C:\DOS\TEST.BAS"


TUT.3.5. SHELL, instruccin

	Suspende la ejecucin de un programa BASIC para ejecutar un comando 
de DOS o un archivo de Procesamiento por Lotes (batch).

SHELL [cadenacomando$]

	 cadenacomando$: el nombre de un comando de DOS o archivo de 
Procesamiento por Lotes.

	Se reanudar la ejecucin del programa cuando se termine de ejecutar el 
comando de DOS o el archivo de Procesamiento por Lotes.
  
	Si omito la cadena de comando, SHELL invocar a DOS Shell y 
presentar el smbolo del sistema. Utilizar el comando EXIT para reanudar al 
programa.

 	Ejemplo:

	SHELL "DIR"


TUT.3.6. SHARED y STATIC, instrucciones

	SHARED permite que los procedimientos tengan acceso a variables de 
nivel de mdulo. STATIC convierte una variable local en una funcin  o  proce-
dimiento y conserva su valor entre llamados.

SHARED variable[()] [AS tipo] [,variable[()] [AS tipo]]...
STATIC variable[()] [AS tipo] [,variable[()] [AS tipo]]...

	 variable: el nombre de la variable de nivel de mdulo que ser 
compartida o la variable que se har esttica. Los nombres de variables pueden 
tener hasta 40 caracteres y deben comenzar con una letra. Los caracteres vlidos 
son A-Z, 0-9 y el punto (.). No se pueden usar letras acentuadas ni . 
 	 AS tipo: declara el tipo de datos de la variable (INTEGER, LONG, 
SINGLE, DOUBLE, STRING o un tipo de datos definido por el usuario).

	 Nota: El programa remline.bas muestra el uso de las instrucciones 
SHARED y STATIC. Para ver o ejecutar este programa, carguemos remline.bas 
usando el comando Abrir del men Archivo.


TUT.3.7. SUB, instruccin

	Define un procedimiento SUB.

SUB nombre[(listaparmetros)] [STATIC]
  [bloqueinstrucciones]
END SUB

	 nombre: el nombre de un procedimiento SUB, de hasta 40 caracteres, 
sin sufijo indicando el tipo de datos.
	 listaparmetros: una o ms variables que especifican los 
parmetros que sern pasados a un procedimiento SUB cuando es llamado:

	variable[( )] [AS tipo] [, variable[( )] [AS tipo]]...

	 variable: un nombre de variable BASIC.
	 tipo: el tipo de datos de la variable (INTEGER, LONG, SINGLE, 	  	     
DOUBLE, STRING, o un tipo de datos definido por el usuario).

	 STATIC: especifica que los valores de las variables locales del 
procedimiento SUB sean guardados entre llamados a la funcin.

	Cuando se hace el llamado a un procedimiento SUB, se puede especificar 
que el valor de un argumento no sea cambiado por el procedimiento, poniendo 
el argumento entre parntesis.

  	Ejemplo:

	El programa remline.bas muestra cmo llamar a un procedimiento SUB.

 
TUT.3.8. CHAIN, instruccin

	Transfiere el control desde el programa actual a otro programa de 
BASIC.

CHAIN archivo$

	 archivo$: el nombre del programa al que se pasar el control.

	Ejemplo:

	'Supone que el programa TEST.BAS est en el directorio 
	\DOS.
	CHAIN "C:\DOS\TEST.BAS"


TUT.3.9. DEF FN, instruccin

	Define una funcin.

DEF FNnombre(listaparmetros)] = expresin
DEF FNnombre[(listaparmetros)]
    [bloqueinstrucciones]
  FNnombre = expresin
    [bloqueinstrucciones]
  EXIT DEF]
    [bloqueinstrucciones]
  END DEF

	 listaparmetros: uno o ms argumentos con esta forma:

	variable[( )] [AS tipo] [, variable[( )] [AS tipo]]...

	 variable: un nombre de variable BASIC.
	 tipo: el tipo de datos de la variable (INTEGER,
     	                LONG, SINGLE, DOUBLE, STRING o un tipo de datos definido 	                
por el usuario).

	 expresin: el valor devuelto por la funcin.

	La instruccin FUNCTION ofrece una mejor manera de definir una 
funcin.


TUT.3.10. DEFDBL, DEFINT, DEFLNG, DEFSNG y 
DEFSTR
	     , instrucciones

	Definen el tipo de datos predeterminado para variables, funciones DEF 
FN y procedimientos FUNCTION.

DEFINT letras [,letras]...
DEFLNG letras [,letras]...
DEFSNG letras [,letras]...
DEFDBL letras [,letras]...
DEFSTR letras [,letras]...

	 letras: una letra o serie de letras (por ejemplo, A-M). QBASIC 
establecer el tipo de datos predeterminado para variables, funciones DEF FN y 
procedimientos FUNCTION cuyos nombres comienzan con la letra o letras 
especificadas, segn se indica a continuacin:

	Instruccin  	Tipo de datos predeterminado

	DEFINT	Entero
	DEFLNG    	Entero largo
	DEFSNG      	Precisin sencilla
	DEFDBL       	Precisin doble
	DEFSTR       	Cadena
 	Un sufijo indicando el tipo de datos (%, &, !, # o $) siempre tendr 
prioridad sobre una instruccin DEFtipo.

	Precisin sencilla ser el tipo de datos predeterminado si no se especifica 
una instruccin DEFtipo.

	Despus de especificar una instruccin DEFtipo en un programa, 
QBASIC insertar automticamente una instruccin DEFtipo correspondiente 
en cada procedimiento que hayamos creado.

	Ejemplo:

	DEFDBL A-Z
	a = SQR(3)
	PRINT "Raz cuadrada de 3 = "; a


TUT.4. Instrucciones de Entrada/Salida de dispositivos
TUT.4.1. CLS, instruccin

	Borra la pantalla.

CLS [{0 | 1 | 2}]			

	 CLS: borra la ventana grfica o la de texto. Si se ha establecido una 
ventana grfica (usando VIEW), se borrar slo la ventana grfica. De lo 
contrario, se borrar la ventana de texto o toda la pantalla. 
	 CLS 0: borra la pantalla, quitando todo el texto y los grficos.
	 CLS 1: borra la ventana de grficos, o la pantalla completa si no se ha 
establecido una ventana para grficos.
	 CLS 2: borra la ventana de texto.


TUT.4.2. CSRLIN y POS, funciones y LOCATE, instruccin

	LOCATE mueve el cursor en la pantalla a la posicin especificada. 
CSRLIN devuelve la posicin actual de la fila donde se encuentra el cursor. POS 
devuelve la posicin actual de la columna donde se encuentre el cursor.

LOCATE [fila%][,[columna%][,[cursor%][,inicio% [,fin%]]]]
CSRLIN
POS(expresin)

  	 fila% y columna%: el nmero de la fila y columna a la que se 
mover el cursor.
	 cursor%: especifica si el cursor est visible: 0 = invisible, 1 = visible. 
	 inicio% y fin%: expresiones de enteros entre 0 y 31 que especifican 
la primera y ltima lnea de exploracin del cursor. Podremos cambiar el 
tamao del cursor modificando las lneas de exploracin.
	 expresin: cualquier expresin.

	Ejemplo:

	CLS
	LOCATE 5, 5
	MiLin% = CSRLIN
	MiCol% = POS(0)
	PRINT "Posicin 1 (Presione cualquier tecla)"
	DO
	LOOP WHILE INKEY$ = ""
	LOCATE (MiLin% + 2), (MiCol% + 2)
	PRINT "Posicin 2"


TUT.4.3. INKEY$, funcin

	Lee un carcter desde el teclado.

INKEY$

	INKEY$ genera una cadena nula si no hay ningn carcter para devolver. 
Para las teclas estndar, INKEY$ genera una cadena de 1 byte que contiene el 
carcter ledo. Para las teclas extendidas, INKEY$ genera una cadena de 2 bytes 
que contienen el carcter nulo (ASCII 0) y el cdigo de teclado.

	Ejemplo:
	
	PRINT "Presione Esc para salir..."
    	DO
    	LOOP UNTIL INKEY$ = CHR$(27)    '27 es el cdigo ASCII 
	para Esc.


TUT.4.4. INP y OUT, funciones

	INP genera un byte ledo del puerto (hardware) de Entrada/Salida (E/S). 
OUT enva un byte a un puerto (hardware) de E/S.

INP(puerto%)
OUT puerto%, datos%

	 puerto%: un nmero entre 0 y 65.535 que identifica el puerto.
 	 datos%: una expresin numrica entre 0 y 255 que ser enviada al 
puerto.

	Ejemplo:

	x% = INP(&H3FC)    'Leer COM1 Modem Control 	Register.
    	OUT &H3FC, (x% XOR 1)   'Cambiar bit de Data Terminal 
	Ready.


TUT.4.5. INPUT y LINE INPUT, instrucciones

	INPUT lee informacin desde el teclado o desde un archivo. LINE INPUT 
lee una lnea de hasta 255 caracteres desde el teclado o desde un archivo.

INPUT [;] ["mensaje"{; | ,}] listavariables
LINE INPUT [;] ["mensaje";] variable$
INPUT #numarchivo%, listavariables
LINE INPUT #numarchivo%, variable$

	 mensaje: una cadena literal optativa que ser presentada antes de 
que el usuario introduzca datos. Un punto y coma despus del mensaje 
agregar un signo de interrogacin al texto del mensaje.
	 listavariables: una o ms variables, separadas con comas, en las 
que sern almacenados los datos introducidos desde el teclado o ledos desde 
un archivo. Los nombres de variables pueden tener hasta 40 caracteres y deben 
comenzar con una letra. Los caracteres vlidos son A-Z, 0-9 y el punto (.). No se 
pueden usar letras acentuadas ni la .
	 variable$: almacena una lnea de caracteres introducidos desde el 
teclado o ledos desde un archivo.
	 numarchivo%: el nmero de un archivo abierto.

  	INPUT utiliza la coma (,) como separador entre entradas. LINE INPUT 
lee todos los caracteres hasta encontrar un retorno de carro. Para datos 
introducidos desde el teclado, un punto y coma (;) inmediatamente despus de 
INPUT mantendr el cursor en la misma lnea despus que el usuario presione 
la tecla ENTRAR.

	Ejemplo:

	CLS
    	OPEN "LISTA" FOR OUTPUT AS #1
    	DO
	  INPUT "NOMBRE:",Nombre$ 'Lee datos desde el teclado.
    	  INPUT "EDAD:", Edad$
   	  WRITE #1, Nombre$, Edad$
   	  INPUT "Desea ingresar otros datos"; R$
    	LOOP WHILE UCASE$(R$) = "S"
	CLOSE #1
   	'Mostrar el archivo en la pantalla.
   	OPEN "LISTA" FOR INPUT AS #1
  	CLS
   	PRINT "Datos en el archivo:": PRINT
   	DO WHILE NOT EOF(1)
       LINE INPUT #1, REC$  'Leer datos del archivo.
   	  PRINT REC$     'Imprimir los datos en la pantalla.
   	LOOP
   	CLOSE #1
   	KILL "LISTA"


TUT.4.6. KEY (Asignacin), instruccin

	Asigna valores de cadena a teclas de funcin y, si se especifica la opcin,
presenta los valores de las teclas.

KEY tecla%, expresincadena$
KEY LIST
KEY ON
KEY OFF

	 tecla%: el nmero de una tecla de funcin. Utilizaremos 1 a 10 para 
las teclas de funcin F1 a F10. Utilizaremos 30 y 31 para F11 y F12 en teclados 
extendidos.
	 expresincadena$: una expresin de cadena de hasta 15 caracteres 
generados al presionar la tecla de funcin.
	 LIST: presenta las asignaciones para cada tecla.
	 ON: activa la lnea que muestra las teclas de funcin.
	 OFF: desactiva la lnea que muestra las teclas de funciones.

	Ejemplo:

 	KEY 4, "MENU" + CHR$ (13)
	KEY LIST
	KEY 4, ""
	KEY LIST


TUT.4.7. LPOS, funcin

	Devuelve el nmero de caracteres enviados a la impresora desde el 
ltimo envio de retorno de carro.

LPOS(n%)

	 n%: indica uno de los puertos de impresora: 0 = LPT1, 1 = LPT1, 2 = 
LPT2 y 3 = LPT3.

	Ejemplo:
	
	'Este ejemplo requiere una impresora.
    	LPRINT
    	FOR i% = 1 TO 20
   	  LPRINT i%;
   	  IF LPOS(1) >= 10 THEN LPRINT  
    	NEXT i%


TUT.4.8. PRINT y LPRINT, instrucciones

	PRINT escribe datos en la pantalla o en un archivo. LPRINT imprime los 
datos en la impresora LPT1.

PRINT [#numarchivo%,] [listaexpresiones] [{; | ,}]
LPRINT [listaexpresiones] [{; | ,}]

	 numarchivo%: el nmero de un archivo abierto. Si no se especifica un 
nmero de archivo, PRINT escribir la informacin en la pantalla.
	 listaexpresiones: una lista de una o ms expresiones numricas o 
de cadena que sern impresas.
	 {; | ,}: determina el lugar dnde empieza la informacin de salida 
siguiente:

	; imprimir inmediatamente despus del ltimo valor.
	, imprimir al inicio de la siguiente zona de
	  impresin. Las zonas de impresin tienen un ancho
	 de 14 caracteres.

	Ejemplo:

	OPEN "TEST.DAT" FOR OUTPUT AS #1
	PRINT #1, USING "##.###  "; 12.12345
	CLOSE
	OPEN "TEST.DAT" FOR INPUT AS #1
	INPUT #1, a$
	PRINT a$
	LPRINT "Esta es una lnea"; 1
	LPRINT "Esta es una lnea",
	LPRINT 2


TUT.4.9. PRINT USING y LPRINT USING, instrucciones

	PRINT USING escribe informacin de salida con formato en la pantalla o 
en un archivo. LPRINT USING imprime informacin de salida con formato en 
la impresora en LPT1.

PRINT[#numarchivo%,] USING cadenaformato$;listaexpresiones 
[{; | ,}]
LPRINT USING cadenaformato$; listaexpresiones [{; | ,}]

	 numarchivo%: el nmero de un archivo secuencial abierto.
 	 formatocadena$;: una expresin de cadena que contiene uno o ms 
especificadores de formato:

	Caracteres que dan formato a una expresin numrica

 #    Posicin de dgito.	
-     Despus del dgito, imprime el signo para los nmeros negativos.
.    Posicin de punto decimal.
 ,    A la izquierda del punto decimal, imprime una coma cada 3 dgitos.   
 $$    Imprime $ delante.
 +    Posicin del signo de nmero.   
 **    Llena espacios delante con *
^^^^  Imprime con formato exponencial.
**$   Combina ** y $$.

             Caracteres que dan formato a una expresin de cadena

 &    Imprime la cadena completa.        
 \ \   Imprime los primeros n caracteres, donde n es el nmero de espacios 
entre barra +2.
 !    Imprime slo el primer carcter de la cadena.                      

           Caracteres utilizados para imprimir caracteres literales

 _    Imprime el carcter de formato siguiente como literal.
           
(Cualquier carcter que no est en la tabla ser imprimido como literal).

	 listaexpresiones: una lista de una o ms expresiones numricas o 
de cadena que sern impresas; separadas con comas, punto y comas, espacios o 
tabulaciones.

	{; | ,}: (Ver la seccin anterior).

	Ejemplo:

	a = 123.4567
	PRINT USING "###.##"; a
	LPRINT USING "+###.####"; a	
	a$ = "ABCDEFG"
	PRINT USING "!"; a$
	LPRINT USING "\ \"; a$


TUT.4.10. OPEN COM, instruccin

	Abre e inicializa un canal de comunicacines para informacin de 
entrada y salida (E/S). Debemos ejecutar la instruccin OPEN COM antes de usar 
un dispositivo para comunicaciones que utilice una interfaz RS232.

OPEN "COMn: listaop1 listaop2" [FOR modo] AS [#]numarch% 
[LEN=reclen%]

	 n: el puerto de comunicaciones que ser abierto (1 = COM1, 2 = 
COM2).
	 listaop1: los  parmetros  de  comunicacin  que  se  utilizan   con  
mayor frecuencia:

	[baudios] [,[paridad] [,[datos] [,[paro]]]]
                  
	baudios es la velocidad de transmisin en baudios para el dispositivo 
que ser abierto: 75, 110, 150, 300, 600, 1200, 2400, 4800, 9600; paridad es el 
mtodo para verificar la paridad: N (ninguno), E (par), O (impar), S (espacio), M 
(marca), PE (activar verif/errores); datos es el nmero de bits de datos por 
byte: 5, 6, 7, 8; paro es el nmero de bits de paro: 1, 1.5, 2.
                  
	Los valores predeterminados son: baudios 300, paridad par, 7 bits de 
datos, 1 bit de paro.

	 listaop2: lista de parmetros usados con menor frecuencia, 
separados con comas:

	Opcin		Descripcin

	ASC       		Abre el dispositivo en modo ASCII.
	BIN       		Abre el dispositivo en modo binario.
	CD[m]    		Define el tiempo de espera (en milisegundos) en
                            		la lnea Data Carrier Detect (DCD).
	CS[m]     		Define el tiempo de espera (en milisegundos) en
                            		la lnea Clear to Send (CTS).
	DS[m]     		Define el tiempo de espera (en milisegundos) en
                            		la lnea Data Set Ready (DS).
	LF		      	Enva un carcter de salto de lnea despus de
                            		un retorno de carro.
	OP[m]     		Especifica cunto tiempo (en milisegundos) OPEN
                            		COM esperar la apertura de todas las lneas de
				comunicaciones.
	RB[n]     		Define el tamao (en bytes) del buffer receptor.
	RS       	 	Suprime la deteccin de Peticin de Envio (RTS).
	TB[n]     		Define el tamao (en bytes) del buffer de
                            		transmisin.

	 modo: RANDOM=predeterminado. Los dems:

	 APPEND especifica que el archivo ser abierto para dar informacin de 
salida secuencial y coloca el puntero de archivo al final del archivo. Una 
instruccin PRINT # o WRITE # luego anexa informacin al archivo.

	 BINARY especifica el modo de archivo binario. En este modo, es 
posible leer o escribir informacin en cualquier posicin de byte del archivo 
usando instrucciones GET o PUT.

	 INPUT especifica que el archivo ser abierto para recibir informacin 
de entrada secuencial.
	
	 OUTPUT especifica que el archivo ser abierto para dar informacin de 
salida secuencial.

	 RANDOM especifica que el archivo ser abierto en el modo de acceso 
aleatorio. RANDOM, como hemos dicho ya, es el modo de archivo 
predeterminado.

	 numarch%: un nmero entre 1  y 255 que identifica el canal de 
comunicaciones mientras est abierto.
	 reclen%: tamao del buffer de modo de acceso aleatorio (el valor 
predeterminado es de 128 bytes).

	Ejemplo:

	'Usemos este ejemplo para detectar errores de 
	comunicaciones en serie.
    	'Velocidad de transmisin lenta, handshaking de 
	hardware desactivado,
    	'buffer agrandado...
	
	OPEN "COM1:300,N,8,1,CD0,CS0,DS0,OP0,RS,TB2048,RB2048" 
	FOR 	RANDOM AS #1


TUT.4.11. SPC, funcin

	Omite un nmero de espacios especificados en una instruccin PRINT o 
LPRINT.

SPC(n%)

	 n%: el nmero de espacios que sern omitidos; un valor entre 0 y 
32,767.
	Ejemplo:

	PRINT "Texto1"; SPC(10); "Texto2"


TUT.4.12. SCREEN, funcin

	Devuelve el valor ASCII o el atributo de color de un carcter  en  la  posi-
 cin de pantalla especificada.

SCREEN (lnea%,columna% [,indicolor%])

	 lnea%: la coordenada indicando la lnea de un carcter.
	 columna%: la coordenada indicando la columna de un carcter.
	 indicolor%: un valor (0  1) que especifica el tipo de resultado 
producido.

	Valor			Resultado

	0 (u omitido)	El cdigo ASCII del carcter
	1        			El atributo de color del carcter

	Ejemplo:

	CLS
	PRINT "Hola
    	PRINT "El valor ASCII del carcter situado en 1,1 es"; 
	SCREEN(1, 1)


TUT.4.13. TAB, funcin
	Mueve el cursor de texto a la posicin de impresin especificada.

TAB(columna%)

	 columna%: el nmero de columna de la nueva posicin de impresin.

	Ejemplo:
	
	PRINT TAB(25); "Texto"


TUT.4.14. VIEW PRINT, instruccin

	Establece los lmites de margen para el texto en la pantalla del marco de 
visualizacin.

VIEW PRINT [filasup% TO filainf%]

	 filaasup%: el nmero de la fila superior del texto en la ventana.
	 filainf%: el nmero de la fila inferior del texto en la ventana.
	Si omitimos los argumentos filasup% y filainf%, VIEW PRINT 
establecer la pantalla completa como pantalla de texto.

	La gama de valores para filasup% y filainf% depende del modo de 
pantalla.

	Ejemplo:

	VIEW PRINT 10 TO 15
    	FOR i% =1 TO 100 'Informacin de salida se desplazar
       PRINT i%
    	NEXT i%


TUT.4.15. WAIT, instruccin

	Suspende la ejecucin del programa hasta que la configuracin de bits 
especificada se envie desde un puerto de entrada.
	
WAIT numpuerto%, expresin-AND% [,expresin-XOR%]

	 numpuerto%: el nmero de un puerto de entrada.
	 expresin-AND%: una expresin en entero que WAIT combina con el 
valor de la configuracin de bits usando un operador AND. Cuando el resultado 
no es cero, WAIT dejar de controlar el puerto.
  	 expresin-XOR%: puede ser utilizado para activar y desactivar bits 
de lnea en la configuracin de bits antes de aplicar la operacin AND.

	Ejemplo:

	'Leer la direccin del puerto del controlador de 
	interrupcin &H20.
   	'Presionar cualquier tecla para continuar.
    	WAIT &H20, 1


TUT.4.16. WIDTH, instruccin

	Asigna un ancho a la lnea de salida enviado a un dispositivo como una 
impresora o archivo, o cambia el nmero de columnas o filas presentadas en 
pantalla.

WIDTH [columnas%] [,filas%]
WIDTH {#numarchivo% | dispositivo$}, columnas%
WIDTH LPRINT columnas%

	 columnas%: el ancho deseado, en columnas. El ancho presentado en 
la pantalla debe ser 40 u 80 columnas.
	 filas%: la altura deseada, en filas. La altura presentada en la pantalla 
puede ser 25, 30, 43, 50  60, segn el adaptador de video y el modo de pantalla.
	 #numarchivo%: el nmero de un archivo o dispositivo abierto.
	 dispositivo$: el nombre de un dispositivo: SCRN:, COM1:, COM2:, 
LPT1:, LPT2:, LPT3:

	Ejemplo:

	OPEN "LPT1:" PARA SALIDA COMO #1
    	WIDTH #1, 132


TUT.4.17. IOCTL, instruccin e IOCTL$, funcin

	IOCTL transmite una cadena de control a un controlador de dispositivo. 
IOCTL$ devuelve la informacin sobre el estado actual de un controlador de
dispositivo.

IOCTL [#]numarchivo%, cadena$
IOCTL$([#]numarchivo%)

	 numarchivo%: el nmero de un dispositivo abierto.
	 cadena$: la cadena de control que se enviar al dispositivo.

	Las cadenas de control IOCTL y la informacin producida por IOCTL$ 
dependen del controlador de dispositivo. Consultemos, pues, la documentacin 
del controlador de dispositivo para obtener informacin sobre las cadenas de 
control y los resultados de la funcin IOCTL$.


TUT.4.18. RESET, instruccin

	Cierra todos los archivos y dispositivos abiertos.

RESET


TUT.4.19. STICK, funcin

	Devuelve las coordenadas de una palanca de mando (joystick).

STICK(n%)

	 n%: indica las coordenadas que sern devueltas como resultado:

	n%		Devuelve

            0     		coordenada X de palanca A
            1    	 	coordenada Y de palanca A
            2     		coordenada X de palanca B
            3     		coordenada Y de palanca B

	Llamar STICK(0) antes de STICK(1), STICK (2) o STICK(3). 
STICK(0) guarda un registro de las coordenadas actuales.

	Ejemplo:

	Temp% = STICK(0)
    	PRINT STICK(2), STICK(3) 


TUT.5. Instrucciones para presentar imgenes grficas
TUT.5.1. CIRCLE, instruccin

	Traza un crculo o elipse en la pantalla.

CIRCLE [STEP] (x!,y!),radio![,[color%] [,[inicio!] [,[fin!] 
[,aspecto!]]]]

	 STEP: especifica que las coordenadas estarn situadas con relacin a 
la posicin actual del cursor de grficos.
	 (x!,y!): las coordenadas del centro del crculo o elipse.
  	 radio!: el radio del crculo o elipse en unidades del sistema de 
coordenadas actual, determinado por las ms recientes instrucciones SCREEN, 
VIEW o WINDOW.
	 color%: un atributo de color que determina el color del crculo. Los 
atributos de color disponibles dependern del adaptador de grficos y del 
modo de pantalla establecido mediante la ms reciente instruccin SCREEN.
	 inicio!: el ngulo inicial para el arco, en radianes.	
	 fin!: el ngulo final para el arco, en radianes.
	 aspecto!: la dimensin entre la longitud del eje Y y la longitud del 
eje X, utilizada para trazar elipses.

	 Nota: Para convertir grados en radianes, multipliquemos grados 
por  (PI) y dividamos entre 180.

	Ejemplo:

	'Este ejemplo requiere un adaptador de grficos a 
	color.
    	SCREEN 2
    	CIRCLE (320, 100), 200
    	CIRCLE STEP (0,0), 100


TUT.5.2. COLOR, instruccin

	Establece los colores presentados en la pantalla.

COLOR [primerplano%] [,[fondo%] [,bordes%]]   
(Modo de pantalla 0, slo texto)
COLOR [fondo%] [,paleta%]              		
(Modo de pantalla 1)
COLOR [primerplano%]                          
(Modos de pantalla 4, 12, 13)
COLOR [primerplano%] [,fondo%]                
(Modos de pantalla 7-10)

	 primerplano%: un nmero que establece el color del primer plano 
de la pantalla. En el modo de pantalla 0, primerplano% es un atributo de color 
que establece el color al texto. En otros modos de pantalla, primerplano% es 
un atributo de color o valor de color de 4 bytes (modo de pantalla 4 solamente) 
que establece el color para el texto y lneas dibujadas.
	 fondo%: un nmero que establece el color del fondo en la pantalla. En 
el modo de pantalla 0, fondo% es un atributo de color. En el modo de pantalla 
1, fondo% es un valor de color de 4 bits. En los modos de pantalla 7-10, fondo% 
es un valor de color.
	 bordes%: un atributo de color que establece el color de los bordes de 
la pantalla.
	 paleta%: un nmero (0  1) que especifica el juego de atributos de 
color que ser utilizado:

	paleta%	Atributo 1		Atributo 2		Atributo 3

	0           	Verde          		Rojo           		Marrn
	1           	Azul-verdoso   	Magenta        	Blanco Intenso

	Los atributos y valores de color disponibles dependern del adaptador 
de grficos y del modo  de pantalla  establecido  mediante la ltima instruccin
SCREEN. Si el sistema tiene un adaptador EGA, VGA o MCGA, utilizaremos la 
instruccin PALLETTE para cambiar las asignaciones de color correspondientes 
a los atributos de color.

	Ejemplo:

	'Este ejemplo requiere un adaptador de grficos a 
	color.
    	SCREEN 7
    	FOR i% = 0 TO 15
  	  COLOR i%
	  PRINT i%
  	NEXT i%


TUT.5.3. GET (Grficos) y PUT (Grficos), instrucciones

	GET captura una imagen de pantalla en grficos. PUT presenta una 
imagen capturada mediante GET.

GET [STEP](x1!,y1!)-[STEP](x2!,y2!), matriz[(ndice%)]
PUT [STEP] (x1!,y1!), matriz[(ndice%)] [,palabra]

	 STEP: especifica que las coordenadas estarn situadas con relacin a 
la posicin actual del cursor de grficos.
	 (x1!,y1!): las coordenadas superior izquierda de la imagen 
capturada mediante GET o la posicin en la pantalla donde PUT colocar la 
imagen.
	 (x2!,y2!): las coordenadas inferior derecha de la imagen 
capturada.
	 matriz: Nombre de la matriz donde ser almacenada la imagen.
	 ndice%: el ndice de la matriz donde comenzar el almacenamiento 
de la imagen.
	 palabra: una palabra clave indicando la forma en que se presentar 
la imagen:

	Palabra    	Efecto
 
	AND        	Combina la imagen almacenada con una imagen
                               	existente.
     	OR         	Superpone la imagen almacenada en una imagen
                               	existente.
     	PSET       	Traza una imagen almacenada, borrando una
                               	imagen existente.
       	PRESET     	Traza una imagen almacenada en colores
                               	inversos, borrando una imagen existente.
          	XOR        	Traza una imagen almacenada o borra una imagen
                               	trazada anteriormente y conserva el fondo,
                               	produciendo efectos de animacin.

	Siempre se debe ejecutar una instruccin PUT en el mismo modo de 
pantalla que la instruccin GET utilizada para capturar la imagen, o en un modo 
compatible.

	Ejemplo:

	'Este ejemplo requiere un adaptador de grficos a 
	color.
 	SCREEN 1
 	DIM Cuadro%(1 TO 200)
 	x1% = 0: x2% = 10: y1% = 0: y2% = 10
 	LINE (x1%, y1%)-(x2%, y2%), 2, BF
 	GET (x1%, y1%)-(x2%, y2%), Cuadro%
 	DO
    	  PUT (x1%, y1%), Cuadro%, XOR
    	  x1% = RND * 300
    	  y1% = RND * 180
    	  PUT (x1%, y1%), Cuadro%
 	LOOP WHILE INKEY$ = ""

	 Nota: Vase al final en este mismo Captulo la seccin de matrices 
para imgenes de pantalla y compatibilidad.


TUT.5.4. LINE, instruccin

	Traza una lnea o rectngulo en la pantalla.

LINE [[STEP](x1!,y1!)]-[STEP](x2!,y2!) [,[color%] [,[B | 
BF] [,estilo%]]]

	 STEP: especifica que las coordenadas estarn situadas con relacin a 
la posicin actual del cursor de grficos.
	 (x1!,y1!): las coordenadas de pantalla del principio de la lnea.
      	  (x2!,y2!): final de la lnea.
	 color%: un atributo de color que establece el color de la lnea o 
rectngulo. Los atributos de color disponibles dependern del adaptador de 
grficos y del modo de pantalla establecido mediante la ms reciente 
instruccin SCREEN.
	 B: traza un rectngulo en lugar de una lnea.
	 BF: traza un cuadro con relleno de color.
	 estilo%: un valor de 16 bits los cuales determinan si se trazan o no 
los pixeles. Utilizado para trazar lneas de trazos o punteadas.

	Ejemplo:

 	'Este ejemplo requiere un adaptador de grficos a 
	color.
	SCREEN 1
	LINE (110, 70)-(190, 120), , B
	LINE (0, 0)-(320, 200), 3, , &HFF00


TUT.5.5. PAINT, instruccin

	Rellena una rea con el color o el diseo especificado.	

PAINT [STEP] (x!,y!)[,[{color% | diseo$}] [,[colorbordes%] 
[,fondo$]]]

	 STEP: especifica que las coordenadas se situen con relacin a la 
posicin actual del cursor de grficos.
	 (x!,y!): las coordenadas de pantalla donde se iniciar el relleno de 
color.
	 color%: un atributo de color que establece el color de relleno.
	 diseo$: un diseo de relleno con un ancho de 8 bits y una longitud 
de hasta 64 bytes, definido as:

	diseo$ = CHR$(arg1) + CHR$(arg2) + ... + CHR$(argn%)

	Los argumentos de CHR$ son nmeros entre 0 y 255. Cada CHR$ 
(argn%) define un sector del diseo basado en la forma binaria del nmero.

	 colorbordes%: un atributo de color que especifica el color de los 
bordes del rea rellena. PAINT deja de rellenar el rea cuando encuentre un 
borde del color especificado.
	 fondo$: un sector del diseo de fondo de 1 byte, 8 pixeles. Al 
especificar un sector del diseo de fondo, se podr rellenar encima de una rea 
previamente rellenada.

	Los atributos de color disponibles dependern del adaptador de grficos 
y del modo de pantalla establecido mediante la ltima instruccin SCREEN.

	Ejemplo:
 	'Este ejemplo requiere un adaptador de grficos a 
	color.
    	SCREEN 1
    	CIRCLE (106, 100), 75, 1
    	LINE (138, 35)-(288, 165), 1, B
    	PAINT (160, 100), 2, 1


TUT.5.6. PALETTE y PALETTE USING, instrucciones

	Cambian las asignaciones de color correspondientes a los atributos de 
color en el modo de pantalla actual. PALETTE y PALETTE USING funcionan 
nicamente en sistemas que utilicen adaptadores EGA, VGA o MCGA.

PALETTE [atributo%,color&]
PALETTE USING matriz#[(ndice%)]

	 atributo%: el atributo de color que ser cambiado.
	 color&: un valor de color que ser asignado a un atributo.
	 matriz#: una matriz de valores de color que ser asignada al juego 
de atributos del modo de pantalla actual. La matriz debe ser suficientemente 
grande para asignar colores a todos los atributos.
	 ndice%: el ndice del primer elemento de la matriz que ser 
asignado a un atributo.

	Los atributos y valores de color disponibles dependern del adapatador 
de grficos y del modo de pantalla actual establecido por la ms reciente 
instruccin SCREEN.

	Ejemplo:

  	'Este ejemplo requiere un adaptador de grficos a 
	color.
    	PALETTE 0, 1
    	SCREEN 1
    	FOR i% = 0 TO 3: a%(i%) = i%: NEXT i%
    	LINE (138, 35)-(288, 165), 3, BF
    	LINE (20, 10)-(160, 100), 2, BF
    	DO
   	  FOR i% = 0 TO 3
         a%(i%) = (a%(i%) + 1) MOD 16
   	  NEXT i%
  	  PALETTE USING a%(0)
    	LOOP WHILE INKEY$ = ""


TUT.5.7. PCOPY, instruccin
	
	Copia una pgina de memoria de vdeo en otra.

PCOPY pginaorigen%,pginadestino%

	 pginaorigen%: el nmero de la pgina de memoria de vdeo que 
ser copiada.
	 pginadestino%: el nmero de la pgina de memoria de vdeo en la 
que ser insertada la copia.

	El valor que identifica la pgina de vdeo es determinado por el tamao 
de la memoria de vdeo y el modo de pantalla actual.

	Ejemplo:

	PCOPY 1, 3


TUT.5.8. PMAP, funcin

	Devuelve la coordenada de ventana lgica equivalente a una coordenada 
de ventana fsica, segn la definicin en la instruccin WINDOW, o viceversa.

PMAP (coordenadainicio#, n%)

	 coordenadainicio#: una coordenada de ventana lgica o un marco 
de visualizacin.
	 n%: un valor indicando la coordenada que ser devuelta como 
resultado:

	coordenadainicio#		n% 		Da como resulado

	Coordenada X lgica      		0   		Coordenada X fsica
	Coordenada Y lgica      		1    		Coordenada Y fsica
	Coordenada X fsica      		2    		Coordenada X lgica
	Coordenada Y fsica     	 	3    		Coordenada Y lgica

	Ejemplo:

	'Este ejemplo requiere un adaptador de grficos que 
	sea compatible
    	'con el modo de pantalla 1.
	SCREEN 1
 	WINDOW SCREEN (0, 0)-(100, 100)
 	PRINT "X lgica=50, X fsica="; PMAP(50, 0)
 	PRINT "Y lgica=50, Y fsica="; PMAP(50, 1)


TUT.5.9. POINT, funcin

	Devuelve las coordenadas actuales del cursor de grficos o el atributo de 
color del pixel especificado.
POINT {(n%) | (x%,y%)}

	 (n%): indica el tipo de coordenadas que ser devuelto como 
resultado:

	n%		Da como resultado

	0     		La coordenada X fsica actual (marco de visualizacin)
	1     		La coordenada Y fsica actual (marco de visualizacin)
        	2     		La coordenada X lgica actual
           	3     		La coordenada Y lgica actual

	 (x%,y%): las coordenadas del pixel cuyos colores sern verificados 
por POINT. Si las coordenadas estn fuera de la ventana actual, POINT 
regresar como resultado -1.

	Ejemplo:

    	'Este ejemplo requiere un adaptador de grficos a 
	color.
    	SCREEN 1
    	LINE (0, 0)-(100, 100), 2
    	LOCATE 14, 1
    	FOR y% = 1 TO 10
   	  FOR x% = 1 TO 10
   	    PRINT POINT(x%, y%);
   	  NEXT x%
   	  PRINT
    	NEXT y%


TUT.5.10. PRESET y PSET, instrucciones

	Trazan el punto especificado en la pantalla.

PRESET [STEP] (x!,y!) [,color%]
PSET [STEP] (x!,y!) [,color%]

	 STEP: especifica que x! e y! sern expresados con relacin a la 
posicin actual del cursor de grficos.
	 (x!,y!): las coordenadas de pantalla del pixel que ser establecido.
	 color%: un atributo de color que establece el color del pixel. Si se 
omite color%, PRESET usar el color de fondo actual y PSET usar el color de 
primer plano actual.

	Los atributos de color disponibles dependern del adaptador de grficos 
y del modo de pantalla. Los valores de las coordenadas dependern del 
adaptador de grficos, el modo de pantalla y las instrucciones VIEW y WINDOW 
ms recientes.

	Ejemplo:

  	'Este ejemplo requiere un adaptador de grficos a 
	color.
    	SCREEN 1
	FOR i% = 0 TO 320
    	  PSET (i%, 100)
       FOR delay% = 1 TO 100: NEXT delay%
    	  PRESET (i%, 100)
	NEXT i%


TUT.5.11. SCREEN, instruccin

	Establece el modo de pantalla y otras caractersticas de la pantalla.

SCREEN modo% [,[cambiocolor%] [,[pginactiva%] 
[,pginavisual%]]]

	 modo%: establece el modo de pantalla.
	 cambiocolor%: un valor (0  1) que cambia entre el modo de colores 
y el modo monocromtico (modos 0 y 1 solamente):

	Modo		Valor			Efecto

        	0       		Cero          		Desactiva colores
          	0       		No cero     		Activa color
          	1       		Cero           		Activa color
       	1       		No cero     		Desactiva color

	 pginactiva%: la pgina de pantalla en la que se escribe la 
informacin de salida de texto o grficos.
	 pginavisual%: la pgina de pantalla presentada actualmente en el 
monitor.

	Ejemplo:

	'Este ejemplo requiere un adaptador de grficos a 
	color.
    	SCREEN 1        'grficos 320 x 200
    	LINE (110, 70)-(190, 120), , B
    	LINE (0, 0)-(320, 200), 3, , &HFF00

	 Nota: Ver en este mismo Captulo la seccin de modos de pantalla.


TUT.5.12. VIEW, instruccin

	Define el tamao y la posicin de un marco de visualizacin (viewport) en 
donde se pueden presentar grficos en la pantalla.

VIEW [[SCREEN] (x1!,y1!)-(x2!,y2!) [,[color%] [,bordes%]]]

	 SCREEN: especifica que las coordenadas se situen con relacin a la 
pantalla y no con el marco de visualizacin.
	 (x1!,y1!)-(x2!,y2!): las coordenadas de las esquinas 
diagonalmente opuestas del marco de visualizacin.
	 color%: un atributo de color que establece el color de relleno del 
marco de visualizacin.
	 bordes% : un atributo de color que establece el color de los bordes del 
marco de visualizacin.

	Si se omiten todos los argumentos, la pantalla completa ser el marco de 
visualizacin.

	Los atributos de color disponibles dependern del adaptador de grficos 
y del modo de pantalla establecido mediante la ms reciente instruccin 
SCREEN.

	Ejemplo:

  	'Este ejemplo requiere un adaptador de grficos a 
	color.
    	SCREEN 1
    	VIEW (10, 10)-(300, 180), , 1
 	LOCATE 1, 11: PRINT "Un marco de visualizacin de 
	grficos grande";
    	VIEW SCREEN (80, 80)-(200, 125), , 1
  	LOCATE 11, 11: PRINT "Un marco de visualizacin de 
	grficos pequeo";


TUT.5.13. WINDOW, instruccin	
	Define las dimensiones lgicas de la ventana de grficos actual. Utilizar
la instruccin WINDOW para definir mi propio sistema de coordenadas para el 
marco de visualizacin.

WINDOW [[SCREEN] (x1!,y1!)-(x2!,y2!)]

	 SCREEN: invierte la direccin cartesiana normal de las coordenadas de 
pantalla de manera que los valores aumentan desde la parte superior de la 
pantalla hasta la parte inferior.
	 (x1!,y1!): coordenadas lgicas que corresponden a las 
coordenadas de pantalla superior izquierda del viewport.
	 (x2!,y2!): coordenadas lgicas que corresponden a las 
coordenadas de pantalla inferior derecha del marco de visualizacin.

	WINDOW sin argumentos desactiva el sistema de coordenadas lgicas.
	
	Utilicemos la instruccin VIEW si deseamos cambiar el tamao de la 
ventana.

	Ejemplo:

   	'Este ejemplo requiere un adaptador de grficos a 
	color.
    	SCREEN 1
	FOR i% = 1 TO 10 STEP 2
    	  WINDOW (-160 / i%, -100 / i%)-(160 / i%, 100 / i%)
    	  CIRCLE (0, 0), 10
 	NEXT i%

TUT.5.14. DRAW, instruccin

	Dibuja un objeto.

DRAW cadenacomando$

	 cadenacomando$: una expresin de cadena que contiene uno o ms 
de los comandos DRAW:

	 Comandos para trazar lneas y movimientos del cursor:

	D[n%]         		Mueve el cursor hacia abajo n% unidades.
        	E[n%]            	Mueve el cursor hacia arriba y hacia la derecha
                         		n% unidades.
        	F[n%]            	Mueve el cursor hacia abajo y hacia la derecha
                         		n% unidades.
        	G[n%]            	Mueve el cursor hacia abajo y hacia la izquierda
                         		n% unidades.
        	H[n%]            	Mueve el cursor hacia arriba y hacia la izquierda
                         		n% unidades.
        	L[n%]            	Mueve el cursor hacia la izquierda n% unidades.
        	M[{+|-}]x%,y%    	Mueve el cursor al punto x%,y%. Si x% va precedido
                         		de + o -, mover el cursor con relacin al punto
				actual.
        	R[n%]            	Mueve el cursor hacia la derecha n% unidades.
        	U[n%]            	Mueve el cursor hacia arriba n% unidades.
        	[B]              		Prefijo optativo que mueve el cursor sin dibujar.
        	[N]              		Prefijo optativo que dibuja y devuelve el cursor
                         		a su posicin original.

  	 Comandos de color, rotacin y escala:
        
	An%              		Rota un objeto n% 90 grados (n% puede ser 0, 1,
                         		2  3).
        	Cn%              		Establece el color para dibujar (n% es un atributo
                         		de color).
        	Pn1%,n2%         	Establece los colores de relleno y bordes de un
                         		objeto (n1% es el atributo de color de relleno, n2%
                         		es el atributo de color de bordes).
        	Sn%              		Determina la escala de dibujo estableciendo la
                         		longitud de una unidad de movimiento del cursor. 	
			El valor predeterminado para n% es 4, el equivalente
                         		de un pixel.
        	TAn%             	Rota un ngulo n% grados (de -360 a +360).

	Si se omite n% de los comandos para trazar lneas y mover el cursor, el 
cursor se mover 1 unidad.
	
	Para ejecutar una subcadena del comando DRAW desde una cadena del 
comando DRAW, utilicemos el comando "X":

      	DRAW "X"+ VARPTR$(cadenacomando$)

	Ejemplo:

    	'Este ejemplo requiere un adaptador de grficos en 
	'color.
    	SCREEN 1
    	Tringulo$ = "F60 L120 E60"
    	DRAW "C2 X" + VARPTR$(Tringulo$)
    	DRAW "BD30 P1,2 C3 M-30,-30"



TUT.6. Instrucciones y comandos del sistema DOS en 
BASIC
TUT.6.1. CHDIR, MKDIR, RMDIR y FILES, instrucciones

	CHDIR cambia el directorio predeterminado de una unidad de disco. 
MKDIR crea un subdirectorio. RMDIR elimina un subdirectorio. FILES muestra 
el contenido del directorio en uso o del directorio especificado.

CHDIR ruta$
MKDIR ruta$
RMDIR ruta$
FILES [archivo$]

	 ruta$: la ruta de acceso al nuevo directorio predeterminado, al 
subdirectorio que se va a crear o eliminar.
	 archivo$: un nombre de archivo o ruta de acceso (puede incluir una 
unidad y comodines de MS-DOS ). Si no se especifica archivo$, FILES 
presentar todos los archivos que hay en el directorio actual.

	Ejemplo:

    	MKDIR "C:\TEMP\TEST"
    	CHDIR "C:\TEMP"
    	FILES
	RMDIR "TEST"


TUT.6.2. KILL, instruccin

	Elimina archivos del disco.			

KILL archivo$

	 archivo$: identifica el archivo o los archivos que sern eliminados. 
Podemos incluir una ruta de acceso y los comodines DOS.

	Ejemplo:

    	INPUT "Archivo que ser eliminado: "; f$
    	KILL f$


TUT.6.3. NAME, instruccin

	Cambia el nombre de un archivo o directorio.

NAME viejo$ AS nuevo$

	 viejo$ y nuevo$ : el nombre de un archivo existente y el nombre 
nuevo del archivo. Cada nombre puede incluir una ruta de acceso.

	Ejemplo:

   	INPUT "Nombre existente: "; ViejoFN$
    	INPUT "Nombre nuevo: "; NuevoFN$
    	NAME ViejoFN$ AS NuevoFN$


TUT.6.4. ENVIRON, instruccin y ENVIRON$, funcin

	ENVIRON cambia o agrega una cadena de ambiente en la tabla de entor- 
no DOS. ENVIRON$ devuelve una cadena de ambiente DOS.

ENVIRON$ (variable-ambiente$)
ENVIRON$ (n%)
ENVIRON expresincadena$

	 variable-ambiente$: el nombre de una variable de ambiente de 
MS-DOS .
	 n%: especifica que ENVIRON$ devolver la ensima cadena de la tabla 
de cadenas de ambiente.
	 expresincadena$: el nombre y valor de una variable de ambiente 
de DOS (tal como path o prompt) en una de las siguientes formas:

	variable-ambiente$=cadena-ambiente$
	variable-ambiente$ cadena-ambiente$

	Los cambios realizados a travs de la instruccin ENVIRON sern 
borrados cuando se termine el programa.

	Ejemplo:

	ENVIRON "PATH=TEST"
	PRINT ENVIRON$("PATH")

TUT.6.5. DATE$, funcin e instruccin

	La funcin DATE$devuelve la fecha actual del sistema de la 
computadora. La instruccin DATE$ define la fecha actual en el sistema de la 
computadora.

DATE$
DATE$ = expresin-cadena$

	 expresin-cadena$: la fecha, en una de las siguientes formas: dd-
mm-aa, dd-mm-aaaa, dd/mm/aa, dd/mm/aaaa.

	La funcin DATE$ devuelve una cadena en la forma mm-dd-aaaa.
	Ejemplo:
    
	PRINT DATE$
    	DATE$ = "01-01-90"  'Nota: La nueva fecha del sistema 	
				'permanecer vigente hasta que
 					'usted la vuelva a cambiar.
    	PRINT "Fecha cambiada a "; DATE$


TUT.6.6. TIME$, funcin e instruccin

	La funcin TIME$ devuelve la hora actual segn el sistema de la 
computadora. La instruccin TIME$ define la hora actual en el sistema de la 
computadora.

TIME$
TIME$ = expresin-cadena$

	 expresin-cadena$: la hora, en una de las siguientes formas:
                           
	hh          	Define la hora; los minutos y
                                  	segundos cambian automticamente a 00.
         	hh:mm       	Define la hora y los minutos; los
                                  	segundos cambian automticamente a 00.
          	hh:mm:ss    	Define la hora, los minutos y los
                                 	segundos.

	La funcin TIME$ devuelve una cadena en la forma hh:mm:ss.

	Ejemplo:

    	PRINT TIME$
    	TIME$ = "08:00:58" 'Nota: La nueva hora del sistema 	
			    'permaner vigente hasta que 
				    'la vuelva a cambiar.
 	PRINT "Hora cambiada a "; TIME$


TUT.7. Instrucciones de Entrada/Salida de archivos
TUT.7.1. CLOSE, instruccin

	Cierra uno o ms archivos o dispositivos abiertos.

CLOSE [[#]numarchivo%[,[#]numarchivo%]...]

	 numarchivo%: el nmero de un archivo o dispositivo abierto.

	CLOSE sin argumentos cerrar todos los archivos y dispositivos abiertos.

	Ejemplo:

    	CLS
    	INPUT "Escriba el nombre del archivo: ", n$
    	OPEN n$ FOR OUTPUT AS #1
    	PRINT #1, "Esto se guarda en el archivo."
    	CLOSE
    	OPEN n$ FOR INPUT AS #1
    	INPUT #1, a$
    	PRINT "Leer el archivo: "; a$
    	CLOSE


TUT.7.2. EOF, funcin

	Verifica si se ha llegado al final de un archivo. EOF da como resultado
verdadero (no cero) si se ha llegado al final de un archivo.

EOF(numarchivo%)

	 numarchivo%: el nmero de un archivo abierto.

	Ejemplo:

    	CLS
    	OPEN "TEST.DAT" FOR OUTPUT AS #1
    	FOR i% = 1 TO 10
    	  WRITE #1, i%, 2 * i%, 5 * i%
    	NEXT i%
    	CLOSE #1
    	OPEN "TEST.DAT" FOR INPUT AS #1
    	DO
    	  LINE INPUT #1, a$
    	  PRINT a$
    	LOOP UNTIL (EOF(1))
TUT.7.3. FILEATTR, funcin

	Devuelve informacin acerca de un archivo abierto.

FILEATTR(numarchivo%,atributo%)

	 numarchivo%: el nmero de un archivo abierto.
	 atributo%: especifica el tipo de informacin que dar. Si 
abributo% es 1, FILEATTR devolver un valor que indica el modo de acceso 
del archivo:

		Valor		Modo

                     	1       	Entrada
                    	2       	Salida
                     	4       	Aleatorio
                     	8       	Anexado
                     32         		Binario

	Si atributo% es 2, FILEATTR devolver los identificadores de archivos 
de DOS.

	Ejemplo:

	OPEN "TEST.DAT" FOR BINARY AS #1	
	PRINT FILEATTR(1, 1)
    	CLOSE


TUT.7.4. FREEFILE, funcin

	Devuelve el siguiente nmero de archivo vlido que est disponible.

FREEFILE

	Ejemplo:

	OPEN "TEST.DAT" FOR OUTPUT AS #1
    	PRINT "Siguiente nmero de archivo: "; FREEFILE
    	CLOSE


TUT.7.5. GET (Archivos) y PUT (Archivos), instrucciones

	GET lee informacin de un archivo colocndola en un buffer de acceso 
aleatorio  o en  una  variable.  PUT  escribe  una  variable  o  un buffer de acceso 
aleatorio en un archivo.

GET [#]numarchivo%[,[numregistro&][,variable]]
PUT [#]numarchivo%[,[numregistro&][,variable]]

	 numarchivo%: el nmero de un archivo abierto.
	 numregistro&: para archivos de acceso aleatorio, es el nmero del 
registro que ser ledo o escrito. Para archivos binarios la posicin de byte 
donde se inicia el proceso de leer o escribir.
	 variable: para GET, es una variable utilizada para recibir 
informacin del archivo. Para PUT, una variable que contiene la informacin de 
salida que ser escrita en el archivo. variable, generalmente, tiene el tipo de 
datos definido por el usuario.

	Ejemplo:

	TYPE RegistroPrueba
	  Alumno AS STRING * 20
       Nota AS SINGLE
 	END TYPE
 	DIM MiClase AS RegistroPrueba
 	OPEN "FINAL.DAT" FOR RANDOM AS #1 LEN = LEN(MiClase)
 	MiClase.Estudiante = "SabineCse"
 	MiClase.Nota = 99
 	PUT #1, 1, MiClase
 	CLOSE #1
 	OPEN "FINAL.DAT" FOR RANDOM AS #1 LEN = LEN(MiClase)
 	GET #1, 1, MiClase
 	PRINT "ESTUDIANTE:", MiClase.Alumno
 	PRINT "NOTA:", MiClase.Nota
 	CLOSE #1
 	KILL "FINAL.DAT" 


TUT.7.6. INPUT$, funcin

	Devuelve una cadena de caracteres leda desde el archivo especificado.

INPUT$(n[,[#]numarchivo%])

	 n: el nmero de caracteres (bytes) que sern ledos.
	 numarchivo%: el nmero de un archivo abierto. Si numarchivo% se 
omite, INPUT$ leer desde el teclado.

	Ejemplo:

	OPEN "TEST.DAT" FOR OUTPUT AS #1
    	PRINT #1, "El texto"
    	CLOSE
    	OPEN "TEST.DAT" FOR INPUT AS #1
  	PRINT INPUT$(3,1) 'Imprime los 3 primeros caracteres.
    	CLOSE


TUT.7.7. LOC, funcin

	Devuelve la posicin actual dentro de un archivo.

LOC(numarchivo%)

	 numarchivo%: el nmero de un archivo o dispositivo abierto.

	Para archivos binarios, LOC devuelve la posicin del ltimo byte ledo o 
escrito; para archivos de acceso aleatorio, LOC devuelve el nmero del ltimo 
registro ledo o escrito en el archivo; para archivos secuenciales, LOC devuelve 
la posicin actual del byte en el archivo, dividido por 128.

	Ejemplo:

    	OPEN "TEST.DAT" FOR RANDOM AS #1
    	FOR i% = 1 TO 10
   	PUT #1, , i%
    	NEXT i%
    	SEEK #1, 2
    	GET #1, , i%
	PRINT "Datos: "; i%; " Registro actual: "; LOC(1); " 
	Siguiente: "; SEEK(1)


TUT.7.8. LOCK y UNLOCK, instrucciones

	LOCK limita o impide el acceso a un archivo mediante un proceso de red. 
UNLOCK cancela las limitaciones impuestas por la ltima instruccin LOCK.

LOCK [#]numarchivo% [,{registro& | [inicio&] TO fin&}]
UNLOCK [#]numarchivo% [,{registro& | [inicio&] TO fin&}]

	 numarchivo%: el nmero de un archivo abierto.
	 registro&: para archivos de acceso aleatorio, el nmero del registro 
que ser bloqueado, con relacin al primer registro del archivo. Para archivos 
binarios, el nmero del byte que ser bloqueado, con relacin al primer byte del 
archivo.
	 inicio& y fin&: los nmeros del primer y ltimo registro o byte en 
una serie de registros o bytes que sern bloqueados o desbloqueados.

	Para archivos secuenciales, LOCK y UNLOCK afectan a todo el archivo.

	Ejemplo:

    	'Este ejemplo slo funcionar en una red.
	OPEN "TEST.DAT" FOR RANDOM AS #1
	FOR i% = 1 TO 10
    	  PUT #1, , i%
	NEXT i%
	LOCK #1, 2         'Bloquear registro 2.
	GET #1, 2, i%
	UNLOCK #1, 2       'Desbloquear registro 2.


TUT.7.9. LOF, funcin

	Devuelve la longitud de un archivo en bytes.

LOF(numarchivo%)

	 numarchivo%: el nmero de un archivo abierto.

	Ejemplo:

    	INPUT "Escriba el nombre del archivo: "; f$
    	OPEN f$ FOR BINARY AS #1
    	PRINT "Longitud del archivo = "; LOF(1)
    	CLOSE


TUT.7.10. OPEN, instruccin

	Abre un archivo o dispositivo.

OPEN archivo$ [FOR modo] [ACCESS acceso] [bloqueo] AS 
[#]numarch% [LEN=longreg%

	 archivo$: el nombre del archivo o dispositivo. El nombre puede 
incluir una unidad de disco y ruta de acceso.
	 modo: uno de los siguientes modos de archivo: APPEND, BINARY 
INPUT, OUTPUT o RANDOM. (Vase OPEN COM para la aclaracin de cada uno de 
ellos).
	 acceso: en una red, especifica si el archivo ser abierto con el tipo de 
acceso READ, WRITE o READ WRITE:
	
	Tipo de acceso		Accin

	READ			Abre un archivo para lectura solamente.
	WRITE         		Abre un archivo para escritura solamente.	
	READ WRITE    	Abre un archivo para lectura y escritura. 

	El modo READ WRITE es vlido slo para archivos que tengan el modo 
binario o de acceso aleatorio, y para archivos abiertos con el modo APPEND 
(acceso secuencial).

	 bloqueo: especifica el estado de bloqueo de archivos en una red: 
SHARED, LOCK READ, LOCK WRITE, LOCK READ WRITE.
	 numarch%: un nmero entre 1 y 255 que identifica el archivo mientras 
est abierto.
	 longreg%: para archivos de acceso aleatorio, la longitud de registro 
(el valor predeterminado es 128 bytes). Para archivos secuenciales, el nmero 
de caracteres en buffer (el valor predeterminado es 512 bytes).

	Ejemplo:

    INPUT "Escriba el nombre del archivo: "; n$
    OPEN n$ FOR OUTPUT AS #1
    PRINT #1, "Esto se guarda en el archivo."
    CLOSE
    OPEN n$ FOR INPUT AS #1
    INPUT #1, a$
    PRINT "Leer del archivo: "; a$
    CLOSE


TUT.7.11. SEEK, funcin y SEEK, instruccin

	La funcin SEEK devuelve la posicin actual del archivo. La instruccin 
SEEK establece la posicin del archivo para la siguiente accin de leer o escribir.

SEEK(numarchivo%)
SEEK [#]numarchivo%, posicin&

	 numarchivo%: el nmero de un archivo abierto.
	 posicin&: la posicin donde ocurrir la siguiente accin de leer o 
escribir. Para archivos de acceso aleatorio, un nmero de registro. Para otros 
archivos, la posicin de byte con relacin al principio del archivo. El primer 
byte ocupa la posicin 1.

	Ejemplo:

    	OPEN "TEST.DAT" FOR RANDOM AS #1
    	FOR i% = 1 TO 10
    	  PUT #1, , i%
    	NEXT i%
    	SEEK #1, 2
	GET #1, , i%
 	PRINT "Datos: "; i%; " Registro actual: "; LOC(1); " 
	Siguiente: "; SEEK(1)


TUT.7.12. WRITE, instruccin

	Escribe datos en la pantalla o en un archivo secuencial.

WRITE [[#]numarchivo%,] listaexpresiones

	 numarchivo%: el nmero de un archivo secuencial abierto. Si se 
omite el nmero de archivo, WRITE escribir en la pantalla.
	 listaexpresiones: una o ms variables o expresiones, separadas 
con comas, cuyos valores sern escritos en la pantalla o en un archivo.

	WRITE inserta comas entre los datos y comillas alrededor de cadenas 
mientras los escribimos. 
	WRITE escribe valores en un archivo en una forma que puede ser leda 
por la instruccin INPUT.

	Ejemplo:

    	CLS
    	OPEN "LISTA" FOR OUTPUT AS #1
    	DO
    	  INPUT "   NOMBRE:       ", Nombre$
	  INPUT "   EDAD:        ", Edad$
       WRITE #1, Nombre$, Edad$
    	  INPUT "Agregue otros datos"; R$
 	LOOP WHILE UCASE$(R$) = "Y"
 	CLOSE #1
 	'Imprime el archivo en la pantalla.
 	OPEN "LISTA" FOR INPUT AS #1
 	CLS
 	PRINT "Datos en archivo:": PRINT
 	DO WHILE NOT EOF(1)
    	  INPUT #1, Reg1$, Reg2$   'Lee datos del archivo.
  	  PRINT Reg1$, Reg2$       'Imprime los datos en la 	  
pantalla.
 	LOOP
 	CLOSE #1
 	KILL "LISTA"


TUT.7.13. FIELD, instruccin

	Asigna espacio para variables en un buffer de archivo de acceso 
aleatorio.

FIELD [#]numarchivo%, anchocampo% AS variablecadena$ 
[,anchocampo% AS variablecadena$] ...

	 numarchivo%: el nmero de un archivo abierto.
	 anchocampo%: el nmero de caracteres en el campo.
	 variablecadena$: una variable que identifica el campo y contiene 
datos para el campo.

	Las variables de registro generalmente constituyen una mejor manera de 
manejar los datos de registros.

	Ejemplo:

    	OPEN "FILEDAT.DAT" FOR RANDOM AS #1 LEN = 80
    	FIELD #1, 30 AS nombre$, 50 AS direccin$



1

1

