miércoles, 16 de marzo de 2011

Sumar / Restar Fechas en Cobol AS400 (Function Add-Duration SubTract-Duration)

Asi como el RPGLE posee funciones de fechas, la versión ILE del Cobol no se queda atrás. Aquí un ejemplo de cómo sumar, restar variables de fechas.

Al igual que en Rpgle se puede operar en Días, Meses y Años. Para mas detalles sobre los diferentes formatos y funciones de fechas lo encontrarán en los manuales on-line de IBM


       WORKING-STORAGE SECTION.                                  
      * Variables varias                                         
       77  Var-Fecha-Work        PIC 9(8) VALUE 20110129.          
       77  FECHA-MENOS-180-DIAS  PIC 9(8).                       
       77  FECHA-MAS-180-DIAS    PIC 9(8).                       
       77  DIFERENCIA-FECHAS     PIC 9(6).                       
       77  VAR-FECHA             PIC 9(8).   
       77  FECHA-JULIANA         PIC 9(7).                        
                                                                 
      * Variables tipo Fecha                                     
       77  Fec-dmyy              Format Date  "%d%m@Y".          
       77  Fec-yymd              Format Date  "@Y%m%d".          
       77  Fec-AAmd              Format Date  "@Y%m%d"           
                                              Values "20110201". 
       77  Fecha-Actual          Format Date  "@Y%m%d".          
                                                                 
       PROCEDURE DIVISION.                                       
       INICIO.                                                   
               Move   Var-Fecha-Work        To  Fec-yymd         
               Move   Fec-yymd              To  Fec-dmyy         
                                                                  
      * Fecha Actual del Sistema                                 
               MOVE FUNCTION CURRENT-DATE TO  FECHA-ACTUAL       
               ACCEPT VAR-FECHA FROM DATE YYYYMMDD.                
               ACCEPT FECHA-JULIANA  FROM DATE YYYYDDD.        
      * Restando Días                                               
               MOVE FUNCTION SUBTRACT-DURATION (Fec-yymd DAYS 180) 
                           TO FECHA-MENOS-180-DIAS                 
      * Sumando Días                                               
               MOVE FUNCTION ADD-DURATION (Fec-yymd DAYS 180)      
                           TO FECHA-MAS-180-DIAS                   
      * Diferencia en días entre 2 fechas                          
               COMPUTE   DIFERENCIA-FECHAS =                       
                    FUNCTION FIND-DURATION (Fec-yymd Fec-AAmd DAYS)
           STOP RUN.                                               

No hay comentarios:

Publicar un comentario