2016-06-14 15 views
0

変更をすばやく追跡するために、大きなCLOB値のハッシュを計算するDB2関数を探しています。他のエンジンは、CHECKSUM,CRC32またはMD5のような機能を有する。 LUWの機能はGET_HASH_VALUEですが、zOSでは利用できません。DB2 for zOSにCRC32または他のハッシュ関数がありますか?

制約:UDFまたはストアドプロシージャにアクセスできません。

ここでは、CRC32を計算する素早く汚れたコードの断片があります。これは約100文字までしか動作しません。

WITH crc(t,c,j) AS (
    SELECT 'Hello World!',4294967295,0 FROM SYSIBM.SYSDUMMY1 
    UNION ALL 
    SELECT SUBSTR(t,2),bitxor(c,ASCII(t)),8 FROM crc WHERE t>'' AND j=0 
    UNION ALL 
    SELECT t,BITXOR(c/2,BITAND(3988292384,-BITAND(c,1))),j-1 FROM crc WHERE j>0 
) 
SELECT RIGHT(HEX(BITNOT(c)),8) FROM CRC WHERE t='' AND j=0 

http://www.lammertbies.nl/comm/info/crc-calculation.htmlに対してチェック結果:

1 
-------- 
1C291CA3 

出典:http://www.hackersdelight.org/hdcodetxt/crc.c.txt

+0

これらの制約が当てはまるのは残念です。 Metal CまたはアセンブラーUDFは、オーバーヘッドが少なく、ここで不思議に思うでしょう。基本的なCRC32プログラムは、CBTテープ(z/OSフリーウェア)のWebサイトで入手できます。ファイル番号493を参照してください。 DB2 z/OSの目標は、z/OSとLUWを互換にすることです。拡張要求を開きます。 – zarchasmpgmr

答えて

関連する問題