Syntax of Extract Files

The general syntax of the file is similar to that of MAPPOST. Certain words, prefixed with a #, are recognised as "heading" words. Some heading words process one "line" of information, though this can be split over more than one physical line by using a comma as a line continuation symbol. Others introduce multiple items separated by commas and terminated with a semicolon. In this case each item may be split over as many as lines as desired.

Each line of information consists of a number of keywords followed by an equals sign and a value. Alternatively values may be given without a keyword, the first value belongs to the first keyword and so on.

Heading words tables, fields and totals introduce multiple items.

The syntax is as follows:

Heading Word Keyword Default Comments
#null char '!'  
#program name Mandatory  
type 1  
flags 8  
top_proc NONE  
description Blank  
device 3  
filename Blank  
printer 0  
read 0  
write 0  
mapname Blank  
mapnr 0  
writer Blank  
modifier Blank  
#procedure name Mandatory

The procedure attributes are followed by a comma introducing a list of sub procedures or a semi colon if there are none.

body Same as procedure name
owner 0
descr Blank
proc Mandatory

Sub procedures are separated by commas. The list of sub procedures is terminated with a semi colon.

Defines subsidiary procedures of preceding procedure
option In sequence
entry_cond 0
ret_option 0
#body name Mandatory  
type 1  
flags 0  
access_mode 3  
direction 0  
descr Blank  
mapname Blank  
remarks Blank  
map 0  
maptype 2  
attach 0  
attach_fld 0  
del_quest 0  
auto_remark 0  
rep_cond 0  
del_cond 0  
device 0  
ip_device 0  
esc_option 0  
owner 0  
command Blank  
#tables
#table
name Mandatory Define tables of preceding procedure body.
role Blank Define tables of preceding procedure body.
joined_via
with_role
id_role
None
None
Blank
As many of these as required to specify join path to table
flags 0  
val_mode 0  
search 0  
index 0  
index_role 0  
table_ref In sequence  
table_cond 0  
no_rmk 0 Remark when record not found
exist_rmk 0 Remark when record found
scan_quest 0 Message for scanning records
list_map 0 Map to display list of choices
detail _map 0 Map to display item in list
lock_quest 0 Remark for dealing with locked records
add_quest 0 Question for adding new record (main table) or allowing check over ride (other tables)
match_rmk 0 Remark to display if parent and child records do not match
val_cond 0 Condition to validate
post_cond 0 Condition to post
#qabfields name Mandatory Define fields of preceding procedure body
role Blank Define fields of preceding procedure body
ref In sequence  
table_ref 0  
fieldnr REF  
flags 3  
formula 0  
validation 0  
input_cond 0  
type Blank  
length 0  
prec 0  
scale 0  
occurs_low 1  
occurs_high    
fail 0 Field to return to
#formula number
part
Mandatory
1
Define formulas and Conditions of preceding procedure body

The formula text follows delimited by rows of underscores.

  remark 0  
  flags 0  
#totals     Define totalling operations of preceding procedure body
  ref Mandatory Field reference of field being totalled
  seq 1 To cater for multiple totalling of same field
  name Mandatory Name of Target Field
  role Blank Role of Target Field
  table_ref 0 Table reference of target field in this procedure
  type 1  
  validation 0 Condition on total value
  tot_cond 0 Condition to total
  occurs    
#end (none)   QABUTIL will not read past this point

The above is followed by the macro definitions as follows:

#documentation word_type Mandatory  
  name Mandatory  

The text follows between underscores:

#macro name Mandatory  
  number Mandatory  
  type 1  
  map 0  

Maps are listed out in MAPPOST format:

#mapname name Same as program name  
#language number Sets language to update  
#plus
#upright
#underscore
#dot
char
char
char
char
'+'
'|'
'_'
'.'
Define the special characters to be used for plus, dot and so on

 

#map
#remark
#window
#datamap
} mapnr
curs_rows
curs_cols
beep
map_flags
(Mandatory)
0
0
0
0
Post map text

The effect of using #remark, #window and #datamap rather than map is to select the correct default colours

#help

mapnr (Mandatory) Posts help message

 

fieldnr (Mandatory)  

 

beep 0  

 

shares (none)  

The map text follows.