*DECK     DCQRY010
00001  IDENTIFICATION DIVISION.                                         07/28/78
       PROGRAM-ID. QRY010.
*CALL COPYRIGHT 
      *        EDIT QUERY REQUEST AND SET ERROR CODES - BUILD QTBL
00008  ENVIRONMENT DIVISION.                                            DCQRY010
00009  CONFIGURATION SECTION.                                           DCQRY010
       SOURCE-COMPUTER. CYBER.
       OBJECT-COMPUTER. CYBER.
00012  INPUT-OUTPUT SECTION.                                            DCQRY010
00013  FILE-CONTROL.                                                    DCQRY010
*CALL     MAST3SS1                                                      DCQRY010
00015  DATA DIVISION.                                                   DCQRY010
00016  FILE SECTION.                                                    DCQRY010
*CALL     MAST3FD                                                       DCQRY010
00018                                                                    DCQRY01
*CALL QRYCS 
00019  WORKING-STORAGE SECTION.                                         DCQRY010
00020  77  ERROR-CODE                  PICTURE XX.                      DCQRY010
*CALL     MAST3DD1                                                      DCQRY010
00022  01  WORK-STORE.                                                  DCQRY010
00023 ******************************************************************DCQRY010
00024 *    HOLDS PLACE IN QRY-WORK                                     *DCQRY010
00025 ******************************************************************DCQRY010
00026      03  SUB1                    PICTURE 999     COMP.            DCQRY010
00027 ******************************************************************DCQRY010
00028 *    USED TO EXTRACT A FIELD FROM QRY-WORK                       *DCQRY010
00029 ******************************************************************DCQRY010
           03  SUB2                      PICTURE 999 COMP.
           03  SUB3                      PICTURE 999 COMP.
           03  SUB4                      PICTURE 999 COMP.
           03  SUB9                      PICTURE 999 COMP.
           03  SUB10                     PICTURE 999 COMP.
           03  QSUB                      PICTURE 999 COMP.
00036 ******************************************************************DCQRY010
00037 *    REQUEST EXTRACTION END SW                                   *DCQRY010
00038 *    Y = EXTRACT SUCCESSFUL - N = NOT SUCCESSFUL                 *DCQRY010
00039 ******************************************************************DCQRY010
00040      03  EXTRACT-SW              PICTURE X.                       DCQRY010
00041      03  EDIT-SW                 PICTURE X.                       DCQRY010
00042      03  HAVE-SW                 PICTURE X.                       DCQRY010
00043 ******************************************************************DCQRY010
00044 *    HOLD AN EXTRACTED FIELD                                     *DCQRY010
00045 ******************************************************************DCQRY010
00046      03  HOLD-VALUE.                                              DCQRY010
00047          05  WORK-VALUE          PICTURE X   OCCURS 50 TIMES.     DCQRY010
00048      03  TRANS-COUNT             PICTURE 9.                       DCQRY010
00049      03  TWO-VALUE-SW    PICTURE X.                               DCQRY010
00050      03  TYPE-CHANGE-SW  PICTURE X.                               DCQRY010
00051      03  CHANGE-VALUE2.                                           DCQRY010
00052          05  CV1-BYTE    PICTURE X OCCURS 7 TIMES.                DCQRY010
00053      03  CHANGE-VALUE1   PICTURE X(7).                            DCQRY010
00054      03  NUMERIC-CHANGE-VALUE.                                    DCQRY010
00055          05  NCV-BYTE    PICTURE X OCCURS 6 TIMES.                DCQRY010
00056 ******************************************************************DCQRY010
00057 *    HOLD SHORT WORK AREAS                                       *DCQRY010
00058 ******************************************************************DCQRY010
00059      03  WORK-AREAS.                                              DCQRY010
00060          05  WORK-1              PICTURE X.                       DCQRY010
00061          05  WORK-3              PICTURE XXX.                     DCQRY010
00062          05  WORK-8              PICTURE X(9).                    DCQRY010
00063          05  WORK-15             PICTURE X(15).                   DCQRY010
00064 ******************************************************************DCQRY010
00065 *    USED IN ENTRY TYPE VALIDATION                               *DCQRY010
00066 ******************************************************************DCQRY010
00067      03  HOLD-ENTTYPE            PICTURE XX.                      DCQRY010
00068      03  HOLD-CATEGORY           PICTURE XXX.                     DCQRY010
           03  CAT                       PICTURE 999 COMP.
           03  ENT                       PICTURE 999 COMP.
           03  FLD                       PICTURE 999 COMP.
00072      03  ENTRY-NAME-WK.                                           DCQRY010
               05  USER-ENTNAME            PICTURE X(4).
00075          05  FILLER                  PICTURE X(7).                DCQRY010
00076      03  EDIT-ENT-NAME.                                           DCQRY010
               05  EDIT-ENTNAME            PICTURE X(8).
00080          05  FILLER                  PICTURE XXX.                 DCQRY010
00081      03  CAT-NAME-WK.                                             DCQRY010
               05 USER-CATNAME             PICTURE X(4).
00084          05  FILLER                  PICTURE X(13).               DCQRY010
00085      03  EDIT-CAT-NAME.                                           DCQRY010
               05  EDIT-CATNAME            PICTURE X(15). 
00089          05  FILLER                  PICTURE XX.                  DCQRY010
00090 ******************************************************************DCQRY010
00091 *    NUMERIC WITH FIELD WORK AREA                                *DCQRY010
00092 ******************************************************************DCQRY010
00093      03  NUMERIC-WORK.                                            DCQRY010
00094          05  NUM-WORKS           PICTURE X       OCCURS 4  TIMES. DCQRY010
00253                                                                    DCQRY01
00266                                                                    DCQRY01
00267  PROCEDURE DIVISION.                                              DCQRY010
       BEGIN-PARA.
00270 **************************************************                DCQRY010
00271 *************************************************                 DCQRY010
00272 *                                                                 DCQRY010
00273 *     INITIALIZATION                                              DCQRY010
00274 *                                                                 DCQRY010
00275 ***************************************************               DCQRY010
00276 **************************************************                DCQRY010
00277      OPEN INPUT MAST3.                                            DCQRY010
00278      MOVE SPACES TO LAST-WORD.                                    DCQRY010
00279      IF ERROR-COUNT NOT EQUAL TO ZEROES GO TO EDIT-END.           DCQRY010
00280      MOVE ZERO TO SUB1.                                           DCQRY010
00281      MOVE "N" TO HAVE-SW.                                         DCQRY010
00282 *                                                                 DCQRY010
00283 *     IDENTIFY THE STATEMENT TYPE                                 DCQRY010
00284 *                                                                 DCQRY010
00285      PERFORM EXTRACT-FIELD THRU EXTRACT-FIELD-XIT.                DCQRY010
00286      IF EXTRACT-SW EQUAL TO "N"                                   DCQRY010
00287          GO TO BAD-REQ-4.                                         DCQRY010
00288      IF QRYTYPE-1 NOT EQUAL TO "S"                                DCQRY010
00289          GO TO E-ALIAS.                                           DCQRY010
00290 ************************************************                  DCQRY010
00291 ************************************************                  DCQRY010
00292 *                                                                 DCQRY010
00293 *     SHOW COMMAND SYNTAX VALIDATION                              DCQRY010
00294 *         CHECKS CLAUSES WHICH ARE UNIQUE FOR SHOW                DCQRY010
00295 *                                                                 DCQRY010
00296 ************************************************                  DCQRY010
00297 ************************************************                  DCQRY010
00298      MOVE "999" TO QTBL-OUT-CAT.                                  DCQRY010
           IF (HOLD-VALUE IS EQUAL TO "CAT" OR "CATEGORY" 
               OR "CATEGORIES") 
00300          GO TO SHOW-CATS-LIMIT.                                      CL**2
           IF ( HOLD-VALUE IS EQUAL TO "FIE" OR "FIELD" OR "FIELDS")
00303          GO TO SHOW-FIELDS-LIMIT.                                    CL**2
00304      GO TO E-ALIAS.                                                  CL**2
00305 *                                                                 DCQRY010
00306 *    DETERMINE IF FIELD IS A VALID CATEGORY ID                   *DCQRY010
00307 *                                                                 DCQRY010
00308  SHOW-CATS-LIMIT.                                                    CL**2
00309      PERFORM EXTRACT-FIELD THRU EXTRACT-FIELD-XIT.                DCQRY010
00310      IF EXTRACT-SW EQUAL TO "N"                                   DCQRY010
00311          MOVE "23" TO ERROR-CODE                                  DCQRY010
00312          GO TO BAD-REQUEST.                                       DCQRY010
00313      PERFORM VALIDATE-CATEGORY THRU VALIDATE-CATEGORY-XIT.        DCQRY010
00314      IF EDIT-SW EQUAL TO "Y"                                      DCQRY010
00315          MOVE HOLD-CATEGORY TO QTBL-OUT-CAT                       DCQRY010
00316          GO TO DO-LIMITS.                                         DCQRY010
00317      MOVE "40" TO ERROR-CODE.                                     DCQRY010
00318      GO TO BAD-REQUEST.                                           DCQRY010
00319 *************************************************                 DCQRY010
00320 *                                                                 DCQRY010
00321 *     LIMITS CLAUSE VALIDATION                                    DCQRY010
00322 *                                                                 DCQRY010
00323 ************************************************                  DCQRY010
00324  DO-LIMITS.                                                       DCQRY010
00325      PERFORM EXTRACT-FIELD THRU EXTRACT-FIELD-XIT.                DCQRY010
00326      IF EXTRACT-SW EQUAL TO "N"                                   DCQRY010
00327          GO TO BAD-REQ-4.                                         DCQRY010
           IF (HOLD-VALUE IS NOT EQUAL TO "FROM") 
00329          GO TO EDIT-TO.                                           DCQRY010
00330 *                                                                 DCQRY010
00331 *     FROM LINE NUMBER PROCESSING                                 DCQRY010
00332 *                                                                 DCQRY010
00333      PERFORM EXTRACT-FIELD THRU EXTRACT-FIELD-XIT.                DCQRY010
00334      IF EXTRACT-SW EQUAL TO "N"                                   DCQRY010
00335          MOVE "23" TO ERROR-CODE                                  DCQRY010
00336          GO TO BAD-REQUEST.                                       DCQRY010
           IF (HOLD-VALUE IS EQUAL TO "LINE" OR "LINES")
00338          NEXT SENTENCE ELSE                                       DCQRY010
00339          GO TO EDIT-LINE-NO.                                      DCQRY010
00340      PERFORM EXTRACT-FIELD THRU EXTRACT-FIELD-XIT.                DCQRY010
00341      IF EXTRACT-SW EQUAL TO "N"                                   DCQRY010
00342          MOVE "23" TO ERROR-CODE                                  DCQRY010
00343          GO TO BAD-REQUEST.                                       DCQRY010
00344  EDIT-LINE-NO.                                                    DCQRY010
00345      PERFORM JUSTIFY-NUMERIC THRU JUSTIFY-NUMERIC-XIT.            DCQRY010
00346      MOVE NUMERIC-WORK TO QTBL-OUT-FRLINE.                        DCQRY010
00347      PERFORM EXTRACT-FIELD THRU EXTRACT-FIELD-XIT.                DCQRY010
00348      IF EXTRACT-SW EQUAL TO "N"                                   DCQRY010
00349          GO TO BAD-REQ-4.                                         DCQRY010
00350  EDIT-TO.                                                         DCQRY010
           IF (HOLD-VALUE IS NOT EQUAL TO "TO") 
00352          GO TO EDIT-FOR.                                          DCQRY010
00353 *                                                                 DCQRY010
00354 *     TO LINE NUMBER PROCESSING                                   DCQRY010
00355 *                                                                 DCQRY010
00356      PERFORM EXTRACT-FIELD THRU EXTRACT-FIELD-XIT.                DCQRY010
00357      IF EXTRACT-SW EQUAL TO "N"                                   DCQRY010
00358          MOVE "23" TO ERROR-CODE                                  DCQRY010
00359          GO TO BAD-REQUEST.                                       DCQRY010
           IF (HOLD-VALUE IS EQUAL TO "LINE" OR "LINES")
