سؤال

لنفترض أن لدي 12 منصبًا لحقل وقت قياسي من 8 بايت. هل يمكنني مقارنته مع الطابع الزمني الحالي؟ هل يمكنني القيام بعمليات حسابية على تلك المرفوعة مثل إضافة ساعة أو طرح بضع دقائق وما إلى ذلك. ستكون ردودك موضع تقدير كبير. شكرًا!

إضافة .. لفهم أفضل:

أحتاج إلى مساعدتكم في الحصول على حقول زمنية مقارنة أثناء كتابة السجلات من الإخراج. على سبيل المثال لدي المركز الثاني عشر من ملف الطابع الزمني لـ 8Bytes. أريد أن أكتب للإخراج عندما يكون الطابع الزمني في السجل أقل من أو يساوي الطابع الزمني الحالي لمدة ساعة. في عملية تحقيق هذا ، كنت عالقًا في أدناه:

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

ماذا يمكن أن يكون تمثيل البيانات (في مكان ?? لهذا.)

قبل الجميع ، يمكننا تحقيق ذلك باستخدام النوع؟ إذا كان الأمر كذلك ، فيرجى gimme sort card (قم بتعديل بطاقتي إذا كان ذلك ممكنًا على خلاف ذلك ، قم بإعداد نسختك). وأيضًا مشاركة المواد/إعادة الريبو في الوقت المحدد والتاريخ وأفضل التعامل معها. شكرا مقدما على المساعدة.

التحيات ، رجا.

هل كانت مفيدة؟

المحلول

أعتقد أن ترى ما تحاول القيام به ، ولكن لديك شكوك حول ما إذا كان سيعمل. هذه هي أفكاري:

  • لقد رأيت فقط & time 1 (c) سلسلة الأحرف المستخدمة للإخراج. فمثلا: Outrec Build (1،11،12 ، و time 1 (:))سيضع الوقت الحالي في HH: MM: SS في سجل الإخراج بدءًا من الموضع 12. إلى أفضل ما لدي ، زمن لا يمكن استخدامه في icetool/dfsort كوند بيان كما أشرت في سؤالك.
  • حتى لو زمن تم دعمهم داخل كوند العبارات ، لا يتم دعم مشغلي +/- كما رأيتك تاريخ (على سبيل المثال. Date1+1 للحصول على موعد حالي بالإضافة إلى يوم واحد). إضافة بعض الثابت إلى أ زمنغير مدعومة.
  • هل أعطيت أي اعتبار لما سيحدث إذا كانت وظيفتك تعمل قبل دقائق قليلة من منتصف الليل؟ إن إضافة ساعة إلى الوقت يؤدي إلى تدحرج إلى الصباح من اليوم التالي. عند هذه النقطة ، تحتاج إلى أخذ التاريخ في التوصيف في كوند.

شيء قد يعمل: إضافة خطوة مسبقة لتشغيل rexx ، أو بعض prgram آخر. دع هذا البرنامج يولد كل أو جزء منتضمن البيانات المستخدمة في خطوة Icetool لاحقة. فيما يلي مثال على إجراء REXX الذي ينشئ تضمن بيان مشابه للذات الواردة في سؤالك. يتم كتابة السجل إلى الملف المخصص لـ 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

قم بتعيين هذا الملف لبيان التحكم في ICETOOL المناسبة DD ويجب أن يعمل من أجلك.

تحذير: لا يتعامل هذا المثال مع التعديلات التي قد تكون مطلوبة لمعلمات Cond في حالة منتصف الليل.

ملحوظة: إذا قمت بتخزين إجراء REXX أعلاه في PDS مثل: "my.rexx (foo)" ، سيبدو JCL قبل الخطوة مثل:

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

"1" بعد ٪ foo هو عدد الساعات الدلتا المشار إليها في الإجراء.

نصائح أخرى

إذا كانت DFSORT محدثة إلى حد ما ، أكتوبر 2010 ، فسيحصل Date5 على ما يعادل Date4 ولكن بما في ذلك microseconds ، لذلك مثل DB2 "Timestamp".

 OPTION COPY
 INREC OVERLAY=(1:DATE5)

يعطي

2013-04-08-19.29.41.261377
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top