


  '        ##
  '       ####
  '      ######
  '     ########
  '    ##########
  '   ############
  '  ##############
  ' ################
  'GLOBAL DEFINITIONS
  '==================


  '-----------------
  'GLOBAL DATA TYPES
  '=================

  type hashref
    h as sys   ' hash code
    l as sys   ' linked list index (fwds only)
    b as sys   ' brc nesting level
    n as sys   ' namespace code
  end type

  type preced
    pr as sys
    sw as sys
    le as sys
  end type

  type stack
    a as sys
    b as sys
    c as sys
    d as sys
    e as sys
    f as sys
    g as sys
    h as sys
    i as sys
    j as sys
    k as sys
    l as sys
  end type

  type nester
    me    as sys
    aoffl as sys
    aoffs as sys
    asce  as sys
    lclv  as sys
    spe   as sys
    ixb   as sys
    sr2   as sys
    ct2   as sys 
    tys   as sys
  end type


  '-----------------
  'GENERAL CONSTANTS
  '=================

  const as sys    htyp=512       'HIGHER TYPES BASE

  const as string she=chr(248)   '#show DELIMITER
  const as string dfd=chr(249)   'DATA FIELD DELIMITER
  const as sys    iq4=250        'INTERNAL QUOTE CODE
  const as string iq=chr(iq4)    'INTERNAL QUOTE MARK
  const as sys    lnm=251        'ORIGINAL LINE MARKER (IN COMMENT)
  const as sys    hasa=124       ' | HIGH ASSEMBLER INSTRUCTION CODE
 'const as string hasm=chr(hasa) 'HIGH ASSEMBLER INSTRUCTION MARLER
  const as string sq=chr(252)    'TRANSFER MARKER START
  const as string eq=chr(253)    'TRANSFER MARKER END
  const as string declar=chr(254)'LAZY DECLARATION
  '
  const as string endex=" as at then else elseif end to step if do for when while until "
  '
  '
  const as string htb=chr(9)     'HORIZONTAL TAB
  const as string crg=cr+";"+cr  'END OF LINE FOLLOWED BY BLANK COMMENT
  const as string qu=chr(34)     'DOUBLE QUOTE MARK
  const as string cm=chr(44)     'COMMA
  const as string sp=cr+"("+cr   'START OF BLOCK
  const as string ep=cr+")"+cr   'END OF BLOCK
  const as string stp=" : "      'NORMAL STATEMENT SEPARATOR
  const as string sep =" "       'SINGLE SPACE

  const as string exdo="jmp long _do"+cr+"._end_do"+ep      'ENDDO
  const as string exnx="jmp long _for"+cr+"._end_for"+ep    'NEXT
  const as string exsl="._end_cas"+cr+"._end_sel"+ep        'ENDSEL
  const as string exei="jmp fwd _end_if"+cr+"._end_cnd"+cr  'ELSEIF
  const as string exel="jmp fwd _end_if"+cr+"._end_cnd"+cr  'ELSE
  const as string exif="._end_cnd"+cr+"._end_if"+ep         'ENDIF
  const as string exitdo=cr+"exit do"+cr+"end if"+cr        'COND EXIT
  const as string contdo=cr+"continue do"+cr+"end if"+cr    'COND CONTINUE

  '----------
  'META TYPES
  '==========

  const  metatypes as string=_
  " >0   compund variable,"_
  "  0   primitive variable or constant,"_
  " -1   (unused),"_
  " -2   (unused),"_
  " -3   type / class,"_
  " -4   low level function,"_
  " -5   proc / sub / function / method,"_
  " -6   (unused),"_
  " -7   (unused),"_
  " -8   struct from typedef,"_
  " -9   reserved word,"_
  " -10  x86 register,"_
  " -11  attributes,"_
  " -12  namespace,"_
  " -13  o2 major keyword,"_
  " -14  o2h major keyword,"_
  " -15  primitive type,"_
  " -16  core functions,"_
  " -17  core float macro,"_
  " -18  low level macro / equate,"_
  " -19  core macro,"_
  " -20  high level macro,"_
  " -21  internal code macro,"_
  " -30  label,"_
  " -31  literal number,"_
  " -32  literal string,"_
  " -33  enum enumeration, "_
  ""

  'also numeric equates


  'OP CODING TO JUMP INSTRUCTION = <> > >= <= <

  const as string jmpname=_
  " 12 jb  "_
  " 13 jae "_
  " 14 jz  "_
  " 15 jnz "_
  " 16 jbe "_
  " 17 ja  "_
  " 1C jl  "_
  " 1D jge "_
  " 1E jle "_
  " 1F jg  "_
  " 92 jae "_
  " 93 jb  "_
  " 94 jnz "_
  " 95 jz  "_
  " 96 ja  "_
  " 97 jbe "_
  " 9C jge  "_
  " 9D jl  "_
  " 9E jg  "_
  " 9F jle "_
  ""

  const as string cops=_
  "       jb  jae jz  jnz jbe ja                  jl  jge jle jg  "
  '       2   3   4   5   6   7                   C   D   E   F   '  
  '       8   12  16  20  24  28                  48  52  56  60  '


  '---------
  'OPERATORS
  '=========
  '
  'this list is used to return an opnumber from an opname (identops)
  'these opnumbers are all hardcoded
  '
  const as string opname=_
  " 0 load "_
  " 1 load "_
  " 2 = "_
  " 3 cmp "_
  " 4 push "_
  " 5 dump "_
  " 6 pop "_
  " 7 neg "_
  " 8 += "_
  " 9 -= "_
  " 10 swap "_
  " 11 not "_
  " 11 ! "_
  " 12 inc "_
  " 13 dec "_
  " 14 *= "_
  " 15 /= "_
  " 20 == "_
  " 21 <> "_
  " 28 < "_
  " 29 >= "_
  " 30 <= "_
  " 31 > "_
  " 32 boolean "_
  " 33 and "_
  " 33 & "_
  " 34 or "_
  " 34 | "_
  " 35 xor "_
  " 65 and= "_
  " 66 or= "_
  " 67 xor= "_
  " 42 * "_
  " 43 + "_
  " 45 - "_
  " 47 / "_
  " 92 \ "_
  " 71 && "_ 'boolean and
  " 72 || "_ 'boolean or
  " 73 ^^ "_ 'boolean xor
  " 74 << "_
  " 75 >> "_
  " 94 ^ "_   'normally power of
  ""

  '----------
  'DATA TYPES
  '==========
  '
  '---------------
  'BASE DATA TYPES
  '===============

  'also used for reverse dictionary to obtain type name from type code

  const as string idtype=_
  " void 0,"_ 'special case
  " sbyte 1,"_
  " short 2,"_
  " long 4,"_
  " sys 8,"_
  " byte 21,"_
  " ubyte 21,"_
  " word 22,"_
  " dword 24,"_
  " quad 48,"_
  " single 64,"_
  " double 68,"_
  " extended 6A,"_
  " fpu 40,"_
  " char A1,"_
  " wchar A2,"_
  " zstring A1,"_
  " zstring2 A2,"_
  " bstring C1,"_
  " bstring2 C2,"_
  " string E1,"_
  " wstring E2,"_
  ""

  '
  '-------------------
  'CALLING CONVENTIONS
  '===================
  '
  const as string callco=_
  " stdcall 100"_
  " cdecl 101"_
  " ms64 102"_
  " ox64 103"_
  " pascal 108"_
  ""
  '
  'ox64 103 internal use






  '--------------------
  'FLOATING POINT MACROS
  '====================

  const as string exponents=_
  "|sp -16 : fstcw [esp] : fstcw [esp+2] : or [esp],0xc00 : fldcw [esp]"+cr+_
  "fldl2e : fmulp st1 : fld st0 : frndint : fsub st1,st0"+cr+_
  "fxch : f2xm1 : fld1 : faddp st1 : fscale : fstp st1"+cr+_
  "fldcw [esp+2] : |sp 16"

