Día de la Semana
Hoy todos los compiladores tienen la opción de mostrar el día de la semana que corresponde a la fecha del sistema utilizando para ello el comando ACCEPT como vemos en los Manuales .

Pero que pasa si, ¿queremos saber el día de la semana de cualquier día de nuestro calendario ?.

Pues para ello vamos a utilizar una simple fórmula con la que sabremos cuantos días han transcurrido desde el teórico día primero de nuestra era. En el truco sobre los días bisiestos se explica como obtener claramente los días. Pero veamos en la práctica como conseguimos que la máquina nos indique si hoy es Lunes, Martes o Miércoles.

Partimos en ésta fórmula con la tabla de los días por meses rellena y además sabiendo si el año actual es bisiesto, ya sabéis que lo podéis encontrar en el truco de los días bisiestos.

...
WORKING-STORAGE SECTION.
01  DIA   PIC 99.
01  MES  PIC 99.
01  ANIO PIC 9999.
01  C4    PIC 9(4).
01  BISI  PIC 9(4).
01  BI100 PIC 9(4).
01  BI400 PIC 9(4).
01  TODIA  PIC 9(8).
01  MESES      PIC 99.
01  DIASEMANA PIC 9.
01  TABLADIAS.
     02  FILLER PIC X(30) VALUE "LUNES     MARTES    MIERCOLES ".
     02  FILLER PIC X(30) VALUE "JUEVES    VIERNES   SABADO     ".
     02  FILLER PIC X(10) VALUE "DOMINGO ".
01  TABLIDIAS REDEFINES TABLADIAS.
     02  ELDIA  PIC X(10)  OCCURS 7 TIMES.
...
PROCEDURE DIVISION.
CALCULODIA.
     COMPUTE C4 ROUNDED = ANIO - 1.
     COMPUTE BISI = C4 / 4.
     COMPUTE BI100 = C4 / 100.
     COMPUTE BI400 = C4 / 400.
  COMPUTE TODIA ROUNDED = ( 365 * C4 ) + BISI - BI100 + BI400.
(Con esto conseguimos averiguar los días transcurridos hasta el 31 de Diciembre del año anterior al que estemos. Estos dias se guardarán en la variable TODIA.).

     MOVE 0 TO MESES.
CALCULODIA1.
     ADD 1 TO MESES IF MESES > MES GO CALCULODIA2.
     COMPUTE TODIA = TODIA + TDIA (MESES).
     GO CALCULODIA1.
(Aqui sumamos los días de los meses transcurridos del año actual sin contar el actual.).

CALCULODIA2.
     COMPUTE TODIA = TODIA + DIA.
(Le sumamos los días del mes en curso y ya tenemos el número total de días desde el inicio de nuestro calendario).
     DIVIDE 7 INTO TODIA GIVING C4 REMAINDER DIASEMANA.
     IF DIASEMANA = 0 MOVE 7 TO DIASEMANA. 


Al llegar aquí el resto de la operación de dividir todos los días entre 7, porque 7 son los días de la semana, nos debe de dar un número entre 0 y 6 que corresponderá a cada uno de los días de la semana.

La última línea es para cambiar el valor que tiene el domingo que sería 0 por el 7 para que corresponda con los elementos de nuestra tabla de días, de tal manera que ahora solo nos quedaría poner:

     DISPLAY ELDIA (DIASEMANA) LINE 10 COL 10.

Y ahora, todo aquel que lo necesite que lo implemente, siempre queda bastante mejor presentar la fecha indicando el día de la semana al que corresponde.



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=89