00361          NEXT SENTENCE ELSE                                       DCQRY010
00362          GO TO EDIT-TO-LINE.                                      DCQRY010
00363      PERFORM EXTRACT-FIELD THRU EXTRACT-FIELD-XIT.                DCQRY010
00364      IF EXTRACT-SW EQUAL TO "N"                                   DCQRY010
00365          MOVE "23" TO ERROR-CODE                                  DCQRY010
00366          GO TO BAD-REQUEST.                                       DCQRY010
00367  EDIT-TO-LINE.                                                    DCQRY010
00368      PERFORM JUSTIFY-NUMERIC THRU JUSTIFY-NUMERIC-XIT.            DCQRY010
00369      MOVE NUMERIC-WORK TO QTBL-OUT-TOLINE.                        DCQRY010
00370      PERFORM EXTRACT-FIELD THRU EXTRACT-FIELD-XIT.                DCQRY010
00371      IF EXTRACT-SW EQUAL TO "N"                                   DCQRY010
00372          GO TO BAD-REQ-4.                                         DCQRY010
00373      GO TO CHECK-WORD-OF.                                            CL**2
00374 *                                                                 DCQRY010
00375 *     FOR LINES PROCESSING                                        DCQRY010
00376 *                                                                 DCQRY010
00377  EDIT-FOR.                                                        DCQRY010
           IF (HOLD-VALUE IS NOT EQUAL TO "FOR")
00379      GO TO CHECK-WORD-OF.                                            CL**2
00380      PERFORM EXTRACT-FIELD THRU EXTRACT-FIELD-XIT.                DCQRY010
00381      IF EXTRACT-SW EQUAL TO "N"                                   DCQRY010
00382          MOVE "23" TO ERROR-CODE                                  DCQRY010
00383          GO TO BAD-REQUEST.                                       DCQRY010
00384      PERFORM JUSTIFY-NUMERIC THRU JUSTIFY-NUMERIC-XIT.            DCQRY010
00385      MOVE NUMERIC-WORK TO QTBL-OUT-FORLINES.                      DCQRY010
00386      PERFORM EXTRACT-FIELD THRU EXTRACT-FIELD-XIT.                DCQRY010
00387      IF EXTRACT-SW EQUAL TO "N"                                   DCQRY010
00388          GO TO BAD-REQ-4.                                         DCQRY010
           IF (HOLD-VALUE IS EQUAL TO "LINE" OR "LINES")
00390          NEXT SENTENCE ELSE                                       DCQRY010
00391      GO TO CHECK-WORD-OF.                                            CL**2
00392      PERFORM EXTRACT-FIELD THRU EXTRACT-FIELD-XIT.                DCQRY010
00393      IF EXTRACT-SW EQUAL TO "N"                                   DCQRY010
00394          GO TO BAD-REQ-4.                                         DCQRY010
00395  CHECK-WORD-OF.                                                      CL**2
           IF (HOLD-VALUE IS NOT EQUAL TO "OF") 
00397          GO TO E-ALIAS.                                              CL**2
00398      PERFORM EXTRACT-FIELD THRU EXTRACT-FIELD-XIT.                   CL**2
00399      IF EXTRACT-SW EQUAL "N"                                         CL**2
00400          GO TO BAD-REQ-4.                                            CL**2
00401      GO TO E-ALIAS.                                                  CL**2
00402  SHOW-FIELDS-LIMIT.                                                  CL**2
00403 ******************************************************************   CL**2
00404 *        SHOW FIELDS CLAUSE EDIT                                     CL**2
00405 *    USER MAY SPECIFY FROM 1 TO 6 FIELD NAMES                        CL**2
00406 *    WORD "OF" MUST FOLLOW                                           CL**2
00407 *    TABLE THE NAMES                                                 CL**2
00408 *                                                                    CL**2
00409 ******************************************************************   CL**2
00410      PERFORM EXTRACT-FIELD THRU EXTRACT-FIELD-XIT.                   CL**2
00411      IF EXTRACT-SW EQUAL "N"                                         CL**2
00412          GO TO ERROR-23.                                             CL**2
           IF (HOLD-VALUE IS EQUAL TO "OF") 
00414          GO TO ERROR-23.                                             CL**2
00415      MOVE 1 TO QSUB.                                                 CL**2
00416  TEST-SN-LENGTH.                                                     CL**2
00417      IF WORK-VALUE (9) NOT EQUAL TO SPACE                            CL**2
00418          MOVE "08" TO ERROR-CODE                                     CL**2
00419          GO TO BAD-REQUEST.                                          CL**2
00420      MOVE HOLD-VALUE TO QTBL-SHOW-FIELD (QSUB).                      CL**2
00421      PERFORM EXTRACT-FIELD THRU EXTRACT-FIELD-XIT.                   CL**2
00422      IF EXTRACT-SW EQUAL "N"                                         CL**2
00423          GO TO ERROR-23.                                             CL**2
           IF (HOLD-VALUE IS EQUAL TO "OF") 
00425          PERFORM EXTRACT-FIELD THRU EXTRACT-FIELD-XIT                CL**2
00426          GO TO E-ALIAS.                                              CL**2
00427      ADD 1 TO QSUB.                                                  CL**2
00428      IF QSUB LESS THAN 7                                             CL**2
00429          GO TO TEST-SN-LENGTH.                                       CL**2
00430  ERROR-23.                                                           CL**2
00431      MOVE "23" TO ERROR-CODE.                                        CL**2
00432      GO TO BAD-REQUEST.                                              CL**2
00433                                                                    DCQRY01
00434 ******************************************************************DCQRY010
00435 *                                                                 DCQRY010
00436 *    ALIAS AND VERSION QUERY VALIDATION                           DCQRY010
00437 *                                                                 DCQRY010
00438 ******************************************************************DCQRY010
00439  E-ALIAS.                                                         DCQRY010
00440      MOVE HOLD-VALUE TO WORK-8.                                   DCQRY010
           IF (WORK-8 IS EQUAL TO "VER" OR "VERSIONS" 
              OR "ALI" OR "ALIASES")
00443          NEXT SENTENCE ELSE                                       DCQRY010
00444          GO TO E-QUOTE.                                           DCQRY010
00445      PERFORM EXTRACT-FIELD THRU EXTRACT-FIELD-XIT.                DCQRY010
00446      IF EXTRACT-SW EQUAL TO "N"                                   DCQRY010
00447          GO TO BAD-REQ-4.                                         DCQRY010
           IF (HOLD-VALUE IS NOT EQUAL TO "OF") 
00449          MOVE "13" TO ERROR-CODE                                  DCQRY010
00450          GO TO BAD-REQUEST.                                       DCQRY010
00451      PERFORM EXTRACT-FIELD THRU EXTRACT-FIELD-XIT.                DCQRY010
00452      IF EXTRACT-SW EQUAL TO "N"                                   DCQRY010
00453          GO TO BAD-REQ-4.                                         DCQRY010
00454      MOVE HOLD-VALUE TO QTBL-OPT-CNAME.                           DCQRY010
00455      PERFORM EXTRACT-FIELD THRU EXTRACT-FIELD-XIT.                DCQRY010
00456      IF EXTRACT-SW EQUAL TO "N"                                   DCQRY010
00457          GO TO BUILD-VER.                                         DCQRY010
           IF (WORK-8 IS EQUAL TO "VER" OR "VERSIONS")
00459          MOVE "25" TO QRYTYPE-23 ELSE                             DCQRY010
00460          MOVE "15" TO QRYTYPE-23.                                 DCQRY010
00461      GO TO EDIT-WITH.                                             DCQRY010
00462  BUILD-VER.                                                       DCQRY010
           IF (WORK-8 IS EQUAL TO "VER" OR "VERSIONS")
00464          MOVE "20" TO QRYTYPE-23  ELSE                            DCQRY010
00465          MOVE "10" TO QRYTYPE-23.                                 DCQRY010
00466          GO TO BUILD-CAT-ID.                                      DCQRY010
00467                                                                    DCQRY01
00468 ******************************************************************DCQRY010
00469 *                                                                 DCQRY010
00470 *    CHECK FOR VALUE RANGE QUERY (QUOTES)                         DCQRY010
00471 *                                                                 DCQRY010
00472 ******************************************************************DCQRY010
00473  E-QUOTE.                                                         DCQRY010
00474      MOVE HOLD-VALUE TO WORK-1.                                   DCQRY010
00475      IF WORK-1 NOT EQUAL TO QUOTE                                 DCQRY010
00476          GO TO E-ENTRY.                                           DCQRY010
00477      PERFORM EXTRACT-QUOTE THRU EXTRACT-QUOTE-XIT.                DCQRY010
00478      MOVE HOLD-VALUE TO QTBL-OPT-CNAME.                           DCQRY010
00479      PERFORM EXTRACT-FIELD THRU EXTRACT-FIELD-XIT.                DCQRY010
00480      IF EXTRACT-SW EQUAL TO "N"                                   DCQRY010
00481          GO TO BAD-REQ-4.                                         DCQRY010
00482 *                                                                 DCQRY010
00483 *    VALUE RANGE QUERY VALIDATION                                 DCQRY010
00484 *                                                                 DCQRY010
00485  GET-VALUE-RANGE.                                                 DCQRY010
           IF (HOLD-VALUE IS NOT EQUAL TO "TO") 
00487          MOVE "11" TO ERROR-CODE                                  DCQRY010
00488          GO TO BAD-REQUEST.                                       DCQRY010
00489      PERFORM EXTRACT-FIELD THRU EXTRACT-FIELD-XIT.                DCQRY010
00490      IF EXTRACT-SW EQUAL TO "N"                                   DCQRY010
00491          GO TO BAD-REQ-4.                                         DCQRY010
00492      MOVE HOLD-VALUE TO WORK-1.                                   DCQRY010
00493      IF WORK-1 NOT EQUAL TO QUOTE                                 DCQRY010
00494          MOVE "11" TO ERROR-CODE                                  DCQRY010
00495          GO TO BAD-REQUEST.                                       DCQRY010
00496      PERFORM EXTRACT-QUOTE THRU EXTRACT-QUOTE-XIT.                DCQRY010
00497      GO TO MOVE-RIGHT.                                            DCQRY010
00498 *                                                                 DCQRY010
00499 *    SUBROUTINE TO EXTRACT VALUE FROM QUOTES                      DCQRY010
00500 *                                                                 DCQRY010
00501  EXTRACT-QUOTE.                                                   DCQRY010
00502      MOVE "01" TO SUB4.                                           DCQRY010
00503      MOVE "02" TO SUB2.                                           DCQRY010
00504  NEXT-TRY.                                                        DCQRY010
00505      MOVE WORK-VALUE (SUB2) TO WORK-VALUE (SUB4).                 DCQRY010
00506      ADD 1 TO SUB4.                                               DCQRY010
00507      ADD 1 TO SUB2.                                               DCQRY010
00508      IF SUB2 GREATER THAN 32                                      DCQRY010
00509          MOVE "24" TO ERROR-CODE                                  DCQRY010
00510          GO TO BAD-REQUEST.                                       DCQRY010
00511      IF WORK-VALUE (SUB2) NOT EQUAL TO QUOTE                      DCQRY010
00512          GO TO NEXT-TRY.                                          DCQRY010
00513      MOVE SPACE TO WORK-VALUE (SUB2).                             DCQRY010
00514      MOVE SPACE TO WORK-VALUE (SUB4).                             DCQRY010
00515      MOVE ZERO TO SUB4.                                           DCQRY010
00516  EXTRACT-QUOTE-XIT.                                               DCQRY010
00517      EXIT.                                                        DCQRY010
00518                                                                    DCQRY01
00519 *                                                                 DCQRY010
00520 *    DETERMINATION BETWEEN A NAMED ENTRY AND A TYPE OF ENTRY      DCQRY010
00521 *                                                                 DCQRY010
00522  E-ENTRY.                                                         DCQRY010
00523      PERFORM VALIDATE-TYPE THRU VALIDATE-TYPE-XIT.                DCQRY010
00524      IF EDIT-SW EQUAL TO "N"                                      DCQRY010
00525          GO TO BUILD-NAME-REQUEST.                                DCQRY010
00526      GO TO E-ENTTYPE.                                             DCQRY010
00527 *                                                                 DCQRY010
00528 *    ENTRY SINGLE QUERY VALIDATION                                DCQRY010
00529 *    ENTRY FOR SINGLE NAME VALIDATION                             DCQRY010
00530 *                                                                 DCQRY010
00531  BUILD-NAME-REQUEST.                                              DCQRY010
00532      MOVE HOLD-VALUE TO QTBL-OPT-CNAME.                           DCQRY010
00533      PERFORM EXTRACT-FIELD THRU EXTRACT-FIELD-XIT.                DCQRY010
00534      IF EXTRACT-SW EQUAL TO "Y"                                   DCQRY010
00535          GO TO GET-NAME-RANGE.                                    DCQRY010
00536      IF QRYTYPE-1 NOT EQUAL TO "S"                                DCQRY010
00537          MOVE "23" TO ERROR-CODE                                  DCQRY010
00538          GO TO BAD-REQUEST.                                       DCQRY010
00539 *                                                                 DCQRY010
00540 *    BUILD AN S04 REQUEST                                         DCQRY010
00541 *                                                                 DCQRY010
00542      MOVE "04" TO QRYTYPE-23.                                     DCQRY010
00543      GO TO BUILD-CAT-ID.                                          DCQRY010
00544 ************************************************                  DCQRY010
00545 *                                                                 DCQRY010
00546 *      NAME RANGE QUERY VALIDATION                                DCQRY010
00547 *                                                                 DCQRY010
00548 ************************************************                  DCQRY010
00549  GET-NAME-RANGE.                                                  DCQRY010
           IF (HOLD-VALUE IS NOT EQUAL TO "TO") 
