¿Podemos comparar los campos de tiempo en la tarjeta de clasificación de JCL?

StackOverflow https://stackoverflow.com/questions/3820827

  •  26-09-2019
  •  | 
  •  

Pregunta

Supongamos que tengo 12 posición de un campo de tiempo de mantenimiento récord de 8 bytes. ¿Puedo compararlo con la marca de tiempo actual? ¿Puedo hacer operaciones aritméticas en las presentadas como agregar una hora o restar unos minutos, etc. Sus respuestas serán muy apreciadas? ¡Gracias!

Anexo .. Para una mejor comprensión:

Necesito su ayuda para que se comparen los campos de tiempo al escribir registros de la producción. Por ejemplo, tengo la duodécima posición de la marca de tiempo de Hloding de archivo de 8 bytes. Quiero escribir para la salida cuando la marca de tiempo en el registro es menor o igual a la marca de tiempo actual en una hora. En el proceso de alcanzar esto, estaba atrapado a continuación:

INCLUDE COND=(12,8,??,GE,&TIME1-1),

¿Cuál podría ser la representación de datos (en lugar de ?? para esto.)

Antes de todos, ¿podemos lograr esto usando el tipo? Si es así, por favor, dame una tarjeta de clasificación (enmendar mi tarjeta si es posible, de lo contrario, dame tu versión). Y también comparta el material/repose en comparaciones de tiempo y fecha y un mejor manejo. Gracias de antemano por la ayuda.

Saludos, Raja.

¿Fue útil?

Solución

Creo que vea lo que está tratando de hacer, pero tengo dudas sobre si funcionará. Estos son mis pensamientos:

  • Solo he visto el & Time1 (c) Cadena de caracteres utilizada para la salida. Por ejemplo: OutRec Build (1,11,12 y Time1 (:))Colocará el tiempo actual en el formato HH: MM: SS en el registro de salida a partir de la posición 12. A lo mejor de mi conocimiento, TIEMPO no se puede usar en un icetool/dfsort Condición declaración como ha indicado en su pregunta.
  • Incluso si TIEMPO fueron apoyados dentro Condición declaraciones, los operadores +/- no son compatibles como se puede haber visto con FECHA (p.ej. Fecha1+1 para obtener la fecha actual más 1 día). Agregando algo de constante a un TIEMPOno es apoyado.
  • ¿Ha considerado lo que pasaría si su trabajo se ejecutara unos minutos antes de la medianoche? Agregar una hora a la hora provoca un rollo a la mañana del día siguiente. En ese punto, debe llevar la fecha a la condadadía en el cond.

Algo que podría funcionar: Agregue un pre-pase para ejecutar un REXX, o algún otro, Prgram. Deje que este programa genere todo o parte delINCLUIR declaraciones utilizadas en un paso icetool posterior. Aquí hay un ejemplo de procedimiento REXX que creará un INCLUIR Declaración similar a la que se le da en su pregunta. El registro se escribe en el archivo asignado a dd cntlrec:

 /* REXX */
 PULL DELTA  /* Number of hours to add to current time */
 PARSE VALUE TIME('N') WITH HH ':' MM ':' SS /* current time */
 HH = LEFT((HH + DELTA) // 24, 2, '0')  /* add DELTA, check rollover */
 QUEUE " INCLUDE COND=(12,8,CH,GE,C'"HH":"MM":"SS"'),"
 EXECIO * DISKR CNTLREC(FINIS
 EXIT

Asigne este archivo a la declaración de control de ICETOOL apropiada DD y debería funcionar para usted.

Advertencia: Este ejemplo no se ocupa de los ajustes que podrían ser requeridos a los parámetros de Cond en caso de una medianoche.

Nota: Si almacenó el procedimiento Rexx anterior en un PDS como: "my.rexx (foo)", su JCL antes del paso se vería algo así como:

//RUNREXX   EXEC PGM=IKJEFT01           
//SYSEXEC  DD DSN=MY.REXX,DISP=SHR  
//SYSTSPRT DD SYSOUT=A                  
//SYSTSIN  DD *                         
%FOO
1                               
/*                                      
//

El '1' siguiente %FOO es el número delta de horas a las que se hace referencia en el procedimiento.

Otros consejos

If you DFSORT is fairly up-to-date, October 2010, DATE5 will have the equivalent of DATE4 but including microseconds, so like a DB2 "timestamp".

 OPTION COPY
 INREC OVERLAY=(1:DATE5)

gives

2013-04-08-19.29.41.261377
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top