*DECK DCUPD24 
       IDENTIFICATION DIVISION. 
       PROGRAM-ID. UPD24. 
      ******************************************* 
      * 
      *    S U B S C H E M A   E N T R Y
      * 
      ******************************************* 
       ENVIRONMENT DIVISION.
       CONFIGURATION SECTION. 
       SOURCE-COMPUTER.  CYBER. 
       OBJECT-COMPUTER.  CYBER. 
       DATA DIVISION. 
*CALL UPDCS 
*CALL DCDWA24 
       01  AQUAL-DETAIL.
           03  LINE-TYPE-AQUAL         PICTURE X. 
           03  FILLER                  PICTURE X(146).
      *    SUBSCHEMA ENTRY - SSREL CAT - ID AQUALIFIERS 1,2,3 
       01  SSREL-SS-QUAL1  REDEFINES AQUAL-DETAIL.
           03  SSREL-SS-AQUAL1-LINETYP PICTURE X. 
           03  SSREL-SS-AQUAL1        PICTURE X(32).
           03  SSREL-SS-AQUAL1-SUB1   PICTURE X(4). 
           03  SSREL-SS-AQUAL1-SUB2   PICTURE X(4). 
           03  SSREL-SS-AQUAL1-SUB3   PICTURE X(4). 
           03  SSREL-SS-AQUAL2        PICTURE X(32).
           03  SSREL-SS-AQUAL2-SUB1   PICTURE X(4). 
           03  SSREL-SS-AQUAL2-SUB2   PICTURE X(4). 
           03  SSREL-SS-AQUAL2-SUB3   PICTURE X(4). 
           03  SSREL-SS-AQUAL3        PICTURE X(32).
           03  SSREL-SS-AQUAL3-SUB1   PICTURE X(4). 
           03  SSREL-SS-AQUAL3-SUB2   PICTURE X(4). 
           03  SSREL-SS-AQUAL3-SUB3   PICTURE X(4). 
       01 AQUAL4-DETAIL.
           03  LINE-TYPE-AQUAL4        PICTURE X. 
           03  FILLER                  PICTURE X(146).
      *    SUBSCHEMA ENTRY - SSREL CAT - ID AQUALIFIERS 4 AND 5 
       01  SSREL-SS-AQUAL4-5  REDEFINES AQUAL4-DETAIL.
           03  SSREL-SS-AQUAL4-LINETYP PICTURE X. 
           03  SSREL-SS-AQUAL4        PICTURE X(32).
           03  SSREL-SS-AQUAL4-SUB1   PICTURE X(4). 
           03  SSREL-SS-AQUAL4-SUB2   PICTURE X(4). 
           03  SSREL-SS-AQUAL4-SUB3   PICTURE X(4). 
           03  SSREL-SS-AQUAL5        PICTURE X(32).
           03  SSREL-SS-AQUAL5-SUB1   PICTURE X(4). 
           03  SSREL-SS-AQUAL5-SUB2   PICTURE X(4). 
           03  SSREL-SS-AQUAL5-SUB3   PICTURE X(4). 
       01  BQUAL-DETAIL.
           03  LINE-TYPE-BQUAL         PICTURE X. 
           03  FILLER                  PICTURE X(146).
      *    SUBSCHEMA ENTRY - SSREL CAT - ID BQUALIFIERS 1,2,3 
       01  SSREL-SS-BQUAL1-3  REDEFINES BQUAL-DETAIL. 
           03  SSREL-SS-BQUAL1-LINETYP PICTURE X. 
           03  SSREL-SS-BQUAL1        PICTURE X(32).
           03  SSREL-SS-BQUAL1-SUB1   PICTURE X(4). 
           03  SSREL-SS-BQUAL1-SUB2   PICTURE X(4). 
           03  SSREL-SS-BQUAL1-SUB3   PICTURE X(4). 
           03  SSREL-SS-BQUAL2        PICTURE X(32).
           03  SSREL-SS-BQUAL2-SUB1   PICTURE X(4). 
           03  SSREL-SS-BQUAL2-SUB2   PICTURE X(4). 
           03  SSREL-SS-BQUAL2-SUB3   PICTURE X(4). 
           03  SSREL-SS-BQUAL3        PICTURE X(32).
           03  SSREL-SS-BQUAL3-SUB1   PICTURE X(4). 
           03  SSREL-SS-BQUAL3-SUB2   PICTURE X(4). 
           03  SSREL-SS-BQUAL3-SUB3   PICTURE X(4). 
       01  BQUAL4-DETAIL. 
           03  LINE-TYPE-BQUAL4        PICTURE X. 
           03  FILLER                  PICTURE X(146).
      *    SUBSCHEMA ENTRY - SSREL CAT - ID BQUALIFIERS 4 AND 5 
       01  SSREL-SS-BQUAL4-5  REDEFINES BQUAL4-DETAIL.
           03  SSREL-SS-BQUAL4-LINETYP PICTURE X. 
           03  SSREL-SS-BQUAL4        PICTURE X(32).
           03  SSREL-SS-BQUAL4-SUB1   PICTURE X(4). 
           03  SSREL-SS-BQUAL4-SUB2   PICTURE X(4). 
           03  SSREL-SS-BQUAL4-SUB3   PICTURE X(4). 
           03  SSREL-SS-BQUAL5        PICTURE X(32).
           03  SSREL-SS-BQUAL5-SUB1   PICTURE X(4). 
           03  SSREL-SS-BQUAL5-SUB2   PICTURE X(4). 
           03  SSREL-SS-BQUAL5-SUB3   PICTURE X(4). 
*CALL DCUPDSWS
*CALL CODES 
       01  ROP-CODES                PICTURE X(21) VALUE 
           "EQ LT NQ GE GT LE /  ". 
       01  HOLD-AREA. 
           03  HOLD-IT             PICTURE X   OCCURS 67 TIMES. 
       01 NUM-PARENS. 
           03  R-PARENS            PICTURE 99.
           03  L-PARENS            PICTURE 99.
       PROCEDURE DIVISION.