00551          MOVE "37" TO ERROR-CODE                                  DCQRY010
00552          GO TO BAD-REQUEST.                                       DCQRY010
00553      PERFORM EXTRACT-FIELD THRU EXTRACT-FIELD-XIT.                DCQRY010
00554      IF EXTRACT-SW EQUAL TO "N"                                   DCQRY010
00555          GO TO BAD-REQ-4.                                         DCQRY010
00556      PERFORM VALIDATE-TYPE THRU VALIDATE-TYPE-XIT.                DCQRY010
00557      IF EDIT-SW EQUAL TO "Y"                                      DCQRY010
00558          MOVE "11" TO ERROR-CODE                                  DCQRY010
00559          GO TO BAD-REQUEST.                                       DCQRY010
00560  MOVE-RIGHT.                                                      DCQRY010
00561      MOVE HOLD-VALUE TO QTBL-SEL2-TOCNAME.                        DCQRY010
00562 *                                                                 DCQRY010
00563 *    BUILD S90, S95                                              *DCQRY010
00564 *                                                                 DCQRY010
00565      IF QTBL-SEL2-TOCNAME GREATER THAN QTBL-OPT-CNAME             DCQRY010
00566          GO TO BUILD-S90.                                         DCQRY010
00567      MOVE "11" TO ERROR-CODE.                                     DCQRY010
00568      GO TO BAD-REQUEST.                                           DCQRY010
00569  BUILD-S90.                                                       DCQRY010
00570      PERFORM EXTRACT-FIELD THRU EXTRACT-FIELD-XIT.                DCQRY010
00571      IF EXTRACT-SW EQUAL TO "Y"                                   DCQRY010
00572          MOVE "95" TO QRYTYPE-23                                  DCQRY010
00573          GO TO EDIT-WITH.                                         DCQRY010
00574      MOVE "90" TO QRYTYPE-23.                                     DCQRY010
00575      GO TO BUILD-CAT-ID.                                          DCQRY010
00576                                                                    DCQRY01
00577 ************************************************                  DCQRY010
00578 *                                                                 DCQRY010
00579 *      ENTRY TYPE DESIGNATOR VALIDATION                           DCQRY010
00580 *                                                                 DCQRY010
00581 ************************************************                  DCQRY010
00582  E-ENTTYPE.                                                       DCQRY010
00583      MOVE HOLD-ENTTYPE TO QTBL-SEL1-ENTTYPE.                      DCQRY010
00584      PERFORM EXTRACT-FIELD THRU EXTRACT-FIELD-XIT.                DCQRY010
00585      IF EXTRACT-SW EQUAL TO "N"                                   DCQRY010
00586          MOVE "30" TO QRYTYPE-23                                  DCQRY010
00587          GO TO BUILD-CAT-ID.                                      DCQRY010
00588      MOVE HOLD-VALUE TO WORK-8.                                   DCQRY010
           IF (WORK-8 IS EQUAL TO "WITH" OR "HAVING") 
00590          GO TO EDIT-WITH.                                         DCQRY010
           IF (WORK-8 IS NOT EQUAL TO "TO") 
00592          GO TO EDIT-USE.                                          DCQRY010
00593 ************************************************                  DCQRY010
00594 *                                                                 DCQRY010
00595 *      ENTRY TYPE RANGE VALIDATION                                DCQRY010
00596 *                                                                 DCQRY010
00597 *************************************************                 DCQRY010
00598      PERFORM EXTRACT-FIELD THRU EXTRACT-FIELD-XIT.                DCQRY010
00599      IF EXTRACT-SW EQUAL TO "N"                                   DCQRY010
00600          GO TO BAD-REQ-4.                                         DCQRY010
00601      PERFORM VALIDATE-TYPE THRU VALIDATE-TYPE-XIT.                DCQRY010
00602      IF EDIT-SW EQUAL TO "N"                                      DCQRY010
00603          MOVE "14" TO ERROR-CODE                                  DCQRY010
00604          GO TO BAD-REQUEST.                                       DCQRY010
00605      MOVE HOLD-ENTTYPE TO QTBL-SEL2-TOTYPE.                       DCQRY010
00606      PERFORM EXTRACT-FIELD THRU EXTRACT-FIELD-XIT.                DCQRY010
00607      IF EXTRACT-SW EQUAL TO "Y"                                   DCQRY010
00608          MOVE "85" TO QRYTYPE-23                                  DCQRY010
00609          GO TO EDIT-WITH.                                         DCQRY010
00610      MOVE "80" TO QRYTYPE-23.                                     DCQRY010
00611      GO TO BUILD-CAT-ID.                                          DCQRY010
00612                                                                    DCQRY01
00613 *************************************************                 DCQRY010
00614 *                                                                 DCQRY010
00615 *      USED-BY AND WHICH-USE CLAUSE VALIDATION                    DCQRY010
00616 *                                                                 DCQRY010
00617 *************************************************                 DCQRY010
00618  EDIT-USE.                                                        DCQRY010
           IF (WORK-8 IS EQUAL TO "USED-BY" OR "WHICH-USE") 
00620          NEXT  SENTENCE      ELSE                                 DCQRY010
00621          MOVE "37" TO ERROR-CODE                                  DCQRY010
00622          GO TO BAD-REQUEST.                                       DCQRY010
00623      PERFORM EXTRACT-FIELD THRU EXTRACT-FIELD-XIT.                DCQRY010
00624      IF EXTRACT-SW EQUAL TO "N"                                   DCQRY010
00625          GO TO BAD-REQ-4.                                         DCQRY010
00626 *                                                                 DCQRY010
00627 *    VALIDATE RIGHT HAND REFERENCE                                DCQRY010
00628 *                                                                 DCQRY010
00629      PERFORM VALIDATE-TYPE THRU VALIDATE-TYPE-XIT.                DCQRY010
00630      IF EDIT-SW EQUAL TO "Y"                                      DCQRY010
00631          GO TO EDIT-ENT-TYPE-2.                                   DCQRY010
00632 *                                                                 DCQRY010
00633 *    HAVE S40 OR S50                                             *DCQRY010
00634 *                                                                 DCQRY010
00635      MOVE HOLD-VALUE TO QTBL-OPT-CNAME.                           DCQRY010
           IF (WORK-8 IS EQUAL TO "USED-BY")
00637          MOVE "40" TO QRYTYPE-23       ELSE                       DCQRY010
00638          MOVE "50" TO QRYTYPE-23.                                 DCQRY010
00639      PERFORM EXTRACT-FIELD THRU EXTRACT-FIELD-XIT.                DCQRY010
00640      IF EXTRACT-SW EQUAL TO "N"                                   DCQRY010
00641          GO TO BUILD-CAT-ID.                                      DCQRY010
00642      MOVE "12" TO ERROR-CODE.                                     DCQRY010
00643      GO TO BAD-REQUEST.                                           DCQRY010
00644                                                                    DCQRY01
00645 ************************************************                  DCQRY010
00646 *                                                                 DCQRY010
00647 *      VALIDATE RIGHT HAND ENTRY TYPE REFERENCE                   DCQRY010
00648 *                                                                 DCQRY010
00649 ************************************************                  DCQRY010
00650  EDIT-ENT-TYPE-2.                                                 DCQRY010
00651      MOVE HOLD-ENTTYPE TO QTBL-SEL2-TOTYPE.                       DCQRY010
00652      IF HOLD-ENTTYPE EQUAL TO "97" OR "98" OR "99"                DCQRY010
00653          MOVE "37" TO ERROR-CODE                                  DCQRY010
00654          GO TO BAD-REQUEST.                                       DCQRY010
00655      PERFORM EXTRACT-FIELD THRU EXTRACT-FIELD-XIT.                DCQRY010
00656      IF EXTRACT-SW EQUAL TO "N"                                   DCQRY010
00657          GO TO BLD-60-70.                                         DCQRY010
           IF (WORK-8 IS EQUAL TO "USED-BY")
00659          MOVE "67" TO QRYTYPE-23                                  DCQRY010
00660          GO TO EDIT-WITH.                                         DCQRY010
00661 *                                                                 DCQRY010
00662 *    HAVE 75                                                     *DCQRY010
00663 *                                                                 DCQRY010
00664      MOVE QTBL-SEL1-ENTTYPE TO HOLD-ENTTYPE.                      DCQRY010
00665      MOVE QTBL-SEL2-TOTYPE TO QTBL-SEL1-ENTTYPE.                  DCQRY010
00666      MOVE HOLD-ENTTYPE TO QTBL-SEL2-TOTYPE.                       DCQRY010
00667      MOVE "75" TO QRYTYPE-23.                                     DCQRY010
00668      GO TO EDIT-WITH.                                             DCQRY010
00669  BLD-60-70.                                                       DCQRY010
           IF (WORK-8 IS EQUAL TO "USED-BY")
00671          MOVE "60" TO QRYTYPE-23                                  DCQRY010
00672          GO TO BUILD-CAT-ID.                                      DCQRY010
00673      MOVE "70" TO QRYTYPE-23.                                     DCQRY010
00674      MOVE QTBL-SEL1-ENTTYPE TO HOLD-ENTTYPE.                      DCQRY010
00675      MOVE QTBL-SEL2-TOTYPE TO QTBL-SEL1-ENTTYPE.                  DCQRY010
00676      MOVE HOLD-ENTTYPE TO QTBL-SEL2-TOTYPE.                       DCQRY010
00677      GO TO BUILD-CAT-ID.                                          DCQRY010
00678                                                                    DCQRY01
00679 ************************************************                  DCQRY010
00680 *                                                                 DCQRY010
00681 *     WITH CLAUSE VALIDATION                                      DCQRY010
00682 *                                                                 DCQRY010
00683 ************************************************                  DCQRY010
00684  EDIT-WITH.                                                       DCQRY010
           IF (HOLD-VALUE IS NOT EQUAL TO "WITH") 
