*COMDECK  RELUPD
00001                                                                    RELUPD 
00002 ******************************************************************RELUPD
00003 *                                                                    LV002
00004 *       THESE ROUTINES HANDLE RELATIONAL FILE I/O FOR THE UPDATE     CL**2
00005 *                                                                    CL**2
00006 ******************************************************************RELUPD
00007  REL-IO-OPEN.                                                     RELUPD
00008      OPEN I-O MAST2.                                              RELUPD
00009      MOVE SPACES TO REL-ARG-LIST.                                 RELUPD
00010  REL-IO-OPEN-XIT.                                                 RELUPD
00011      EXIT.                                                        RELUPD
00012 **********************************************************           CL**2
00013 *                                                                    CL**2
00014 *       ADD AN ENTRY                                                 CL**2
00015 *                                                                    CL**2
00016 **********************************************************           CL**2
00017  REL-ADD.                                                         RELUPD
00018      MOVE ZERO TO REL-RETURN-CODE.                                   CL**2
00019      IF REL-ENTRY-NAME EQUAL SPACE                                RELUPD
00020          GO TO REL-ADD-READ-100.                                     CL**2
00021      MOVE ZERO TO REL-NEXT-REC.                                      CL**2
           GO TO REL-BUILD-ENTRY. 
00029  REL-ADD-READ-100.                                                   CL**2
00030      MOVE 1 TO REL-RETURN-CODE.                                   RELUPD
00031      GO TO REL-ADD-XIT.                                           RELUPD
00032  REL-BUILD-ENTRY.                                                 RELUPD
00033      PERFORM REL-SET-UP THRU REL-SET-UP-XIT.                      RELUPD
           PERFORM REL-WRITE THRU REL-WRITE-XIT.
00037  REL-ADD-XIT.                                                     RELUPD
00038      EXIT.                                                        RELUPD
00039                                                                   RELUPD
00040                                                                   RELUPD
00041                                                                   RELUPD
00042 **********************************************************           CL**2
00043                                                                   RELUPD
00044 *       ADD A POINTER                                                CL**2
00045 *                                                                    CL**2
00046 **********************************************************           CL**2
00047  REL-ADD-PTR.                                                     RELUPD
00048      MOVE ZERO TO REL-RETURN-CODE.                                   CL**2
00049      IF REL-ENTRY-NAME NOT EQUAL SPACE                               CL**2
00050          GO TO REL-ADD-PTR-READ.                                     CL**2
00051  REL-ADD-PTR-100.                                                    CL**2
00052      MOVE 1 TO REL-RETURN-CODE.                                      CL**2
00053      GO TO REL-ADD-PTR-XIT.                                          CL**2
00054  REL-ADD-PTR-READ.                                                RELUPD
00055      IF REL-ENTRY-NAME EQUAL ALL-NAMES-LITERAL                       CL**2
00056          MOVE DC2-NEXT-REC TO REL-NEXT-REC                           CL**2
00057      ELSE MOVE ZERO TO REL-NEXT-REC.                                 CL**2
00058      PERFORM RELALG THRU RELALG-XIT.                                 CL**2
00059      READ MAST2                                                   RELUPD
00060          INVALID KEY GO TO REL-ADD-PTR-100.                          CL**2
           MOVE 1 TO CREATE-REL-SW. 
00061  REL-ADD-PTR-SET.                                                 RELUPD
00062      MOVE 1 TO REL-SUB.                                           RELUPD
00063  REL-ADD-PTR-LOOP.                                                RELUPD
00064      IF REL-DTL-ENT-ID (REL-SUB) EQUAL SPACE                         CL**2
00065          GO TO MAKE-REL-ENTRY.                                    RELUPD
00066      IF REL-DTL-ENT-ID (REL-SUB) NOT EQUAL REL-POINTER-TYPE       RELUPD
00067          GO TO REL-ADD-PTR-LOOP-A.                                RELUPD
00068      IF REL-DTL-CATNAME (REL-SUB) EQUAL REL-POINTER-NAME          RELUPD
               ADD 1 TO REL-DTL-PTR-COUNT (REL-SUB) 
               GO TO MAKE-REL-2 
           END-IF 
00070  REL-ADD-PTR-LOOP-A.                                              RELUPD
00071      ADD 1 TO REL-SUB.                                            RELUPD
00072      IF REL-SUB NOT GREATER THAN REL-LIMIT                           CL**2
00073          GO TO REL-ADD-PTR-LOOP.                                     CL**2
00074      IF REL-HDR-CONT EQUAL 1                                         CL**2
           MOVE 1 TO CREATE-REL-SW
           GO TO GET-REL-NEXT.
           MOVE 0 TO CREATE-REL-SW. 
