Pergunta

Suponha que eu tenha 12 posição de um campo de retenção de 8 bytes. Posso compará -lo com o registro de data e hora atual? Posso fazer operações aritméticas que arquivadas como adicionar uma hora ou subtrair alguns minutos etc. suas respostas serão muito apreciadas. Obrigado!

Adendo .. Para uma melhor compreensão:

Preciso da sua ajuda para obter campos de tempo em comparação ao escrever registros da saída. Por exemplo, tenho a 12ª posição do arquivo de data e hora 8Bytes. Quero escrever para a saída quando o carimbo de data / hora no registro for menor ou igual ao registro de data e hora atual em uma hora. No processo de alcançar isso, fiquei preso abaixo:

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

Qual poderia ser a representação de dados (no lugar de ?? por esta.)

Antes de todos, podemos conseguir isso usando o tipo? Nesse caso, por favor, me dê um cartão de classificação (altere meu cartão, se viável, de outra forma me dê sua versão). E também compartilhe o material/repo no prazo e as comparações de data e melhor manuseio. Agradecemos antecipadamente pela ajuda.

Atenciosamente, Raja.

Foi útil?

Solução

Acho que veja o que você está tentando fazer, mas tenha dúvidas sobre se vai funcionar. Estes são meus pensamentos:

  • Eu só vi o & Time1 (c) String de caractere usada para saída. Por exemplo: ULLEC Build (1,11,12, & time1 (:))colocará o horário atual em HH: MM: formato SS no registro de saída, iniciando na posição 12. Da melhor do meu knowedge, TEMPO não pode ser usado em um ICETOOL/DFSORT Cond declaração como você indicou em sua pergunta.
  • Ainda que TEMPO foram apoiados dentro Cond declarações, os operadores +/- não são suportados como você pode ter visto com ENCONTRO (por exemplo. Date1+1 para obter data atual mais 1 dia). Adicionando um pouco constante a um TEMPOnão é suportado.
  • Você já considerou o que aconteceria se seu trabalho fosse correr alguns minutos antes da meia -noite? Adicionar uma hora ao tempo causa uma rolagem na manhã do dia seguinte. Nesse ponto, você precisa levar a data em condideração no cond.

Algo que pode funcionar: adicione uma pré-etapa para executar um rexx, ou algum outro, Prgram. Deixe este programa gerar todo ou parte doINCLUIR declarações usadas em uma etapa subsequente do Icetool. Aqui está um exemplo de procedimento rexx que criará um INCLUIR declaração semelhante à dada em sua pergunta. O registro é gravado no arquivo alocado para 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

Atribua este arquivo à instrução DD DD de controle Icetool apropriada e ele deve funcionar para você.

Aviso: Este exemplo não lida com ajustes que podem ser necessários para os parâmetros CONG no caso de uma meia -noite de capotamento.

Observação: Se você armazenasse o procedimento Rexx acima em um PDS como: "My.rexx (Foo)", sua JCL pré-Etapa ficaria algo como:

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

O '1' a seguir %Foo é o número delta de horas referenciadas no procedimento.

Outras dicas

Se você o DFSORT estiver bastante atualizado, outubro de 2010, o Date5 terá o equivalente a Date4, mas incluindo microssegundos, portanto, como um DB2 "Timestamp".

 OPTION COPY
 INREC OVERLAY=(1:DATE5)

2013-04-08-19.29.41.261377
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top