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.



Este artículo proviene de Cobol en español
http://www.escobol.com

La dirección de esta noticia es:
http://www.escobol.com/modules.php?name=Sections&op=viewarticle&artid=85