Kernel 8.0 APIs Banner
Office of Information and Technology (OIT) Banner
[skip navigation]

$$CRC32^XLFCRC(): Cyclic Redundancy Code 32

Reference Type: Supported, Category: Other Functions, ICR#: 3156

Description

The $$CRC32^XLFCRC extrinsic function computes a Cyclic Redundancy Code (CRC) of the 8-bit character string, using the following as the polynomial:

    X^32 + X^26 + X^23 + X^22 + X^16 + X^12 + X^11 + X^10 + X^8 + X^7 + X^5 + X^4 + X^2 + X + 1

The optional seed input parameter can supply an initial value, which allows for running CRC calculations on multiple strings. If the seed input parameter is not specified, a default value of 4,294,967,295 (2^32-1) is assumed. The value of seed is limited to 0 <= seed <= 2^32. The function value is between 0 and 2^32.

Format

  $$CRC32^XLFCRC(string[,seed])

Input Parameters

string: (required) String upon which to compute the CRC32.
seed: (optional) Seed value. Needed to compute the CRC32 over multiple strings.

Output

returns: Returns the Cyclic Redundancy Code (CRC) 32 value.

Example 1

SET CRC=$$CRC32^XLFCRC(string)

A checksum can also be calculated over multiple strings.

SET (I,C)=0
FOR SET I=$ORDER(X(I)) QUIT:'I DO 
. SET C=$$CRC32^XLFCRC(X(I),C)

Or:

SET I=0,C=4294967295
FOR SET I=$ORDER(X(I)) QUIT:'I DO 
. SET C=$$CRC32^XLFCRC(X(I),C)

As long as the save method is used all the time.

Example 2

CRC322 ;Test call CRC32^XLFCRC multiple times
S TEXT="Now is the time for all good children",TEXT2="to come to the aid of their country."
S CRC=0,CRC=$$CRC32^XLFCRC(TEXT,CRC)
If 715820230=$$CRC32^XLFCRC(TEXT2,CRC) WRITE !,"CRC32 OK"
Q

NOTE: These have been approved for inclusion in a future ANSI M language standard as part of the library.