00686          GO TO EDIT-HAVE.                                         DCQRY010
00687      MOVE 01 TO TRANS-COUNT.                                      DCQRY010
00688  FIELD-NAME-LOOP.                                                 DCQRY010
00689      PERFORM EXTRACT-FIELD THRU EXTRACT-FIELD-XIT.                DCQRY010
00690      IF EXTRACT-SW EQUAL TO "N"                                   DCQRY010
00691          GO TO BAD-REQ-4.                                         DCQRY010
00692      IF WORK-VALUE (9) NOT EQUAL TO SPACE                         DCQRY010
00693          MOVE "08" TO ERROR-CODE                                  DCQRY010
00694          GO TO BAD-REQUEST.                                       DCQRY010
00695      MOVE HOLD-VALUE TO QTBL-SEL1-FLDNO (TRANS-COUNT).            DCQRY010
00696 *                                                                 DCQRY010
00697 *    GET  LOGICAL INDICATOR                                      *DCQRY010
00698 *                                                                 DCQRY010
00699      PERFORM EXTRACT-FIELD THRU EXTRACT-FIELD-XIT.                DCQRY010
00700      IF EXTRACT-SW EQUAL TO "N"                                   DCQRY010
00701          GO TO BAD-REQ-4.                                         DCQRY010
00702      MOVE HOLD-VALUE TO WORK-3.                                   DCQRY010
           IF ( WORK-3 IS EQUAL TO "EQ" OR "GT" OR "LT" OR "NE" 
             OR "N=" OR "<" OR ">" OR "=" OR "CS" OR ">=" 
             OR "<=" OR "LE" OR "GE" OR "=>" OR "=<" )
             GO TO GET-FLD-VALUE. 
00720 *                                                                 DCQRY010
00721 *    LOGICAL INDICATOR BAD                                       *DCQRY010
00722 *                                                                 DCQRY010
00723      MOVE "09" TO ERROR-CODE.                                     DCQRY010
00724      GO TO BAD-REQUEST.                                           DCQRY010
00725  GET-FLD-VALUE.                                                   DCQRY010
00726      MOVE WORK-3 TO QTBL-SEL1-LOGIND (TRANS-COUNT).               DCQRY010
00727      PERFORM EXTRACT-FIELD THRU EXTRACT-FIELD-XIT.                DCQRY010
00728      IF EXTRACT-SW EQUAL TO "N"                                   DCQRY010
00729          GO TO BAD-REQ-4.                                         DCQRY010
00730      MOVE HOLD-VALUE TO QTBL-SEL1-FLDVALUE (TRANS-COUNT).         DCQRY010
00731  CK-CONTINUE.                                                     DCQRY010
00732      PERFORM EXTRACT-FIELD THRU EXTRACT-FIELD-XIT.                DCQRY010
00733      IF EXTRACT-SW EQUAL TO "N"                                   DCQRY010
00734          GO TO EDIT-WITH-END.                                     DCQRY010
00735      IF TRANS-COUNT EQUAL TO 3  GO TO EDIT-WITH-MORE.             DCQRY010
           IF (HOLD-VALUE IS EQUAL TO "AND" OR "OR")
00737          MOVE HOLD-VALUE TO QTBL-SEL1-ANDOR (TRANS-COUNT)         DCQRY010
00738          ADD 1 TO TRANS-COUNT                                     DCQRY010
00739          GO TO FIELD-NAME-LOOP.                                   DCQRY010
00740      GO TO EDIT-WITH-MORE.                                        DCQRY010
00741                                                                    DCQRY01
00742 ************************************************                  DCQRY010
00743 *                                                                 DCQRY010
00744 *      HAVING CLAUSE VALIDATION                                   DCQRY010
00745 *                                                                 DCQRY010
00746 ************************************************                  DCQRY010
00747  EDIT-HAVE.                                                       DCQRY010
           IF (HOLD-VALUE IS NOT EQUAL TO "HAVING") 
00749          MOVE "37" TO ERROR-CODE                                  DCQRY010
00750          GO TO BAD-REQUEST.                                       DCQRY010
00751      MOVE "Y" TO HAVE-SW.                                         DCQRY010
00752      PERFORM EXTRACT-FIELD THRU EXTRACT-FIELD-XIT.                DCQRY010
00753      IF EXTRACT-SW EQUAL TO "N"                                   DCQRY010
00754          GO TO BAD-REQ-4.                                         DCQRY010
00755      MOVE HOLD-VALUE TO WORK-3.                                   DCQRY010
00756 *                                                                 DCQRY010
00757 *    PROCESS CHANGE/NOCHANGE CLAUSES                              DCQRY010
00758 *      USER CAN SPECIFY JUST CHANGE/NOCHANGE OR HE CAN            DCQRY010
00759 *        FOLLOW WITH TEST OF LAST UPDATE, REV, DATES, INITIALS    DCQRY010
00760 *   OR TIMES UPDATED. ANY TEST CAN BE FOLLOWED BY USE-OUTPUT      DCQRY010
00761 *        USE-OUTPUT CLAUSE.                                       DCQRY010
00762 *                                                                 DCQRY010
           IF (WORK-3 IS EQUAL TO "CHA" OR "NOC") 
00764          GO TO 2302-INIT-CHG.                                     DCQRY010
00765      GO TO 2500-CHECK-REF.                                        DCQRY010
00766  2302-INIT-CHG.                                                   DCQRY010
00767      MOVE WORK-3 TO TYPE-CHANGE-SW.                               DCQRY010
00768      MOVE "N" TO TWO-VALUE-SW.                                    DCQRY010
00769      MOVE SPACES TO CHANGE-VALUE1.                                DCQRY010
00770      MOVE SPACES TO CHANGE-VALUE2.                                DCQRY010
00771      MOVE "$C" TO QTBL-SEL1-ENTNO (1).                            DCQRY010
00772      MOVE SPACES TO QTBL-SEL1-FLDVALUE (1).                       DCQRY010
00773      IF TYPE-CHANGE-SW EQUAL "N"                                  DCQRY010
               MOVE "EQ" TO QTBL-SEL1-LOGIND (1)
00775      ELSE                                                         DCQRY010
               MOVE "GT" TO QTBL-SEL1-LOGIND (1). 
00777 *                                                                 DCQRY010
00778 *    DETERMINE NEXT WORD OF STATEMENT-DETERMINE TYPE              DCQRY010
00779 *      OF TESTS TO BE DONE                                        DCQRY010
00780 *                                                                 DCQRY010
00781      PERFORM EXTRACT-FIELD THRU EXTRACT-FIELD-XIT.                DCQRY010
00782      IF EXTRACT-SW EQUAL "N"                                      DCQRY010
00783          GO TO EDIT-WITH-END.                                     DCQRY010
           IF (HOLD-VALUE IS EQUAL TO "LAST ")
00785          MOVE "$L" TO QTBL-SEL1-ENTNO (1)                         DCQRY010
00786          GO TO 2385-CHECK-CHGEND.                                 DCQRY010
           IF (HOLD-VALUE IS EQUAL TO "ON ")
00788          GO TO 2310-CHECK-REV.                                    DCQRY010
           IF HOLD-VALUE IS EQUAL TO "BEFORE " AND
00790          TYPE-CHANGE-SW EQUAL "C"                                 DCQRY010
00791          MOVE "LT" TO QTBL-SEL1-LOGIND (1)                        DCQRY010
00792          GO TO 2310-CHECK-REV.                                    DCQRY010
           IF HOLD-VALUE IS EQUAL TO "BEFORE "
00794          MOVE "GT" TO QTBL-SEL1-LOGIND (1)                        DCQRY010
00795          GO TO 2310-CHECK-REV.                                    DCQRY010
           IF HOLD-VALUE IS EQUAL TO "AFTER " AND 
00797          TYPE-CHANGE-SW EQUAL "C"                                 DCQRY010
00798          MOVE "GT" TO QTBL-SEL1-LOGIND (1)                        DCQRY010
00799          GO TO 2310-CHECK-REV.                                    DCQRY010
           IF HOLD-VALUE IS EQUAL TO "AFTER " 
00801          MOVE "LT" TO QTBL-SEL1-LOGIND (1)                        DCQRY010
00802          GO TO 2310-CHECK-REV.                                    DCQRY010
           IF HOLD-VALUE IS EQUAL TO "BETWEEN" AND
00804          TYPE-CHANGE-SW EQUAL "C"                                 DCQRY010
00805          MOVE "GT" TO QTBL-SEL1-LOGIND (1)                        DCQRY010
00806          MOVE "LT" TO QTBL-SEL1-LOGIND (2)                        DCQRY010
00807          MOVE "Y" TO TWO-VALUE-SW                                 DCQRY010
00808          GO TO 2310-CHECK-REV.                                    DCQRY010
           IF HOLD-VALUE IS EQUAL TO "BETWEEN"
00810          MOVE "LT" TO QTBL-SEL1-LOGIND (1)                        DCQRY010
00811          MOVE "GT" TO QTBL-SEL1-LOGIND (2)                        DCQRY010
00812          MOVE "Y" TO TWO-VALUE-SW                                 DCQRY010
00813          GO TO 2310-CHECK-REV.                                    DCQRY010
00814 *                                                                 DCQRY010
00815 *    FREQUENCY                                                    DCQRY010
00816 *                                                                 DCQRY010
           IF HOLD-VALUE IS EQUAL TO "MORE "
00818          AND TYPE-CHANGE-SW EQUAL "C"                             DCQRY010
00819          MOVE "GT" TO QTBL-SEL1-LOGIND (1)                        DCQRY010
00820          GO TO 2340-HAVE-FREQ-THAN.                               DCQRY010
           IF HOLD-VALUE IS EQUAL TO "MORE "
00822          MOVE "LT" TO QTBL-SEL1-LOGIND (1)                        DCQRY010
00823          GO TO 2340-HAVE-FREQ-THAN.                               DCQRY010
           IF HOLD-VALUE IS EQUAL TO "LESS " AND
00825          TYPE-CHANGE-SW EQUAL "C"                                 DCQRY010
00826          MOVE "LT" TO QTBL-SEL1-LOGIND (1)                        DCQRY010
00827          GO TO 2340-HAVE-FREQ-THAN.                               DCQRY010
           IF HOLD-VALUE IS EQUAL TO "LESS "
00829          MOVE "GT" TO QTBL-SEL1-LOGIND (1)                        DCQRY010
00830          GO TO 2340-HAVE-FREQ-THAN.                               DCQRY010
           IF HOLD-VALUE IS EQUAL TO "FROM "
00832          AND TYPE-CHANGE-SW EQUAL "C"                             DCQRY010
00833          MOVE "GE" TO QTBL-SEL1-LOGIND  (1)                       DCQRY010
00834          MOVE "LE" TO QTBL-SEL1-LOGIND (2)                        DCQRY010
00835          MOVE "Y" TO TWO-VALUE-SW                                 DCQRY010
00836          GO TO 2345-HAVE-FREQ.                                    DCQRY010
           IF HOLD-VALUE IS EQUAL TO "FROM "
               MOVE "LT" TO QTBL-SEL1-LOGIND (1)
               MOVE "GT" TO QTBL-SEL1-LOGIND (2)
00840          MOVE "Y" TO TWO-VALUE-SW                                 DCQRY010
00841          GO TO 2345-HAVE-FREQ.                                    DCQRY010
           IF HOLD-VALUE IS EQUAL TO "BY "
00843          GO TO 2380-HAVE-BY.                                      DCQRY010
00844      MOVE "$T" TO QTBL-SEL1-ENTNO (1).                            DCQRY010
00845      MOVE HOLD-VALUE TO CHANGE-VALUE1.                            DCQRY010
00846      GO TO 2350-CHECK-TIMES1.                                     DCQRY010
00847 *                                                                 DCQRY010
00848 *    EDIT HAVING CHANGED DATE/FREQ CLAUSES                        DCQRY010
00849 *                                                                 DCQRY010
00850  2310-CHECK-REV.                                                  DCQRY010
00851      PERFORM EXTRACT-FIELD THRU EXTRACT-FIELD-XIT.                DCQRY010
00852      IF EXTRACT-SW EQUAL "N"                                      DCQRY010
00853          GO TO 2420-BAD-CHG.                                      DCQRY010
           IF HOLD-VALUE IS NOT EQUAL TO "REV " 
