Question

Supposons que j'ai 12 position d'un champ de temps d'attente d'enregistrement de 8 octets. Puis-je comparer avec horodatage en cours? Puis-je faire des opérations arithmétiques sur ce dépôt comme l'ajout d'une heure ou soustraction de quelques minutes, etc. Vos réponses seront très appréciées. Merci!

Addendum .. pour une meilleure compréhension:

J'ai besoin de votre aide pour obtenir des champs de temps par rapport lors de l'écriture des enregistrements de sortie. Par exemple, j'ai 12 position de l'horodatage fichier hloding de 8 octets. Je veux écrire sur la sortie lorsque l'horodatage sur l'enregistrement est inférieur ou égal à l'horodatage en cours d'une heure. Dans le processus d'atteindre ce que je suis coincé au-dessous:

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

ce qui pourrait être la représentation des données (à la place de ?? pour cela.)

Avant tout peut nous y parvenir en utilisant SORT? Si oui, s'il vous plaît carte SORT gimme (modifier ma carte si possible sinon Donne-moi votre version). Et s'il vous plaît partager le matériel / mise en pension à temps et des comparaisons de date et d'une meilleure gestion. Merci à l'avance de l'aide.

Cordialement, Raja.

Était-ce utile?

La solution

Je pense voir ce que vous essayez de faire, mais ont des doutes quant à savoir si cela fonctionnera. Ce sont mes pensées:

  • Je n'ai jamais vu & TIME1 (c) chaîne de caractères utilisée pour la sortie. Par exemple: BUILD OUTREC (1,11,12, et TIME1 (:)) placera l'heure actuelle dans HH: MM: SS dans l'enregistrement de sortie commençant à la position 12. A la ma knowedge, TIME ne peut pas être utilisé dans un ICETOOL / DFSORT COND déclaration que vous avez indiqué dans votre question.
  • Même si TIME ont été pris en charge dans les COND déclarations, les +/- opérateurs ne sont pas pris en charge que vous pourriez ont vu avec DATE (par exemple. DATE1 + 1 pour obtenir la date actuelle plus 1 jour). Ajout d'une constante à un TIME ne sont pas pris en charge.
  • Avez-vous donné toute considération à ce qui se passerait si votre travail devait exécuter quelques minutes avant minuit? Ajout d'une heure à l'heure provoque un rouleau vers le matin du lendemain. À ce moment-là vous nécessité de prendre la date en condideration dans le COND.

Quelque chose que le travail pourrait: Ajouter une pré-étape pour exécuter un REXX, ou un autre, prgram. Que ce programme générer tout ou partie de la INCLURE déclarations utilisées dans une étape de ICETOOL ultérieure. Voici une procédure REXX exemple que va créer une instruction INCLURE similaire à celle donnée dans votre question. Le dossier est écrit au dossier attribué à 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

Attribuer ce fichier à l'instruction de contrôle de ICETOOL approprié DD et il devrait fonctionner pour vous.

Attention: Cet exemple ne traite pas des ajustements qui pourraient être nécessaires aux paramètres de COND en cas de minuit de renversement.

Remarque: Si vous avez stocké la procédure REXX ci-dessus dans un PDS comme: "MY.REXX (FOO)", votre pré-étape JCL ressemblerait à quelque chose comme:

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

Le '1' suivant% FOO est le numéro de DELTA heures référencés dans la procédure.

Autres conseils

Si vous DFSORT est assez mise à jour, Octobre 2010, date5 aura l'équivalent de DATE4 mais y compris microsecondes, donc comme un « horodatage » DB2.

 OPTION COPY
 INREC OVERLAY=(1:DATE5)

donne

2013-04-08-19.29.41.261377
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top