Está en la página 1de 4

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: rpg.iseries@gmail.com

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: rpg.iseries@gmail.com

*| *| 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: rpg.iseries@gmail.com

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; 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: rpg.iseries@gmail.com 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: rpg.iseries@gmail.com

Autora: Liliana Surez. E-mail: rpg.iseries@gmail.com