00855          MOVE "$D" TO QTBL-SEL1-ENTNO (1)                         DCQRY010
00856          GO TO 2315-RVALUE1.                                      DCQRY010
00857 *                                                                 DCQRY010
00858 *    ASSUME REV TEST                                              DCQRY010
00859 *                                                                 DCQRY010
00860      MOVE "$R" TO QTBL-SEL1-ENTNO (1)                             DCQRY010
00861      PERFORM EXTRACT-FIELD THRU EXTRACT-FIELD-XIT.                DCQRY010
00862      IF EXTRACT-SW EQUAL "N"                                      DCQRY010
00863          GO TO 2420-BAD-CHG.                                      DCQRY010
00864  2315-RVALUE1.                                                    DCQRY010
00865      MOVE HOLD-VALUE TO CHANGE-VALUE1.                            DCQRY010
00866      IF TWO-VALUE-SW EQUAL "N"                                    DCQRY010
00867          GO TO 2385-CHECK-CHGEND.                                 DCQRY010
00868      PERFORM EXTRACT-FIELD THRU EXTRACT-FIELD-XIT.                DCQRY010
00869      IF EXTRACT-SW EQUAL "N"                                      DCQRY010
00870          GO TO 2420-BAD-CHG.                                      DCQRY010
           IF HOLD-VALUE IS NOT EQUAL TO "AND"
00872          GO TO 2420-BAD-CHG.                                      DCQRY010
00873      PERFORM EXTRACT-FIELD THRU EXTRACT-FIELD-XIT.                DCQRY010
00874      IF EXTRACT-SW EQUAL "N"                                      DCQRY010
00875          GO TO 2420-BAD-CHG.                                      DCQRY010
           IF QTBL-SEL1-ENTNO (1) EQUAL "$D"
               MOVE HOLD-VALUE TO CHANGE-VALUE2 
               GO TO 2385-CHECK-CHGEND. 
           IF HOLD-VALUE NOT EQUAL "REV"
               GO TO 2420-BAD-CHG.
           PERFORM EXTRACT-FIELD THRU EXTRACT-FIELD-XIT.
           IF EXTRACT-SW EQUAL "N"
               GO TO 2420-BAD-CHG.
00876      MOVE HOLD-VALUE TO CHANGE-VALUE2.                            DCQRY010
00877      GO TO 2385-CHECK-CHGEND.                                     DCQRY010
00878 *                                                                 DCQRY010
00879 *    EDIT CHANGED N TIMES CLAUSES                                 DCQRY010
00880 *                                                                 DCQRY010
00881  2340-HAVE-FREQ-THAN.                                             DCQRY010
00882      PERFORM EXTRACT-FIELD THRU EXTRACT-FIELD-XIT.                DCQRY010
00883      IF EXTRACT-SW EQUAL "N"                                      DCQRY010
00884          GO TO 2420-BAD-CHG.                                      DCQRY010
           IF HOLD-VALUE IS NOT EQUAL TO "THAN "
00886          GO TO 2385-CHECK-CHGEND.                                 DCQRY010
00887  2345-HAVE-FREQ.                                                  DCQRY010
00888      MOVE "$F" TO QTBL-SEL1-ENTNO (1).                            DCQRY010
00889      PERFORM EXTRACT-FIELD THRU EXTRACT-FIELD-XIT.                DCQRY010
00890      IF EXTRACT-SW EQUAL "N"                                      DCQRY010
00891          GO TO 2420-BAD-CHG.                                      DCQRY010
00892      MOVE HOLD-VALUE TO CHANGE-VALUE1.                            DCQRY010
00893  2350-CHECK-TIMES1.                                               DCQRY010
00894 *                                                                 DCQRY010
00895 *    CHECK VALUE 2                                                DCQRY010
00896 *                                                                 DCQRY010
00897      IF TWO-VALUE-SW EQUAL "N"                                    DCQRY010
00898          GO TO 2360-CHECK-WORDTIMES.                              DCQRY010
00899      PERFORM EXTRACT-FIELD THRU EXTRACT-FIELD-XIT.                DCQRY010
00900      IF EXTRACT-SW EQUAL "N"                                      DCQRY010
00901          GO TO 2420-BAD-CHG.                                      DCQRY010
           IF HOLD-VALUE IS NOT EQUAL TO "TO" 
00903          GO TO 2420-BAD-CHG.                                      DCQRY010
00904 *     GET THE SECOND VALUE                                        DCQRY010
00905      PERFORM EXTRACT-FIELD THRU EXTRACT-FIELD-XIT.                DCQRY010
00906      IF EXTRACT-SW EQUAL "N"                                      DCQRY010
00907          GO TO 2420-BAD-CHG.                                      DCQRY010
00908      MOVE HOLD-VALUE TO CHANGE-VALUE2.                            DCQRY010
00909 *     RETRIEVE THE WORD TIMES                                     DCQRY010
00910  2360-CHECK-WORDTIMES.                                            DCQRY010
00911      PERFORM EXTRACT-FIELD THRU EXTRACT-FIELD-XIT.                DCQRY010
00912      IF EXTRACT-SW EQUAL "N"                                      DCQRY010
00913          GO TO 2420-BAD-CHG.                                      DCQRY010
           IF HOLD-VALUE IS NOT EQUAL TO "TIMES " 
00915          GO TO 2420-BAD-CHG.                                      DCQRY010
00916      GO TO 2385-CHECK-CHGEND.                                     DCQRY010
00917 *                                                                 DCQRY010
00918 *    PROCESS SINGLE BY CLAUSE                                     DCQRY010
00919 *                                                                 DCQRY010
00920  2380-HAVE-BY.                                                    DCQRY010
00921      MOVE "$B" TO QTBL-SEL1-ENTNO (1).                            DCQRY010
00922      PERFORM EXTRACT-FIELD THRU EXTRACT-FIELD-XIT.                DCQRY010
00923      IF EXTRACT-SW EQUAL "N"                                      DCQRY010
00924          GO TO 2420-BAD-CHG.                                      DCQRY010
00925      IF WORK-VALUE (4) NOT EQUAL SPACE                            DCQRY010
00926          GO TO 2420-BAD-CHG.                                      DCQRY010
00927      MOVE HOLD-VALUE TO QTBL-SEL1-FLDVALUE (1).                   DCQRY010
00928      GO TO 2400-CHGDONE.                                          DCQRY010
00929  2385-CHECK-CHGEND.                                               DCQRY010
00930 *                                                                 DCQRY010
00931 *    VALIDATE END OF HAVING CHANGE CLAUSEES-BY CAN BE USED        DCQRY010
00932 *        WITH ANY OF THEM-ALSO IF GALUES WERE INCLUDED THEN       DCQRY010
00933 *        THEY MUST BE CHECKED                                     DCQRY010
00934 *                                                                 DCQRY010
00935      IF CHANGE-VALUE2  NOT EQUAL SPACES                           DCQRY010
00936          PERFORM 2450-CHGVAL-CHECK THRU 2499-CHGVAL-CHECK-XIT     DCQRY010
00937          MOVE NUMERIC-CHANGE-VALUE TO QTBL-SEL1-FLDVALUE (2).     DCQRY010
00938      MOVE QTBL-SEL1-ENTNO (1) TO                                  DCQRY010
00939          QTBL-SEL1-ENTNO (2).                                     DCQRY010
00940      IF CHANGE-VALUE1 NOT EQUAL SPACES                            DCQRY010
00941          MOVE CHANGE-VALUE1 TO CHANGE-VALUE2                      DCQRY010
00942          PERFORM 2450-CHGVAL-CHECK THRU 2499-CHGVAL-CHECK-XIT     DCQRY010
00943          MOVE NUMERIC-CHANGE-VALUE TO QTBL-SEL1-FLDVALUE (1).     DCQRY010
00944 *                                                                 DCQRY010
00945 *    CHECK FOR BY CLAUSE AFTER OTHERS                             DCQRY010
00946 *                                                                 DCQRY010
00947      PERFORM EXTRACT-FIELD THRU EXTRACT-FIELD-XIT.                DCQRY010
00948      IF EXTRACT-SW EQUAL "N"                                      DCQRY010
00949          GO TO EDIT-WITH-END.                                     DCQRY010
           IF HOLD-VALUE IS NOT EQUAL TO "BY "
00951          MOVE "12" TO ERROR-CODE                                  DCQRY010
00952          GO TO BAD-REQUEST.                                       DCQRY010
00953      PERFORM EXTRACT-FIELD THRU EXTRACT-FIELD-XIT.                DCQRY010
00954      IF EXTRACT-SW EQUAL "N"                                      DCQRY010
00955          GO TO 2420-BAD-CHG.                                      DCQRY010
00956      IF WORK-VALUE (4)  NOT EQUAL SPACE                           DCQRY010
00957      GO TO 2420-BAD-CHG.                                          DCQRY010
00958      MOVE "$B" TO QTBL-SEL1-ENTNO (3).                            DCQRY010
00959      MOVE HOLD-VALUE TO QTBL-SEL1-FLDVALUE (3).                   DCQRY010
00960 *                                                                 DCQRY010
00961 *    COMPLETE PROCESSING OF HAVING CHANGE CLAUSES                 DCQRY010
00962 *                                                                 DCQRY010
00963  2400-CHGDONE.                                                    DCQRY010
00964      PERFORM EXTRACT-FIELD THRU EXTRACT-FIELD-XIT.                DCQRY010
00965      IF EXTRACT-SW EQUAL "N"                                      DCQRY010
00966          GO TO EDIT-WITH-END.                                     DCQRY010
00967      MOVE "12" TO ERROR-CODE.                                     DCQRY010
00968      GO TO BAD-REQUEST.                                           DCQRY010
00969  2420-BAD-CHG.                                                    DCQRY010
00970      MOVE "32" TO ERROR-CODE.                                     DCQRY010
00971      GO TO BAD-REQUEST.                                           DCQRY010
00972 *                                                                 DCQRY010
00973 *    VALIDATE HAVING CHANGE DATES/REVS AND TIMES VALUES           DCQRY010
00974 *                                                                 DCQRY010
00975  2450-CHGVAL-CHECK.                                               DCQRY010
00976      MOVE ZEROES TO NUMERIC-CHANGE-VALUE.                         DCQRY010
00977      IF CV1-BYTE (7) NOT EQUAL SPACE                              DCQRY010
00978          GO TO 2420-BAD-CHG.                                      DCQRY010
00979      MOVE 6 TO SUB9.                                              DCQRY010
00980      MOVE 6 TO SUB10.                                             DCQRY010
00981  2455-FIND-NONSPACE.                                              DCQRY010
00982      IF CV1-BYTE (SUB9) EQUAL SPACE                               DCQRY010
00983          SUBTRACT 1 FROM SUB9                                     DCQRY010
00984          GO TO 2455-FIND-NONSPACE.                                DCQRY010
00985  2460-MOVE-CHR.                                                   DCQRY010
00986      MOVE CV1-BYTE (SUB9) TO NCV-BYTE (SUB10).                    DCQRY010
00987      SUBTRACT 1 FROM SUB9.                                        DCQRY010
00988      SUBTRACT 1 FROM SUB10.                                       DCQRY010
00989      IF SUB9 EQUAL ZEROES                                         DCQRY010
00990          GO TO 2490-CK-NUMVAL.                                    DCQRY010
00991      GO TO 2460-MOVE-CHR.                                         DCQRY010
00992  2490-CK-NUMVAL.                                                  DCQRY010
00993      IF NUMERIC-CHANGE-VALUE NOT NUMERIC                          DCQRY010
00994          GO TO 2420-BAD-CHG.                                      DCQRY010
00995  2499-CHGVAL-CHECK-XIT.                                           DCQRY010
00996      EXIT.                                                        DCQRY010
00997 *                                                                 DCQRY010
00998 *      REFERENCE AND NOREFERENCE                                  DCQRY010
00999 *                                                                 DCQRY010
01000  2500-CHECK-REF.                                                  DCQRY010
           IF (WORK-3 IS EQUAL TO "REF" OR "NOR") 
              MOVE "9999999" TO QTBL-SEL1-FLDNO (1) 
              MOVE "REFERENCE" TO QTBL-SEL1-FLDVALUE (1)
              IF (WORK-3 IS EQUAL TO "REF") 
                 MOVE "EQ" TO QTBL-SEL1-LOGIND (1)
              ELSE
                 MOVE "NE" TO QTBL-SEL1-LOGIND (1)
              END-IF
              GO TO CK-TOO-MANY 
           ELSE 
              GO TO HAVE-CATEGORY 
           END-IF.
