*DECK     DCQRY150
00001  IDENTIFICATION DIVISION.                                         08/07/78
       PROGRAM-ID. QRY150.
*CALL COPYRIGHT 
      *    THIS SEGMENT PERFORMS SELECTION PROCESSING FOR THE 
      *    FOLLOWING TYPES OF QUERIES:  
      * 
      *    QRYTYPE                DESCRIPTION 
      * 
      *      36         ENTITY-TYPE HAVING REF/NOREF
      *      86         ENTITY-TYPE TO ENTITY-TYPE HAVING REF/NOREF 
      *      96         ENTRY-NAME TO ENTRY-NAME HAVING REF/NOREF 
      * 
00013  ENVIRONMENT DIVISION.                                            DCQRY150
00014  CONFIGURATION SECTION.                                           DCQRY150
       SOURCE-COMPUTER. CYBER.
       OBJECT-COMPUTER. CYBER.
00017  INPUT-OUTPUT SECTION.                                            DCQRY150
00018  FILE-CONTROL.                                                    DCQRY150
*CALL     SELECTS                                                          CL**5
00020  DATA DIVISION.                                                   DCQRY150
00021  FILE SECTION.                                                    DCQRY150
*CALL     MAST1FD                                                          CL**5
*CALL     MAST2FD                                                          CL**5
*CALL     MAST3FD                                                          CL**5
*CALL QRYCS 
*CALL     WRKSTG77                                                         CL**5
00026  77  OPEN-DATA                   PICTURE X   VALUE "N".           DCQRY150
*CALL     MAST1WS                                                          CL**5
*CALL     WRKSTG01                                                         CL**5
*CALL     MAST3DD1                                                         CL**5
*CALL     CONWORK                                                          CL**5
*CALL     RELSAVE                                                          CL**5
00032  01  WORK-STORE.                                                  DCQRY150
*CALL     WITHHIT4                                                         CL**2
*CALL     HITWORK                                                          CL**5
00041  PROCEDURE DIVISION.                                                 CL**2
00043 ******************************************************************DCQRY150
00044 *                                                                 DCQRY150
00045 *    INITIALIZATION                                               DCQRY150
00046 *                                                                 DCQRY150
00047 ******************************************************************DCQRY150
00048  0000-BEGIN.                                                      DCQRY150
00049      MOVE SPACES TO REL-ARG-LIST.                                 DCQRY150
00050      MOVE SPACES TO CON-ARG-LIST.                                 DCQRY150
00051      MOVE SPACES TO HIT-TABLE.                                    DCQRY150
00052      MOVE SPACES TO WORK-HEADER.                                  DCQRY150
00053      MOVE ZEROS TO HIT-COUNT.                                     DCQRY150
00054 *                                                                 DCQRY150
00055 *    OPEN FILES GET PRIME NUMBER FOR RELATIONAL FILE              DCQRY150
00056 *                                                                 DCQRY150
00057      PERFORM CON-OPEN THRU CON-OPEN-XIT.                          DCQRY150
00061      PERFORM REL-OPEN THRU REL-OPEN-XIT.                          DCQRY150
00062 ***************************************************************** DCQRY150
00063 *                                                                 DCQRY150
00064 *    READ RELATIONAL FILE ALL NAMES RECORD                        DCQRY150
00065 *        IF QRYTYPE IS 36 OR 86 DETERMINE IF TYPE(S)              DCQRY150
00066 *            OF ENTRY (IES) IS THAT DESIRED PRIOR                 DCQRY150
00067 *            TO CHECKING FOR REF                                  DCQRY150
00068 *        IF QRYTYPE IS 96 DETERMINE IF ENTRY"S CATNAME            DCQRY150
00069 *            IS WITHIN DESIRED RANGE PRIOR TO CHECKING FOR REF    DCQRY150
00070 *                                                                 DCQRY150
00071 ******************************************************************DCQRY150
00072      MOVE ALL-NAMES-LITERAL TO REL-ENTRY-NAME.                    DCQRY150
00073      GO TO 0110-NAME-READ.                                        DCQRY150
00074 *                                                                 DCQRY150
00075 *    REPOSITION ALL NAMES ENTRY TO LAST POINTER RETRIEVED         DCQRY150
00076 *                                                                 DCQRY150
00077  0100-GET-ENTITY-NAME.                                            DCQRY150
00078      MOVE ENTRY-NAME-SAVE TO REL-ENTRY-NAME.                      DCQRY150
00079      MOVE POINTER-NAME-SAVE TO REL-POINTER-NAME.                  DCQRY150
00080      MOVE NEXT-REC-SAVE TO REL-NEXT-REC.                          DCQRY150
00081      PERFORM RETURN-POINTER THRU RETURN-POINTER-XIT.              DCQRY150
00082      IF REL-RETURN-CODE NOT EQUAL TO "0"                          DCQRY150
00083          MOVE "RR" TO QTBL-HDR-REQTYPE                               CL**2
00084          MOVE REL-ENTRY-NAME TO QTBL-SEL2-TOCNAME                    CL**2
00085          GO TO PROGRAM-END-BAD.                                   DCQRY150
00086 *                                                                 DCQRY150
00087 *    RETRIEVE NEXT ENTITY NAME                                    DCQRY150
00088 *                                                                 DCQRY150
00089  0110-NAME-READ.                                                  DCQRY150
00090      MOVE "N" TO REL-ENTRY-FUNCTION.                              DCQRY150
00091      PERFORM REL-READ THRU REL-READ-XIT.                          DCQRY150
00092      IF REL-RETURN-CODE EQUAL TO "0"                              DCQRY150
00093          GO TO 0150-CHECK-QUERY-TYPE.                             DCQRY150
00094      IF REL-RETURN-CODE EQUAL TO "1"                              DCQRY150
00095          GO TO 0900-HAVEREF-END.                                  DCQRY150
00096      MOVE "RR" TO QTBL-HDR-REQTYPE.                                  CL**2
00097      MOVE REL-ENTRY-NAME TO QTBL-SEL2-TOCNAME.                       CL**2
00098      GO TO PROGRAM-END-BAD.                                       DCQRY150
00099 *                                                                 DCQRY150
00100 *    CHECK POINTER FOR QUALIFICATION BY QUERY TYPE                DCQRY150
00101 *                                                                 DCQRY150
00102  0150-CHECK-QUERY-TYPE.                                           DCQRY150
00103      IF QRYTYPE-2 EQUAL TO "8"                                    DCQRY150
00104          GO TO 0300-TYPE-RANGE.                                   DCQRY150
00105      IF QRYTYPE-2 EQUAL TO "9"                                    DCQRY150
00106          GO TO 0400-NAME-RANGE.                                   DCQRY150
00107 ***************************************************************** DCQRY150
00108 *                                                                 DCQRY150
00109 *    PROCESS TYPE OF ENTRY QUERY (36)                             DCQRY150
00110 *                                                                 DCQRY150
00111 ***************************************************************** DCQRY150
00112  0200-ENTRY-TYPE.                                                 DCQRY150
00113      MOVE REL-POINTER-TYPE TO ENTRY-TYPE-1.                       DCQRY150
00114      MOVE QTBL-SEL1-ENTTYPE TO ENTRY-TYPE-2.                      DCQRY150
00115      PERFORM MATCH-ENTRY-TYPE THRU MATCH-ENTRY-TYPE-XIT.          DCQRY150
00116      IF ENTRY-TYPE-MATCH EQUAL TO "N"                             DCQRY150
00117          GO TO 0110-NAME-READ.                                    DCQRY150
00118      GO TO 0500-CHECK-REFERENCE.                                  DCQRY150
00119 ******************************************************************DCQRY150
00120 *                                                                 DCQRY150
00121 *    PROCESS RANGE BY TYPE OF ENTRY       (86)                    DCQRY150
00122 *                                                                 DCQRY150
00123 ******************************************************************DCQRY150
00124  0300-TYPE-RANGE.                                                 DCQRY150
00125      IF REL-POINTER-TYPE LESS THAN QTBL-SEL1-ENTTYPE              DCQRY150
00126          GO TO 0110-NAME-READ.                                    DCQRY150
00127      IF REL-POINTER-TYPE GREATER THAN QTBL-SEL2-TOTYPE            DCQRY150
00128          GO TO 0110-NAME-READ.                                    DCQRY150
00129      GO TO 0500-CHECK-REFERENCE.                                  DCQRY150
00130 ******************************************************************DCQRY150
00131 *                                                                 DCQRY150
00132 *    PROCESS RANGE BY NAME OR VALUE   (96)                        DCQRY150
00133 *                                                                 DCQRY150
00134 ******************************************************************DCQRY150
00135  0400-NAME-RANGE.                                                 DCQRY150
00136      IF REL-POINTER-NAME LESS THAN QTBL-OPT-CNAME                 DCQRY150
00137          GO TO 0110-NAME-READ.                                    DCQRY150
00138      IF REL-POINTER-NAME GREATER THAN QTBL-SEL2-TOCNAME           DCQRY150
00139          GO TO 0110-NAME-READ.                                    DCQRY150
00140                                                                    DCQRY15
00141 ******************************************************************DCQRY150
00142 ******************************************************************DCQRY150
00143 *                                                                 DCQRY150
00144 *    RETRIEVE RELATIONAL FILE ENTRY TO SEE IF                     DCQRY150
00145 *    IT IS REFERENCED BY ANY OTHER ENTRIES                        DCQRY150
00146 *    IF IT HAS A POINTER IT IS                                    DCQRY150
00147 *                                                                 DCQRY150
00148 ******************************************************************DCQRY150
00149 ******************************************************************DCQRY150
00150  0500-CHECK-REFERENCE.                                            DCQRY150
00151      MOVE REL-ENTRY-NAME TO ENTRY-NAME-SAVE.                      DCQRY150
00152      MOVE REL-POINTER-NAME TO POINTER-NAME-SAVE.                  DCQRY150
00153      MOVE REL-NEXT-REC TO NEXT-REC-SAVE.                          DCQRY150
00154      MOVE REL-POINTER-NAME TO REL-ENTRY-NAME.                     DCQRY150
00155      MOVE "N" TO REL-ENTRY-FUNCTION.                              DCQRY150
00156      PERFORM REL-READ THRU REL-READ-XIT.                          DCQRY150
00157      IF REL-RETURN-CODE EQUAL TO "0"                              DCQRY150
00158          GO TO 0520-HAS-POINTER.                                  DCQRY150
00159      IF REL-RETURN-CODE EQUAL TO "1"                              DCQRY150
00160          GO TO 0530-NO-POINTER.                                   DCQRY150
00161      MOVE "RR" TO QTBL-HDR-REQTYPE.                                  CL**2
00162      MOVE REL-ENTRY-NAME TO QTBL-SEL2-TOCNAME.                       CL**2
00163      GO TO PROGRAM-END-BAD.                                       DCQRY150
00164 *                                                                 DCQRY150
00165 *    DETERMINE IF ENTRY QUALIFIES                                 DCQRY150
00166 *                                                                 DCQRY150
00167  0520-HAS-POINTER.                                                DCQRY150
00168      IF QTBL-SEL1-LOGIND (1) EQUAL TO "EQ"                           CL**2
00169          GO TO 0600-ENTRY-QUALIFIES.                              DCQRY150
00170      GO TO 0100-GET-ENTITY-NAME.                                  DCQRY150
00171  0530-NO-POINTER.                                                 DCQRY150
00172      IF QTBL-SEL1-LOGIND (1) EQUAL TO "NE"                           CL**2
00173          GO TO 0600-ENTRY-QUALIFIES.                              DCQRY150
00174      GO TO 0100-GET-ENTITY-NAME.                                  DCQRY150
00175 ******************************************************************DCQRY150
00176 *                                                                 DCQRY150
00177 *    ENTRY QUALIFIES WRITE TO HIT TABLE                           DCQRY150
00178 *                                                                 DCQRY150
00179 ******************************************************************DCQRY150
00180  0600-ENTRY-QUALIFIES.                                            DCQRY150
00181      MOVE REL-ENTRY-NAME TO HIT-NAME.                             DCQRY150
00182      MOVE REL-ENTRY-TYPE TO HIT-ENTRY-TYPE.                       DCQRY150
00183      PERFORM WRITE-HIT THRU WRITE-HIT-XIT.                        DCQRY150
00184      GO TO 0100-GET-ENTITY-NAME.                                  DCQRY150
00185 ******************************************************************DCQRY150
00186 *                                                                 DCQRY150
00187 *    END OF MODULE PROCESSING                                     DCQRY150
00188 *                                                                 DCQRY150
00189 ******************************************************************DCQRY150
00190  0900-HAVEREF-END.                                                DCQRY150
00191      GO TO QUERY-END.                                             DCQRY150
00192                                                                    DCQRY15
00193 ******************************************************************DCQRY150
00194 ******************************************************************DCQRY150
00195 *                                                                 DCQRY150
00196 *    S U B R O U T I N E S     F O L L O W                        DCQRY150
00197 *                                                                 DCQRY150
00198 ******************************************************************DCQRY150
00199 ******************************************************************DCQRY150
*CALL     PQRYEND2                                                         CL**2
*CALL     MATCHENT                                                         CL**5
*CALL     MAST3IO1                                                         CL**5
*CALL     RELCOM                                                           CL**5
*CALL     MAST2RK                                                          CL**5
*CALL     RELALG                                                           CL**5
