+ struct iscz1_code_info *p = vp;
+ struct it_key tkey;
+ int d;
+
+ if (mode == ISAMC_ENCODE)
+ {
+ memcpy (&tkey, *src, sizeof(struct it_key));
+ d = tkey.sysno - p->key.sysno;
+ iscz1_encode_int (d, dst);
+ if (d)
+ {
+ p->key.sysno = tkey.sysno;
+ p->key.seqno = 0;
+ }
+ iscz1_encode_int (tkey.seqno - p->key.seqno, dst);
+ p->key.seqno = tkey.seqno;
+ (*src) += sizeof(struct it_key);
+ }
+ else
+ {
+ d = iscz1_decode_int ((unsigned char **) src);
+ if (d)
+ {
+ p->key.sysno += d;
+ p->key.seqno = 0;
+ }
+ d = iscz1_decode_int ((unsigned char **) src);
+ p->key.seqno += d;
+ memcpy (*dst, &p->key, sizeof(struct it_key));
+ (*dst) += sizeof(struct it_key);
+ }
+}
+#endif
+
+ISAMC_M key_isamc_m (void)
+{
+ static ISAMC_M me = NULL;
+
+ if (me)
+ return me;
+
+ me = isc_getmethod ();
+
+ me->compare_item = key_compare;
+
+ me->code_start = iscz1_code_start;
+ me->code_item = iscz1_code_item;
+ me->code_stop = iscz1_code_stop;
+
+ me->debug = atoi(res_get_def (common_resource, "isamcDebug", "0"));
+
+ logf (LOG_LOG, "ISAMC system active");
+ return me;