DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH PRINT BOOK
 

(chill.info) Enhancements

Info Catalog (chill.info) Missing (chill.info) Top (chill.info) Conversions
 
 GNU-specific enhancements to the Chill language
 ***********************************************
 
    * Grantfiles.  See  Separate compilation.
 
    * Precisions.  Multiple integer and real precisions are supported,
      as well as signed and unsigned variants of the integer modes.
 
    * DESCR built-in. The new built-in function DESCR ( <descriptor
      argument> ) returns a pointer to STRUCT( addr PTR, length ULONG )
      where <descriptor argument> can be anything the compiler can
      handle but at least a location of any mode (except synchronizing
      modes) and any character string or powerset value.  (A temporary
      location within the current stack frame may be allocated if an
      expression is used.)
 
      CHILL does not permit the writing of procedures with parameters of
      any type. Yet some interfaces--in particular those to system
      calls--require the handling of a wide range of modes, e.g. any
      string mode, any structure mode, or any powerset mode. This could
      be handled by specifying two parameters (PTR, INT for the length)
      but this is error-prone (no guarantee the same location is used
      after in ADDR and LENGTH), and it will not be possible for
      expressions.
 
      Caveats: This feature permits the programmer to obtain the address
      of a literal (if the compiler takes this shortcut--see 1st example
      below).  If hardware features protect constant parts of the
      program, erronous abuse will be detected.
 
      Examples:        OFFER_HANDLER( descr("dbs"), ->dbs);
 
      SYNMODE m_els = SET( ela, elb, elc );        SYNMODE m_elsel =
      POWERSET m_els;        DCL user_buf STRUCT( a mx, b my, c mz);
        DCL select POWERSET m_elsel;
 
      select := m_elsel[LOWER(m_els) : UPPER(m_els)];
 
      GET_RECORD( relation, recno, descr(user_buf), descr(select) );
 
      PUT_RECORD( relation, recno, descr(user_buf.b),
      descr(m_elsel[elb]) );
 
    * LENGTH built-in on left-hand-side.       The LENGTH built-in may be
      used on the left-hand-side of an assignment, where its argument is
      a VARYING character string.
 
Info Catalog (chill.info) Missing (chill.info) Top (chill.info) Conversions
automatically generated byinfo2html