*DECK     DCQRY120
00001  IDENTIFICATION DIVISION.                                         07/28/78
       PROGRAM-ID. QRY120.
*CALL COPYRIGHT 
      *    THIS SEGMENT PERFORMS SELECTION PROCESSING FOR THE 
      *    FOLLOWING TYPES OF QUERIES:  
      * 
      *    QRYTYPE                DESCRIPTION 
      * 
      *      30         ENTITY-TYPE 
      *      35         ENTITY-TYPE WITH
      *      36         ENTITY-TYPE HAVING
      *      80         ENTITY-TYPE TO ENTITY-TYPE
      *      85         ENTITY-TYPE TO ENTITY-TYPE WITH 
      *      86         ENTITY-TYPE TO ENTITY-TYPE HAVING 
      *      90         ENTRY-NAME TO ENTRY-NAME
      *      95         ENTRY-NAME TO ENTRY-NAME WITH 
      *      96         ENTRY-NAME TO ENTRY-NAME HAVING 
      * 
00019  ENVIRONMENT DIVISION.                                               CL**2
00020  CONFIGURATION SECTION.                                              CL**2
       SOURCE-COMPUTER. CYBER.
       OBJECT-COMPUTER. CYBER.
00023  INPUT-OUTPUT SECTION.                                               CL**2
00024  FILE-CONTROL.                                                       CL**2
*CALL     SELECTS                                                          CL**5
00026  DATA DIVISION.                                                      CL**2
00027  FILE SECTION.                                                       CL**2
*CALL     MAST1FD                                                          CL**5
*CALL     MAST2FD                                                          CL**5
*CALL     MAST3FD                                                          CL**5
00031                                                                    DCQRY12
*CALL QRYCS 
*CALL     WRKSTG77                                                         CL**5
00033  77  OPEN-DATA                   PICTURE X       VALUE "N".          CL**2
*CALL     MAST1WS                                                          CL**5
*CALL     TESTWACOM                                                        CL**5
*CALL     WRKSTG01                                                         CL**5
*CALL     MAST3DD1                                                         CL**5
*CALL     CONWORK                                                          CL**5
*CALL     ENTSAVE                                                          CL**5
00040  01  WORK-STORE.                                                     CL**2
*CALL     WITHHIT4                                                         CL**2
*CALL     HITWORK                                                          CL**5
*CALL     MULTSTORE                                                        CL**2
00044                                                                    DCQRY12
00051                                                                    DCQRY12
00052  PROCEDURE DIVISION.                                                 CL**2
00054 ********************************************************             CL**2
00055 *                                                                    CL**2
00056 *    INITIALIZATION                                                  CL**2
00057 *                                                                    CL**2
00058 ***********************************************************          CL**2
00059  0000-BEGIN.                                                         CL**2
00060      MOVE SPACES TO REL-ARG-LIST.                                    CL**2
00061      MOVE SPACES TO DATA-ARG-LIST.                                   CL**2
00062      MOVE SPACES TO DATA-LAST-ENTRY-NAME.                            CL**2
00063      MOVE SPACES TO CON-ARG-LIST.                                    CL**2
00064      MOVE SPACES TO HIT-TABLE.                                       CL**2
00065      MOVE SPACES TO WORK-HEADER.                                     CL**2
00066      MOVE ZEROES TO HIT-COUNT.                                       CL**2
00067      MOVE "N" TO OPEN-DATA.                                          CL**2
00068 *                                                                    CL**2
00069 *     CHECK FOR ENTITIES AT SAME HIER LEVEL                          CL**2
00070 *         REVERSE ENTRY TYPES IF NECESSARY                           CL**2
00071 *           (TASK-MOD, RPT-FORM-RES)                                 CL**2
00072 *                                                                    CL**2
00073      IF QRYTYPE-2 NOT EQUAL TO "8"                                   CL**2
00074          GO TO 0050-GET-PRIME.                                       CL**2
00075      IF QTBL-SEL1-ENTTYPE GREATER THAN QTBL-SEL2-TOTYPE              CL**2
00076          MOVE QTBL-SEL1-ENTTYPE TO ENTRY-TYPE-1                      CL**2
00077          MOVE QTBL-SEL2-TOTYPE TO QTBL-SEL1-ENTTYPE                  CL**2
00078          MOVE ENTRY-TYPE-1 TO QTBL-SEL2-TOTYPE.                      CL**2
00079  0050-GET-PRIME.                                                     CL**2
00080 *                                                                    CL**2
00081 *    GET PRIME NUMBERS FOR DATA AND RELATIONAL FILE                  CL**2
00082 *                                                                    CL**2
00083      PERFORM CON-OPEN THRU CON-OPEN-XIT.                             CL**2
00088      MOVE "3" TO CON-ENTRY-FUNCTION.                                 CL**2
00089      PERFORM CON-READ THRU CON-READ-XIT.                             CL**2
00090      MOVE 1 TO SUB1.                                                 CL**2
00091      PERFORM CHECK-MULT-STC THRU CHECK-MULT-STC-XIT.                 CL**2
00092 ************************************************************         CL**2
00093 *                                                                    CL**2
00094 *    READ RELATIONAL FILE ALL-NAMES RECORD AND ITS POINTERS          CL**2
00095 *                                                                    CL**2
00096 ************************************************************         CL**2
00097      PERFORM REL-OPEN THRU REL-OPEN-XIT.                             CL**2
00098      MOVE ALL-NAMES-LITERAL TO REL-ENTRY-NAME.                       CL**2
00099  0100-REL-READ.                                                      CL**2
00100      MOVE "N" TO REL-ENTRY-FUNCTION.                                 CL**2
00101      PERFORM REL-READ THRU REL-READ-XIT.                             CL**2
00102      IF REL-RETURN-CODE EQUAL TO "0"                                 CL**2
00103          GO TO 0110-MOVE-REL-POINTER.                                CL**2
00104      IF REL-RETURN-CODE EQUAL TO "1"                                 CL**2
00105          GO TO 0900-QR-END.                                          CL**2
00106      MOVE "RR" TO QTBL-HDR-REQTYPE.                                  CL**2
00107      MOVE REL-ENTRY-NAME TO QTBL-SEL2-TOCNAME.                       CL**2
00108      GO TO PROGRAM-END-BAD.                                          CL**2
00109  0110-MOVE-REL-POINTER.                                              CL**2
00110 ********************************************************             CL**2
00111 *                                                                    CL**2
00112 *    IDENTIFY QUERY TYPE-THEN PROCESS ACCORDINGLY                    CL**2
00113 *                                                                    CL**2
00114 ***************************************************************      CL**2
00115  0150-CHECK-QUERY-TYPE.                                              CL**2
00116      IF QRYTYPE-2 EQUAL TO "8"                                       CL**2
00117          GO TO 0300-TYPE-RANGE.                                      CL**2
00118      IF QRYTYPE-2 EQUAL TO "9"                                       CL**2
00119          GO TO 0400-NAME-RANGE.                                      CL**2
00120 ***********************************************************          CL**2
00121 *                                                                    CL**2
00122 *    PROCESS TYPE OF ENTRY QUERIES (30,35,36)                        CL**2
00123 *                                                                    CL**2
00124 *********************************************************            CL**2
00125  0200-ENTRY-TYPE.                                                    CL**2
00126      MOVE REL-POINTER-TYPE TO ENTRY-TYPE-1.                          CL**2
00127      MOVE QTBL-SEL1-ENTTYPE TO ENTRY-TYPE-2.                         CL**2
00128      PERFORM MATCH-ENTRY-TYPE THRU MATCH-ENTRY-TYPE-XIT.             CL**2
00129      IF ENTRY-TYPE-MATCH EQUAL TO "N"                                CL**2
00130          GO TO 0100-REL-READ.                                        CL**2
00131      IF QRYTYPE-23 EQUAL TO "30"                                     CL**2
00132          GO TO 0800-ENTRY-QUALIFIES                                  CL**2
00133      ELSE                                                            CL**2
00134          GO TO 0500-CHECK-CONDITION.                                 CL**2
00135 *************************************************************        CL**2
00136 *                                                                    CL**2
00137 *    PROCESS RANGE BY TYPE OF ENTRY                                  CL**2
00138 *                                                                    CL**2
00139 ************************************************************         CL**2
00140  0300-TYPE-RANGE.                                                    CL**2
00141      IF REL-POINTER-TYPE LESS THAN QTBL-SEL1-ENTTYPE                 CL**2
00142          GO TO 0100-REL-READ.                                        CL**2
00143      IF REL-POINTER-TYPE GREATER THAN QTBL-SEL2-TOTYPE               CL**2
00144          GO TO 0100-REL-READ.                                        CL**2
00145      IF QRYTYPE-23 EQUAL TO "80"                                     CL**2
00146          GO TO 0800-ENTRY-QUALIFIES.                                 CL**2
00147      GO TO 0500-CHECK-CONDITION.                                     CL**2
00148 **************************************************************       CL**2
00149 *                                                                    CL**2
00150 *    PROCESS RANGE BY NAME OR VALUE                                  CL**2
00151 *                                                                    CL**2
00152 ***************************************************************      CL**2
00153  0400-NAME-RANGE.                                                    CL**2
00154      IF REL-POINTER-NAME LESS THAN QTBL-OPT-CNAME                    CL**2
00155          GO TO 0100-REL-READ.                                        CL**2
00156      IF REL-POINTER-NAME GREATER THAN QTBL-SEL2-TOCNAME              CL**2
00157          GO TO 0100-REL-READ.                                        CL**2
00158      IF QRYTYPE-23 EQUAL TO "90"                                     CL**2
00159          GO TO 0800-ENTRY-QUALIFIES.                                 CL**2
00160 *                                                                    CL**2
00161 *        PROCESS CONDITON CLAUSES (WITH AND HAVING)                  CL**2
00162 *            RETRIEVE ENTRY FROM DATA FILE                           CL**2
00163 *                                                                    CL**2
00164  0500-CHECK-CONDITION.                                               CL**2
00165      MOVE REL-POINTER-NAME TO QUERY-NAME.                            CL**2
00166      IF OPEN-DATA EQUAL TO "N"                                       CL**2
00167          MOVE "Y" TO OPEN-DATA                                       CL**2
00168          OPEN INPUT MAST1.                                           CL**2
00169      PERFORM QRY-WITH THRU QRY-HAVE-XIT.                             CL**2
00170      IF HIT-SW EQUAL TO "N" GO TO 0100-REL-READ.                     CL**2
00171 **************************************************************       CL**2
00172 *                                                                    CL**2
00173 *    ENTRY QUALIFIES                                                 CL**2
00174 *                                                                    CL**2
00175 ************************************************************         CL**2
00176  0800-ENTRY-QUALIFIES.                                               CL**2
00177      MOVE REL-POINTER-NAME TO HIT-NAME.                              CL**2
00178      MOVE REL-POINTER-TYPE TO HIT-ENTRY-TYPE.                        CL**2
00179      PERFORM WRITE-HIT THRU WRITE-HIT-XIT.                           CL**2
00180      GO TO 0100-REL-READ.                                            CL**2
00181 **************************************************************       CL**2
00182 *                                                                    CL**2
00183 *    END OF MODULE PROCESSING                                        CL**2
00184 *                                                                    CL**2
00185 ************************************************************         CL**2
00186  0900-QR-END.                                                        CL**2
00187      GO TO QUERY-END.                                                CL**2
00188                                                                    DCQRY12
00189 ***********************************************************          CL**2
00190 ***********************************************************          CL**2
00191 *                                                                    CL**2
00192 *    S U B R O U T I N E S   F O L L O W                             CL**2
00193 *                                                                    CL**2
00194 *******************************************************              CL**2
00195 *******************************************************              CL**2
*CALL     MULTLINE                                                         CL**2
*CALL     PQRYEND2                                                         CL**2
*CALL     MATCHENT                                                         CL**5
*CALL     QRYWITH4                                                         CL**2
*CALL     MAST1RFL                                                         CL**5
*CALL     MAST1RNL                                                         CL**5
*CALL     MAST1RFC                                                         CL**5
*CALL     MAST1EXT                                                         CL**5
*CALL     MAST1READ                                                        CL**5
*CALL     MAST1ALG                                                         CL**5
*CALL     RELCOM                                                           CL**5
*CALL     RELALG                                                           CL**5
*CALL     MAST3IO1                                                         CL**5