*CALL DCUPDKW 
      ******************************************************
      * 
      *    S U B S C H E M A   E N T R Y
      * 
      ******************************************************
      * 
      * 
      ******************************************************
           MOVE 24 TO SAVE-ENT-TYPE.
           MOVE SPACE TO NUM-EDIT.
      * 
      *    RESPONSIBILITY CATEGORY
      * 
       RESP-EDIT. 
           IF CAT-ID NOT EQUAL TO 140 
               GO TO NAME-SS-EDIT.
      * 
      *    RESPONSIBILITY - STATUS
      * 
       RESP-EDIT-STAT.
           IF FIELD-ID NOT = 05 
               GO TO RESP-EDIT-FUNC.
           MOVE RESP-SS-STATUS TO OLD-VALUE.
           IF VAL (1) = "$" 
               GO TO RESP-DEL-STAT. 
           MOVE STAT-CODES TO VALID-CODE-TABLE. 
           PERFORM VALID-CODE THRU VALID-CODE-XIT.
           MOVE VAL-AREA TO RESP-SS-STATUS. 
           GO TO CAT-MVC-MSG-CHG. 
       RESP-DEL-STAT. 
           IF RESP-SS-STATUS = SPACES 
               GO TO CAT-MVC-MSG-ERR-DEL. 
           MOVE SPACES TO RESP-SS-STATUS. 
           GO TO CAT-MVC-MSG-DEL. 
      * 
      *    RESPONSIBILITY - FUNCTION
      * 
       RESP-EDIT-FUNC.
           IF FIELD-ID NOT = 10 
               GO TO RESP-EDIT-DPT. 
           MOVE RESP-SS-FUNC TO OLD-VALUE.
           IF VAL (1) = "$" 
               GO TO RESP-DEL-FUNC. 
           MOVE FUNC-CODES TO VALID-CODE-TABLE. 
           PERFORM VALID-CODE THRU VALID-CODE-XIT.
           MOVE VAL-AREA TO RESP-SS-FUNC. 
           GO TO CAT-MVC-MSG-CHG. 
       RESP-DEL-FUNC. 
           IF RESP-SS-FUNC = SPACES 
               GO TO CAT-MVC-MSG-ERR-DEL. 
           MOVE SPACES TO RESP-SS-FUNC. 
           GO TO CAT-MVC-MSG-DEL. 
      * 
      *    RESPONSIBILITY - DEPT
      * 
       RESP-EDIT-DPT. 
           IF FIELD-ID NOT = 15 
               GO TO RESP-EDIT-PER. 
           MOVE RESP-SS-DEPT TO OLD-VALUE.
           IF VAL (1) = "$" 
               GO TO RESP-DEL-DPT.
           MOVE VAL-AREA TO RESP-SS-DEPT. 
           GO TO CAT-MVC-MSG-CHG. 
       RESP-DEL-DPT.
           IF RESP-SS-DEPT = SPACES 
               GO TO CAT-MVC-MSG-ERR-DEL. 
           MOVE SPACES TO RESP-SS-DEPT. 
           GO TO CAT-MVC-MSG-DEL. 
      * 
      *    RESPONSIBILITY - PERSON
      * 
       RESP-EDIT-PER. 
           IF FIELD-ID NOT = 20 
               GO TO RESP-EDIT-PHONE. 
           MOVE RESP-SS-PERSON TO OLD-VALUE.
           IF VAL (1) = "$" 
               GO TO RESP-DEL-PER.
           MOVE VAL-AREA TO RESP-SS-PERSON. 
           GO TO CAT-MVC-MSG-CHG. 
       RESP-DEL-PER.
           IF RESP-SS-PERSON = SPACES 
               GO TO CAT-MVC-MSG-ERR-DEL. 
           MOVE SPACES TO RESP-SS-PERSON. 
           GO TO CAT-MVC-MSG-DEL. 
      * 
      *    RESPONSIBILITY - PHONE 
      * 
      * 
       RESP-EDIT-PHONE. 
           IF FIELD-ID NOT = 25 
               GO TO RESP-EDIT-TIT. 
           MOVE RESP-SS-PHONE TO OLD-VALUE. 
           IF VAL (1) = "$" 
               GO TO RESP-DEL-PER.
           MOVE VAL-AREA TO RESP-SS-PHONE.
           GO TO CAT-MVC-MSG-CHG. 
       RESP-DEL-PHONE.
           IF RESP-SS-PHONE = SPACES
               GO TO CAT-MVC-MSG-ERR-DEL. 
           MOVE SPACES TO RESP-SS-PHONE.
           GO TO CAT-MVC-MSG-DEL. 
      * 
      *    RESPONSIBILITY - TITLE 
      * 
       RESP-EDIT-TIT. 
           IF FIELD-ID NOT = 30 
               GO TO RESP-EDIT-MAIL.
           MOVE RESP-SS-TITLE TO OLD-VALUE. 
           IF VAL (1) = "$" 
               GO TO RESP-DEL-TIT.
           MOVE VAL-AREA TO RESP-SS-TITLE.
           GO TO CAT-MVC-MSG-CHG. 
       RESP-DEL-TIT.
           IF RESP-SS-TITLE = SPACES
               GO TO CAT-MVC-MSG-ERR-DEL. 
           MOVE VAL-AREA TO RESP-SS-TITLE.
           GO TO CAT-MVC-MSG-DEL. 
      * 
      *    RESPONSIBILITY - MAIL
      * 
       RESP-EDIT-MAIL.
           IF FIELD-ID NOT = 35 
               GO TO RESP-EDIT-DATE.
           MOVE RESP-SS-MAIL TO OLD-VALUE.
           IF VAL (1) = "$" 
               GO TO RESP-DEL-MAIL. 
           MOVE VAL-AREA TO RESP-SS-MAIL. 
           GO TO CAT-MVC-MSG-CHG. 
       RESP-DEL-MAIL. 
           IF RESP-SS-MAIL = SPACES 
               GO TO CAT-MVC-MSG-ERR-DEL. 
           MOVE VAL-AREA TO RESP-SS-MAIL. 
           GO TO CAT-MVC-MSG-DEL. 
      * 
      *    RESPONSIBILITY - DATE
      * 
       RESP-EDIT-DATE.
           IF FIELD-ID NOT = 40 
               GO TO FLD-ERR. 
           MOVE RESP-SS-DATE TO OLD-VALUE.
           IF VAL (1) = "$" 
               GO TO RESP-DEL-DATE. 
           MOVE VAL-AREA TO RESP-SS-DATE. 
           GO TO CAT-MVC-MSG-CHG. 
       RESP-DEL-DATE. 
           IF RESP-SS-DATE = SPACES 
               GO TO CAT-MVC-MSG-ERR-DEL. 
           MOVE SPACES TO RESP-SS-DATE. 
           GO TO CAT-MVC-MSG-DEL. 
      ******************************************
      * 
      *    NAME CATEGORY
      * 
      ******************************************
       NAME-SS-EDIT.
           IF CAT-ID NOT = 200
               GO TO STC-SS-EDIT. 
      * 
      *    NAME - SUBSCHEMA 
      * 
       NAME-EDIT-SUBSCHEMA. 
           IF FIELD-ID NOT = 05 
               GO TO FLD-ERR. 
           MOVE NAME-SS-DMSNAME TO OLD-VALUE. 
           IF VAL (1) = "$" 
               GO TO NAME-DEL-SUBSCHEMA.
           MOVE VAL-AREA TO NAME-SS-DMSNAME.
           GO TO CAT-MVC-MSG-CHG. 
       NAME-DEL-SUBSCHEMA.
           IF NAME-SS-DMSNAME = SPACES
               GO TO CAT-MVC-MSG-ERR-DEL. 
           MOVE SPACES TO NAME-SS-DMSNAME.
           GO TO CAT-MVC-MSG-DEL. 
      ******************************************* 
      * 
      *    STRUCTURE CATEGORY 
      * 
      ******************************************* 
       STC-SS-EDIT. 
           IF CAT-ID NOT = 300
               GO TO MD-SS-EDIT.
      * 
      *    STRUCTURE - AREA 
      * 
       STC-EDIT-AREA. 
           IF FIELD-ID NOT = 05 
               GO TO STC-EDIT-ALY-NO. 
           MOVE STC-SS-AREA TO OLD-VALUE. 
           IF VAL (1) = "$" 
               GO TO STC-DEL-AREA.
           PERFORM CK-CATNAME THRU CK-CATNAME-XIT.
           PERFORM CHANGE-DELETE THRU CHANGE-DELETE-EXIT. 
           MOVE "S" TO TYPE-CATAL-NAME. 
           MOVE VAL-AREA TO NEW-CATAL-NAME. 
           MOVE VAL-AREA TO STC-SS-AREA.
           MOVE "A" TO STC-SS-LINETYPE. 
           GO TO CAT-MVC-MSG-CHG. 
       STC-DEL-AREA.
           IF STC-SS-AREA = SPACES
               GO TO CAT-MVC-MSG-ERR-DEL. 
           PERFORM FIELD-DELETE THRU FIELD-DELETE-EXIT. 
           MOVE SPACES TO STC-SS-AREA.
           GO TO CAT-MVC-MSG-DEL. 
      * 
      *    STRUCTURE - ALIAS NUMBER 
      * 
       STC-EDIT-ALY-NO. 
           IF FIELD-ID NOT = 10 
               GO TO STC-EDIT-INC.
           MOVE STC-SS-ALY-NO TO OLD-VALUE. 
           IF VAL (1) = "$" 
               GO STC-DEL-ALY-NO. 
           PERFORM MOVE-NUM THRU VALID-NUM-XIT. 
           MOVE NUM-HOLD-X TO STC-SS-ALY-NO.
           MOVE "A" TO STC-SS-LINETYPE. 
           GO TO CAT-MVC-MSG-CHG. 
       STC-DEL-ALY-NO.
           IF STC-SS-ALY-NO = SPACES
               GO TO CAT-MVC-MSG-ERR-DEL. 
           MOVE SPACES TO STC-SS-ALY-NO.
           GO TO CAT-MVC-MSG-DEL. 
      * 
      *    STRUCTURE - INCLUDE
      * 
       STC-EDIT-INC.
           IF FIELD-ID NOT = 15 
               GO TO FLD-ERR. 
           MOVE STC-SS-INCLUDE TO OLD-VALUE.
           IF VAL (1) = "$" 
               GO STC-DEL-INC.
           IF VAL (1) NOT EQUAL TO "Y" OR "N" 
               MOVE "Y  N  /  " TO BIG-CODES
               MOVE "B" TO CODE-ERR-SW
               GO TO VALIDATION-ERROR.
           MOVE VAL-AREA TO STC-SS-INCLUDE. 
           MOVE "A" TO STC-SS-LINETYPE. 
           GO TO CAT-MVC-MSG-CHG. 
       STC-DEL-INC. 
           IF STC-SS-INCLUDE = SPACES 
               GO TO CAT-MVC-MSG-ERR-DEL. 
           MOVE SPACES TO STC-SS-INCLUDE. 
           GO TO CAT-MVC-MSG-DEL. 
      ****************************************************
      *    MDINFO CATEGORY
      ****************************************************
       MD-SS-EDIT.
           IF CAT-ID NOT EQUAL TO 450 
               GO TO SSREL-EDIT.
      * 
      *    MDINFO - LFN 
      * 
       MD-EDIT-LFN. 
           IF FIELD-ID NOT = 05 
               GO TO FLD-ERR. 
           MOVE MD-SS-SSLFN TO OLD-VALUE. 
           IF VAL (1) = "$" 
               GO TO MD-DEL-LFN.
           MOVE VAL-AREA TO MD-SS-SSLFN.
           GO TO CAT-MVC-MSG-CHG. 
       MD-DEL-LFN.
           IF MD-SS-SSLFN = SPACES
               GO TO CAT-MVC-MSG-ERR-DEL. 
           MOVE SPACES TO MD-SS-SSLFN.
           GO TO CAT-MVC-MSG-DEL. 
      ******************************************* 
      * 
      *    SSREL CATEGORY 
      * 
      ******************************************* 
       SSREL-EDIT.
           IF CAT-ID NOT = 525
               GO TO CAT-ERR. 
      * 
      *    SSREL FOR SUBSCHEMAS IS FOR THE RELATION AND 
      *    RESTRICT CLAUSES.  THERE ARE SIX BLOCKS USED 
      *    FOR THESE CLAUSES.  THE FIRST CONTAINS THE 
      *    RELATION AND RESTRICT NAMES.  THE SECOND BLOCK 
      *    CONTAINS THE IDS AND OPERATORS.  THE REMAINING 
      *    FOUR BLOCKS ARE USED FOR STORING QUALIFIERS. 
      *    IF THE IDS ARE NOT QUALIFIED, MULTIPLE TYPE "I"
      *    BLOCKS MAY FOLLOW EACH OTHER.  ON THE OTHER HAND,
      *    THERE MAY BE A MIXTURE OF TYPE "I" FOLLOWED BY 
      *    FROM ONE TO FOUR QUALIFIER BLOCKS.  EACH "I" BLOCK 
      *    CONTAINS TWO FLAGS, ONE FOR EACH ID, WHICH NOTE
      *    THE PRESENCE OF QUALIFIERS FOR THAT ID.
      * 
      *    SSREL -  RELATION NAME 
      * 
       SSREL-EDIT-RNAME.
           IF FIELD-ID NOT = 01 
               GO TO SSREL-EDIT-RESTRICT. 
           MOVE SSREL-SS-RELNAME TO OLD-VALUE.
           IF VAL (1) = "$" 
               GO TO SSREL-DEL-RNAME. 
           MOVE "R" TO SSREL-SS-LINETYPE. 
           MOVE VAL-AREA TO SSREL-SS-RELNAME. 
           GO TO CAT-MVC-MSG-CHG. 
       SSREL-DEL-RNAME. 
           IF SSREL-SS-RELNAME = SPACES 
               GO TO CAT-MVC-MSG-ERR-DEL. 
           MOVE SPACES TO SSREL-SS-RELNAME. 
           GO TO CAT-MVC-MSG-DEL. 
      * 
      *    SSREL- RESTRICT NAME 
      * 
       SSREL-EDIT-RESTRICT. 
           IF FIELD-ID  NOT = 02
               GO TO SSREL-EDIT-RALIAS. 
           MOVE SSREL-SS-RESTRICT TO OLD-VALUE. 
           IF VAL (1) = "$" 
               GO TO SSREL-DEL-RESTRICT.
           PERFORM CK-CATNAME THRU CK-CATNAME-XIT.
           PERFORM CHANGE-DELETE THRU CHANGE-DELETE-EXIT. 
           MOVE VAL-AREA TO SSREL-SS-RESTRICT.
           MOVE "R" TO SSREL-SS-LINETYPE. 
           MOVE VAL-AREA TO SAVE-NAME.
           PERFORM SET-REL-TABLE THRU SET-REL-TABLE-EXIT. 
           GO TO CAT-MVC-MSG-CHG. 
       SSREL-DEL-RESTRICT.
           IF SSREL-SS-RESTRICT = SPACES
               GO TO CAT-MVC-MSG-ERR-DEL. 
           PERFORM FIELD-DELETE THRU FIELD-DELETE-EXIT. 
           MOVE SPACES TO SSREL-SS-RESTRICT.
           GO TO CAT-MVC-MSG-DEL. 
      * 
      *    SSREL - RESTRICT ALIAS 
      * 
       SSREL-EDIT-RALIAS. 
           IF FIELD-ID NOT EQUAL TO 03
               GO TO SSREL-EDIT-PRELOP. 
           MOVE SSREL-SS-R-ALIAS TO OLD-VALUE.
           IF VAL (1) EQUAL SPACES
               GO SSREL-DEL-RALIAS. 
           PERFORM MOVE-NUM THRU VALID-NUM-XIT. 
           MOVE NUM-HOLD-X TO SSREL-SS-R-ALIAS. 
           MOVE "R" TO SSREL-SS-LINETYPE. 
           GO TO CAT-MVC-MSG-CHG. 
       SSREL-DEL-RALIAS.
           IF SSREL-SS-R-ALIAS EQUAL SPACES 
               GO TO CAT-MVC-MSG-ERR-DEL. 
           MOVE SPACES TO SSREL-SS-R-ALIAS. 
           GO TO CAT-MVC-MSG-DEL. 
      * 
      *    SSREL - PRE LOGICAL OPERATOR 
      * 
       SSREL-EDIT-PRELOP. 
           IF FIELD-ID NOT = 04 
               GO TO SSREL-EDIT-ID1.
           MOVE SSREL-SS-PRE-LOP TO OLD-VALUE.
           IF VAL (1) = "$" 
               GO TO SSREL-DEL-PRELOP.
           IF VAL-AREA NOT = "NOT"
               MOVE "NOT/  " TO BIG-CODES 
               MOVE "B" TO CODE-ERR-SW
               GO TO VALIDATION-ERROR.
           MOVE VAL-AREA TO SSREL-SS-PRE-LOP. 
           MOVE "I" TO SSREL-SS-ID-LINETYPE.
           GO TO CAT-MVC-MSG-CHG. 
       SSREL-DEL-PRELOP.
           IF SSREL-SS-PRE-LOP = SPACES 
               GO TO CAT-MVC-MSG-ERR-DEL. 
           MOVE SPACES TO SSREL-SS-PRE-LOP. 
      * 
      *    IF EITHER ID1 OR ID2 HAVE QUALIFIERS 
      *    THIS BLOCK IS WRITTEN EVEN IF EMPTY
      * 
           IF SSREL-SS-ID1-QUALF EQUAL 0
             AND SSREL-SS-ID2-QUALF EQUAL 0 
               GO TO DEL-CHECKER
           ELSE 
               GO TO CAT-MVC-MSG-DEL
           END-IF 
      * 
      *    PROCESS - RESTRICT ID1 
      * 
      *    THIS DATANAME MUST BE A CATNAME AND MAY HAVE SUBSCRIPTS
      *    AND QUALIFIERS.  THE NAME MAY BE PRECEDED BY A LEFT PARENTHESES
      * 
       SSREL-EDIT-ID1.
           IF FIELD-ID NOT = 05 
               GO TO SSREL-EDIT-ALIAS1. 
           MOVE SSREL-SS-ID1 TO OLD-VALUE.
           IF VAL (1) = "$" 
               GO TO SSREL-DEL-ID1. 
           PERFORM COUNT-PARENS THRU COUNT-PARENS-EXIT
           PERFORM CK-CATNAME THRU CK-CATNAME-XIT 
           PERFORM CHANGE-DELETE THRU CHANGE-DELETE-EXIT. 
           MOVE "C" TO SSREL-SS-ID1-TYPE
           MOVE VAL-AREA TO SAVE-NAME 
           PERFORM SET-REL-TABLE THRU SET-REL-TABLE-EXIT
           MOVE L-PARENS TO SSREL-SS-LEFT-PAREN 
           IF SUB-PRESENT = "Y" 
               MOVE HOLD-SUB (1) TO SSREL-SS-ID1-SUB1 
               MOVE HOLD-SUB (2) TO SSREL-SS-ID1-SUB2 
               MOVE HOLD-SUB (3) TO SSREL-SS-ID1-SUB3 
           END-IF 
           MOVE "I" TO SSREL-SS-ID-LINETYPE.
           IF SSREL-SS-ID1-QUALF EQUAL SPACE
               MOVE ZERO TO SSREL-SS-ID1-QUALF. 
           MOVE ZERO TO NUM-LINES.
           MOVE VAL-AREA TO SSREL-SS-ID1. 
           GO TO CAT-MVC-MSG-CHG. 
       SSREL-DEL-ID1. 
           IF SSREL-SS-ID1 = SPACES 
               GO TO CAT-MVC-MSG-ERR-DEL. 
           PERFORM FIELD-DELETE THRU FIELD-DELETE-EXIT. 
           MOVE SPACES TO SSREL-SS-ID1 SSREL-SS-ID1-SUB1
               SSREL-SS-ID1-SUB2 SSREL-SS-ID1-SUB3. 
           MOVE ZERO TO SSREL-SS-LEFT-PAREN.
      * 
      *    IF EITHER ID1 OR ID2 HAVE QUALIFIERS 
      *    THIS BLOCK IS WRITTEN EVEN IF EMPTY
      * 
           IF SSREL-SS-ID1-QUALF EQUAL 0
             AND SSREL-SS-ID2-QUALF EQUAL 0 
               GO TO DEL-CHECKER
           ELSE 
               GO TO CAT-MVC-MSG-DEL
           END-IF 
      * 
      *    SSREL - ID1 ALIAS
      * 
       SSREL-EDIT-ALIAS1. 
           IF FIELD-ID NOT = 07 
               GO TO SSREL-EDIT-AQUAL1. 
           MOVE SSREL-SS-ID1-ALIAS TO OLD-VALUE.
           IF VAL (1) = "$" 
               GO TO SSREL-DEL-ALIAS1.
           PERFORM MOVE-NUM THRU VALID-NUM-XIT. 
           MOVE NUM-HOLD-X TO SSREL-SS-ID1-ALIAS. 
           MOVE "I" TO SSREL-SS-ID-LINETYPE.
           GO TO CAT-MVC-MSG-CHG. 
       SSREL-DEL-ALIAS1.
           IF SSREL-SS-ID1-ALIAS = SPACES 
               GO TO CAT-MVC-MSG-ERR-DEL. 
           MOVE SPACES TO SSREL-SS-ID1-ALIAS. 
      * 
      *    IF EITHER ID1 OR ID2 HAVE QUALIFIERS 
      *    THIS BLOCK IS WRITTEN EVEN IF EMPTY
      * 
           IF SSREL-SS-ID1-QUALF EQUAL 0
             AND SSREL-SS-ID2-QUALF EQUAL 0 
               GO TO DEL-CHECKER
           ELSE 
               GO TO CAT-MVC-MSG-DEL
           END-IF 
      * 
      *    SSREL - RESTRICT QUALIFIERS
      * 
      *    ID1 WITHIN THE EXPRESSION MAY HAVE UP TO FIVE QUALIFIERS 
      *    AND EACH QUALIFIER MAY BE SUBSCRIPTED.  THE QUALIFIERS MAY BE
      *    STORED IN EITHER THE "Q" OR "2" BLOCKS.  QUALIFIERS 1 THRU 3 
      *    ARE STORED IN THE "Q" BLOCK AND 4 AND 5 ARE STORED IN THE
      *    "2" BLOCK. 
      * 
      *    SSREL - AQUAL1 
      * 
       SSREL-EDIT-AQUAL1. 
           IF FIELD-ID NOT = 09 
               GO TO SSREL-EDIT-AQUAL2. 
           IF ADD-CHG EQUAL TO "C"
             AND LINE-TYPE-AQUAL NOT EQUAL TO "Q" 
             AND SSREL-SS-ID1-QUALF GREATER THAN 0
               MOVE "B" TO FUNC 
               PERFORM GET-NEXT-BLOCK THRU GET-NEXT-BLOCK-EXIT
               IF LINE-TYPE-AQUAL NOT EQUAL TO "Q"
                   GO TO CAT-MVC-MSG-ERR-DEL
               END-IF 
           END-IF 
           MOVE SSREL-SS-AQUAL1 TO OLD-VALUE. 
           IF VAL (1) = "$" 
               GO TO SSREL-DEL-AQUAL1.
           PERFORM CK-CATNAME THRU CK-CATNAME-XIT.
           IF SSREL-SS-AQUAL1 EQUAL TO SPACES 
               ADD 1 TO SSREL-SS-ID1-QUALF
               ADD 1 TO NUM-LINES 
           ELSE 
               MOVE 1 TO NUM-LINES
               PERFORM CHANGE-DELETE THRU CHANGE-DELETE-EXIT
           END-IF 
           MOVE VAL-AREA TO SAVE-NAME SSREL-SS-AQUAL1.
           PERFORM SET-REL-TABLE THRU SET-REL-TABLE-EXIT. 
           IF SUB-PRESENT = "Y" 
               MOVE HOLD-SUB (1) TO SSREL-SS-AQUAL1-SUB1
               MOVE HOLD-SUB (2) TO SSREL-SS-AQUAL1-SUB2
               MOVE HOLD-SUB (3) TO SSREL-SS-AQUAL1-SUB3
           END-IF 
           MOVE "Q" TO SSREL-SS-AQUAL1-LINETYP. 
           GO TO CAT-MVC-MSG-CHG. 
       SSREL-DEL-AQUAL1.
           IF SSREL-SS-AQUAL1 = SPACES
               GO TO CAT-MVC-MSG-ERR-DEL. 
           PERFORM FIELD-DELETE THRU FIELD-DELETE-EXIT. 
           MOVE 1 TO NUM-LINES. 
           MOVE SPACES TO SSREL-SS-AQUAL1 SSREL-SS-AQUAL1-SUB1
               SSREL-SS-AQUAL1-SUB2 SSREL-SS-AQUAL1-SUB3. 
           GO TO CAT-MVC-MSG-DEL. 
      * 
      *    SSREL - AQUAL2 
      * 
       SSREL-EDIT-AQUAL2. 
           IF FIELD-ID NOT = 13 
               GO TO SSREL-EDIT-AQUAL3. 
           IF ADD-CHG EQUAL TO "C"
             AND LINE-TYPE-AQUAL NOT EQUAL TO "Q" 
             AND SSREL-SS-ID1-QUALF GREATER THAN 0
               MOVE "B" TO FUNC 
               PERFORM GET-NEXT-BLOCK THRU GET-NEXT-BLOCK-EXIT
               IF LINE-TYPE-AQUAL NOT EQUAL TO "Q"
                   GO TO CAT-MVC-MSG-ERR-DEL
               END-IF 
           END-IF 
           MOVE SSREL-SS-AQUAL2 TO OLD-VALUE. 
           IF VAL (1) = "$" 
               GO TO SSREL-DEL-AQUAL2.
           PERFORM CK-CATNAME THRU CK-CATNAME-XIT.
           IF SSREL-SS-AQUAL2 EQUAL TO SPACES 
               ADD 1 TO SSREL-SS-ID1-QUALF
           ELSE 
               MOVE 1 TO NUM-LINES
               PERFORM CHANGE-DELETE THRU CHANGE-DELETE-EXIT
           END-IF 
           MOVE VAL-AREA TO SAVE-NAME SSREL-SS-AQUAL2.
           PERFORM SET-REL-TABLE THRU SET-REL-TABLE-EXIT. 
           IF SUB-PRESENT = "Y" 
               MOVE HOLD-SUB (1) TO SSREL-SS-AQUAL2-SUB1
               MOVE HOLD-SUB (2) TO SSREL-SS-AQUAL2-SUB2
               MOVE HOLD-SUB (3) TO SSREL-SS-AQUAL2-SUB3
           END-IF 
           MOVE "Q" TO SSREL-SS-AQUAL1-LINETYP. 
           GO TO CAT-MVC-MSG-CHG. 
       SSREL-DEL-AQUAL2.
           IF SSREL-SS-AQUAL2 = SPACES
               GO TO CAT-MVC-MSG-ERR-DEL. 
           PERFORM FIELD-DELETE THRU FIELD-DELETE-EXIT. 
           MOVE 1 TO NUM-LINES. 
           MOVE SPACES TO SSREL-SS-AQUAL2 SSREL-SS-AQUAL2-SUB1
               SSREL-SS-AQUAL2-SUB2 SSREL-SS-AQUAL2-SUB3. 
           GO TO CAT-MVC-MSG-DEL. 
      * 
      *    SSREL - AQUAL3 
      * 
       SSREL-EDIT-AQUAL3. 
           IF FIELD-ID NOT = 17 
               GO TO SSREL-EDIT-AQUAL4. 
           IF ADD-CHG EQUAL TO "C"
             AND LINE-TYPE-AQUAL NOT EQUAL TO "Q" 
             AND SSREL-SS-ID1-QUALF GREATER THAN 0
               MOVE "B" TO FUNC 
               PERFORM GET-NEXT-BLOCK THRU GET-NEXT-BLOCK-EXIT
               IF LINE-TYPE-AQUAL NOT EQUAL TO "Q"
                   GO TO CAT-MVC-MSG-ERR-DEL
               END-IF 
           END-IF 
           MOVE SSREL-SS-AQUAL3 TO OLD-VALUE. 
           IF VAL (1) = "$" 
               GO TO SSREL-DEL-AQUAL3.
           PERFORM CK-CATNAME THRU CK-CATNAME-XIT.
           IF SSREL-SS-AQUAL3 EQUAL TO SPACES 
               ADD 1 TO SSREL-SS-ID1-QUALF
           ELSE 
               MOVE 1 TO NUM-LINES
               PERFORM CHANGE-DELETE THRU CHANGE-DELETE-EXIT
           END-IF 
           MOVE VAL-AREA TO SAVE-NAME SSREL-SS-AQUAL3.
           PERFORM SET-REL-TABLE THRU SET-REL-TABLE-EXIT. 
           IF SUB-PRESENT = "Y" 
               MOVE HOLD-SUB (1) TO SSREL-SS-AQUAL3-SUB1
               MOVE HOLD-SUB (2) TO SSREL-SS-AQUAL3-SUB2
               MOVE HOLD-SUB (3) TO SSREL-SS-AQUAL3-SUB3
           END-IF 
           MOVE "Q" TO SSREL-SS-AQUAL1-LINETYP. 
           GO TO CAT-MVC-MSG-CHG. 
       SSREL-DEL-AQUAL3.
           IF SSREL-SS-AQUAL3 = SPACES
               GO TO CAT-MVC-MSG-ERR-DEL. 
           PERFORM FIELD-DELETE THRU FIELD-DELETE-EXIT. 
           MOVE 1 TO NUM-LINES. 
           MOVE SPACES TO SSREL-SS-AQUAL3 SSREL-SS-AQUAL3-SUB1
               SSREL-SS-AQUAL3-SUB2 SSREL-SS-AQUAL3-SUB3. 
           GO TO CAT-MVC-MSG-DEL. 
      * 
      *    SSREL - AQUAL4 
      * 
       SSREL-EDIT-AQUAL4. 
           IF FIELD-ID NOT = 21 
               GO TO SSREL-EDIT-AQUAL5. 
           IF ADD-CHG EQUAL TO "C"
             AND LINE-TYPE-AQUAL4 NOT EQUAL TO "2"
             AND SSREL-SS-ID1-QUALF GREATER THAN 3
               MOVE "B" TO FUNC 
               PERFORM GET-NEXT-BLOCK THRU GET-NEXT-BLOCK-EXIT
               IF LINE-TYPE-AQUAL4 NOT EQUAL TO "2" 
                   GO TO CAT-MVC-MSG-ERR-DEL
               END-IF 
           END-IF 
           MOVE SSREL-SS-AQUAL4 TO OLD-VALUE. 
           IF VAL (1) = "$" 
               GO TO SSREL-DEL-AQUAL4.
           PERFORM CK-CATNAME THRU CK-CATNAME-XIT.
           IF SSREL-SS-AQUAL4 EQUAL TO SPACES 
               ADD 1 TO SSREL-SS-ID1-QUALF
               ADD 1 TO NUM-LINES 
           ELSE 
               MOVE 1 TO NUM-LINES
               PERFORM CHANGE-DELETE THRU CHANGE-DELETE-EXIT
           END-IF 
           MOVE VAL-AREA TO SAVE-NAME SSREL-SS-AQUAL4.
           PERFORM SET-REL-TABLE THRU SET-REL-TABLE-EXIT. 
           IF SUB-PRESENT = "Y" 
               MOVE HOLD-SUB (1) TO SSREL-SS-AQUAL4-SUB1
               MOVE HOLD-SUB (2) TO SSREL-SS-AQUAL4-SUB2
               MOVE HOLD-SUB (3) TO SSREL-SS-AQUAL4-SUB3
           END-IF 
           MOVE "2" TO SSREL-SS-AQUAL4-LINETYP. 
           GO TO CAT-MVC-MSG-CHG. 
       SSREL-DEL-AQUAL4.
           IF SSREL-SS-AQUAL4 = SPACES
               GO TO CAT-MVC-MSG-ERR-DEL. 
           PERFORM FIELD-DELETE THRU FIELD-DELETE-EXIT. 
           MOVE 1 TO NUM-LINES. 
           MOVE SPACES TO SSREL-SS-AQUAL4 SSREL-SS-AQUAL4-SUB1
               SSREL-SS-AQUAL4-SUB2 SSREL-SS-AQUAL4-SUB3. 
           GO TO CAT-MVC-MSG-DEL. 
      * 
      *    SSREL - AQUAL5 
      * 
       SSREL-EDIT-AQUAL5. 
           IF FIELD-ID NOT = 25 
               GO TO SSREL-EDIT-ID2.
           IF ADD-CHG EQUAL TO "C"
             AND LINE-TYPE-AQUAL4 NOT EQUAL TO "2"
             AND SSREL-SS-ID1-QUALF GREATER THAN 3
               MOVE "B" TO FUNC 
               PERFORM GET-NEXT-BLOCK THRU GET-NEXT-BLOCK-EXIT
               IF LINE-TYPE-AQUAL4 NOT EQUAL TO "2" 
                   GO TO CAT-MVC-MSG-ERR-DEL
               END-IF 
           END-IF 
           MOVE SSREL-SS-AQUAL5 TO OLD-VALUE. 
           IF VAL (1) = "$" 
               GO TO SSREL-DEL-AQUAL5.
           PERFORM CK-CATNAME THRU CK-CATNAME-XIT.
           IF SSREL-SS-AQUAL5 EQUAL TO SPACES 
               ADD 1 TO SSREL-SS-ID1-QUALF
           ELSE 
               MOVE 1 TO NUM-LINES
               PERFORM CHANGE-DELETE THRU CHANGE-DELETE-EXIT
           END-IF 
           MOVE VAL-AREA TO SAVE-NAME SSREL-SS-AQUAL5.
           PERFORM SET-REL-TABLE THRU SET-REL-TABLE-EXIT. 
           IF SUB-PRESENT = "Y" 
               MOVE HOLD-SUB (1) TO SSREL-SS-AQUAL5-SUB1
               MOVE HOLD-SUB (2) TO SSREL-SS-AQUAL5-SUB2
               MOVE HOLD-SUB (3) TO SSREL-SS-AQUAL5-SUB3
           END-IF 
           MOVE "2" TO SSREL-SS-AQUAL4-LINETYP. 
           GO TO CAT-MVC-MSG-CHG. 
       SSREL-DEL-AQUAL5.
           IF SSREL-SS-AQUAL5 = SPACES
               GO TO CAT-MVC-MSG-ERR-DEL. 
           PERFORM FIELD-DELETE THRU FIELD-DELETE-EXIT. 
           MOVE 1 TO NUM-LINES. 
           MOVE SPACES TO SSREL-SS-AQUAL5 SSREL-SS-AQUAL5-SUB1
               SSREL-SS-AQUAL5-SUB2 SSREL-SS-AQUAL5-SUB3. 
           GO TO CAT-MVC-MSG-DEL. 
      * 
      *    SSREL - RESTRICT ID2 
      * 
      *    THIS DATANAME MAY BE A LITERAL OR A CATNAME WITH SUBSCRIPTS
      *    AND QUALIFIERS.  THE NAME MAY BE FOLLOWED BY A RIGHT PARENTHESES 
      * 
       SSREL-EDIT-ID2.
           IF FIELD-ID NOT = 29 
               GO TO SSREL-EDIT-BALIAS1.
           MOVE SSREL-SS-ID2 TO OLD-VALUE.
           IF VAL (1) = "$" 
               GO TO SSREL-DEL-ID2. 
           MOVE "I" TO SSREL-SS-ID-LINETYPE.
           IF SSREL-SS-ID2-QUALF EQUAL SPACE
               MOVE ZERO TO SSREL-SS-ID2-QUALF. 
           PERFORM COUNT-PARENS THRU COUNT-PARENS-EXIT
           IF QUOTE-SW NOT = "Y" AND VAL (1) NOT NUMERIC
             AND VAL (1) NOT EQUAL TO "-" 
               PERFORM CHANGE-DELETE THRU CHANGE-DELETE-EXIT
               MOVE "C" TO SSREL-SS-ID2-TYPE
               MOVE VAL-AREA TO SAVE-NAME SSREL-SS-ID2
               PERFORM SET-REL-TABLE THRU SET-REL-TABLE-EXIT
           ELSE 
               IF QUOTE-SW EQUAL "Y"
                   MOVE "L" TO SSREL-SS-ID2-TYPE
                   MOVE VAL-AREA TO SSREL-SS-ID2
               ELSE 
                   MOVE 10 TO FLD-LEN (FLD) 
                   PERFORM MOVE-NUM THRU VALID-NUM-XIT
                   MOVE SPACES TO SSREL-SS-ID2
                   MOVE NUM-HOLD-X TO SSREL-SS-ID2 (1 : 10) 
                   MOVE 32 TO FLD-LEN (FLD) 
                   MOVE "N" TO SSREL-SS-ID2-TYPE
               END-IF 
           END-IF 
           MOVE R-PARENS TO SSREL-SS-RIGHT-PAREN
           IF SUB-PRESENT = "Y" 
               MOVE HOLD-SUB (1) TO SSREL-SS-ID2-SUB1 
               MOVE HOLD-SUB (2) TO SSREL-SS-ID2-SUB2 
               MOVE HOLD-SUB (3) TO SSREL-SS-ID2-SUB3 
           END-IF 
           GO TO CAT-MVC-MSG-CHG. 
       SSREL-DEL-ID2. 
           IF SSREL-SS-ID2 = SPACES 
               GO TO CAT-MVC-MSG-ERR-DEL. 
           IF SSREL-SS-ID2-TYPE EQUAL "C" 
               MOVE "D" TO SAVE-FUNCTION
               MOVE SSREL-SS-ID2 TO SAVE-NAME 
               PERFORM SET-REL-TABLE THRU SET-REL-TABLE-EXIT
               MOVE "A" TO SAVE-FUNCTION
           END-IF 
           MOVE SPACES TO SSREL-SS-ID2 SSREL-SS-ID2-SUB1
               SSREL-SS-ID2-SUB2 SSREL-SS-ID2-SUB3. 
           MOVE ZERO TO SSREL-SS-RIGHT-PAREN. 
      * 
      *    IF EITHER ID1 OR ID2 HAVE QUALIFIERS 
      *    THIS BLOCK IS WRITTEN EVEN IF EMPTY
      * 
           IF SSREL-SS-ID1-QUALF EQUAL 0
             AND SSREL-SS-ID2-QUALF EQUAL 0 
               GO TO DEL-CHECKER
           ELSE 
               GO TO CAT-MVC-MSG-DEL
           END-IF 
      * 
      *    SSREL - ID2 ALIAS
      * 
       SSREL-EDIT-BALIAS1.
           IF FIELD-ID NOT = 31 
               GO TO SSREL-EDIT-BQUAL1. 
           MOVE SSREL-SS-ID2-ALIAS TO OLD-VALUE.
           IF VAL (1) = "$" 
               GO TO SSREL-DEL-ALIAS2.
           PERFORM MOVE-NUM THRU VALID-NUM-XIT. 
           MOVE NUM-HOLD-X TO SSREL-SS-ID2-ALIAS. 
           MOVE "I" TO SSREL-SS-ID-LINETYPE.
           GO TO CAT-MVC-MSG-CHG. 
       SSREL-DEL-ALIAS2.
           IF SSREL-SS-ID2-ALIAS = SPACES 
               GO TO CAT-MVC-MSG-ERR-DEL. 
           MOVE SPACES TO SSREL-SS-ID2-ALIAS. 
      * 
      *    IF EITHER ID1 OR ID2 HAVE QUALIFIERS 
      *    THIS BLOCK IS WRITTEN EVEN IF EMPTY
      * 
           IF SSREL-SS-ID1-QUALF EQUAL 0
             AND SSREL-SS-ID2-QUALF EQUAL 0 
               GO TO DEL-CHECKER
           ELSE 
               GO TO CAT-MVC-MSG-DEL
           END-IF 
      * 
      *    SSREL - RESTRICT QUALIFIERS
      * 
      *    ID2 WITHIN THE EXPRESSION MAY HAVE UP TO FIVE QUALIFIERS 
      *    AND EACH QUALIFIER MAY BE SUBSCRIPTED.  THE QUALIFIERS MAY BE
      *    STORED IN EITHER THE "B" OR "3" BLOCKS.  QUALIFIERS 1 THRU 3 
      *    ARE STORED IN THE "B" BLOCK AND 4 AND 5 ARE STORED IN THE
      *    "3" BLOCK. 
      * 
      *    SSREL - BQUAL1 
      * 
       SSREL-EDIT-BQUAL1. 
           IF FIELD-ID NOT = 33 
               GO TO SSREL-EDIT-BQUAL2. 
           IF ADD-CHG EQUAL TO "C"
             AND LINE-TYPE-BQUAL NOT EQUAL TO "B" 
             AND SSREL-SS-ID2-QUALF GREATER THAN 0
               MOVE "B" TO FUNC 
               PERFORM GET-NEXT-BLOCK THRU GET-NEXT-BLOCK-EXIT
               IF LINE-TYPE-BQUAL NOT EQUAL TO "B"
                   GO TO CAT-MVC-MSG-ERR-DEL
               END-IF 
           END-IF 
           MOVE SSREL-SS-BQUAL1 TO OLD-VALUE. 
           IF VAL (1) = "$" 
               GO TO SSREL-DEL-BQUAL1.
           PERFORM COUNT-PARENS THRU COUNT-PARENS-EXIT. 
           PERFORM CK-CATNAME THRU CK-CATNAME-XIT.
           IF SSREL-SS-BQUAL1 EQUAL TO SPACES 
               ADD 1 TO SSREL-SS-ID2-QUALF
               ADD 1 TO NUM-LINES 
           ELSE 
               MOVE 1 TO NUM-LINES
               PERFORM CHANGE-DELETE THRU CHANGE-DELETE-EXIT
           END-IF 
           MOVE R-PARENS TO SSREL-SS-RIGHT-PAREN. 
           MOVE VAL-AREA TO SAVE-NAME SSREL-SS-BQUAL1.
           PERFORM SET-REL-TABLE THRU SET-REL-TABLE-EXIT. 
           IF SUB-PRESENT = "Y" 
               MOVE HOLD-SUB (1) TO SSREL-SS-BQUAL1-SUB1
               MOVE HOLD-SUB (2) TO SSREL-SS-BQUAL1-SUB2
               MOVE HOLD-SUB (3) TO SSREL-SS-BQUAL1-SUB3
           END-IF 
           MOVE "B" TO SSREL-SS-BQUAL1-LINETYP. 
           GO TO CAT-MVC-MSG-CHG. 
       SSREL-DEL-BQUAL1.
           IF SSREL-SS-BQUAL1 = SPACES
               GO TO CAT-MVC-MSG-ERR-DEL. 
           PERFORM FIELD-DELETE THRU FIELD-DELETE-EXIT. 
           MOVE 1 TO NUM-LINES. 
           MOVE SPACES TO SSREL-SS-BQUAL1.
           GO TO CAT-MVC-MSG-DEL. 
      * 
      *    SSREL - BQUAL2 
      * 
       SSREL-EDIT-BQUAL2. 
           IF FIELD-ID NOT = 37 
               GO TO SSREL-EDIT-BQUAL3. 
           IF ADD-CHG EQUAL TO "C"
             AND LINE-TYPE-BQUAL NOT EQUAL TO "B" 
             AND SSREL-SS-ID2-QUALF GREATER THAN 0
               MOVE "B" TO FUNC 
               PERFORM GET-NEXT-BLOCK THRU GET-NEXT-BLOCK-EXIT
               IF LINE-TYPE-BQUAL NOT EQUAL TO "B"
                   GO TO CAT-MVC-MSG-ERR-DEL
               END-IF 
           END-IF 
           MOVE SSREL-SS-BQUAL2 TO OLD-VALUE. 
           IF VAL (1) = "$" 
               GO TO SSREL-DEL-BQUAL2.
           PERFORM COUNT-PARENS THRU COUNT-PARENS-EXIT. 
           PERFORM CK-CATNAME THRU CK-CATNAME-XIT.
           IF SSREL-SS-BQUAL2 EQUAL TO SPACES 
               ADD 1 TO SSREL-SS-ID2-QUALF
           ELSE 
               MOVE 1 TO NUM-LINES
               PERFORM CHANGE-DELETE THRU CHANGE-DELETE-EXIT
           END-IF 
           MOVE R-PARENS TO SSREL-SS-RIGHT-PAREN. 
           MOVE VAL-AREA TO SAVE-NAME SSREL-SS-BQUAL2.
           PERFORM SET-REL-TABLE THRU SET-REL-TABLE-EXIT. 
           IF SUB-PRESENT = "Y" 
               MOVE HOLD-SUB (1) TO SSREL-SS-BQUAL2-SUB1
               MOVE HOLD-SUB (2) TO SSREL-SS-BQUAL2-SUB2
               MOVE HOLD-SUB (3) TO SSREL-SS-BQUAL2-SUB3
           END-IF 
           MOVE "B" TO SSREL-SS-BQUAL1-LINETYP. 
           GO TO CAT-MVC-MSG-CHG. 
       SSREL-DEL-BQUAL2.
           IF SSREL-SS-BQUAL2 = SPACES
               GO TO CAT-MVC-MSG-ERR-DEL. 
           PERFORM FIELD-DELETE THRU FIELD-DELETE-EXIT. 
           MOVE 1 TO NUM-LINES. 
           MOVE SPACES TO SSREL-SS-BQUAL2 SSREL-SS-BQUAL2-SUB1
               SSREL-SS-BQUAL2-SUB2 SSREL-SS-BQUAL2-SUB3. 
           GO TO CAT-MVC-MSG-DEL. 
      * 
      *    SSREL - BQUAL3 
      * 
       SSREL-EDIT-BQUAL3. 
           IF FIELD-ID NOT EQUAL TO 43
               GO TO SSREL-EDIT-BQUAL4. 
           IF ADD-CHG EQUAL TO "C"
             AND LINE-TYPE-BQUAL NOT EQUAL TO "B" 
             AND SSREL-SS-ID2-QUALF GREATER THAN 0
               MOVE "B" TO FUNC 
               PERFORM GET-NEXT-BLOCK THRU GET-NEXT-BLOCK-EXIT
               IF LINE-TYPE-BQUAL NOT EQUAL TO "B"
                   GO TO CAT-MVC-MSG-ERR-DEL
               END-IF 
           END-IF 
           MOVE SSREL-SS-BQUAL3 TO OLD-VALUE. 
           IF VAL (1) = "$" 
               GO TO SSREL-DEL-BQUAL3.
           PERFORM COUNT-PARENS THRU COUNT-PARENS-EXIT. 
           PERFORM CK-CATNAME THRU CK-CATNAME-XIT.
           IF SSREL-SS-BQUAL3 EQUAL TO SPACES 
               ADD 1 TO SSREL-SS-ID2-QUALF
           ELSE 
               MOVE 1 TO NUM-LINES
               PERFORM CHANGE-DELETE THRU CHANGE-DELETE-EXIT
           END-IF 
           MOVE R-PARENS TO SSREL-SS-RIGHT-PAREN. 
           MOVE VAL-AREA TO SAVE-NAME SSREL-SS-BQUAL3.
           PERFORM SET-REL-TABLE THRU SET-REL-TABLE-EXIT. 
           IF SUB-PRESENT = "Y" 
               MOVE HOLD-SUB (1) TO SSREL-SS-BQUAL3-SUB1
               MOVE HOLD-SUB (2) TO SSREL-SS-BQUAL3-SUB2
               MOVE HOLD-SUB (3) TO SSREL-SS-BQUAL3-SUB3
           END-IF 
           MOVE "B" TO SSREL-SS-BQUAL1-LINETYP. 
           GO TO CAT-MVC-MSG-CHG. 
       SSREL-DEL-BQUAL3.
           IF SSREL-SS-BQUAL3 = SPACES
               GO TO CAT-MVC-MSG-ERR-DEL. 
           PERFORM FIELD-DELETE THRU FIELD-DELETE-EXIT. 
           MOVE 1 TO NUM-LINES. 
           MOVE SPACES TO SSREL-SS-BQUAL3 SSREL-SS-BQUAL3-SUB1
               SSREL-SS-BQUAL3-SUB2 SSREL-SS-BQUAL3-SUB3. 
           GO TO CAT-MVC-MSG-DEL. 
      * 
      *    SSREL - BQUAL4 
      * 
       SSREL-EDIT-BQUAL4. 
           IF FIELD-ID NOT = 45 
               GO TO SSREL-EDIT-BQUAL5. 
           IF ADD-CHG EQUAL TO "C"
             AND LINE-TYPE-BQUAL4 NOT EQUAL TO "3"
             AND SSREL-SS-ID2-QUALF GREATER THAN 3
               MOVE "B" TO FUNC 
               PERFORM GET-NEXT-BLOCK THRU GET-NEXT-BLOCK-EXIT
               IF LINE-TYPE-BQUAL4 NOT EQUAL TO "3" 
                   GO TO CAT-MVC-MSG-ERR-DEL
               END-IF 
           END-IF 
           MOVE SSREL-SS-BQUAL4 TO OLD-VALUE. 
           IF VAL (1) = "$" 
               GO TO SSREL-DEL-BQUAL4.
           PERFORM COUNT-PARENS THRU COUNT-PARENS-EXIT. 
           PERFORM CK-CATNAME THRU CK-CATNAME-XIT.
           IF SSREL-SS-BQUAL4 EQUAL TO SPACES 
               ADD 1 TO SSREL-SS-ID2-QUALF
               ADD 1 TO NUM-LINES 
           ELSE 
               MOVE 1 TO NUM-LINES
               PERFORM CHANGE-DELETE THRU CHANGE-DELETE-EXIT
           END-IF 
           MOVE R-PARENS TO SSREL-SS-RIGHT-PAREN. 
           MOVE VAL-AREA TO SAVE-NAME SSREL-SS-BQUAL4.
           PERFORM SET-REL-TABLE THRU SET-REL-TABLE-EXIT. 
           IF SUB-PRESENT = "Y" 
               MOVE HOLD-SUB (1) TO SSREL-SS-BQUAL4-SUB1
               MOVE HOLD-SUB (2) TO SSREL-SS-BQUAL4-SUB2
               MOVE HOLD-SUB (3) TO SSREL-SS-BQUAL4-SUB3
           END-IF 
           MOVE "3" TO SSREL-SS-BQUAL4-LINETYP. 
           GO TO CAT-MVC-MSG-CHG. 
       SSREL-DEL-BQUAL4.
           IF SSREL-SS-BQUAL4 = SPACES
               GO TO CAT-MVC-MSG-ERR-DEL. 
           PERFORM FIELD-DELETE THRU FIELD-DELETE-EXIT. 
           MOVE 1 TO NUM-LINES. 
           MOVE SPACES TO SSREL-SS-BQUAL4 SSREL-SS-BQUAL4-SUB1
               SSREL-SS-BQUAL4-SUB2 SSREL-SS-BQUAL4-SUB3. 
           GO TO CAT-MVC-MSG-DEL. 
      * 
      *    SSREL - BQUAL5 
      * 
       SSREL-EDIT-BQUAL5. 
           IF FIELD-ID NOT = 49 
               GO TO SSREL-EDIT-ROP.
           IF ADD-CHG EQUAL TO "C"
             AND LINE-TYPE-BQUAL4 NOT EQUAL TO "3"
             AND SSREL-SS-ID2-QUALF GREATER THAN 3
               MOVE "B" TO FUNC 
               PERFORM GET-NEXT-BLOCK THRU GET-NEXT-BLOCK-EXIT
               IF LINE-TYPE-BQUAL4 NOT EQUAL TO "3" 
                   GO TO CAT-MVC-MSG-ERR-DEL
               END-IF 
           END-IF 
           MOVE SSREL-SS-BQUAL5 TO OLD-VALUE. 
           IF VAL (1) = "$" 
               GO TO SSREL-DEL-BQUAL5.
           PERFORM COUNT-PARENS THRU COUNT-PARENS-EXIT. 
           PERFORM CK-CATNAME THRU CK-CATNAME-XIT.
           IF SSREL-SS-BQUAL5 EQUAL TO SPACES 
               ADD 1 TO SSREL-SS-ID2-QUALF
           ELSE 
               MOVE 1 TO NUM-LINES
               PERFORM CHANGE-DELETE THRU CHANGE-DELETE-EXIT
           END-IF 
           MOVE R-PARENS TO SSREL-SS-RIGHT-PAREN. 
           MOVE VAL-AREA TO SAVE-NAME SSREL-SS-BQUAL5.
           PERFORM SET-REL-TABLE THRU SET-REL-TABLE-EXIT. 
           IF SUB-PRESENT = "Y" 
               MOVE HOLD-SUB (1) TO SSREL-SS-BQUAL5-SUB1
               MOVE HOLD-SUB (2) TO SSREL-SS-BQUAL5-SUB2
               MOVE HOLD-SUB (3) TO SSREL-SS-BQUAL5-SUB3
           END-IF 
           MOVE "3" TO SSREL-SS-BQUAL4-LINETYP. 
           GO TO CAT-MVC-MSG-CHG. 
       SSREL-DEL-BQUAL5.
           IF SSREL-SS-BQUAL5 = SPACES
               GO TO CAT-MVC-MSG-ERR-DEL. 
           PERFORM FIELD-DELETE THRU FIELD-DELETE-EXIT. 
           MOVE 1 TO NUM-LINES. 
           MOVE SPACES TO SSREL-SS-BQUAL5 SSREL-SS-BQUAL5-SUB1
               SSREL-SS-BQUAL5-SUB2 SSREL-SS-BQUAL5-SUB3. 
           GO TO CAT-MVC-MSG-DEL. 
      * 
      *    SSREL - RELATIONAL OPERATORS 
      * 
       SSREL-EDIT-ROP.
           IF FIELD-ID NOT = 53 
               GO TO SSREL-EDIT-LOP.
           MOVE SSREL-SS-ROP TO OLD-VALUE.
           IF VAL (1) = "$" 
               GO TO SSREL-DEL-ROP. 
           MOVE VAL-AREA TO HOLD-FORMAT.
           MOVE ROP-CODES TO BIG-CODES. 
           PERFORM FORMAT-VALIDATION THRU FORMAT-VALIDATION-EXIT. 
           MOVE VAL-AREA TO SSREL-SS-ROP. 
           MOVE "I" TO SSREL-SS-ID-LINETYPE.
           GO TO CAT-MVC-MSG-CHG. 
       SSREL-DEL-ROP. 
           IF SSREL-SS-ROP = SPACES 
               GO TO CAT-MVC-MSG-ERR-DEL. 
           MOVE SPACES TO SSREL-SS-ROP. 
      * 
      *    IF EITHER ID1 OR ID2 HAVE QUALIFIERS 
      *    THIS BLOCK IS WRITTEN EVEN IF EMPTY
      * 
           IF SSREL-SS-ID1-QUALF EQUAL 0
             AND SSREL-SS-ID2-QUALF EQUAL 0 
               GO TO DEL-CHECKER
           ELSE 
               GO TO CAT-MVC-MSG-DEL
           END-IF 
      * 
      *    SSREL - LOGICAL OPERATORS
      * 
       SSREL-EDIT-LOP.
           IF FIELD-ID NOT EQUAL TO 55
               GO TO FLD-ERR. 
           MOVE SSREL-SS-LOP TO OLD-VALUE.
           IF VAL (1) = "$" 
               GO TO SSREL-DEL-LOP. 
           IF VAL-AREA NOT = "AND" AND "OR" AND "XOR" 
             AND "NOT" AND "ANDNOT" AND "ORNOT" AND "XORNOT"
               MOVE "ANDOR XORNOT" TO BIG-CODES 
               MOVE "B" TO CODE-ERR-SW
               GO TO VALIDATION-ERROR.
           MOVE VAL-AREA TO SSREL-SS-LOP. 
           MOVE "I" TO SSREL-SS-ID-LINETYPE.
           GO TO CAT-MVC-MSG-CHG. 
       SSREL-DEL-LOP. 
           IF SSREL-SS-LOP = SPACES 
               GO TO CAT-MVC-MSG-ERR-DEL. 
           MOVE SPACES TO SSREL-SS-LOP. 
      * 
      *    IF EITHER ID1 OR ID2 HAVE QUALIFIERS 
      *    THIS BLOCK IS WRITTEN EVEN IF EMPTY
      * 
           IF SSREL-SS-ID1-QUALF EQUAL 0
             AND SSREL-SS-ID2-QUALF EQUAL 0 
               GO TO DEL-CHECKER
           ELSE 
               GO TO CAT-MVC-MSG-DEL
           END-IF 
      * 
      *    PROCEDURE COUNT-PARENS 
      * 
      *    THIS PROCEDURE COUNTS BOTH RIGHT AND LEFT PARENTHESES
      *    AND AT THE SAME TIME LEAVES VAL-AREA WITH ONLY THE NAME. 
      * 
       COUNT-PARENS.
           MOVE ZEROS TO R-PARENS L-PARENS. 
           IF VAL (1) NOT = "(" 
             AND VAL (VA) NOT = ")" 
               GO TO COUNT-PARENS-EXIT
           END-IF 
           MOVE VAL-AREA TO HOLD-AREA.
           MOVE SPACES TO VAL-AREA. 
           MOVE 1 TO VA.
           PERFORM VARYING COUNTER FROM 1 BY 1
             UNTIL HOLD-IT (COUNTER) = SPACE
               IF HOLD-IT (COUNTER) = "(" 
                   ADD 1 TO L-PARENS
               ELSE 
                   IF HOLD-IT (COUNTER) = ")" 
                   ADD 1 TO R-PARENS
                   ELSE 
                       MOVE HOLD-IT (COUNTER) TO VAL (VA) 
                       ADD 1 TO VA
                   END-IF 
               END-IF 
           END-PERFORM. 
           IF VA GREATER THAN 33
               GO TO CAT-CK-LEN15.
       COUNT-PARENS-EXIT. 
           EXIT.
*CALL CPROCS
