*COMDECK  PQRYEND2
00001                                                                    PQRYEND
00002 *****  CONTROL FILE I/O *****                                     PQRYEND2
00003 ******************************************************************   LV001
00004 ******************************************************************PQRYEND2
00005 *    READ FIRST FIELD TABLE RECORD OF SPECIFIC ENTRY TYPE        *PQRYEND2
00006 ******************************************************************PQRYEND2
00007 ******************************************************************PQRYEND2
00008  READ-FIELD-ENTRY.                                                PQRYEND2
00009      MOVE "E" TO CON-ENTRY-FUNCTION.                              PQRYEND2
00010      PERFORM CON-READ THRU CON-READ-XIT.                             CL**2
00011      MOVE CTL-RECORD-5 TO FIELD-TABLE.                               CL**2
00012  READ-FIELD-ENTRY-XIT.                                            PQRYEND2
00013      EXIT.                                                        PQRYEND2
00014 ******************************************************************PQRYEND2
00015 ******************************************************************PQRYEND2
00016 *    READ NEXT SEQUENTIAL FIELD TABLE ENTRY                      *PQRYEND2
00017 ******************************************************************PQRYEND2
00018 ******************************************************************PQRYEND2
00019  READ-NEXT-FIELD.                                                 PQRYEND2
00020      MOVE "N" TO CON-ENTRY-FUNCTION.                              PQRYEND2
00021      PERFORM CON-READ THRU CON-READ-XIT.                             CL**2
00022      MOVE CTL-RECORD-5 TO FIELD-TABLE.                               CL**2
00023  READ-NEXT-FIELD-XIT.                                             PQRYEND2
00024      EXIT.                                                        PQRYEND2
00025 ******************************************************************PQRYEND2
00026 ******************************************************************PQRYEND2
00027 *    READ SPECIFIC (ENTRY AND CATEGORY) FIELD TABLE RECORD       *PQRYEND2
00028 ******************************************************************PQRYEND2
00029 ******************************************************************PQRYEND2
00030  READ-FIELD-TABLE.                                                PQRYEND2
00031      MOVE "C" TO CON-ENTRY-FUNCTION.                              PQRYEND2
00032      PERFORM CON-READ THRU CON-READ-XIT.                             CL**2
00033      MOVE CTL-RECORD-5 TO FIELD-TABLE.                               CL**2
00034  READ-FIELD-TABLE-XIT.                                            PQRYEND2
00035      EXIT.                                                        PQRYEND2
00036                                                                    PQRYEND
00037  WRITE-HIT.                                                       PQRYEND2
           IF HIT-COUNT GREATER THAN 1000 
00039          ADD 1 TO HIT-COUNT                                          CL**2
00040          GO TO WRITE-HIT-XIT.                                        CL**2
00041 ******************************************************               CL**2
00042 ******************************************************               CL**2
00043 *                                                                    CL**2
00044 *    ENTRY QUALIFIES-TABLE NAME                                      CL**2
00045 *         1ST 25 ARE STORED IN MEMORY THEN MAST3 IS USED             CL**2
00046 *         IF QRY IS WHICH-USE OR USED-BY CHECK FOR                   CL**2
00047 *         DUPLICATE NAME BEFORE PUTTING IN TBL.  IF NAME             CL**2
00048 *         EXITS ADD TO ITS COUNTER AND DO NOT CREATE NEW ENTRY       CL**2
00049 ********************************************************             CL**2
00050 ********************************************************             CL**2
00051       IF QRYTYPE-2 EQUAL "1" OR "2" OR "3" OR "8" OR "9"             CL**2
00052          GO TO D-SCAN-DONE.                                          CL**2
00053      MOVE 1 TO DSUB1.                                                CL**2
00054  D-SCAN-COMP.                                                        CL**2
00055      IF HIT-TABLE-NAME (DSUB1) EQUAL SPACES                          CL**2
00056          GO TO D-SCAN-DONE.                                          CL**2
00057      IF HIT-TABLE-NAME (DSUB1) EQUAL HIT-NAME                        CL**2
00058          ADD 1 TO HIT-NAME-TIMES (DSUB1)                             CL**2
00059          GO TO WRITE-HIT-XIT.                                        CL**2
00060      ADD 1 TO DSUB1.                                                 CL**2
           IF DSUB1 LESS THAN 1001
               GO TO D-SCAN-COMP. 
      *    IF DSUB1 LESS THAN 26 GO TO D-SCAN-COMP. 
      *ORIGINAL LOGIC USED MAST3 AS A WORK AREA WHICH PREVENTED 
      *MORE THAN ONE QUERY USER ON A DC2 DICTIONARY.
      *NOW THERE IS NO OVERFLOW WORK AREA. THE TABLE IN COMMON
      *STORAGE ACCOMMODATES THE 1000 HITS PER QUERY AS LIMITED
      *BY SYNERGETICS DESIGN. 