'  const as string powers=_
'  "sub esp,16 : fstcw [esp] : fstcw [esp+2] : or [esp],0xc00 : fldcw [esp]"+cr+_
'  "fxch : fst dword [esp+8] : fabs : fyl2x : fld st0 : frndint : fsub st1,st0"+cr+_
'  "fxch : f2xm1 : fld1 : faddp st1,st0 : fscale : fstp st1"+cr+_
'  "and byte [esp+11],128  : jz fwd nng : fchs : .nng : fldcw [esp+2] : add esp,16"

  const as string powers=_
  "|sp -16 : fstcw [esp] : fstcw [esp+2] : or [esp],0xc00 : fldcw [esp] : ( :"+cr+_
  "fist dword [esp+8] : and byte [esp+8],1 : jnz exit : fxch : fabs : fyl2x : fld st0"+cr+_
  "frndint : fsub st1,st0 : fxch : f2xm1 : fld1 : faddp st1,st0 : fscale : fstp st1 : jmp fwd nng"+cr+_
  ") : fxch : fst dword [esp+8] : fabs : fyl2x : fld st0 : frndint : fsub st1,st0 : fxch"+cr+_
  "f2xm1 : fld1 : faddp st1,st0 : fscale : fstp st1 : ( : and byte [esp+11],128 : jz exit : fchs : )"+cr+_
  ".nng : fldcw [esp+2] : |sp 16"+cr

  '========
  'CAPACITY
  '========

  '
  const as sys maxit=200000  'size of entity array
  const as sys smaco=12      'elements in maco(0..7) macs(0..3)
  const as sys smacd=smaco-1 'dim size spec
  const as sys omacs=smaco-4 'offset to maco string pointers (entity strings)



  '======
  'ARRAYS
  '======


  'COMPILER BUFFERS
  '
  '===================================================================
  '
  global as string  dbuf(511) 'BUFFERS FOR COMPILE CODE
  global as integer lbuf      'LENGTH OF SELECTED BUFFER
  global as integer ibuf      'INDEX FOR SELECTED BUFFER
  global as any ptr pbuf      'POINTER TO SELECTED BUFFER
  '
  'ENTITY STORAGE
  '
  '===================================================================
  global as sys     opd(999,9), ope   ' Assembly code data
  global as string  opn(999),ops(999) ' Assembly code data
  '-------------------------------------------------------------------
  global as sys     maco(maxit,smacd) ' buffer for all definitions
  global as hashref mach(maxit)       ' hashes
  global as sys     macb(2047)        'hash base links
  '===================================================================
  '
  '
  'GENERAL

  '===================================================================
  global as sys    ctb(99)       ' control block type
  global as sys    hei(99)       ' control block elseif suppressor flag
  global as stack  st(99)        ' general nesting stack
  global as stack  stk           ' general nesting stack
  global as sys    jn            ' string join flag
  global as sys    sta(99)       ' precedence stack
  global as sys    slc(99)       ' `select` stack cas
  global as sys    slt(99)       ' `select` stack cas type
  global as sys    sle(99)       ' `select` stack enumeration
  global as string sls(99)       ' `select` stack expression (for switch)
  global as preced pre(99)       ' operator precedence
  global as string nes(99)       ' nested names
  global as string nxs(99)       ' nested next step
  global as string cln(99)       ' conditional line
  '-------------------------------------------------------------------
  global as string por(99)       ' param original word (ow)
  global as string paw(99)       ' param wg word
  global as string pas(99)       ' parameter expression
  global as sys    pao(99)       ' param last operator
  global as sys    pat(99)       ' param type
  global as sys    pst(99)       ' param stack size allocated
  global as string pav(99)       ' param conversion code
  global as string pax(99)       ' param indirect addr code
  '-------------------------------------------------------------------
  global as sys    libu(511)     ' library use flag
  global as sys    libo(511)     ' library offset list
  global as string libs(511)     ' library name list
  global as string libl(511)     ' library used proc list
  '-------------------------------------------------------------------
  global as string wva(15)       ' var / dim statements
  global as nester scop(99)      ' nesting scope index
  '===================================================================
  global as string sregs(100)    ' nesting indexers
  global as string wp(63)        ' macro params
  global as string ebd(255)      ' embedded data
  '===================================================================
  global as sys    sti(53)       ' index to file name log ssn
  global as string ssf(63)       ' include file path name
  global as string sst(63)       ' include (preserve parent text)
  global as string stb(63)       ' include (preserve included text)
  global as string ssn(999)      ' include file name log
  global as sys    ssh(999)      ' include content hash log
  global as string rgp(15)       ' register param macros (for 64 bit fast calls)
  global as string regn(15)      ' register param names (for 64 bit fast calls)
  global as sys    typl(15)      ' local param type
  global as long   cbrk(63),cbri ' block nests {}
  '===================================================================
  'PROCEDURE STATE
  'funi   in function flag
  'atf    external flag
  'lcl    local variables used flag
  'lcls   local strings used flag
  'blcl   patch position for stack (ebp) instruction
  'plcl   patch position for stack allocation
  'mlcl   stack space requirement
  'reto   function param boundary
  'retb   function param base
  'ccp    calling convention
  'mqf    function record index
  'typp   return type code
  'noin   no initialise var flag
  'funn   function type 11 12 13
  'dts    temp strings used flag
  'dcs    concatenation buffer used
  'funl   patch position for offset of proclist record (link)
  'flbl   prevent deletion during compaction flag
  'funm   original or alias name (no case conversion)
  'fnam   function name
  'fsig   function signature
  '
  global as sys    funi,atf,lcl,lcls,blcl,plcl,mlcl
  global as sys    reto,retb,ccp,mqf
  global as sys    typp,noin,funn,dts,dcs
  global as sys    funl,flbl
  global as string funm,fnam,fsig
  '===================================================================
  'TYPE/UNION FLAGS
  global as sys    unif(7),unio(7),unim(7)
  global as string unin(7)
  '===================================================================
  global as any ptr sysfuns(1023)' runtime fun table
  global as string  mdl_path     ' 
  '===================================================================
  global as string expwn(999)    ' export labels
  global as string expal(999)    ' export dll symbols
  global as sys    expi(999)     ' export index for sorting
  '===================================================================
  global as sys    dima(16),dimi ' array const offset
  '===================================================================
  global as string wtn(32)       ' temp expressions
  global as sys    tmpi          ' serialiser for temp vars
  '===================================================================





