
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.
|
|