00063 *                                                                    CL**2
00064 *   NAME NOT IN TABLE-SEARCH HIT RECORDS ON MAST3 AND                CL**2
00065 *   HIT RECORD BUILD AREA FOR DUPLICATES.   IF HIT IS                CL**2
00066 *   NUMBER 26 GO ESTABLISH HIT RECORD BUILD AREA AND                 CL**2
00067 *   PUT THE NAME IN AND SET OVFLOW-KEY TO 100                        CL**2
00068 *                                                                    CL**2
00069      IF HIT-COUNT EQUAL 25                                           CL**2
00070          GO TO D-SCAN-DONE.                                          CL**2
00071      MOVE 26 TO SCAN-HIT-COUNT.                                      CL**2
00072      MOVE 100 TO CON-KEY.                                            CL**2
00073  SCAN-KEY-MATCH.                                                     CL**2
00074      IF CON-KEY NOT EQUAL TO OVFLOW-HIT-KEY                          CL**2
00075          GO TO D-SCAN-MAST3.                                         CL**2
00076 *                                                                    CL**2
00077 *    SCAN HIT RECORD BUILD AREA                                      CL**2
00078 *                                                                    CL**2
00079      MOVE 1 TO DSUB3.                                                CL**2
00080  SCAN-NEXT-OVFLOW.                                                   CL**2
00081      IF OVFLOW-HIT-ENTRY-NAME (DSUB3) EQUAL HIT-NAME                 CL**2
00082          ADD 1 TO OVFLOW-HIT-ENTRY-TIMES (DSUB3)                     CL**2
00083          GO TO WRITE-HIT-XIT.                                        CL**2
00084      IF SCAN-HIT-COUNT EQUAL HIT-COUNT                               CL**2
00085          GO TO D-SCAN-DONE.                                          CL**2
00086      ADD 1 TO SCAN-HIT-COUNT.                                        CL**2
00087      ADD 1 TO DSUB3.                                                 CL**2
00088      IF DSUB3 GREATER THAN 86                                        CL**2
00089          GO TO D-SCAN-DONE.                                          CL**2
00090      GO TO SCAN-NEXT-OVFLOW.                                         CL**2
00091 *                                                                    CL**2
00092 *   SCAN MAST3 HIT RECORDS FOR MATCH                                 CL**2
00093 *                                                                    CL**2
00094  D-SCAN-MAST3.                                                       CL**2
00095      MOVE 1 TO DSUB2.                                                CL**2
00096      READ MAST3 INVALID KEY                                          CL**2
00097          GO TO BAD-OVFLOW-CTL2.                                      CL**2
00098  D-SCAN-CK-NAME.                                                     CL**2
00101      IF SCAN-HIT-COUNT EQUAL HIT-COUNT                               CL**2
00102          GO TO D-SCAN-DONE.                                          CL**2
00103      GO TO D-SCAN-BUMPIT.                                            CL**2
00104  D-SCAN-REWRITE.                                                     CL**2
00109  D-SCAN-BUMPIT.                                                      CL**2
00110      ADD 1 TO DSUB2.                                                 CL**2
00111      ADD 1 TO SCAN-HIT-COUNT.                                        CL**2
00112      IF DSUB2 GREATER THAN 86                                        CL**2
00113          ADD 1 TO CON-KEY                                            CL**2
00114          GO TO SCAN-KEY-MATCH.                                       CL**2
00115      GO TO D-SCAN-CK-NAME.                                           CL**2
00116  D-SCAN-DONE.                                                        CL**2
00117 ******************************************************************PQRYEND2
00118 *    HAVE A NAME TO COUNT - LIST OR SHOW - WRITE TO HIT TABLE OR *PQRYEND2
00119 *        HIT FILE                                                *PQRYEND2
00120 ******************************************************************PQRYEND2
00121      ADD 1 TO HIT-COUNT.                                          PQRYEND2
      *IF HIT-COUNT GREATER THAN 25 GO TO WRIT-HIT-FILE.
      *STATEMENT DEACTIVATED IN ORDER TO PREVENT WRITING OF 
      *OVERFLOW HIT RECORDS ON MAST3. 
