Example:
ZCRC(X) NEW R,I,J,B,X1,K SET R=$ZBITSTR(8,0) FOR I=1:1:$L(X) S R=$ZBITXOR(R,$$BITIN($A(X,I))) QUIT $$BITOUT(R) ;CONVERT A BYTE TO A BIT STRING BITIN(X) SET X1=$ZBITSTR(8,0) FOR J=1:1:8 S B=X#2,X=X\2 i B s X1=$ZBITSET(X1,J,1) QUIT X1 ; CONVERT A BITSTRING TO A NUMBER BITOUT(X) SET X1=0 FOR K=1:1:8 I $ZBITGET(X,K) S X1=X1+(2**(K-1)) QUIT X1
This uses several $ZBIT functions to turn a character into a bit stream and return a coded value.
While this example illustrates the use of several of the $ZBIT functions, the following example produces identical results if you need to code the function illustrated above for production.
ZCRC(X) NEW R,I,J,B,X1,K SET R=$ZBITSTR(8,0) FOR I=1:1:$L(X) S R=$ZBITXOR(R,$C(0)_$E(X,I)) QUIT $A(R,2)
This example illustrates the use of $C to specify the number of invalid bits that exist at the end of the character string. In this case there are zero invalid bits.