H*³ Ä H*³ Ä ³ Ä H*³ ÀAPLICACION..Ä GEBADA (GEstor de BAse de DAtos) ³ Ä H*³ Ä ³ Ä H*³ ÀDESCRIPCION.Ä C lculo de dias entre dos fechas ³ Ä H*³ Ä ³ Ä H*³ ÀANALISTA....Ä Juan Ram¢n Garcia ³ Ä H*³ ÀPROGRAMADOR.Ä Juan Ram¢n Garcia ÀFECHA:Ä 15/12/97 ³ Ä H*³ Ä ³ Ä H*³ Ÿ COPYRIGHT.ÄJuan Ram¢n Garcia - 1.997Ä ³ Ä H*³ Ä ³ Ä H*³ Ä H* E* E DCM 12 12 2 0 DIAS DE CADA MES E* I* I** DESGLOSE DE FECHA EN DD-MM-AAAA I DS I 1 80DSFECH I 1 20DIA I 3 40MES I 5 80A¥O I 7 80A¥O1 I 1 2 XXDIA I 3 4 XXMES I 5 8 XXA¥O I 7 8 XXA¥O1 I** DESGLOSE DE LA FECHA INICIAL EN AAAA-MM-DD I DS I 1 80FECINI I 1 40A¥OINI I 5 60MESINI I 7 80DIAINI I** DESGLOSE DE LA FECHA FINAL EN AAAA-MM-DD I DS I 1 80FECFIN I 1 40A¥OFIN I 5 60MESFIN I 7 80DIAFIN I* C* C** DEFINICION DE PARAMETROS C *ENTRY PLIST C PARM P1FEIN 80 FECHA INIC. C PARM P1FEFI 80 FECHA FINAL C PARM P1FORM 4 FORMATO C PARM P1DIAS 150 DIAS DIFEREN C Z-ADD0 P1DIAS C** C** SI ALGUNA FECHA ES CERO O SON IGUALES VUELVE A PROG.PRINCIPAL C** B01 C P1FEIN IFEQ 0 C P1FEFI OREQ 0 C P1FEIN OREQ P1FEFI C GOTO FINAL E01 C ENDIF C** C** TRANSFORMA FECHAS A FORMATO AAAA-MM-DD C** C Z-ADDP1FEIN FECHA 80 C EXSR CONFEC C Z-ADDDIA DIAINI C Z-ADDMES MESINI C Z-ADDA¥O A¥OINI C Z-ADDP1FEFI FECHA C EXSR CONFEC C Z-ADDDIA DIAFIN C Z-ADDMES MESFIN C Z-ADDA¥O A¥OFIN C** C** SI FECHA FINAL ES MENOR QUE FECHA INICIAL VUELVE A PROG.PRINCIPAL C** C FECFIN CABLTFECINI FINAL C***************************************************************** C***** CALCULA DIAS DE DIFERENCIA ENTRE LAS FECHAS ***** C***************************************************************** C** C** SI EL A¥O ES EL MISMO: C** B01 C A¥OINI IFEQ A¥OFIN C** SI EL MES ES EL MISMO RESTA LOS DIAS B02 C MESINI IFEQ MESFIN C DIAFIN SUB DIAINI P1DIAS C GOTO FINAL E02 C ENDIF C** SI EL MES ES DISTINTO CALCULA LOS DIAS ENTRE MESES B02 C MESFIN IFGE 2 C Z-ADDA¥OFIN A¥O C EXSR COMA¥O E02 C ENDIF C DCM,MESINISUB DIAINI P1DIAS C ADD DIAFIN P1DIAS C ADD 1 MESINI C SUB 1 MESFIN B02 C MESINI DO MESFIN MES C ADD DCM,MES P1DIAS E02 C ENDDO C GOTO FINAL E01 C ENDIF C** C** SI EL A¥O ES DISTINTO: C** C** CALCULA LOS DIAS ENTRE LA FECHA INICIAL Y EL FINAL DE ESE A¥O B01 C MESINI IFLE 2 C Z-ADDA¥OINI A¥O C EXSR COMA¥O E01 C ENDIF C DCM,MESINISUB DIAINI P1DIAS C ADD 1 MESINI B01 C MESINI DO 12 MES C ADD DCM,MES P1DIAS E01 C ENDDO C** CALCULA LOS DIAS ENTRE LA FECHA FINAL Y EL INICIO DE ESE A¥O B01 C MESFIN IFGE 2 C Z-ADDA¥OFIN A¥O C EXSR COMA¥O E01 C ENDIF C ADD DIAFIN P1DIAS C SUB 1 MESFIN B01 C DO MESFIN MES C ADD DCM,MES P1DIAS E01 C ENDDO C** TRANSFORMA LOS A¥OS TRANSCURRIDOS COMPLETOS EN DIAS C ADD 1 A¥OINI C SUB 1 A¥OFIN B01 C A¥OINI DO A¥OFIN A¥O C EXSR COMA¥O C ADD 337 P1DIAS DIAS SIN FEB C ADD DCM,2 P1DIAS DIAS FEBRERO E01 C ENDDO C***************************************************************** C***** SALIDA DEL PROGRAMA (SIN DESCARGARLO) ***** C***************************************************************** C FINAL TAG C RETRN C* * C** ** C*** *** C***************************************************************** C***** S U B R U T I N A S ***** C***************************************************************** C*** *** C** ** C* * C***************************************************************** C***** CONVERSION DE FECHA A FORMATO AAAA-MM-DD ***** C***************************************************************** C CONFEC BEGSR C MOVELFECHA XXFECH 8 C Z-ADD0 DSFECH B01 C SELEC X01 C P1FORM WHEQ 'DMAA' C Z-ADDFECHA DSFECH X01 C P1FORM WHEQ 'AAMD' C MOVELXXFECH XXA¥O C 2 SUBSTXXFECH:5 XXMES C MOVE FECHA XXDIA X01 C P1FORM WHEQ 'MDAA' C MOVELXXFECH XXMES C 2 SUBSTXXFECH:3 XXDIA C MOVE XXFECH XXA¥O X01 C P1FORM WHEQ 'DMA ' C MOVELXXFECH FECHA C 2 SUBSTXXFECH:5 XXA¥O1 C EXSR CAMA¥O X01 C P1FORM WHEQ 'AMD ' C MOVELXXFECH XXA¥O1 C 2 SUBSTXXFECH:3 XXMES C 2 SUBSTXXFECH:5 XXDIA C EXSR CAMA¥O X01 C P1FORM WHEQ 'MDA ' C MOVELXXFECH XXMES C 2 SUBSTXXFECH:3 XXDIA C 2 SUBSTXXFECH:5 XXA¥O1 C EXSR CAMA¥O X01 C P1FORM WHEQ ' DMA' C 2 SUBSTXXFECH:3 XXDIA C 2 SUBSTXXFECH:5 XXMES C MOVE XXFECH XXA¥O1 C EXSR CAMA¥O X01 C P1FORM WHEQ ' AMD' C 2 SUBSTXXFECH:3 XXA¥O1 C 2 SUBSTXXFECH:5 XXMES C MOVE XXFECH XXDIA C EXSR CAMA¥O X01 C P1FORM WHEQ ' MDA' C 2 SUBSTXXFECH:3 XXMES C 2 SUBSTXXFECH:5 XXDIA C MOVE XXFECH XXA¥O1 C EXSR CAMA¥O X01 C OTHER C GOTO FINAL E01 C ENDSL C ENDSR C***************************************************************** C***** RUTINA DE CAMBIO DE A¥O DE 2 A 4 DIGITOS ***** C***************************************************************** C CAMA¥O BEGSR B01 C A¥O1 IFGT 50 C MOVEL'19' XXA¥O X01 C ELSE C MOVEL'20' XXA¥O E01 C ENDIF C ENDSR C***************************************************************** C***** RUTINA DE COMPROBACION DE A¥O BISIESTO ***** C***************************************************************** C COMA¥O BEGSR B01 C A¥O1 IFEQ 0 PRINC.SIGLO C MOVELA¥O A¥OBIS 20 X01 C ELSE A¥O NORMAL C MOVE A¥O A¥OBIS E01 C ENDIF C DIV 4 A¥OBIS C MVR A¥OBIS B01 C A¥OBIS IFEQ 0 BISIESTO C Z-ADD29 DCM,2 X01 C ELSE NO BISIESTO C Z-ADD28 DCM,2 E01 C ENDIF C ENDSR ** SERIE CON LOS DIAS DE CADA MES 312831303130313130313031