fundamentos de programacion fortran
DESCRIPTION
LENGUAJE FORTRANTRANSCRIPT
PROGRAMACIÓN APLICADA A SISTEMAS ELÉCTRICOS DE POTENCIA FERNANDO TOLEDO2
1
APENDICE
FUNDAMENTOS DE PROGRAMACION EN FORTRAN
La codificación de algúnos de los programas presentados en este artículo, como ya se señaló, están en
lenguaje FORTRAN. El compilador empleado es el Microsoft FORTRAN versión 5.1, por lo que el empleo
de alguna otra versión requerirá la consulta de su respectivo manual, debido a que algunos de los comandos
aquí presentados pueden no incluirse en dicha versión y con ello marcar errores de codificación.
A continuación se presentan los operadores que se emplean en este lenguaje:
Operadores Aritméticos.
** Exponenciación.
- Aectación negativa.
* Multiplicación.
/ División.
+ Adición.
- Sustracción.
Operadores Lógicos.
.AND. Conjunción.
.NOT. Negación.
.OR. Disyunción.
.EQV. Equivalencia lógica.
.NEQV. No equivalencia lógica.
Operadores Racionales.
.LT. Menor que.
.LE. Menor o igual que.
.EQ. Igual que.
.NE. Diferente de.
.GT. Mayor que.
.GE. Mayor o igual que.
Operador de Asignación.
= Asigna o reemplaza.
Variables.
Los nombres de las variables deben ser de 1 a 6 caracteres. El primer caracter debe ser alfabético. Si no
se expresa el tipo de variable mediante un estatuto IMPLICIT, todas las variables que inicien con las letras I,
J, K, L, M, y N son tipo INTIGER*2 ó INTIGER*4 dependiendo de la asignación dada por el metacomando
$STORAGE; las variables iniciadas con las letras A-H ú O-Z se tomarán como tipo REAL.
Tipo de Dato
INTEGER*2 Entero desde -32767 hasta +32767
INTEGER*4 Entero desde -2147’483,647 hasta +2147’483,647
REAL Variable tipo punto flotante (de 1 a 7 dígitos) desde
8.43E-37 hasta 3.37E+38 (REAL*4).
PROGRAMACIÓN APLICADA A SISTEMAS ELÉCTRICOS DE POTENCIA FERNANDO TOLEDO2
2
DOUBLE
PRECISION
Variable tipo punto flotante (de 1 a 16 dígitos) desde
4.19D-307 hasta 1.67D+308 (REAL*8)
LOGICAL
(2 o 4 bytes)
Valores de la tabla de verdad: .TRUE. (verdadero) y
.FALSE. (falso) (LOGICAL*2 o LOGICAL*4)
CHARACTER*n Una cadenas que contiene no más de 127 caracteres
COMPLEX
(8 bytes)
Un par ordenado de números reales de simple
precisión, donde la segunda componente representa la
parte imaginaria (COMPLEX*8).
DOUBLE COMPLEX
(16 bytes)
Número complejo con numeros reales de doble
procisión (COMPLEX*16)
Descriptores de Formato de Campo.
Son utilizados para definir la presentación del contenido de una variable previamente especificada.
Iw[[.m Valores enteros.
Zw Valores hexadecimales.
Fw.d Valores reales.
Ew.d[[Ee Valores reales con exponente.
Gw.d[[Ee Valores reales de rango extendido.
Dw.d Valores reales de doble precisión.
Lw Valores lógicos.
A[[w Valores tipo caracter.
Notas.- w representa el número de espacios que ocupará el valor de la variable,
m representa el número de cifras a la izquierda del punto,
d representa el número de dígitos a la derecha del punto decimal.
e representa el exponente.
Funciones Intrínsecas.
Nombre Definición Tipo de
Argumentos
Tipo de valores de
Función
Conversión Convierte el contenido de la
variable a:
INT (arg) INTEGER (todos) INTIGER
REAL (arg) REAL*4 (todos) REAL*4
FLOAT(I) REAL*4 INTEGER REAL*4
SNGL(X) REAL*4 REAL*8 REAL*4
DBLE(arg) [3 REAL*8 (todos) REAL*8
CMPLX(Z,[Y)[4 COMPLEX*8 (todos) COMPLEX*8
DCMPLX(Z,[Y) COMPLEX*16 (todos) COMPLEX*16
ICHAR(C) [5 INTEGER CHARACTER INTEGER
CHAR(X) [5 CHARACTER INTEGER CHARACTER
Truncación
AINT(arg) Trunca un número REAL REAL*4
REAL*8
REAL*4
REAL*8
Valor absoluto
ABS (arg) arg (Todos) (Todos)
CABS(Z) Obtiene la magnitud del
número complejo Z
COMPLEX*8
COMPLEX*16
REAL*4
REAL*8
Residuo
MOD(arg1,arg2) Proporciona el residuo del INTEGER INTEGER
PROGRAMACIÓN APLICADA A SISTEMAS ELÉCTRICOS DE POTENCIA FERNANDO TOLEDO2
3
cosciente arg1/arg2 REAL*4
REAL*8
REAL*4
REAL*8
Diferencia positiva [5
DIM(arg1,arg2) arg1-Mínino de arg1 y arg2 INTEGER
REAL*4
REAL*8
INTEGER
REAL*4
REAL*8
Conjugado de un Complejo
CONJG(Z) Regresa X - jY de X + jY COMPLEX*8 COMPLEX*8
DCONJG(Z) Regresa X - jY de X + jY COMPLEX*16 COMPLEX*16
Parte real de un complejo
DREAL(Z) COMPLEX*16 REAL*8
REAL (Z) COMPLEX*8
COMPLEX*16
REAL*4
Parte imaginaria de un complejo
IMAG (Z) COMPLEX*8
COMPLEX*16
REAL*4
REAL*8
Raiz cuadrada
SQRT(arg)
REAL*4
REAL*8
COMPLEX*8
COMPLEX*16
REAL*4
REAL*8
COMPLEX*8
COMPLEX*16
Exponencial
EXP(arg)
earg
REAL*4
REAL*8
COMPLEX*8
COMPLEX*16
REAL*4
REAL*8
COMPLEX*8
COMPLEX*16
Logaritmo natural
LOG(arg)
ln (arg)
REAL*4
REAL*8
COMPLEX*8
COMPLEX*16
REAL*4
REAL*8
COMPLEX*8
COMPLEX*16
Logaritmo de base 10
LOG10(arg)
log10 (arg)
REAL*4
REAL*8
COMPLEX*8
COMPLEX*16
REAL*4
REAL*8
COMPLEX*8
COMPLEX*16
Seno
SIN(arg)
REAL*4
REAL*8
COMPLEX*8
COMPLEX*16
REAL*4
REAL*8
COMPLEX*8
COMPLEX*16
Coseno
COS(arg)
REAL*4
REAL*8
COMPLEX*8
COMPLEX*16
REAL*4
REAL*8
COMPLEX*8
COMPLEX*16
Tangente
TAN(arg) REAL*4
REAL*8
REAL*4
REAL*8
Arco seno
ASIN(arg) REAL*4
REAL*8
REAL*4
REAL*8
Arco coseno
ACOS(arg) REAL*4
REAL*8
REAL*4
REAL*8
Arco tangente
PROGRAMACIÓN APLICADA A SISTEMAS ELÉCTRICOS DE POTENCIA FERNANDO TOLEDO2
4
ATAN(arg) REAL*4
REAL*8
REAL*4
REAL*8
ATAN2(X,Y) arctan (X/Y) REAL*4
REAL*8
REAL*4
REAL*8
Seno hiperbólico
SINH(arg) REAL*4
REAL*8
REAL*4
REAL*8
Coseno
hiperbólico
COSH(arg) REAL*4
REAL*8
REAL*4
REAL*8
Tangente hiperbólica
TANH(arg) REAL*4
REAL*8
REAL*4
REAL*8
Lista de instrucciones contenidas en el Microsoft FORTRAN.
NOTA.- [[ arg indican de que arg es opcional.
I/O Entrada-Salida
ALLOCATE (arreglo ([[l: u[[,[[l: u... )[[,STAT = ierr )...
Dimenciona dinámicamente un arreglo que a sido previamente declarado con el atributo ALLOCATA-
BLE.
arreglo Nombre del arreglo.
ierr Variable entera que regresa el estado del tamño del arreglo.
l Expresión entera que ajusta el límite más bajo de el arreglo.
u Expresión entera que ajusta el límite más alto de el arreglo.
ASSIGN etiqueta TO variable
Asigna el valor de un número de etiqueta o formato a una variable entera.
etiqueta Es el formato o número de etiqueta. La etiqueta se mostrará en el mismo programa.
variable Variable entera.
AUTOMATIC[[nombres
Declara la especificación de variables en la locación de memoria estática.
nombres Lista de variables o nombres de arreglos. Si son más de una variable, éstas deben de
separarse por comas.
BACKSPACE{archivo ó
([[UNIT=archivo
[[,ERR=errlabel
[[,IOSTAT=iocheck )}
Posiciona al archivo especificado en el inicio para su escritura.
archivo Expresión entera que especifica la unidad externa. Si archivo no es abierto, ocurre
un error.
errlabel Etiqueta de una instrucción ejecutable que debe estar en el mismo programa. Si
errlabel es especificado, un error I/O transfiere el control hasta la etiqueta errlabel.
Si es omitido, un error de I/O se determina con la presencia o ausencia de iocheck.
iocheck Variable entera, arreglo de elementos, o estructura de elementos que regresan un
valor de cero si no ocurrió un error, o el número de error si éste ocurrió.
BLOCK DATA [[nombre del subprograma
Identifica el bloque de datos de un subprograma, donde variables y arreglos de elementos deben ser
inicializados.
PROGRAMACIÓN APLICADA A SISTEMAS ELÉCTRICOS DE POTENCIA FERNANDO TOLEDO2
5
El nombre no será similar a ninguno de los nombres de variabes locales o arreglo de elementos definidos
en el subprograma, y además será distinto a los nombres dados en el programa principal, procedimientos
externos, bloques comunes o cualquier otro subprograma.
CALL nom_sub [[args
Invoca una subrutina.
nom_sub Nombre de la subrutina.
args Uno o más argumentos.
Si son más de un argumento, estos se separan con comas.
CASE (lista de expresiones)
Comienza un bloque de instrucciones que se ejecuta si la expresión de prueba es igual a uno de los
valores de la lista de expresiones. Deben estar dentro del bloque del SELECT CASE.
CASE DEFAULT Comienza un bloque de instrucciones que es ejecutado si la expresión de prueba no es ninguno de
los valores de los listados CASE de el bloque del SELECT CASE.
CLOSE ([[UNIT=archivo
[[,ERR=errlabel
[[,IOSTAT=iocheck
[[,STATUS=estado )
Cierra el archivo y previene subsecuentes lecturas y escrituras dirigidas a ese archivo.
archivo Expresión entera que especifica la unidad externa. No ocurre error si la unidad no
es abierta.
errlabel Ver BACKSPACE.
iocheck Ver BACKSPACE.
estado Expresión de caracteres que pueden ser ‘KEEP’ ó ‘DELETE’. En archivos
temporales está predeterminado STATUS=‘DELETE’, con lo cual se borra el
archivo. El colocar STATUS=‘KEEP’ ocasionará un error. En los demás archivos,
está predeterminado STATUS=’KEEP’.
COMMON [[/[[cname[[ [attrs /nlist[[ [[,/[[cname[[ [attrs /nlist...
Permite a dos o más unidades o subprogramas accesar para lectura y/o modificar datos almacenados en
grupos de variables, a su ves definidos mediante un bloque con nombre.
CONTINUE No tiene ningún efecto.Se usa como un punto de referencia para un número de etiqueta,
particularmente como la etiqueta terminal de un ciclo DO ó DO WHILE.
CYCLE Control de regreso para el comienzo de un ciclo DO ó DO WHILE.En una instrucción del ciclo DO,
la variable es incrementada, En una instrucción del ciclo DO WHILE la expresión lógica es reevaluada.
DATA nlist
Asigna valores iniciales a variables. El nlist es una lista de variables, arreglo de elementos, arreglo
de nombres, subhilera de nombres , y listas implicando al ciclo DO separadas por comas.
DEALLOCATE arraylist
Libera el espacio previamente recervado en la instrucción ALLOCATE.
DIMENSION arreglo[[ [attrs ({[[lower: upper :} [[, {[[lower: upper :}... )
Especifica el nombre de un arreglo y define el número de elementos en el arreglo.
arreglo Nombre del arreglo. Más de un arreglo pueden ser declarados con la instrucción
DIMENSION. Los nombres se separarán con comas.
PROGRAMACIÓN APLICADA A SISTEMAS ELÉCTRICOS DE POTENCIA FERNANDO TOLEDO2
6
attrs Una lista de atributos separados por comas. El attrs describe a arreglo. Los
siguientes atributos podrán ser usados con el arreglo: ALIAS, ALLOCATABLE, C,
EXTERN, FAR, HUGE, NEAR, PASCAL, REFERENCE, VALUE.
lower Es el límite inferior, el cual puede ser positivo, negativo o cero. Si no es
especificado, se tomará como 1.
upper Es el límite superior., el cual puede ser positivo, negativo, cero o asterizco. Este
debe ser mayor o igual que lower.
DO [[label[[, variable=v_ini,v_fin[[,inc
Evalua el listado de la instrucción DO repetidamente ya sea hasta la instrucción etiquetada con el
número label o la instrucción END DO. Si inc (incremento) no es especificado, su valor por defecto es +1. La
ejecución se detiene cuando variable excede el valor v_fin. Si inc es negativo, la ejecución termina cuando
variable es menor que v_fin.
DO label WHILE (expresión lógica)
Repite el bloque de instrucciones acotado por la etiqueta con el número label, mientras la expresión
lógica sea verdadera. Si label no es especificado, el listado se finaliza con la instrucción END DO.
ELSE Marca el inicio de un bloque ELSE.
ELSE IF (expresión) THEN
Ejecuta el bloque de instrucciones si expresión es verdadera.
END Termina la ejecución del programa principal, o la de un subprograma.
END DO Termina el listado de instrucciones de un ciclo DO o DO WHILE.
END IF Termina un bloque de instrucciones IF.
ENDFILE{archivo ó
([[UNIT=archivo
[[,ERR=errlabel
[[,IOSTAT=iocheck )}
Escribe una marca de fin de archivo para la unidad especificada.
ENTRY ename[[ [eattrs [[ ( [[formal[[ [atrrs [[, formal[[ [atrrs ... )
Especifica un valor de entrada a una subrutina o función externa.
ename Nombre del valor de entrada. Si ename es un valor de entrada para una función
definida por el usuario, ename debe de corresponder al tipo de dato para:
Las reglas preestablecidas en la determinación del tipo; ó
El tipo de dato especificado con un IMPLICIT; ó
Una declaración en la función definida por el usuario, en su sección de tipo de
declaración
eatrrs Lista de atributos, separados por comas. El eattrs describe a ename. Los siguientes
atributos pueden ser usados con ename: ALIAS, C, LOADDS, PASCAL,
VARYING.
formal Nombre de la variable, arreglo, variable estructurada ó procedimiento formal. Si
ENTRY está en una subrutina, formal puede ser una asterizco.
attrs Lista de atributos, separados por comas. El attrs describe a formal. Los siguientes
atributos pueden ser usados con formal: FAR, HUGE, NEAR, REFERENCE,
VALUE.
PROGRAMACIÓN APLICADA A SISTEMAS ELÉCTRICOS DE POTENCIA FERNANDO TOLEDO2
7
EQUIVALENCE (nlist) [[,(nlist)...
Crea dos o más variables o arreglos para ocupar el mismo espacio reservado de memoria. Las
variables enlistadas en nlist deben estar separadas por comas.
EXIT Se utiliza para salir de un ciclo DO o DO WHILE ó también del listado de una instrucción IF.
EXTERNAL name[[attrs [[,name[[attrs ...
Identifica un nombre definido por el usuario como una función o subrutina externa.
FORMAT([[listado)
Marca el formato en que será escrito un dato en la pantalla o en un archivo.
listado Lista de descriptores de formato de campo.
[[tipo FUNCTION fun[[ [fattrs ( [[formal[[ [attrs [[,formal[[ [attrs ...)
Identifica una unidad de programa como una función, y es sustituida por su nombre, tipo de dato y
parámetros opcionales formales.
tipo Declara el tipo de dato de el valor regresado por la función.
Si tipo es omitido, el tipo de función se determinará con la aplicación de IMPLICIT.
Si éste no está, el tipo será establecido por el compilador de FORTRAN. Si
IMPLICIT NONE o el metacomando $DECLARE se efectuan, el tipo de función
será dado en la declaración de la función o en una declaración tipo.
Si tipo es especificado, el nombre de la función no podrá aparecer en una
instrucción para declarar el tipo de dato.
func Nombre de la función. El nombre func no podrá aparecer en AUTOMATIC,
COMMON, DATA, EQUIVALENCE, INTRINSIC, NAMELIST ó SAVE.
fattrs Lista de atributos, separados por comas. El fattrs describe a func. Los siguientes
atributos podrán ser usados con el nombre func: ALIAS, C, FAR, NEAR, PASCAL,
VARYING.
formal Nombre de los argumentos formales. Si más de uno son especificados, deberán estar
separados por comas.
attrs Lista de atributos, separados por comas. El attrs describe a formal. Los siguientes
atributos pueden ser usados con formal: FAR, huge, NEAR, REFERENCE,
VALUE.
GOTO variable [[[[, (labels)
Transfiere la ejecución hacia donde se encuentre la etiqueta asignada a variable.
variable Variable entera. Variable tendrá que corresponder a una etiqueta de una instrucción
ejecutable dentro del mismo programa.
labels Lista de una o más etiquetas de instrucciones ejecutables dentro del mismo
programa. Si se especifican más de una etiqueta, éstas se separarán con comas.
Label podrá presentarse más de una vez en la lista.
GOTO (labels) [[, n
Transfiere el control a la instrucción con la n-ésima etiqueta de la lista.
labels Una o más etiquetas de instrucciones ejecutables dentro del mismo programa. Si son
más de una etiqueta, éstas deben ir separadas por comas.
La misma etiqueta podrá presentarse más de una vez en la lista.
n Expresión entera.
GOTO label
Transfiere el control a una instrucción etiquetada.
label Etiqueta de una instrucción ejecutable dentro del mismo programa.
IF(expresión) labels
PROGRAMACIÓN APLICADA A SISTEMAS ELÉCTRICOS DE POTENCIA FERNANDO TOLEDO2
8
Transfiere el control a una de tres etiquetas, dependiendo de el valor de expresión. Se le denomina
IF aritmético.
expresión Expresión entera o real de simple o doble precisión.
labels Tres etiquetas de instrucciones ejecutables, dentro del mismo programa,
separadas por comas. La misma etiqueta puede estar más de una vez.
Si expresión es:
< 0 Transfiere el control a la primera etiqueta.
= 0 Transfiere el control a la segunda etiqueta.
> 0 Transfiere el control a la tercera etiqueta.
IF (expresión) instrucción
Si expresión es verdadera, instrucción es ejecutada; si es falsa, el programa continua con la
siguiente instrucción. Se le denomina IF lógico.
expresión Expresión lógica.
instrucción Cualquier instrucción ejecutable exceptuando al CASE, DO, ELSE, ELSE IF, END,
END IF, END SELECT CASE, SELECT CASE, bloques IF, o cualquier IF lógico.
Nótece que la instrucción puede ser un IF aritmético.
IF (expresión) THEN
Si expresión es verdadera, el bloque IF es ejecutado; si es falso, el control se transfiere hasta
encontrar una instrucción ELSE, ELSE IF ó END IF, del mismo nivel del IF.
expresión Expresión lógica.
IMPLICIT {tipo (letters) [[, tipo (letters) ... NONE}
Define el tipo de dato de acuerdo con el nombre de la variable declarada por el usuario.
tipo Indica el tipo de dato.
letters Lista de letras y rango de letras. Si más de una letra o rango son enlistados, deben
separarse con comas. ¿Este proceso no es significativo.?
El rango de letras se indica con la primera y última letra del rango, separadas por
un signo menos. Las letras para un rango deberán estar en orden alfabético. En este
contexto, Microsoft FORTRAN define al signo “$” como un caracter alfabético que
sigue después de la letra Z.
INCLUDE ‘nombre’
Intercambia el texto de un archivo en la locación de la instrucción INCLUDE.
nombre El nombre de el archivo con texto en FORTRAN que será incluido dentro del
programa, marcado con apóstrofes.
INTERFACE TO {función subrutina}
(Listado de declaraciones para todos los argumentos del proceso formal)
END Especifica el nombre de una subrutina o función, con sus atributos y tipos de argumentos formales.
función Declaración de una instrucción FUNCTION.
subrutina Declaración de una instrucción SUBROUTINE.
INTRINSIC nombres
Declara que nombres es una función intrínseca.
nombres Uno o más nombres de funciones intrínsecas. Si más de un nombre es especificado,
éstos deben ir separados por comas.
LOCKING ([[UNIT=archivo
[[, ERR=errlabel
[[, IOSTAT=iocheck
[[, LOCKMODE=lockmode
[[, REC=rec
[[, RECORDS=recnum
Bloquea archivos de acceso directo y los marca para evitar otro uso en el ambiente de trabajo.
PROGRAMACIÓN APLICADA A SISTEMAS ELÉCTRICOS DE POTENCIA FERNANDO TOLEDO2
9
archivo Expresión entera de la unidad que será cerrada. El archivo deberá ser abierto como
un archivo de acceso directo.
lockmode Expresión tipo caracter con uno de los siguientes valores:
'NBLCK' Bloquea la región especificada para lectura y escritura. Si alguna de las
marcas está bloqueada por un proceso diferente, ocurre un error. Este
valor es el predeterminado.
'LOCK' Bloquea la región especificada para escritura y lectura. Se espera en
alguna parte de la región bloqueada para un proceso diferente que llegue
a disponerlo.
'NBRLCK' Bloquea la región especificada para lectura; puede marcarlo aún sinedo
para escritura. Este bloqueo es similar a ‘NBLCK’.
'RLCK' Bloquea la región especificada para lectura;puede marcarlo aún siendo
para escritura. Este bloqueo es similar a ‘LOCK’.
'UNLCK' Desbloquea la región especificada.
res Expresión entera que es el número de la primera marca en un grupo de marcas que
serán bloqueadas o desbloqueadas. Si rec es omitido, la siguiente marca es
bloqueada.
recnum Expresión entera que es el número de marcas que serán bloqueadas. Si es omitido se
considera igual a 1.
MAP tipo-decl
.
.
.
END MAP Delimita un grupo de tipo de declaraión de variables dentro de una instrucción STRUCTURE.
tipo-dec Declaración de variables; pueden ser algunas de tipo convencional o una
declaración RECORD de una estructura.
NAMELIST /namlst/ varlst [[/namlst/ varlst
Declara el nombre de un grupo de variables, y así poder ser escritos o leidos con una instrucción
WRITE o READ respectivamente.
namlst Nombre del grupo de variables.
varlst Lista de nombre de variables y arreglos; puede no incluir estructura de variables y
argumentos formales.
OPEN ([[UNIT= archivo
[[, ACCESS=access
[[, BLANK=blanks
[[, BLOCKSIZE=blocksize
[[, ERR=errlabel
[[, FILE=file
[[, FORM=form
[[, IOFOCUS=iofocus
[[, IOSTAT=iocheck
[[, MODE=mode
[[, RECL=recl
[[, SHARE=share
[[STATUS=status
[[TITLE=title )
Asocia el número de la unidad con un archivo externo ó
archivo Expresión entera que especifica la unidad externa.
PROGRAMACIÓN APLICADA A SISTEMAS ELÉCTRICOS DE POTENCIA FERNANDO TOLEDO2
10
access Expresión tipo caracter evaluada con ‘APPEND’, ‘DIRECT’ ó ‘SEQUENTIAL’
(este último es el predeterminado).
blanks Expresión tipo caracter que se evaluará con ‘NULL’ ó ‘ZERO’. Si es ‘NULL’ (el
predeterminado) se ignorarán los espacios (mismo que BN del editor descriptor, a
menos que sobrepase de un BZ explícito en la instrucción READ). Si es ‘ZERO’ se
rellenan los espacios con ceros (mismo que BZ del editor descriptor, a menos que
sobrepase de un BN explícito en la instrucción READ).
blocksize Expresión entera que especifica el tamaño del buffer interno para la unidad (en
dytes).
En una aplicación Windows, blocksize marca el tamaño de la pantalla del buffer.
El tamaño del buffer determina cuanto texto es guardado para la ventana. Marca el
buffer con ‘WINBUFINF’ continuamente redistribuyendo memoria para salvar todo
el texto. Si blocksize no es especificado, el buffer tomará 2048 bytes.
file Expresión tipo caracter. Si file es omitido, el compilador crea un archivo temporal
único en la unidad especificada. El archivo temporal es borrado cuando este es
cerrado ó el programa termina normalmente.
form Expresión tipo caracter que se evalua con ‘FORMATTED’, ‘UNFORMATTED’ o
‘BINARY’.
Si el acceso es secuencial, el predeterminado para form es ‘FORMATTED’, si el
acceso es directo, el predeterminado es ‘UNFORMATTED’.
iofocus Expresión lógica que especifica si una nueva ventana en Windows tendrá el enfoque
I/O. Si se omite, iofocus es .TRUE.
mode Expresión tipo caracter evaluada con ‘READ’ (los procesos serán sólo de lectura en
el archivo), ‘WRITE’ (los procesos serán solo de escritura en el archivo) ó
‘READWRITE’ (lectura y escritura en el archivo).
Si mode no es especificado, se abrirán los archivos con modo ‘READWRITE’.
recl Expresión entera que especifica el largo de cada registro en bytes. Este parámetro es
requerido para archivos de acceso directo, y es ignorado para archivos secuenciales.
share Expresión tipo caracter. Los valores aceptados de share son:
'COMPAT' Modo compatible (modo dado por DOS). Cuando un archivo es
abierto en modo compatible, el usuario original (el proceso que abre
el archivo) puede abrir el archivo en modo compatible un número
limitado de veces. Otro usuario no puede abrir el archivo.
Un archivo que haya sido abierto en otro modo, no podrá ser abierto
en modo compatible.
'DENYRW' Modo de no lectura-escritura. Mientras el archivo sea abierto en este
modo, otros procesos no podrán abrirlo.
'DENYWR' Modo de no escritura. Mientras el archivo sea abierto en este modo,
otros procesos no podrán abrirlo para escritura.
'DENYRD' Modo de no lectura. Mientras el archivo sea abierto en este modo,
otros procesos no puedrán abrirlo para lectura.
'DENYNONE' Ningún modo. (modo predeterminado por OS/2). Mientras el archivo
sea abierto en este modo, algunos procesos podrán abrirlo en
cualquier modo (excepto el modo compatible).
status Expresión tipo caracter evaluada con ‘OLD’, ‘NEW’, ‘UNKNOWN’
(predeterminado) ó ‘SCRATCH’.
PROGRAMACIÓN APLICADA A SISTEMAS ELÉCTRICOS DE POTENCIA FERNANDO TOLEDO2
11
'OLD' El archivo debe de existir. Si el archivo existe, este es abiero. En caso
contrario, ocurre un error de I/O.
Si se abre un archivo secuencial y escribes en éste o lo cierras sin
moverlo primero hasta el final de éste, se sobreescribirá en el
archivo. (Abriendo con ACCESS = ‘APPEND’ se posiciona
automáticamente al final del archivo).
'NEW' El archivo no debe de existir. Si no existe, éste es creado. En caso
contrario se produce un error de I/O.
Si se abre el archivo con la opción STATUS=‘NEW’, y se cierra con
STATUS=‘KEEP’, o si el programa terminara sin cerrar el archivo,
éste es creado permanentemente.
'SCRATCH' Crea archivos temporales, los cuales son borrados cuando son
cerrados o la ejecución del programa termina.
'UNKNOWN' Si existe el archivo lo abre, en caso contrario lo crea.
title Expresión tipo caracter que es evaluado como una cadena, con apertura en la barra
de títulos de una pequeña ventana dentro de una aplicación Windows. El título
predeterminado identifica la ventana como una unidad y da el número archivo (esto
es, TITLE=‘UNIT’ n’donde n es el número de unidades.
PARAMETER(nombre=expresión [[, nombre=expresión...)
Asigna a nombre el valor de expresión.
nombre Nombre simbólico.
expresión Una expresión. La expresión puede incluir nombres simbólicos sólo si éstos
nombres fueron definidos previamente con una instrucción PARAMETER dentro
del programa.
PAUSE [[prompt
Suspende la ejecución del programa hasta que se teclee el número o cadena de caracteres
especificados por prompt. Si no es especificado, se tomará como ENTER.
prompt Cualquier caracter o entero desde 0 hasta 99,999