Domanda

Supponiamo di avere 12 posizioni di un campo di tempo record di 8 byte. Posso confrontarlo con l'attuale timestamp? Posso fare operazioni aritmetiche su quelle presentate come aggiungere un'ora o sottrarre pochi minuti ecc. Le tue risposte saranno molto apprezzate. Grazie!

Addendum .. per una migliore comprensione:

Ho bisogno del tuo aiuto per ottenere campi temporali rispetto durante la scrittura di record dall'output. Ad esempio, ho la dodicesima posizione del timestamp Hloding di 8Bytes. Voglio scrivere in output quando il timestamp sul record è inferiore o uguale al timestamp corrente di un'ora. Nel processo di raggiungimento di questo sono rimasto bloccato sotto:

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

Quale potrebbe essere la rappresentazione dei dati (al posto di ?? per questo.)

Prima di tutti possiamo ottenere questo usando l'ordinamento? In tal caso, dammi una scheda di ordinamento (modifica la mia carta se possibile altrimenti dammi la tua versione). E anche per favore condividi il materiale/repository in tempo e data confronti e una migliore gestione. Grazie in anticipo per l'aiuto.

Saluti, Raja.

È stato utile?

Soluzione

Penso che vedi cosa stai cercando di fare, ma hai dubbi sul fatto che funzionerà. Questi sono i miei pensieri:

  • Ho mai visto solo il & Time1 (c) stringa di caratteri usata per l'output. Per esempio: OUTTERC BUILD (1,11,12 e time1 (:))posizionerà l'ora corrente in HH: MM: SS nel record di output a partire dalla posizione 12. Al meglio del mio knowgedge, VOLTA non può essere utilizzato in un IceTool/DFSort Cond Dichiarazione come hai indicato nella tua domanda.
  • Anche se VOLTA sono stati supportati all'interno Cond dichiarazioni, gli operatori +/- non sono supportati come potresti aver visto con DATA (per esempio. Data1+1 Per ottenere la data corrente più 1 giorno). Aggiungendo un po 'di costante a a VOLTAnon è supportato.
  • Hai preso in considerazione cosa accadrebbe se il tuo lavoro dovesse correre pochi minuti prima di mezzanotte? L'aggiunta di un'ora all'epoca provoca un rotolo alla mattina del giorno successivo. A quel punto è necessario prendere la data nel condsa nel cond.

Qualcosa che potrebbe funzionare: aggiungi un pre-fase per eseguire un rexx o qualche altro, prgram. Lascia che questo programma generi tutto o parte delINCLUDERE dichiarazioni utilizzate in un successivo passaggio ICETool. Ecco un esempio di procedura Rexx che creerà un INCLUDERE Dichiarazione simile a quella fornita nella tua domanda. Il record è scritto sul file assegnato 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

Assegna questo file all'istruzione di controllo IceTool appropriata DD e dovrebbe funzionare per te.

Avvertimento: Questo esempio non si occupa di aggiustamenti che potrebbero essere richiesti ai parametri Cond in caso di mezzanotte di rollover.

Nota: Se hai memorizzato la procedura REXX sopra in un PDS come: "My.rexx (foo)", il tuo JCL pre-fase sembrerebbe qualcosa di simile:

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

Il '1 "successivo %foo è il numero delta di ore a cui si fa riferimento nella procedura.

Altri suggerimenti

Se DFSort è abbastanza aggiornato, ottobre 2010, Date5 avrà l'equivalente di Date4 ma compresi i microsecondi, quindi come un "timestamp" DB2.

 OPTION COPY
 INREC OVERLAY=(1:DATE5)

2013-04-08-19.29.41.261377
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top