01012  CK-TOO-MANY.                                                     DCQRY010
01013      PERFORM EXTRACT-FIELD THRU EXTRACT-FIELD-XIT.                DCQRY010
01014      IF EXTRACT-SW EQUAL TO "Y"                                   DCQRY010
01015          MOVE "12" TO ERROR-CODE                                  DCQRY010
01016          GO TO BAD-REQUEST.                                       DCQRY010
01017      GO TO EDIT-WITH-END.                                         DCQRY010
01018 *                                                                 DCQRY010
01019 *    CHECK FOR USED-BY OR WHICH-USE IN HAVING CLAUSE              DCQRY010
01020 *                                                                 DCQRY010
01021  PERFORM-EXTRACT.                                                 DCQRY010
01022      PERFORM EXTRACT-FIELD THRU EXTRACT-FIELD-XIT.                DCQRY010
01023      IF EXTRACT-SW EQUAL TO "N"                                   DCQRY010
01024          GO TO EDIT-WITH-END.                                     DCQRY010
01025      GO TO EDIT-WITH-MORE.                                        DCQRY010
01026 *                                                                 DCQRY010
01027 *      CATEGORY PRESENT OR MISSING                                DCQRY010
01028 *                                                                 DCQRY010
01029  HAVE-CATEGORY.                                                   DCQRY010
01030      MOVE 1 TO TRANS-COUNT.                                       DCQRY010
01031  HAVE-CAT-LOOP.                                                   DCQRY010
01032      PERFORM VALIDATE-CATEGORY THRU VALIDATE-CATEGORY-XIT.        DCQRY010
01033      IF EDIT-SW EQUAL TO "N"                                      DCQRY010
01034          MOVE "32" TO ERROR-CODE                                  DCQRY010
01035          GO TO BAD-REQUEST.                                       DCQRY010
01036      IF HOLD-CATEGORY GREATER THAN "994"                          DCQRY010
01037          MOVE "32" TO ERROR-CODE                                  DCQRY010
01038          GO TO BAD-REQUEST.                                       DCQRY010
           MOVE "EQ" TO QTBL-SEL1-LOGIND (TRANS-COUNT). 
01040      MOVE HOLD-CATEGORY TO QTBL-SEL1-CATNO (TRANS-COUNT).         DCQRY010
01041      PERFORM EXTRACT-FIELD THRU EXTRACT-FIELD-XIT.                DCQRY010
01042      IF EXTRACT-SW EQUAL TO "N"                                   DCQRY010
01043          GO TO EDIT-WITH-END.                                     DCQRY010
           IF HOLD-VALUE IS NOT EQUAL TO "MISSING"
01045          GO TO CK-HAVE-CONTINUE.                                  DCQRY010
           MOVE "NE" TO QTBL-SEL1-LOGIND (TRANS-COUNT). 
01047      PERFORM EXTRACT-FIELD THRU EXTRACT-FIELD-XIT.                DCQRY010
01048      IF EXTRACT-SW EQUAL TO "N"                                   DCQRY010
01049          GO TO EDIT-WITH-END.                                     DCQRY010
01050  CK-HAVE-CONTINUE.                                                DCQRY010
01051      IF TRANS-COUNT GREATER THAN 2                                DCQRY010
01052          GO TO EDIT-WITH-MORE.                                    DCQRY010
01053      MOVE HOLD-VALUE TO WORK-3.                                   DCQRY010
           IF WORK-3 IS EQUAL TO "AND" OR "OR"
01055          NEXT SENTENCE    ELSE                                    DCQRY010
01056          GO TO EDIT-WITH-MORE.                                    DCQRY010
01057      MOVE WORK-3 TO QTBL-SEL1-ANDOR (TRANS-COUNT).                DCQRY010
01058      ADD 1 TO TRANS-COUNT.                                        DCQRY010
01059      PERFORM EXTRACT-FIELD THRU EXTRACT-FIELD-XIT.                DCQRY010
01060      IF EXTRACT-SW EQUAL TO "N"                                   DCQRY010
01061          GO TO BAD-REQ-4.                                         DCQRY010
01062      MOVE HOLD-VALUE TO WORK-3.                                   DCQRY010
01063      GO TO HAVE-CAT-LOOP.                                         DCQRY010
01064  END-HAVE.                                                        DCQRY010
01065      PERFORM EXTRACT-FIELD THRU EXTRACT-FIELD-XIT.                DCQRY010
01066      IF EXTRACT-SW EQUAL TO "Y"                                   DCQRY010
01067          GO TO EDIT-WITH-MORE.                                    DCQRY010
01068                                                                    DCQRY01
01069  EDIT-WITH-END.                                                   DCQRY010
01070      IF QRYTYPE-23 EQUAL TO SPACES                                DCQRY010
01071          MOVE "35" TO QRYTYPE-23.                                 DCQRY010
01072      GO TO BUILD-CAT-ID.                                          DCQRY010
01073  EDIT-WITH-MORE.                                                  DCQRY010
01074      IF QRYTYPE-23 NOT EQUAL TO SPACES                            DCQRY010
01075          MOVE "12" TO ERROR-CODE                                  DCQRY010
01076          GO TO BAD-REQUEST.                                       DCQRY010
01077 ******************************************************************DCQRY010
01078 *    HAVE 45 - 55 - 65 - OR 77                                   *DCQRY010
01079 ******************************************************************DCQRY010
01080      MOVE HOLD-VALUE TO WORK-8.                                   DCQRY010
           IF WORK-8 IS EQUAL TO "USED-BY" OR "WHICH-USE" 
01082          NEXT SENTENCE       ELSE                                 DCQRY010
01083          MOVE "37" TO ERROR-CODE                                  DCQRY010
01084          GO TO BAD-REQUEST.                                       DCQRY010
01085      PERFORM EXTRACT-FIELD THRU EXTRACT-FIELD-XIT.                DCQRY010
01086      IF EXTRACT-SW EQUAL TO "N"                                   DCQRY010
01087          GO TO BAD-REQ-4.                                         DCQRY010
01088      PERFORM VALIDATE-TYPE THRU VALIDATE-TYPE-XIT.                DCQRY010
01089      IF EDIT-SW EQUAL "Y"                                         DCQRY010
01090          GO TO GET-65-77.                                         DCQRY010
01091 ******************************************************************DCQRY010
01092 *    HAVE 45 OR 55                                               *DCQRY010
01093 ******************************************************************DCQRY010
01094      MOVE HOLD-VALUE TO QTBL-OPT-CNAME.                           DCQRY010
           IF WORK-8 IS EQUAL TO "USED-BY"
01096          MOVE "45" TO QRYTYPE-23       ELSE                       DCQRY010
01097          MOVE "55" TO QRYTYPE-23.                                 DCQRY010
01098      GO TO BUILD-CAT-ID.                                          DCQRY010
01099  GET-65-77.                                                       DCQRY010
01100 ******************************************************************DCQRY010
01101 *    VALIDATE ENTRY TYPE DESCRIPTOR                              *DCQRY010
01102 ******************************************************************DCQRY010
           IF WORK-8 IS EQUAL TO "USED-BY"
01104          MOVE "65" TO QRYTYPE-23                                  DCQRY010
01105          MOVE HOLD-ENTTYPE TO QTBL-SEL2-TOTYPE                    DCQRY010
01106          GO TO BUILD-CAT-ID.                                      DCQRY010
01107 ******************************************************************DCQRY010
01108 *    HAVE A 77                                                   *DCQRY010
01109 ******************************************************************DCQRY010
01110      MOVE "77" TO QRYTYPE-23.                                     DCQRY010
01111      MOVE QTBL-SEL1-ENTTYPE TO QTBL-SEL2-TOTYPE.                  DCQRY010
01112      MOVE HOLD-ENTTYPE TO QTBL-SEL1-ENTTYPE.                      DCQRY010
01113      GO TO BUILD-CAT-ID.                                          DCQRY010
01114                                                                    DCQRY01
01115 *************************************************                 DCQRY010
01116 *************************************************                 DCQRY010
01117 *                                                                 DCQRY010
01118 *      REQUEST ERROR PROCESSING                                   DCQRY010
01119 *                                                                 DCQRY010
01120 ************************************************                  DCQRY010
01121 ************************************************                  DCQRY010
01122  BAD-REQ-4.                                                       DCQRY010
01123      MOVE "37" TO ERROR-CODE.                                     DCQRY010
01124  BAD-REQUEST.                                                     DCQRY010
01125      PERFORM ERROR-RTN THRU ERROR-RTN-XIT.                        DCQRY010
01126      MOVE SPACES TO LAST-WORD.                                    DCQRY010
01127      MOVE HOLD-VALUE TO LAST-WORD.                                DCQRY010
01128  END-BAD-REQUEST.                                                 DCQRY010
01129      MOVE "31" TO ERROR-CODE.                                     DCQRY010
01130      PERFORM ERROR-RTN THRU ERROR-RTN-XIT.                        DCQRY010
01131      GO TO EDIT-END.                                              DCQRY010
01132                                                                    DCQRY01
01133 *************************************************                 DCQRY010
01134 *************************************************                 DCQRY010
01135 *                                                                 DCQRY010
01136 *      END OF EDIT02 PROCESSING                                   DCQRY010
01137 *                                                                 DCQRY010
01138 ************************************************                  DCQRY010
01139 ***********************************************                   DCQRY010
01140  BUILD-CAT-ID.                                                    DCQRY010
01141      IF HAVE-SW EQUAL TO "N"                                      DCQRY010
01142          GO TO EDIT-END.                                          DCQRY010
01143      IF QRYTYPE-3 EQUAL TO "5"                                    DCQRY010
01144          MOVE "6" TO QRYTYPE-3.                                   DCQRY010
01145      IF QRYTYPE-3 EQUAL TO "7"                                    DCQRY010
01146          MOVE "8" TO QRYTYPE-3.                                   DCQRY010
01147  EDIT-END.                                                        DCQRY010
01148      CLOSE MAST3.                                                 DCQRY010
01149                                                                    DCQRY01
01150 ************************************************************      DCQRY010
01151 **********************************************************        DCQRY010
01152 *                                                                 DCQRY010
01153 *    CONTROL CALLING OF FINAL EDIT, SELECTION AND SHOW MODULES    DCQRY010
01154 *                                                                 DCQRY010
01155 ****************************************************************  DCQRY010
01156 ****************************************************************  DCQRY010
01157 *                                                                 DCQRY010
01158 *     CALL FINAL EDIT MODULE                                      DCQRY010
01159 *                                                                 DCQRY010
           CALL "QRY020". 
01162      IF ERROR-COUNT NOT EQUAL TO ZERO                             DCQRY010
           EXIT PROGRAM.
01164 ***************************************************************   DCQRY010
01165 *                                                                 DCQRY010
01166 *    CALL SELECTION MODULES                                       DCQRY010
01167 *                                                                 DCQRY010
01168 *    FIRST CHECK FOR HAVE  CLAUSE WITH REF OR NO REF              DCQRY010
01169 *                                                                 DCQRY010
01170 ***************************************************************   DCQRY010
           IF (QTBL-SEL1-FLDVALUE (1) IS EQUAL TO "REF" OR "REFERENCE") 
01172          GO TO CHECK-REF-SELECT.                                  DCQRY010
01173      GO TO CK-RANGE-SELECT.                                       DCQRY010
01174  CHECK-REF-SELECT.                                                DCQRY010
01175      IF QRYTYPE-23 EQUAL TO "36" OR "86" OR "96"                  DCQRY010
           CALL "QRY150". 
01177          GO TO CALL-SHOW-MOD.                                     DCQRY010
01178 *                                                                 DCQRY010
01179 *     CALL RANGE QUERIES- TYPE 30-S, 80-S, AND 90-S               DCQRY010
01180 *                                                                 DCQRY010
01181  CK-RANGE-SELECT.                                                 DCQRY010
01182      IF QRYTYPE-2 EQUAL TO "3" OR "8" OR "9"                      DCQRY010
               CALL "QRY120"
