	[ IDENT ('V04-000'),
{ ++
 ****************************************************************************
 *									    *
 *  COPYRIGHT (c) 1978, 1980, 1982, 1984 BY				    *
 *  DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASSACHUSETTS.		    *
 *  ALL RIGHTS RESERVED.						    *
 * 									    *
 *  THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED   *
 *  ONLY IN  ACCORDANCE WITH  THE  TERMS  OF  SUCH  LICENSE  AND WITH THE   *
 *  INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR  ANY  OTHER   *
 *  COPIES THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY   *
 *  OTHER PERSON.  NO TITLE TO AND OWNERSHIP OF  THE  SOFTWARE IS  HEREBY   *
 *  TRANSFERRED.							    *
 * 									    *
 *  THE INFORMATION IN THIS SOFTWARE IS  SUBJECT TO CHANGE WITHOUT NOTICE   *
 *  AND  SHOULD  NOT  BE  CONSTRUED AS  A COMMITMENT BY DIGITAL EQUIPMENT   *
 *  CORPORATION.							    *
 * 									    *
 *  DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE  OR  RELIABILITY OF ITS   *
 *  SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL.		    *
 * 									    *
 *									    *
 ****************************************************************************





FACILITY:	VAX/VMS EDF (EDIT/FDL) UTILITY

ABSTRACT:	This facility is used to create, modify, and optimize
		FDL specification files.

ENVIRONMENT:	NATIVE/USER MODE

AUTHOR:		Ken F. Henderson Jr.

CREATION DATE:	27-Mar-1981

MODIFIED BY:

		V03-010 RRB0009		Rowland R. Bradley	22 Jan 1984
			Enhancement for display of # buckets in Index,
			# of Pages to cache index, and average # key exams.

		V03-009	KFH0009		Ken Henderson		10 Sep 1983
			Support for named UICs.

		V03-008	KFH0008		Ken Henderson		 8 Aug 1983
			Changes for seperate compilation.

		V03-007	KFH0007		Ken Henderson		26 Apr 1983
			Added FOUND_0, PRIMARY_INDEX_BUCKETS.
			Added a bunch of initial values;
			to reduce the code in INIT_EDITOR.
			Added SEC_ATTR, NUMBER_KEYS_SET.

		V03-006	KFH0006		Ken Henderson		14 Apr 1983
			Added SET_FUNCTION,
			GRANULARITY, PROMPTING, RESPONSES,
			JOURNAL_FILE, JOURNAL_ENABLED,
			support for SEGMENTED keys.

		V03-005	KFH0005		Ken Henderson		31 Jan 1983
			Changed reference of FDL$TYPE to
			FDL3$TYPE.

		V03-004	KFH0004		Ken Henderson		20 Jan 1983
			Removed DASH, and added
			DEPTHPOINT_LEFT,_MID,_RIGHT.

		V03-003	KFH0003		Ken Henderson		8 Sept 1982
			Consolidated many main variables
			into the xDATA arrays.

		V03-002	KFH0002		Ken Henderson		2 April 1982
			Added EDF$GL_SECNUM.

		V03-001	KFH0001		Ken Henderson		23-Mar-1982
    			Took out EDITFDL.

-- }

ENVIRONMENT ('LIB$:EDFVAR'),

INHERIT (

'SYS$LIBRARY:STARLET',
'SHRLIB$:FDLPARDEF',
'LIB$:EDFCONST',
'LIB$:EDFTYPE',
'LIB$:EDFSTRUCT'

)]

MODULE EDFVAR;

