home *** CD-ROM | disk | FTP | other *** search
/ Hall of Fame / HallofFameCDROM.cdr / 3x400 / datespan.lzh / DATESPAN.CLP next >
Text File  |  1987-07-17  |  9KB  |  116 lines

  1.      /*                  INTERNAL CL DOCUMENTATION                   */         
  2.      /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  */         
  3.      /*                                                              */         
  4.      /*  NAME:         DATESPAN                                      */         
  5.      /*                                                              */         
  6.      /*  DESCRIPTION:  DETERMINE THE NUMBER OF DAYS BETWEEN TWO      */         
  7.      /*                DATES.                                        */         
  8.      /*                                                              */         
  9.      /*  PARAMETERS:   DATE1 (MMDDYY)                                */         
  10.      /*                DATE2 (MMDDYY)                                */         
  11.      /*                                                              */         
  12.      /*                SPANTYPE:                                     */         
  13.      /*                 ( 1) INCLUDE DATE1 AND DATE2 IN THE SPAN     */         
  14.      /*                 (-1) EXCLUDE DATE1 AND DATE2 FROM THE SPAN   */         
  15.      /*                 ( 0) EXCLUDE DATE1, INCLUDE DATE2            */         
  16.      /*                                                              */         
  17.      /*                DAYS  RETURNS NUMBER OF DAYS                  */         
  18.      /*                FLAG  RETURN CODE = '*'  FOR ERROR.           */         
  19.      /*                                  = ' '  NO  ERROR.           */         
  20.      /*                                                              */         
  21.      /* * * * * * * * * * * *MAINTENANCE LOG* * * * * * * * * * * *  */         
  22.      /*                                                              */         
  23.      /*    DATE      DESCRIPTION OF CHANGE     PROJECT#    INITIALS  */         
  24.      /*  11/19/86    LOG STARTED.                105         TWM     */         
  25.      /*                                                              */         
  26.      /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  */         
  27.      PGM  (&DATEN1 &DATEN2 &SPANTYPE &DAYS &FLAG)                               
  28.              DCL        VAR(&DATEN1)   TYPE(*DEC)   LEN(6 0)                    
  29.              DCL        VAR(&DATEN2)   TYPE(*DEC)   LEN(6 0)                    
  30.              DCL        VAR(&DATEA1)   TYPE(*CHAR)  LEN(6)                      
  31.              DCL        VAR(&DATEA2)   TYPE(*CHAR)  LEN(6)                      
  32.              DCL        VAR(&DATEA)    TYPE(*CHAR)  LEN(6)                      
  33.              DCL        VAR(&LASTDATE) TYPE(*CHAR)  LEN(6)   VALUE('123100')    
  34.              DCL        VAR(&JDATEN1)  TYPE(*DEC)   LEN(5 0)                    
  35.              DCL        VAR(&JDATEA1)  TYPE(*CHAR)  LEN(5)                      
  36.              DCL        VAR(&JYEARA1)  TYPE(*CHAR)  LEN(2)                      
  37.              DCL        VAR(&JYEARN1)  TYPE(*DEC)   LEN(2 0)                    
  38.              DCL        VAR(&JDATEN2)  TYPE(*DEC)   LEN(5 0)                    
  39.              DCL        VAR(&JDATEA2)  TYPE(*CHAR)  LEN(5)                      
  40.              DCL        VAR(&JYEARA2)  TYPE(*CHAR)  LEN(2)                      
  41.              DCL        VAR(&JYEARN2)  TYPE(*DEC)   LEN(2 0)                    
  42.              DCL        VAR(&JHOLDN)   TYPE(*DEC)   LEN(5 0)                    
  43.              DCL        VAR(&JHOLDA)   TYPE(*CHAR)  LEN(5)                      
  44.              DCL        VAR(&SPANTYPE) TYPE(*DEC)   LEN(1 0)                    
  45.              DCL        VAR(&DAYS)     TYPE(*DEC)   LEN(6 0)                    
  46.              DCL        VAR(&FLAG)     TYPE(*CHAR)  LEN(1)                      
  47.                                                                                 
  48.              MONMSG     MSGID(MCH1210) /* RECEIVING OPERAND TOO SMALL */        
  49.                                                                                 
  50. /* VALIDATE DATES */                                                            
  51.              CHGVAR     VAR(&DATEA1)    VALUE(&DATEN1)                          
  52.              CVTDAT     DATE(&DATEA1) TOVAR(&JDATEA1) FROMFMT(*MDY) +           
  53.                         TOFMT(*JUL) TOSEP(*NONE)                                
  54.              MONMSG     MSGID(CPF0000) EXEC(GOTO ERROR)                         
  55.              CVTDAT     DATE(&JDATEA1) TOVAR(&DATEA) FROMFMT(*JUL) +            
  56.                         TOFMT(*MDY) TOSEP(*NONE)                                
  57.              MONMSG     MSGID(CPF0000) EXEC(GOTO ERROR)                         
  58.              IF         COND(&DATEA1 *NE &DATEA) THEN(GOTO ERROR)               
  59.                                                                                 
  60.              CHGVAR     VAR(&DATEA2)    VALUE(&DATEN2)                          
  61.              CVTDAT     DATE(&DATEA2) TOVAR(&JDATEA2) FROMFMT(*MDY) +           
  62.                         TOFMT(*JUL) TOSEP(*NONE)                                
  63.              MONMSG     MSGID(CPF0000) EXEC(GOTO ERROR)                         
  64.              CVTDAT     DATE(&JDATEA2) TOVAR(&DATEA) FROMFMT(*JUL) +            
  65.                         TOFMT(*MDY) TOSEP(*NONE)                                
  66.              MONMSG     MSGID(CPF0000) EXEC(GOTO ERROR)                         
  67.              IF         COND(&DATEA2 *NE &DATEA) THEN(GOTO ERROR)               
  68.                                                                                 
  69. /*  DATES OK - PROCEED */                                                       
  70.                                                                                 
  71.              CHGVAR     VAR(&DAYS) VALUE(0)                                     
  72.              CHGVAR     VAR(&FLAG) VALUE(' ')                                   
  73.              IF ((&SPANTYPE *LT (-1)) *OR (&SPANTYPE *GT (+1))) +               
  74.                 THEN(CHGVAR &SPANTYPE 0)                                        
  75.                                                                                 
  76.              IF   (&JDATEA1 *GT &JDATEA2) THEN(DO) /* SWAP DATES */             
  77.                   CHGVAR &JHOLDA  &JDATEA1                                      
  78.                   CHGVAR &JDATEA1 &JDATEA2                                      
  79.                   CHGVAR &JDATEA2 &JHOLDA                                       
  80.                   ENDDO                                                         
  81.                                                                                 
  82.              CHGVAR  &JDATEN1  &JDATEA1                                         
  83.              CHGVAR  &JDATEN2  &JDATEA2                                         
  84.                                                                                 
  85.              CHGVAR  &JYEARA1  %SST(&JDATEA1 1 2)  /* EXTRACT YEARS */          
  86.              CHGVAR  &JYEARN1  &JYEARA1            /* TO ALPHA AND  */          
  87.              CHGVAR  &JYEARA2  %SST(&JDATEA2 1 2)  /* NUMERIC FMTS.*/           
  88.              CHGVAR  &JYEARN2  &JYEARA2                                         
  89.                                                                                 
  90.                                                                                 
  91. /* IF YEARS ARE THE SAME, SIMPLY SUBTRACT */                                    
  92. LOOP:        IF   COND(&JYEARN1 = &JYEARN2) THEN(DO)                            
  93.              CHGVAR     VAR(&DAYS) VALUE(&DAYS + (&JDATEN2 - +                  
  94.                             &JDATEN1) + &SPANTYPE)                              
  95.                   GOTO ENDPGM                                                   
  96.                   ENDDO                                                         
  97.              ELSE                                                               
  98.                                                                                 
  99. /* OTHERWISE */                                                                 
  100.                                                                                 
  101.              CHGVAR %SST(&LASTDATE 5 2) &JYEARA1  /* 12-31-YR1 */               
  102.              CVTDAT DATE(&LASTDATE) TOVAR(&JHOLDA) FROMFMT(*MDY) +              
  103.                     TOFMT(*JUL) TOSEP(*NONE)                                    
  104.                                                                                 
  105.              CHGVAR  &JHOLDN         &JHOLDA                                    
  106.              CHGVAR  &DAYS (&DAYS + (&JHOLDN - &JDATEN1))                       
  107.              CHGVAR  &JYEARN1       (&JYEARN1 + 1)                              
  108.              CHGVAR  &JYEARA1        &JYEARN1                                   
  109.              CHGVAR  &JDATEN1       (&JYEARN1 * 1000)                           
  110.                                                                                 
  111.              GOTO    LOOP                                                       
  112.                                                                                 
  113. ERROR:       CHGVAR   VAR(&FLAG) VALUE('*')                                     
  114.                                                                                 
  115. ENDPGM: ENDPGM                                                                  
  116.