*DECK EEXPEVAL
USETEXT TENVIRN 
USETEXT TREPORT 
USETEXT TRPTLST 
          PROC EEXPEVAL(A,RC);
          BEGIN 
      #THIS IS A PROC TO CHECK FOR BREAK ON ITEM, UPON RETURN,          007330
       RC IS SET TO 1 IF THE ITEM VALUE IS CHANGED, ELSE 0#             007340
              ITEM A,RC,FC,FA,CL; 
          ITEM I,J; 
          XREF PROC CMOVE;
              BASED ARRAY BUF1; ITEM B1 C(0,0,10);
              BASED ARRAY BUF2; ITEM B2 C(0,0,10);
              FC = FROMCHAR[A]; 
              FA = FROMADDRESS[A];
              CL = CHARLENGTH[A]; 
              RC = 0; 
          IF REPORTWORD3[A] EQ 0 THEN 
          BEGIN 
               # DESCRIBE ITEM, COMPARE THE 2 RECORDS IN CORE#          007010
              P<BUF1> = CURRENTSOURC; 
              P<BUF2> = PREVIOUSOURC; 
          END 
          ELSE
          BEGIN 
               # DEFINE ITEM, COMPARE VALUE WITH SAVED VALUE#           007030
       P<BUF1> = FROMADDRESS[A];
                # ADDRES OF VALUE#                                      007070
          FA = 0; 
       P<BUF2> = TOADDRESS[A];
                  #ADDRESS OF SAVED VALUE#                              007090
      I = (FC + CL + 9) / 10; 
             #NUMBER OF WORDS INVOLVED#                                 007050
          END 
              IF FC NQ 0 AND CL GQ 10-FC THEN 
              BEGIN 
              #COMPARED FIELD IS NOT WORD BOUNDARIED,                   007110
               AND INVOLVED MORE THAN 1 WORD#                           007120
                 IF C<FC,10-FC>B1[FA] NQ C<FC,10-FC>B2[FA] THEN 
             #VALUE IS CHANGED, SET RETURNCODE TO 1 BEFORE RETURN#      007140
          BEGIN RC = 1; GOTO CHK; END 
                 CL = CL - (10 - FC); 
                 FC = 0;
                 FA = FA + 1; 
                #1ST PART OF VALUE IS NOT CHANGE,DESCRIBE CHAR LG       007160
                 THAT HAS TO BE CHECK AND SET FROM CHAR POSITION        007170
                 TO 0#                                                  007180
              END 
            CONT: 
              IF CL LS 10 THEN GOTO LEFTOVER; 
                 #LESS THAN 10 CHARS HAS TO BE CHECK#                   007200
              IF B1[FA] NQ B2[FA] THEN
                    #VALUE IS CHANGED, SET RETURNCODE TO 1#             007250
          BEGIN RC = 1; GOTO CHK; END 
              FA = FA + 1;
              CL = CL - 10; 
                  #SO FAR THE VALUE IS STILL THE SAME, UPDATE THE PTR   007220
                    AND CONTINUE CHECKING#                              007230
              GOTO CONT;
            LEFTOVER: 
               #LESS THEN 1 WORD HAS TO BE CHECKED#                     007270
          IF CL EQ 0 THEN GOTO CHK; 
         IF C<FC,CL>B1[FA] NQ C<FC,CL>B2[FA] THEN RC = 1; 
              #IF VALUE IS CHANGED, SET RETURNCODE TO 1#                007290
        CHK:  
          IF REPORTWORD3[A] NQ 0 THEN 
          BEGIN 
              J = I * 10; 
              CMOVE(BUF1,0,J,BUF2,0); 
            #IF DEFINE ITEM, SAVE CURRENT VALUE FOR LATER USE#          007310
          END 
              RETURN; 
          END 
          TERM; 