00123      MOVE HIT-NAME TO HIT-TABLE-NAME (HIT-COUNT).                 PQRYEND2
00124      MOVE HIT-ENTRY-TYPE TO HIT-NAME-TYPE (HIT-COUNT).               CL**2
00125      MOVE 1 TO HIT-NAME-TIMES (HIT-COUNT).                           CL**2
00126      GO TO WRITE-HIT-XIT.                                         PQRYEND2
00155 *                                                                    CL**2
00156 *    MOVE HIT TO OVERFLOW RECORD                                     CL**2
00157 *                                                                    CL**2
00158  MOVE-OVFLOW-HIT.                                                    CL**2
00159      ADD 1 TO HIT-SUB.                                               CL**2
00160      MOVE HIT-ENTRY-TYPE TO OVFLOW-HIT-ENTRY-ID (HIT-SUB).           CL**2
00161      MOVE HIT-NAME TO OVFLOW-HIT-ENTRY-NAME (HIT-SUB).               CL**2
00162      MOVE 1 TO OVFLOW-HIT-ENTRY-TIMES (HIT-SUB).                     CL**2
00163  WRITE-HIT-XIT.                                                   PQRYEND2
00164      EXIT.                                                        PQRYEND2
00165                                                                    PQRYEND
00166 ******************************************************************PQRYEND2
00167 *    BAD END TO PROGRAM - FILE OR LOGIC                          *PQRYEND2
00168 ******************************************************************PQRYEND2
00169  BAD-OVFLOW-CTL2.                                                    CL**2
00170      MOVE "CH" TO QTBL-HDR-REQTYPE.                                  CL**2
00171      GO TO CLOSE-FIN.                                                CL**2
00172  BAD-OVFLOW-CTL.                                                     CL**2
00173      MOVE "CH" TO QTBL-HDR-REQTYPE.                                  CL**2
00174  PROGRAM-END-BAD.                                                 PQRYEND2
00175  QUERY-END.                                                       PQRYEND2
00176 ******************************************************************PQRYEND2
00177 *    FINISHED PROCESSING REQUEST - RETURN TO CALLING PROGRAM     *PQRYEND2
00178 ******************************************************************PQRYEND2
           IF HIT-COUNT LESS THAN 1001 GO TO CLOSE-FIN
               ELSE GO TO CLOSE-FIN.
      *THIS STATEMENT PREVENTS THE WRITING OF OVERFLOW HIT RECORDS
      *ON MAST3. ORIGINAL-IF HIT-COUNT LESS 26 GO TO CLOSE-FIN.-
00186  CLOSE-FIN.                                                          CL**2
00187      PERFORM REL-CLOSE THRU REL-CLOSE-XIT.                           CL**2
00188      IF OPEN-DATA EQUAL "Y"                                          CL**2
00189          CLOSE MAST1.                                                CL**2
00190      PERFORM CON-CLOSE THRU CON-CLOSE-XIT.                           CL**2
00191      EXIT PROGRAM.                                                 PQRYEND
