The Query specifications used to produce a report are stored in three memory files, defined in the --- application.
You can find the current data dictionary definitions of these files below. Note that these files may change without notice in the future and you should be prepared to lose any functionality that you add. Each file can contain records for multiple active query processes. The primary key of each file contains the application ID and process name of the query. These files are populated when you run a query process, in query setup phase. They are read when the query is actually evaluated. A query setup process populates the Q-files based on the specifications entered by the query designer. It is possible to change the contents of the Q-files after the query setup processor has populated them. This is a dangerous practice and you are on your own if you do, but it can be useful. Two important rules apply if you decide to twiddle the Q-files: 1) You will probably break something in an unpredictable way if you make a mistake. 2) You cannot introduce a reference to file or work field that was not already referenced by the query. This means that if you think you might need to add a selection constraint or sort ordering, you have to mention that file (or a field from that file) or that work field somewhere in the query process. A simple do-nothing statement will suffice (such as RESTORE DEFAULT RECORD). If you want to edit the QSLCT records after query setup (Sort, and Designer & Enduser Selection at Runtime) has populated them, try it in "End of Process (Query Setup)". If you wait until the Start of Query Execution, the OUTPUT or UPDATE processor has already read the QLSCT records, so any changes that you might make will have no effect. Each of the Q-files can be divided into two sets of fields: fields which control the result set of the query (i.e. the sort order and selection criteria), and fields which control the query setup phase. Here is a quick description of interesting fields in each of the files:-Options-- File Descriptive Name Org File Type T DP AA RP ======== ======================== ======= ===================== ========== *QPARM Query Specification* INDEXED MEMORY-RELATED T Seq No Field Name Typ Format S Start Len T DL AA KC ------- ---------------------- --- ------------ - ----- ----- ---------- 100 QPARM KEY Hdr 1 33 T P 200 QPARM QRY AP Dom X(3) 1 3 300 QPARM QRY NAM Dom X(30) 4 30 400 QPARM KEY TRAIL Trl T 500 QPARM ALIGN 1 Dom X(3) 34 3 600 QPARM LAST DFLT ORDER Dom 9(10) 37 4 AA 700 QPARM QRY EXPR ED Dom y/n 41 1 800 QPARM QRY EXPR DSPL Dom X(800) 42 800 900 QPARM QRY EXPR HIDE Dom X(800) 842 800 1000 QPARM QRY VER Dom X(2) 1642 2 1100 QPARM ALIGN 2 Dom X(1) 1644 1 -Options-- File Descriptive Name Org File Type T DP AA RP ======== ======================== ======= ===================== ========== *QSLCT Selection Specs* INDEXED MEMORY-RELATED T AA Seq No Field Name Typ Format S Start Len T DL AA KC ------- ---------------------- --- ------------ - ----- ----- ---------- 100 QSLCT KEY Hdr 1 40 T P 200 QSLCT PARTIAL KEY 1 Hdr 1 34 T 300 QSLCT PARTIAL KEY 2 Hdr 1 33 T 400 QSLCT QRY AP Dom X(3) 1 3 500 QSLCT QRY NAM Dom X(30) 4 30 600 QSLCT PARTIAL KEY 2 TR Trl T 700 QSLCT TYPE Dom X(15), Tbl 34 1 800 QSLCT PARTIAL KEY 1 TR Trl T 900 QSLCT PAD 1 Dom X(2) 35 2 1000 QSLCT SNO Dom 9(10) 37 4 AA 1100 QSLCT OPND L Hdr 41 30 T 1200 QSLCT OCC L CNST Dom 9(3) 41 2 AA 1300 QSLCT AP ID L Dom X(3) 43 3 1400 QSLCT FLD NAM L Dom X(22) 46 22 1500 QSLCT PAD 2 Dom X(3) 68 3 1600 QSLCT OPND R Hdr 71 35 T 1700 QSLCT OCC R CNST Dom 9(3) 71 2 AA 1800 QSLCT AP ID R Dom X(3) 73 3 1900 QSLCT REF NAM R Dom X(30) 76 30 2000 QSLCT OPND R TRAIL Trl T 2100 QSLCT REL Dom X(2), Tbl 106 1 2200 QSLCT ACTV Dom y/n 107 1 2300 QSLCT MOD Dom y/n 108 1 2400 QSLCT REL ED Dom y/n 109 1 2500 QSLCT OPND R ED Dom y/n 110 1 2600 QSLCT ALIGN 1 Dom X(2) 111 2 -Options-- File Descriptive Name Org File Type T DP AA RP ======== ======================== ======= ===================== ========== *QSORT Sort Order Specs* INDEXED MEMORY-RELATED T AA Seq No Field Name Typ Format S Start Len T DL AA KC ------- ---------------------- --- ------------ - ----- ----- ---------- 100 QSORT RECORD Hdr 1 92 T 200 QSORT KEY Hdr 1 40 T P 300 QSORT PARTIAL KEY Hdr 1 33 T 400 QSORT QRY AP Dom X(3) 1 3 500 QSORT QRY NAM Dom X(30) 4 30 600 QSORT PARTIAL KEY TRAI Trl T 700 QSORT PAD Dom X(3) 34 3 800 QSORT SNO Dom 9(10) 37 4 AA 900 QSORT KEY TRAIL Trl T 1000 QSORT FLD AP Dom X(3) 41 3 1100 QSORT FLD NAM Dom X(22) 44 22 1200 QSORT ALIGN 1 Alp X(1) 66 1 1300 QSORT FLD OCC Dom 9(3) 67 2 AA 1400 QSORT ORD Dom X(1), Tbl 69 1 1500 QSORT REQ Dom y/n 70 1 1600 QSORT NEW PG Dom y/n 71 1 1700 QSORT SUBH Dom y/n 72 1 1800 QSORT CONT MSG Dom y/n 73 1 1900 QSORT SUBT Dom y/n 74 1 2000 QSORT SUBT NEW PG Dom y/n 75 1 2100 QSORT AVE Dom y/n 76 1 2200 QSORT MIN Dom y/n 77 1 2300 QSORT MAX Dom y/n 78 1 2400 QSORT ORD ED Dom y/n 79 1 2500 QSORT NEW PG ED Dom y/n 80 1 2600 QSORT SUBH ED Dom y/n 81 1 2700 QSORT CONT MSG ED Dom y/n 82 1 2800 QSORT SUBT ED Dom y/n 83 1 2900 QSORT SUBT NEW PG ED Dom y/n 84 1 3000 QSORT AVE ED Dom y/n 85 1 3100 QSORT MIN ED Dom y/n 86 1 3200 QSORT MAX ED Dom y/n 87 1 3300 QSORT ACTV Dom y/n 88 1 3400 QSORT MOD Dom y/n 89 1 3500 QSORT ALIGN 2 Dom X(3) 90 3 3600 QSORT RECORD TRAIL Trl T -Options-- File Descriptive Name Org File Type T DP AA RP ======== ======================== ======= ===================== ========== *QTAG Query Tag File* INDEXED MEMORY-RELATED T Seq No Field Name Typ Format S Start Len T DL AA KC ------- ---------------------- --- ------------ - ----- ----- ---------- 100 QTAG KEY Hdr 1 40 T P 200 QTAG QRY AP Dom X(3) 1 3 300 QTAG QRY NAM Dom X(30) 4 30 400 QTAG ALIGN Dom X(3) 34 3 500 QTAG SNO Dom 9(10) 37 4 AA 600 QTAG RECORD Hdr 41 1024 T 700 QTAG KEY VAL Dom X(1024) 41 1024 800 QTAG RECORD TRAILER Trl T
QSLCT 2200 QSLCT ACTV DOMAIN y/n /* Is this an "Active" Record Selection (at run time)? */ QSLCT 2300 QSLCT MOD DOMAIN y/n /* Is this "Modifiable"? (Designer=N, Enduser=Y) */
SET --- II = 0 BEG READ --- QSORT HOLD 0 KEY IS QSORT KEY COMPUTE --- II + 1 DISPLAY --- QSORT SNO (AT APPEARANCE # II ) DISPLAY --- QSORT FLD NAM (AT APPEARANCE # II ) DISPLAY --- QSORT ACTV (AT APPEARANCE # II ) END READ --- QSORT
When editing an ILF SET statement, you can scan on valid field names in the QSLCT table by setting the Application-ID to "---", then pressing SCAN, giving it a starting Filename/SeqNo of "QSLCT/100".SET --- II = 0 BEG READ --- QSLCT HOLD 0 KEY IS QSLCT KEY COMPUTE --- II + 1 DISPLAY --- QSLCT SNO (AT APPEARANCE # II ) DISPLAY --- QSLCT REL (AT APPEARANCE # II ) DISPLAY --- QSLCT ACTV (AT APPEARANCE # II ) DISPLAY --- QSLCT MOD (AT APPEARANCE # II ) DISPLAY --- QSLCT FLD NAM L (AT APPEARANCE # II ) END READ --- QSLCT
Range-Start/ Rng-End/ Lst Srt Seq No App Field Name Occ Subheading SubTotal Lvl? Ordr ======= === ==================== === ================= ======== ==== ==== 100 OPT BB KEY NO NONE Y + 200 OPT BB DATE NO NONE N +___________________________________________________________________ Enduser Selections
Seq No App Field Name Occ App Field Name or Constant ======= === ===================== === == === ========================== 100 OPT BB KEY GE 200 OPT BB KEY LE 9 _______________________________________________________________________Designer Selections
Seq No App Field Name Occ App Field Name or Constant ======= === ====================== === == === ========================== 100 OPT BB KEY NE 4321 200 OPT BB DATE NE 300 OPT BB ALPHA IN _______________________________________________________________________OUTPUT Pre-Display ILF SERIES:
TRAP SET --- II = 0 BEG READ --- QSORT HOLD 0 KEY IS QSORT KEY COMPUTE --- II + 1 DISPLAY --- QSORT SNO (AT APPEARANCE # II ) DISPLAY --- QSORT FLD NAM (AT APPEARANCE # II ) DISPLAY --- QSORT ACTV (AT APPEARANCE # II ) END READ --- QSORT SET --- II = 0 TRAP BEG READ --- QSLCT HOLD 0 KEY IS QSLCT KEY COMPUTE --- II + 1 DISPLAY --- QSLCT SNO (AT APPEARANCE # II ) DISPLAY --- QSLCT REL (AT APPEARANCE # II ) DISPLAY --- QSLCT ACTV (AT APPEARANCE # II ) DISPLAY --- QSLCT MOD (AT APPEARANCE # II ) DISPLAY --- QSLCT FLD NAM L (AT APPEARANCE # II ) END READ --- QSLCTResults, painted into OUTPUT's Report-start frame:
Fld Name Ord Actv 0 + Y 1 BB KEY + Y 2 BB DATE + N Type Rel Actv Mod FLD NAM L 100 QUERY-SLCT-HIDE GE N BB KEY 200 QUERY-SLCT-HIDE LE Y BB KEY 100 QUERY-SLCT-HIDE NE Y N BB KEY 200 QUERY-SLCT-HIDE NE Y N BB DATE 300 QUERY-SLCT-HIDE IN Y N BB ALPHA Bb Date Alpha K Key Num 9 2_ T ? === ======== ====== ============= ========== = 0 .00 N 1 one 1234.56 TOKEN-THREE 2 Two 1.00- TOKEN-THREEN 3 Three. 2.00- TOKEN-THREEN 4 four .00 TOKEN-THREEN 5 Five 12345.67 TOKEN-TWO N 6 08/23/95 six 12345.12 TOKEN-THREEN 7 08/23/95 seven 1234.12 TOKEN-TWO N 8 08/23/95 eight 1.23 N 9 11/11/11 nine 9.09 TOKEN-ONE N