01185          GO TO CALL-SHOW-MOD.                                     DCQRY010
01186 *                                                                 DCQRY010
01187 *    CALL USED-BY QUERY SELECT MOD                                DCQRY010
01188 *                                                                 DCQRY010
01189      IF QRYTYPE-2 EQUAL TO "4" OR "6"                             DCQRY010
               CALL "QRY130"
01192          GO TO CALL-SHOW-MOD.                                     DCQRY010
01193 *                                                                 DCQRY010
01194 *    CALL WHICH-USE QUERY SELECT                                  DCQRY010
01195 *                                                                 DCQRY010
01196      IF QRYTYPE-2 EQUAL TO "5" OR "7"                             DCQRY010
               CALL "QRY140"
01199          GO TO CALL-SHOW-MOD.                                     DCQRY010
01200 *                                                                 DCQRY010
01201 *    CALL ALIAS/VERSION  AND SINGLE ENTRY SHOW SELECT             DCQRY010
01202 *                                                                 DCQRY010
01203      IF QRYTYPE-2 EQUAL TO "0" OR "1" OR "2"                      DCQRY010
           CALL "QRY110". 
01206 **************************************************************    DCQRY010
01207 *************************************************************     DCQRY010
01208 *                                                                 DCQRY010
01209 *    CALL SHOW MODULES                                            DCQRY010
01210 *                                                                 DCQRY010
01211  CALL-SHOW-MOD.                                                   DCQRY010
01212 *    IF SHOW FIELDS SPECIFIED                                        CL**2
01213 *    CALL SHOW FIELDS MODULE                                         CL**2
01214 *                                                                    CL**2
01215      IF QTBL-SHOW-FIELD (1) EQUAL SPACES                             CL**2
01216          GO TO CATEGORY-SHOW.                                        CL**2
           CALL "QRY299". 
               GO TO REQUEST-FINISHED.
01219  CATEGORY-SHOW.                                                      CL**2
01220 *            CALL SHOW CONTROL HANDLES COUNT AND LIST             DCQRY010
           CALL "QRY200". 
01223 *                                                                 DCQRY010
01224 *    CALL SHOW MODULES TO DISPLAY ENTRIES                         DCQRY010
01225 *                                                                 DCQRY010
01226      IF QRYTYPE-1 NOT EQUAL TO "S"                                DCQRY010
01227          GO TO REQUEST-FINISHED.                                  DCQRY010
01228      IF HIT-COUNT EQUAL TO ZERO                                   DCQRY010
01229          GO TO REQUEST-FINISHED.                                  DCQRY010
  
      ************************************************* 
      *                PRINT DBPROCS                  * 
      ************************************************* 
  
           IF ENTRY-01-PRESENT EQUAL "Y"
              CALL "QRY203".
  
  
      ************************************************* 
      *                PRINT ELEMENTS                 * 
      ************************************************* 
  
           IF ENTRY-02-PRESENT EQUAL "Y"
              CALL "QRY205".
  
      ************************************************* 
      *                PRINT GROUPS                   * 
      ************************************************* 
  
           IF ENTRY-03-PRESENT EQUAL "Y"
              CALL "QRY210".
  
      ************************************************* 
      *                PRINT RECORDS                  * 
      ************************************************* 
  
           IF ENTRY-04-PRESENT EQUAL "Y"
              CALL "QRY213".
  
      ************************************************* 
      *                PRINT DATASETS                 * 
      ************************************************* 
  
           IF ENTRY-05-PRESENT EQUAL "Y"
              CALL "QRY219".
  
      ************************************************* 
      *                PRINT FILES                    * 
      ************************************************* 
  
           IF ENTRY-06-PRESENT EQUAL "Y"
              CALL "QRY220".
  
      ************************************************* 
      *                PRINT AREAS                    * 
      ************************************************* 
  
           IF ENTRY-07-PRESENT EQUAL "Y"
              CALL "QRY222".
  
      ************************************************* 
      *                PRINT SUBSCHEMAS               * 
      ************************************************* 
  
           IF ENTRY-08-PRESENT EQUAL "Y"
              CALL "QRY224".
  
      ************************************************* 
      *                PRINT SCHEMAS                  * 
      ************************************************* 
  
           IF ENTRY-09-PRESENT EQUAL "Y"
              CALL "QRY226".
  
      ************************************************* 
      *                PRINT TOTALS                   * 
      ************************************************* 
  
           IF ENTRY-10-PRESENT EQUAL "Y"
              CALL "QRY232".
  
      ************************************************* 
      *                PRINT FORMS                    * 
      ************************************************* 
  
           IF ENTRY-11-PRESENT EQUAL "Y"
              CALL "QRY235".
  
      ************************************************* 
      *                PRINT REPORTS                  * 
      ************************************************* 
  
           IF ENTRY-12-PRESENT EQUAL "Y"
              CALL "QRY240".
  
      ************************************************* 
      *                PRINT EXTERNALS                * 
      ************************************************* 
  
           IF ENTRY-13-PRESENT EQUAL "Y"
              CALL "QRY245".
  
      ************************************************* 
      *                PRINT MODULES                  * 
      ************************************************* 
  
           IF ENTRY-14-PRESENT EQUAL "Y"
              CALL "QRY250".
  
      ************************************************* 
      *                PRINT TASKS                    * 
      ************************************************* 
  
           IF ENTRY-15-PRESENT EQUAL "Y"
              CALL "QRY255".
  
      ************************************************* 
      *                PRINT SYSTEMS                  * 
      ************************************************* 
  
           IF ENTRY-16-PRESENT EQUAL "Y"
              CALL "QRY260".
  
      ************************************************* 
      *                PRINT USERS                    * 
      ************************************************* 
  
           IF ENTRY-17-PRESENT EQUAL "Y"
              CALL "QRY265".
  
01502 ************************************************************      DCQRY010
01503 ************************************************************      DCQRY010
01504 *                                                                 DCQRY010
01505 *    RETURN TO EDIT01                                             DCQRY010
01506 *                                                                 DCQRY010
01507  REQUEST-FINISHED.                                                DCQRY010
           EXIT PROGRAM.
01509                                                                    DCQRY01
01510 ******************************************************************DCQRY010
01511 *                                                                *DCQRY010
01512 *    S U B R O U T I N E   A R E A                               *DCQRY010
01513 *                                                                *DCQRY010
01514 ******************************************************************DCQRY010
01515 ******************************************************************DCQRY010
01516 *    EXTRACT A FIELD FROM QUERY STORAGE AREA                     *DCQRY010
01517 *    SCAN STARTS AT FIRST NON-BLANK AND ENDS AT FIRST BLANK      *DCQRY010
01518 ******************************************************************DCQRY010
01519  EXTRACT-FIELD.                                                   DCQRY010
01520      MOVE ZERO TO SUB2.                                           DCQRY010
01521      MOVE SPACES TO HOLD-VALUE.                                   DCQRY010
01522      MOVE "N" TO EXTRACT-SW.                                      DCQRY010
01523  START-FIELD.                                                     DCQRY010
01524      ADD 1 TO SUB1.                                               DCQRY010
01525      IF SUB1 GREATER THAN 213                                     DCQRY010
01526          GO TO EXTRACT-FIELD-XIT.                                 DCQRY010
01527      IF QRY-WORK (SUB1) EQUAL TO SPACES                           DCQRY010
01528          GO TO START-FIELD.                                       DCQRY010
01529      IF QRY-WORK (SUB1) NOT EQUAL TO QUOTE                        DCQRY010
01530          GO TO MOVE-FIELD.                                        DCQRY010
01531 *                                                                 DCQRY010
01532 *    HAVE A FIELD IN QUOTES                                       DCQRY010
01533 *                                                                 DCQRY010
01534  EXTRACT-VALUE.                                                   DCQRY010
01535      ADD 1 TO SUB2.                                               DCQRY010
01536      IF SUB2 GREATER THAN 50                                      DCQRY010
01537          MOVE "24" TO ERROR-CODE                                  DCQRY010
01538          GO TO BAD-REQUEST.                                       DCQRY010
01539      MOVE QRY-WORK (SUB1) TO WORK-VALUE (SUB2).                   DCQRY010
01540      ADD 1 TO SUB1.                                               DCQRY010
01541      IF SUB1 GREATER THAN 213                                     DCQRY010
01542          MOVE "12" TO ERROR-CODE                                  DCQRY010
01543          GO TO BAD-REQUEST.                                       DCQRY010
01544      IF QRY-WORK (SUB1) NOT EQUAL TO QUOTE                        DCQRY010
01545          GO TO EXTRACT-VALUE.                                     DCQRY010
01546      ADD 1 TO SUB2.                                               DCQRY010
01547      IF SUB2 GREATER THAN 50                                      DCQRY010
01548          MOVE "24" TO ERROR-CODE                                  DCQRY010
01549          GO TO BAD-REQUEST.                                       DCQRY010
01550      MOVE QRY-WORK (SUB1) TO WORK-VALUE (SUB2).                   DCQRY010
01551      ADD 1 TO SUB1.                                               DCQRY010
01552      IF QRY-WORK (SUB1) NOT EQUAL TO SPACE                        DCQRY010
01553          MOVE "37" TO ERROR-CODE                                  DCQRY010
01554          GO TO BAD-REQUEST.                                       DCQRY010
01555      GO TO END-FIELD.                                             DCQRY010
01556 *                                                                 DCQRY010
01557 *    HAVE BEGINNING OF FIELD.                                     DCQRY010
01558 *                                                                 DCQRY010
01559  MOVE-FIELD.                                                      DCQRY010
01560      ADD 1 TO SUB2.                                               DCQRY010
01561      IF SUB2 GREATER THAN 50                                      DCQRY010
01562          GO TO EXTRACT-FIELD-XIT.                                 DCQRY010
01563      MOVE QRY-WORK (SUB1) TO WORK-VALUE (SUB2).                   DCQRY010
01564      ADD 1 TO SUB1.                                               DCQRY010
01565      IF SUB1 GREATER THAN 213                                     DCQRY010
01566          GO TO END-FIELD.                                         DCQRY010
01567      IF QRY-WORK (SUB1) EQUAL TO SPACES                           DCQRY010
01568          GO TO END-FIELD.                                         DCQRY010
01569      GO TO MOVE-FIELD.                                            DCQRY010
01570  END-FIELD.                                                       DCQRY010
01571      MOVE "Y" TO EXTRACT-SW.                                      DCQRY010
01572  EXTRACT-FIELD-XIT.                                               DCQRY010
01573      EXIT.                                                        DCQRY010
01574 ******************************************************************DCQRY010
01575 *                                                                 DCQRY010
01576 *    JUSTIFY A NUMERIC LINE NUMBER                               *DCQRY010
01577 *                                                                 DCQRY010
01578 ******************************************************************DCQRY010
01579  JUSTIFY-NUMERIC.                                                 DCQRY010
01580      IF SUB2 GREATER THAN 4                                       DCQRY010
01581          GO TO BAD-NUMERIC.                                       DCQRY010
01582      MOVE ZEROES TO NUMERIC-WORK.                                 DCQRY010
01583      MOVE 04 TO SUB4.                                             DCQRY010
01584      MOVE 04 TO SUB3.                                             DCQRY010
01585  MOVE-LINE-LOOP.                                                  DCQRY010
01586      IF WORK-VALUE (SUB3) NOT EQUAL TO SPACES                     DCQRY010
01587          GO TO LINE-LOOP.                                         DCQRY010
01588      SUBTRACT 1 FROM SUB3.                                        DCQRY010
01589      GO TO MOVE-LINE-LOOP.                                        DCQRY010
01590  LINE-LOOP.                                                       DCQRY010
01591      MOVE WORK-VALUE (SUB3) TO NUM-WORKS (SUB4).                  DCQRY010
01592      SUBTRACT 1 FROM SUB3.                                        DCQRY010
01593      SUBTRACT 1 FROM SUB4.                                        DCQRY010
01594      IF SUB3 GREATER THAN ZERO                                    DCQRY010
01595          GO TO LINE-LOOP.                                         DCQRY010
01596      IF NUMERIC-WORK IS NUMERIC                                   DCQRY010
01597          GO TO JUSTIFY-NUMERIC-XIT.                               DCQRY010
01598  BAD-NUMERIC.                                                     DCQRY010
01599      MOVE "22" TO ERROR-CODE.                                     DCQRY010
01600      PERFORM ERROR-RTN THRU ERROR-RTN-XIT.                        DCQRY010
01601      MOVE SPACES TO NUMERIC-WORK.                                 DCQRY010
01602  JUSTIFY-NUMERIC-XIT.                                             DCQRY010
01603      EXIT.                                                        DCQRY010
01604                                                                    DCQRY01
01605 ***************************************************************   DCQRY010
01606 *                                                                 DCQRY010
01607 *    VALIDATE AN ENTRY TYPE REFERENCE                             DCQRY010
01608 *                                                                 DCQRY010
01609 *        MUST BE STANDARD NAME NAME, PLURAL OF STANDARD NAME      DCQRY010
01610 *        OR FIRST 3 BYTES OF STANDARD NAME OR A                   DCQRY010
01611 *        SPECIAL NAME                                             DCQRY010
01612 *                                                                 DCQRY010
01613 *************************************************************     DCQRY010
01614  VALIDATE-TYPE.                                                   DCQRY010
01615      MOVE HOLD-VALUE TO ENTRY-NAME-WK.                            DCQRY010
01616      MOVE 01 TO ENT.                                              DCQRY010
01617          MOVE "Y" TO EDIT-SW.                                     DCQRY010
01618 *                                                                 DCQRY010
01619 *    CHECK FOR SPECIAL NAMES                                      DCQRY010
01620 *            DATA, PROCEDURES , ENTRIES                           DCQRY010
01621 *                                                                 DCQRY010
           IF ENTRY-NAME-WK IS EQUAL TO "GDA" OR "GDATA"