00076      MOVE 1 TO REL-HDR-CONT.                                         CL**2
00077      PERFORM RELALG THRU RELALG-XIT.                                 CL**2
00078      REWRITE REL-RECORD INVALID KEY PERFORM INVALID-REL-KEY       RELUPD
00079          GO TO REL-ADD-PTR-XIT.                                   RELUPD
           PERFORM REL-SET-UP THRU REL-SET-UP-XIT.
           ADD 1 TO REL-NEXT-REC. 
           GO TO REL-ADD-PTR-SET. 
       GET-REL-NEXT.
00081      ADD 1 TO REL-NEXT-REC.                                          CL**2
00082      PERFORM RELALG THRU RELALG-XIT.                                 CL**2
00083      READ MAST2                                                   RELUPD
           INVALID KEY PERFORM INVALID-REL-KEY
           GO TO REL-ADD-PTR-XIT. 
00086      GO TO REL-ADD-PTR-SET.                                       RELUPD
00087  MAKE-REL-ENTRY.                                                  RELUPD
00088      MOVE REL-POINTER-TYPE TO REL-DTL-ENT-ID (REL-SUB).           RELUPD
00089      MOVE REL-POINTER-NAME TO REL-DTL-CATNAME (REL-SUB).          RELUPD
00090      MOVE REL-PUSE TO REL-DTL-ENT-PTR (REL-SUB).                  RELUPD
00091      MOVE REL-POINTER-ALIAS TO REL-DTL-ENT-PTR-ALIAS (REL-SUB).      CL**2
           MOVE 1 TO REL-DTL-PTR-COUNT (REL-SUB). 
       MAKE-REL-2.
           IF CREATE-REL-SW = 0 
00093          PERFORM REL-WRITE THRU REL-WRITE-XIT                        CL**2
00094      ELSE PERFORM REL-REWRITE THRU REL-REWRITE-XIT.                  CL**2
           MOVE 0 TO CREATE-REL-SW. 
00095  REL-ADD-PTR-XIT.                                                 RELUPD
00096      EXIT.                                                        RELUPD
00097                                                                   RELUPD
00101 ******************************************************************RELUPD
00102 ******************************************************************RELUPD
00103 *    DELETE A REFERENCE POINTER                                   RELUPD
00104 *    DELETION IS AFFECTED BY PLACING SPACE IN ENTRY ID  *            CL**2
00105 *                                                                    CL**2
00106 ******************************************************************RELUPD
00107 ******************************************************************RELUPD
00108  REL-DEL-PTR.                                                     RELUPD
00109      MOVE ZERO TO REL-RETURN-CODE.                                   CL**2
00110      MOVE ZERO TO REL-NEXT-REC.                                      CL**2
00111  REL-DEL-PTR-100.                                                    CL**2
00112      PERFORM RELALG THRU RELALG-XIT.                                 CL**2
00113      READ MAST2                                                      CL**2
00114          INVALID KEY MOVE 1 TO REL-RETURN-CODE                       CL**2
00115          GO TO REL-DEL-PTR-XIT.                                      CL**2
           MOVE REL-REC-ID TO REL-LAST-ENTRY-NAME.
00116      MOVE 1 TO REL-SUB.                                           RELUPD
00117  REL-DEL-PTR-LOOP.                                                RELUPD
00118      IF REL-DTL-CATNAME (REL-SUB) NOT EQUAL REL-POINTER-NAME         CL**2
00119          GO TO REL-DEL-PTR-LOOP-1.                                RELUPD
           SUBTRACT 1 FROM REL-DTL-PTR-COUNT (REL-SUB). 
           IF REL-DTL-PTR-COUNT (REL-SUB) IS LESS THAN 1
               MOVE SPACE TO REL-DTL-ENT-ID (REL-SUB) 
           END-IF 
