各構文レコードでは、ノード ID と呼ばれる 1 つの番号が割り当てられます。後のレコードで他の構文レコードを参照するときは、この番号が使用されます。
最初の構文レコードの種類は xin_Syn_Kind_Package です。コンパイル単位の中にプロシージャーがある場合、このレコードの子ノードが、プロシージャーのうちの最初のものを指します。 次に親ノード、兄弟ノード、および子ノードに基づいて、コンパイル単位に含まれるすべてのプロシージャーと開始ブロックの特有の関係が 1 つのマップに設定されます。
次の単純なプログラムで考えてみます。
a: proc;
call b;
call c;
b: proc;
end b;
c: proc;
call d;
d: proc;
end d;
end c;
end a;このプログラムのブロックに割り当てられるノード索引は、次のようになります。
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); /* */序数 xin_Syn_Kind は、構文レコードのタイプを示します。
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;次の単純なプログラムで考えてみます。
a: proc(x);
dcl x char(8);
x = substr(datetime(),1,8);
end;このプログラムのブロックに割り当てられるノード索引は、次のようになります。
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
プロシージャー・レコードには、ENTRY A のシンボル・レコードの ID が含まれます (block_sym フィールド内)。 このシンボル・レコードには、そのプロシージャーの最初のステートメントのノード ID が含まれます (first_stmt_id フィールド内)。
ステートメント・レコードでは、次の点に注意してください。
PROCEDURE ステートメントのレコードは、次の 4 つのレコードから成ります。
割り当てステートメントのレコードは、次の 2 つのレコードから成ります。
END ステートメントのレコードは、次の 2 つのレコードから成ります。
序数 xin_Exp_Kind は、式が記述された構文レコードの式のタイプを示します。 このレコードの中には、子ノードの数がゼロでないものもあります。例えば、次のような場合です。
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;序数 xin_Number_Kind は、数値が記述された構文レコードの数値のタイプを示します。
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;序数 xin_Lex_Kind は、字句単位が記述された構文レコードの字句のタイプを示します。 この序数名のうち、
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);序数 xin_Voc_Kind は、コンパイラーの「語彙」から項目が記述された構文レコードのキーワードを示します。
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);