'=======================------------
'SIMPLE GLOBAL VARIABLE DESCRIPTIONS
'===================================

'  fq      include file index
'  me      macro list end boundary
'  mp      entity index
'  mq      linked entity index
'  mc,md  sem codes
'  mct     macro anti recursion counter
'  mex     macro anti recursion source buffer limit
'  swd     start of current word
'  nwd     start of next word
'  ewd     space count at end of word
'  dtf     dot flag for dotted words
'  dcf     double colon flag for :: namespace words
'  aoff    aoffl,aoffs' offsets for indexers
'  asce    ascel,asces ' offset ascend/descend flag
'  regs    regsl,regss regst' indexers
'  woff    offset of element
'  voff    offset of variable
'  toff    offset of vf table
'  pw      pw procedure word
'  bgl     beginning of current line
'  lct     line count
'  incli ' prevent %params from being substituted in next macro
'  mcf macro param insertion flags
'  nan     not a number flag
'  lmax    macro hash buckets max links
'  ascw    ascii of word
'  ascn    ascii of next word
'  ascy    ascii of symbol
'  elsize variable size from last element
'  varf    variable func mode
'  sigf    signature enable flag
'  sig     signature of func
'  sigu    default member assignments
'  sigv    default function param assignments
'  sog     signature of element/return
'  ou      original indirection prefixes
'  ow      original word
'  owa     original word array
'  vew     compile mode: 0 normal 2 include source with errors in o2 script (runtime)
'  noop    no operators flag
'  typ     type of word: primitives and higher types
'  typm    main type; of expression
'  tye     type of element
'  mtyp    metatype
'  phr     conditional lhv rhv
'  cpa     comparator flag
'  leni    length of last insertion
'  inpi    forward insertion point
'  clon    clone flag (getas)
'  noo     new flag (getas)
'  lent    length of object (identype)
'  lenw    length of word (word)
'  op      operator coding
'  oq      last operator code (set by wrd)
'  ind     indirection
'  wi      with flag
'  j       output index
'  pt      any pointer
'  nst     nesting index
'  nx     `next` stack index
'  slx    `select` stack index
'  rga     cpu accum select
'' nquod   inhibit string literal referencing flag
'  qot      quote flag
' nmb       number flag
'---------------------------------------------
'  wu      global word string
'  wu1     global word string
'  wu2     global word string
'  t       output string
'  wpfx    pointer/array code to insert before vars (assembler)
'  epfx    pre expressions to resolve before main expression
'  ppfx    post expressions to resolve after series of expressions
'  cpfx    pointer/array code to insert before vars (emitter)
'  wth     `with` assignment prefix
'  asg     assignment string to append / post append to expression
'  asi     assigner/eqator flag
'  wg      last wr pword
'  opg     last op in expression
'  typg    assignment type
'  tys     specified default type
'  cnc     conditional code
'  cnd     conditional flag
'  tmpst   tmp storage offset
'  tmpstk  tmp storage offset use in 64 bit mode when param is pushed
'  fpu     fpu directive flag
'  pc      param stack index
'  cco     calling convention
'  coco    member derived calling convention for encodele
'  vwb     selected view start
'  vwe     selected view end
'  uk      call compatibility mode
'  libe    library list boundary
'  libr    library name for declared imports
'  impo    import block flag
'   mth    sub/function/method flag
'   priv   private flag
'   brc    scope nesting index
'------------------------------------------------
'  da      value accumulator
'  dv      value register (64 bit float)
'  qv      value register (64 bit integer)
'------------------------------------------------
'  asgm    multiple assignment flag
'  asgb    bracket used to encapsulate
'  asgo    offset
'  asgi    stride
'  asgj    structure array stride
'  asgk    structure string offset
'  asgl    local/global string flag
'  asgn    structure element offset
'  asgs    structure string
'------------------------------------------------
' opns     name of operations
' opnsl    operations name list
' lbw      last label
' ipath    includepath
' lpath    librarypath
' nprec    no precedence flag
' nrs      not resolved flag
' dep      dependent code flag
' cnst     constantflag (Const like Dim)
' ovr      inheritance override flag
' ixb      index base
' bref     byref flag
' ths      implicit this flag
' cef      C output flag
' cefi     C word output flag
' cbi      C output buffer index
' pef      pe format flag 1=dll 2=exe
' pem      pe mode flag 64=64 bit mode
' pexn     pe file name
' cexn     C output file name
' cbuf     C output buffer
' pdr      in procedure flag
' pps      popstack flag
' tmnt     terminate flag
' dlb      dll list base
'' dlbf    dll list base late binding flag
' omo      oxygen io string mode
' rexi     64 bit mode register flag
' expf     export section flag
' rsrf     resource section flag
' indt     indirection of type
' lclv     local variables flag
' ary      TYPE array descriptor accum string
' arf      array resolutiln flag  
' extn     extern flag, C
' sps      string pool buffer string
' spe      string pool end index
' spl      string pool buffer length
' hlo      header language output
' cpuw     cpu width 32/64
' spw1     stack pointer width
' spw2     stack pointer width x 2
' pesp     [esp] or [rsp]
' casf     case mode flag
' dvl      member spec incl signature
' dvm      default values retrieved from signature
' mesb     state intrinsic base index for declarations, dims etc
' mest     state local base index for declarations, dims etc
' vaf      carrier for varf (procedures() callcoc()
' vstp     force variable location step increment
' pres     string buffer 'preserve' flag
' num      generic number format spec
' cas      case flag
' nth      that' flag suppresses 'this'
' oxypath  oxygen path list
' hostdll  oxygen path resolver macro
' bvg      byval flag in expressions for procedures
' uniq     unique flag to prevent duplicate definitions (at same nesting level)
' ispr     expression contains string procedure. flag
' typk     cast type
' dats     initialised data block
' datc     initialised data block item counter
' dati     initialised data block boundary
' lnkc     code side data link table
' lnkd     data side data link table
' nsto     prevent data being added to data section
' stkb     stacked bytes - parameters
' dts      delete temp strings flag
' dls      delete local strings flag
' stp      separator string
' parx     parameter expression flag
' divi     division operator flag (detect in precedence)
' defbuf   buffer for stray #defines
' dwl      lower dword
' dwu      upper dword
' met      metaval flag
' nl       new line flag
' lnmks    last line number encounteres
' pakd     no padding flag for types and classes
' ccx      calling convention code
' wbse     base operand [ebx+5004] etc prior to pointering
' casg     flag to treat '=' as assign in conditionals
' nobr     flag preventing array interpration (bracket)
' ebdi     embedded data string index
' nmac     flag preventing macro expansion
' nstod    flag inhibiting storage of literal data
' cboolf   bool condition flag
' boolcnd  macro to set z flag
' boolify  macro to set qeax 0 / -1
' osg      preassign name (ow)
' psg      preassign string
' wsg      preassign operand
'proclist  list of procedures and their locations
'plistend  end of list
'pls       proclist position (hex string)
'plp       proclist position
'plq       data record patch position
'calllist  list of declarations
'clistend  end of list
'declist   list of declarations
'dlistend  end of list
'compact   dead code removal flag
'tranpass  translator pass
'abst      abstract assembler output
'depsp     dependency space (allocated for run-time compiling)
'gsrc      global source
'gsco      global output (ascii text) code
'cfile     current file (included files)
'preproc   preprocessor switch
'asxp      assignment expression flag
'elct      element count
'elsz      element size
'ctal      conditional compare tally
'aml       member array size
'vtq       member virtual modality
'cpoint    #cpointer mode flag
'opers     operations list
'nsi       namespace index
'nsp       namespace query index
'nsq       namespace query index
'nsw       namespace name
'rps       reprocess statements flag
'hiex      higher expression code for reprocessing
'tyd       typedef flag (excluding typedef struct)
'cpu       quad convert fpu quad to cpu quad
'cnsl      console mode flag for PE file SubSytem 3 (normally 2)
'eord      export ordinal counter
'noco      flag to include commas in capts()
'sigs      parameters type signature
'sigd      parameters indirection signature
'insertc   insert code string for procs

