質問
8バイトのレコード保持時間フィールドの12の位置があるとします。現在のタイムスタンプと比較できますか? 1時間を追加したり、数分を差し引いたりするなど、提出された操作について算術操作を行うことはできますか?あなたの回答は高く評価されます。ありがとう!
補遺..より良い理解のために:
出力からレコードを書いている間、時間フィールドを比較する際にあなたの助けが必要です。たとえば、8バイトのファイルhlodingタイムスタンプの12番目の位置があります。レコード上のタイムスタンプが現在のタイムスタンプ以下で1時間等しい場合、出力に書き込みたいと思います。これを達成する過程で、私は下で立ち往生していました:
INCLUDE COND=(12,8,??,GE,&TIME1-1),
データ表現は何でしょうか(の代わりに ??
このため。)
すべての前に、ソートを使用してこれを達成できますか?もしそうなら、Gimmeソートカードをお願いします(それ以外の場合はバージョンをGimme Gimmeバージョンを修正してください)。また、時間と日付の比較とより良い取り扱いに基づいて、素材/レポを共有してください。助けてくれてありがとう。
よろしく、ラジャ。
解決
あなたがやろうとしていることを見ていると思いますが、それがうまくいくかどうかについて疑問があります。これらは私の考えです:
- 私は今まで見たことがあります &time1(c) 出力に使用される文字文字列。例えば: outrec build(1,11,12、&time1(:))現在の時間はHH:MM:SS形式をポジション12から始まる出力レコードに配置します。 時間 icetool/dfsortで使用することはできません cond あなたがあなたの質問に示したように声明。
- もしそれでも 時間 内でサポートされていました cond ステートメント、+/-オペレーターはあなたが見たかもしれないようにサポートされていません 日にち (例えば。 日付1+1 現在の日付と1日を取得するには)。 aに定数を追加します 時間サポートされていません。
- あなたの仕事が真夜中の数分前に走るとどうなるかについて何か考慮を与えましたか?時間に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
/*
//
%fooに次の「1」は、手順で参照されるデルタ時間数です。
他のヒント
DFSORTがかなり最新の場合、2010年10月、Date5は日付4に相当するが、db2 "タイムスタンプ"のようにマイクロ秒を含む。
OPTION COPY
INREC OVERLAY=(1:DATE5)
与えます
2013-04-08-19.29.41.261377