*DECK COMPARE 
USETEXT TEXPRES 
USETEXT TOPTION 
FUNC COMPARE(A1, OP, A2)  B;
#----------------------------------------------------------------------#
#                                                                      #
#     C O M P A R E                                                    #
#                                                                      #
#        THIS IS A BOOLEAN FUNCTION. THE INPUT PARAMETERS ARE:         #
#                                                                      #
#            A1 - ADDRESS OF A 3-WORD ATTRIBUTE ENTRY                  #
#            OP - OPCODE OF THE TYPE OF COMPARISON DESIRED             #
#            A2 - ADDRESS OF A 3-WORD ATTRIBUTE ENTRY                  #
#                                                                      #
#        THE FUNCTION OBTAINS ITS RETURN VALUE FROM A CALL TO EXPEVAL. #
#     EFFECTIVELY,                                                     #
#                   COMPARE = (A1) OP (A2)                             #
  
  
  BEGIN 
      ITEM A1 I;             # ADDR OF ITEM/LITERAL ATTRIBUTES         #
      ITEM OP I;             # OPCODE OF DEISRED COMPARISON            #
      ITEM A2 I;             # ADDR OF ITEM/LITERAL ATTRIBUTES         #
  
XREF PROC EXPEVAL;
ARRAY COMPARESTACK[0:0]    S(16);  # SHORT EXPRESSION STACK            #
  BEGIN                            # TO COMPARE TWO ITEMS              #
    ITEM ATTR1 C(0,0,40); 
    ITEM LG1   U(0,12,12);
      ITEM MAJLG  U(2,9,9);                                             000190
    ITEM ATTR2 C(4,0,40); 
    ITEM LG2   U(4,12,12);
    ITEM COD1  U(8,0,42) = [O"70000012000000"];  # RESULT SIZE, OPERAND#
    ITEM OPER  U(8,36,6);                        # OPERATOR            #
    ITEM RES1  I(8,42,18);                       # RESULT ADDRESS      #
    ITEM COD2  U(12,0,42)= [O"70000000000070"];  # END OF STACK        #
    ITEM RES2  I(12,42,18);                      # RESULT ADDRESS      #
  END 
BASED ARRAY STKENTRY[0:0]  S(4);   # SAME AS PROG STACK SIZE           #
  BEGIN 
  ITEM ATTR0  C(0,0,40);
  END 
ITEM EVALRC I;               # RETURN CODE SET BY EXPEVAL (IGNORED)    #
  
DEF  CALL # # ; 
  
#----------------------------------------------------------------------#
  
          RES1 = LOC(LOGICALRESLT); 
          RES2 = LOC(LOGICALRESLT); 
          P<STKENTRY> = A1;       ATTR1 = ATTR0;
          P<STKENTRY> = A2;       ATTR2 = ATTR0;
          OPER = OP;
          IF MAJLG NQ 0            # IF COMPARING MAJOR PART OF FIELD  #
          THEN
            BEGIN 
            LG1 = MAJLG;           # SELECT LENGTH OF MAJOR PART       #
            LG2 = MAJLG;           # SELECT LENGTH OF MAJOR PART       #
            END 
  
          LOGICALRESLT = TRUE;
          PROGSTACKLOC = LOC(COMPARESTACK); 
          CALL EXPEVAL(EVALRC); 
          COMPARE = LOGICALRESLT; 
          RETURN; 
  END 
TERM