'===================================================================



'----------------------
'SIMPLE GLOBAL VARIABLES
'======================


  global as sys mc,md,me,mp,mq,mct,mex,swd,nwd,ewd,dtf,dcf,aoff,aoffl,aoffs,asce,ascel,asces
  global as sys woff,voff,toff,lct,incli,mcf,nan,lmax,ascw,ascn,ascy,elsize,varf,vaf,sigf,fq,fql
  global as sys noop,abst,typ,tye,typm,mtyp,phr,cpa,leni,inpi,clon,noo,lent,lenw,bgl
  global as sys op,oq,ind,wi,j,opg,typg,tys,asi,nst,nx,slx,rga,nmb,qot
  global as sys lbr=40,rbr=41,iq1=34,iq2=96,iq3=96,ct1=39,ct2=59,sr1=58,sr2=58
  global as sys prec,prl,nsl,ipe,cnc,cnd,tmpst,tmpstk,fpu,pc,cco,coco,aml,vtq
  global as sys vwb,vwe,uk,libe,impo,mth,priv,brc,dep,pps
  global as sys asgb,asgo,asgi,asgj,asgk,asgl,asgm,asgn,nprec,nrs,cnst
  global as sys ovr,ixb,bref,ths,cbi,cef,cefi,pef,pem,pdr,tmnt,dlb
  global as sys rexi,expf,rsrf,indt,lclv,extn,spe,spl,hlo
  global as sys cpuw,casf,mesb,mest,vstp
  global as sys nodel,cas,nth,bvg,uniq,ispr,typk,datc,dati
  global as sys nsto,stkb,parx,divi,met,nl,pakd,arf,ccx,casg
  global as sys nobr,ebdi,nmac,nstod,cboolf,convs,plistend,clistend,dlistend,plp,plq
  global as sys compact,tranpass,depsp,preproc,asxp,elct,elsz,ctal,cpoint
  global as sys nsi,nsp,nsq,rps,tyd,hix,independent,cnsl,eord,noco


  global as longint qv
  global as double da,dv
  global as any ptr pt


  global as string t,wu,wu1,wu2,ou,ow,owa,regs,regsl,regss,regst,cpua,pw,sig,sigu,sigv,sog,opns,opnsl
  global as string wpfx,epfx,ppfx,wth,asg,asgs,wg,lbw,ipath,lpath,libr,ary,sps,dvl,dvm
  global as string qeax,qecx,qedx,qebx,qesp,qebp,qesi,qedi,peax,pecx,pesp,pedi,pesi,ledi,medi
  global as string pusheax,popeax,spw1,spw2,pexn,cexn,cbuf,cpfx
  global as string oxypath, hostdll,dats,lnkc,lnkd,defbuf,lnmks,wbse,osg,psg,wsg
  global as string boolcnd,boolify,reloadaddr,gsrc,gsco
  global as string savestack,restorestack,preserveregs,restoreregs
  global as string pls,proclist,calllist,declist
  global as string RootDir,cfile,opers,nsw,hiex,cpuquad,fpuquad,sigs,sigd,insertc

