*DECK CBCKITM 
USETEXT TSBP2CM 
      PROC CBCKITM; 
      BEGIN 
  
# EXTERNAL REFERENCES#
      XREF PROC CBERROR;       #ERROR HANDLER#
      XREF PROC CBCKEL;      #PROC TO DO ELEM ITEM CHECKING#
      XREF PROC CBCKOC;     #PROC TO DO OCCUR CHECKING# 
      XREF PROC CBCKSS;        #PROC TO CHECK ITEMS IN SUBSCH ONLY# 
      XREF FUNC CBSCITM;     #FIND SCH ADDR GIVEN SBSCH ITEM ADDR#
  
      CONTROL EJECT;
# SET SSTYPE TO SUBSCHEMA ITEM TYPE#
      SSTYPE = SBITMTYPE[SSITEMOFFSET]; 
# FIND SCHEMA ITEM ENTRY# 
      SCITEMOFFSET = CBSCITM(SSITEMOFFSET); 
      IF SCITEMOFFSET LS 0
      THEN
# **SCHEMA ITEM NOT FOUND.  DO CHECKS FOR SS ONLY#
        BEGIN 
        SCBEGWORD[CURRENT] = SCBEGWORD[CURRENT-1];
        SCBEGBIT[CURRENT] = SCBEGBIT[CURRENT-1];
        CBCKSS; 
        RETURN; 
        END 
# IF POSITION OF ITEM DISAGREES WITH SCHEMA POSITION THEN ERROR#
      IF SCITMDOMORD[SCITEMOFFSET] NQ SCPOINTER[CURRENT-1] THEN 
        CBERROR(312,TRUE);
# CHECK ORDER OF SCHEMA AGAINST SUBSCHEMA#
      IF SCNEXTPTR NQ SCITEMOFFSET THEN 
        BEGIN 
        IDENTICAL[CURRENT-1] = FALSE; 
        END 
      IF SCITEMNXTPTR[SCITEMOFFSET] NQ 0 THEN 
        SCNEXTPTR = SCITEMOFFSET+SCITEMNXTPTR[SCITEMOFFSET];
      ELSE
        SCNEXTPTR = 0;
# ITEM FOUND IN SCHEMA# 
      SCTYPE = SCITMDATATYP[SCITEMOFFSET];
      SCPOINTER[CURRENT] = SCITMORDNUM[SCITEMOFFSET]; 
# SAVE BEGINNING POSITION OF ITEM IN SCHEMA RECORD# 
      SCBEGWORD[CURRENT]
        = SCBEGWORD[CURRENT-1]+SCITEMPBWP[SCITEMOFFSET];
      SCBEGBIT[CURRENT] 
        = SCBEGBIT[CURRENT-1]+SCITEMBBP[SCITEMOFFSET];
      IF SCBEGBIT[CURRENT] GQ 60 THEN 
        BEGIN 
        SCBEGWORD[CURRENT] = SCBEGWORD[CURRENT]+1;
        SCBEGBIT[CURRENT] = SCBEGBIT[CURRENT]-60; 
        END 
# CHECK FOR SAME LOCATION#
      IF SCBEGWORD[CURRENT] EQ SSBEGWORD[CURRENT] 
      AND SCBEGBIT[CURRENT] EQ SSBEGBIT[CURRENT]
      THEN
        SBITMSAMLOC[SSITEMOFFSET] = TRUE; 
# IT BOTH ITEM ELEMENTARY THEN CBCKEL#
      IF SCTYPE EQ 1 AND SSTYPE EQ 1 THEN 
        BEGIN 
        CBCKEL; 
        RETURN; 
        END 
# IF SC TYPE VECTOR AND SS TYPE VECTOR OR ELEM THEN CHECKVECTOR#
      IF (SCTYPE EQ 4 OR SCTYPE EQ 5 OR SCTYPE EQ 7)
      AND (SSTYPE EQ 4 OR SSTYPE EQ 5 OR SSTYPE EQ 7 OR SSTYPE EQ 1)
      THEN
        BEGIN 
        CBCKOC; 
        CBCKEL; 
        RETURN; 
        END 
       # IF BOTH ITEMS RG THEN CHECK OCCURS AND ELEM ITEM CHECKS.      #
      IF (SCTYPE EQ 2 OR SCTYPE EQ 3) 
      AND (SSTYPE EQ 2 OR SSTYPE EQ 3)
      OR (SCTYPE EQ 6 AND SSTYPE EQ 6)
      THEN
        BEGIN 
        CBCKOC; 
        CBCKEL; 
        RETURN; 
        END 
# ERROR.  SUBSCHEMA ITEM TYPE DOES NOT AGREE WITH SCHEMA# 
      CBERROR(306,TRUE);
      END 
      TERM; 
