
Campos Tipo Hora
Muchas veces se nos plantean cosas tan simples como saber el tiempo transcurrido entre una
hora y otra. Algo tan sencillo como eso, a veces nos puede hacer perder mucho tiempo
intentando encontrar el algoritmo apropiado para conseguirlo. Desde aquí voy a explicar
una manera de hacerla, fácil de entender y de aplicar.
Primero nos hacemos el planteamiento y
nos definimos las variables a utilizar. Por ejemplo vamos a calcular cuanto tiempo pasa
entre las 8:37 y las 12:16. Evidentemente es muy sencillo (de cabeza) serían 3 horas 39
minutos. Veamos porque:
... WORKING-STORAGE SECTION.
01 TIEMPO PIC 9(4). (definimos 7 opciones de 10 caracteres cada una).
01 R-TIEMPO REDEFINES TIEMPO.
02 HORA PIC 99.
02 MINU PIC 99.
01 RESTO PIC 9(4).
01 DESDE PIC 9(4).
01 HASTA PIC 9(4).
01 LINEA.
02 FILLER PIC X(17) VALUE "HAN TRANSCURRIDO ".
02 LHORA PIC Z9B.
02 FILLER PIC XXX VALUE " Y ".
02 LMINU PIC Z9B.
02 FILLER PIC X(7) VALUE "MINUTOS".
01 LI PIC 99.
01 OP PIC X.
01 ESCA PIC 9 COMP-1.
01 QW PIC 9.
PROCEDURE DIVISION.
INICIO. (partimos del ejemplo y le damos esos valores).
MOVE 0837 TO TIEMPO.
COMPUTE DESDE = HORA * 60 + MINU.
(obtenemos los minutos de la primera hora).
MOVE 1216 TO TIEMPO.
COMPUTE HASTA = HORA * 60 + MINU.
(obtenemos los minutos de la segunda hora).
(asi DESDE=517 y HASTA=736).
COMPUTE RESTO = HASTA - DESDE.
(219, minutos transcurridos).
COMPUTE HORA = RESTO / 60.
(obtenemos las horas "3").
COMPUTE MINU = RESTO - (HORA * 60).
(obtenemos los minutos "39").
(ahora displayamos el resultado).
MOVE HORA TO LHORA MOVE MINU TO LMINU.
DISPLAY LINEA LINE 10 COL 20 LOW ERASE.
...
De ésta manera se consigue saber el tiempo en hora transcurrido entre dos
variables de tipo hora. Como siempre espero que os
sirva de ayuda, tanto para éste caso en concreto como para practicar las órdenes que
vamos viendo en el manual.
|
|