En la TAATOOL existía un comando ADDTIM.

 

Aquí va la version traducida: un CMD (ADDTIM)  y un CLP (ADDTIMCL).

En el fuente del comando aparece el modo de creación.

Saludos 

Ignacio 

 

 

________________________________

De: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] En nombre de Albert López
Enviado el: Miércoles 14 de Noviembre de 2007 11:08
Para: [email protected]
Asunto: Hora...

 


Hola a todos, 
sabeis de alguna funcion para sumarle minutos a una hora en CLLE ?... 

O sea,... teniendo por ejemplo.. 

RTVSYSVAL  SYSVAL(QTIME) RTNVAR(&HORA) 

poder hacer algo parecido a HORA + 5, para sumar 5 minutos. 

Ya sé que con RPG se puede hacer... pero me interessaria poderlo hacer en una 
CLLE, si es posible, 
Gracias de antemano...

Albert López 
I.T. Department 
Departamento de Sistemas 
[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>  
Ext. 1129

 

 

  FLUIDRA | Filadors, 35-41 Planta 4a | 08208 Sabadell - Barcelona | Spain | 
Tel. +34 937 243 900 | Fax. +34 937 238 665 | www.fluidra.com 
<http://www.fluidra.com/>      

  This e-mail may contain confidential or priviliged information. If you are 
not the intended recipient please advise by return email and delete immediately 
without regarding or fowarding to others. 

P   Antes de imprimir este mensaje, asegúrese de que es necesario. El medio 
ambiente está en nuestra mano. Please consider your environmental 
responsibility before printing this e-mail. 

 

<<image001.gif>>

/* ADDTIMCL - Add time   ** DE TAATOOL **  */
             PGM        PARM(&NBRSEC &ENDTIM &ENDDAT &ENDHR &ENDMIN +
                          &BGNTIM &BGNDAT)
             DCL        VAR(&NBRSEC) TYPE(*DEC) LEN(5)
             DCL        VAR(&ENDTIM) TYPE(*CHAR) LEN(6)
             DCL        VAR(&ENDDAT) TYPE(*CHAR) LEN(6)
             DCL        VAR(&ENDHR) TYPE(*CHAR) LEN(2)
             DCL        VAR(&ENDMIN) TYPE(*CHAR) LEN(2)
             DCL        VAR(&BGNTIM) TYPE(*CHAR) LEN(6)
             DCL        VAR(&BGNDAT) TYPE(*CHAR) LEN(6)
             DCL        VAR(&DAYS) TYPE(*DEC) LEN(5 0)
             DCL        VAR(&TIMEA) TYPE(*CHAR) LEN(6)
             DCL        VAR(&WORK2) TYPE(*DEC) LEN(2 0)
             DCL        VAR(&HRS) TYPE(*DEC) LEN(5 0)
             DCL        VAR(&MIN) TYPE(*DEC) LEN(5 0)
             DCL        VAR(&SEC) TYPE(*DEC) LEN(5 0)
             DCL        VAR(&DATEA) TYPE(*CHAR) LEN(6)
             DCL        VAR(&DATEN) TYPE(*DEC) LEN(6 0)
             DCL        VAR(&NEWDAT) TYPE(*CHAR) LEN(6)
             DCL        VAR(&ERRORSW) TYPE(*LGL) /* Std err */
             DCL        VAR(&MSGID) TYPE(*CHAR) LEN(7) /* Std err */
             DCL        VAR(&MSGDTA) TYPE(*CHAR) LEN(100) /* Std err */
             DCL        VAR(&MSGF) TYPE(*CHAR) LEN(10) /* Std err */
             DCL        VAR(&MSGFLIB) TYPE(*CHAR) LEN(10) /* Std err */
             DCL        VAR(&KEYVAR) TYPE(*CHAR) LEN(4) /* Std err */
             MONMSG     MSGID(CPF0000) EXEC(GOTO CMDLBL(STDERR1)) /* +
                          Std err */
             CHGVAR     VAR(&SEC) VALUE(&NBRSEC) /* Parm */
             IF         COND(&BGNTIM *EQ 'CURTIM') THEN(DO) /* Use +
                          curr time */
             RTVSYSVAL  SYSVAL(QTIME) RTNVAR(&TIMEA)
             ENDDO      /* Use curr time */
             ELSE       CMD(CHGVAR VAR(&TIMEA) VALUE(&BGNTIM)) /* +
                          Begin time */
             CHGVAR     VAR(&WORK2) VALUE(%SST(&TIMEA 1 2)) /* +
                          Extract hours */
             CHGVAR     VAR(&HRS) VALUE(&WORK2) /* Numeric hours */
             CHGVAR     VAR(&WORK2) VALUE(%SST(&TIMEA 3 2))
             CHGVAR     VAR(&MIN) VALUE(&WORK2) /* Minutes */
             CHGVAR     VAR(&WORK2) VALUE(%SST(&TIMEA 5 2))
             CHGVAR     VAR(&SEC) VALUE(&SEC + &WORK2) /* Seconds */
 SECLOOP:    IF         COND(&SEC *GE 60) THEN(DO) /* More than 60 +
                          secs */
             CHGVAR     VAR(&SEC) VALUE(&SEC - 60)
             CHGVAR     VAR(&MIN) VALUE(&MIN + 1)
             GOTO       CMDLBL(SECLOOP)
             ENDDO      /* More than 60 secs */
 NEGSEC:     IF         COND(&SEC *LT 0) THEN(DO) /* Negative +
                          seconds */
             CHGVAR     VAR(&SEC) VALUE(&SEC + 60)
             CHGVAR     VAR(&MIN) VALUE(&MIN - 1)
             GOTO       CMDLBL(NEGSEC)
             ENDDO      /* Negative seconds */
 MINLOOP:    IF         COND(&MIN *GE 60) THEN(DO) /* More than 60 +
                          min */
             CHGVAR     VAR(&MIN) VALUE(&MIN - 60)
             CHGVAR     VAR(&HRS) VALUE(&HRS + 1)
             GOTO       MINLOOP
             ENDDO      /* More than 60 min */
 NEGMIN:     IF         COND(&MIN *LT 0) THEN(DO) /* Negative +
                          minutes */
             CHGVAR     VAR(&MIN) VALUE(&MIN + 60)
             CHGVAR     VAR(&HRS) VALUE(&HRS - 1)
             GOTO       CMDLBL(NEGMIN)
             ENDDO      /* Negative minutes */
 HRSLOOP:    IF         COND(&HRS *GE 24) THEN(DO) /* More than 24 +
                          hrs */
             CHGVAR     VAR(&HRS) VALUE(&HRS - 24)
             CHGVAR     VAR(&DAYS) VALUE(&DAYS + 1)
             GOTO       CMDLBL(HRSLOOP)
             ENDDO      /* More than 24 hrs */
 NEGHRS:     IF         (&HRS *LT 0) DO /* Negative hours */
             CHGVAR     VAR(&HRS) VALUE(&HRS + 24)
             CHGVAR     VAR(&DAYS) VALUE(&DAYS - 1)
             GOTO       CMDLBL(NEGHRS)
             ENDDO      /* Negative hours */
             CHGVAR     VAR(%SST(&ENDTIM 1 2)) VALUE(&HRS) /* +
                          Assemble end time */
             MONMSG     MSGID(MCH3601) /* Parm not specified */
             CHGVAR     %SST(&ENDTIM 3 2) &MIN
             MONMSG     MSGID(MCH3601) /* Parm not specified */
             CHGVAR     %SST(&ENDTIM 5 2) &SEC
             MONMSG     MSGID(MCH3601) /* Parm not specified */
             CHGVAR     &ENDHR &HRS
             MONMSG     MSGID(MCH3601) /* Parm not specified */
             CHGVAR     &ENDMIN &MIN
             MONMSG     MSGID(MCH3601) /* Parm not specified */
             IF         COND(&BGNDAT *EQ 'CURDAT') THEN(RTVSYSVAL +
                          SYSVAL(QDATE) RTNVAR(&DATEA)) /* Use curr +
                          date */
             ELSE       CMD(CHGVAR VAR(&DATEA) VALUE(&BGNDAT))
             CHGVAR     VAR(&DATEN) VALUE(&DATEA) /* Make numeric */
             IF         COND(&DAYS *NE 0) THEN(DO) /* Add for more +
                          days */
             ADDDAT     DAYS(&DAYS) TOVAR(&NEWDAT) DATE(&DATEN)
             CHGVAR     VAR(&DATEA) VALUE(&NEWDAT)
             ENDDO      /* Add for more days */
             CHGVAR     VAR(&ENDDAT) VALUE(&DATEA) /* Move to return +
                          parm */
             MONMSG     MSGID(MCH3601) /* Parm not specified */
             RMVMSG     CLEAR(*ALL)
             RETURN     /* Normal end of program */
 STDERR1:               /* Standard error handling routine */
             IF         COND(&ERRORSW) THEN(SNDPGMMSG MSGID(CPF9999) +
                          MSGF(QCPFMSG) MSGTYPE(*ESCAPE)) /* Func +
                          chk */
             CHGVAR     VAR(&ERRORSW) VALUE('1') /* Set to fail if +
                          error occurs */
 STDERR2:    RCVMSG     MSGTYPE(*DIAG) RMV(*NO) KEYVAR(&KEYVAR) +
                          MSGDTA(&MSGDTA) MSGID(&MSGID) MSGF(&MSGF) +
                          SNDMSGFLIB(&MSGFLIB)
             IF         COND(&KEYVAR *EQ '    ') THEN(GOTO +
                          CMDLBL(STDERR3))
             RMVMSG     MSGKEY(&KEYVAR)
             SNDPGMMSG  MSGID(&MSGID) MSGF(&MSGFLIB/&MSGF) +
                          MSGDTA(&MSGDTA) MSGTYPE(*DIAG)
             GOTO       STDERR2 /* Loop back for addl diagnostics */
 STDERR3:    RCVMSG     MSGTYPE(*EXCP) MSGDTA(&MSGDTA) MSGID(&MSGID) +
                          MSGF(&MSGF) SNDMSGFLIB(&MSGFLIB)
             SNDPGMMSG  MSGID(&MSGID) MSGF(&MSGFLIB/&MSGF) +
                          MSGDTA(&MSGDTA) MSGTYPE(*ESCAPE)
             ENDPGM

/* ADDTIMCL - Add time - ADDTIM cmd                                 */
/*PARMS PGM(ADDTIMCL) ALLOW((*IPGM)(*BPGM)) PRDLIB(DISTOOLS)        */
/*                                                                  */
/* The ADDTIM command adds a variable number of seconds to either   */
/*   the current time or an entered time and returns an ending      */
/*   time. An ending date is also returned. A beginning date can    */
/*   be entered.                                                    */
/*                                                                  */
/* The CPP is ADDTIMCL                                              */
/*                                                                  */
             CMD        PROMPT('Add time')
             PARM       KWD(NBRSECS) TYPE(*DEC) LEN(5 0) MIN(1) +
                          PROMPT('NBR de segundos a agregar(5 0)')
             PARM       KWD(ENDTIM) TYPE(*CHAR) LEN(6) RTNVAL(*YES) +
                          PROMPT('Hora final                 (6)')
             PARM       KWD(ENDDAT) TYPE(*CHAR) LEN(6) RTNVAL(*YES) +
                          PROMPT('Fecha final                (6)')
             PARM       KWD(ENDHR) TYPE(*CHAR) LEN(2) RTNVAL(*YES) +
                          PROMPT('Hora Final HH              (2)')
             PARM       KWD(ENDMIN) TYPE(*CHAR) LEN(2) RTNVAL(*YES) +
                          PROMPT('Minuto final MM            (2)')
             PARM       KWD(BGNTIM) TYPE(*CHAR) LEN(6) DFT(*CURTIM) +
                          REL(*GT 0) SPCVAL((*CURTIM CURTIM)) +
                          PROMPT('Hora inicial               (6)')
             PARM       KWD(BGNDAT) TYPE(*CHAR) LEN(6) DFT(*CURDAT) +
                          REL(*GT 0) SPCVAL((*CURDAT CURDAT)) +
                          PROMPT('Fecha inicial en FMT sist. (6)')

__________________________________________________
Forum.HELP400 es un servicio m&amp;#225;s de NEWS/400.
&amp;#169; Publicaciones Help400, S.L. - Todos los derechos reservados
http://www.help400.es
_____________________________________________________

Para darte de baja visita la siguente URL:
http://listas.combios.es/mailman/listinfo/forum.help400
  • Hora... Albert López
    • RE: Hora... Tellez Alvarado, Ignacio Andres

Responder a