00121      PERFORM REL-REWRITE THRU REL-REWRITE-XIT.                    RELUPD
00122  REL-DEL-PTR-XIT.                                                    CL**2
00123      EXIT.                                                           CL**2
00124  REL-DEL-PTR-LOOP-1.                                              RELUPD
00125      ADD 1 TO REL-SUB.                                            RELUPD
00126      IF REL-SUB NOT GREATER THAN REL-LIMIT                           CL**2
00127          GO TO REL-DEL-PTR-LOOP.                                     CL**2
00128      IF REL-HDR-CONT EQUAL ZERO                                      CL**2
00129          MOVE 2 TO REL-RETURN-CODE                                   CL**2
00130          GO TO REL-DEL-PTR-XIT.                                      CL**2
00131      ADD 1 TO REL-NEXT-REC.                                          CL**2
00132      GO TO REL-DEL-PTR-100.                                          CL**2
00138                                                                      CL**2
00139 ******************************************************************   CL**2
00140 *                                                                    CL**2
00141 *     DELETE AN ENTRY                                           *    CL**2
00142 *                                                                    CL**2
00143 ****************************************************************     CL**2
00144  REL-DELETE.                                                         CL**2
00145      MOVE ZERO TO REL-RETURN-CODE.                                   CL**2
00146      MOVE ZERO TO REL-NEXT-REC.                                      CL**2
00147  REL-DELETE-100.                                                     CL**2
00148      PERFORM RELALG THRU RELALG-XIT.                                 CL**2
00149      READ MAST2                                                      CL**2
00150           INVALID KEY GO TO REL-DELETE-200.                          CL**2
           DELETE MAST2 INVALID KEY GO TO REL-DELETE-200. 
00153      IF REL-HDR-CONT NOT EQUAL ZERO                                  CL**2
00154           ADD 1 TO REL-NEXT-REC                                      CL**2
00155           GO TO REL-DELETE-100.                                      CL**2
00156  REL-DELETE-XIT.                                                     CL**2
00157      EXIT.                                                           CL**2
00158  REL-DELETE-200.                                                     CL**2
00159      IF REL-NEXT-REC EQUAL ZERO                                      CL**2
00160           MOVE 1 TO REL-RETURN-CODE.                                 CL**2
00161      GO TO REL-DELETE-XIT.                                           CL**2
00162                                                                   RELUPD
00165 ******************************************************************RELUPD
00166 *                                                                *RELUPD
00167 *    SET UP HEADER DATA                                          *RELUPD
00168 *                                                                *RELUPD
00169 ******************************************************************RELUPD
00170  REL-SET-UP.                                                      RELUPD
00171      MOVE SPACE TO REL-RECORD.                                       CL**2
00172      MOVE REL-ENTRY-TYPE TO REL-HDR-ENTRY-TYPE.                      CL**2
00173      MOVE ZERO TO REL-HDR-CONT.                                      CL**2
00174      MOVE REL-ENTRY-ALIAS TO REL-HDR-ALIAS.                          CL**2
00175  REL-SET-UP-XIT.                                                  RELUPD
00176      EXIT.                                                        RELUPD
00177                                                                   RELUPD
00181 ******************************************************************RELUPD
00182 *                                                                *RELUPD
00183 *    DISPLAY INVALID KEY                                         *RELUPD
00184 *                                                                *RELUPD
00185 ******************************************************************RELUPD
00186  INVALID-REL-KEY.                                                 RELUPD
00187      MOVE 12 TO RETURN-CODE.                                         CL**2
00188      MOVE 9 TO REL-RETURN-CODE.                                      CL**2
00189                                                                   RELUPD
00193 ******************************************************************RELUPD
00194 *                                                                *RELUPD
00195 *    REWRITE A MAST2 RECORD                                     * RELUPD
00196 *                                                                *RELUPD
00197 ******************************************************************RELUPD
00198  REL-REWRITE.                                                     RELUPD
00199      PERFORM RELALG THRU RELALG-XIT.                                 CL**2
00200      REWRITE REL-RECORD INVALID KEY PERFORM INVALID-REL-KEY.      RELUPD
00201  REL-REWRITE-XIT.                                                 RELUPD
00202      EXIT.                                                        RELUPD
00203 ******************************************************************RELUPD
00204 *                                                                *RELUPD
00205 *    WRITE A MAST2 RECORD                                       * RELUPD
00206 *                                                                *RELUPD
00207 ******************************************************************RELUPD
00208  REL-WRITE.                                                       RELUPD
00210      PERFORM RELALG THRU RELALG-XIT.                                 CL**2
00211      WRITE REL-RECORD INVALID KEY PERFORM INVALID-REL-KEY.        RELUPD
00212  REL-WRITE-XIT.                                                   RELUPD
00213      EXIT.                                                        RELUPD
00214 ******************************************************************RELUPD
00215 ******************************************************************RELUPD
00216                                                                    RELUPD 
