Each syntax record assigns a number, called a node id, that is used by later records to refer to other syntax records.
The first syntax record will have kind xin_Syn_Kind_Package, and if the compilation unit has any procedures, the child node of this record will point to the first of these procedures. The parent, sibling and child nodes will then provide a map with the appropriate relationships of all the procedures and begin bocks in the compilation unit.
Consider the following simple program:
a: proc;
call b;
call c;
b: proc;
end b;
c: proc;
call d;
d: proc;
end d;
end c;
end a;The node indices assigned to the blocks of the preceding program would be as follows:
symbol index sibling parent child ----- ----- ------- ------ ----- - 1 0 0 2 a 2 0 1 3 b 3 4 2 0 c 4 0 2 5 d 5 0 4 0
Dcl
1 Xin_Syn Based( null() ), /* syntax record */
/* */
2 Xin_Syn_Hdr /* standard header */
like Xin_Hdr, /* */
/* */
2 Xin_Syn_Node_Id /* node id */
fixed bin(32) unsigned, /* */
/* */
2 Xin_Syn_Node_Kind /* node type */
ordinal xin_syn_kind, /* */
/* */
2 Xin_Syn_Node_Exp_Kind /* node sub type */
ordinal xin_exp_kind, /* */
/* */
2 * /* reserved */
fixed bin(16) unsigned, /* */
/* */
2 Xin_Syn_Parent_Node_Id /* node id of parent */
fixed bin(32) unsigned, /* */
/* */
2 Xin_Syn_Sibling_Node_Id /* node id of sibling */
fixed bin(32) unsigned, /* */
/* */
2 Xin_Syn_Child_Node_Id /* node id of child */
fixed bin(32) unsigned, /* */
/* */
2 xin_Syn_First_Tok /* id of first spanned token */
fixed bin(32) unsigned, /* */
/* */
2 xin_Syn_Last_Tok /* id of last spanned token */
fixed bin(32) unsigned, /* */
/* */
2 * union, /* qualifier for node */
/* */
3 Xin_Syn_Int_Value /* used if int */
fixed bin(31), /* */
/* */
3 Xin_Syn_Literal_Id /* used if name, number, picture */
fixed bin(31), /* */
/* */
3 Xin_Syn_Node_Lex /* used if lexeme, assignment, */
ordinal xin_Lex_kind, /* infix_op, prefix_op */
/* */
3 Xin_Syn_Node_Voc /* used if keyword, end_for_do */
ordinal xin_Voc_kind, /* */
/* */
3 Xin_Syn_Block_Node /* used if call_begin */
fixed bin(31), /* to hold node of begin block */
/* */
3 Xin_Syn_Bif_Id /* used if bif_rfrnc */
fixed bin(32) unsigned, /* */
/* */
3 Xin_Syn_Sym_Id /* used if label, unsub_rfrnc, */
fixed bin(32) unsigned, /* subscripted_rfrnc */
/* */
3 Xin_Syn_Proc_Data, /* used if package, proc or begin*/
/* */
4 Xin_Syn_First_Sym /* id of first contained sym */
fixed bin(32) unsigned, /* */
/* */
4 Xin_Syn_Block_Sym /* id of sym for this block */
fixed bin(32) unsigned, /* */
/* */
3 Xin_Syn_Number_Data, /* used if number */
/* */
4 Xin_Syn_Number_Id /* id of literal */
fixed bin(32) unsigned, /* */
/* */
4 Xin_Syn_Number_Type /* type */
ordinal xin_Number_Kind,/* */
/* */
4 Xin_Syn_Number_Prec /* precision */
fixed bin(8) unsigned, /* */
/* */
4 Xin_Syn_Number_Scale /* scale factor */
fixed bin(7) signed, /* */
/* */
4 Xin_Syn_Number_Bytes /* bytes it would occupy */
fixed bin(8) unsigned, /* in its internal form */
/* */
3 Xin_Syn_String_Data, /* used if char_string, */
/* bit_string, graphic_string */
/* */
4 Xin_Syn_String_Id /* id of literal */
fixed bin(32) unsigned, /* */
/* */
4 Xin_Syn_String_Len /* string length in its units */
fixed bin(32) unsigned, /* */
/* */
3 Xin_Syn_Stmt_Data, /* used if stmt */
/* */
4 Xin_Syn_File_Id /* file id */
fixed bin(32) unsigned, /* */
/* */
4 Xin_Syn_Line_No /* line no within file */
fixed bin(32) unsigned, /* */
/* */
2 * char(0); /* */The ordinal xin_Syn_Kind identifies the type of the syntax record.
Define
ordinal
xin_Syn_Kind
( xin_Syn_Kind_Unset
,xin_Syn_Kind_Lexeme
,xin_Syn_Kind_Asterisk
,xin_Syn_Kind_Int
,xin_Syn_Kind_Name
,xin_Syn_Kind_Expression
,xin_Syn_Kind_Parenthesized_Expr
,xin_Syn_Kind_Argument_List
,xin_Syn_Kind_Keyword
,xin_Syn_Kind_Proc_Stmt
,xin_Syn_Kind_Begin_Stmt
,xin_Syn_Kind_Stmt
,xin_Syn_Kind_Substmt
,xin_Syn_Kind_Label
,xin_Syn_Kind_Invoke_Begin
,xin_Syn_Kind_Assignment
,xin_Syn_Kind_Assignment_Byname
,xin_Syn_Kind_Do_Fragment
,xin_Syn_Kind_Keyed_List
,xin_Syn_Kind_Iteration_Factor
,xin_Syn_Kind_If_Clause
,xin_Syn_Kind_Else_Clause
,xin_Syn_Kind_Do_Stmt
,xin_Syn_Kind_Select_Stmt
,xin_Syn_Kind_When_Stmt
,xin_Syn_Kind_Otherwise_Stmt
,xin_Syn_Kind_Procedure
,xin_Syn_Kind_Package
,xin_Syn_Kind_Begin_Block
,xin_Syn_Kind_Picture
,xin_Syn_Kind_Raw_Rfrnc
,xin_Syn_Kind_Generic_Desc
) prec(8) unsigned;Consider the following simple program:
a: proc(x);
dcl x char(8);
x = substr(datetime(),1,8);
end;The node indices assigned to the blocks of the preceding program would be as follows:
node_kind index sibling parent child ----------- ----- ------- ------ ----- package 1 0 0 2 procedure 2 0 1 0 expression 3 0 0 0 stmt 4 5 2 6 stmt 5 10 2 11 label 6 7 4 0 keyword 7 8 4 0 expression 8 9 4 0 lexeme 9 0 4 0 stmt 10 0 2 18 assignment 11 12 5 13 lexeme 12 0 5 0 expression 13 14 11 0 expression 14 0 11 15 expression 15 16 14 0 expression 16 17 14 0 expression 17 0 14 0 keyword 18 19 10 0 lexeme 19 0 10 0
The procedure record contains the identifier (in the block_sym field) for the symbol record for ENTRY A. This symbol record contains, in turn, the node identifier (in the first_stmt_id field) for the first statement in that procedure.
Note that for the statement records
The records for the PROCEDURE statement consists of 4 records:
The records for the assignment statement consists of 2 records:
The records for the END statement consists of 2 records:
The ordinal xin_Exp_Kind identifies the type of an expression for a syntax record that describes an expression. Some of these records will have non-zero child nodes, for example:
Define
ordinal
xin_Exp_Kind
( xin_Exp_Kind_Unset
,xin_Exp_Kind_Bit_String
,xin_Exp_Kind_Char_String
,xin_Exp_Kind_Graphic_String
,xin_Exp_Kind_Number
,xin_Exp_Kind_Infix_Op
,xin_Exp_Kind_Prefix_Op
,xin_Exp_Kind_Builtin_Rfrnc
,xin_Exp_Kind_Entry_Rfrnc
,xin_Exp_Kind_Qualified_Rfrnc
,xin_Exp_Kind_Unsub_Rfrnc
,xin_Exp_Kind_Subscripted_Rfrnc
,xin_Exp_Kind_Type_Func
,xin_Exp_Kind_Widechar_String
) prec(8) unsigned;The ordinal xin_Number_Kind identifies the type of a number for a syntax record that describes a number.
Define
ordinal
xin_Number_Kind
( xin_Number_Kind_Unset
,xin_Number_Kind_Real_Fixed_Bin
,xin_Number_Kind_Real_Fixed_Dec
,xin_Number_Kind_Real_Float_Bin
,xin_Number_Kind_Real_Float_Dec
,xin_Number_Kind_Cplx_Fixed_Bin
,xin_Number_Kind_Cplx_Fixed_Dec
,xin_Number_Kind_Cplx_Float_Bin
,xin_Number_Kind_Cplx_Float_Dec
) prec(8) unsigned;The ordinal xin_Lex_Kind identifies the type of a lexeme for a syntax record that describes a lexical unit. In these ordinal names,
Define
ordinal
xin_Lex_Kind
( xin_Lex_Undefined
,xin_Lex_Period
,xin_Lex_Colon
,xin_Lex_Semicolon
,xin_Lex_Lparen
,xin_Lex_Rparen
,xin_Lex_Comma
,xin_Lex_Equals
,xin_Lex_Gt
,xin_Lex_Ge
,xin_Lex_Lt
,xin_Lex_Le
,xin_Lex_Ne
,xin_Lex_Lctr
,xin_Lex_Star
,xin_Lex_Dbl_Colon
,xin_Lex_Not
,xin_Lex_Vrule
,xin_Lex_Dbl_Vrule
,xin_Lex_And
,xin_Lex_Dbl_Star
,xin_Lex_Plus
,xin_Lex_Minus
,xin_Lex_Slash
,xin_Lex_Equals_Gt
,xin_Lex_Lparen_Colon
,xin_Lex_Colon_Rparen
,xin_Lex_Plus_Equals
,xin_Lex_Minus_Equals
,xin_Lex_Star_Equals
,xin_Lex_Slash_Equals
,xin_Lex_Vrule_Equals
,xin_Lex_And_Equals
,xin_Lex_Dbl_Star_Equals
,xin_Lex_Dbl_Vrule_Equals
,xin_Lex_Dbl_Slash
) unsigned prec(16);The ordinal xin_Voc_Kind identifies the keyword for a syntax record that describes an item from the compiler's "vocabulary".
Define
ordinal
xin_Voc_Kind
( xin_Voc_Undefined
,xin_Voc_a
,xin_Voc_abnormal
,xin_Voc_act
,xin_Voc_activate
,xin_Voc_adata
,xin_Voc_addbuff
,xin_Voc_aggregate
,xin_Voc_aix
,xin_Voc_alias
,xin_Voc_alien
,xin_Voc_aligned
,xin_Voc_all
,xin_Voc_alloc
,xin_Voc_allocate
,xin_Voc_anno
,xin_Voc_ans
,xin_Voc_any
,xin_Voc_anycond
,xin_Voc_anycondition
,xin_Voc_area
,xin_Voc_as
,xin_Voc_ascii
,xin_Voc_asgn
,xin_Voc_asm
,xin_Voc_asmtdli
,xin_Voc_assembler
,xin_Voc_assignable
,xin_Voc_attach
,xin_Voc_attention
,xin_Voc_attn
,xin_Voc_attribute
,xin_Voc_attributes
,xin_Voc_auto
,xin_Voc_automatic
,xin_Voc_b
,xin_Voc_backwards
,xin_Voc_based
,xin_Voc_begin
,xin_Voc_beta
,xin_Voc_bigendian
,xin_Voc_bin
,xin_Voc_binary
,xin_Voc_bind
,xin_Voc_bit
,xin_Voc_bkwd
,xin_Voc_blksize
,xin_Voc_block
,xin_Voc_buf
,xin_Voc_buffered
,xin_Voc_buffers
,xin_Voc_bufnd
,xin_Voc_bufni
,xin_Voc_bufoff
,xin_Voc_bufsp
,xin_Voc_build
,xin_Voc_builtin
,xin_Voc_by
,xin_Voc_byaddr
,xin_Voc_byname
,xin_Voc_byvalue
,xin_Voc_c
,xin_Voc_call
,xin_Voc_cdecl
,xin_Voc_cdecl16
,xin_Voc_cee
,xin_Voc_ceetdli
,xin_Voc_cell
,xin_Voc_char
,xin_Voc_character
,xin_Voc_charg
,xin_Voc_chargraphic
,xin_Voc_charset
,xin_Voc_check
,xin_Voc_cics
,xin_Voc_class
,xin_Voc_close
,xin_Voc_cmp
,xin_Voc_cmpat
,xin_Voc_cms
,xin_Voc_cmstpl
,xin_Voc_cobol
,xin_Voc_col
,xin_Voc_column
,xin_Voc_compile
,xin_Voc_complex
,xin_Voc_cond
,xin_Voc_condition
,xin_Voc_conn
,xin_Voc_connected
,xin_Voc_consecutive
,xin_Voc_constant
,xin_Voc_control
,xin_Voc_controlled
,xin_Voc_conv
,xin_Voc_conversion
,xin_Voc_copy
,xin_Voc_count
,xin_Voc_cplx
,xin_Voc_create
,xin_Voc_cs
,xin_Voc_ct
,xin_Voc_ctl
,xin_Voc_ctl360
,xin_Voc_ctlasa
,xin_Voc_currency
,xin_Voc_d
,xin_Voc_data
,xin_Voc_dataonly
,xin_Voc_db
,xin_Voc_dcl
,xin_Voc_deact
,xin_Voc_deactivate
,xin_Voc_debug
,xin_Voc_dec
,xin_Voc_decimal
,xin_Voc_deck
,xin_Voc_declare
,xin_Voc_def
,xin_Voc_default
,xin_Voc_define
,xin_Voc_defined
,xin_Voc_defines
,xin_Voc_delay
,xin_Voc_delete
,xin_Voc_desclist
,xin_Voc_desclocator
,xin_Voc_descriptor
,xin_Voc_descriptors
,xin_Voc_detach
,xin_Voc_dft
,xin_Voc_dim
,xin_Voc_dimension
,xin_Voc_direct
,xin_Voc_directed
,xin_Voc_display
,xin_Voc_dli
,xin_Voc_dllinit
,xin_Voc_do
,xin_Voc_downthru
,xin_Voc_dummydesc
,xin_Voc_duplicate
,xin_Voc_e
,xin_Voc_ebcdic
,xin_Voc_edit
,xin_Voc_alpha
,xin_Voc_else
,xin_Voc_emulate
,xin_Voc_enclave
,xin_Voc_end
,xin_Voc_endf
,xin_Voc_endfile
,xin_Voc_endif
,xin_Voc_endp
,xin_Voc_endpage
,xin_Voc_entry
,xin_Voc_enu
,xin_Voc_env
,xin_Voc_environment
,xin_Voc_error
,xin_Voc_esd
,xin_Voc_evendec
,xin_Voc_event
,xin_Voc_exclusive
,xin_Voc_exec
,xin_Voc_execops
,xin_Voc_execute
,xin_Voc_exit
,xin_Voc_exports
,xin_Voc_ext
,xin_Voc_extchk
,xin_Voc_external
,xin_Voc_externalonly
,xin_Voc_extname
,xin_Voc_extonly
,xin_Voc_f
,xin_Voc_fastcall
,xin_Voc_fastcall16
,xin_Voc_fb
,xin_Voc_fbs
,xin_Voc_fetch
,xin_Voc_fetchable
,xin_Voc_file
,xin_Voc_finish
,xin_Voc_first
,xin_Voc_fixed
,xin_Voc_fixeddec
,xin_Voc_fixedoverflow
,xin_Voc_flag
,xin_Voc_float
,xin_Voc_flow
,xin_Voc_flush
,xin_Voc_fofl
,xin_Voc_forever
,xin_Voc_format
,xin_Voc_fortran
,xin_Voc_free
,xin_Voc_from
,xin_Voc_fromalien
,xin_Voc_fs
,xin_Voc_full
,xin_Voc_g
,xin_Voc_generic
,xin_Voc_genkey
,xin_Voc_get
,xin_Voc_gn
,xin_Voc_go
,xin_Voc_gonumber
,xin_Voc_gostmt
,xin_Voc_goto
,xin_Voc_gr
,xin_Voc_graphic
,xin_Voc_gs
,xin_Voc_halt
,xin_Voc_handle
,xin_Voc_hexadec
,xin_Voc_hexadecimal
,xin_Voc_i
,xin_Voc_ibm
,xin_Voc_ieee
,xin_Voc_if
,xin_Voc_ign
,xin_Voc_ignore
,xin_Voc_imp
,xin_Voc_impl
,xin_Voc_implicit
,xin_Voc_imported
,xin_Voc_imprecise
,xin_Voc_ims
,xin_Voc_in
,xin_Voc_inc
,xin_Voc_incafter
,xin_Voc_incdir
,xin_Voc_include
,xin_Voc_incpath
,xin_Voc_indexarea
,xin_Voc_indexed
,xin_Voc_inherits
,xin_Voc_init
,xin_Voc_initfill
,xin_Voc_initial
,xin_Voc_inline
,xin_Voc_inout
,xin_Voc_input
,xin_Voc_insource
,xin_Voc_instance
,xin_Voc_int
,xin_Voc_inter
,xin_Voc_internal
,xin_Voc_interrupt
,xin_Voc_into
,xin_Voc_invalidop
,xin_Voc_ipa
,xin_Voc_irred
,xin_Voc_irreducible
,xin_Voc_is
,xin_Voc_iterate
,xin_Voc_itrace
,xin_Voc_jpn
,xin_Voc_k
,xin_Voc_key
,xin_Voc_keyed
,xin_Voc_keyfrom
,xin_Voc_keylength
,xin_Voc_keyloc
,xin_Voc_keyto
,xin_Voc_l
,xin_Voc_label
,xin_Voc_langlvl
,xin_Voc_last
,xin_Voc_laxconv
,xin_Voc_laxdcl
,xin_Voc_laxif
,xin_Voc_laxint
,xin_Voc_laxqual
,xin_Voc_lc
,xin_Voc_leave
,xin_Voc_library
,xin_Voc_libs
,xin_Voc_like
,xin_Voc_limited
,xin_Voc_limits
,xin_Voc_line
,xin_Voc_linecount
,xin_Voc_lineno
,xin_Voc_linesize
,xin_Voc_linkage
,xin_Voc_list
,xin_Voc_littleendian
,xin_Voc_lmessage
,xin_Voc_lmsg
,xin_Voc_local
,xin_Voc_localonly
,xin_Voc_locate
,xin_Voc_log
,xin_Voc_loop
,xin_Voc_lowerinc
,xin_Voc_lsfirst
,xin_Voc_m
,xin_Voc_macro
,xin_Voc_main
,xin_Voc_map
,xin_Voc_mar
,xin_Voc_margini
,xin_Voc_margins
,xin_Voc_mask
,xin_Voc_max
,xin_Voc_maxgen
,xin_Voc_maxmem
,xin_Voc_md
,xin_Voc_mdeck
,xin_Voc_member
,xin_Voc_metaclass
,xin_Voc_method
,xin_Voc_methods
,xin_Voc_mi
,xin_Voc_min
,xin_Voc_msfirst
,xin_Voc_msg
,xin_Voc_multi
,xin_Voc_mvs
,xin_Voc_n
,xin_Voc_na
,xin_Voc_nag
,xin_Voc_name
,xin_Voc_names
,xin_Voc_nan
,xin_Voc_native
,xin_Voc_nativeaddr
,xin_Voc_natlang
,xin_Voc_nc
,xin_Voc_ncp
,xin_Voc_nct
,xin_Voc_nd
,xin_Voc_nest
,xin_Voc_new
,xin_Voc_ngn
,xin_Voc_ngr
,xin_Voc_ngs
,xin_Voc_nign
,xin_Voc_nimp
,xin_Voc_nimpl
,xin_Voc_ninc
,xin_Voc_nint
,xin_Voc_nis
,xin_Voc_nm
,xin_Voc_nmd
,xin_Voc_nmi
,xin_Voc_nnum
,xin_Voc_noadata
,xin_Voc_noaggregate
,xin_Voc_noanno
,xin_Voc_noattributes
,xin_Voc_noauto
,xin_Voc_noautomatic
,xin_Voc_nobj
,xin_Voc_nobuild
,xin_Voc_nocee
,xin_Voc_nocharg
,xin_Voc_nochargraphic
,xin_Voc_nocheck
,xin_Voc_nocompile
,xin_Voc_noconv
,xin_Voc_noconversion
,xin_Voc_nocount
,xin_Voc_nodebug
,xin_Voc_nodeck
,xin_Voc_nodef
,xin_Voc_nodescriptor
,xin_Voc_nodescriptors
,xin_Voc_nodirected
,xin_Voc_nodli
,xin_Voc_nodllinit
,xin_Voc_nodummydesc
,xin_Voc_noduplicate
,xin_Voc_noemulate
,xin_Voc_noesd
,xin_Voc_noevendec
,xin_Voc_noexecops
,xin_Voc_noexit
,xin_Voc_noext
,xin_Voc_noextchk
,xin_Voc_nof
,xin_Voc_nofetchable
,xin_Voc_nofixedoverflow
,xin_Voc_noflow
,xin_Voc_nofofl
,xin_Voc_nofromalien
,xin_Voc_nogonumber
,xin_Voc_nogostmt
,xin_Voc_nographic
,xin_Voc_noignore
,xin_Voc_noimplicit
,xin_Voc_noimprecise
,xin_Voc_noinclude
,xin_Voc_noinitfill
,xin_Voc_noinline
,xin_Voc_noinsource
,xin_Voc_nointerrupt
,xin_Voc_noinvalidop
,xin_Voc_noipa
,xin_Voc_nolaxasgn
,xin_Voc_nolaxconv
,xin_Voc_nolaxdcl
,xin_Voc_nolaxif
,xin_Voc_nolaxint
,xin_Voc_nolaxqual
,xin_Voc_nolibs
,xin_Voc_nolist
,xin_Voc_nolock
,xin_Voc_nolog
,xin_Voc_nomacro
,xin_Voc_nomap
,xin_Voc_nomapin
,xin_Voc_nomapout
,xin_Voc_nomargini
,xin_Voc_nomdeck
,xin_Voc_nomsg
,xin_Voc_nonasgn
,xin_Voc_nonassignable
,xin_Voc_nonconn
,xin_Voc_nonconnected
,xin_Voc_none
,xin_Voc_nonest
,xin_Voc_nonlocal
,xin_Voc_nonnative
,xin_Voc_nonnativeaddr
,xin_Voc_nonrecursive
,xin_Voc_nonumber
,xin_Voc_nonvar
,xin_Voc_nonvarying
,xin_Voc_noobject
,xin_Voc_nooffset
,xin_Voc_noofl
,xin_Voc_nooptimize
,xin_Voc_nooptions
,xin_Voc_nooverflow
,xin_Voc_nop
,xin_Voc_nopp
,xin_Voc_nopptrace
,xin_Voc_noprobe
,xin_Voc_noproceed
,xin_Voc_noprofile
,xin_Voc_nopt
,xin_Voc_norb
,xin_Voc_noreserve
,xin_Voc_noretcode
,xin_Voc_normal
,xin_Voc_norunops
,xin_Voc_noscheduler
,xin_Voc_nosemantic
,xin_Voc_nosequence
,xin_Voc_noshort
,xin_Voc_nosize
,xin_Voc_nosnap
,xin_Voc_nosource
,xin_Voc_nosprog
,xin_Voc_nostmt
,xin_Voc_nostorage
,xin_Voc_nostrg
,xin_Voc_nostringrange
,xin_Voc_nostringsize
,xin_Voc_nostrz
,xin_Voc_nosubrg
,xin_Voc_nosubscriptrang
,xin_Voc_nosym
,xin_Voc_nosyntax
,xin_Voc_not
,xin_Voc_noterminal
,xin_Voc_notest
,xin_Voc_notiled
,xin_Voc_notrace
,xin_Voc_noufl
,xin_Voc_nounderflow
,xin_Voc_nowcode
,xin_Voc_nowrite
,xin_Voc_noxref
,xin_Voc_nozdiv
,xin_Voc_nozerodivide
,xin_Voc_npro
,xin_Voc_ns
,xin_Voc_nsem
,xin_Voc_nseq
,xin_Voc_nstg
,xin_Voc_nsyn
,xin_Voc_nterm
,xin_Voc_null370
,xin_Voc_nullsys
,xin_Voc_num
,xin_Voc_number
,xin_Voc_nx
,xin_Voc_obj
,xin_Voc_object
,xin_Voc_of
,xin_Voc_offset
,xin_Voc_ofl
,xin_Voc_on
,xin_Voc_onproc
,xin_Voc_op
,xin_Voc_open
,xin_Voc_opt
,xin_Voc_optimize
,xin_Voc_optional
,xin_Voc_options
,xin_Voc_optlink
,xin_Voc_or
,xin_Voc_order
,xin_Voc_ordinal
,xin_Voc_organization
,xin_Voc_os
,xin_Voc_os2
,xin_Voc_other
,xin_Voc_otherwise
,xin_Voc_out
,xin_Voc_output
,xin_Voc_overflow
,xin_Voc_overrides
,xin_Voc_owns
,xin_Voc_p
,xin_Voc_package
,xin_Voc_page
,xin_Voc_pagesize
,xin_Voc_parameter
,xin_Voc_parents
,xin_Voc_parm
,xin_Voc_pascal
,xin_Voc_pascal16
,xin_Voc_password
,xin_Voc_path
,xin_Voc_pending
,xin_Voc_pentium
,xin_Voc_pic
,xin_Voc_picture
,xin_Voc_plitdli
,xin_Voc_plitest
,xin_Voc_pointer
,xin_Voc_pos
,xin_Voc_position
,xin_Voc_pp
,xin_Voc_pptrace
,xin_Voc_prec
,xin_Voc_precision
,xin_Voc_prefix
,xin_Voc_preproc
,xin_Voc_preview
,xin_Voc_print
,xin_Voc_priority
,xin_Voc_private
,xin_Voc_pro
,xin_Voc_probe
,xin_Voc_proc
,xin_Voc_procedure
,xin_Voc_proceed
,xin_Voc_process
,xin_Voc_profile
,xin_Voc_protected
,xin_Voc_ptr
,xin_Voc_public
,xin_Voc_put
,xin_Voc_r
,xin_Voc_range
,xin_Voc_read
,xin_Voc_real
,xin_Voc_record
,xin_Voc_recsize
,xin_Voc_recursive
,xin_Voc_red
,xin_Voc_reducible
,xin_Voc_reentrant
,xin_Voc_refer
,xin_Voc_refine
,xin_Voc_regional
,xin_Voc_relative
,xin_Voc_release
,xin_Voc_renames
,xin_Voc_reorder
,xin_Voc_repeat
,xin_Voc_reply
,xin_Voc_reread
,xin_Voc_reserve
,xin_Voc_reserved
,xin_Voc_reserves
,xin_Voc_resignal
,xin_Voc_retcode
,xin_Voc_return
,xin_Voc_returns
,xin_Voc_reuse
,xin_Voc_revert
,xin_Voc_rewrite
,xin_Voc_rules
,xin_Voc_runops
,xin_Voc_s
,xin_Voc_s386
,xin_Voc_s486
,xin_Voc_saa
,xin_Voc_saa2
,xin_Voc_saa3
,xin_Voc_scalarvarying
,xin_Voc_scheduler
,xin_Voc_segmented
,xin_Voc_select
,xin_Voc_sem
,xin_Voc_semantic
,xin_Voc_seq
,xin_Voc_seql
,xin_Voc_sequence
,xin_Voc_sequential
,xin_Voc_set
,xin_Voc_short
,xin_Voc_signal
,xin_Voc_signed
,xin_Voc_single
,xin_Voc_sis
,xin_Voc_size
,xin_Voc_sizefrom
,xin_Voc_sizeto
,xin_Voc_skip
,xin_Voc_smessage
,xin_Voc_smsg
,xin_Voc_snap
,xin_Voc_source
,xin_Voc_spill
,xin_Voc_sprog
,xin_Voc_sql
,xin_Voc_static
,xin_Voc_stdcall
,xin_Voc_stg
,xin_Voc_stmt
,xin_Voc_stop
,xin_Voc_storage
,xin_Voc_stream
,xin_Voc_strg
,xin_Voc_string
,xin_Voc_stringrange
,xin_Voc_stringsize
,xin_Voc_struct
,xin_Voc_structure
,xin_Voc_strz
,xin_Voc_subrg
,xin_Voc_subscriptrange
,xin_Voc_suspend
,xin_Voc_sym
,xin_Voc_syn
,xin_Voc_syntax
,xin_Voc_sysin
,xin_Voc_sysparm
,xin_Voc_sysprint
,xin_Voc_system
,xin_Voc_sz
,xin_Voc_task
,xin_Voc_term
,xin_Voc_terminal
,xin_Voc_test
,xin_Voc_then
,xin_Voc_thread
,xin_Voc_tiled
,xin_Voc_time
,xin_Voc_title
,xin_Voc_to
,xin_Voc_total
,xin_Voc_tp
,xin_Voc_trace
,xin_Voc_transient
,xin_Voc_transmit
,xin_Voc_trkofl
,xin_Voc_tso
,xin_Voc_tstack
,xin_Voc_type
,xin_Voc_u
,xin_Voc_uen
,xin_Voc_ufl
,xin_Voc_unal
,xin_Voc_unaligned
,xin_Voc_unbuf
,xin_Voc_unbuffered
,xin_Voc_undefinedfile
,xin_Voc_underflow
,xin_Voc_undf
,xin_Voc_union
,xin_Voc_unlimited
,xin_Voc_unlock
,xin_Voc_unroll
,xin_Voc_unsigned
,xin_Voc_until
,xin_Voc_update
,xin_Voc_upperinc
,xin_Voc_upthru
,xin_Voc_v
,xin_Voc_v1
,xin_Voc_v2
,xin_Voc_value
,xin_Voc_valuelist
,xin_Voc_valuerange
,xin_Voc_var
,xin_Voc_variable
,xin_Voc_varying
,xin_Voc_varyingz
,xin_Voc_varz
,xin_Voc_vb
,xin_Voc_vbs
,xin_Voc_virtual
,xin_Voc_vs
,xin_Voc_vsam
,xin_Voc_w
,xin_Voc_wait
,xin_Voc_wcode
,xin_Voc_when
,xin_Voc_while
,xin_Voc_windows
,xin_Voc_winproc
,xin_Voc_wkeep
,xin_Voc_write
,xin_Voc_x
,xin_Voc_xchar
,xin_Voc_xinfo
,xin_Voc_xoptions
,xin_Voc_xref
,xin_Voc_zdiv
,xin_Voc_zerodivide
) unsigned prec(16);