INSTRUCCION CON FORMATO DE ENTRADA. SENTENCIA "READ"
-Este tipo de instrucciones no es muy potente porque sólo est n pensadas
para introducir y sacar datos. La unidad est ndar en el teclado est
denominado como un asterisco (*).
-La lectura mediante la instrucción READ se realiza con la siguiente
sintaxis:
-READ (Lista de descriptores), Lista de variables.
-La Lista de variables siempre ir separada por comas.
Con esta sintaxis la lectura se realiza del dispositivo predefinido que
puede ser uno de los siguientes:
-Constante entera (Que referencia otra sentencia).
-Variable car cter.
-Array de caracteres.
-Expresión car cter (Entre par‚ntesis y apóstrofes).
-Variable entera (Con una etiqueta FORMAT).
-Dentro de la lista de descriptores podemos encontrarnos las siguientes
opciones:
-Unidad, que sirve para que a cada dispositivo se le asigne una
unidad o un entero (Sin signo) y la palabra UNIT es opcional. Si
no se coloca UNIT debe ir en primer lugar, si se pone la palabra
reservada UNIT podr ir en otro lugar. Su sintaxis es:
- UNIT= Entero.
-Formato, en el que podr n colocarse los siguientes par metros:
-Etiqueta, asignada a la sentencia especial que ser FORMAT.
-Variable, entera a la que previamente se le halla asignado
una Etiqueta v lida.
-Expresión, de tipo cadena que contenga los códigos de los
formateos entre par‚ntesis que estar n cerrados entre unas
comillas.
-Variable o array, de caracteres a los cuales se le hallan
asignado los códigos de formato.
-Asterisco (*), que indicar una entrada sin formato.
sabiendo que el formato estar definido por la sintaxis:
- FMT= Formato.
-Número de registro, que sólo se usar en el tratamiento de los
archivos de acceso directo, donde se le indica que lea el número
relativo al registro siendo su estructura o sintaxis:
-REC=Número registro.
-Código chequeador, de la operación al cual deposita el resultado
de analizar la operación siendo su sintaxis:
-IOSTAT=Variable entera.
-Control del fin de archivo, que se especifica con la sintaxis:
-END=Etiqueta.
-Transferencia de control, que se produce cuando hay un error y
que contiene la siguiente sintaxis:
-ERR=Etiqueta.
-Si se admiten UNIT y FMT, sus correspondientes valores deber n estar
en el primer y segundo lugar de la instrucción READ respectivamente.
Los dos primeros formatos se han de usar obligatoriamente, mientras que
los otros par metros sólo se usar n para ficheros externos. Un ejemplo
de uso de esta sentencia ser¡a:
-READ (UNIT=3, FMT=20, REC=10, IOSTAT=Cod, END=100, ERR=Error).
-Si la lectura es desde teclado el fin de fichero debe ser tecleado por
el usuario con la combinación CTRL+Z.
INSTRUCCION CON FORMATO DE SALIDA. SENTENCIA "WRITE"
-Para este tipo de instrucciones nos encontramos dos formatos que est n
diferenciados:
-PRINT (Lista de descriptores), Lista de salida.
-WRITE (Lista de descriptores), Lista de salida.
-El primer formato siempre se utilizar cuando el dispositivo de salida
est‚ predefinido por el sistema, mientras que el segundo formato se
usar para una salida a una unidad espec¡fica.
-La lista de descriptores que se podr usar ser n los mismos que en la
instrucción READ. UNIT y FMT podr n no figurar si se pone primero el
número de la unidad y luego el formato.
INSTRUCCION DE FORMATOS. SENTENCIA "FORMAT"
-Esta instrucción facilita la información necesaria para que se haga un
reconocimiento de la representación que los datos van a tomar en la
memoria principal. La sintaxis de FORMAT ser la siguiente:
-Etiqueta FORMAT (Lista de código de formato).
-Etiqueta ser el número de etiqueta (Obligatorio), aunque se podr
referenciar tambi‚n con una variable entera a la cual se ha asignado
una etiqueta con ASSIGN.
-La lista de códigos puede estar vac¡a si la lista de sentencias de E/S
est vac¡a con un salto de l¡nea.
-Esta sentencia no es ejecutable, puede escribirse en cualquier parte y
conviene agruparlas todas al principio o al final del programa.
-La Lista de código de formato podr contener uno o varios de los
siguientes tipos:
-Códigos num‚ricos o de datos (Repetibles) entre los cuales
tenemos:
-Código I.
-Código F.
-Código E.
-Código D.
-Código G.
-Código P.
-Código L.
-Código A.
-Códigos de posicionamiento (No repetibles) entre los cuales
tenemos:
-Código X.
-Códigos T, Tl, Tr.
-Código /.
-Códigos especiales (No repetibles) entre los cuales tenemos:
-Códigos S, Sp, Ss.
-Códigos Bn, Bz.
-Código H.
-Código :.
-Código .
-Códigos de control de carro.
CODIGO NUMERICO "I"
-En los códigos de datos o num‚ricos siempre hay que diferenciar tres
partes que son fundamentales:
-Tipo de dato a representar.
-Tama¤o para la representación.
-Puntos y tama¤os de la parte fraccionaria.
-Entre los códigos num‚ricos existen una serie de caracter¡sticas:
-Los blancos de relleno son ignorados.
-Si el signo es negativo se genera el signo -.
-Tiene prioridad el punto decimal de entrada ante la posición
decimal especificada.
-Los campos se ajustan a la derecha.
-Si se produce error de salida salen asteriscos.
-Para la entrada de este código los datos deben ser de tipo entero,
siendo I el identificador de código y w el ancho del campo y la
sintaxis:
-Iw.
-Transfiere datos enteros desde el soporte externo a variables, tantos
caracteres como valor tenga w contando d¡gitos, blancos y signos y
asocia variables de izquierda a derecha con las normas siguientes:
-Blancos entre d¡gitos o al final se interpretan como ceros.
-No usan código de formato cuando la lectura es por teclado.
-Con Bn los blancos se ignoran y con Bz se toman como ceros.
-Para la salida los datos van desde la memoria interna al soporte
externo con un valor w de ancho ajust ndose a la derecha y si es
negativo se coloca un signo delante del d¡gito m s significativo.
-Si el número de caracteres es mayor que el ancho de salida el campo de
salida se llena de asteriscos.
-Si se utiliza un coeficiente de repetición n deber ser una constante
entera sin signo mayor que cero con la sintaxis:
-nIw.
-Si se quiere indicar el número m¡nimo de d¡gitos que aparecer n en la
salida se usar m, una constante entera sin signo con la sintaxis:
-nIw.m.
-Se debe contemplar la opción de que el número sea negativo con lo que
se deber aumentar el formato en una unidad.
-Si en la salida se colocan menos d¡gitos que en el formato indicado
se suprimir n todos los ceros que no sean significativos.
CODIGO NUMERICO "F"
-Este código transfiere datos de tipo real desde un dispositivo externo
hasta la memoria o a la inversa, siendo su sintaxis la siguiente:
-Fw.d.
-En este código, F ser el car cter del código, w ser la longitud total
del campo incluyendo los blancos, signos, puntos y d¡gitos, y d ser
el número de decimales de la parte real.
Si no se introduce un punto decimal se sitúan los decimales de forma
autom tica. El código F permite ser un código repetible con lo que su
sintaxis ser la siguiente:
-nFw.d.
-Se pueden introducir números reales en notación exponencial, siendo el
exponente que sigue al número real de dos formas:
-Constante entera con signo + o -.
-Car cter E o D seguido de un signo y una constante entera.
-Los caracteres de las variables reales se ajustan a la derecha del
campo de anchura. El punto decimal se genera con d posiciones a la
derecha.
En la salida no se producen ceros a la izquierda a no ser que la
mantisa sea menor que uno, con lo que habr un cero a la izquierda del
punto decimal.
Si la parte fraccionaria tiene m s anchura que d habr un redondeo del
valor antes de ajustarse y si el dato no cabe en w se producir una
salida de w asteriscos.
Entre los ejemplos que se pueden citar para este formato estar n:
CODIGO NUMERICO "E"
-Este formato lee o escribe datos reales en simple o doble precisión en
notación exponencial. E es el código del exponente, w el ancho del
campo y d los d¡gitos decimales con una sintaxis del tipo:
-Ew.d.
-La opción w contar la mantisa, el d¡gito que precede al punto decimal
el punto decimal de la mantisa y el exponente que tendr tres d¡gitos
de forma que la representación ser del tipo:
-(-)0.E(-)nn.
-Si el punto no figura en la entrada, la parte decimal ser n los d
d¡gitos m s a la derecha de la mantisa. Si aparece el punto decimal
en la entrada no se tendr en cuenta la especificación d en el formato.
-El signo del exponente se omite si es positivo y E o D pueden omitirse
si el exponente tiene signo. Es recomendable especificar el punto
decimal en la entrada.
-Para la salida han de reservarse una posición para el punto decimal y
el d¡gito cero que precede al punto decimal si hay posición para ‚l. Si
la mantisa es negativa otra posición y el exponente cuatro posiciones.
Se ejecuta la anchura del campo a la derecha y si w es menor que las
posiciones para la salida se muestran asteriscos.
-En Función del desplazamiento del punto decimal se calcula el exponente
y la mantisa se puede redondear, pudi‚ndose omitir el cero antecedente
al punto decimal si no hay posición.
-El código E puede ser repetible con la siguiente sintaxis:
-nEw.d.
-Otro formato en el que una constante entera e nos indica el número de
d¡gitos del exponente ser¡a:
-Ew.dEe.
-Entre los ejemplos que se pueden citar para este formato estar n:
CODIGO NUMERICO "D"
-Describe números reales en simple o doble precisión en forma
exponencial con el mismo efecto que el código E siendo su sintaxis:
-Dw.d.
-Para la entrada de datos este código es tratado de igual manera que el
código E. Normalmente se utiliza este código para enfatizar que el
número que se trata es de doble precisión.
El exponente para la salida cambia la letra E por la letra D y tiene
la siguiente sintaxis:
-D(+/-)nn.
-Este código num‚rico es repetible siendo su sintaxis:
-nDw.d.
CODIGO NUMERICO "G"
-Se utiliza este código para entrada y salida de datos de simple y doble
precisión siendo sus sintaxis m s generales las siguientes:
-Gw.d.
-Gw.dEe.
-La entrada de datos reales tiene el mismo significado que los códigos
F, E y D.
-En la salida actúa como formato F cuando el valor de salida est en el
rango entre 0.1 y 10d, mientras que actúa como formato E cuando el
número es m s peque¤o de 0.1 o mayor que 10d.
-Si actúa como formato F entonces los últimos cuatro caracteres ser n
blancos y el valor se imprimir en un ancho de campo de w-4 caracteres.
-Si se usan formatos a la entrada y se coloca un punto decimal cuando
el formato es distinto, habr disyunción entre el formato del teclado
y el establecido en el programa.
-Siempre se da prioridad al formato introducido por teclado.
Entre los ejemplos que se pueden citar para este formato estar n:
CODIGO DE DATOS "P"
-Es un factor de escala y sirve para ver los valores exponenciales con
un entero delante del punto decimal, aplicable sólamente a los códigos
F, E, D y G, afectando a la entrada de datos y a su salida.
El valor n ser un entero que puede llevar signo y su sintaxis ser :
-nP.
-Al aplicar el código P en la entrada sólo es aplicable si el valor
externo carece de exponente con lo que se expresar mediante la
relación:
-Valor interno=(Valor externo)/10n.
-El factor de escala afecta a los códigos de formato que aparecen a
continuación hasta encontrar otro factor de escala.
Cuando se usa para el código F en la salida se produce desplazamiento
del punto en el valor verdadero siendo su relación:
-Valor externo=Valor interno*10n.
-Si se usa en concexión con D o E la salida no cambia pero se desplaza
el punto de la mantisa al hacer el producto por 10n, y el exponente
se decrementa en n, al igual que con la forma mantisa-exponente.
Con el formato G no se usa el factor de escala porque da problemas.
Si tenemos las siguientes instrucciones:
-100 FORMAT (2PE7.2, F6.3, -1P8.4)
READ (5, 100) VarA, VarB, VarC
WRITE (*, '(1X, 3F12.5)') VarA, VARB, VarC
y le introducimos la siguiente entrada:
-b17.E0157.132-453261.7.
tendremos la siguiente tabla de referencia:
CODIGO DE DATOS "L"
-Este código se usa para la edición de datos lógicos siendo w el ancho
del campo y siendo su sintaxis la siguiente:
-Lw.
-Para la entrada busca en el campo de forma que si el primer car cter
es T (True) o F (False) los dem s caracteres del campo son ignorados.
Para la salida se produce una conversión de TRUE a FALSE o T a F
ajust ndose a la derecha del campo.
El código L es un código de tipo repetible siendo su sintaxis:
-nLw.
CODIGO DE DATOS "A"
-Este código transfiere datos de tipo car cter de la memoria al soporte
externo y a la inversa, permitiendo el manejo, entrada y salida de
cualquier variable de tipo car cter, siendo su sintaxis:
-Aw.
-Tambi‚n tiene formato repetible siendo su sintaxis:
-nAw.
-En las entradas se debe colocar apóstrofes que delimiten la cadena si
es con lista directa, pero con el código A puede evitarse y tomar la
longitud de la variable asociada teniendo en cuenta:
-Si w=n todo el dato es asignado a la variable car cter.
-Si w>n los últimos n caracteres se almacenan en la variable.
-Si w<n los caracteres se ajustan a la izquierda rellen ndose los
n-w caracteres de la derecha a blancos.
-En las salidas existen otras consideraciones:
-Si w=n tendr de longitud n.
-Si w>n los n caracteres se ajustan a la derecha y los w-n
primeros caracteres se rellenan a blancos.
-Si w<n los w primeros caracteres de la cadena salen a la salida
perdi‚ndose los restantes.
CODIGO DE POSICIONAMIENTO "X"
-Los códigos de posicionamiento determinan la posición dentro de una
l¡nea. La posición puede ser relativa a la actual del cursor o una
posición absoluta.
El código X salta n caracteres tanto para la salida como para la
entrada en el medio externo siendo su sintaxis:
-nX.
-La opción n indica los caracteres a saltar a partir de la posición
actual del cursor.
Para la entrada salta n posiciones hacia adelante desde la posición
del cursor. Para la salida en la l¡nea o registro de salida genera n
blancos y mueve el cursor n posiciones a la derecha.
Este código no es repetible.
CODIGOS DE POSICIONAMIENTO "T", "Tl" Y "Tr"
-Estos códigos producen una tabulación en el registro y T especifica
una posición absoluta dentro del registro de entrada o salida siendo
su sintaxis:
-Tc.
-La opción c indica la columna dentro del registro desde donde se va a
posicionar el cursor y donde comienzan las transferencias de datos.
El tabulador Tl mueve la posición del cursor hacia la izquierda y Tr
mueve la posición del cursor hacia la derecha con las siguientes
sintaxis:
-Tls.
-Trs.
-La opción s indica el número de posiciones que se han de desplazar el
cursor desde la posición actual.
Si tenemos las siguientes instrucciones:
-50 FORMAT (2A, I2, T1, A, T18, A, I2)
CHARACTER *6 Nombre1, Nombre2, Apellido1*8, Apellido2*8
INTEGER Edad1, Edad
READ (1, 50) Nombre1, Apellido1, Edad1, Nombre2, Apellido2, Edad
y le introducimos la siguiente entrada:
-Jos‚-Martinez8Torralva25.
obtendremos la siguiente lista de variables en la salida:
-Nombre1 - Jos‚-.
-Apellido1 - Mart¡nez.
-Edad1 - 0.
-De modo an logo, si tenemos las siguientes instrucciones:
-100 FORMAT (T8, I5, Tl2, I4, Tl6, A6)
CHARACTER *8 Cadena
INTEGER VarA, VarB
READ (*, 100) VarA, VarB, Cadena
y le introducimos la siguiente entrada:
-Visita12345678.
obtendremos la siguiente lista de variables en la salida:
-M - 23456.
-N - 5678.
-Cadena - 345678.
-Estos códigos no son repetibles.
CODIGO DE POSICIONAMIENTO "/"
-Este es un código de posicionamiento vertical que da por terminado un
registro o deja registros o l¡neas vac¡as y su sintaxis es:
-/.
-Puede separase por comas o no y sitúa el puntero en el primer car cter
de un nuevo registro.
-En la salida causa n-1 registros o l¡neas vac¡as y no es un código de
tipo repetible.
CODIGOS ESPECIALES "S", "Sp" Y "Ss"
-Estos códigos sólo son v lidos para formatos de salida, para números
y controlan la salida del signo + en los números positivos de forma:
-S no imprime el signo +.
-Sp imprime el signo +.
-Ss no imprime el signo +.
-El formato Sp sólo valdr hasta que sea el final de los especificadores
de formato o hasta un código S o Ss.
-Estos códigos no son repetibles.
CODIGOS ESPECIALES "Bn" Y "Bz"
-Estos códigos dirigen la interpretación de los caracteres en blanco
en los formatos num‚ricos de forma que:
-Bn ignora los blancos.
-Bz toma los blancos como ceros.
-Si un campo de entrada est en blanco se considera como cero.
CODIGO ESPECIAL "HOLLERITH"
-Este código sólo puede formar parte de un formato de salida y no es
v lido para entradas, siendo su sintaxis:
-wHc.
-Este código indica que habr una salida de w caracteres que son los
que van a aparecer en c. Los apóstrofes se consideran como cualquier
otro car cter.
-El número de caracteres de la constante car cter determina el ancho del
campo de salida.
CODIGO ESPECIAL ":"
-Este código provoca la terminación de la operación de salida si no hay
m s elementos en la lista de la sentencia de salida.
-Si el código es encontrado durante una entrada de datos o si quedan
elementos en la lista de salida es ignorado.
CODIGO ESPECIAL " "
-Este código facilita formatear la salida de datos en la pantalla. Este
código se aplica en formatos de sentencias de salida.
-Causa que el procesador suprima en la salida de acceso secuencial la
separación de registros actual y el siguiente registro.
CODIGOS ESPECIALES DE CONTROL DE CARRO
-Exigen que se escriban los códigos como primer car cter dentro de la
sentencia WRITE que emplea la impresora como salida siendo sus códigos
los siguientes:
-Blanco avanza una l¡nea.
-0 avanza dos l¡neas.
-1 sitúa en la primera l¡nea de la siguiente p gina.
-+ imprime sobre la misma l¡nea y no avanza.
-Si el primer car cter no es un signo de estos se toma como blanco. En
la mayor¡a de las sentencias FORMAT tiene especificado en la columna
1 o 1X.
REGISTROS MULTIPLES
-Si el número de elementos de la lista de entrada y salida es menor que
el número de códigos de datos, los códigos sobrantes se ignoran.
-Si el número de elementos es mayor que el número de códigos de formato
se van asociando los códigos de datos con los datos de izquierda a
derecha.
-Cuando se alcanza el par‚ntesis de cierre de FORMAT se empieza un nuevo
registro repiti‚ndose los códigos a partir del par‚ntesis de apertura
precedente.