01623          MOVE "97" TO HOLD-ENTTYPE                                DCQRY010
01624          GO TO VALIDATE-TYPE-XIT.                                 DCQRY010
           IF ENTRY-NAME-WK IS EQUAL TO "GPR" OR "GPROCEDURE" 
              OR "GPROCEDURES"
01627          MOVE "98" TO HOLD-ENTTYPE                                DCQRY010
01628          GO TO VALIDATE-TYPE-XIT.                                 DCQRY010
           IF ENTRY-NAME-WK IS EQUAL TO "ENT" OR "ENTRY" OR "ENTRIES" 
01631          MOVE "99" TO HOLD-ENTTYPE                                DCQRY010
01632          GO TO VALIDATE-TYPE-XIT.                                 DCQRY010
01633 *                                                                 DCQRY010
01634 *      RETRIEVE ENTRY RECORD FROM CONTROL FILE                    DCQRY010
01635 *                                                                 DCQRY010
           MOVE 3 TO CON-KEY. 
01637      READ MAST3 INVALID KEY                                       DCQRY010
01638          GO TO CTL-ENTRY-ERR.                                     DCQRY010
01639 *                                                                 DCQRY010
01640 *    RETRIEVE A STANDARD NAME                                     DCQRY010
01641 *                                                                 DCQRY010
01642  TYPE-LOOP.                                                       DCQRY010
01643      MOVE SPACES TO EDIT-ENT-NAME.                                DCQRY010
           MOVE CTL-ENTRY-NAME (ENT) TO EDIT-ENT-NAME 
           IF USER-ENTNAME (4 : 1) IS NOT EQUAL TO SPACE
01646          GO TO CK-FULL-ENTNAME.                                   DCQRY010
01647 *                                                                 DCQRY010
01648 *    CHECK FOR MATCH ON 1ST 3 BYTES                               DCQRY010
01649 *                                                                 DCQRY010
           IF USER-ENTNAME (1 : 3) IS EQUAL TO EDIT-ENTNAME (1 : 3) 
01651          GO TO HAVE-ENT-NAM.                                      DCQRY010
01652  NEXT-CTL-ENT.                                                    DCQRY010
01653      ADD 1 TO ENT.                                                DCQRY010
           IF ENT IS LESS THAN 18 
01655          GO TO TYPE-LOOP.                                         DCQRY010
01656      GO TO NO-CTL-ENT.                                            DCQRY010
01657  HAVE-ENT-NAM.                                                    DCQRY010
01658      MOVE CTL-ENTRY-ID (ENT) TO HOLD-ENTTYPE.                     DCQRY010
01659      GO TO VALIDATE-TYPE-XIT.                                     DCQRY010
01660 *                                                                 DCQRY010
01661 *    CHECK FOR MATCH ON FULL NAME OR PLURAL                       DCQRY010
01662 *                                                                 DCQRY010
01663  CK-FULL-ENTNAME.                                                 DCQRY010
01664      IF ENTRY-NAME-WK EQUAL TO EDIT-ENT-NAME                      DCQRY010
01665          GO TO HAVE-ENT-NAM.                                      DCQRY010
           INSPECT EDIT-ENT-NAME REPLACING FIRST " " BY "S".
01667      IF ENTRY-NAME-WK EQUAL TO EDIT-ENT-NAME                      DCQRY010
01668          GO TO HAVE-ENT-NAM.                                      DCQRY010
01669      GO TO NEXT-CTL-ENT.                                          DCQRY010
01670 *                                                                 DCQRY010
01671 *    WORD IS NOT AN ENTRY TYPE                                    DCQRY010
01672 *                                                                 DCQRY010
01673  NO-CTL-ENT.                                                      DCQRY010
01674      MOVE "N" TO EDIT-SW.                                         DCQRY010
01675  VALIDATE-TYPE-XIT.                                               DCQRY010
01676      EXIT.                                                        DCQRY010
01677                                                                    DCQRY01
01678 ***********************************************************       DCQRY010
01679 *                                                                 DCQRY010
01680 *    VALIDATE CATEGORY NAME REFERENCE                             DCQRY010
01681 *                                                                 DCQRY010
01682 *        MUST  BE STANDARD NAME, PLURAL OF STANDARD NAME,         DCQRY010
01683 *            FIRST 3 BYTES OF STANDARD NAME OR A SPECIAL          DCQRY010
01684 *             NAME                                                DCQRY010
01685 *                                                                 DCQRY010
01686 *********************************************************         DCQRY010
01687  VALIDATE-CATEGORY.                                               DCQRY010
01688      MOVE HOLD-VALUE TO CAT-NAME-WK.                              DCQRY010
01689      MOVE 01 TO CAT.                                              DCQRY010
01690      MOVE "Y" TO EDIT-SW.                                         DCQRY010
01691 *                                                                 DCQRY010
01692 *    CHECK FOR SPECIAL NAMES                                      DCQRY010
01693 *                                                                 DCQRY010
           IF CAT-NAME-WK IS EQUAL TO "PEO" OR "PEOPLE" 
01695          MOVE "995" TO HOLD-CATEGORY                              DCQRY010
01696          GO TO VALIDATE-CATEGORY-XIT.                             DCQRY010
           IF CAT-NAME-WK IS EQUAL TO "ADM" OR "ADMINISTRATION" 
01698          MOVE "996" TO HOLD-CATEGORY                              DCQRY010
01699          GO TO VALIDATE-CATEGORY-XIT.                             DCQRY010
           IF CAT-NAME-WK IS EQUAL TO "CHA" OR "CHARACTERISTICS"
01701          MOVE "997" TO HOLD-CATEGORY                              DCQRY010
01702          GO TO VALIDATE-CATEGORY-XIT.                             DCQRY010
           IF CAT-NAME-WK IS EQUAL TO "COM" OR "COMPONENTS" 
01704          MOVE "998" TO HOLD-CATEGORY                              DCQRY010
01705          GO TO VALIDATE-CATEGORY-XIT.                             DCQRY010
           IF CAT-NAME-WK IS EQUAL TO "ALL" 
01707          MOVE "999" TO HOLD-CATEGORY                              DCQRY010
01708          GO TO VALIDATE-CATEGORY-XIT.                             DCQRY010
01709 *                                                                 DCQRY010
01710 *    CHECK FOR STANDARD NAME                                      DCQRY010
01711 *        RETRIEVE CATEGORY RECORD                                 DCQRY010
01712 *                                                                 DCQRY010
           MOVE 4 TO CON-KEY. 
01714      READ MAST3 INVALID KEY                                       DCQRY010
01715          GO TO CTL-CAT-ERR.                                       DCQRY010
01716  CAT-LOOP.                                                        DCQRY010
01717      MOVE SPACES TO EDIT-CAT-NAME.                                DCQRY010
           MOVE CTL-CAT-NAME (CAT) TO EDIT-CATNAME
           IF USER-CATNAME (4 : 1) IS NOT EQUAL TO SPACE
01720          GO TO CK-FULL-CATNAME.                                   DCQRY010
01721 *                                                                 DCQRY010
01722 *    CHECK FOR MATCH ON 1ST 3 BYTES                               DCQRY010
01723 *                                                                 DCQRY010
           IF USER-CATNAME (1 : 3) IS EQUAL TO EDIT-CATNAME (1 : 3) 
01725          GO TO HAVE-CAT-NAM.                                      DCQRY010
01726  NEXT-CTL-CAT.                                                    DCQRY010
01727      ADD 1 TO CAT.                                                DCQRY010
           IF CAT IS LESS THAN 32 
01729          GO TO CAT-LOOP.                                          DCQRY010
01730      GO TO NO-CAT-ENT.                                            DCQRY010
01731  HAVE-CAT-NAM.                                                    DCQRY010
01732      MOVE CTL-CAT-ID (CAT) TO HOLD-CATEGORY                       DCQRY010
01733      GO TO VALIDATE-CATEGORY-XIT.                                 DCQRY010
01734 *                                                                 DCQRY010
01735 *    CHECK FOR MATCH ON FULL NAME OR PLIRAL                       DCQRY010
01736 *                                                                 DCQRY010
01737  CK-FULL-CATNAME.                                                 DCQRY010
01738      IF CAT-NAME-WK EQUAL TO EDIT-CAT-NAME                        DCQRY010
01739          GO TO HAVE-CAT-NAM.                                      DCQRY010
           INSPECT EDIT-CAT-NAME REPLACING FIRST " " BY "S".
01741      IF CAT-NAME-WK EQUAL TO EDIT-CAT-NAME                        DCQRY010
01742          GO TO HAVE-CAT-NAM.                                      DCQRY010
01743      GO TO NEXT-CTL-CAT.                                          DCQRY010
01744 *                                                                 DCQRY010
01745 *     WORD IS NOT A CATEGORY NAME                                 DCQRY010
01746 *                                                                 DCQRY010
01747  NO-CAT-ENT.                                                      DCQRY010
01748      MOVE "N" TO EDIT-SW.                                         DCQRY010
01749  VALIDATE-CATEGORY-XIT.                                           DCQRY010
01750      EXIT.                                                        DCQRY010
01751                                                                    DCQRY01
01752 ******************************************************************DCQRY010
01753 *    STACK ERRORS IN TABLE - ERROR IS IN ERROR-CODE              *DCQRY010
01754 ******************************************************************DCQRY010
01755  ERROR-RTN.                                                       DCQRY010
01756      ADD 1 TO ERROR-COUNT.                                        DCQRY010
01757      IF ERROR-COUNT GREATER THAN 20                               DCQRY010
01758          GO TO ERROR-RTN-XIT.                                     DCQRY010
01759      MOVE ERROR-CODE TO ERROR-BUILD (ERROR-COUNT).                DCQRY010
01760  ERROR-RTN-XIT.                                                   DCQRY010
01761      EXIT.                                                        DCQRY010
01762  CTL-ENTRY-ERR.                                                   DCQRY010
01763      MOVE "03" TO ERROR-CODE.                                     DCQRY010
01764      PERFORM ERROR-RTN THRU ERROR-RTN-XIT.                        DCQRY010
01765      GO TO EDIT-END.                                              DCQRY010
01766  CTL-CAT-ERR.                                                     DCQRY010
01767      MOVE "07" TO ERROR-CODE.                                     DCQRY010
01768      PERFORM ERROR-RTN THRU ERROR-RTN-XIT.                        DCQRY010
01769      GO TO EDIT-END.                                              DCQRY010
