|
 |
 |
Instr. de Variables
página(s) : 1/5 (5707 palabras totales en este texto) (125557 Lecturas) 
Daré cabida en esta sección a la explicación de todas las instrucciones
que hacen referencia a las variables y sus valores. Como todas, este grupo de instrucciones
tiene su vital importancia en la programación y son usadas habitualmente.
MOVE, es la instrucción que usaremos para enviar
datos de una variable a otra u otras. Lo que en realidad hace es que la una variable adquiera
un valor determinado, ya sea procedente de otra variable o bien desde un valor fijo o constante.
Estos son los dos formatos que posee:
Formato 1:
MOVE variable, valor
TOvariable, variable, variable, ....
Con el primer formato las variables que siguen al TO tomarán
el dato de la variable o del valor que le preceden. De todo se verá al final una serie
de ejemplos bien detallados. Siempre tendremos una serie de normas o restricciones para
asegurarnos de que los valores han pasado correctamente.
- Los campos numéricos siempre se van a alinear a la derecha, respetando la posición
del punto decimal si lo hubiera. Si la variable que recibe el campo es mas pequeña, evidentemente
se perderán los que no quepan y si es mas grande el resto se pondrá a ceros.
Si además el campo al que se mueven los datos es de edición,
al hacer el paso del valor, este a su vez se formateará con la edición declarada
en la WORKING.
Si son alfanuméricos la alineación se efectuará a
la izquierda a menos que se haya especificado en la WORKING, al
definirla, una justificación a la derecha (JUST RIGHT). Al igual
que en los numéricos si es mas pequeño se perderán los caracteres que no
quepan y si es mas grande el resto irá relleno de espacios en blanco.
| ...
WORKING-STORAGE SECTION.
77 NUMERO1 PIC 9(6).
77 NUMERO2 PIC 9(8)V99. 77 NUMERO3 PIC
ZZZ.ZZZ,ZZ. 77 TEXTO1
PIC X(15) VALUE "LENGUAJE
COBOL". 77 TEXTO2
PIC X(10). 77
TEXTO3 PIC
X(20) JUST RIGHT. ...
PROCEDURE DIVISION.
INICIO.
MOVE 1536 TO NUMERO1. MOVE
NUMERO1 TO NUMERO2 NUMERO3. MOVE
TEXTO1 TO TEXTO2 TEXTO3. ... |
|
Nota: Después de aplicar estas sentencias, éste sería el resultado:
NUMERO1=001536
NUMERO2=0000153600 (La coma decimal es virtual)
NUMERO3= 1.536,00
TEXTO1=LENGUAJE
COBOL TEXTO2=LENGUAJE
C TEXTO3=
LENGUAJE COBOL
|
Formato 2:
MOVE CORR Identificador1
TO Identificador2
Agregando CORR a la instrucción conseguimos mover de una sola vez un valor entre identificadores siempre
que los campos que contengan tengan el mismo nombre. Estos identificadores no pueden ir en niveles 66,
77 ni 88. El efecto es el mismo que si hicieramos tantos MOVE normales como campos iguales tuviera
el identificador. No es muy usual, pero si hay casos en los que puede ser razonable su uso.
No es necesario que tengan el mismo PIC, ni que estén en el mismo orden, solo que
coincidan en su nombre.
|
...
WORKING-STORAGE SECTION.
01 DATOS1. 02 NOMBRE PIC
X(30). 02
REGION PIC X(20). 02
PAIS PIC
X(15). 01 DATOS2. 02
PAIS PIC
X(10). 02
REGION PIC X(10). 02
NOMBRE PIC X(10).
...
PROCEDURE DIVISION.
INICIO.
MOVE "ANDRES MONTES"
TO NOMBRE IN DATOS1. MOVE
"ANDALUCIA" TO REGION IN DATOS1. MOVE
"ESPAÑA" TO PAIS IN DATOS1. MOVE
CORR DATOS1 TO DATOS2.
... | |
Nota: Para partir con unos valores,
primero los he movido a las variables del primer grupo (DATOS1). Después de aplicar el
MOVE CORR, el valor de las variables de DATOS2 sería:
DATOS2: PAIS=ESPAÑA REGION=ANDALUCIA NOMBRE=ANDRES MON
Fijaros que aunque el orden ni el tamaño era el mismo, el resultado
es el que queríamos.
|
| | (2/5) |
|
|