'----------------
sub GlobalClear()
'================
  '
  dim as sys a
  ert=0
  ers=""
  cpa=0
  parx=0
  brc=0
  asce=1
  lclv=0
  wth=""
  wi=0
  ths=0
  prec=0
  phr=0
  ipe=0
  nsl=0
  fq=0
  fql=1
  dv=0
  asi=0
  cnd=0
  lbw=""
  pef=0
  pem=0
  nst=0
  pdr=0
  bref=1 'default byref
  tmnt=0
  libe=1
  dlb=1
  expf=0
  rsrf=0
  nrs=0
  funi=0
  libr=""
  extn=0
  cas=0
  casf=0
  cnst=0
  cbri=0
  uniq=0
  cpuw=4
  ispr=0
  tys=0
  typk=0
  datc=0
  dati=0
  dats=""
  lnkc=""
  lnkd=""
  stkb=0
  vaf=0
  pakd=0
  ccx=0
  casg=0
  asgb=0
  ebdi=0
  cef=0
  cefi=0
  cbi=1
  defbuf=""
  dimi=0
  cboolf=0
  jn=0
  tmpi=0
  epfx=""
  ppfx=""
  plp=1
  plq=0
  vwb=0
  vwe=0
  asxp=0
  cpoint=0
  sr2=58
  ct2=59
  lpath=""
  ipath=""
  cfile=""
  opers=""
  nsi=0
  nsp=0
  nsq=0
  rps=0
  hiex=""
  mct=0
  independent=0
  cnsl=0
  eord=0
  impo=0
  opns=""
  opnsl=""
  insertc=""
  '
  for a=0 to 15  : wva(a)="" : next 'CLEAR DECLARATION BUFFERS
  '
end sub



