*DECK DB$SR56 
USETEXT MD10CTX 
USETEXT SCANTXT 
      PROC DB$SR56; 
      BEGIN 
 #
* *   DB$SR56 - CHECK FOR DUPLICATE CHANGE ENTRY PAGE  1
* *   R. M. PAPPE                                DATE  07/30/80 
* 
* DC  PURPOSE 
* 
*     CHECK FOR DUPLICATE CHANGE ENTRY. 
* 
* DC  ENTRY CONDITIONS
* 
*     "CHANGE" CLAUSE IS ENCOUNTERED IN THE INPUT STREAM BY MODSET
*     (WITHIN DB$SNTX). 
* 
* DC  EXIT CONDITIONS 
* 
*     IF FIRST CHANGE FOR THE ENTRY, RETURN IS TO DB$YES. OTHERWISE,
*     RETURN IS TO DB$NO. 
* 
* DC  CALLING ROUTINES
* 
*     DB$SNTX - SYNTAX CRACKER (SYNGEN) 
* 
* DC  CALLED ROUTINES 
* 
# 
      XREF
        BEGIN 
        PROC DB$NO;          # SYNTAX TABLE DRIVER -NO- RETURN         #
        PROC DB$YES;         # SYNTAX TABLE DRIVER -YES- RETURN        #
        END 
# 
* 
* DC  NON-LOCAL VARIABLES MODIFIED
* 
*     NONE
* 
* DC  DESCRIPTION 
* 
*     CHECK IF THE CHANGE CLAUSE TO BE PROCESSED WAS ALREADY
*     ENCOUNTERED IN THE INPUT FILE, (E.G. DUPLICATE
*     "CHANGE TRANSACTION" STATEMENTS FOR THE SAME SCHEMA). 
*     MDPFINAME IS USED TO CHECK IF THE CLAUSE WAS ALREADY
*     ENCOUNTERED. IF MDPFINAME IS NON-ZERO, THE PERMANENT FILE 
*     INFORMATION FOR THE CURRENT FILE TYPE WAS MODIFIED IN THE 
*     SAME RUN, THUS, INDICATING DUPLICATE CHANGE CLAUSES.
*     FOR TRANSACTION RECOVERY, THE UPDATE AND UNIT LIMITS MUST 
*     ALSO BE CHECKED SINCE THEIR VALUES MAY BE CHANGED 
*     WITHOUT MODIFYING THE PERMANENT FILE INFORMATION. 
*     IF THE CHANGE STATEMENT WAS ALREADY SEEN, RETURN IS TO DB$NO. 
*     IF THE CHANGE STATEMENT IS THE FIRST OCCURRENCE RETURN
*     IS TO DB$YES. 
* 
 #
  
      CONTROL EJECT;
#     B E G I N     E X E C U T A B L E     C O D E                    #
  
      IF MDPFINAME[CURFILTYP] NQ 0
      THEN
        BEGIN 
        DB$NO;
  
        END 
      IF CURFILTYP EQ S"TRF" # TRANSACTION RECOVERY FILE               #
      THEN
        BEGIN 
        IF UNITLIM NQ 0    # CHECK IF UPDATE AND UNIT LIMIT VALUES   #
          OR UPDLIM NQ 0   # WERE ALREADY CHANGED                    #
        THEN
          BEGIN 
          DB$NO;
  
          END 
        END 
      DB$YES; 
  
      END 
      TERM
