Compression Program ("COMPRESSION.SQL")
----------------------------------------------------

Description:

The compression program uses the manager question, jump, and the frequency total, count, and jump tables to "compress"
out questions from the complete set of data into a subset of relevant data items that will eventually be released to the 
public. Two tables are created: a table of compiled information about each manager question including it's
compression "status", and a table containing the paths from each question (default next question and jumps).

The "&n" symbol used below signifies a "substitution parameter" within the compression program.


Tables used (program=COMPRESSION.SQL):

-- & 5 = QUESTION TABLE				   Manager question table.
-- & 6 = JUMP TABLE				   Manager jumps table.
-- & 7 = FREQ_TOTAL TABLE			   Frequency total table.
-- & 8 = FREQ_COUNT TABLE			   Frequency count table.
-- & 9 = FREQ_JUMP TABLE			   Frequency jumps table.

Option Parameters (program=COMPRESSION.SQL):

-- & 1 = REMOVE_NODATA/NOREMOVE_NODATA             Compress out questions which are all missing regardless of the print
                                                         flag status, or, leave in all missing questions.
-- & 2 = FORCE_OUT/NOFORCE_OUT                     After compression has completed, force out questions which have the
                                                         print flag turned OFF.

Tables created (program=COMPRESSION.SQL):

-- & 3 = CMP_QNAME TABLE                            This table is the main output table of the compression program. It
                                                         contains one row for each qname in the manager question table.
                                                         For each question, information such as compression status, print
                                                         flag status, whether the question exists in the data (or is all
                                                         missing, as well as looping information, is maintained in this
                                                         table.
-- & 4 = CMP_NEXT_TABLE                             This table contains the "branches" for each question which has NOT
                                                         been compressed out. So, each manager question not compressed out
                                                         should have at least one record here, and may have more, depending
                                                         on whether there were jumps in addition to a default next question.

CMP_QNAME Oracle description:

     SQLWKS> desc cmp_qname_1998
     Column Name                    Null?    Type
     ------------------------------ -------- ----
     QNAME                                   VARCHAR2(75)  	Manager question name.
     QNUM                                    NUMBER(8)     	Manager question number.
     QORDER                                  VARCHAR2(25)	Manager qorder - order which questions appear in the manager.
     TYPE                                    NUMBER(2)		Question "type" from manager (1=select option, etc).
     EXISTING                                NUMBER(1)		Status of question in data, 1=exists, 0=all missing.
     QPRINT                                  VARCHAR2(2)	Documentation print flag status from manager, T=ON, F=OFF.
     STATUS                                  NUMBER(2)		Compression status of question, 1=included, 2=uncompressable, -2=compressed out, -3=forced out.
     SECURITY                                VARCHAR2(2)	Security from the manager (B=Public, V=Private, etc).
     TOTAL                                   NUMBER(15)		The number of responses found in the data for this question.
     LOOP_STR                                VARCHAR2(50)	A string which represents all loops in which this question is found.
     LOOP_NUM                                NUMBER(4)		The loop "number" which this question belongs to (represents inner most loop in nested loops).
     LOOP_MARK                               VARCHAR2(5)        This field contains "START" if this question is the beginning question of a loop,
                                                                     "END" if this question is the last question in the loop, and "NONE" if the
                                                                     question is both the START and the END (a loop of 1 question).
     LOOP_MAX                                NUMBER(2)          This field contains the maximum number of loops to document, if a limit has been imposed. 
                                                                     The limit comes from a phrase on the REPEAT manager question within the comment 
                                                                     field: /* MAX_LOOP_TO_DOC=10 */, for example.

CMP_NEXT Oracle description:

     SQLWKS> desc cmp_next_1998
     Column Name                    Null?    Type
     ------------------------------ -------- ----
     QNAME                                   VARCHAR2(75)	Manager question name.
     JUMPMIN                                 NUMBER(10)		Jump minimum - will be NULL if this is a default next branch.
     JUMPMAX                                 NUMBER(10)  	Jump maximum - will be NULL if this is a default next branch.
     FREQ_COUNT                              NUMBER(10)		The count of the cases which took this branch.
     NEXTNAME                                VARCHAR2(75)	The question name which this branch goes to.


Sample rows from CMP_QNAME table:

     SQLWKS> select * from cmp_qname_1998
          2> order by qorder
          3> 
     QNAME                             QNUM       QORDER         TYPE       EXISTING   QP STATUS     SE TOTAL      LOOP_STR            LOOP_NUM   LOOP_ LOOP_MAX  
     --------------------------------- ---------- -------------- ---------- ---------- -- ---------- -- ---------- ------------------- ---------- ----- ----------
     YINTDATE                               25768 Y00-000C                3          1 T           1 B        8386                              0                0
     YHHI-100                               22926 Y00-001                 6          1 F          -2 B        8386                              0                0
     YHHI-150                               30704 Y00-001B                6          1 F          -2 B        8386                              0                0
     YHHI-200                               22927 Y00-002                 6          1 F          -2 B        8386                              0                0
     YHHI-250                               25599 Y00-002Y                6          1 F          -2 B        8386                              0                0
     YHHI-300                               22928 Y00-003                12          1 F          -2 B        8386                              0                0
     YHHI-310                               25632 Y00-003A               12          1 F          -2 B        8386                              0                0
     YHHI-320                               25625 Y00-003B               12          1 F          -2 B        8386                              0                0
     YHHI-350                               25624 Y00-003N               12          1 F          -2 B        8386                              0                0
     YHHI-400                               22929 Y00-004                10          1 T           1 B        8386                              0                0
     YHHI-500                               22930 Y00-005                12          1 F          -2 B        8386                              0                0
     YHHI-520                               22931 Y00-006                 6          1 F          -2 B        8386                              0                0
     YHHI-550                               22932 Y00-007                 6          1 F          -2 B        8386                              0                0
     YHHI-560                               23938 Y00-008                 6          1 F          -2 B        8386                              0                0
     YHHI-570                               23939 Y00-009                 6          1 F          -2 B        8386                              0                0
     YHHI-572                               25669 Y00-009B                6          1 F          -2 B        8386                              0                0
     YHHI-574                               25670 Y00-009D                6          1 F          -2 B        8386                              0                0
     YHHI-576                               25671 Y00-009F                6          1 F          -2 B        8386                              0                0
     YHHI-578                               25672 Y00-009H               10          1 F          -2 B        8386                              0                0
     YHHI-580                               25673 Y00-009J               10          1 F          -2 B        8386                              0                0
     YHHI-582                               25674 Y00-009L               10          1 F          -2 B        8386                              0                0
     YHHI-600                               22933 Y00-010                12          1 F          -2 B        8386                              0                0
     YHHI-700                               22934 Y00-011                12          1 F          -2 B        8386                              0                0
     YHHI-900                               22936 Y00-012                12          1 F          -2 B        8386                              0                0
     YHHI-1100                              22938 Y00-013                12          1 F          -2 B        8386                              0                0
     YHHI-1200                              22939 Y00-014                 7          0 F          -2 B                                          0                0
     YHHI-1450                              22937 Y00-017                12          1 F          -2 B        8386                              0                0
     YHHI-1455                              25675 Y00-017B                6          1 F          -2 B        8386                              0                0
     YHHI-1460                              25676 Y00-017D                6          1 F          -2 B        8386                              0                0
     YHHI-1465                              25677 Y00-017F                6          1 F          -2 B        8386                              0                0
     YHHI-1470                              25678 Y00-017H                6          1 F          -2 B        8386                              0                0
     YHHI-1475                              25679 Y00-017J                6          1 F          -2 B        8386                              0                0
     YHHI-1500-LOOP-BEGIN                   22942 Y00-018                12          1 F          -2 B       38579 ,001,                        1                0
     YHHI-1600                              22943 Y00-019                12          1 F          -2 B       38579 ,001,                        1                0
     YHHI-1700                              22944 Y00-020                12          1 F          -2 B       38579 ,001,                        1                0
     YHHI-1800                              22945 Y00-021                12          1 F          -2 B       38579 ,001,                        1                0
     YHHI-1840                              23913 Y00-022                 6          1 F          -2 B       38579 ,001,                        1                0
     YHHI-1860                              23914 Y00-023                 6          1 F          -2 B       37927 ,001,                        1                0
     YHHI-1870                              23960 Y00-024                 1          1 F          -2 B         652 ,001,                        1                0
     YHHI-1880                              23915 Y00-025                10          1 F          -2 B         426 ,001,                        1                0
     YHHI-1885                              25667 Y00-025B               12          1 F          -2 B         226 ,001,                        1                0
     YHHI-1900                              22946 Y00-026                12          1 F          -2 B       38579 ,001,                        1                0
     YHHI-2000                              22947 Y00-027                 1          1 F          -2 B       38579 ,001,                        1                0
     YHHI-2005                              30731 Y00-027A                1          1 F          -2 B       13351 ,001,                        1                0
     YHHI-2010                              30730 Y00-027B               12          1 F          -2 B       13351 ,001,                        1                0
     YHHI-2100                              22948 Y00-028                12          1 F          -2 B       13351 ,001,                        1                0
     YHHI-2200                              22949 Y00-029                10          1 F          -2 B       13351 ,001,                        1                0
     YHHI-2600                              23971 Y00-030                 1          1 F          -2 B       25228 ,001,                        1                0
     YHHI-2700                              22954 Y00-031                12          1 F          -2 B       16416 ,001,                        1                0
     YHHI-2800                              22955 Y00-032                10          1 F          -2 B       16416 ,001,                        1                0
     YHHI-2900-LOOP-END                     22956 Y00-033                12          1 F          -2 B       38579 ,001,                        1                0
     YHHI-2950                              25415 Y00-034                12          1 F          -2 B        8386                              0                0
     YHHI-3000                              22957 Y00-035                12          1 F          -2 B        8386                              0                0
     YHHI-3200                              22959 Y00-036                12          1 F          -2 B        8386                              0                0
     YHHI-3500                              22962 Y00-037                 1          1 T           1 B        8386                              0                0
     YHHI-3600                              22963 Y00-038                 2          1 T           1 B        2849                              0                0
     YHHI-3700                              22964 Y00-039                 1          1 T           1 B        2849                              0                0
     YHHI-3800-LOOP-BEGIN                   22965 Y00-040                12          1 F          -2 B        1482 ,002,                        2                0
     YHHI-3900                              22966 Y00-041                12          1 F          -2 B        1482 ,002,                        2                0
     YHHI-4000                              22967 Y00-042                14          1 F          -2 B         395 ,002,                        2                0
     YHHI-4100                              22968 Y00-043                 3          1 T           1 B        1482 ,002,                        2 START          0
     YHHI-4200                              22969 Y00-044                 1          1 T           1 B        1482 ,002,                        2                0
     YHHI-4300-LOOP-END                     22970 Y00-045                12          1 T           1 B        1482 ,002,                        2 END            0
     YHHI-4400                              22971 Y00-046                 1          1 T           1 B        8386                              0                0
     YHHI-4505                              24167 Y00-047                 1          1 T           1 B         195                              0                0
     YHHI-4510                              22972 Y00-048                12          1 F          -2 B        8386                              0                0
     YHHI-4520                              25417 Y00-049                12          1 F          -2 B        8386                              0                0
     YHHI-4530                              25418 Y00-050                12          1 F          -2 B        8386                              0                0
     YHHI-4540                              25419 Y00-051                12          1 F          -2 B        8386                              0                0
     YHHI-4550                              25420 Y00-052                12          1 F          -2 B        8386                              0                0
     YHHI-4560                              25428 Y00-053                12          1 F          -2 B        8386                              0                0
     YHHI-4600                              22973 Y00-054                 1          1 T           1 B        8386                              0                0
     YHHI-4700                              22974 Y00-055                 7          0 F          -2 B                                          0                0
     YHHI-4800                              25491 Y00-055B               12          1 F          -2 B        8025                              0                0
     YHHI-4900                              22976 Y00-056                12          1 F          -2 B        8025                              0                0
     YHHI-5000                              22977 Y00-057                12          1 F          -2 B        8025                              0                0
     YHHI-5100                              22978 Y00-058                12          1 F          -2 B        8025                              0                0
     YHHI-5300                              22980 Y00-060                12          1 F          -2 B        8025                              0                0
     YHHI-5400                              22981 Y00-061                12          1 F          -2 B        8025                              0                0
     YHHI-5450                              25635 Y00-061B               12          1 F          -2 B        8025                              0                0
     YHHI-5500-LOOP-BEGIN                   22982 Y00-062                12          1 F          -2 B       13351 ,003,                        3                0
     YHHI-5510                              25770 Y00-062A                2          1 F          -2 B       13351 ,003,                        3                0
     YHHI-5550                              25479 Y00-062B               12          1 F          -2 B       13351 ,003,                        3                0
     YHHI-5600                              22983 Y00-063                12          1 F          -2 B       13351 ,003,                        3                0
     YHHI-5700                              22984 Y00-064                12          1 F          -2 B       13351 ,003,                        3                0
     YHHI-5800                              22985 Y00-065                 1          1 T           1 B       13351 ,003,                        3 START          0
     YHHI-6000                              22987 Y00-066                 2          1 F          -2 B       13351 ,003,                        3                0
     YHHI-6100                              22988 Y00-067                12          1 F          -2 B       13351 ,003,                        3                0
     YHHI-6300                              22990 Y00-068                12          1 F          -2 B       13351 ,003,                        3                0
     YHHI-6400                              22991 Y00-069                12          1 F          -2 B       13351 ,003,                        3                0
     YHHI-6500                              22992 Y00-070                12          1 F          -2 B       13351 ,003,                        3                0
     YHHI-6600                              22993 Y00-071                12          1 F          -2 B       13351 ,003,                        3                0
     YHHI-6800                              22995 Y00-073                12          1 F          -2 B       13351 ,003,                        3                0
     YHHI-7000                              22997 Y00-074                12          1 F          -2 B       13351 ,003,                        3                0
     YHHI-7100                              22998 Y00-075                 1          1 T           1 B       13351 ,003,                        3                0
     YHHI-7200                              22999 Y00-076                -3          1 T           1 B         280 ,003,                        3                0
     YHHI-7300                              23000 Y00-077                12          1 F          -2 B         280 ,003,                        3                0
     YHHI-7400                              23001 Y00-078                12          1 F          -2 B         280 ,003,                        3                0
     YHHI-7600                              23003 Y00-079                12          1 F          -2 B         280 ,003,                        3                0
     YHHI-7700                              23004 Y00-080                12          1 F          -2 B         280 ,003,                        3                0
     YHHI-7900                              23006 Y00-082                12          1 F          -2 B         280 ,003,                        3                0
     YHHI-8100                              23008 Y00-083                12          1 F          -2 B         280 ,003,                        3                0
     YHHI-8400                              23011 Y00-084                 1          1 T           1 B         280 ,003,                        3                0
     YHHI-8500                              23012 Y00-085                 5          1 T           1 V         152 ,003,                        3                0
     YHHI-8600                              23013 Y00-086                 1          1 T           1 B         280 ,003,                        3                0
     YHHI-8700                              23014 Y00-087                 1          1 T           1 B          94 ,003,                        3                0
     YHHI-8710                              24040 Y00-088                12          1 F          -2 B          94 ,003,                        3                0
     YHHI-8720                              24041 Y00-089                12          1 F          -2 B          94 ,003,                        3                0
     YHHI-8800                              23015 Y00-090                12          1 F          -2 B          94 ,003,                        3                0
     YHHI-8900                              23016 Y00-091                12          1 F          -2 B          94 ,003,                        3                0
     YHHI-9000                              23017 Y00-092                12          1 F          -2 B          94 ,003,                        3                0
     YHHI-9100                              23018 Y00-093                12          1 F          -2 B          94 ,003,                        3                0
     YHHI-9200                              23019 Y00-094                12          1 F          -2 B          94 ,003,                        3                0
     YHHI-9500                              23022 Y00-095                12          1 F          -2 B          94 ,003,                        3                0
     YHHI-9550                              25576 Y00-095B               12          1 F          -2 B         280 ,003,                        3                0
     YHHI-9600-LOOP-BEGIN                   23023 Y00-096                12          1 F          -2 B        1400 ,003,004,                    4                0
     YHHI-9700                              23024 Y00-097                 1          1 F          -2 B        1400 ,003,004,                    4                0
     YHHI-9800-LOOP-END                     23025 Y00-098                12          1 T           1 B        1400 ,003,004,                    4 NONE           0
     YHHI-9900                              23026 Y00-099                 1          1 T           1 B         280 ,003,                        3                0
     YHHI-10000                             23027 Y00-100                12          1 F          -2 B         134 ,003,                        3                0
     YHHI-10010                             25759 Y00-100B               12          1 F          -2 B         134 ,003,                        3                0
     YHHI-10100                             23028 Y00-101                 1          1 T           1 B         146 ,003,                        3                0
     YHHI-10200                             23029 Y00-102                12          1 F          -2 B          50 ,003,                        3                0
     YHHI-10210                             25760 Y00-102B               12          1 F          -2 B          50 ,003,                        3                0
     YHHI-10300                             23030 Y00-103                 1          1 T           1 B          96 ,003,                        3                0
     YHHI-10400                             23031 Y00-104                12          1 F          -2 B           2 ,003,                        3                0
     YHHI-10410                             25761 Y00-104B               12          1 F          -2 B           2 ,003,                        3                0
     YHHI-10500                             23032 Y00-105                 1          1 T           1 B          94 ,003,                        3                0
     YHHI-10600                             23033 Y00-106                12          1 F          -2 B       13163 ,003,                        3                0
     YHHI-10610                             25764 Y00-106B               12          1 F          -2 B       13163 ,003,                        3                0
     YHHI-10700                             23034 Y00-107                 1          1 T           1 B       13163 ,003,                        3                0
     YHHI-10800                             23035 Y00-108                12          1 F          -2 B       13125 ,003,                        3                0
     YHHI-11200                             23039 Y00-109                12          1 F          -2 B          38 ,003,                        3                0
     YHHI-11300                             23040 Y00-110                 1          1 T           1 B           2 ,003,                        3                0
     YHHI-11400                             23041 Y00-111                12          1 F          -2 B           2 ,003,                        3                0
     YHHI-11410                             25765 Y00-111B               12          1 F          -2 B           2 ,003,                        3                0
     YHHI-11500                             23042 Y00-112                 1          1 T           1 B           2 ,003,                        3                0
     YHHI-11600                             23043 Y00-113                12          1 F          -2 B           1 ,003,                        3                0
     YHHI-12000                             23047 Y00-114                12          1 F          -2 B           1 ,003,                        3                0
     YHHI-12100                             23048 Y00-115                 1          0 T          -2 B             ,003,                        3                0
     YHHI-12200                             23049 Y00-116                12          0 F          -2 B             ,003,                        3                0
     YHHI-12210                             25767 Y00-116B               12          0 F          -2 B             ,003,                        3                0
     YHHI-12300                             23050 Y00-117                 1          0 F          -2 B             ,003,                        3                0
     YHHI-12400                             23051 Y00-118                12          0 F          -2 B             ,003,                        3                0
     YHHI-12800                             23055 Y00-119                12          0 F          -2 B             ,003,                        3                0
     YHHI-12890                             23990 Y00-120                12          1 F          -2 B       13312 ,003,                        3                0
     YHHI-12892                             25480 Y00-120B                1          1 T           1 B       13312 ,003,                        3                0
     YHHI-12894-LOOP-BEGIN                  25481 Y00-120D               12          1 F          -2 B        5323 ,003,005,                    5                0
     YHHI-12895                             25437 Y00-121                 1          1 T           1 B        5323 ,003,005,                    5 START          0
     YHHI-12899-LOOP-END                    25482 Y00-121Y               12          1 T           1 B        5323 ,003,005,                    5 END            0
     YHHI-12899C                            25483 Y00-121Z                1          1 T           1 B        5293 ,003,                        3                0
     YHHI-12900                             23056 Y00-122                 1          1 T           1 B       13295 ,003,                        3                0
     YHHI-12901                             25606 Y00-122B                1          1 T           1 B       13126 ,003,                        3                0
     YHHI-12901B                            25636 Y00-122C               12          1 F          -2 B        7882 ,003,                        3                0
     YHHI-12902                             25607 Y00-122D                1          1 T           1 B        7882 ,003,                        3                0
     YHHI-12903                             25609 Y00-122F               12          1 F          -2 B         719 ,003,                        3                0
     YHHI-12904                             25608 Y00-122G               12          1 F          -2 B          10 ,003,                        3                0
     YHHI-12905                             25492 Y00-122H               12          1 F          -2 B       13126 ,003,                        3                0
     YHHI-12910                             23988 Y00-123                 9          1 T           1 B         169 ,003,                        3                0
     YHHI-12911                             25427 Y00-124                 1          1 T           1 B         169 ,003,                        3                0
     YHHI-12911B                            25485 Y00-124B               12          1 F          -2 B         136 ,003,                        3                0
     YHHI-12912                             25429 Y00-125                10          1 F          -2 B         136 ,003,                        3                0
     YHHI-12917                             25421 Y00-126                 1          1 T           1 B          33 ,003,                        3                0
     YHHI-12918                             25422 Y00-127                 5          1 T           1 V          30 ,003,                        3                0
     YHHI-12920                             23989 Y00-128                 1          1 T           1 B         169 ,003,                        3                0
     YHHI-12925                             25423 Y00-129                 1          1 T           1 B         169 ,003,                        3                0
     YHHI-12926                             25424 Y00-130                 1          1 T           1 B          84 ,003,                        3                0
     YHHI-12927                             25486 Y00-130B               12          1 F          -2 B          65 ,003,                        3                0
     YHHI-12927B                            25487 Y00-130D               12          1 F          -2 B          19 ,003,                        3                0
     YHHI-12928                             25438 Y00-131                 1          1 T           1 B          84 ,003,                        3                0
     YHHI-12929                             25614 Y00-131B               12          1 F          -2 B          85 ,003,                        3                0
     YHHI-12930                             23991 Y00-132                 1          1 T           1 B         174 ,003,                        3                0
     YHHI-12940                             23992 Y00-133                -3          1 T           1 B          40 ,003,                        3                0
     YHHI-12940B                            25586 Y00-133A                1          1 T           1 B         186 ,003,                        3                0
     YHHI-12941                             25578 Y00-133B                1          1 T           1 B         169 ,003,                        3                0
     YHHI-12942                             25579 Y00-133D                1          1 T           1 B         104 ,003,                        3                0
     YHHI-12943                             25580 Y00-133F               12          1 F          -2 B          88 ,003,                        3                0
     YHHI-12943B                            25582 Y00-133G                1          1 T           1 B          88 ,003,                        3                0
     YHHI-12944                             25581 Y00-133H               12          1 F          -2 B          23 ,003,                        3                0
     YHHI-12945                             25584 Y00-133J               12          1 F          -2 B          81 ,003,                        3                0
     YHHI-12946                             25585 Y00-133L               12          1 F          -2 B          81 ,003,                        3                0
     YHHI-12947                             25616 Y00-133N               12          1 F          -2 B         104 ,003,                        3                0
     YHHI-12950                             23986 Y00-134                12          1 F          -2 B       13126 ,003,                        3                0
     YHHI-12960                             23987 Y00-135                 1          1 T           1 B       13126 ,003,                        3                0
     YHHI-12970                             25206 Y00-136                12          1 F          -2 B       11914 ,003,                        3                0
     YHHI-13000                             23057 Y00-137                12          1 F          -2 B       11914 ,003,                        3                0
     YHHI-13050                             23985 Y00-138                12          1 F          -2 B       11914 ,003,                        3                0
     YHHI-13060                             25583 Y00-138B                1          1 T           1 B       11914 ,003,                        3                0
     YHHI-13100                             23058 Y00-139                 1          1 T           1 B       11849 ,003,                        3                0
     YHHI-13120                             25205 Y00-140                12          1 F          -2 B       11231 ,003,                        3                0
     YHHI-13250                             23062 Y00-141                 1          1 T           1 B        1277 ,003,                        3                0
     YHHI-13260                             23063 Y00-142                -3          1 T           1 B        1648 ,003,                        3                0
     YHHI-13270                             25459 Y00-142B               12          1 F          -2 B        1999 ,003,                        3                0
     YHHI-13280                             25637 Y00-142D                1          1 T           1 B        1999 ,003,                        3                0
     YHHI-13400                             23061 Y00-144                12          1 F          -2 B        1381 ,003,                        3                0
     YHHI-13600                             25425 Y00-145                 1          1 T           1 B        1381 ,003,                        3                0
     YHHI-13610                             25617 Y00-145B                1          1 T           1 B        1134 ,003,                        3                0
     YHHI-13620                             23059 Y00-146                 1          1 T           1 B        1030 ,003,                        3                0
     YHHI-13640                             25426 Y00-147                 1          1 T           1 B         247 ,003,                        3                0
     YHHI-13650                             25596 Y00-147B               12          1 F          -2 B          37 ,003,                        3                0
     YHHI-13670                             25598 Y00-147F               12          1 F          -2 B          37 ,003,                        3                0
     YHHI-13700-LOOP-END                    23064 Y00-148                12          1 T           1 B       13351 ,003,                        3 END            0
     YHHI-13800                             23065 Y00-149                12          1 F          -2 B        8386                              0                0
     YHHI-14000                             23067 Y00-150                12          1 F          -2 B        8386                              0                0
     YHHI-14100                             23068 Y00-151                12          1 F          -2 B        8386                              0                0
     YHHI-14300                             23070 Y00-152                12          1 F          -2 B        8386                              0                0

Sample rows from CMP_NEXT table:

     SQLWKS> select * from cmp_next_1998
          2> where qname like 'YHHI%'
          3> 
     QNAME                               JUMPMIN    JUMPMAX    FREQ_COUNT NEXTNAME                
     ----------------------------------- ---------- ---------- ---------- ------------------------
     YHHI-10100                                                           YHHI-10300              
     YHHI-10100                                   1          1         50 YHHI-12892              
     YHHI-10300                                                           YHHI-10500              
     YHHI-10300                                   1          1          2 YHHI-12892              
     YHHI-10500                                                           YHHI-11300              
     YHHI-10500                                   1          1         92 YHHI-10700              
     YHHI-10700                                                           YHHI-13700-LOOP-END     
     YHHI-10700                                   1          1      13125 YHHI-12892              
     YHHI-11300                                                         2 YHHI-11500              
     YHHI-11500                                                           YHHI-13700-LOOP-END     
     YHHI-11500                                   1          1          1 YHHI-12892              
     YHHI-12892                                                           YHHI-12900              
     YHHI-12892                                   1          1       5293 YHHI-12895              
     YHHI-12895                                                           YHHI-12899-LOOP-END     
     YHHI-12899-LOOP-END                                                  YHHI-12899C             
     YHHI-12899C                                                          YHHI-12900              
     YHHI-12899C                                  1          1         17 YHHI-12930              
     YHHI-12900                                                           YHHI-12901              
     YHHI-12900                                   2          2        169 YHHI-12910              
     YHHI-12901                                                           YHHI-12960              
     YHHI-12901                                   1          1       7882 YHHI-12902              
     YHHI-12902                                                           YHHI-12960              
     YHHI-12910                                                           YHHI-12911              
     YHHI-12911                                                           YHHI-12917              
     YHHI-12911                                   1          1        136 YHHI-12920              
     YHHI-12917                                                           YHHI-12920              
     YHHI-12917                                   1          1         30 YHHI-12918              
     YHHI-12918                                                           YHHI-12920              
     YHHI-12920                                                           YHHI-12925              
     YHHI-12925                                                           YHHI-12930              
     YHHI-12925                                   1          1         84 YHHI-12926              
     YHHI-12926                                                           YHHI-12928              
     YHHI-12928                                                           YHHI-12930              
     YHHI-12928                                   1          1         12 YHHI-12940              
     YHHI-12930                                                           YHHI-12940B             
     YHHI-12930                                   1          1         28 YHHI-12940              
     YHHI-12940                                                           YHHI-12940B             
     YHHI-12940B                                                          YHHI-13700-LOOP-END     
     YHHI-12940B                                  1          1        169 YHHI-12941              
     YHHI-12941                                                           YHHI-12942              
     YHHI-12941                                   1          1         65 YHHI-12943B             
     YHHI-12942                                                           YHHI-12943B             
     YHHI-12942                                   1          1         81 YHHI-13280              
     YHHI-12943B                                                          YHHI-13280              
     YHHI-12943B                                  1          1         65 YHHI-13060              
     YHHI-12960                                                           YHHI-13250              
     YHHI-12960                                   1          1      11849 YHHI-13060              
     YHHI-13060                                                           YHHI-13100              
     YHHI-13060                                   1          1         65 YHHI-13700-LOOP-END     
     YHHI-13100                                                           YHHI-13700-LOOP-END     
     YHHI-13100                                   1          1        618 YHHI-13260              
     YHHI-13250                                                           YHHI-13260              
     YHHI-13250                                   0          0        247 YHHI-13280              
     YHHI-13260                                                           YHHI-13280              
     YHHI-13280                                                           YHHI-13600              
     YHHI-13280                                   1          1        618 YHHI-13700-LOOP-END     
     YHHI-13600                                                           YHHI-13610              
     YHHI-13600                                   1          1        247 YHHI-13640              
     YHHI-13610                                                           YHHI-13620              
     YHHI-13610                                   1          1        104 YHHI-13700-LOOP-END     
     YHHI-13620                                                           YHHI-13700-LOOP-END     
     YHHI-13640                                                           YHHI-13700-LOOP-END     
     YHHI-13700-LOOP-END                                                  YHHI-14950              
     YHHI-14950                                                           YHHI-16400              
     YHHI-14950                                   1          1       4867 YHHI-15400              
     YHHI-15400                                                           YHHI-16400              
     YHHI-16400                                                           YHHI-16800              
     YHHI-16800                                                           YHHI-38000              
     YHHI-16800                                   1          1       3765 YHHI-18200              
     YHHI-18200                                                           YHHI-18300              
     YHHI-18200                                   1          1        383 YHHI-19500              
     YHHI-18300                                                           YHHI-19400              
     YHHI-19400                                                           YHHI-20700              
     YHHI-19400                                   1          1       4339 YHHI-32150              
     YHHI-19500                                                           YHHI-20600              
     YHHI-20600                                                           YHHI-21700              
     YHHI-20600                                   1          1        364 YHHI-33450              
     YHHI-20700                                                           YHHI-23100              
     YHHI-21700                                                           YHHI-23200              
     YHHI-23100                                                           YHHI-23500              
     YHHI-23100                                   1          1        124 YHHI-23300              
     YHHI-23200                                                           YHHI-23600              
     YHHI-23200                                   1          1          6 YHHI-23400              
     YHHI-23300                                                           YHHI-23500              
     YHHI-23400                                                           YHHI-23600              
     YHHI-400                                                             YHHI-3500               
     YHHI-4100                                                            YHHI-4200               
     YHHI-4200                                                            YHHI-4300-LOOP-END      
     YHHI-4300-LOOP-END                                                   YHHI-4400               
     YHHI-4400                                                            YHHI-4600               
     YHHI-4400                                    5          7         39 YHHI-4505               
     YHHI-4400                                   10         11         22 YHHI-4505               
     YHHI-4400                                   14         14        134 YHHI-4505               
     YHHI-4505                                                            YHHI-4600               
     YHHI-4600                                                            YHHI-14950              
     YHHI-4600                                    1          1       8025 YHHI-5800               
     YHHI-5800                                                            YHHI-7100               
     YHHI-7100                                                            YHHI-7200               
     YHHI-7100                                    1          1      13071 YHHI-10700              
     YHHI-7200                                                            YHHI-8400               
     YHHI-8400                                                            YHHI-8600               
     YHHI-8400                                    1          1        152 YHHI-8500               
     YHHI-8500                                                            YHHI-8600               
     YHHI-8600                                                            YHHI-9800-LOOP-END      
     YHHI-8600                                    1          1         94 YHHI-8700               
     YHHI-8700                                                            YHHI-9800-LOOP-END      
     YHHI-9800-LOOP-END                                                   YHHI-9900               
     YHHI-9900                                                            YHHI-10100              
     YHHI-9900                                    1          1        134 YHHI-12892              

Compression batch file (to be run under SQL Plus) AS OF 10/13/1999:

     -- &1 = NODATA FLAG
     -- &2 = "FORCE_OUT" or "NOFORCE_OUT" - after compression, force out any PRINT=OFF questions
     -- &3 = CMP_QNAME TABLE
     -- &4 = CMP_NEXT_TABLE
     -- &5 = QUESTION TABLE
     -- &6 = JUMP TABLE
     -- &7 = FREQ_TRACK TABLE
     -- &8 = FREQ_COUNTER TABLE
     -- &9 = FREQ_JUMP TABLE

     SET TIME ON;
     SET ECHO ON;

     SPOOL D:\DOC_PROGS\COMPRESSION\COMP_NLSY97_RND2.LOG;
     START D:\DOC_PROGS\COMPRESSION\COMPRESSION.SQL REMOVE_NODATA NOFORCE_OUT CMP_QNAME_1998 CMP_NEXT_1998 QUESTION_1998 JUMP_1998 FREQ_TOTAL_1998 FREQ_COUNT_1998 FREQ_JUMP_1998;

     SPOOL D:\DOC_PROGS\COMPRESSION\COMP_NLSY97_RND2.ERRLOG;
     START D:\DOC_PROGS\COMPRESSION\COMPRESSION_CHECK.SQL REMOVE_NODATA NOFORCE_OUT CMP_QNAME_1998 CMP_NEXT_1998 QUESTION_1998 JUMP_1998 FREQ_TRACK_1998 FREQ_COUNT_1998 FREQ_JUMP_1998;

     SPOOL OFF;

Compression Program AS OF 10/13/1999:

     -- & 1 = NODATA FLAG
     -- & 2 = "FORCE_OUT" or "NOFORCE_OUT" - after compression, force out any PRINT=OFF questions
     -- & 3 = CMP_QNAME TABLE
     -- & 4 = CMP_NEXT_TABLE
     -- & 5 = QUESTION TABLE
     -- & 6 = JUMP TABLE
     -- & 7 = FREQ_TOTAL TABLE
     -- & 8 = FREQ_COUNT TABLE
     -- & 9 = FREQ_JUMP TABLE
     
     set echo on;
     
     -- set up portion of compression program
     --
     
     drop table &3;
     drop table &4;
     
     create table &3
      (qname   varchar2 (75),
       qnum    number (8),
       qorder  varchar2 (25),
       type    number (2),
       existing  number (1),
       qprint  varchar2 (2),
       status  number (2),
       security varchar2 (2),
       total   number (15),
       loop_str varchar2 (50),
       loop_num number (4),
       loop_mark varchar2 (5),
       loop_max number (2));
     create table &4
      (qname   varchar2 (75),
       jumpmin  number (10),
       jumpmax  number (10),
       freq_count number (10),
       nextname varchar2 (75));
     
     insert into &3 select qname, qnum, UPPER(qorder), qdoctype, 0, qprint, NULL, qvartype, NULL, NULL, 0, NULL, 0 from &5;
     update &3 set status=1 where qprint='T';
     update &3 set status=0 where qprint='F';
     update &3 set existing=1 where qname in (select distinct(MGR_qname) from &7);
     update &3 set type=-3 where qname in (select qname from &5 where qmarktype=3);
     
     -- SET TOTALS FOR DIFFERENT QUESTION TYPES (3=date, -3=markall, 14=multiple edit
     
     update &3 CQ set total=(select sum (all_total) from &7 FT where FT.MGR_qname=CQ.qname) where type <> 3 and type <> 14 and type <> -3;
     update &3 CQ set total=(select sum (all_total) from &7 FT where FT.MGR_qname=CQ.qname and 
                             substr (FT.DATA_qname,-2,2) = '~Y') where type=3;
     update &3 CQ set total=(select sum (all_total) from &7 FT where FT.MGR_qname=CQ.qname and 
                             substr (FT.DATA_qname,-6,6) = 
                                    (select max (substr (DATA_qname,-6,6)) from &7 where MGR_qname=CQ.qname))
                             where type=14 or type=-3;
     --
     
     delete from &3
            where qorder < (select min (qorder) from &3 where status=1);
     
     insert into &4 select qname,NULL,NULL,NULL,NULL from &3;
     
     update &4 CN
            set nextname=(select qdefnext from &5 Q where Q.qname=CN.qname);
     
     insert into &4 
            select CQ.qname, QJMPMIN, QJMPMAX, null, qjmpgoto from &3 CQ, &6 J, &5 Q
            where CQ.qnum = J.qnum and
            CQ.qname = Q.qname and
            J.qjmpgoto <> Q.qdefnext;
     
     update &4 CN
            set freq_count=(select SUM(COUNT) from &9 FJ where 
                (FJ.MGR_qname=CN.qname) and
                (CN.jumpmin = FJ.jumpmin) and (FJ.jumpmax = CN.jumpmax))
            where jumpmin is not null;
     
     COMMIT;
     
     CREATE INDEX ON &3 (QNAME);
     CREATE INDEX ON &4 (QNAME);
     CREATE INDEX ON &4 (NEXTNAME);
     
     COMMIT;
     
     -- begin actual compression portion
     
     DECLARE
     
           var_nodata       varchar2 (20) := '&1';
           VAR_FORCEOUT     VARCHAR2 (20) := '&2';
           VAR_QNAME        VARCHAR2 (75);
           VAR_NEXTNAME     VARCHAR2 (75);
           VAR_DEFNEXT      VARCHAR2 (75);
           VAR_QPRINT       VARCHAR2 (2);
           VAR_STATUS       NUMBER (2);
           VAR_ANY_JUMPS    NUMBER (3);
           VAR_COUNT        NUMBER (8);
           VAR_ANYLOOPS     NUMBER (10);
           VAR_COUNT_RECS   NUMBER (8);
           VAR_EXISTING     NUMBER (1);
           VAR_JUMPMIN      NUMBER (10);
           VAR_JUMPMAX      NUMBER (10);
           VAR_TOTAL        NUMBER (15);
           CHANGES_FLAG     NUMBER (1);
     
           VAR_LOOPNUM      NUMBER (5);
           VAR_LOOPNUMMAX   NUMBER (5);
           VAR_LOOPMARK     VARCHAR2 (8);
           VAR_LOOPSTR      VARCHAR2 (50);
           VAR_LOOPMAX      NUMBER (2);
           VAR_TEMPSTR      VARCHAR2 (5);
           VAR_POSITION     NUMBER (3);
           VAR_QORDER       VARCHAR2 (20);
           VAR_QTYPE        NUMBER (2);
           VAR_QTEXT        VARCHAR2 (32767);
           INDX             NUMBER (5);
     
           CURSOR CMP_QNAME_CURSOR IS 
                            SELECT QNAME,QPRINT,STATUS,EXISTING FROM &3
                            ORDER BY QORDER;
     
           CURSOR CMP_JUMP_CURSOR IS
                           SELECT QNAME, JUMPMIN, JUMPMAX, FREQ_COUNT, NEXTNAME FROM &4
                           WHERE JUMPMIN IS NOT NULL AND FREQ_COUNT IS NOT NULL AND FREQ_COUNT > 0;
     
           CURSOR CMP_NEXT_CURSOR IS
                           SELECT QNAME, JUMPMIN, JUMPMAX, FREQ_COUNT, NEXTNAME FROM &4
                           WHERE JUMPMIN IS NOT NULL AND QNAME IN
                           (SELECT QNAME FROM &3 WHERE STATUS <> 1);
     
           CURSOR CMP_MGR_CURSOR IS 
                          SELECT UPPER(QORDER),QTYPE,QTEXT FROM &5
                          ORDER BY UPPER (QORDER);
     
           CURSOR CMP_START_CURSOR IS
                            SELECT DISTINCT (SUBSTR (LOOP_STR,-5,5)) FROM &3
                            WHERE LOOP_MAX <> 0;
     
           CURSOR CMP_LOOP_CURSOR (VAR_LOOPSTR VARCHAR2) IS
                           SELECT QNAME, LOOP_STR FROM &3
                           WHERE INSTR (LOOP_STR, VAR_LOOPSTR) > 0;
     
     BEGIN
     
     /* fill in the loop columns on the qname compression table */
     
        SELECT COUNT(*) INTO VAR_ANYLOOPS FROM &7 WHERE INSTR (DATA_QNAME,'.0') > 0 AND DATA_QNAME <> MGR_QNAME;
     
        IF (VAR_ANYLOOPS > 0) THEN
     
            VAR_LOOPNUM := 0;
            VAR_LOOPNUMMAX := 0;
            VAR_LOOPSTR := '';
     
            OPEN CMP_MGR_CURSOR;
            LOOP
                FETCH CMP_MGR_CURSOR INTO VAR_QORDER, VAR_QTYPE, VAR_QTEXT;
                EXIT WHEN CMP_MGR_CURSOR%NOTFOUND;
            
                IF (VAR_QTYPE = 12) THEN
                    VAR_QTEXT := LTRIM (VAR_QTEXT);
     
                    IF (SUBSTR (VAR_QTEXT,1,6) = 'REPEAT') THEN
                            VAR_LOOPNUM := VAR_LOOPNUMMAX + 1;
                            VAR_LOOPNUMMAX := VAR_LOOPNUM;
                            VAR_LOOPSTR := RTRIM (REPLACE (REPLACE (VAR_LOOPSTR || ',' || TO_CHAR (VAR_LOOPNUM,'099') || ',',' '),',,',','));
     
                            IF (INSTR (VAR_QTEXT,'MAXLOOPS_TO_DOC=') > 0) THEN
                                VAR_TEMPSTR := LTRIM (RTRIM (SUBSTR (VAR_QTEXT,INSTR (VAR_QTEXT,'MAXLOOPS_TO_DOC=') + 16,3)));
                                VAR_TEMPSTR := REPLACE (REPLACE (VAR_TEMPSTR,'*'),' ');
                                VAR_LOOPMAX := TO_NUMBER (VAR_TEMPSTR);
                            ELSE
                                VAR_LOOPMAX := 0;
                            END IF;
                    END IF;
                END IF;
     
                IF (VAR_LOOPNUM = 0) THEN
                    VAR_LOOPMAX := 0;
                ELSIF (VAR_LOOPMAX IS NULL) THEN
                    VAR_LOOPMAX := 0;
                END IF;
     
                UPDATE &3 SET LOOP_NUM = VAR_LOOPNUM, LOOP_STR = VAR_LOOPSTR, LOOP_MAX = VAR_LOOPMAX 
                          WHERE QORDER=VAR_QORDER;
     
                IF (VAR_QTYPE = 12) AND (SUBSTR (VAR_QTEXT,1,5) = 'UNTIL') THEN
                    IF (LENGTH (VAR_LOOPSTR) < 6) THEN
                        VAR_LOOPNUM := 0;
                        VAR_LOOPSTR := '';
                    ELSE
                        VAR_LOOPSTR := RTRIM (SUBSTR (VAR_LOOPSTR,1,LENGTH (VAR_LOOPSTR) - 4));
                        VAR_LOOPNUM := TO_NUMBER (SUBSTR (VAR_LOOPSTR,-4,3));
                    END IF;
                END IF;
      
                COMMIT;
            END LOOP;
            CLOSE CMP_MGR_CURSOR;
     
        END IF;
     
     /* if any loop documentation maximums were found, loop through and delete extra freqs */
     
        SELECT COUNT(*) INTO VAR_COUNT FROM &3 WHERE LOOP_MAX > 0;
        IF (VAR_COUNT > 0) THEN
     
            OPEN CMP_START_CURSOR;
            LOOP
                FETCH CMP_START_CURSOR INTO VAR_TEMPSTR;
                EXIT WHEN CMP_START_CURSOR%NOTFOUND;
     
                SELECT LOOP_MAX INTO VAR_LOOPMAX FROM &3 WHERE QORDER=
                       (SELECT MIN(QORDER) FROM &3 WHERE SUBSTR (LOOP_STR,-5,5) = VAR_TEMPSTR);
     
                OPEN CMP_LOOP_CURSOR (VAR_TEMPSTR);
                LOOP
                    FETCH CMP_LOOP_CURSOR INTO VAR_QNAME, VAR_LOOPSTR;
                    EXIT WHEN CMP_LOOP_CURSOR%NOTFOUND;
     
                    VAR_POSITION := INSTR (VAR_LOOPSTR, VAR_TEMPSTR);
     
                    IF (VAR_POSITION = 1) THEN
                        VAR_POSITION := 2;
                    ELSIF (VAR_POSITION = 5) THEN
                        NULL;
                    ELSIF (VAR_POSITION = 9) THEN
                        VAR_POSITION := 8;
                    ELSIF (VAR_POSITION = 13) THEN
                        VAR_POSITION := 11;
                    END IF;
     
                    DELETE FROM &7 WHERE MGR_QNAME = VAR_QNAME AND INSTR (DATA_QNAME,'.') > 0 AND
                                   SUBSTR (DATA_QNAME, INSTR (DATA_QNAME,'.') - 1 + VAR_POSITION, 2) > REPLACE (TO_CHAR (VAR_LOOPMAX,'09'),' ');
                END LOOP;
         
                CLOSE CMP_LOOP_CURSOR;
                COMMIT;
     
            END LOOP;
            CLOSE CMP_START_CURSOR;
     
            DELETE FROM &8 WHERE DATA_QNAME NOT IN (SELECT DATA_QNAME FROM &7);
     
        END IF;
     
     /* if remove_nodata questions was chosen, set status to -1 where the qname is no data. Otherwise,
        set qprint=F questions to -1 where they have no data (this makes it easier to compress out). */
     
        IF (VAR_NODATA = 'REMOVE_NODATA') THEN
            UPDATE &3 
                   SET STATUS = -1 
                   WHERE EXISTING=0;
        ELSE
            UPDATE &3 
                   SET STATUS = -1 
                   WHERE QPRINT='F' AND
                         EXISTING=0;
        END IF;
     
     /* delete the jumps associated with a no data question */
     
        DELETE FROM &4 WHERE JUMPMIN IS NOT NULL AND QNAME IN (SELECT QNAME FROM &3 WHERE STATUS=-1);
     
     /* delete jumps which nobody took (have a freq of 0) */
     
        DELETE FROM &4 WHERE JUMPMIN IS NOT NULL AND FREQ_COUNT IS NOT NULL AND FREQ_COUNT=0;
     
     /* if everyone went to one jump, delete the default next and switch the jump to be the default */
     
        OPEN CMP_JUMP_CURSOR;
     
        LOOP
            FETCH CMP_JUMP_CURSOR INTO VAR_QNAME, VAR_JUMPMIN, VAR_JUMPMAX, VAR_COUNT, VAR_NEXTNAME;
            EXIT WHEN CMP_JUMP_CURSOR%NOTFOUND;
     
            SELECT TOTAL INTO VAR_TOTAL FROM &3 WHERE QNAME=VAR_QNAME;
     
            IF (VAR_COUNT = VAR_TOTAL) THEN
                DELETE FROM &4 WHERE QNAME=VAR_QNAME AND 
                               ((JUMPMIN IS NULL) OR ((JUMPMIN <> VAR_JUMPMIN) AND (FREQ_COUNT <> VAR_COUNT)));
                UPDATE &4 SET NEXTNAME=VAR_NEXTNAME, JUMPMIN=NULL, JUMPMAX=NULL 
                       WHERE QNAME=VAR_QNAME AND JUMPMIN=VAR_JUMPMIN AND JUMPMAX=VAR_JUMPMAX;
            
            END IF;
        END LOOP;
        CLOSE CMP_JUMP_CURSOR;
     
     /* start compression main body */
     
        CHANGES_FLAG := 1;
     
        WHILE CHANGES_FLAG = 1 
        LOOP
     
           CHANGES_FLAG := 0;
     
     /* start looping through the comp_qname table */
     
           OPEN CMP_QNAME_CURSOR;
           
           LOOP
                FETCH CMP_QNAME_CURSOR INTO VAR_QNAME, VAR_QPRINT, VAR_STATUS, VAR_EXISTING;
                EXIT WHEN CMP_QNAME_CURSOR%NOTFOUND;
     
     
                IF (VAR_STATUS <> -2) THEN
     
                    SELECT COUNT(*) INTO VAR_ANY_JUMPS FROM &4 WHERE QNAME=VAR_QNAME AND JUMPMIN IS NOT NULL;
      
     /* delete any jumps which are the same as the default next */
     
                    IF (VAR_ANY_JUMPS > 0) THEN
     
                        SELECT NEXTNAME INTO VAR_DEFNEXT FROM &4 WHERE QNAME=VAR_QNAME AND JUMPMIN IS NULL;
                        
                        SELECT COUNT(*) INTO VAR_COUNT_RECS FROM &4 WHERE QNAME=VAR_QNAME AND JUMPMIN IS NOT NULL AND
                               NEXTNAME = VAR_DEFNEXT;
     
                        IF (VAR_COUNT_RECS > 0) THEN
                            DELETE FROM &4 WHERE QNAME=VAR_QNAME AND JUMPMIN IS NOT NULL AND
                                   NEXTNAME = VAR_DEFNEXT;
                            CHANGES_FLAG := 1;
                        END IF;
     
                    END IF;
     
     /* if no jumps, then adjust the next table to drop out this entry */
     
                    IF ((VAR_ANY_JUMPS = 0) AND (VAR_STATUS <> 1)) THEN
     
                        SELECT NEXTNAME INTO VAR_NEXTNAME FROM &4 WHERE QNAME=VAR_QNAME AND JUMPMIN IS NULL;
     
                        UPDATE &4 SET NEXTNAME=VAR_NEXTNAME WHERE NEXTNAME=VAR_QNAME;
                        DELETE FROM &4 WHERE QNAME=VAR_QNAME;
     
                        UPDATE &3 SET STATUS=-2 WHERE QNAME=VAR_QNAME;
     
                        CHANGES_FLAG := 1;
     
     /* otherwise, this is an uncompressable question this time through - set the status to 2 */
     
                    ELSIF (VAR_STATUS <> 1) THEN
     
                        UPDATE &3 SET STATUS=2 WHERE QNAME=VAR_QNAME;
     
                    END IF;
                END IF;
           END LOOP;
     
           COMMIT;
           CLOSE CMP_QNAME_CURSOR;
     
     /* end updates */
     
        END LOOP;
     
     /* if force_out option was chosen, set the uncompressables to a code of -3 */
     
        IF (VAR_FORCEOUT = 'FORCE_OUT') THEN
            UPDATE &3 SET STATUS = -3 WHERE STATUS = 2;
            COMMIT;
        END IF;
     
     /* set the loop markers on the compressed start and end of each loop */
     
        IF (VAR_ANYLOOPS > 0) THEN
            FOR INDX IN 1..VAR_LOOPNUMMAX LOOP
                UPDATE &3 SET LOOP_MARK = 'START' WHERE QORDER = (SELECT MIN (QORDER) FROM &3 WHERE INSTR (LOOP_STR,REPLACE (TO_CHAR (INDX,'099'),' ')) > 0 AND
                                                       STATUS >= 1);
                UPDATE &3 SET LOOP_MARK = 'NONE' WHERE QORDER = (SELECT MAX (QORDER) FROM &3 WHERE INSTR (LOOP_STR,REPLACE (TO_CHAR (INDX,'099'),' ')) > 0 AND
                                                       STATUS >= 1) AND LOOP_MARK IS NOT NULL AND LOOP_MARK = 'START';
                UPDATE &3 SET LOOP_MARK = 'END' WHERE QORDER = (SELECT MAX (QORDER) FROM &3 WHERE INSTR (LOOP_STR,REPLACE (TO_CHAR (INDX,'099'),' ')) > 0 AND
                                                       STATUS >= 1) AND LOOP_MARK IS NULL;
            END LOOP;
      
            COMMIT;
        ELSE
            UPDATE &3 SET LOOP_NUM=0;
     
            COMMIT;
     
        END IF;
     
     END;
     /
     
Compression Report Program AS OF 10/13/1999:

     set pagesize 55;
     SET LINESIZE 200;
     SET HEADING ON;
     
     COLUMN QNAME FORMAT A50;
     
     set echo on;
     
     --
     -- FREQUENCY OF STATUS COLUMN:
     -- -3 = FORCED OUT (ONLY IF OPTION CHOSEN)
     -- -2 = COMPRESSED OUT
     --  0 = PRINTFLAG OFF
     --  1 = PRINTFLAG ON
     --  2 = UNCOMPRESSABLE QUESTIONS
     -- 
     
     SELECT STATUS,COUNT(*) FROM &3 GROUP BY STATUS;
     
     --
     -- FIND PLACES WHERE THE CODEBOOK FLOW FAILS.
     --
     -- LIST OF QUESTIONS WHICH HAVE NO NEXT QUESTION LEADING TO THEM.
     --
     
     SELECT QNAME,QPRINT,STATUS FROM &3 WHERE STATUS > 0 AND
        QNAME NOT IN (SELECT DISTINCT (NEXTNAME) FROM &4) AND 
        QORDER <> (SELECT MIN (QORDER) FROM &3 WHERE STATUS > 0)
        ORDER BY QORDER;
     
     --
     -- LIST OF QUESTIONS WHICH HAVE A NEXT QUESTION WHICH DOES NOT EXIST.
     --
     
     SELECT Q.QNAME,QPRINT,STATUS,NEXTNAME
        FROM &3 Q, &4 N
        WHERE Q.QNAME = N.QNAME AND
        STATUS > 0 AND
        UPPER (NEXTNAME) <> 'NIL' AND
        NEXTNAME NOT IN (SELECT QNAME FROM &3)
        ORDER BY QORDER;
     
     --
     -- LIST OF QUESTIONS WITH PRINTFLAGS OFF, BUT WHICH COMPRESSION 
     -- WANTS TO INCLUDE
     --
     
     SELECT QNAME,QPRINT,STATUS FROM &3 WHERE STATUS > 1 ORDER BY QORDER;
     
     --
     -- LIST OF QUESTIONS WHICH ARE BEING FORCED OUT - MEANING UNCOMPRESSABLE, 
     -- PRINTFLAG=OFF QUESTIONS WHICH WE DON'T WANT TO RELEASE. THE PATHS
     -- TO AND FROM THESE QUESTIONS WILL MOST LIKELY BE INCORRECT.
     --
     
     SELECT QNAME,QPRINT,STATUS FROM &3 WHERE STATUS = -3 ORDER BY QORDER;
     
     --
     -- FIND QUESTIONS WHICH COMPRESSION WANTS TO INCLUDE BUT HAVE
     -- A SECURITY <> 'B' (PUBLIC)
     --
     
     SELECT QNAME,QPRINT,STATUS,SECURITY FROM &3 WHERE STATUS > 1 AND QNAME NOT IN
      (SELECT QNAME FROM &5 WHERE QVARTYPE='B') ORDER BY QORDER;
     
     --
     -- FIND QUESTIONS WHICH COMPRESSION WANTS TO INCLUDE AND HAVE MISSING
     -- KWICTITLES
     --
     
     SELECT CQ.QNAME, CQ.QPRINT, STATUS 
         FROM &3 CQ, &5 Q
         WHERE STATUS > 1 AND CQ.QNAME = Q.QNAME AND QKWICTITLE IS NULL;
     
     --
     -- FIND QUESTIONS WHICH COMPRESSION WANTS TO INCLUDE AND HAVE MISSING
     -- SASLABELS
     --
     
     SELECT CQ.QNAME, CQ.QPRINT, STATUS 
         FROM &3 CQ, &5 Q
         WHERE STATUS > 1 AND CQ.QNAME = Q.QNAME AND QVARLABEL IS NULL;
     
     --
     -- FIND QUESTIONS WHICH COMPRESSION WANTS TO INCLUDE AND DO NOT HAVE
     -- A CCODE OR DCODE
     --
     
     SELECT CQ.QNAME, CQ.QPRINT, STATUS 
         FROM &3 CQ, &5 Q
         WHERE STATUS > 1 AND CQ.QNAME = Q.QNAME AND QCONTCODE IS NULL AND QDOCDCODE IS NULL;