VAR

    { +
    These are for the FDL file(s).
    - }
    FDL_DEST			: [VOLATILE] TEXT;
    TT				: TEXT;
    JOURNAL_FILE		: [VOLATILE] TEXT;
    JOURNAL_ENABLED		: [VOLATILE] BOOLEAN := FALSE;
    JOURNAL_FILENAME		: STRING255;
    INPUT_FILENAME_DESC		: DESCRIPTOR;
    OUTPUT_FILENAME_DESC	: DESCRIPTOR;
    ANALYSIS_FILENAME_DESC	: DESCRIPTOR;
    RES_OUTPUT_FILENAME_DESC	: [VOLATILE] DESCRIPTOR;
    DEFAULT_FILENAME_DESC	: DESCRIPTOR;
    NL_DEV_DESC			: DESCRIPTOR;
    ANALYSIS_SPECIFIED		: BOOLEAN := FALSE;
    ANALYSIS_ONLY		: [VOLATILE] BOOLEAN := FALSE;

    { +
    These are the main editing control variables.
    While editing is true, we stay in the editor.
    Take_defaults is true if we're answering questions
    automatically.
    If no_input is true, we skip the input_fdl_file operation.
    If auto_tune is true, we don't do any output to the terminal,
    or expect any from it. It's all an automated Optimize script.
    - }
    EDITING		: [VOLATILE] BOOLEAN := FALSE;
    TAKE_DEFAULTS	: BOOLEAN := FALSE;
    NO_INPUT		: BOOLEAN := FALSE;
    AUTO_TUNE		: [VOLATILE] BOOLEAN := FALSE;

    { +
    This is for outputting FDL to the terminal.
    - }
    SYS$OUTPUT_NAME	: [VOLATILE] STRING11 := 'SYS$OUTPUT:';

    { +
    These indicate whether classes of errors were detected.
    - }
    SYS$INPUT_ERROR	: [VOLATILE] BOOLEAN := FALSE;
    RMS_INPUT_ERROR	: [VOLATILE] BOOLEAN := FALSE;
    RMS_OUTPUT_ERROR	: [VOLATILE] BOOLEAN := FALSE;
    CONTROL_ZEE_TYPED	: [VOLATILE] BOOLEAN := FALSE;
    MAIN_CTRLZ		: [VOLATILE] BOOLEAN := FALSE;
    MAIN_LEVEL		: [VOLATILE] BOOLEAN := TRUE;
    QUESTION_TYPED	: [VOLATILE] BOOLEAN := FALSE;

    { +
    This is for graphing.
    - }
    XY_PLOT		: XY_PLOT_TYPE;
    COLOR_PLOT		: XY_PLOT_TYPE;
    XY_ARRAY		: XY_ARRAY_TYPE;
    COLOR_ARRAY		: XY_ARRAY_TYPE;
    COLOR_ROW		: PACKED ARRAY [0..(BKT$C_MAXBKTSIZ-1)] OF BYTE;
    BREAKPOINT_LEFT	: INTEGER;
    BREAKPOINT_MID	: INTEGER;
    BREAKPOINT_RIGHT	: INTEGER;
    DEPTHPOINT_LEFT	: INTEGER;
    DEPTHPOINT_MID	: INTEGER;
    DEPTHPOINT_RIGHT	: INTEGER;
    EXAMPOINT_LEFT	: INTEGER;
    EXAMPOINT_MID	: INTEGER;
    EXAMPOINT_RIGHT	: INTEGER;
    NUMPOINT_LEFT	: INTEGER;
    NUMPOINT_MID	: INTEGER;
    NUMPOINT_RIGHT	: INTEGER;
    PAGEPOINT_LEFT	: INTEGER;
    PAGEPOINT_MID	: INTEGER;
    PAGEPOINT_RIGHT	: INTEGER;
    GRAPH_TYPE		: INTEGER;
    CURRENT_GRAPH_INDEX	: INTEGER;
    LAST_GRAPH_INDEX	: INTEGER;
    STEPS		: INTEGER;
    Y_LABEL		: STRING32;

    { +
    These are the 'width' arrays that indicate how long a particular keyword
    should be typed.
    - }
    PRIMARY_WIDTH	: PACKED ARRAY [PRIMARY_TYPE] OF BYTE;
    SECONDARY_WIDTH	: PACKED ARRAY [SECONDARY_TYPE] OF BYTE;

    { +
    This array stores the maximum value of the number-valued secondaries.
    - }
    SECONDARY_MAX	: ARRAY [SECONDARY_TYPE] OF INTEGER;

    { +
    This array stores the legal sequencing of Primaries as defined by the
    FDL Specification.
    - }
    PRI_SEQ		: [VOLATILE] PACKED ARRAY [PRIMARY_TYPE] OF BYTE;

    { +
    These store the character sequences to set the video attribute modes
    of the VT100 (and compatible) terminals.
    - }
    ANSI_RESET		: [VOLATILE] STRING4 := (''(27)'','[','0','m');
    ANSI_BOLD		: STRING4 := (''(27)'','[','1','m');
    ANSI_UNDERSCORE	: STRING4 := (''(27)'','[','4','m');
    ANSI_BLINK		: STRING4 := (''(27)'','[','5','m');
    ANSI_REVERSE	: [VOLATILE] STRING4 := (''(27)'','[','7','m');

    VID_STRING4		: STRING4;
    NULL_STRING4	: STRING4 := (''(0)'',''(0)'',''(0)'',''(0)'');
    EMPTY_STRING	: STRING2 := ('"','"');
    SHIFT		: [VOLATILE] STRING4 :=
			(''(9)'',''(0)'',''(0)'',''(0)'');
    CRLF_SHIFT		: [VOLATILE] STRING6 :=
			(''(13)'',''(10)'',''(9)'',''(0)'',''(0)'',''(0)'');
    LOW_SHIFT		: STRING3;

    NULL_CHAR		: CHAR := (''(0)'');

    { +
    This is the terminal and screen database.
    - }
    TAB			: CHAR := (''(9)'');
    ESCAPE		: [VOLATILE] CHAR := (''(27)'');
    APOSTROPHE		: CHAR := (''(39)'');
    CONTROL_W		: CHAR := (''(23)'');
    CONTROL_Z		: [VOLATILE] CHAR := (''(26)'');
    QUESTION_MARK	: [VOLATILE] CHAR := (''(63)'');
    ERR_CHAR		: [VOLATILE] CHAR;
    CONTROL_G		: CHAR := (''(7)'');
    CRLF		: [VOLATILE] STRING2 := (''(13)'',''(10)'');
    TERMINAL_TYPE	: BYTE;
    TERMINAL_SPEED	: INTEGER;
    ANSI_CRT		: BOOLEAN := FALSE;
    REGIS		: [VOLATILE] BOOLEAN := FALSE;
    DEC_CRT		: BOOLEAN := FALSE;
    DEV_TYPE		: INTEGER;
    VIDEO_TERMINAL	: BOOLEAN := FALSE;
    VID_TERM		: INTEGER;
    SCREEN_FLAGS	: [VOLATILE] SCR1$TYPE;
    OUT_LINE		: [VOLATILE] TEMP_VARYING;
    ONE			: [VOLATILE] INTEGER := 1;
    CHFFLAGS		: [VOLATILE] INTEGER := 0;
    FLAGS		: [VOLATILE] FDL2$TYPE;
    TEMP_FDL3$TYPE	: [VOLATILE] FDL3$TYPE;
    LINE_WIDTH		: INTEGER;
    LINES_PER_PAGE	: [VOLATILE] INTEGER;
    DEST_IS_TERMINAL	: [VOLATILE] BOOLEAN;
    LINES_SHOWN		: [VOLATILE] INTEGER;
    MINIMUM_TERM_WIDTH	: INTEGER := 80;
    MINIMUM_VIDEO_PAGE	: INTEGER := 24;
    SCROLLING_SET	: [VOLATILE] BOOLEAN := FALSE;
    FULL_PROMPT		: BOOLEAN := TRUE;
    TEMP_FULL_PROMPT	: [VOLATILE] BOOLEAN := FALSE;
    ORIG_TIME		: REAL;
    QUAD_TIME		: QUADWORD;

    DEFAULT_PRIMARY	: PRIMARY_TYPE := FILE$;
    DEFAULT_PRINUM	: INTEGER := 0;

    COL_ONE		: INTEGER := 1;
    LINE_ONE		: [VOLATILE] INTEGER := 1;
    LOWER_LINE		: INTEGER := 17;
    PROMPT_LINE		: INTEGER := 23;

    PARAM_BLOCK		: [VOLATILE]TPA$TYPE;

    SEC_ATTR		: STRING22 := ' Secondary Attributes ';
    EDFHLP_STRING	: STRING6 := 'EDFHLP';
    IDENT_STRING	: STRING40 :=
				'                       VAX-11 FDL Editor';
    IDENT_STRING_LENGTH	: INTEGER := 40;
    QUES_HINT		: STRING31 := '(Type "?" for list of Keywords)';
    EDF_HEADER		: STRING19 := ' VAX-11 FDL Editor ';
    CONTINUE_TEXT	: STRING45 :=
				' Press RETURN to continue (^Z for Main Menu) ';
    ISTATUS		: [VOLATILE] INTEGER;
    FAB_DUMMY		: FAB_PTR;
    RAB_DUMMY		: FAB_PTR;

    FDL_BLOCK		: [VOLATILE] ^FDL_TYPE;
    FDL$AL_BLOCK	: [EXTERNAL,VOLATILE] INTEGER;

    EDF$GL_SECNUM			: [EXTERNAL,VOLATILE] LONG;
    EDF$GL_PROT_MASK			: [EXTERNAL] CTRL_ARRAY;
    EDF$GL_FID1				: [EXTERNAL,VOLATILE] LONG;
    EDF$GL_FID2				: [EXTERNAL,VOLATILE] LONG;
    EDF$GL_FID3				: [EXTERNAL,VOLATILE] LONG;
    EDF$GL_OWNER_UIC			: [EXTERNAL,VOLATILE] LONG;
    EDF$GL_SPARE1			: [EXTERNAL,VOLATILE] LONG;
    EDF$AB_STRING			: [EXTERNAL,VOLATILE] DESCRIPTOR;
    EDF$AB_COMMENT			: [EXTERNAL,VOLATILE] DESCRIPTOR;
    EDF$AB_UIC_TABLE_KEY		: [EXTERNAL,VOLATILE] LONG;
    EDF$AB_UIC_TABLE_STA		: [EXTERNAL,VOLATILE] LONG;
    EDF$AB_FID_TABLE_KEY		: [EXTERNAL,VOLATILE] LONG;
    EDF$AB_FID_TABLE_STA		: [EXTERNAL,VOLATILE] LONG;
    EDF$AB_PRIMARY_TABLE_KEY		: [EXTERNAL,VOLATILE] LONG;
    EDF$AB_PRIMARY_TABLE_STA		: [EXTERNAL,VOLATILE] LONG;
    EDF$AB_ACCESS_TABLE_KEY		: [EXTERNAL,VOLATILE] LONG;
    EDF$AB_ACCESS_TABLE_STA		: [EXTERNAL,VOLATILE] LONG;
    EDF$AB_ACL_TABLE_KEY		: [EXTERNAL,VOLATILE] LONG;
    EDF$AB_ACL_TABLE_STA		: [EXTERNAL,VOLATILE] LONG;
    EDF$AB_AREA_TABLE_KEY		: [EXTERNAL,VOLATILE] LONG;
    EDF$AB_AREA_TABLE_STA		: [EXTERNAL,VOLATILE] LONG;
    EDF$AB_CONNECT_TABLE_KEY		: [EXTERNAL,VOLATILE] LONG;
    EDF$AB_CONNECT_TABLE_STA		: [EXTERNAL,VOLATILE] LONG;
    EDF$AB_DATE_TABLE_KEY		: [EXTERNAL,VOLATILE] LONG;
    EDF$AB_DATE_TABLE_STA		: [EXTERNAL,VOLATILE] LONG;
    EDF$AB_FILE_TABLE_KEY		: [EXTERNAL,VOLATILE] LONG;
    EDF$AB_FILE_TABLE_STA		: [EXTERNAL,VOLATILE] LONG;
    EDF$AB_JOURNAL_TABLE_KEY		: [EXTERNAL,VOLATILE] LONG;
    EDF$AB_JOURNAL_TABLE_STA		: [EXTERNAL,VOLATILE] LONG;
    EDF$AB_KEY_TABLE_KEY		: [EXTERNAL,VOLATILE] LONG;
    EDF$AB_KEY_TABLE_STA		: [EXTERNAL,VOLATILE] LONG;
    EDF$AB_RECORD_TABLE_KEY		: [EXTERNAL,VOLATILE] LONG;
    EDF$AB_RECORD_TABLE_STA		: [EXTERNAL,VOLATILE] LONG;
    EDF$AB_SHARING_TABLE_KEY		: [EXTERNAL,VOLATILE] LONG;
    EDF$AB_SHARING_TABLE_STA		: [EXTERNAL,VOLATILE] LONG;
    EDF$AB_SYSTEM_TABLE_KEY		: [EXTERNAL,VOLATILE] LONG;
    EDF$AB_SYSTEM_TABLE_STA		: [EXTERNAL,VOLATILE] LONG;
    EDF$AB_POSIT_TABLE_KEY		: [EXTERNAL,VOLATILE] LONG;
    EDF$AB_POSIT_TABLE_STA		: [EXTERNAL,VOLATILE] LONG;
    EDF$AB_PROT_TABLE_KEY		: [EXTERNAL,VOLATILE] LONG;
    EDF$AB_PROT_TABLE_STA		: [EXTERNAL,VOLATILE] LONG;
    EDF$AB_ORG_TABLE_KEY		: [EXTERNAL,VOLATILE] LONG;
    EDF$AB_ORG_TABLE_STA		: [EXTERNAL,VOLATILE] LONG;
    EDF$AB_SOURCE_TABLE_KEY		: [EXTERNAL,VOLATILE] LONG;
    EDF$AB_SOURCE_TABLE_STA		: [EXTERNAL,VOLATILE] LONG;
    EDF$AB_RU_TABLE_KEY			: [EXTERNAL,VOLATILE] LONG;
    EDF$AB_RU_TABLE_STA			: [EXTERNAL,VOLATILE] LONG;
    EDF$AB_CARR_TABLE_KEY		: [EXTERNAL,VOLATILE] LONG;
    EDF$AB_CARR_TABLE_STA		: [EXTERNAL,VOLATILE] LONG;
    EDF$AB_FORMAT_TABLE_KEY		: [EXTERNAL,VOLATILE] LONG;
    EDF$AB_FORMAT_TABLE_STA		: [EXTERNAL,VOLATILE] LONG;
    EDF$AB_TYPE_TABLE_KEY		: [EXTERNAL,VOLATILE] LONG;
    EDF$AB_TYPE_TABLE_STA		: [EXTERNAL,VOLATILE] LONG;
    EDF$AB_LOAD_METHOD_TABLE_KEY	: [EXTERNAL,VOLATILE] LONG;
    EDF$AB_LOAD_METHOD_TABLE_STA	: [EXTERNAL,VOLATILE] LONG;
    EDF$AB_WEIGHT_TABLE_KEY		: [EXTERNAL,VOLATILE] LONG;
    EDF$AB_WEIGHT_TABLE_STA		: [EXTERNAL,VOLATILE] LONG;
    EDF$AB_SURFACE_OPTION_TABLE_KEY	: [EXTERNAL,VOLATILE] LONG;
    EDF$AB_SURFACE_OPTION_TABLE_STA	: [EXTERNAL,VOLATILE] LONG;
    EDF$AB_CURRENT_FUNC_TABLE_KEY	: [EXTERNAL,VOLATILE] LONG;
    EDF$AB_CURRENT_FUNC_TABLE_STA	: [EXTERNAL,VOLATILE] LONG;
    EDF$AB_DESIGN_CYCLE_TABLE_KEY	: [EXTERNAL,VOLATILE] LONG;
    EDF$AB_DESIGN_CYCLE_TABLE_STA	: [EXTERNAL,VOLATILE] LONG;
    EDF$AB_SCRIPT_OPTION_TABLE_KEY	: [EXTERNAL,VOLATILE] LONG;
    EDF$AB_SCRIPT_OPTION_TABLE_STA	: [EXTERNAL,VOLATILE] LONG;
    EDF$AB_YES_NO_TABLE_KEY		: [EXTERNAL,VOLATILE] LONG;
    EDF$AB_YES_NO_TABLE_STA		: [EXTERNAL,VOLATILE] LONG;
    EDF$AB_SET_FUNCTION_TABLE_KEY	: [EXTERNAL,VOLATILE] LONG;
    EDF$AB_SET_FUNCTION_TABLE_STA	: [EXTERNAL,VOLATILE] LONG;
    EDF$AB_GRANULARITY_TABLE_KEY	: [EXTERNAL,VOLATILE] LONG;
    EDF$AB_GRANULARITY_TABLE_STA	: [EXTERNAL,VOLATILE] LONG;
    EDF$AB_PROMPTING_TABLE_KEY		: [EXTERNAL,VOLATILE] LONG;
    EDF$AB_PROMPTING_TABLE_STA		: [EXTERNAL,VOLATILE] LONG;
    EDF$AB_RESPONSES_TABLE_KEY		: [EXTERNAL,VOLATILE] LONG;
    EDF$AB_RESPONSES_TABLE_STA		: [EXTERNAL,VOLATILE] LONG;

    { +
    The following are the pointers to the Definition Linked List.
    - }
    DEF_CURRENT		: [VOLATILE] ^LINE_OBJECT := NIL;
    DEF_SCRATCH		: [VOLATILE] ^LINE_OBJECT := NIL;
    DEF_HEAD		: [VOLATILE] ^LINE_OBJECT := NIL;
    DEF_TAIL		: [VOLATILE] ^LINE_OBJECT := NIL;
    DEF_SUCC		: [VOLATILE] ^LINE_OBJECT := NIL;
    DEF_PRED		: [VOLATILE] ^LINE_OBJECT := NIL;

    { +
    These point to the analysis linked list.
    - }
    DEF_ANL_HEAD	: ^LINE_OBJECT := NIL;
    DEF_ANL_TAIL	: ^LINE_OBJECT := NIL;
    DEF_SAVE_HEAD	: ^LINE_OBJECT := NIL;
    DEF_SAVE_TAIL	: ^LINE_OBJECT := NIL;

    POINTING_AT_DEFINITION	: BOOLEAN := TRUE;

    FILE_CREATED		: [VOLATILE] BOOLEAN := FALSE;

    { +
    These are used for input string processing.
    - }
    INPUT_DESC		: [VOLATILE] DESCRIPTOR;
    INPUT_STRING	: [VOLATILE] STRING255;
    INPUT_VALUE		: INTEGER;
    INPUT_NUMBER	: INTEGER;

    QUAD_DESC		: [VOLATILE] RECORD
			    CASE QWHICH	: QD_SWITCH OF
				QWORD	: (TWOLONG : PACKED RECORD
					   L1,L2 : LONG
					   END);
				DWORD	: (DSC : DESCRIPTOR)
			    END;

    { +
    ACTIVE CALCULATION DATABASE.
    - }
    LINKED			: BOOLEAN;
    ACTIVE_AREA			: INTEGER;
    ACTIVE_PRIMARY		: PRIMARY_TYPE;
    VARIABLE_RECORDS		: BOOLEAN;
    CUR_MAX_REC			: INTEGER;
    BYTES_PER_BUCKET		: INTEGER;
    BUCKET_DEFAULT		: INTEGER;
    PRIMARY_INDEX_BUCKETS	: INTEGER;
    INIT_PRIMARY_BUCKETS	: ARRAY [0..31] OF INTEGER;
    ADDED_PRIMARY_BUCKETS	: ARRAY [0..31] OF INTEGER;
    INIT_NUMBER_BUCKETS		: ARRAY [0..31] OF INTEGER;
    ADDED_NUMBER_BUCKETS	: ARRAY [0..31] OF INTEGER;
    RECS_PER_BUCKET		: ARRAY [0..31] OF INTEGER;
    DEEPEST			: INTEGER;
    FIRST_PLOT			: BOOLEAN;
    OPTIMIZING			: BOOLEAN;
    VISIBLE_QUESTION		: BOOLEAN;
    WAIT_HELP			: BOOLEAN;

    { +
    QTAB is the table that drives the Q+A routine - QUERY
    The xDATA arrays hold the main EDF database.
    - }
    QTAB	: ARRAY [EDF$K_QTABSTART..EDF$K_QTABEND] OF QTAB_ENTRY;
    QTAB_OFFSET	: INTEGER;

    { +
    String descriptor elements
    - }
    SDATA	: ARRAY [EDF$K_SDATASTART..EDF$K_SDATAEND] OF DESCRIPTOR;

    { +
    Real elements
    - }
    RDATA	: ARRAY [EDF$K_RDATASTART..EDF$K_RDATAEND] OF REAL;

    { +
    Boolean elements
    - }
    BDATA	: ARRAY [EDF$K_BDATASTART..EDF$K_BDATAEND] OF BOOLEAN;

    { +
    Integer elements
    - }
    IDATA	: ARRAY [EDF$K_IDATASTART..EDF$K_IDATAEND] OF INTEGER;

    { +
    Valid (boolean) elements
    - }
    VDATA	: ARRAY [EDF$K_VDATASTART..EDF$K_VDATAEND] OF BOOLEAN;

    { +
    Misc. scratch variables used during the Q+A.
    - }
    TEMP_STRING255		: STRING255;
    TEMP_DESCRIPTOR		: [VOLATILE] DESCRIPTOR;
    QUERY_FLAG			: BOOLEAN;
    LOW_KEY			: INTEGER := 0;
    HIGH_KEY			: INTEGER := 0;
    LOW_AREA			: INTEGER := 0;
    HIGH_AREA			: INTEGER := 0;
    FOUND_AREA			: BOOLEAN := FALSE;
    FOUND_KEY			: BOOLEAN := FALSE;
    FOUND_0			: BOOLEAN := FALSE;
    MAX_KEY_SIZE		: INTEGER;
    MIN_KEY_SIZE		: INTEGER;
    SEGMENT_WANTED		: ARRAY [0..7] OF BOOLEAN :=
			(FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE);
    SEGMENT_POSITION		: ARRAY [0..7] OF INTEGER;
    SEGMENT_LENGTH		: ARRAY [0..7] OF INTEGER;
    SEGMENT_NUMBER		: INTEGER;
    BUCKET_OVERHEAD		: INTEGER;
    MIN_BUCKET			: INTEGER;
    ENTRY_SIZE			: INTEGER;
    LOWMAX			: INTEGER;
    EXTRA			: INTEGER;
    CUR_MAX_FIXED		: INTEGER;
    MAX_STRING_ANSWER_LENGTH	: INTEGER;
    OLD_COUNT			: INTEGER;
    GLOBAL_SET			: BOOLEAN;
    NUMBER_KEYS_SET		: BOOLEAN := FALSE;
    ISAM_ORG			: BOOLEAN;
    MAX_KEY_POSITION		: INTEGER;
    TEMP_REAL			: REAL;
    TEMP_STATUS			: INTEGER;
    TEMP_INT2			: INTEGER;
    DEF				: INTEGER;
    NULL_STRING			: [VOLATILE]DESCRIPTOR;
    TEST			: LINE_OBJECT;
    FULL_CHOICE			: BOOLEAN;

    { +
    This is the array of secondary value types.
    - }
    SEC_TYPE			: [VOLATILE] PACKED ARRAY [SECONDARY_TYPE] OF
    					PACKED RECORD
    						STR	: BOOLEAN;
						NUM	: BOOLEAN;
						QUAL	: BOOLEAN;
						SW	: BOOLEAN
					END;

    { +
    This is the template for line_objects generated by MAKE_SCRATCH.
    - }
    LINE_OBJECT_TEMPLATE	: [VOLATILE] LINE_OBJECT;

VALUE
%INCLUDE 'SRC$:EDFVALUE.PAS'

END.
    { End of file: SRC$:EDFVAR.PAS }
