cálculo de la diferencia entre horas en un período de 24 horas

Upload: lilisustar

Post on 09-Jul-2015

1.963 views

Category:

Documents


0 download

DESCRIPTION

Utilidad programada en rpg free para calcular la diferencia entre dos horas en un período máximo de 24 horas.

TRANSCRIPT

http://iseriesvenezuela.blogspot.com. Calcula la diferencia entre dos horas expresada en HH.MM.SS, en un arco de tiempo de 24 horas. http://iseriesvenezuela.blogspot.com

Algunos procesos particularmente largos en tiempo de ejecucin, requieren ser auditados y registrados para someterlos a un proceso de anlisis, evaluacin y en ocasiones proceder a un procedimiento de reingeniera para optimizar los tiempo de respuesta. Podemos grabar la hora de inicio en un archivo, justo antes de comenzar y al finalizar, grabamos la hora de culminacin. Para obtener la duracin del proceso en HH:MM:SS (horas, minutos, segundos) tenemos la siguiente rutina. Esta utilidad funciona en un perodo de 24 horas mas all de ese arco de tiempo es necesario programar otra utilidad. (til para procesos que no tardan ms de 24 horas ejecutndose). La utilidad devuelve en una variable alfabtica de seis posiciones la diferencia de horas HHMMSS. Los parmetros de entrada deben enviarse tambin en sendas variables alfabticas de 6 posiciones para las horas de Inicio y de finalizacin cuya diferencia se desea calcular.

Autora: Liliana Surez. E-mail: [email protected]

http://iseriesvenezuela.blogspot.com. Calcula la diferencia entre dos horas expresada en HH.MM.SS, en un arco de tiempo de 24 horas.Enlace a la descarga del cdigo fuente:

https://skydrive.live.com/?sc=documents&cid=f974c7d5a177a2fa#!/? cid=f974c7d5a177a2fa&sc=documents&uc=1&id=F974C7D5A177A2FA%21103 Hasta la Prxima http://iseriesvenezuela.blogspot.com Email: [email protected]

*| *| Programa : UTIME *| : Calcula tiempo de Duracion de Proceso. *| Fecha Creacin: Julio 2.011 *| Creado por : Liliana Suarez *| Iseries Venezuela *| __________________________________________________________________|* /if defined(*crtbndrpg) h dftactgrp(*no) h bnddir('QSYS/QC2LE') h actgrp(*new) /endif h option(*noexpdds: *showskp: *noxref: *noext) hdebug(*yes) hdftname(CONVERDATE) htimfmt(*HMS) haut(*all) hfixnbr(*zoned) htext(*srcmbrtxt) **Variables de trabajo dHay_error S d ds dpduracion dphoras dpminutos dpsegundos d ds dHoraIH dHoraI dMinutosI dSegundosI d ds dHoraFH dHoraF dMinutosF dSegundosF 1 1 3 5 1 2 4 6 n 6

6S 0 1 2S 0 3 4S 0 5 6S 0 6S 0 1 2S 0 3 4S 0 5 6S 0 1

Autora: Liliana Surez. E-mail: [email protected]

http://iseriesvenezuela.blogspot.com. Calcula la diferencia entre dos horas expresada en HH.MM.SS, en un arco de tiempo de 24 horas. D Horasd D Horas D Minutosd D Minutos D Segundos D Ajuste D Durseg D* D Main d p_horaIh d p_horaFh d p_duracion D Main d p_horaIh d p_horaFh d p_duracion /Free // // Restar Horas // horaIh = %int(p_horaIh); horaFh = %int(p_horafh); Ajuste = *Off; If HoraFh < HoraIH; Select; when HoraI 12; HoraF = HoraF + 12; Ajuste = *On; EndSl; Endif; Durseg = (%DEc(%Diff(%Time(HoraFh:*Hms):%Time(HoraIH:*Hms):*s))); If ajuste; Durseg = Durseg + 12*60*60; Endif; Horasd= Durseg/60/60; Horas = Durseg/60/60; Minutosd= Horasd-Horas; Eval(h) Segundos= Minutosd*60*60; //redondear segundos Minutosd= Segundos/60; Minutos = Segundos/60; Eval(h) Segundos= (Minutosd-minutos)*60; //Horas if Horas = 0; phoras = '00'; Autora: Liliana Surez. E-mail: [email protected] S S S S S S S pr 15 8 6 0 15 8 6 0 6 0 n 15 8 EXTPGM('UTIME') 6a 6a 6a pi 6a 6a 6a

http://iseriesvenezuela.blogspot.com. Calcula la diferencia entre dos horas expresada en HH.MM.SS, en un arco de tiempo de 24 horas. else; If horas < 10; phoras = '0'+ %trim(%char(horas)); Else; phoras = %char(horas); Endif; Endif; //Minutos if minutos= 00; pminutos= '00'; else; If MInutos< 10; pminutos= '0' + %trim(%char(Minutos)); else; pminutos= %char(Minutos); Endif; Endif; //Segundos if segundos= 00; psegundos= '00'; else; If segundos < 10; psegundos= '0'+ %trim(%char(segundos)); else; psegundos= %char(segundos); Endif; Endif; if pduracion= ' '; p_duracion = '000000'; else; p_duracion = pduracion; Endif; //******** *InLr = *ON; /End-Free http://iseriesvenezuela.blogspot.com Email: [email protected]

Autora: Liliana Surez. E-mail: [email protected]