Cobol Foro

Cobol Foro (https://www.cobolforo.es/index.php)
-   RM/COBOL (https://www.cobolforo.es/forumdisplay.php?f=16)
-   -   [Sintaxis] Calculo entre dos fecha (https://www.cobolforo.es/showthread.php?t=1409)

jmeza 26 de noviembre de 2021 01:31

Calculo entre dos fecha
 
Hola, alguien me podría ayudar con una rutina de calculo entre dos fechas para RMCOBOL85
Tengo una pero no es exacta.
La que tengo de PawercobolV9 no funciona en Rmcobol

Saludos

Kuk 26 de noviembre de 2021 10:44

Cita:

Citación del post de jmeza (Mensaje 7338)
La que tengo de PawercobolV9 no funciona en Rmcobol

Raro... A ver ese código, porque me extraña mucho que no funcione en RM. Salvo que sea alguna función puramente Fujitsu.

jmeza 29 de noviembre de 2021 21:35

Cita:

Citación del post de Kuk (Mensaje 7339)
Raro... A ver ese código, porque me extraña mucho que no funcione en RM. Salvo que sea alguna función puramente Fujitsu.

Kuk, este es el código en rmcobol85, se cae en esta línea, CALL "DIFERMES" USING LNK-DIFER.
error 234 (no object file found) error loading subprogram DIFERMES.

Esta rutina la baje de la pagina y en powercobolv9 funciona sin problemas

Código COBOL:
  1. WORKING-STORAGE SECTION.
  2.        01 DIA PIC 99.
  3.        01 MES PIC 99.
  4.        01 ANO PIC 99.
  5.        01 N-FECHA   PIC X(100).
  6.        01 F-INICIAL PIC X(10).
  7.        01 F-FINAL   PIC X(10).
  8.        01 SV-FECHA    PIC X(10).    
  9.        01 status-code PIC S9(4) COMP-5.
  10.        01 LNK-DIFER.
  11.           COPY "CPY-DIFER.COB".
  12.  
  13. PROCEDURE DIVISION.
  14.        CALCULO-FECHA-CONTRATO.
  15.            MOVE 1 TO DIF-OPCION.
  16.            MOVE REM02-FECCONT TO F-INICIAL.
  17.            MOVE F-INICIAL TO SV-FECHA.          
  18.            MOVE SV-FECHA(1:2)       TO DIF-FECHA-1(1:2).
  19.            MOVE SV-FECHA(4:2)       TO DIF-FECHA-1(3:2).
  20.            MOVE SV-FECHA(7:4)       TO DIF-FECHA-1(5:4).
  21.    
  22.            MOVE AC-FECING TO F-FINAL.
  23.            MOVE F-FINAL TO SV-FECHA.
  24.            MOVE SV-FECHA(1:2)       TO DIF-FECHA-2(1:2).
  25.            MOVE SV-FECHA(4:2)       TO DIF-FECHA-2(3:2).
  26.            MOVE SV-FECHA(7:4)       TO DIF-FECHA-2(5:4).
  27.      
  28.            CALL "DIFERMES" USING LNK-DIFER.
  29.            MOVE DIF-ANIOS TO ANO.
  30.            MOVE DIF-MESES TO MES.
  31.            MOVE DIF-DIAS  TO DIA.
  32.            STRING ANO DELIMITED BY SIZE
  33.                   " Años " DELIMITED BY SIZE
  34.                   MES DELIMITED BY SIZE
  35.                   " Meses " DELIMITED BY SIZE
  36.                   DIA DELIMITED BY SIZE
  37.                   " Dias" DELIMITED BY SIZE
  38.                   INTO N-FECHA.
  39.            DISPLAY N-FECHA LINE 18 POSITION 3.

JCantero 29 de noviembre de 2021 21:53

Es porque no te encuentra el programa "difermes".

Debes de localizarlo e intentar compilarlo para ver si te funciona.

Kuk 29 de noviembre de 2021 22:03

@JCantero, es una DLL, viene on una LIB pero no sé como se hará en RM para utilizarla.

jmeza 29 de noviembre de 2021 22:30

Cita:

Citación del post de JCantero (Mensaje 7345)
Es porque no te encuentra el programa "difermes".

Debes de localizarlo e intentar compilarlo para ver si te funciona.

JCantero, ya lo compile cero error, se cae al momento de ejecutar

Difermes, es un archivo oculto que no reconoce el Rmcobol

Kuk 29 de noviembre de 2021 22:36

@jmeza, yo tenía una rutina hecha hace muchos años, creo que la publiqué en el antiguo foro, y se llamaba así, DIFERMES :)

Bueno, al caso, coge este fuente y no necesitas librerías: [Aporte] DLL de cáculo de fecha y hora - COBOL Foro

jmeza 30 de noviembre de 2021 16:09

Cita:

Citación del post de Kuk (Mensaje 7348)
@jmeza, yo tenía una rutina hecha hace muchos años, creo que la publiqué en el antiguo foro, y se llamaba así, DIFERMES :)

Bueno, al caso, coge este fuente y no necesitas librerías: [Aporte] DLL de cáculo de fecha y hora - COBOL Foro

Lo resolví de este modo, para lo que necesitaba, saber la cantidad de años entre dos fechas

Código COBOL:
  1. WORKING-STORAGE SECTION.
  2.  
  3. 01 FECHA-INGRESO.
  4.          02 AC-FECING      PIC 9(08).
  5.          02 R-AC-FECING REDEFINES AC-FECING.
  6.                   03  AA-FECING PIC 9(04).
  7.                   03  MM-FECING PIC 9(02).
  8.                   03  DD-FECING PIC 9(02).
  9. 01  VARI-ANTIGUEDAD.
  10.            02 AC-FECCON      PIC 9(08).
  11.            02 R-AC-FECCON REDEFINES AC-FECCON.
  12.                03  AA-FECCON PIC 9(04).
  13.                03  MM-FECCON PIC 9(02).
  14.                03  DD-FECCON PIC 9(02).
  15.            02 AC-DIATOT     PIC 9(05)V999.
  16.            02 AC-MESTOT   PIC 9(03)V999.
  17.            02 AC-ANOTOT   PIC 9(02)V999.
  18.            02 FECHA1         PIC 9(08).
  19.            02 FECHA2         PIC 9(08).
  20.  
  21. PROCEDURE DIVISION.
  22.        CALCULO-FECHA-CONTRATO.
  23.            MOVE 0 TO AC-DIATOT AC-MESTOT AC-ANOTOT
  24.            MOVE REM02-FECCONT TO AC-FECCON
  25.            COMPUTE FECHA1 = (AA-FECCON * 365.25) + DANO(MM-FECCON) +
  26.                              DD-FECCON
  27.            COMPUTE FECHA2 = (AA-FECING * 365.25) + DANO(MM-FECING) +
  28.                              DD-FECING
  29.            IF  FECHA1 > FECHA2
  30.                MOVE " !! Fecha < a la Primera !! " TO MENSAJE
  31.                PERFORM EMITE-MENSAJE
  32.            ELSE
  33.                COMPUTE AC-DIATOT ROUNDED = FECHA1 - FECHA2
  34.                COMPUTE AC-MESTOT ROUNDED = (AC-DIATOT / 30)
  35.                COMPUTE AC-ANOTOT ROUNDED = (AC-DIATOT / 365.25).


Comentario de Moderador

Usa los botones de resalto de sintaxis ;)

https://cobolforo.es/imagenes/editor.png


La franja horaria es GMT +2. Ahora son las 01:17.

Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.