*DECK CBSSITA 
USETEXT TSBP2CM                                                         007300
      FUNC CBSSITA(SSADDR); 
      BEGIN 
 #
* *   CBSSITA 
* *   C O GIMBER                                 10.9.74
* 
* DC  PURPOSE 
* 
*     FUNCTION RETURNS THE ADDRESS OF A SUBSCHEMA ITEM GIVEN THE ADDRESS
*     OF THE CORRESPONDING SCHEMA ITEM.  IF THE ITEM IS NOT FOUND IN
*     THE SUBSCHEMA, ZERO IS RETURNED.
* 
* DC  DESCRIPTION 
* 
*     READ ITEM ENTRY FROM SCHEMA 
*     SEARCH THRU ITEMS IN SUBSCHEMA RECORD (RECOFFSET SPECIFIED RECORD)
*       FOR ITEM. 
*     IF ITEM FOUND RETURN ITEM ADDRESS IN THE SUBSCHEMA. 
*     ELSE RETURN 0.
 #
  
# PASSED PARAMETERS#
      ITEM SSADDR;           #SCHEMA ITEM WORD ADDRESS# 
  
# EXTRNAL REFERENCES# 
      XREF PROC READSC;      #DA ROUTINE TO READ SCHEMA GIVEN ADDRESS#
  
# DECLARATIONS BETWEEN $BEGIN AND $END BLOCKS ARE SATISFIED BY SYMPL   #007320
# TEXTS AS INDICATED IN THE USETEXT DIRECTIVE.                         #007330
                                                                        007340
      $BEGIN     # SYMPL TEXT * TSBP2CM * USED #                        007350
                                                                        007360
*CALL CBPASS2CM 
                                                                        007380
      $END                                                              007390
      CONTROL EJECT;
# READ ITEM ENTRY FROM SCHEMA#
      READSC(SCHEMA,10,SSADDR); 
# GET ITEM NAME FROM SCHEMA ITEM ENTRY# 
      NAME = C<0,SCITMNAMLENC[0]>SCITMNAM30[SCITMNAMEPTR[0]]; 
# IF NO ITEM ENTRIES FOR SUBSCHEMA RECORD THEN RETURN WITH 0# 
      IF SBRECNXITEMP[RECOFFSET] EQ 0 THEN
        BEGIN 
        CBSSITA = 0;
        RETURN; 
        END 
# LOOP THRU ITEM ENTRIES FOR RECORD UNTIL END OR ITEM FOUND#
      SSITEMOFFSET = RECOFFSET+SBRECNXITEMP[RECOFFSET]; 
ITEMLOOP: 
      IF SBITMALIASP[SSITEMOFFSET] EQ 0 THEN
        BEGIN                #NO ALIAS# 
        IF NAME EQ C<0,SBITMNMELENC[SSITEMOFFSET]>SBITMNAME30 
                 [SSITEMOFFSET+SBITMNAMEPTR[SSITEMOFFSET]] THEN 
          BEGIN 
          CBSSITA = SSITEMOFFSET; 
          RETURN; 
          END 
        END 
      ELSE                   #ALIAS#
        BEGIN 
        ADDRESS = SSITEMOFFSET+SBITMALIASP[SSITEMOFFSET]; 
        IF NAME EQ C<0,SBITMALIASLC[SSITEMOFFSET]>SBITMALIAS30[ADDRESS] 
        THEN
          BEGIN 
          CBSSITA = SSITEMOFFSET; 
          RETURN; 
          END 
        END 
# GET NEXT ITEM ENTRY, RETURN IF LAST ENTRY#
      IF SBITMNEXTP[SSITEMOFFSET] EQ 0 THEN 
        BEGIN 
        CBSSITA = 0;
        RETURN; 
        END 
      SSITEMOFFSET = SSITEMOFFSET+SBITMNEXTP[SSITEMOFFSET]; 
      GOTO ITEMLOOP;
      END 
      TERM; 
