Trailing-Edge
-
PDP-10 Archives
-
BB-H548B-BM
-
iql-subsys/iql.hlp
There are 2 other files named iql.hlp in the archive. Click here to see a list.
**GENERAL
Interactive Query Language, "IQL" is a proprietary data management
system. It provides both laymen and computer professionals with a
comprehensive ability to define files, input or update those files,
retrieve information from the files, generate sophisticated reports
and to obtain derivative files. IQL is interfaced to the DBMS data
base manager. The IQL/DBMS interface currently handles retrieval
only.
Before IQL can work with your file or database, the file or
database must have been described to IQL. These descriptions are
called 'Dictionaries' and are permanently stored by IQL for
reference each time you work with the file or database through IQL.
When you are retrieving data, IQL works in either of two modes:
(a) For file browsing or updating you can use UPDATE mode,
where IQL carries out your command as soon as you enter it.
This could be called "immediate" mode. In UPDATE mode your
file is positioned as you interact with it. BROWSE is a
special "read only" form of UPDATE mode. Data structures you
can process in UPDATE mode are sequential or ISAM disk files in
either ASCII or Sixbit form.
(b) For preparing reports, IQL lets you operate in REPORT mode.
In this mode, your commands are gathered together into a
"query" which IQL processes as a unit. This could be called
"deferred" mode. Data structures you can process in REPORT
mode are sequential or ISAM files in ASCII or sixbit form, tape
files, or DBMS data bases.
An IQL level is either a 'command' level or a 'data input' level.
Command levels require your input to be a command telling IQL what
to do next. Data input levels require your input to be data that
IQL will use according to the last command you gave. However even
at data input level, there are a few special commands you may give
to signal the end of input or correct a mistake.
(a) You always start in IQL at ASSISTANCE command level by
coming in from the operating system via R IQL, RUN IQL, or just
IQL depending on how your site sets itself up.
b) At ASSISTANCE command level you can go down to any of the
following subcommand levels:
REPORT level via RUN or EXECUTE - to run a query.
EDIT level via EDIT - to edit a query.
UPDATE level via UPDATE, BROWSE or INPUT - to change,
inspect or input a data file.
c) At ASSISTANCE command level, you can go down directly to the
following data input levels:
Via INPUT - to input new records to a data file.
Via DEFINE - to define dictionary definitions or changes.
Via WRITE - to write a new query.
d) From any of the subcommand levels you can go down to their
respective data input modes:
From EDIT via INSERT or I. - to insert new lines in a
query.
From UPDATE via INSERT or APPEND: to input new records to
a data file.
From REPORT mode (running a query) via ACCEPT - to accept
data during preparation of reports.
e) Regardless of mode or level, END or EXIT always takes you up
to the next level. IQL always tells you when you leave a
level.
IQL runs under control of a front-end module which:
(a) provides helping text on various features of IQL.
(b) lets you write, store, retrieve, change or run queries.
(c) lets you define, display or change dictionaries.
(d) controls the rest of the IQL system.
Commands used to control the front-end are called 'assistance'
commands. Each assistance command is carried out by IQL as soon as
you enter it. IQL prompts for assistance commands by displaying
<QA>. By function, the assistance commands are:
(a) to define a dictionary: DEFINE
(b) to get a list of dictionaries: DICTIONARIES
(c) to see a specific dictionary: ITEMS
(d) to write a new query: WRITE
(e) to store a query in English form: STORE
(f) to get a list of stored queries: QUERIES
(g) to retrieve a stored query: GET,EDIT,LIST
(H) to delete a stored query: DELETE
(i) to replace a stored query: REPLACE
(j) to change a query: EDIT
(k) to run an English query: RUN
(l) to save an analyzed query: SAVE
(m) to execute a saved query: EXECUTE
(n) to input a new file: INPUT
(o) to update or browse in a file: UPDATE, BROWSE
(p) to find out your job number: JOB
(q) to exit to the operating system: EXIT,END
The individual Report Commands are:
ACCEPT LMARGIN
ACROSS MAXIMUM
AUTHORITY MINIMUM
AVERAGE NEWPAGE
CALL OPEN
COMPUTE PAGE
COPY PAGE-LINES
CREATE PAGING
DATE PICTURE
DISPLAY PRINT
EXIT REPORT
FIND (sequential) RESET
FIND (random) REWRITE
FIND (data base) RMARGIN
FORM-LINES SET
GO TO SORT
HEADING SUMPRINT
HOLD TALLY
HSPACE TITLES
IF TOTAL
VSPACE
By function, the update commands may be grouped:
(a) To position your file: UP, DOWN, TOP, BOTTOM, FIND
(b) To add records: INSERT, APPEND
(c) To delete records: DELETE
(d) To change records: CHANGE
(e) To display records: LIST
(f) To control the session: VERIFY, COLUMNS
(G) To extract a new file: EXTRACT
(H) To save your file: SAVE
(i) To end the session: END,EXIT
**BROWSE
FUNCTION: Puts you in UPDATE mode so that you may 'browse' in a
data file (subject to any password requirement). See
FORMAT: BROWSE dictionary-name [file-name]
DISCUSSION: 1) BROWSE is the same as UPDATE except that BROWSE
only lets you read the file.
2) If the file is protected at the READ level, IQL
asks you for the password and checks it before
unlocking the file for browsing.
4) If you furnish a file-name, IQL uses this
file-name name rather than the file-name in the
dictionary. The file-name must be formatted
ffffff.ext where ffffff is one to six characters.
EXAMPLES:
<QA> browse accounts (not protected)
<QU> list account buyer city for account 23098
23098 H R RAWLINGS CLEVELAND
...(BROWSE session continues)...
...(you end BROWSE session via END or EXIT)
<QA>
<QA> browse personnel (protected at read level)
*PASSWORD: pulsar
(FILE UNLOCKED FOR READ ONLY)
<QU> list name, dept for all region 23
BROADHURST 421
CALAHAN 421
GROGAN 423
...(BROWSE session continues)...
...(you end BROWSE session via END or EXIT)
<QA> browse charges 'charge.seq'
<QU> list date, charge for all account 562330
06/03/78 234.56
06/06/78 12.07
...(BROWSE session continues)...
**DEFINE
FUNCTION: Allows you to define dictionary transactions for
creating or updating an IQL dictionary. When you
terminate a DEFINE session normally, IQL
automatically calls the dictionary generation module
to actually create or update the dictionary based on
the transactions you just entered.
FORMAT: DEFINE
EXAMPLES: <QA> define
*FD,DD,PD,CD,RD,AD,SD,END,SCRUB: fd
*ACTION CODE (A,C,D OR P): c
*DICT NAME - UP TO 30 CHARS: personnel
*DICT UNLOCKING PASSWORD, IF ANY: sesame
*FILE IN NAME AS XXXXXX.EEE: next
*FD,DD,PD,CD,RD,AD,SD,END,SCRUB: dd
*ACTION CODE (A,C,D): c
*ITEM NAME (UP TO 30 CHARS): name
*TOP COLUMN TITLE (UP TO 10 CHARS): full name
*BOTTOM TITLE (UP TO 10 CHARS): next
*FD,DD,PD,CD,RD,AD,SD,END,SCRUB: end
(END DICTIONARY TRANSACTION INPUT)
(END DICTIONARY UPDATE)
<QA>
**DELETE
FUNCTION: Deletes one or more queries from the file of stored
English language queries in your Directory.
FORMAT: DELETE query-name
------<-----
DISCUSSION: The query is deleted from the file of stored
English-language queries.
EXAMPLE: <QA> delete bonus-analysis
(BONUS-ANALYSIS DELETED)
<QA>
<QA> delete charlie beth claire
(CHARLIE DELETED)
%BETH NOT FOUND TO BE DELETED
(CLAIRE DELETED)
<QA>
**DICTIONARIES
FUNCTION: Gives a terminal display of the file information for
each dictionary in your Directory.
FORMAT: DICTIONARIES [master-password]
DEFAULTS: If you do not furnish the master-password, IQL
proceeds with the display of the file information,
but if it encounters a protected dictionary, it
displays only the dictionary name, the Directory and
the file type.
DISCUSSION: The display produced by DICTIONARIES is formatted 72
characters wide. The dictionary display produced by
printing is wider and contains more
information.
EXAMPLE: <QA> dictionaries sesame
DICTIONARIES IN YOUR DIRECTORY:
DICT FILE FILE-IN REC BLK KEY KY KY RD CP RW
NAME TYPE NAME DIRECT LEN FAC LOC LN TP PW PW PW
---- ---- ---- ------ --- --- --- -- -- -- -- --
INVENTORY SQ DSK7 INVENT.SEQ JANE 180 0
PERSONNEL SQ DSK7 PERSON.IDX 600 5 1 5 AU 10 20 30
<QA>
**EDIT
FUNCTION: Allows you to edit (change) either the current query
or a stored query. Uses the DECsystem20 built-in
text editor.
FORMAT: EDIT [query-name] [LIST]
DEFAULTS: If you do not furnish a query name, IQL edits the
current query. If you do not use 'LIST' IQL does not
list the query before going into edit mode.
DISCUSSION: 1) If you furnish a query name, IQL moves that query
from the file of stored queries into the current
query area before entering edit mode.
2) The DECsystem20 text editor is described in its
own manual. However, the following summary of some
of its commands may be useful (the symbol $ denotes
the escape key on your terminal):
D. Delete the current line of the query.
linefeed key Move down one line.
escape key If in 'insert' mode terminate it.
If in 'edit' mode, go up one line.
Fstring$ Move to and list the next line which
contains the designated string.
I. Insert a line of text after this line.
I.,2 Insert lines of text after this line;
keep inserting lines until you enter
the escape key first in a line.
P. List (print) the current line.
P List the current and next 15 lines.
Sstring1$string2$. Substitute string2 for string1 in
the current line.
P100 Go to the beginning of the query.
Pnn Go to line nn and print it.
P nn:mm Print lines nn through mm.
EXAMPLE:
<QA> edit newhires list
**NEWHIRES
OPEN PERSONNEL.
HEADING 'LIST OF NEW HIRES'.
IF HIRE-YR LEQ 77 PRINT NAME, DEPT, HIRE.
[EDITING QC014S.CRD]
*linefeed
00100 open personnel.
*i.
00150 display on.
*fheading$
00200 HEADING 'LIST OF NEW HIRES'.
*SHIRES$HIRES//SINCE JANUARY 1$.
00200 HEADING 'LIST OF NEW HIRES//SINCE JANUARY 1'.
*linefeed
00300 IF HIRE-YR LEQ 77 PRINT NAME, DEPT, HIRE-YR.
*sleq$geq$.
00300 IF HIRE-YR GEQ 77 PRINT NAME, DEPT, HIRE-YR.
*p100
00100 OPEN PERSONNEL.
*p
00100 OPEN PERSONNEL.
00150 DISPLAY ON.
00200 HEADING 'LIST OF NEW HIRES//SINCE JANUARY 1'.
00300 IF HIRE-YR GEQ 77 PRINT NAME, DEPT, HIRE-YR.
*e
[qc014s.crd]
<QA>
**EXECUTE
FUNCTION: Begins executing a saved query without having to
analyze it again.
FORMAT: EXECUTE query-name
DISCUSSION: 1) For a query to be available to EXECUTE, it must
have been saved sometime previously by use of the
SAVE assistance command. Each saved query is a
separate file which has the extension .QRY. Please
see the SAVE command for a complete discussion of
saved queries.
2) Saved queries have already been through IQL's
analysis step and are ready for immediate execution.
3) Note that if you have forced a specific report
date (via DATE) in a saved query, that date stays the
same each time the query is executed.
EXAMPLE: <QA> execute newhires (looks for NEWHIR.QRY)
...(your report goes here if routed to terminal)...
<QA>
**EXIT
FUNCTION: MOVES FROM ONE LEVEL OF IQL TO THE NEXT HIGHER LEVEL.
FORMAT: EXIT
SYNONYMS: END
DISCUSSION: Throughout IQL the words END or EXIT always terminate
the level or mode you are in and go up one level.
The operating system is one level above IQL. A
message is displayed whenever IQL leaves a level.
EXAMPLE: <QA> exit (exits IQL to operating system)
**GET
FUNCTION: Moves a query from the stored query file into the
current query area.
FORMAT: GET [query-name] [LIST]
DEFAULTS: (1) If you do not use a query name, GET uses the
current query; ie, it does not move in a new query.
(2) If you do not use LIST, IQL does any query moving
indicated but lists only the name of the query.
DISCUSSION: If you use a query name, the new query obliterates
the previous contents of the current query area.
EXAMPLES: (the current query is named BLUE-EYES)
<QA>get
**BLUE-EYES (lists only the current query name)
<QA>
<QA> get list
**BLUE-EYES
OPEN APPLICANTS.
IF COLOR-EYES = 'BLUE' SORT BY STATE, CITY.
PRINT NAME, STATE, CITY, AGE.
<QA>
<QA> get newhires
**NEWHIRES (only the query name is listed)
<QA>
<QA> get newhires list
**NEWHIRES
OPEN PERSONNEL
HEADING 'NEW HIRES SINCE//JANUARY 1, 1977'
IF HIRE-DATE GEQ 770101 PRINT NAME, DEPT, HIRE-DATE
<QA>
**INPUT
FUNCTION: Sets IQL into 'input' level of update mode so you may
input records to create a new data file.
FORMAT: INPUT dictionary-name [file-name]
DEFAULTS: Each record is initially set to all spaces before
INPUT begins asking you for field values.
DISCUSSION: 1) If you do not furnish a dictionary name, IQL asks
you for it.
2) If you furnish a file-name, IQL uses this
file-name instead of the one in the dictionary. The
file-name must be formatted ffffff.ext where ffffff
is one to six characters.
3) If IQL finds that the file is already present in
your Directory it tells you and goes into UPDATE
mode. ie, INPUT does not let you write over an
existing file.
4) If IQL finds that the dictionary contains password
protection at the READ or WRITE level it asks you for
the password and checks it before letting you input
data.
5) INPUT begins by issuing a prompt for the first
field in the first record and waiting for your
response. It then issues the prompt for the next
field in that record, and continues in that way until
either it encounters the end of the dictionary or you
tell it to do something else. Prompts for item
values are issued in the order in which the items are
found in the dictionary.
6) You may use the following special words to control
INPUT:
END end INPUT mode; go up to UPDATE mode
EXIT same as END
DOWN [integer] move down integer prompts; if no
integer move down 1 prompt
KILL kill the record; start it over
NEXT complete the record: fill remaining
fields with spaces or zeroes as
appropriate, then go to next record
UP [INTEGER] move up integer prompts;
if no integer move up 1 prompt
7) Fields are checked as follows as soon as you enter
them: alphanumeric values are checked only to see
that they are not longer than the field. Numeric
quantities are checked to see that they do not
contain characters other than $ , + - or numbers;
and that they do not have too many integer or decimal
places. INPUT fills in leading and trailing zeros in
numeric quantities as necessary; the characters $
and , are ignored; and the decimal point is used
only to line up the item. See the example below.
EXAMPLE: <QA> input customers
(YOUR DIARY FILE IS QL023U.LPT)
(NEXT RECORD)
*NUMB (CUSTOMER NUMBER) 5 N: 34
*NAME (CUSTOMER NAME) 30 A: portable devixes
*SLSMAN (SALESMAN NAME) 25 A: carleton scott
*CITY (CUSTOMER CITY) 15A: up 2
*NAME (CUSTOMER NAME) 30 A: portable devices
*SLSMAN (SALESMAN NAME) 25 A: down
*CITY (CUSTOMER CITY) 15 A: st. louis
*CYSLS (CURR YR SALES) 8.2 N: $1,500.
*LYSLS (LAST YR SALES) 8.2 N: 3012.46
*CLIMIT (CREDIT LIMIT) 8.2 N: next
(NEXT RECORD)
*NUMB (CUSTOMER NUMBER) 5 N: 37
...(input continues; ended by END or EXIT)...
...(you end UPDATE mode via END or EXIT)...
<QA>
**ITEMS
FUNCTION: Displays a formatted display of the file and item
information in a specific IQL dictionary.
FORMAT: ITEMS dictionary [master-password] [ALL]
DEFAULTS: (1) If you do not furnish a password and IQL finds
that the dictionary or an item is protected, it
obscures any information for the protected item which
would allow you to locate it.
(2) If you do not use 'ALL', IQL displays only the
first 25 items in the dictionary and then asks you to
respond with 'YES' or 'NO' as to whether you want to
see more items. If you kill the display with
control-O remember that IQL waits for this response.
EXAMPLE: <QA> items personnel sesame all
DICT FILE FILE-IN REC BLK KEY KY KY RD CP RW
NAME TYPE NAME DIRECT LEN FAC LOC LN TP PW PW PW
---- ---- ---- ------ --- --- --- -- -- -- -- --
PERSONNEL IS DSK7 PERSON.IDX JANE 600 5 1 5 AU 10 20 30
ITEM TOP BOTTOM 1ST NO. T S PRINTING SCAN
ID NAME TITLE TITLE CHAR CHAR Y C PICTURE GNNS PT
-- ---- ----- ----- ---- ---- - - ------- ---- --
PD TIGER
DD EMPNO EMPLOY NUMBER 1 5 N 0 ZZZZ9
DD EMPNAME EMPLOY NAME 6 30 A
....
<QA>
**JOB
FUNCTION: Displays the job number which the Operating System
has assigned to your IQL session.
FORMAT: JOB
DISCUSSION: IQL uses your job number as an ingredient for naming
its temporary and print files. The job number may be
useful if you wish to work with these files outside
of IQL.
EXAMPLE: <QA> job
JOB NUMBER: 32
<QA>
**LIST
FUNCTION: Displays your current query or moves a stored query
into the current query area and displays it.
FORMAT: LIST [query-name]
DEFAULTS: If you do not furnish a query-name, IQL lists the
current query.
DISCUSSION: When used with a query name, LIST functions as if it
were 'GET' used with the 'LIST' option.
EXAMPLES: (the current query is named MARKET-PROJECT)
<QA> list (lists the current query)
**MARKET-PROJECT
OPEN PROSPECTS
COMPUTE EXPECTED = EXPECTED * 1.1
TOTAL EXPECTED BY REGION, DISTRICT
MAXIMUM EXPECTED BY REGION, DISTRICT
<QA>
<QA> list prospect-detail (retrieves and lists)
**PROSPECT-DETAIL
OPEN PROSPECTS
HEADING 'PROSPECT//DETAIL'
PRINT PROSPECT, DATE-IN, EXPECTED, PROBABILITY
<QA>
**QUERIES
FUNCTION: Displays a list of all the queries stored by IQL in
your Directory.
FORMAT: QUERIES
DISCUSSION: Stored queries are kept in their English-like query
language format. They must pass through IQL's
analysis step to be executed. Note the difference
between 'stored' (stored in their English language
format) and 'saved' (stored in their analyzed table
format) queries.
EXAMPLE: <QA> queries
QUERIES STORED IN YOUR DIRECTORY ARE:
NEWHIRES SALARY-ANALYSIS PROJECTS
SALES-ANALYSIS CUSTOMERS-OVER-CREDIT LEADS
LOANS RISK-ANALYSIS
(END LIST OF STORED QUERIES)
<QA>
**REPLACE
FUNCTION: Replaces an existing query in IQL's stored query file
with the current query.
FORMAT: REPLACE [query-name]
DEFAULTS: If you do not furnish a query name, IQL looks to see
if you have given the current query a name. If so,
it replaces the stored query under that name with the
current one. If not, it asks you for a query name.
DISCUSSION: The contents of the current query area are not
affected by REPLACE.
EXAMPLE: <QA> replace
(PO-AUDIT REPLACED)
<QA>
<QA> replace open-po
(OPEN-PO REPLACED)
<QA>
**RUN
FUNCTION: Runs a query by routing it to the query analysis step
before executing it.
FORMAT: RUN [query-name] [NOLIST] [SAVE]
DEFAULTS: If you do not furnish a query name, IQL runs the
current query. If you do not use any of the optional
words, IQL runs and lists the query.
DISCUSSION: 1) If you furnish a query name, IQL moves that query
from the stored query file into the current query
area before running it.
2) IQL analyzes the query before executing it. The
query in the current query area is not affected by
running it.
3) If IQL finds an error in the query during
analysis, it issues appropriate error messages and
returns to assistance mode so that you may correct
the errors (by using 'EDIT').
4) If you use NOLIST, IQL does not list the query as
it analyzes it.
5) If you use SAVE, IQL creates a saved .QRY file of
the analyzed query. See the SAVE command.
EXAMPLES: <QA> run
...(listing of current query goes here)...
...(report produced by current query goes here)...
<QA>
<QA> run dept-mgrs nolist
**DEPT-MGRS
...(report produced by query DEPT-MGRS goes here)...
<QA>
**SAVE
FUNCTION: Saves the current or named query in its analyzed
form. This is so you may subsequently execute the
query without having to re-analyze it.
FORMAT: SAVE [query-name] [NOLIST] [RUN]
DEFAULTS: If you do not furnish a query name, IQL uses the name
of the current query. If you have not given the
current query a name, IQL requests a query name. If
you do not furnish any of the optional words, IQL
saves and lists the query.
DISCUSSION: 1) IQL analyzes the query before saving it.
2) The saved query is written as an independent disk
file. It is given a file name consisting of the
first six characters of the query name combined with
the extension '.QRY'. Since some versions of the
system utilities do not fully process file names with
dashes (-) in them, you should avoid having dashes in
the first six characters of your query name when
saving it.
3) If a .QRY file already exists under the target
name, IQL notifies you of the conflict and refuses to
SAVE the new query; neither the existing .QRY file
nor the current query are affected. USE REPLACE.
4) Please remember that if you have used DATE to set
a specific value for the report date in the query,
when the saved query is run, it produces reports
using that specific date value.
5) To run a saved query, use the EXECUTE command.
6) Please be careful to note the difference between
STORED queries (which are kept in their English
language form) and SAVED queries (which are stored in
their internal table form.
7) If you use the RUN option, IQL runs (analyzes and
executes) your query as well as saving it.
EXAMPLES: (current query is named NEWHIRES)
<QA> save
...(the current query is listed here)...
(NEWHIRES SAVED AS NEWHIR.QRY)
<QA>
<QA> save quarterly nolist run
**QUARTERLY
...(report produced by QUARTERLY goes here)...
(QUARTERLY SAVED AS QUARTE.QRY)
<QA>
**STORE
FUNCTION: Stores the current query in its English-language
form.
FORMAT: STORE [query-name]
DEFAULTS: If you do not furnish a query name, IQL uses the name
of the current query. If you have not given the
current query a name, IQL requests a query name.
DISCUSSION: 1) The stored query is kept in its English-language
form in the file QPQRYS.SEQ. You may retrieve the
query at any time to list, edit, run, or save it.
2) If you attempt to STORE a query and IQL finds a
query already there by that name it notifies you of
the conflict and refuses to store the query; neither
the current nor the previously stored query are
affected.
3) Please note the difference between stored queries
(kept in their English-language format) and saved
queries (kept in their analyzed table format).
4) The current query is not affected by storing it.
5) To execute a stored query, use the command RUN
with the query-name option. See the RUN command.
EXAMPLES: (the current query is named R2D2)
<QA> store
(R2D2 STORED)
<QA>
<QA> store c3po
(C3PO STORED)
<QA>
**UPDATE
FUNCTION: Sets IQL into update command mode so you may update
or inspect a data file.
FORMAT: UPDATE dictionary-name [file-name]
DISCUSSION: 1) IF IQL does not find the file referenced in the
dictionary, it notifies you and goes into INPUT mode.
2) If you furnish a file-name IQL uses this file-name
instead of the file-name in the dictionary. The
file-name must be formatted ffffff.ext where ffffff
is one to six characters.
3) If IQL finds that the dictionary is password
protected at either the READ or WRITE level, it asks
you for the password and checks it before letting you
update. If you respond with the READ password, it
notifies you that it is opening the file for read
only.
EXAMPLE: <QA> update customers
*password: mickey
(YOUR DIARY FILE IS QL032U.LPT)
(AT TOP OF FILE)
<QU> list customer salesman sales all
PORTABLE DEVICES INC CARLETON SCOTT 1,472.00
ELECTROSCAN LABS BILL GLASS 21,500.00
<QU> top
<QU> change salesman to 'jim reilly' for custno 23
SEAFOOD BROKERS INC JIM REILLY 023456780023302
0301111020
...(UPDATE session continues)...
...(you end UPDATE session via END or EXIT)...
<QA>
(For a more extensive example see Appendix D.)
**WRITE
FUNCTION: Allows you to begin writing a new query in the
current query area. To do this IQL puts you into
'insertion' mode of the DECsystem20 text
editor.
FORMAT: WRITE [query-name]
SYNONYMS: REPORT
DEFAULTS: If you do not furnish a query name, IQL does not give
a name to the current query. If you later attempt to
save or store this query, IQL asks for a name for the
query at that time.
DISCUSSION: 1) WRITE destroys the previous contents of the
current query area.
2) WRITE works by putting you into 'insertion' mode
of the DECsystem20 text editor. It prompts for each
new line by displaying the line number and waits for
you to enter the line. End your lines with a
carriage return.
3) To end input, simply enter an escape key as the
first entry in the line. The editor goes up from
'insert' to 'edit' mode. At this point you may
either correct any errors you made in entering the
query or go on up to IQL assistance mode by entering
E.
4) To correct errors, when you have ended WRITE
input, use any of the regular edit subcommands. See
the EDIT command.
EXAMPLES: <QA> write
Input:
QC022S.CRD
00100 open personnel.
00200 heading 'new hire list'.
00300 if date-hire geq 770101 print name, dept.
00400 $ (escape key)
*e
[QC022SC.CRD]
<QA>
<QA> write new-hire-list
Input QC022S.CRD
00100 oper personnel. (note error)
00200 heading 'new hire list'.
00300 if date-hire geq 770101 print name, dept.
00400 $ (escape key)
*p100
00100 OPER PERSONNEL.
*SOPER$OPEN$. (fix error)
00100 OPEN PERSONNEL.
*e
[QC022S.CRD]
<QA>
**ACCEPT
FUNCTION: Requests item values from the terminal. IQL first
issues a prompt for the value then waits for it to be
entered. The function of ACCEPT is to allow you to
change information or directives during the query
run.
FORMAT: ACCEPT item
--<---
DISCUSSION: 1) IQL accepts any alpha or numeric data items as
well as numeric or alpha variables. The accepted
value replaces the previous value in either the
current record (in core) or the variable.
2) you may use ACCEPT anywhere and as often as
necessary.
3) ACCEPT constructs a prompt from the information it
finds in the dictionary entry for the item to be
accepted - it uses the item name, top and bottom
column titles, item type, item length, and the scale
(if any). See the example below.
4) IQL checks accepted values as follows: Alpha
items are checked only to be sure they are not too
long. Numeric values are checked to make sure they
do not have too many integer or decimal places and
for illegal (non-numeric) characters. Numeric values
may contain the characters $ + - , . in context.
The sign may begin or end the value.
Generally you may enter a numeric value any way you
would write it for another person.
5) A frequent use of ACCEPT is to provide search
values for a specific run of a query. To do this,
use ACCEPT before your OPEN statement (so it is done
only once) or under control of FIRSTIME.
EXAMPLES: (a) using an accepted alpha variable to control an
extract
ACCEPT ASTATE.
HEADING 'PROSPECTS IN ' ASTATE.
OPEN PROSPECTS.
IF STATE = ASTATE
PRINT DIRECTOR, SITE, HARDWARE.
Might result in the prompt and response:
*ASTATE 2A: az
(b) using repeated accepts to find keyed ISAM records
DISPLAY 'TO END SEARCH, ENTER "QUIT"'.
OPEN PROSPECTS.
ACCEPT ANAME.
IF ANAME = "QUIT" GO TO XT.
FIND KEY = ANAME.
DISPLAY ANAME, EQUIPMENT, SALES, PERCENT.
(c) using IQL like a desk calculator (no OPEN):
DISPLAY 'TO QUIT, ENTER 0'.
TITLES X = 'ANNUAL//SALARY'.
10ACCEPT X.
IF X = 0 GO TO XT.
COMPUTE X1 = X / 2080.
DISPLAY 'ANNUAL SALARY:',X,'HOURLY SALARY:',X1.
GO TO 10.
**ACROSS
FUNCTION: Sets IQL to assemble more than one 'logical' print
line across a physical print line; ie, it permits
printing several identically formatted lines from
different records across the page.
FORMAT: ACROSS integer
DEFAULTS: If you do not use ACROSS in your query, IQL prints
one physical line per print statement; ie, it acts
as if you had used ACROSS 1.
DISCUSSION: 1) Each time IQL executes a print statement it sets
up a logical line. If you do not use ACROSS, that
logical line is printed right away. If you use
ACROSS, IQL places the logical lines end to end until
it has assembled as many across as you specified;
then it prints the composite line. At the end of
each stage in the query, any in-progress print lines
are printed out.
2) If you use a horizontal spacing constant at the
end of a print line, that many spaces are left at the
end of that line before the next line is placed next
to it.
3) If an assembled line is too long to fit in the
space between your left and right margins, IQL
truncates the assembled line on the right before
printing it. No warning is given.
4) ACROSS is frequently used for setting up mailing
labels when several labels across are printed on
special forms. However, ACROSS is useful in many
other cases for tightening up reports.
5) The current setting for ACROSS is carried from one
stage to the next and from one report to the next in
a multiple-report query. If you need a new across
setting, even if it is 1, you must specifically reset
it with another ACROSS statement.
EXAMPLES: (a) mailing labels; (note paging turned off).
PAGING OFF. because special form
TITLES OFF.
ACROSS 2. two across
OPEN ALUMNI.
VSPACE 3. three spaces between labels
PRINT NAME, 5. name is 25 long
VSPACE 1. single space within label
PRINT STREET,5. street is 25 long
PRINT CITY,3,STATE,5. city 19 long,state 2 long
PRINT ZIP,25. zip is 5 long.
might give:
ALVIN J COWENS JEROME C DAVIDSON
45 MEADOWBROOK BLVD. 4762 FAIRMOUNT
CLEVELAND HEIGHTS OH SHAKER HEIGHTS OH
44118 44120
ERIE C HOPWOOD WILLIAM F FRANKLIN
.. ...
**AUTHORITY
FUNCTION: Provides authorized passwords to permit access to
protected files or data items.
FORMAT: AUTHORITY password
----<-----
DEFAULTS: If you do not use AUTHORITY in your query, IQL
processes unprotected files or items, but does not
permit you to run a query which refers to protected
files or items.
DISCUSSION: 1) PASSWORDS WHICH PROTECT FILES OR INDIVIDUAL ITEMS
ARE STORED (IN ENCRYPTED FORM) AS PD (Password
Definition) entries in IQL dictionaries.
2) For using IQL with DBMS data bases, one of the
passwords furnished in the AUTHORITY statement must
correspond to the Privacy Key for Compile in the DBMS
schema.
3) You may furnish up to 10 passwords in an AUTHORITY
statement. The order in which the passwords are
furnished does not matter.
4) If you have used the exclusivity option in your
dictionary to protect a specific data item, you must
furnish the exact password in your AUTHORITY
statement in order to use that item.
5) If you have not used exclusivity in protecting an
item, or for file level protection, the use of a
particular password unlocks all file accesses or
non-exclusive items protected at the same or a lower
level (password number).
EXAMPLES: Assume dictionary PERSONNEL is read protected by
password BEAR at level 10, and item SALARY is further
protected by exclusive password TIGER at level 50:
OPEN PERSONNEL.
AUTHORITY BEAR. (required to access any item)
PRINT NAME, DEPT.
OPEN PERSONNEL.
AUTHORITY TIGER. (required to access SALARY;
PRINT NAME, SALARY, DEPT. also unlocks for reading)
**AVERAGE
FUNCTION: AVERAGE averages a numeric item (a) over an entire
report or (b) within a specific value of one or more
controlling items (breaks).
FORMAT: AVERAGE item [BY item ] [ ( = variable )]
---<---
DEFAULTS: If you do not specify otherwise (see below), each
AVERAGE statement both calculates the specified
average and prints it out.
DISCUSSION: 1) AVERAGE performs two functions: first, it
calculates the correct average and second, it prints
the average at the proper time.
2) AVERAGE is a stand alone statement; it is not
necessary for you to use TOTAL or TALLY in order to
use AVERAGE.
3) If you do not specify a break item ( ie, BY item
), the average is calculated over all records which
pass through the AVERAGE statement.
4) If you specify a break item, the average is
calculated and printed when IQL sees a change in the
indicated item.
5) You may specify more than one break item as long
as each is minor to one preceeding it. An average is
calculated for each such break item. When a change
in any break item occurs, a change is assumed to have
occurred in each break item to the right of it in the
AVERAGE statement. The purpose of this is to prevent
inadvertent overlap of minor break items over major
ones. For instance if we were averaging grade point
average for each sex in each school and we
encountered an all-girls school, AVERAGE GPA BY SEX
would give a misleading answer while AVERAGE GPA BY
SCHOOL, SEX. would give the correct one.
6) Since averaging is an arithmetic operation, the
item you average must be numeric. However the
item(s) controlling the break may be any type.
7) When AVERAGE prints, it constructs a line with
explanatory text on the left and the average on the
right. For break averages the text is made up of the
top and bottom dictionary titles for the break item,
the value of the break item, the top and bottom
titles for the averaged item, and the word 'AVG:'.
See the examples below.
8) You may override the automatic printing of an
average by using the statement SUMPRINT OFF in your
query. If you wish to turn on automatic printing of
the average (or any summary operation) use SUMPRINT
ON as appropriate. If you do turn automatic printing
of AVERAGE off, you must do your own printing as
described in the next paragraph.
8) You may give a name to the average 'bucket' itself
by using the form ( = variable ) at the end of your
AVERAGE statement. The variable name must start with
either 'X' or 'ZZ'. From this point on you may use
the variable just like any other item, including
using it in computations. One such usage is to
calculate percentages at the end of a query. Another
is so that you may print the average in a print line
with other data, often for printing summaries
directly under details.
EXAMPLES: (a) HEADING 'ORGANIZATIONAL BUDGETS'.
OPEN BUDGET-FILE.
AVERAGE BUDGET BY DIV, DEPT.
AVERAGE BUDGET.
might give:
HOME DEPT 421 ANNUAL BUDGET AVERAGE: 23,921.46
HOME DEPT 427 ANNUAL BUDGET AVERAGE: 37,446.00
HOME DEPT 433 ANNUAL BUDGET AVERAGE: 12,777.50
HOME DIV 110 ANNUAL BUDGET AVERAGE: 24,714.82
(b) HEADING 'PRINTING AVERAGES UNDER DETAIL'.
SUMPRINT OFF.
OPEN LABOR-DETAIL.
IF NEWGROUP OF DIV PRINT XACTUAL XLASTYR XCURR.
AVERAGE ACTUAL-HRS BY DIV ( = XACTUAL ).
AVERAGE LASTYR-HRS BY DIV ( = XLASTYR ).
AVERAGE CURR-HRS BY DIV ( = XCURR ).
PRINT ACTUAL-HRS LASTYR-HRS CURR-HRS.
**COMPUTE
FUNCTION: Computes a new value for a numeric item.
FORMAT: COMPUTE item = [(] item [)]
--<---- constant --<----
[+]
[-]
[*]
[/]
--------------<-----------
DISCUSSION: 1) The item whose value is computed, and all items
used in COMPUTE, must be numeric.
2) The computation follows the normal inside-out
algebraic rules pertaining to parentheses.
3) If no parentheses are used, or within parentheses,
multiplies and divides are done left to right, then
adds and subtracts are done left to right.
4) Constants may have a leading sign and may contain
imbedded decimal points. For integer constants you
should leave off the decimal point or imbed it (ie,
write 475 or 475.0 rather than 475.) to avoid any
possible confusion between a decimal point and a
period ending a statement.
5) Intermediate computation results are carried to
thirteen (13) integer and five (5) decimal places.
6) If a computation overflows (the integer part gets
too big) IQL prints and displays an error message,
truncates the integer, and continues.
7) Decimal places past the fifth are rounded back to
the fifth at each step of a computation.
8) You must leave at least one space on either side
of a parenthesis or arithmetic operator, ie for the
characters ( ) + - *. This is to avoid confusion
between operators and these characters in item names.
EXAMPLES: (a) HEADING "HIGH VOLUME//STORES".
OPEN STORES.
COMPUTE XRATIO = SALES / SQ-FT.
IF XRATIO GR 4.99 SORT BY DESCENDING SALES.
PRINT STORE-NAME, MANAGER, SALES, SQ-FT.
(b) HEADING 'SALES BONUSES'.
OPEN SALESMEN.
COMPUTE BONUS =
( WKLY-SAL * 52 ) * ( SALES - QUOTA ) / QUOTA.
IF BONUS LS 0 COMPUTE BONUS = 0.
AVERAGE BONUS. TOTAL BONUS.
PRINT SALESMAN, QUOTA, SALES, BONUS.
**COPY
FUNCTION: Copies the current record from the primary file out
to a new file.
FORMAT: COPY [RECORD] [TO "filename"]
DISCUSSION: 1) The copied file is always the same mode (6-bit or
ASCII) as the primary input file. If the primary
input file is a DBMS data base, the copy output is
ASCII.
2) COPY may be used after one or more SORT statements
have been used. in this case, the order of the
copied file is not the same as the original input
file but is the order after the most recent sort.
3) If you have changed the value of items in the
current record (via SET, RESET or COMPUTE), the
copied record contains these changed values. This
feature is useful for making systematic changes in
files.
4) If you use COPY under control of IF, only those
records where the relationship in the IF was
satisfied are copied out.
5) Unless you furnish the correct password(s), IQL
does not permit you to copy records when the primary
input file is protected at either the read or copy
level.
6) The copied file can be queried using the same
dictionary which you used to query the original file.
Be sure to furnish the new file name in the OPEN
statement so you query the copied and not the
original file.
7) If you do not use the filename option, IQL gives
the file the same name as the primary input file and
adds the extension ".OUT". The file is written on
device DSK.
8) If you use the filename option but the filename
does not contain a device, IQL uses the furnished
filename and writes out the copied file on device
DSK.
9) If you use the filename option and do furnish a
device, IQL writes out the file under the furnished
name and on the specified device.
10) IQL always writes output files in the same
Directory in which the job is being run.
11) If a file already exists which has the same name
as the one IQL is to write, IQL writes over the old
file.
EXAMPLES: (used in a complete query):
OPEN ACCOUNTS.
IF VENDOR-NO = 100 SET SALESMAN TO 'JONES'.
COPY TO "ACCTS.SEQ".
OPEN ACCOUNTS.
IF BALANCE GR 999 SORT ACCOUNTS BY BALANCE.
COPY RECORD.
**CREATE
FUNCTION: Writes out a file whose records contain only specific
items and are formatted as specified in the 'CREATE'
statement itself. CREATE records may contain record
or data items for any input file as well as working
items or filler positions.
FORMAT: CREATE ["filename"] [=] item
literal
FILLER = integer
--------<----------
DISCUSSION: 1) The record created is formatted from left to right
by putting the item value side by side in the order
named in your CREATE statement. Numeric variable
values are written as numeric (not binary) with 13
integer and 5 decimal places. Binary items are
converted to numeric before being put in the created
record.
2) Created files are always written in ASCII mode.
3) If you do not use the filename option, CREATE
writes the created file out on device DSK under the
name CREATE.OUT.
4) If you use the filename option but do not furnish
a device, CREATE uses the furnished filename and
writes the file out on device DSK.
5) If you use the filename option and do furnish a
device, CREATE writes out the file under the
furnished filename and on the specified device.
6) IQL always writes output files in the same
Directory in which the job is being run.
7) If a file already exists with the same filename as
the one CREATE is to write, it writes over the old
file.
EXAMPLE: HEADING 'HIGH VALUE//INVENTORY ITEM//ANALYSIS'.
TITLES X = 'ITEM//VALUE'.
PICTURE X = '$$$,$$$.99'
OPEN INVENTORY PRICES.
FIND PRICE-PARTNO = INVENTORY-PARTNO.
IF PRICE GR 100 COMPUTE X = PRICE * QTY
CREATE 'COST.SEQ' =
PARTNO,PRICE,QTY,FILLER = 5,'VALUE',X
PRINT PARTNO, PRICE, QTY, X.
**DATE
FUNCTION: (a) Turns report dating on or off; or (b) Gives your
report a specific date value to print in page
headings.
FORMAT: DATE [ON]
[OFF]
constant
literal
item
DEFAULTS: If you do not use DATE in your query, report dating
is automatically turned on - IQL puts the date of the
run in report headings.
DISCUSSION: 1) You may turn report dating on or off, or change
the value of the report date, at any point.
2) If you use DATE OFF, IQL does not put anything at
the top left of the page heading.
3) If you use DATE ON, report dating is turned on and
IQL puts the date the report is run, formatted
MM/DD/YY, at the top left of each page heading.
4) If you furnish a value in DATE, report dating is
turned on and the value is printed at the top left of
the page heading. The value may be a constant, a
literal, or an item value. If it is a constant, it
must contain six digits and it is printed with
slashes inserted after the 2nd and 4th digits. If it
is a literal, it is printed exactly as furnished. If
it is an item value, it is edited per the picture in
the dictionary entry for that item.
5) RPTDATE is a synonym for DATE. It is carried over
from previous versions of IQL. Use DATE.
EXAMPLES (individual commands):
DATE ON
DATE OFF
DATE 060377 (prints as 06/03/77)
DATE '3 JUNE 1977' (prints as 3 JUNE 1977)
**DISPLAY
FUNCTION: (a) Allows you to display messages or reports on your
terminal while the query is running, or (b) Turns
automatic terminal display of reports on or off.
FORMAT: (a) DISPLAY item
literal
integer
-----<------
(b) DISPLAY [ON]
[OFF]
DEFAULTS: If you do not use DISPLAY ON or DISPLAY OFF in your
query, IQL turns display mode on.
DISCUSSION: 1) Lines created by DISPLAY go only to your terminal.
They are single spaced. No column titles are
displayed.
2) Item values are laid out in your display line from
left to right as they occur in your DISPLAY
statement. Unless you specify otherwise as described
below, three spaces are left horizontally between
item values.
3) If you use an integer in your display statement,
that many spaces are left between item values for the
rest of the display line or until IQL encounters
another such spacing integer. The use of a spacing
integer overrides any other horizontal spacing.
4) If you have not used a spacing integer and use
HSPACE in your query, IQL leaves as many spaces
between items as you specify in the HSPACE statement.
5) Before being put in the display line, item values
are edited according to the picture in the dictionary
(or any override picture you furnish).
6) Generally DISPLAY is used for short prompts or
progress report messages. To put out reports on your
terminal, use PRINT; it has much more powerful
built-in formatting capability.
EXAMPLE: DISPLAY 'ENTER CUT OFF TIME'.
ACCEPT XTIME.
OPEN RACE-RESULTS.
IF RACE-TIME LEQ XTIME TALLY XRACER-NAME.
IF XTALLY GEQ 100
DISPLAY 'TOO MANY BEAT THIS TIME; LOWER LIMIT'
GO TO XT.
GO TO NR.
**FIND-ITEM
FUNCTION: Does a sequential read of a secondary (either the
second or third named file in the 'OPEN' statement)
file. Permits you to position this file on either a
specific value or the value of some other data item.
FORMAT: FIND data-item = item [FROM BEGINNING]
literal
NEXT
DEFAULTS: If you do not use FROM BEGINNING, IQL starts reading
from the current position of the file; ie, the first
record read is the next after the current record.
DISCUSSION: 1) You may use FIND item on either sequential or ISAM
files. For the latter it is useful for positioning
on other than the key item.
2) The item named on the left of the = tells IQL wich
file it is to read. This item name must be unique to
the dictionary describing that file. If it is not
unique, make it so by prefixing the name of the
dictionary and a dash (ie: SSNO in PERSONNEL is the
same as PERSONNEL-SSNO).
3) IQL searches the file until it either satisfies
the = relationship or hits the end of the file. If
it hits the end of the file, it returns an all spaces
record and continues.
4) You may test to see if you are at the end of a
file by using IF EOFn. See the discussion in the
section describing IF.
EXAMPLES: OPEN PAYROLL, PERSONNEL.
FIND PERSONNEL-SSNO = PAYROLL-SSNO.
PRINT NAME, SSNO, WITHHOLDING-RATE.
In the above example, the social security number is
called SSNO in both the PAYROLL and PERSONNEL
dictionaries. In the FIND statement it is necessary
to qualify them. In the PRINT statement, we can use
SSNO since by that time they are the same.
**FIND-KEY
FUNCTION: Reads ISAM (Indexed Sequential Access Method) files
randomly based on either the value of a data item or
one or more specific values. Permits reading on
either full or partial keys.
FORMAT: (a) FIND KEY = literal
KEYn literal THRU literal
literal THRU EOF
-------------<--------------
(b) FIND KEY = item
KEYn
DISCUSSION: 1) If you do not use FIND KEY and you are processing
an ISAM file, IQL reads the ISAM file sequentially.
This is useful for searches on items which are not
key items.
2) If you use FIND KEY = literal, IQL goes directly
to the record which has that value of the literal as
the full or partial (leading portion) key. It gives
an end of file response if it does not find the
record.
3) If you use a range of literals (literal THRU
literal or literal THRU EOF), IQL starts with the
first record whose key is in the range, and each time
it executes the FIND command it reads the next record
in the range. If you use several such literal
ranges, when it exhausts one range it goes to the
first record in the next. The end-of-file condition
occurs only when the last range is exhausted. It is
not necessary that the ranges be in any specific
order of key.
4) If you use FIND KEY = item, IQL looks for a record
which has as a key the value of the indicated item.
If it does not find such a record, it returns an all
spaces record and continues.
5) To read your primary file, use the form FIND KEY
or FIND KEY1. To read your secondary file, use FIND
KEY2, and to read your tertiary file, use FIND KEY3.
**FIND-DBMS
FUNCTION: Reads DBMS data bases.
FORMAT: (a) FIND recordname USING item
(b) FIND NEXT recordname RECORD OF setname SET
PRIOR areaname AREA
FIRST
LAST
(c) FIND OWNER RECORD OF setname SET
(d) FIND recordname RECORD
DISCUSSION: 1) The FIND format shown above is the same format as
DBMS FIND statements in COBOL.
2) No GET is necessary; IQL treats FIND as if it
were both FIND and GET.
3) If IQL cannot find a record, or encounters any
other data base error, it returns an error status in
the special item ERROR-STATUS and the error count in
special item ERROR-COUNT. You may test ERROR-STATUS
and ERROR-COUNT for specific values. Please refer to
your DBMS manual for the meaning of these
error/status codes. For convenience of reference
here: 307 means 'end of area' and 326 means 'record
not found'. Often you will end your query on
receiving Error-status 307:
IF ERROR-STATUS = 307 GO TO XT.
4) If you are using FIND FIRST or FIND NEXT be
careful to not put IQL into an unending loop.
5) You may suppress currency updates for ALL, RECORD,
AREA or SET by appending a Suppression Clause to the
FIND formats described above. The format of a
Suppression Clause is:
SUPPRESS ALL CURRENCY UPDATES
RECORD
AREA
SET
EXAMPLES:
HEADING 'BRANCH//SORTED'.
OPEN MASTER.
IF FIRSTIME FIND FIRST BRANCH RECORD OF AREA1 AREA
ELSE FIND NEXT BRANCH RECORD OF AREA1 AREA.
IF ERROR-STATUS = 307 GO TO XT.
IF ERROR-STATUS NEQ 0 GO TO QT.
SORT MASTER BY BRANCH-NUMBER.
PRINT BRANCH-NUMBER, BRANCH-NAME.
The above example prints out, in branch number
sequence, all the branch names and their numbers.
**FORM-LINES
FUNCTION: Specifies the number of printed lines from
perforation to perforation of your paper. IQL uses
this count to position at the top of the each page
when output is on a terminal.
FORMAT: FORM-LINES integer
DEFAULTS: If you do not use FORM-LINES in your query, IQL uses
a count of 66 printed lines from one perforation to
the next.
DISCUSSION: 1) The companion to FORM-LINES is PAGE-LINES.
2) If the constant in FORM-LINES is less than the
current setting of PAGE-LINES, IQL accepts the change
but also resets PAGE-LINES down to the new value of
FORM-LINES. In other words, the system does not
permit more lines per page than lines per form.
3) FORM-LINES and PAGE-LINES are useful when you are
preparing reports on a terminal or a printer and the
paper is other than standard size.
EXAMPLE: FORM-LINES 44.
PAGE-LINES 36.
OPEN MASTER.
PRINT TITLE, PURPOSE, AMOUNT.
**GO
FUNCTION: Sends control to (a) a designated statement, (b) to
read the next record, (c) end the query stage, or (d)
end the query run.
FORMAT: GO TO NR
XT
QT
integer
DISCUSSION: 1) if you use GO TO NR, IQL goes immediately to the
statement just after the OPEN or SORT which begins
the current stage of the query. Unless you are doing
your own reading of a data base or an ISAM file, IQL
does a sequential read of the next record of the
primary file at this point.
2) If you use GO TO XT, IQL closes out the current
stage of the query, closes any open files, wraps up
any in-progress summary statements and goes to the
next stage of the query. If there is no next stage,
IQL goes back up to Assistance mode. Do not use GO
TO XT to get from one report to the next in a
multiple report query; use GO TO integer, where
integer is the next REPORT statement. See the
examples below.
3) If you use GO TO QT, IQL closes any open files,
wraps up any in-progress summary statements and goes
back up to Assistance mode regardless of whether
there is another stage to the query. The purpose of
GO TO QT is to let you terminate a multi-stage query
at any point.
4) If you use GO TO integer, the integer must be a
statement number used elsewhere in this stage of your
query. This form of GO TO is useful for routing
control in a query. Be sure you do not route control
out of the current stage; the results are
unpredictable.
5) Each query acts as if it had GO TO NR. as the
last statement in each stage; it is not necessary to
write it.
EXAMPLES: OPEN ACCOUNTS-RECEIVABLE.
IF STATUS NOT EQ 'A' GO TO NR.
IF AMT LS 1000 GO TO NR.
TALLY ACCT ( = X ).
IF X GEQ 500 PRINT 'TOO MANY; KICK TEST AMOUNT'
GO TO QT.
SORT BY DESCENDING AMT, ACCOUNT.
REPORT 1.
IF ZIP LEQ 50000 GO TO 10.
HEADING 'WESTERN HIGH BALANCE ACCTS RECEIVABLE'
'//ATTN: PHYLLIS CHAMBLISS'.
PRINT ACCT, AMT, VENDOR, CREDIT, DATE.
GO TO 20.
10 REPORT 2.
HEADING 'EASTERN HIGH BALANCE ACCTS RECEIVABLE'
'//ATTN: JOSEPH LEGUIN'.
PRINT ACCT, AMT, VENDOR, CREDIT, DATE.
20 SORT BY STATE, DESCENDING AMT.
HEADING 'HIGH ACCTS RECEIVABLE BY STATE'.
PRINT STATE, ACCOUNT, AMNT.
**HEADING
FUNCTION: (a) turns automatic page headings on or off, or (b)
furnishes specific text for page headings.
FORMAT: (a) HEADING ON
OFF
(b) HEADING literal
item
integer
------<------
defaults: If you do not use HEADING in your query, headings are
automatically turned on and the heading text in the
center is blank.
DISCUSSION: 1) You may turn headings on or off at any point and
as often as necessary.
2) If you have turned headings off, IQL starts
printing the body of the report as soon as it goes to
a new page.
3) If headings are turned on, when IQL goes to a new
page it prints a page heading which consists of the
report date on the top left, a page number on the top
right and one or more lines of report heading text in
the center. You may turn off or set any or all of
these ingredients of the page heading.
4), If you use form (b), headings are turned on.
5) The text in form (b) is exactly the same as for a
print line with the exception that if IQL sees a
double slash (//) in a literal it starts a new line.
Note that since you may use items in the heading,
part or all of the heading may come from the current
record or variable values.
6) Each line of heading text is centered at the top
of each page. The "center" is halfway between the
current left and right margins.
7) If you are creating only one report, the query
will run faster if you put your HEADING statement
before your OPEN statement so that it is executed
only once.
8) Headings, once set, stay set until you change
them.
9) 'RESUMEHEADING' is a synonym for 'HEADING ON' and
'NOHEADING' is a synonym for 'HEADING OFF'. These
formats are carried over from earlier releases of
IQL. HEADING ON and HEADING OFF are the recommended
formats. The older formats may not be supported in
future versions of IQL.
10) Also see: NEWPAGE, PAGING.
EXAMPLES (used in a query):
HEADING OFF
OPEN ACCOUNTS
IF FIRSTIME PRINT 'THIS IS MY OWN CUSTOM HEADING'
PRINT ACCOUNT, BUYER, BALANCE.
HEADING "ACCOUNTS//PAYABLE//SUMMARY BY DEPT", DEPT.
OPEN PAYABLES.
SORT BY DEPT, PO-DATE.
IF NEWGROUP OF DEPT NEWPAGE.
PRINT PO-DATE, VENDOR, APPROVAL, AMOUNT.
**HOLD
FUNCTION: Holds the value of each named item in a special
holding area so you may retrieve it at any time.
FORMAT: HOLD item
---<---
DISCUSSION: 1) You may HOLD any numeric or alpha item as well as
numeric or alpha variables.
2) To refer to a held item, prefix the item name with
HELD-. For instance: HOLD NAME... PRINT HELD-NAME.
3) A held value stays intact until you hold that
specific item again.
4) The initial value of a held item is blank for an
alpha item and zero for a numeric item.
EXAMPLES: HEADING "DUPLICATED NAMES".
OPEN CLIENT-FILE.
SORT BY NAME.
IF NAME = HELD-NAME PRINT NAME.
HOLD NAME.
HEADING "BLIZZARD//DAMAGE//BY CITY".
SUMPRINT OFF.
OPEN DAMAGE-REPORTS.
SORT BY CITY.
IF NEWGROUP OF CITY PRINT HELD-CITY, X.
TOTAL DAMAGE BY CITY ( = X ).
HOLD CITY.
**HSPACE
FUNCTION: Sets the default horizontal spacing increment that
IQL uses between items when setting up a print or
display line.
FORMAT: HSPACE integer
DEFAULTS: If you do not use HSPACE in your query, IQL puts
three spaces between items in a print or display
line.
DISCUSSION: 1) You may use HSPACE anywhere and as often as
necessary.
2) If you use specific horizontal spacing in a PRINT
statement it overrides the current HSPACE setting.
The latter remains unchanged.
3) If you change HSPACE in one report of a multiple
report query, that setting carries from one report to
the next, unless you change it.
4) If you are only using one HSPACE for all reports,
put the HSPACE statement before the OPEN so it is
executed only once. The query will run faster.
EXAMPLES: HSPACE 5.
LMARGIN 15.
OPEN PUBLICATIONS.
PRINT LIB-CONGRESS-NO, AUTHOR, TITLE.
OPEN PUBLICATIONS.
REPORT 1.
HSPACE 3. (to reset from next report)
PRINT AUTHOR, TITLE.
REPORT 2.
HSPACE 10.
IF CAT = 'REF' PRINT PUB-DATE,TITLE,PUBLISHER.
**IF
FUNCTION: Specifies a condition for IQL to test. Depending on
whether the condition is satisfied or not, the query
statements which follow are carried out. Control of
the IF ends when IQL encounters a period.
FORMAT: IF item [NOT] relation item AND .. [ELSE ..]
constant constant OR
literal literal
----------------<---------------------
IF FIRSTIME .. [ELSE ..]
LASTIME
BOF1
BOF2
BOF3
EOF1
EOF2
EOF3
DISCUSSION: 1) Relationships may be written in any of the
following ways:
RELATION
equal EQ EQUALS = IS
not equal NQ NE <> NEQ
less than LS LT < LESS
greater than GR GT > GREATER
less than or equal to LEQ LE <= LQ
greater than or equal to GEQ GE >= GQ
2) Note that you may use NOT to reverse a
relationship. For instance: NOT EQ is the same as
NE; and NOT LEQ is the same as GR.
3) You may combine simple relationships to make a
complex relationship by joining them with AND or OR.
You may use parentheses to clarify complex
relationships. Within parenthese, or if you do not
use parentheses, all OR's are evaluated before any
AND's.
4) If you use ELSE, the statements which follow are
carried out only if the condition is not satisfied.
5) If you are comparing two numbers, the decimal
points are lined up and any necessary leading or
trailing zeroes are supplied before the comparison is
made.
6) If you are comparing two alpha items or literals,
any necessary trailing spaces are added to the
shorter item before the comparison is made.
EXAMPLES: (a) cutting off a query:
HEADING "SALES DETAIL".
OPEN SALES.
PRINT PO-NO,ACCOUNT.,LINE,ITEM,QTY,AMOUNT.
COMPUTE X = X + 1. IF X GEQ 50 GO TO XT.
(b) comparing against a held item; exception report:
HEADING 'DUPLICATES IN INVENTORY FILE'.
OPEN INVENTORY.
SORT BY PART-NO.
IF FIRSTIME HOLD PART-NO GO TO NR.
IF PART-NO EQ HELD-PART-NO
PRINT PART-NO GO TO NR.
HOLD PART-NO.
(c) using ANDs and ORs:
HEADING 'CANDIDATES FOR EXECUTIVE BOARD'.
OPEN PERSONNEL.
IF JOB = 'EXC' OR JOB EQ 'MGR' GO TO 10.
IF SALARY-CLASS GEQ 7 AND YR-HR LEQ 68 GO TO 10.
GO TO NR.
10 PRINT NAME,JOB,DIV,DEPT,SALARY-CLASS,YR-HR.
(d) using parentheses and ELSE:
HEADING "REGION 9 SPECIAL ATTENTION ACCOUNTS".
OPEN ACCOUNTS.
IF ( LASTYR GEQ 50000 OR THISYR GEQ 25000 OR
( RATING = "A" AND PROJECTION GEQ 50000 ) )
AND ( STATE EQ "CA", "OR", "WA", "UT" )
PRINT CUSTNAME,STATE,LASTYR,THISYR
TOTAL LASTYR-SALES
ELSE TALLY CUSTNAME.
**LMARGIN
FUNCTION: Sets the left margin for printing reports.
FORMAT: LMARGIN integer
DEFAULTS: If you do not use LMARGIN in your query, IQL uses a
left margin of 1.
DISCUSSION: 1) You may use LMARGIN any place in your query, and
as often as necessary.
2) LMARGIN settings are carried from one multiple
report to the next unless you use LMARGIN to change
them.
3) LMARGIN affects all of: page headings, summary
lines and detail print lines.
EXAMPLES: (a) LMARGIN 15.
HEADING 'MEMBER EXTRACT'
OPEN MEMBER-FILE.
IF SUBSCRIPTION GEQ 1000
PRINT NAME, DATE, SUBSCRIPTION.
(b) OPEN SALES.
SORT BY STATE.
REPORT 1.
HEADING 'SALES DETAIL'.
LMARGIN 1. (to reset from 2nd report)
PRINT ACCT, SALESMAN, GROSS, PROJECTION.
TOTAL GROSS. TOTAL PROJECTION.
REPORT 2.
LMARGIN 10.
HEADING 'HIGH VOLUME//SUMMARY'.
IF GROSS GEQ 10000
TALLY ACCOUNT BY STATE
TOTAL GROSS BY STATE.
**MAXIMUM
FUNCTION: Calculates the maximum value of a numeric item (a)
over an entire report or (b) within a specific value
of one or more controlling items (breaks).
FORMAT: MAXIMUM item [BY item ] [ ( = variable ) ]
---<--
DEFAULTS: If you do not specify otherwise in your query,
MAXIMUM both calculates the requested maximum and
prints the result at the proper time.
DISCUSSION: 1) MAXIMUM performs two functions: first, it
calculates the correct maximum, and second it prints
the maximum in your report at the proper time.
2) MAXIMUM is a stand-alone statement. It is not
necessary that you use any other summary statement to
use MAXIMUM.
3) If you do not specify a break item (ie, BY item),
the maximum is calculated overall records which pass
through the MAXIMUM statement.
4) If you specify a break item, the maximum is
calculated and printed on the change in the indicated
item. If you specify more than one break item,
MAXIMUM breaks on a change in any of the break items.
5) Since taking a maximum is an arithmetic operation,
the item you get the maximum of must be numeric.
However, the item controlling the break may be any
type.
6) When MAXIMUM prints, it constructs a line with
explanatory text on the left and the maximum on the
right. The explanatory text is made up of the top
and bottom dictionary titles for the break item, the
value of that item before the break, the top and
bottom titles for the item whose maximum is being
taken, and 'MAX:'. For overall maximums, the titles
and value for the break item are replaced with
'OVERALL'.
7) You may override the automatic printing of the
maximum by using SUMPRINT OFF in your query. If you
wish to turn automatic printing of the maximum back
on use SUMPRINT ON as appropriate. If you do turn
summary printing off, you must do your own printing
as described in 8 below.
8) You may give a name to the maximum bucket itself
by using the for ( = variable ) at the end of your
maximum statement. The variable name must start with
'X' or 'ZZ'. From this point on you may use the
variable just like any other item. The most frequent
use of giving a name to a maximum bucket is so you
may use it in a print line with other items, often
for printing summaries under detail.
EXAMPLES: OPEN PAYROLL.
SORT BY JOB-CLASS.
MAXIMUM SALARY BY JOB-CLASS.
MAXIMUM SALARY.
SUMPRINT OFF.
OPEN TEAM-SCORES.
MINIMUM SCORE ( = XMIN ).
MAXIMUM SCORE ( = XMAX ).
IF LAST TIME
COMPUTE XPCT = 100 * ( XMAX - XMIN ) / XMIN
PRINT 'MAX:MIN PCT ' XPCT.
**MINIMUM
FUNCTION: Calculates the minimum value of a numeric item (a)
over an entire report or (b) within a specific value
of one or more controlling items (breaks).
FORMAT: MINIMUM item [BY item ] [ ( = variable ) ]
---<--
DISCUSSION: 1) MINIMUM performs two functions: first, it
calculates the requested minimum and second, it
prints the minimum in your report at the proper time.
2) MINIMUM is a stand-aone statement; it is not
necessary for you to use another summary statement in
order to use MINIMUM.
3) If you do not specify a break item ( ie, BY item
), the minimum is calculated over all records which
pass through the MINIMUM statement.
4) If you specify a break item, the minimum is
calculated and printed on the change in the indicated
item. If you specify more than one break item,
MINIMUM breaks on a change in any of the break items.
5) Since taking a minimum is an arithmetic operation,
the item you take the minimum of must be numeric.
However the break item may be any type.
6) When MINIMUM prints, it constructs a line with
explanatory text on the left and the minimum on the
right. For break minimums, the explanatory text is
made up of the top and bottom dictionary titles for
the break item, the value before the break, the top
and bottom titles for the item whose minimum is being
taken, and the word 'MIN:'. For non-break minimums,
the break item titles and value are replaced by
'OVERALL'.
7) You may override the automatic printing of the
minimum by using SUMPRINT OFF in your query. To turn
automatic printing back on, use SUMPRINT ON as
appropriate. If you do turn off automatic printing,
you must do your own printing as described in 8
below.
8) You may give a name to the minimum bucket itself
by using the form ( = variable ) at the end of your
MINIMUM statement. The variable name must start with
'X' or 'ZZ'. From this point on you may use the
variable just like any other item, including using it
in computations. One frequent such use is for
calculating percentages. Another is so you may use
the minimum in a print line with other items, often
for printing minimums under detail.
EXAMPLES: OPEN ACCOUNTS.
MINIMUM BALANCE BY ACCOUNT-CLASS.
TOTAL BALANCE BY ACCOUNT-CLASS.
MINIMUM BALANCE. MAXIMUM BALANCE.
TOTAL BALANCE. AVERAGE BALANCE.
SUMPRINT OFF.
OPEN INVENTORY.
MINIMUM QUANTITY ( = ZZQTY ).
MINIMUM VALUE ( = ZZVAL ).
IF NEWGROUP OF CLASS
PRINT ZZQTY, ZZVAL.
PRINT QUANTITY,VALUE,CLASS.
**NEWPAGE
FUNCTION: Goes immediately to a new page of the current report.
FORMAT: NEWPAGE
DISCUSSION: 1) Any time you use NEWPAGE, IQL goes immediately to
a new page of the report. This happens regardless of
whether paging is on or off.
2) If you have turned paging off, NEWPAGE goes to a
new page anyway, but it does not turn paging back on.
3) When IQL pages it prints a page heading which
consists of the report date on the left, the page
number on the right, and one or more lines of report
heading prose in the center. It does this before
starting to print the body of the report on that
page. You may individually turn off or set any of
these ingredients of the page heading.
4) Also see: HEADING, PAGING
EXAMPLE (used in an IF):
HEADING 'BUDGET SUMMARY BY DEPARTMENT'.
OPEN BUDGET-FILE.
SORT BY DEPT, ACCOUNT.
IF NEWGROUP OF DEPT NEWPAGE.
TOTAL BUDGET-AMOUNT BY ACCOUNT.
TOTAL BUDGET AMOUNT BY DEPT.
**OPEN
FUNCTION: Tells IQL which dictionaries and which files to use
in this query.
FORMAT: OPEN dictionary ["filename"]
----------<---------------
DEFAULTS: If you do not furnish a filename in quotes after a
dictionary name, IQL reads from the file whose name
it finds in the dictionary.
DISCUSSION: 1) Only one OPEN statement may be used in a query.
There must be an OPEN statement before any SORT
statements.
2) You may use from one to three dictionary names in
an OPEN statement, depending on how many files you
wish to process in the query.
3) The file described by the first dictionary in the
OPEN statement is called the "Primary" file. This
file controls this phase of the query. If it is a
sequential file, IQL automatically reads it, the read
coming immediately after the OPEN statement. If the
primary file is an indexed sequential (ISAM) file and
you do not do your own reading with a FIND KEY
statement, IQL automatically reads it sequentially.
3) If you use more than one dictionary name in OPEN
the files described by the second and third
dictionaries are 'subordinate' files. You must do
your own reading of these files by appropriate use of
FIND item or FIND KEYn. Normally subordinate files
are read under control of information you get from
the Primary file.
5) When IQL comes to the last statement in the
FIRST stage or it encounters a "GO TO NR", IQL goes
directly to the statement just after the OPEN. If it
is reading sequentially as described above, it reads
the next record before carrying out the statement.
6) Any statements which come before the OPEN
statement are carried out only once at the beginning
of the query and before any records are read. The
query runs faster if you put one-time formatting
statements here when you are not going to change
formats during the run.
**PAGE
FUNCTION: Specifies a new page number, overriding automatic
page numbering.
FORMAT: PAGE integer
variable
item
DEFAULTS: If you do not use PAGE in your query, IQL starts page
numbers at 1 and automatically increases the page
number each time it pages.
DISCUSSION: 1) You may use any of: integer constants, variables
or numeric data items on the right of a PAGE command.
If the quantity is not numeric, the results are
unpredictable.
**PAGE-LINES
FUNCTION: Specifies the maximum number of printed lines you
wish IQL to put on each page of your report.
FORMAT: PAGE-LINES integer
DEFAULTS: If you do not use PAGE-LINES in your query, IQL uses
a count of 58 printed lines as the maximum for each
page of your report.
DISCUSSION: 1) The companion to PAGE-LINES is FORM-LINES.
2) The difference between FORM-LINES and PAGE-LINES
is the number of blank lines at the top and bottom of
each page.
3) If the constant in PAGE-LINES is greater than the
current setting of FORM-LINES, IQL accepts the change
but also resets FORM-LINES up to the new value of
PAGE-LINES. In other words, the system does not
permit more lines per page than lines per form.
4) FORM-LINES and PAGE-LINES are useful when you are
preparing reports on a printer or terminal and the
pagper is other that standard size.
EXAMPLE: FORM-LINES 44.
PAGE-LINES 36.
OPEN MASTER.
PRINT TITLE, PURPOSE, AMOUNT.
**PAGING
FUNCTION: Turns automatic report paging on or off.
FORMAT: PAGING [ON]
[OFF]
DEFAULTS: If you do not use PAGING in your query, paging is
automatically turned on - IQL goes to a new page when
it reaches the bottom of the current page.
DISCUSSION: 1) You may turn paging on or off at any point, and as
often as necessary.
2) If you have turned paging off, IQL prints right
past the perforation (if any) on the paper.
3) When IQL pages it prints a page heading which
consists of the report date on the left, the page
number on the right, and one or more lines of report
heading prose before it starts to print the body of
the report. You may individually turn of or set any
or all of these ingredients of the page heading.
4) If paging is off, then headings are automatically
off also. If you want a heading at the beginning of
the run, use PAGING OFF after your first PRINT
statement.
5) 'RESUMEPAGING' is a synonym for 'PAGING ON' and
'NOPAGING' is a synonym for 'PAGING OFF'. These
formats are carried over from earlier releases of
IQL.
6) Also see: HEADING, NEWPAGE, DATE, PAGE.
EXAMPLES: (used in a query):
OPEN ACCOUNTS.
REPORT 1.
PAGING OFF.
ACROSS 3.
PRINT ACCOUNT-NAME,3.
PRINT CITY,1,STATE,ZIP,3.
REPORT 2.
PAGING ON.
HEADING "SUMMARY OF BALANCES BY ZIP".
TOTAL BALANCE BY ZIP.
PRINT ACCOUNT-NAME, BALANCE.
**PICTURE
FUNCTION: Furnishes a picture for one or more items. May be
used either to override dictionary pictures or to
furnish pictures for variables.
FORMAT: PICTURE item = "picture"
------------<---------
DISCUSSION: 1) You may use PICTURE anywhere and repeatedly.
However, usual usage is to set a picture for a full
run; in this case, put the PICTURE statement before
your OPEN statement so it is set up only once.
2) The rules IQL uses for editing are the same for
pictures in dictionaries and pictures you provide via
PICTURE. They are:
(a) Pictures for alpha items may contain any
character. The character "X" indicates a
substitution position - a character from the item
is substituted for each X. Fill in of characters
from the item value proceeds left to right. If
there are not enough substitution positions in the
picture, IQL truncates the item; if there are too
many substitution positions, IQL fills in spaces.
(b) Pictures for numeric items may contain only the
characters 9 Z $ ( ) . S or R. The characters 9 Z
$ R designate substitution positions; their
specific functions are described below. In editing
a numeric item, IQL lines up the item with the
decimal point (if any) then substitutes from the
decimal point outwards.
(c) Each 9 is a substitution position - the
corresponding digit from the item value is filled
in. A 9 stops any zero suppression or floating
characters from the left, and a 9 stops rounding
via R from the right.
(d) Z may be used only on the left of the picture.
Z positions indicated where zero suppression is to
be used. Only a single S or $ may be to the left
of the leftmost Z, and only commas or decimal
points may be used between Z's.
**PRINT
FUNCTION: Specifies a print line in a report.
FORMAT: PRINT item [,]
literal
integer
------<-------
DEFAULTS: If you do not specify otherwise, IQL turns titling
on, uses three spaces horizontally between item
values and single spaces vertically.
DISCUSSION: 1) Item values are laid out in the print line from
left to right as they occur in your PRINT statement.
2) Item values are edited according to their picture
in the dictionary (or any override picture you use in
the query) before being put in the print line.
3) The integer shown in the format paragraph above
overrides standard spacing for this PRINT statement.
It sets the horizontal spacing increment to the
integer value for the rest of the print statement or
until you use another such spacing integer. For
instance, if you had used HSPACE 2 earlier:
PRINT NAME, STREET, 5, PHONE, TITLE, 1, YEAR
gives two spaces between NAME and STREET, five spaces
between STREET and PHONE, five spaces between PHONE
and TITLE, and one space between TITLE and YEAR.
4) If you do not use a spacing integer and use HSPACE
in your query, as many spaces are left between item
values as you designate with HSPACE.
5) If your print line is too long for the space
between your current left and right margins, IQL
truncates the print line on the right and continues.
No error message is issued.
6) If titling is on, IQL prints two lines of column
titles at the top of each new page. In laying out
space for each item horizontally, IQL uses the longer
of the edited item length or the length of the column
title. Column titles for alpha items are left
justified. Column titles for numeric items are right
justified.
7) If titling is on, and the current print line is
from a different PRINT statement than the preceding
line, IQL prints titles before printing the body of
the current line.
8) If titling is off, IQL prints only the current
line. In laying out this line, it ignores the title
lengths. Note that if you print a line turn titling
off, and print the line again, there may be a
difference in alignment since the length of the
column titles may affect the first line but not the
second.
9) Vertical spacing is done just before the print
line (and title if any) is printed.
EXAMPLES: (a) OPEN PERSONNEL.
PRINT LAST-NAME,FIRST-NAME,INITIAL,OFFICE-PHONE.
(b) SUMPRINT OFF.
PICTURE X = '$$$$,$$$.99'.
OPEN RETAIL-OUTLETS.
COMPUTE X = SALES / SQ-FT.
TOTAL SALES ( = XSALES ).
PRINT STORE,MGR,"SALES/SQ FT RATIO:",1,X.
IF LASTTIME PRINT 'TOTAL SALES:', XSALES.
**REPORT
FUNCTION: Denotes a specific report in a multiple report query
run. All print, report formatting, or heading
commands between this REPORT command and the next (or
the end of the query) pertain to that specific
report.
FORMAT: REPORT integer
DEFAULTS: If you do not use REPORT anywhere in your query, IQL
produces a single report and acts as if you had given
REPORT 1 at the beginning of the query.
DISCUSSION: 1) Report number 1 is always routed directly to the
printer. All other reports are spooled out to a disk
file and later separated and printed or displayed at
the end of the run.
2) When you use a report format setting (ie LMARGIN
10) or heading (ie HEADING "EXCEPTION REPORT" ) that
same setting is used in each subsequent report unless
you change it.
EXAMPLES: OPEN TICKETS.
REPORT 1.
RMARGIN 72.
HEADING "SEPTEMBER//TICKETS".
IF MONTH = 'SEPT'
PRINT NAME, DESTINATION, AIRLINE, FLIGHT, AMT.
REPORT 2.
RMARGIN 132.
HEADING 'BURMUDA EXCURSIONS - FALL'.
IF DESTINATION = 'BERMUDA'
AND MONTH = 'SEPT', 'OCT', 'NOV'
PRINT NAME, AGENT, HOTEL, DATE, PLAN.
**RESET
FUNCTION: Resets the value of an item or variable.
FORMAT: RESET item
---<---
DISCUSSION: 1) Alphabetic or alphanumeric items or variables are
reset to all spaces.
2) Numeric items or variables are reset to zero.
3) RESET X is equivalent to COMPUTE X = 0.
RESET A is equivalent to SET A TO ' '.
EXAMPLES: HEADING 'BONUS PROJECTION'.
OPEN SALES-FILE.
COMPUTE XBONUS = SALARY * ( SALES - QUOTA ) / QUOTA.
IF XBONUS LEQ 0 RESET XBONUS.
PRINT NAME, SALES, QUOTA, XBONUS.
**REWRITE
FUNCTION: Rewrites a record back in place in an ISAM (Indexed
Sequential Access Method) file.
FORMAT: REWRITE [RECORD]
DISCUSSION: 1) The record rewritten is the last one read from the
ISAM file. You may use REWRITE even if you are
reading the ISAM file sequentially (ie, you did not
use FIND KEY in your query.
2) If you have changed information in the record, the
changed values are rewritten into the file as part of
the rewritten record.
3) You should be careful in using REWRITE since it
writes over the original information in the ISAM
file. It is a good idea to protect ISAM files with a
fairly high level password in the dictionary at the
FD rewrite password level.
EXAMPLES: AUTHORITY Q2R3YA.
OPEN PERSONNEL.
FIND KEY = '00010', '00025' THRU '00047'.
SET ASSIGNMENT TO 'SUPERVISOR'.
REWRITE RECORD.
**RMARGIN
FUNCTION: Sets the right margin for printing reports.
FORMAT: RMARGIN integer
DEFAULTS: If you do not use RMARGIN in your query, IQL uses a
right margin of 132.
DISCUSSION: 1) You may use RMARGIN any place in your query, and
as often as necessary.
2) RMARGIN settings are carried from one multiple
report to the next unless you use RMARGIN to change
them.
3) RMARGIN affects all of: page headings, summary
lines and detail print lines.
EXAMPLES: (a) RMARGIN 72.
HEADING 'MEMBER EXTRACT'.
OPEN MEMBER-FILE.
IF SUBSCRIPTION GEQ 1000
PRINT NAME, DATE SUBSCRIPTION.
(b) OPEN SALES.
SORT BY STATE.
REPORT 1.
HEADING 'SALES DETAIL'.
RMARGIN 132. (to reset from 2nd report)
PRINT ACCT SALESMAN GROSS PROJECTION.
REPORT 2.
HEADING 'HIGH VOLUME//SUMMARY'.
RMARGIN 72.
IF GROSS GEQ 1000
TALLY ACCOUNT BY STATE
TOTAL GROSS BY STATE.
**SET
FUNCTION: Sets a new value into an item. The value may come
from another item, a constant or literal.
FORMAT: SET item TO item
constant
literal
------------<---------
DISCUSSION: 1) If the item being set is in a record, the new
value replaces the old value in the record IQL is
working with but not in the file itself. However if
you subsequently write out the record it contains the
value.
2) When a numeric item is set to a numeric value, the
decimal points are lined up first, then leading
and/or trailing zeros are supplied if necessary. If
the integer or decimal portions of the supplied value
are too long, they are truncated with no error
message.
3) When an alpha item is set to an alpha value, the
supplied value is left justified with blank right
fill if necessary. If the value is too long, it is
truncated on the right with no error message.
4) SET X TO ... is equivalent to COMPUTE X = ...
5) You may set alpha items to numeric values. The
integer part of the numeric item is left justified in
the alpha item with blank right fill if necessary.
6) You may also set numeric items to alpha values,
but this is only legitimate if the alpha value is all
digits. As many digits as necessary are taken from
the left of the alpha value to fill the integer
portion of the numeric item. The fractional portion,
if any, is zeroed.
7) You should avoid mixing item types as in (5) and
(6), ie setting alpha to numeric and vice versa.
These operations are expensive in computer time if
done very often.
EXAMPLES: (a) OPEN SALES-MASTER.
FIND KEY = '456701'
SET QUOTA TO 200,000 REGION TO 'NORTHWEST'.
REWRITE RECORD.
**SORT
FUNCTION: Sorts the primary input file on one or more keys,
which may be data items or variables and which may be
sorted ascending or descending.
FORMAT: SORT BY [ASCENDING] item
[DESCENDING]
------------<------------
DEFAULTS: If you do not specify ASCENDING or DESCENDING, IQL
sorts ascending.
DISCUSSION: 1) There is no maximum number of sort keys that can
be used other than that the number of characters in
all sort keys -taken together- cannot exceed the
total length of the record.
2) You may sort on calculated variable values.
However, the calculated value does not come through
the sort. For instance, in the second example query
below if you wanted to print XRATIO you would have to
recompute it after the sort.
EXAMPLES: (a) OPEN CONGLOMERATE.
SORT BY ASCENDING UNIT-NO DESCENDING SALES.
TOTAL SALES BY UNIT-NO.
(b) OPEN STORES.
COMPUTE XRATIO = SALES / SQ-FEET.
SORT BY XRATIO, SALES.
PRINT SALES, SQ-FEET, STORE-NAME.
(c) OPEN CANDIDATE-FILE.
COMPUTE XTOTAL = POLL-PCT * PRECINCT-POPULATION.
SORT BY PRECINCT, XTOTAL.
IF NEWGROUP OF PRECINCT PRINT PRECINCT, CANDIDATE
ELSE PRINT CANDIDATE.
**TALLY
FUNCTION: Tallies (counts) occurrences of an item (a) over an
entire report or (b) within a specific value of one
or more controlling items (breaks).
FORMAT: TALLY item [BY item ] [ ( = variable ) ]
---<--
DISCUSSION: 1) TALLY performs two functions: first it calculates
the requested tally and second, it prints the tally
at the proper time.
2) It is not necessary for you to use any other
summary statement in order to use TALLY.
3) If you do not specify a break item ( ie BY item )
the tally is calculated overall records which pass
through the TALLY statement.
4) If you specify a break item, the tally is
calculated and printed on the change in the indicated
item. If you specify more than one break item, TALLY
breaks on a change in any of the indicated break
items.
5) Since TALLY merely runs a counter, incrementing it
by one each time the TALLY statement is executed, it
does not matter what type the item tallied or the
break item are.
6) When TALLY prints, it constructs a line with
explanatory text on the left and the tally on the
right. For break tallies, the explanatory text is
made up of the top and bottom dictionary titles for
the break item, the value of that item before the
break, the top and bottom titles for the item
tallied, and the word 'TALLY:' For non-break tallies
the break item titles and value are replaced by
'OVERALL. Please note that the item tallied matters
only in the choice of titles which go into the tally
text.
7) You may override the automatic printout of the
tally by using SUMPRINT OFF in your query. If you
wish to turn automatic printout back on, use SUMPRINT
ON as approprite in your query. If you do turn
automatic printing on, you must do your own printing
as described below in 8.
8) You may give a name to the tally itself by using
the form ( = variable ) at the end of your TALLY
statement. The variable name must start with 'X' or
'ZZ'. From this point on you may use the variable
just like any other item, including using it in
computations and print lines.
EXAMPLES: OPEN SCHOOLS.
TALLY STUDENT BY CLASS.
**TITLES
FUNCTION: (a) Turns automatic column titling on or off, or (b)
Furnishes specific column titles for designated items
when you wish to provide titles for working items or
to override the dictionary titles.
FORMAT: TITLES ON
OFF
item = literal
-------<-------
DEFAULTS: If you do not use TITLES in your query, titling is
automatically turned on. For data items, column
titles are obtained from their description in the
dictionary. For working items, the name of the item
is used as the column title.
DISCUSSION: 1) When IQL is about to print a line it looks to see
if this line is from a different print statement than
the most recent one and if titling is on. If both
conditions are satisfied, IQL prints two lines of
column titles and a line of spaces before printing
the actual line. Otherwise it prints only the actual
line.
2) If you use TITLES OFF, titling is turned off and
no column titles are printed before the print line.
3) If you use TITLES ON, titling is turned on.
Column titles are printed as described in (1) above.
4) If you use TITLES item = ... , IQL turns titling
on and sets the column title for the named item to
the literal value. If you use a double slash (//) in
the literal, the top title is to the left of the //
and the bottom title is to the right. If you do not
use a double slash, the literal is used as the top
title and the bottom title is blank. To force a
single title to the bottom, start with double
slashes. For instance: '//LAST NAME'.
EXAMPLES: TITLES X = 'SALES//SQ FT'.
OPEN STORES.
COMPUTE X = SALES / AREA.
PRINT STORE-NAME, SALES, AREA, X.
**TOTAL
FUNCTION: Totals a numeric item either over an entire report or
within a specific value of one or more controlling
items (breaks).
FORMAT: TOTAL item [BY item ] [ ( = variable ) ]
---<--
DEFAULTS: If you do not specify otherwise (see below), each
TOTAL statement both calculates the specified total
and prints it out.
DISCUSSION: 1) TOTAL performs two functions: first, it
calculates the correct total and second, it prints
the total at the proper time.
2) If you do not specify a break item (ie, BY item ),
the total is calculated over all records which pass
through the TOTAL statement.
3) If you specify a break item, the total is
calculated and printed when IQL sees a change in the
indicated item. If you specify more than one break
item, TOTAL breaks if it sees a change in any of the
indicated items.
4) You may specify more than one break item as long
as each is minor to one preceeding it. A total is
calculated for each such break item. When a change
in any break item occurs, a change is assumed to have
occurred in each break item to the right of it in the
TOTAL statement. The purpose of this is to prevent
inadvertent overlap of minor break items over major
ones. For instance if we were totaling grade point
total for each sex in each school and we encountered
an all-girls school, TOTAL GPA BY SEX would give a
misleading answer while TOTAL GPA BY SCHOOL, SEX.
would give the correct one.
6) Since totaling is an arithmetic operation, the
item you total must be numeric. However the item(s)
controlling the break may be any type.
7) When TOTAL prints, it constructs a line with
explanatory text on the left and the total on the
right. For break totals the text is made up of the
top and bottom dictionary titles for the break item,
the value of the break item, the top and bottom
titles for the totaled item, and the word 'TOTAL:'.
See the examples below.
8) You may override the automatic printing of a total
by using the statement SUMPRINT OFF in your query.
If you wish to turn on automatic printing of the
total (or any summary operation) use SUMPRINT ON as
appropriate. If you do turn automatic printing of
TOTAL off, you must do your own printing as described
in the next paragraph.
8) You may give a name to the total 'bucket' itself
by using the form ( = variable ) at the end of your
TOTAL statement. The variable name must start with
either 'X' or 'ZZ'. From this point on you may use
the variable just like any other item, including
using it in computations. One such usage is to
calculate percentages at the end of a query. Another
is so that you may print the total in a print line
with other data, often for printing summaries
directly under details.
EXAMPLES: (a) HEADING 'ORGANIZATIONAL BUDGETS'.
OPEN BUDGET-FILE.
TOTAL BUDGET BY DIV, DEPT.
TOTAL BUDGET.
might give:
HOME DEPT 421 ANNUAL BUDGET TOTAL: 23,921.46
HOME DEPT 427 ANNUAL BUDGET TOTAL: 37,446.00
HOME DEPT 433 ANNUAL BUDGET TOTAL: 12,777.50
HOME DIV 110 ANNUAL BUDGET TOTAL: 74,144.96
....
OVERALL ANNUAL BUDGET TOTAL: 549,873.64
**VSPACE
FUNCTION: Changes the vertical spacing of reports.
FORMAT: VSPACE integer
DEFAULTS: If you do not use VSPACE in your query, IQL single
spaces reports; ie, it acts as if you had used
VSPACE 1.
DISCUSSION: 1) IQL physically vertical spaces just before it
prints a line or the titles which go with the line.
2) You may use VSPACE at any point and repeatedly.
3) VSPACE only affects reports produced by PRINT; it
does not affect output from DISPLAY.
4) If you are producing multiple reports, any VSPACE
setting stays in effect from one report to the next.
If you wish to use a different vertical spacing in
reports, you must use VSPACE to change it, and you
must use VSPACE again in the first report to set it
back. See the examples below.
5) The integer in VSPACE may be any reasonable value.
EXAMPLES: OPEN STUDENTS.
REPORT 1.
TITLES ON.
VSPACE 1.
PAGING ON.
HEADING 'HIGH GPA STUDENTS'.
IF GPA GEQ 3.5 PRINT NAME, CLASS, GPA, YEAR.
REPORT 2.
TITLES OFF.
*STUDENT ADDRESS LABELS*.
PAGING OFF.
VSPACE 3.
PRINT NAME.
VSPACE 1.
PRINT STREET.
PRINT CITY.
PRINT STATE, ZIP.
**APPEND
FUNCTION: Positions the file at the end (bottom) and then goes
into 'insert' mode to receive new records. This
command is exactly the same as if you entered BOTTOM
followed by INSERT.
FORMAT: APPEND
DISCUSSION: 1) The first record inserted by APPEND goes
immediately after the last record of the current
file.
2) For a detailed description of entering records,
see the section describing INSERT.
EXAMPLES: <QA> append
(at end of file)
(next record)
*custno (customer number) 5 n: 1
*customer (customer name) 16 a: jones
*BUYER (BUYER NAME) 15 A: BARNABAS
*CYSALES ..........
**BOTTOM
FUNCTION: Positions the file at the end (bottom).
FORMAT: BOTTOM
DISCUSSION: If a file is positioned at the end, it is positioned
after the last record. There is no current record.
An attempt to list or otherwise act on the current
record results in an error message and the file is
not moved.
<QA>bottom
(at end of file)
<QA>
**CHANGE
FUNCTION: Changes the contents of one or more items in either
the current record or selected records. If verify
mode is on, displays the changed record(s).
--------<---------
FORMAT: CHANGE item [TO] value [IN findlist]
[EQ] [IF KEY = value
[=] [FOR
[EQUAL] [WHERE
[EQUALS] [WHEN
DEFAULTS: If you do not furnish a findlist the changes are made
in the current record only and the file is not
repositioned.
DISCUSSION: 1) If you specify a findlist, the system makes the
specified changes in the records located by the
findlist. The file is left positioned at the last
record changed. If your findlist starts with ALL or
if a record is not found, the file is left positioned
at its end.
2) The rules for furnishing new item values are the
same as for other commands. Please see the
'FINDLIST' section.
EXAMPLES: CHANGE DEPT TO 421
CH DEPT 421
CH NAME 'SEISS' IN SSNO 572409987
CHANGE VENDOR TO 'BRAND X' SALESMAN TO ++
JONES REGION = 6 FOR ALL VEND-NO ++
= 50 SALESMAN= 'SMITH'
**COLUMNS
FUNCTION: Designates the left and right columns of the portion
of the record to be displayed by LIST (or CHANGE,
DOWN, FIND, UP if verify mode is on).
FORMAT: COLUMNS integer [integer]
Where the first integer designates the first
(leftmost) column to be displayed and the second
integer is the last (rightmost) column to be
displayed.
DEFAULTS: 1) If you do not use COLUMNS in the session IQL
displays the full record, wrapping around the
terminal as necessary.
2) If you do not specify a second integer, IQL
displays a 72 character portion of the record,
beginning at the column designated by the first
integer.
DISCUSSION: 1) The leftmost character in a record is in column 1.
EXAMPLES: COLUMNS 40 75
CO 40 75
CO 601
**DELETE-IMMEDIATE
FUNCTION: Deletes one or more selected records.
FORMAT: DELETE [findlist]
[integer]
where the integer is the number of records to be
deleted.
DEFAULTS: If you specify neither a findlist nor a number of
records, IQL deletes the current record.
DISCUSSION: 1) If you specify an integer, IQL deletes that many
sequential records, starting with the current one.
2) If you specify a findlist, IQL deletes the records
located by the findlist. Please see the 'FINDLIST'
section.
3) Regardless of what form of DELETE you use, the
file is left positioned at the record after the last
record deleted. However, if you use a findlist which
starts with ALL or if the system cannot find a
specified record, the file is left positioned at its
end.
EXAMPLES: DELETE
DE
DE 10
DELETE ALL RECORDS FOR REGION 56
DELETE FIRST RECORD ACCT 7252
DELETE NEXT RECORD WHERE VENDOR NOT = 'BLT'
DE VENDOR NOT BLT
**DOWN
FUNCTION: Moves the file down (toward the end or bottom, a
specified number of records. If verify mode is on,
displays the new current record.
FORMAT: DOWN [integer]
where the integer is the number of records the file
is to be moved down.
DEFAULTS: If you omit the integer, IQL moves the file down one
record.
DISCUSSION: If IQL encounters the end of the file before it has
moved down the requested number of records, it issues
an 'AT END OF FILE' message and leaves the file
positioned at its end. If the file is positioned at
its beginning and you use DOWN or DOWN 1, the new
current record is the first record in the file.
EXAMPLES: DOWN
DO
DOWN 12
DO 600
**EXIT-IMMEDIATE
FUNCTION: Ends the update or browse session and saves the final
version of your file. Returns you to the operating
system.
FORMAT: EXIT
DISCUSSION: EXIT and END are synonyms.
EXAMPLES: EXIT
EX
**EXTRACT
FUNCTION: Extracts selected records from the current file and
writes them to a new sequential file.
FORMAT: EXTRACT [TO 'file.ext'] findlist
DEFAULTS: If you do not furnish a file name IQL writes the file
on name.OUT, where 'name' is the name of your input
file.
DISCUSSION: 1) Please see the discussion in the section
entitled 'Findlist'.
2) The file written out retains the same mode (ASCII
or 6-bit) as your original file.
3) EXTRACT always goes to the beginning of the input
file before doing the extract.
4) After EXTRACT, IQL switches to processing the
extracted file.
**FIND-IMMEDIATE
FUNCTION: Positions the file at a selected record. If verify
mode is on, displays the new current record.
FORMAT: FIND [findlist]
KEY = value
DEFAULTS: If you do not furnish a findlist, FIND uses the last
findlist that was furnished. This lets you continue
a search by simply entering FIND or FI.
DISCUSSION: 1) Please see the discussion in the section
entitled 'Findlist'.
2) If IQL does not find a record which qualifies, it
issues an 'AT END OF FILE' message and leaves the
file positioned at the end.
EXAMPLES: FIND NEXT RECORD WHERE NAME EQUALS 'SMITH'
FIND NEXT NAME EQ 'SMITH'
FIND NAME 'SMITH'
FI NAME 'SMITH'
FI (if used after the above FIND,
continues the search)
FIND KEY = '234581099'
FIND DEPT GR 421 AND DIV EQ 3
FIND ACCOUNT GEQ 6000 AND YEAR NOT LESS 75
FIND ACCOUNT GE 6000 AND YEAR GE 75
**Findlist
FUNCTION: A 'findlist' is a set of item-names, values and
relationships which direct IQL to locate records in
your file. Findlists are used in the commands
CHANGE, DELETE, FIND and LIST. An example findlist
is:
NEXT RECORD WHERE NAME EQUALS 'SMITH'
|-------------<-------------|
FORMAT: [ALL] [RECORDS] [IF] [item [NOT] [EQ] value] [AND]
[NEXT] [RECORD] [WHEN] [NEQ]
[FIRST] [WHERE] [GEQ]
[FOR] [LEQ]
[GR]
[LS]
DISCUSSION: 1) The item-names referenced above may be any defined
in the dictionary controlling this run.
2) You may use a number of synonyms to specify
relationships (ie, EQ above):
relationship synonyms
------------ --------
equals EQ,EQUAL,
EQUALS,IS,=
is not equal to NEQ,NE,NQ,<>
is greater than or equal to GEQ,GE,GQ,>=
is less than or equal to LEQ,LE,LQ,<=
is greater than GR,GT,GREATER,>
is less than LS,LT,LESS,<
If you do not specify a relationship, IQL assumes
'equals'.
3) The word NOT reverses a relationship. For
instance NOT GR is the same as LEQ.
4) The words RECORD, RECORDS, WHERE, FOR, WHEN, AND
and IF are optional. They have no effect on the
search and are processed simply so you may use
phrases which read like English.
5) If you use NEXT, the search begins at the record
after the current record and the file is positioned
at the next record which satisfies the findlist.
6) If you use FIRST, the search begins at the first
record in the file. This is the same as if you had
used the TOP command and then used NEXT in your
findlist.
7) If you use ALL, the search begins at the record
after the current one and the file is positioned in
turn at each downstream record which satisfies the
findlist. The file is left positioned at the end.
8) If you do not use any of the key words NEXT,
FIRST, or ALL the search proceeds as if you had used
NEXT.
9) The rules for formating item values in a findlist
are the same as for furnishing item values in the
INSERT command.
10) Remember that a findlist is only part of another
command. See the discussions of CHANGE, DELETE, FIND
and LIST for uses of findlists. ERRORS: IQL issues
an error message and rejects the command if it
detects any of the following in a findlist:
(a) item-name not contained in dictionary.
(b) alphanumeric value too long.
(c) numeric value contains illegal alphabetics.
(d) Too many decimal or integer places in numeric
value.
**INSERT
FUNCTION: Inserts one or more new records immediately after the
current record. Prompts for each new item value in
each record. Allows you to furnish numeric values in
a variety of formats. Takes care of decimal point
alignment, leading zeros and trailing zeros or
blanks.
DISCUSSION: 1) If your file is currently positioned at the top
(beginning), INSERT adds the new records before the
previous first one.
2) If your file is currently positioned at the bottom
(end), INSERT adds the new records after the previous
last one.
3) INSERT operates under control of your dictionary.
For each new record it starts at the beginning of the
dictionary and issues a prompt for the first input
data item. When you respond with a value for the
item, INSERT issues the prompt for the next input
item. This process continues until either the end of
the dictionary is reached or you enter one of the
special values NEXT, KILL, or UP. (see next page).
4) The prompt issued for each item is contructed from
the dictionary entry for the top and bottom title,
the item length, and the scale (if any). For
alphanumeric items the prompt ends with nnA where
'nn' is the length of the item. For numeric items,
the prompt ends with nn.mmN where 'nn' is the maximum
number of integer positions and 'mm' is the number of
decimal positions (if any). Examples of prompts:
*LAST NAME 16 A :
*EARNINGS 7.2 N :
5) The rules for entering data item values are the
same for INSERT as for other commands.
6) There are a number of control words you may use to
control INSERT:
(a) If you enter a carriage return, all spaces, or
' ', alphabetic items are set to all spaces and
numeric items are set to zero.
(b) If you enter the special value KILL anywhere
(ie, if you have made a serious error in entering
the record and wish to 'kill' it), IQL rejects the
record and lets you begin entering it again from
the beginning.
(c) If you make an error in entering a value and
catch it later in the same record, you may 'back
up' to correct the entry. Enter the special value
BACK integer. IQL moves back that many entries,
prompts for that item, and continues down the
dictionary again. If you omit the integer, IQL
moves back one prompt.
(d) To go on to the next record, enter the special
value NEXT. IQL goes through the rest of the
current record, blanking out alphanumeric input
items and setting numeric input items to zero.
Then it writes out the record and prompts you for
the first value in the next record.
(e) To terminate INSERT, enter the special value
END as the first value in a record.
ERRORS: If INSERT detects an improper value, it rejects the
value with an error message, reissues the prompt, and
waits for you to enter the value correctly. improper
values are: (a) alphanumeric value too long, (b) too
many integer or decimal places in a numeric value, or
(c) numeric item contains illegal characters.
EXAMPLE:
*insert
(NEXT RECORD)
*CUSTNO (CUSTOMER NUMBER) 5 N: 23
*CUSTOMER (CUSTOMER NAME) 16 A: 'savings trust'
*BUYER (BUYER NAME) 15 A: purchasing
*CYSALES (CURR YR SALES) 7.2 N: L000
%VALUE TOO LONG OR CONTAINS ALPHA
*CYSALES (CURR YR SALES) 7.2 N: 1000
*LYSALES (LAST YR SALES) 7.2 N: 575.98
*LPDATE (LAST PO DATE) 6 N: 780112
(NEXT RECORD)
*CUSTNO (CUSTOMER NUMBER) 5 N: 24
*CUSTOMER (CUSTOMER NAME) 16 A: "winnebago sales"
*BUYER (BUYER NAME) 15 A: 'jerry cowens'
*CYSALES (CURR YR SALES) 7.2 N: next
(NEXT RECORD)
*CUSTNO (CUSTOMER NUMBER) 5 N: 25
*CUSTOMER (CUSTOMER NAME) 16 A: 'royal cylle'
*BUYER (BUYER NAME) 15 A: 'ron kline'
*CYSALES (CURR YR SALES) 7.2 N: up 2
*CUSTOMER (CUSTOMER NAME) 16 A: 'royal cycle'
*BUYER (BUYER NAME) 15 A: 'ron kline'
*CYSALES (CURR YR SALES) 7.2 N: 451
*LYSALES (LAST YR SALES) 7.2 N: $217.45
*LPDATE (LAST PO DATE) 6 N: 780210
(NEXT RECORD)
*CUSTNO (CUSTOMER NUMBER) 5 N: 16
*CUSTOMER (CUSTOMER NAME) 16 A: rietronicx
*BUYER (BUYER NAME) 15 A: kill
(NEXT RECORD)
*CUSTNO (CUSTOMER NUMBER) 5 N: 26
*CUSTOMER (CUSTOMER NAME) 16 A: riatronics
*BUYER (BUYER NAME) 15 A: "lauren l lee"
*CYSALES (CURR YR SALES) 7 2 N: -250.
*LYSALES (LAST YR SALES) 7.2 N: 22,250
*LPDATE (LAST PO DATE) 6 N: 780130
(NEXT RECORD)
*CUSTNO (CUSTOMER NUMBER) 5 N: end
**LIST-IMMEDIATE
FUNCTION: Lists one or more records on your terminal. Lists
either a selected portion of each record or only
selected items, depending on format of the LIST
command.
---<---
FORMAT: (a) LIST [no-of-records] [item]
---<---
(b) LIST [item] [findlist]
KEY = value
where 'no-of-records' is the number of records to be
listed.
DEFAULTS: If you use only the word LIST, IQL lists the current
record and the file is not moved.
DISCUSSION: 1) If you do not specify any item names to be listed,
LIST displays the entire record or a part of it,
depending on whether you have used COLUMNS or not.
2) The following paragraphs summarize the LIST
command options:
(a) LIST
Lists the entire current record.
(b) LIST no-of-records
Lists the current and following records until
the specified number of records have been
listed.
(c) LIST no-of-records item-name item-name ...
Lists only the named items, starting
with the current record, until these items have
been listed for
the specified records. Signs and decimal points
are shown for
numeric items. The 'items' format is generally
easier to read than a continuous portion of the
record, especially if binary items are involved.
(d) LIST item-name item-name ...
Lists only named items for the current record.
Does not move the file.
(e) LIST findlist
Lists all records located by the findlist.
(f) LIST item-name item-name ... findlist
Lists only named items for each record located by
the findlist.
IQL leaves the file positioned at the last record
listed unless (1) you used ALL in your findlist or
(2) in listing the system encountered the end of the
file. In these cases, it issues an 'AT END OF FILE'
message and leaves the file positioned at its end.
EXAMPLES: LIST
LIST 10
LIST 20 ACCOUNT LEDGER AMOUNT
LIST ACCOUNT LEDGER AMOUNT
LIST FIRST ACCOUNT = 6000
LIST ALL ACCOUNT = 6000
LIST LEDGER AMOUNT FOR ALL ACCOUNT = 6000
LIST ACCOUNT LEDGER AMOUNT RATE FOR ALL ++
ACCOUNT GEQ 6000 AND YEAR 76
**SAVE-IMMEDIATE
FUNCTION: Saves the current version of your file. The current
version replaces the original version of your file.
The file is left positioned at its beginning.
FORMAT: SAVE
EXAMPLES: SAVE
SA
**TOP
FUNCTION: Positions the file at the beginning (top).
FORMAT: TOP
DEFAULTS: If the file is already positioned at the beginning,
it is left there.
DISCUSSION: If a file is positioned at its beginning, it is
positioned before the first record and there is no
current record.
EXAMPLES: TOP
TO
**UP
FUNCTION: Moves the file up (toward its top or beginning) a
specified number of records. If verify mode is on,
displays the new current record.
FORMAT: UP [no-of-records]
where 'no-of-records' is the number of records the
file is to be moved up.
DEFAULTS: If you omit no-of-records, the system moves the file
up one record.
DISCUSSION: If IQL encounters the beginning of the file before it
has moved up the specified number of records, it
issues an 'AT BEGINNING OF FILE' message and leaves
the file positioned at its beginning (before the
first record). If the file is positioned at its end
(after the last record) and UP or UP 1 is used, IQL
moves the file up to the last record in the file.
EXAMPLES: UP
UP 600
ERRORS: If alphabetic characters are encountered in
no-of-records IQL issues an error message, rejects
your UP command and does not move the file.
**VERIFY
FUNCTION: Sets IQL into or out of verify mode.
FORMAT: VERIFY [ON]
[OFF]
DEFAULTS: When you begin your update session, verify mode is
automatically on.
DISCUSSION: If IQL is in verify mode, it (1) automatically
displays the new current record located by UP, DOWN,
or FIND commands and (2) automatically displays each
changed record as a CHANGE command is carried out.
If the system is not in verify mode, these records
are not automatically displayed.
EXAMPLES: VERIFY
VE ON
VERIFY ON
VERIFY OFF
ERRORS: If IQL encounters a word other than ON or OFF after
VERIFY, it issues an error message and turns verify
mode on.