  P A S - P. WOLFERS SOFTWARE: V2.1-E OF 31-AUG-2009  RUN THE 10-DEC-2009 AT 15:13:42     PAGE   1
 The Current Source File is "/home/wolfers/Soft/cpsh_kits/MXDV4_src/mxd_dcp_main.pas".

 The Current Compiled Module is ".standard.".

       C    1    1  { %pragma listlvl:2; }
       C    1    2  {
       C    1    3   ******************************************************************************
       C    1    4   *                                                                            *
       C    1    5   *                                                                            *
       C    1    6   *                                                                            *
       C    1    7   *                        MMM    MMM   XXX      XXX  DDDDDDDD                 *
       C    1    8   *                        MMMM  MMMM    XXX    XXX   DDDDDDDDDD               *
       C    1    9   *                        MM MMMM MM     XXX  XXX    DD      DDD              *
       C    1   10   *                        MM  MM  MM      XXXXXX     DD       DD              *
       C    1   11   *                        MM      MM       XXXX      DD       DD              *
       C    1   12   *          T  H  E       MM      MM       XXXX      DD       DD              *
       C    1   13   *                        MM      MM      XXXXXX     DD       DD              *
       C    1   14   *                        MM      MM     XXX  XXX    DD      DDD              *
       C    1   15   *                        MM      MM    XXX    XXX   DDDDDDDDDD               *
       C    1   16   *                       MMMM    MMMM  XXX      XXX  DDDDDDDD                 *
       C    1   17   *                                                                            *
       C    1   18   *                                                                            *
       C    1   19   *                                                                            *
       C    1   20   *                 SSSSS Y     Y  SSSSS TTTTTTT EEEEEE M     M                *
       C    1   21   *                S       Y   Y  S         T    E      MM   MM                *
       C    1   22   *                S        Y Y   S         T    E      M M M M                *
       C    1   23   *                 SSSS     Y     SSSS     T    EEEEE  M  M  M                *
       C    1   24   *                     S    Y         S    T    E      M     M                *
       C    1   25   *                     S    Y         S    T    E      M     M  ..            *
       C    1   26   *                SSSSS     Y    SSSSS     T    EEEEEE M     M  ..            *
       C    1   27   *                                                                            *
       C    1   28   *                                                                            *
       C    1   29   *                                                                            *
       C    1   30   *              ---  Version  3.999 000 alpha -- 31/03/2010 ---               *
       C    1   31   *                                                                            *
       C    1   32   *                by :                                                        *
       C    1   33   *                                                                            *
       C    1   34   *                     P. Wolfers                                             *
       C    1   35   *                         c.n.r.s.                                           *
       C    1   36   *                         Institut Neel (MCMF), Bat F,                       *
       C    1   37   *                         B.P.  166 X   38042  Grenoble Cedex                *
       C    1   38   *                                                FRANCE.                     *
       C    1   39   *                                                                            *
       C    1   40   *                                                                            *
       C    1   41   ******************************************************************************
       C    1   42  
       C    1   43  
       C    1   44  ///////////////////////////////////////////////////////////////////////////////
       C    1   45  //                                                                           //
       C    1   46  //                                                                           //
       C    1   47  //                     Global Public Licence (GPL)                           //
       C    1   48  //                                                                           //
       C    1   49  //                                                                           //
       C    1   50  //    This license described in this file overrides all other licenses       //
       C    1   51  //    that might be specified in other files for this software.              //
       C    1   52  //                                                                           //
       C    1   53  //    This program is free software; you can redistribute it and/or          //
       C    1   54  //    modify it under the terms of the GNU Lesser General Public             //
       C    1   55  //    License as published by the Free Software Foundation; either           //
  P A S - P. WOLFERS SOFTWARE: V2.1-E OF 31-AUG-2009  RUN THE 10-DEC-2009 AT 15:13:42     PAGE   2
 The Current Source File is "/home/wolfers/Soft/cpsh_kits/MXDV4_src/mxd_dcp_main.pas".

 The Current Compiled Module is ".standard.".

       C    1   56  //    version 2.1 of the License, or (at your option) any later version.     //
       C    1   57  //                                                                           //
       C    1   58  //    This software is distributed in the hope that it will be useful,       //
       C    1   59  //    but WITHOUT ANY WARRANTY; without even the implied warranty of         //
       C    1   60  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU      //
       C    1   61  //    Library General Public License for more details.                       //
       C    1   62  //                                                                           //
       C    1   63  //    You should have received a copy of the GNU Lesser General Public       //
       C    1   64  //    License along with this library (see COPYING.LIB); if not, write to    //
       C    1   65  //    the Free Software Foundation :                                         //
       C    1   66  //                         Inc., 675 Mass Ave, Cambridge, MA 02139, USA.     //
       C    1   67  //                                                                           //
       C    1   68  ///////////////////////////////////////////////////////////////////////////////
       C    1   69  
       C    1   70  
       C    1   71  
       C    1   72  *******************************************************************************
       C    1   73  *                                                                             *
       C    1   74  *                                                                             *
       C    1   75  *                           MXD   Data   Compiler                             *
       C    1   76  *                                                                             *
       C    1   77  *                                                                             *
       C    1   78  *******************************************************************************
       C    1   79  
       C    1   80  
       C    1   81  }
       C    1   82  
       C    1   83  {************     CPAS  version    *************}
       C    1   84  
       C    1   85  {
       C    1   86          *** Modification(s) from major version ***
       C    1   87  
       C    1   88  
       C    1   89                    ----
       C    1   90  
       C    1   91                   NOTHING
       C    1   92  
       C    1   93                    ----
       C    1   94  
       C    1   95  }
       C    1   96  
            1   97  program MXD_DCP;
            1   98  
            1   99  
       C    2    1  {
       C    2    2   ******************************************************************************
       C    2    3   *                                                                            *
       C    2    4   *                                                                            *
       C    2    5   *                                                                            *
       C    2    6   *                        MMM    MMM   XXX      XXX  DDDDDDDD                 *
       C    2    7   *                        MMMM  MMMM    XXX    XXX   DDDDDDDDDD               *
       C    2    8   *                        MM MMMM MM     XXX  XXX    DD      DDD              *
       C    2    9   *                        MM  MM  MM      XXXXXX     DD       DD              *
       C    2   10   *                        MM      MM       XXXX      DD       DD              *
       C    2   11   *          T  H  E       MM      MM       XXXX      DD       DD              *
  P A S - P. WOLFERS SOFTWARE: V2.1-E OF 31-AUG-2009  RUN THE 10-DEC-2009 AT 15:13:42     PAGE   3
 The Current Source File is "/home/wolfers/Soft/cpsh_kits/MXDV4_src/mxd_dcp_env.pas".

       C    2   12   *                        MM      MM      XXXXXX     DD       DD              *
       C    2   13   *                        MM      MM     XXX  XXX    DD      DDD              *
       C    2   14   *                        MM      MM    XXX    XXX   DDDDDDDDDD               *
       C    2   15   *                       MMMM    MMMM  XXX      XXX  DDDDDDDD                 *
       C    2   16   *                                                                            *
       C    2   17   *                                                                            *
       C    2   18   *                                                                            *
       C    2   19   *                 SSSSS Y     Y  SSSSS TTTTTTT EEEEEE M     M                *
       C    2   20   *                S       Y   Y  S         T    E      MM   MM                *
       C    2   21   *                S        Y Y   S         T    E      M M M M                *
       C    2   22   *                 SSSS     Y     SSSS     T    EEEEE  M  M  M                *
       C    2   23   *                     S    Y         S    T    E      M     M                *
       C    2   24   *                     S    Y         S    T    E      M     M  ..            *
       C    2   25   *                SSSSS     Y    SSSSS     T    EEEEEE M     M  ..            *
       C    2   26   *                                                                            *
       C    2   27   *                                                                            *
       C    2   28   *                                                                            *
       C    2   29   *              ---  Version  3.999 000 alpha -- 31/03/2010 ---               *
       C    2   30   *                                                                            *
       C    2   31   *                by :                                                        *
       C    2   32   *                                                                            *
       C    2   33   *                     P. Wolfers                                             *
       C    2   34   *                         c.n.r.s.                                           *
       C    2   35   *                         Institut Neel (MCMF), Bat F,                       *
       C    2   36   *                         B.P.  166 X   38042  Grenoble Cedex                *
       C    2   37   *                                                FRANCE.                     *
       C    2   38   *                                                                            *
       C    2   39   *                                                                            *
       C    2   40   ******************************************************************************
       C    2   41  
       C    2   42  
       C    2   43  ///////////////////////////////////////////////////////////////////////////////
       C    2   44  //                                                                           //
       C    2   45  //                                                                           //
       C    2   46  //                     Global Public Licence (GPL)                           //
       C    2   47  //                                                                           //
       C    2   48  //                                                                           //
       C    2   49  //    This license described in this file overrides all other licenses       //
       C    2   50  //    that might be specified in other files for this software.              //
       C    2   51  //                                                                           //
       C    2   52  //    This program is free software; you can redistribute it and/or          //
       C    2   53  //    modify it under the terms of the GNU Lesser General Public             //
       C    2   54  //    License as published by the Free Software Foundation; either           //
       C    2   55  //    version 2.1 of the License, or (at your option) any later version.     //
       C    2   56  //                                                                           //
       C    2   57  //    This software is distributed in the hope that it will be useful,       //
       C    2   58  //    but WITHOUT ANY WARRANTY; without even the implied warranty of         //
       C    2   59  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU      //
       C    2   60  //    Library General Public License for more details.                       //
       C    2   61  //                                                                           //
       C    2   62  //    You should have received a copy of the GNU Lesser General Public       //
       C    2   63  //    License along with this library (see COPYING.LIB); if not, write to    //
       C    2   64  //    the Free Software Foundation :                                         //
       C    2   65  //                         Inc., 675 Mass Ave, Cambridge, MA 02139, USA.     //
       C    2   66  //                                                                           //
       C    2   67  ///////////////////////////////////////////////////////////////////////////////
       C    2   68  
  P A S - P. WOLFERS SOFTWARE: V2.1-E OF 31-AUG-2009  RUN THE 10-DEC-2009 AT 15:13:42     PAGE   4
 The Current Source File is "/home/wolfers/Soft/cpsh_kits/MXDV4_src/mxd_dcp_env.pas".

       C    2   69  
       C    2   70  *******************************************************************************
       C    2   71  *                                                                             *
       C    2   72  *                                                                             *
       C    2   73  *              MXD    data    Compiler    Environment    File                 *
       C    2   74  *                                                                             *
       C    2   75  *                                                                             *
       C    2   76  *******************************************************************************
       C    2   77  
       C    2   78  }
       C    2   79  
       C    2   80  {************     CPAS  version    *************}
       C    2   81  
       C    2   82  {
       C    2   83          *** Modification(s) from major version ***
       C    2   84  
       C    2   85  
       C    2   86                    ----
       C    2   87  
       C    2   88                   NOTHING
       C    2   89  
       C    2   90                    ----
       C    2   91  
       C    2   92  }
       C    2   93  
       C    2   94  
            2   95    %include 'pasenv:cpas_b__src_env';    { We load the Source file environment }
            2   96  
            2   97    %include 'MXDSRC:mxd_env';            { Load the mxd global environment }
            2   98  
       C    2   99  (*
       C    2  100    %include 'MXDSRC:mxd_cpl_env';        { Load the complex environment }
       C    2  101  *)
       C    2  102  
       C    2  103  
            2  104  const
            2  105  
            2  106    task_name    =             'MXD-DCP'; { Task name for the Data Compiler }
            2  107    mxd_deflst   =                    ''; { Default listing = Listing on console (std. output file) }
            2  108    mxd_setenvf  =     'mxd_dcp.std_env'; { Standard Environment Setup file name }
            2  109    mxd_dcperrf  =     'mxd_dcp.err_msg'; { Error message file for }
            2  110    mxd_prompt   =               ' MXD>'; { MXD DCP Prompt }
            2  111    ddispcfile   =        'mxdddi.bdd.1'; { Data directory specification file }
            2  112  
            2  113    disp_max     =                    64; { Identifier display max-size }
            2  114    type_max     =                   256; { Maximum number of defined types }
            2  115  
            2  116    idm_mac_all  =                  4096; { Allocation increment for macro code }
            2  117  
            2  118    max_usrlun   =                    32; { Max number of user file that can be open }
            2  119  
            2  120    TAB          =            CHR(   9 ); { Tabulation ASCII Character }
            2  121    DEL          =            CHR( 127 ); { DEL ASCII Character }
            2  122    SOH          =            CHR(   0 ); { NULL ASCII Character }
            2  123  
            2  124  
       C    2  125    { *** Specific assignation correlated action definitions *** }
  P A S - P. WOLFERS SOFTWARE: V2.1-E OF 31-AUG-2009  RUN THE 10-DEC-2009 AT 15:13:42     PAGE   5
 The Current Source File is "/home/wolfers/Soft/cpsh_kits/MXDV4_src/mxd_dcp_env.pas".

 The Current Compiled Module is "mxd_dcp".

       C    2  126  
            2  127    sact_stitle  =                     1;
            2  128  
            2  129  
            2  130  
            2  131  
            2  132  type
            2  133  
            2  134  
       C    2  135          {************************************************************}
       C    2  136          {*****      Symbol Definitions for Lexical Parsing      *****}
       C    2  137          {************************************************************}
       C    2  138  
       C    2  139  
            2  140    symbol   =   (                        { * Define the keyword symbol list * }
            2  141  
       C    2  142                  { **** Constant symbol definitions **** }
       C    2  143  
            2  144                  identsy,                { Identifier }
            2  145                  intconst,               { Integer constant }
            2  146                  singleconst,            { Single precision constant }
            2  147                  doubleconst,            { Double precision constant }
            2  148                  stringconst,            { String constant }
            2  149  
       C    2  150                  { **** Operator Class symbol definitions **** }
       C    2  151  
            2  152                  unaop,                  { Unary classe operator }
            2  153                  powop,                  { Power class operator }
            2  154                  mulop,                  { Multiply class operator }
            2  155                  addop,                  { Addition class operator }
            2  156                  relop,                  { Relation class operator }
            2  157                  notop,                  { Not class operator }
            2  158                  lgandop,                { Logical and class operator }
            2  159                  lgorop,                 { Logical or class operator }
            2  160  
       C    2  161                  { **** Separator symbol definitions **** }
       C    2  162  
            2  163                  lparen,                 { '(' and ')' }
            2  164                  rparen,
            2  165                  lbrack,                 { '[" and ']' }
            2  166                  rbrack,
            2  167                  comma,                  { ',' }
            2  168                  semicolon,              { ';' }
            2  169                  period,                 { '.' }
            2  170                  twodot,                 { '..' }
            2  171                  colon,                  { ':' }
            2  172                  becomes,                { ':=' }
            2  173  
            2  174                  expsign,                { '^' }
            2  175                  attrsign,               { '"' }
            2  176                  implic,                 { '=>' }
            2  177  
            2  178  
       C    2  179                  {**** Keywords (reserved) symbol definition ****}
       C    2  180  
  P A S - P. WOLFERS SOFTWARE: V2.1-E OF 31-AUG-2009  RUN THE 10-DEC-2009 AT 15:13:42     PAGE   6
 The Current Source File is "/home/wolfers/Soft/cpsh_kits/MXDV4_src/mxd_dcp_env.pas".

 The Current Compiled Module is "mxd_dcp".

            2  181                  beginsy,                { BEGIN of dynamic block }
            2  182                  endsy,                  { END of procedure/begin/if/loop/case/with }
            2  183  
            2  184                  ifsy,                   { IF keyword }
            2  185                  thensy,                 { THEN keyword }
            2  186                  elsesy,                 { ELSE keyword (for IF statement) }
            2  187  
            2  188                  repeatsy,               { REPEAT directive }
            2  189                  untilsy,                { UNTIL for REPEAT end }
            2  190                  whilesy,                { WHILE directive }
            2  191  
            2  192                  dosy,                   { DO keyword }
            2  193                  forsy,                  { FOR directive }
            2  194                  tosy,                   { TO symbol }
            2  195                  downtosy,               { DOWNTO symbol }
            2  196  
            2  197                  loopsy,                 { LOOP STATEMENT }
            2  198  
            2  199                  casesy,                 { CASE constructor }
            2  200                  whensy,                 { WHEN keyword }
            2  201                  othersy,                { OTHERWISE case }
            2  202  
            2  203                  displaysy,              { DISPLAY: Write to output file }
            2  204                  replysy,                { REPLY: Read from input file }
            2  205                  writemsgsy,             { Write to listing }
            2  206                  opensy,                 { OPENFILE: Open a user file }
            2  207                  writesy,                { Write to an opened file }
            2  208                  writelnsy,              { Writeln to an opened file }
            2  209                  readsy,                 { Read from an opened file }
            2  210                  closesy,                { CLOSE an opened file }
            2  211  
            2  212                  typesy,                 { Type definition symbol }
            2  213                  mfunctionsy,            { Macro function definition }
            2  214                  retvalsy,               { Return keyword }
            2  215                  functionsy,             { Least-Squares Function }
            2  216  
            2  217                  paramsy,                { Least-Squares Parameter }
            2  218                  itemsy,                 { Least-Squares object definition introductor }
            2  219  
            2  220                  limitssy,               { Variable limits }
            2  221                  fixedsy,                { To fix some variables }
            2  222                  unfixedsy,              { To unfix some variables }
            2  223  
            2  224                  cellsy,                 { Unit cell definition }
            2  225                  rcellsy,                { Rhombohedric unit cell definition }
            2  226                  centersy,               { Set a symmetry center at origine }
            2  227                  symtrysy,               { Define a symmetry matrix operator }
            2  228                  latticesy,              { Specify the Lattice kind }
            2  229                  genspacesy,             { Generate the space group Completude }
            2  230  
            2  231                  spacegrsy,              { Specify the Space group }
            2  232  
            2  233                  phasesy,                { Phase definition }
            2  234                  atomsy,                 { Atom definition }
            2  235                  catomsy,                { Atom definition in cartesian coordinates }
  P A S - P. WOLFERS SOFTWARE: V2.1-E OF 31-AUG-2009  RUN THE 10-DEC-2009 AT 15:13:42     PAGE   7
 The Current Source File is "/home/wolfers/Soft/cpsh_kits/MXDV4_src/mxd_dcp_env.pas".

 The Current Compiled Module is "mxd_dcp".

            2  236                  momentsy,               { Magnetic moment definition }
            2  237                  mdsdspsy,               { Atomic modulated displacement definition }
            2  238  
            2  239                  contribsy,              { Contribution definition }
            2  240                  lsqblocksy,             { Least-Squares Diagonal block definition }
            2  241  
            2  242                  datasy,                 { Data collection introductor }
            2  243                  wavevsy,                { Wave vector definition }
            2  244                  npoladirsy,             { Neutron polarization direction definition }
            2  245                  magneticsy,             { Magnetic flags }
            2  246                  clrdatasy,              { Clear data library }
            2  247  
            2  248                  optionsy,
            2  249                  soptionsy,
            2  250  
            2  251                  macrosy,                { MACRO definition }
            2  252                  endmacrosy,             { MACRO text end }
            2  253                  purgesy,                { PURGE: macro destruction }
            2  254                  macrolibsy,             { MACROLIB: Library of macro specification }
            2  255                  macrocallsy,            { MACROCALL: Search and load a macro from the current library list }
            2  256                  errorsy,                { To generate an error message }
            2  257  
            2  258                  definedsy,              { Keyword Function to determine when an identifier is defined }
            2  259                  mdefinedsy,             { Keyword Function to determine when an identifier is defined }
            2  260  
       C    2  261                  {**** Micellious symbol ****}
       C    2  262  
            2  263                  eomcsy,                 { End of macro code }
            2  264                  eolnsy,                 { End of line seen - for data mode only }
            2  265  
       C    2  266                  {**** Pre-processor STATEMENT symbol ****}
       C    2  267  
            2  268                  includesy,              { INCLUDE a source file }
            2  269                  chainesy,               { CHAINE a source file }
            2  270                  pragmasy,               { PRAGMA to compiler option setting }
            2  271                  peofsy,                 { End of file seen or endfile symbol }
            2  272                  eofsy,                  { EOF: end of all source }
            2  273  
            2  274                  nothing                 { Null definition }
            2  275             );
            2  276  
            2  277  
            2  278  
            2  279  
            2  280    std_fnc  = (                          { * Builtin/Standard function code definitions * }
            2  281                  std_string,             { STRING( x[, f[, b]] ) }
            2  282                  std_substr,             { SUBSTR( s [, i [, j ]] ) }
            2  283                  std_nindex,             { INDEX( s1, s2 [, n ] ) }
            2  284                  std_slength,            { LENGTH( s ) }
            2  285                  std_setcase,            { SETCASE( s [, i ] ) }
            2  286                  std_checkch,            { CHECK_CHAR( s1, s2 [, i ] ) }
            2  287                  std_checknst,           { Check for numeric string }
            2  288                  std_selement,           { ELEMENT( il, sep, s ) }
            2  289                  std_rmcomment,          { Suppress comment in a string }
            2  290                  std_id_replace,         { Replace/substitute user identifier by there related contents }
  P A S - P. WOLFERS SOFTWARE: V2.1-E OF 31-AUG-2009  RUN THE 10-DEC-2009 AT 15:13:42     PAGE   8
 The Current Source File is "/home/wolfers/Soft/cpsh_kits/MXDV4_src/mxd_dcp_env.pas".

 The Current Compiled Module is "mxd_dcp".

            2  291                  std_id_insert,          {  }
            2  292                  std_id_remove,          {  }
            2  293                  std_filespc,            { Set file specification to system conventions }
            2  294  
            2  295                  std_time,               { Get Current Time }
            2  296                  std_date,               { Get Current Date }
            2  297                  std_spawn,              { SPAWN a child process }
            2  298                  std_run,                { Exit from cpsh and run an other program }
            2  299                  std_exec,               { Run an other program as a New Process }
            2  300                  std_wait,               { Wait for process complexion }
            2  301                  std_exit,               { EXIT from MXD }
            2  302                  std_dfdir,              { Get Default Directory }
            2  303                  std_chdir,              { Change Default Directory }
            2  304                  std_getenv,             { Get environment variable }
            2  305                  std_setenv,             { To Change, Create or Delete an environment variable }
            2  306                  std_getpath,            { Get a path environment variable }
            2  307                  std_setpath,            { Set a path environment variable }
            2  308  
            2  309                  std_f_exist,            { Test if file exist }
            2  310                  std_f_rename,           { Rename a file }
            2  311                  std_f_delete,           { Delete a file }
            2  312  
            2  313                  std_mxdappl,            { Queue an MXD Application to execute it at compilation end time }
            2  314                  std_select,             { Select expression from nbsel data field }
            2  315                  std_intsel,             { Select expression from the first formal }
            2  316                  std_summ,               { Summ on loop }
            2  317                  std_sumhkl,             { Summ on hkl data }
            2  318                  std_inttab,             { Integration table builder }
            2  319                  std_integr,             { Integration }
            2  320  
            2  321                  std_itempar,            { Item param reference }
            2  322  
            2  323                  std_ardim,              { Get the array dimension }
            2  324                  std_arsearch,           { Search in object in array }
            2  325  
            2  326                  std_noop                { No Op }
            2  327                );
            2  328  
            2  329  
            2  330    dcp_oper = (                                  { * Generic Operator definitions * }
            2  331                   not_op,                        { Logical not operator }
            2  332                   pow_op,                        { Power = powop }
            2  333                   mul_op,    div_op,             { Multiply, Divide }
            2  334                  idiv_op,   imod_op,   irem_op,  { Integer divide, modulo, remainder }
            2  335                   add_op,    sub_op, concat_op,  { Addition, Substract, Concate strings }
            2  336                    lt_op,     le_op,     ge_op,  { '<',  '<=', '>=' }
            2  337                    gt_op,     ne_op,     eq_op,  { '>=', '>', '>', '<>', '=' }
            2  338                   and_op,     or_op,    xor_op,  { Logical and ('&'), or ('|'), xor }
            2  339                   ass_op,                        { Assignation operator, ':=' }
            2  340                   stp_op,                        { Stop sequence operator /used as a flag }
            2  341                    no_op                         { To flag no operator syntax unit }
            2  342               );
            2  343  
            2  344  
            2  345    ope_stm =  (                                  { * Define internal primitive operator  * }
  P A S - P. WOLFERS SOFTWARE: V2.1-E OF 31-AUG-2009  RUN THE 10-DEC-2009 AT 15:13:42     PAGE   9
 The Current Source File is "/home/wolfers/Soft/cpsh_kits/MXDV4_src/mxd_dcp_env.pas".

 The Current Compiled Module is "mxd_dcp".

            2  346                  stm_not,                        { Logical not }
            2  347                  stm_neg,                        { Negate operator }
            2  348                  stm_fng,
            2  349                  stm_iip,  stm_fip,  stm_ffp,    { Power <int>**<int> -> <int>, <flt>**<int> and <flt>**<flt> -> 
                    <flt> }
            2  350                  stm_iml,  stm_fml,              { Multiply <int>*<int> -> <int>, <flt>*<flt> -> <flt> }
            2  351                  stm_idv,  stm_mod,  stm_rem,    { <int> div <int> -> <int>, <int> mod <int> -> <int>, <int> rem 
                    <int> -;> <int> }
            2  352                  stm_fdv,                        { <flt>/<flt> -> <flt> }
            2  353                  stm_iad,  stm_fad,              { <int>+<int> -> <int>, <flt>+<flt> -> <flt> }
            2  354                  stm_isb,  stm_fsb,              { <int>-<int> -> <int>, <flt>-<flt> -> <flt> }
            2  355                  stm_ssc,                        { <str>||<str> -> <str> }
            2  356                  stm_seq,  stm_ieq,  stm_feq,    { <str>  = <str> -> <int>, <int>  = <intr> -> <int>, <flt>  = <f
                    lt> -> <int> }
            2  357                  stm_sne,  stm_ine,  stm_fne,    { <str> <> <str> -> <int>, <int> <> <intr> -> <int>, <flt> <> <f
                    lt> -> <int> }
            2  358                  stm_slt,  stm_ilt,  stm_flt,    { <str>  < <str> -> <int>, <int>  < <intr> -> <int>, <flt>  < <f
                    lt> -> <int> }
            2  359                  stm_sle,  stm_ile,  stm_fle,    { <str> <= <str> -> <int>, <int> <= <intr> -> <int>, <flt> <= <f
                    lt> -> <int> }
            2  360                  stm_sge,  stm_ige,  stm_fge,    { <str> >= <str> -> <int>, <int> >= <intr> -> <int>, <flt> >= <f
                    lt> -> <int> }
            2  361                  stm_sgt,  stm_igt,  stm_fgt,    { <str>  > <str> -> <int>, <int>  > <intr> -> <int>, <flt>  > <f
                    lt> -> <int> }
            2  362                  stm_and,  stm_xor,  stm_or,     { <int> and <int> -> <int>, <int> xor <int> -> <int>, <int> or <
                    int> -> <int> }
            2  363  
            2  364                  stm_iabs, stm_fabs,             { ABS( <int> ) -> <int>,  ABS( <flt> ) -> <flt> }
            2  365                  stm_sqrt,                       { SQRT( <flt> ) -> <flt> }
            2  366                  stm_sinr,                       { COS, SIN, TAN ( <flt_radian> ) -> <flt> }
            2  367                  stm_cosr,
            2  368                  stm_tanr,
            2  369                  stm_asinr,                      { ACOS, ASIN, ATAN ( <flt> ) -> <flt_radian> }
            2  370                  stm_acosr,
            2  371                  stm_atanr,
            2  372                  stm_phaser,                     { ATAN( <flt>, <flt> ) -> <flt_radian> }
            2  373                  stm_sind,                       { COS, SIN, TAN ( <flt_degrees> ) -> <flt> }
            2  374                  stm_cosd,
            2  375                  stm_tand,
            2  376                  stm_asind,                      { ACOS, ASIN, ATAN ( <flt> ) -> <flt_degrees> }
            2  377                  stm_acosd,
            2  378                  stm_atand,
            2  379                  stm_phased,                     { ATAN( <flt>, <flt> ) -> <flt_degrees> }
            2  380                  stm_exp,  stm_ln,               { LN( <flt> ) -> <flt>, EXP( <flt> ) -> <flt> }
            2  381                  stm_tanh,
            2  382                  stm_bessj,                      { Bessel_J( <flt>, <flt> ) -> <flt>  }
            2  383  
       C    2  384                  { The conversion must be just before stm_nop to fit with dcp_basicinit routines
       C    2  385                    CREATE_STD_CONV and SET_CREATE_STD_OPER }
            2  386                  stm_csi,  stm_csf,              { Conversion: <str> to <int>, to <flt> }
            2  387                  stm_cis,  stm_cif,              { Conversion: <int> to <str>, to <flt> }
            2  388                  stm_cfs,  stm_cfi,  stm_rnd,    { Conversion: <flt> to <str>, to TRUNC( <int> ) and Round( <int>
                     ) }
            2  389                  stm_nop
            2  390              );
  P A S - P. WOLFERS SOFTWARE: V2.1-E OF 31-AUG-2009  RUN THE 10-DEC-2009 AT 15:13:42     PAGE  10
 The Current Source File is "/home/wolfers/Soft/cpsh_kits/MXDV4_src/mxd_dcp_env.pas".

 The Current Compiled Module is "mxd_dcp".

            2  391  
            2  392  
            2  393    ent_kinds = ( entk_stm,                       { This entry is a primitive MXD statement }
            2  394                  entk_fnc,                       { This entry is a user defined MXD function }
            2  395                  entk_std                        { This entry is a standard function/procedure }
            2  396              );
            2  397  
            2  398  
       C    2  399    { *** Define the macro object kinds *** }
            2  400    idm_kinds = ( idm_list,               { Macro Stream list }
            2  401                  idm_parm,               { Macro Parameter }
            2  402                  idm_temp,               { Temporary Macro parameter }
            2  403                  idm_macro,              { Macro Identifier }
            2  404                  idm_macfnc,             { Macro function identifier }
            2  405                  idm_undef               { Macro undefined }
            2  406                );
            2  407  
            2  408  
            2  409  
            2  410    symc_ptr      =    ^symc_rec;         { * Define Symbol context record pointer type * }
            2  411  
            2  412    keyword_ptr   =     ^keyword;         { * Define Keyword pointer * }
            2  413  
            2  414    idm_ptr       =     ^idm_rec;         { * Define Macro Identifier pointer * }
            2  415  
            2  416    idm_apt       =     ^idm_str;         { * Define Macro text pointer * }
            2  417  
            2  418    ent_ptr       =     ^ent_rec;         { * Define operator definition record pointer * }
            2  419  
            2  420    stq_ptr       =     ^stq_rec;         { * Define the queue string element pointer * }
            2  421  
            2  422    ide_ptr       =     ^ide_rec;         { * Define the identifier record (IDR) pointer type * }
            2  423  
            2  424    asr_ptr       =     ^asr_rec;         { * Define the array specification record (ASR) pointer type * }
            2  425  
            2  426    usrf_ptr      =    ^usrf_rec;         { * Define a User identifier reference pointer record }
            2  427  
            2  428    itm_ptr       =     ^itm_rec;         { * Define the Item pointer }
            2  429  
            2  430    tbs_ptr       =     ^tbs_rec;         { * Define the Array Scan by string index record context pointer }
            2  431  
            2  432  
            2  433  
            2  434  
            2  435    sym_rec = record                      { * Symbol record type definition * }
            2  436      sy:                         symbol; { The current symbol kind }
            2  437      op:                       dcp_oper  { Node code }
            2  438    end;
            2  439  
            2  440  
            2  441    symc_rec = record                     { * Define Symbol context record * }
            2  442      symc_ch,                            { To save sy_ch and ... }
            2  443      symc_cmin:                    char; { ... sy_cmin characters }
            2  444      symc_svall:                boolean; { Flag the INSYMBOL result save on RESTORE}
            2  445      symc_prv:                 symc_ptr; { Pointer to previous context in the stack }
  P A S - P. WOLFERS SOFTWARE: V2.1-E OF 31-AUG-2009  RUN THE 10-DEC-2009 AT 15:13:42     PAGE  11
 The Current Source File is "/home/wolfers/Soft/cpsh_kits/MXDV4_src/mxd_dcp_env.pas".

 The Current Compiled Module is "mxd_dcp".

            2  446      symc_sym:                  sym_rec; { Saved context }
            2  447      symc_ival:                 integer; { Save integer value }
            2  448      symc_rval:                 mxd_flt; { Save float value }
            2  449      symc_string:               str_ptr  { Save identifier name or string value }
            2  450    end;
            2  451  
            2  452  
            2  453    stq_rec  = record                     { * Define the STring Queue record * }
            2  454      stq_lnk:                   stq_ptr; { Link to next stq_rec }
            2  455      stq_str:                   str_ptr  { Link to the associated string }
            2  456    end;
            2  457  
            2  458  
            2  459    keyword  = record                     { * Keyword definition * }
            2  460      name:                      str_ptr; { Address of identifier string }
            2  461      leftp, rightp:         keyword_ptr; { Pointers to build binary tree }
            2  462      symb:                      sym_rec  { Keyword Syntaxe Definition }
            2  463    end;
            2  464  
            2  465  
            2  466    idm_str( idm_size: integer := idm_mac_all ) = record  { * Define the macro body record * }
            2  467      idm_use:                   integer;
            2  468      idm_ctb: packed array[1..idm_size] of char
            2  469    end;
            2  470  
            2  471  
            2  472    idm_rec = record
            2  473      idm_name:                  str_ptr; { Macro Identifier name pointer }
            2  474      idm_type:                  ide_ptr; { Related type for macro function and there parameters }
            2  475      idm_parl,                           { Pointer to related parameter list }
            2  476      idm_cntx,                           { Pointer to the previous macro context }
            2  477      idm_nxt,                            { Pointer to next stack macro definition }
            2  478      idm_prv:                   idm_ptr; { Pointer to previous stack macro definition }
            2  479      idm_kind:                idm_kinds; { Type of macro symbol }
            2  480      idm_ftyp,                           { Integer index of defined formal macro type }
            2  481      idm_nch:                   integer; { Index of next character }
            2  482      idm_tab:                   idm_apt; { Macro code reference }
            2  483      idm_run:                   boolean  { Flag for active code }
            2  484    end;
            2  485  
            2  486  
            2  487  
            2  488  
       C    2  489          {***************************************************************}
       C    2  490          {*****      Symbol Definitions for Expression Parsing      *****}
       C    2  491          {***************************************************************}
       C    2  492  
            2  493    cla_kinds = ( cla_type,               { Type Identifier }
            2  494                  cla_varbl,              { Variable or Lsq_Variable Identifier }
            2  495                  cla_field,              { Item field Identifier }
            2  496                  cla_formal,             { Function Formal argument identifier }
            2  497                  cla_item,               { Item (kind of record) }
            2  498                  cla_generic,            { Generic user procedure/function Identifier }
            2  499                  cla_standard            { Standard (Builtin) generic procedure/function Identifier }
            2  500                );
  P A S - P. WOLFERS SOFTWARE: V2.1-E OF 31-AUG-2009  RUN THE 10-DEC-2009 AT 15:13:42     PAGE  12
 The Current Source File is "/home/wolfers/Soft/cpsh_kits/MXDV4_src/mxd_dcp_env.pas".

 The Current Compiled Module is "mxd_dcp".

            2  501  
       C    2  502     { *** Define the object kinds (functions, string, integer, float and there related array *** }
            2  503    typ_form =  ( form_valstr,            { String identifier }
            2  504                  form_valint,            { Integer identifier }
            2  505                  form_valflt,            { Floatting number identifier }
            2  506                  form_telstr,            { String Array element }
            2  507                  form_telint,            { Integer Array element }
            2  508                  form_telflt,            { Float Array element }
            2  509                  form_tabstr,            { String array identifier }
            2  510                  form_tabint,            { Integer array identifier }
            2  511                  form_tabflt,            { Floatting number array identifier }
            2  512                  form_itmref,            { Item Reference Identifier }
            2  513                  form_lsqref,            { LSQ expression reference }
            2  514                  form_wscala,            { Wild scalar }
            2  515                  form_sarray,            { Wild string array as formal }
            2  516                  form_iarray,            { Wild integer array as formal }
            2  517                  form_farray,            { Wild float array as formal }
            2  518                  form_warray,            { Wild array as formal }
            2  519                  form_wild,              { Wild object }
            2  520                  form_null               { Empty/Null value }
            2  521                );
            2  522  
       C    2  523    { *** Define the variable attributes (including allocation modifiers (complex, lsq, ...) flags *** }
            2  524    obj_flelm = ( objf_ronly,             { Constant value identifier (Read Only) }
            2  525                  objf_spdef,             { Flag a specific action for definition }
            2  526                  objf_refer,             { Flag a specific action for reference }
            2  527                  objf_spass,             { Flag a specific action for assignation }
            2  528                  objf_sigma,             { Flag for sigma allocation }
            2  529                  objf_lockd,             { Locked size flag (for array) }
            2  530                  objf_noass,             { Suppress assignement management }
            2  531                  objf_varbl,             { Normal DCP Read/Write variable }
            2  532                  objf_lsqva,             { Least-Square Variable }
            2  533                  objf_lsqpa,             { Least-Square Parameter }
            2  534                  objf_lsqob              { MXD Least-Squares object }
            2  535                );
            2  536  
            2  537  
            2  538    obj_flagsty   =   set of obj_flelm;   { * Define the object flags word type }
            2  539  
       C    2  540  (*
       C    2  541    type_idtb  = array[1..type_max] of ide_ptr;   { * Define the direct access to defined types * }
       C    2  542  *)
       C    2  543  
            2  544    ide_arrstr( ide_all: integer ) = record       { * Define an array of string * }
            2  545      ide_stb: array[1..ide_all] of str_ptr;
            2  546    end;
            2  547  
            2  548  
            2  549    ide_arrint( ide_all: integer ) = record       { * Define an array of integer * }
            2  550      ide_itb: array[1..ide_all] of integer;
            2  551    end;
            2  552  
            2  553  
            2  554    ide_arrflt( ide_all: integer ) = record       { * Define an array of float * }
            2  555      ide_ftb: array[1..ide_all] of mxd_flt;
  P A S - P. WOLFERS SOFTWARE: V2.1-E OF 31-AUG-2009  RUN THE 10-DEC-2009 AT 15:13:42     PAGE  13
 The Current Source File is "/home/wolfers/Soft/cpsh_kits/MXDV4_src/mxd_dcp_env.pas".

 The Current Compiled Module is "mxd_dcp".

            2  556    end;
            2  557  
            2  558    itm_fld = record                              { * Define the item record * }
            2  559      itmf_name:                    str_ptr;      { Field name }
            2  560      case itmf_form: typ_form of                 { Item field type }
            2  561        form_valstr:( str:          str_ptr);     { String value }
            2  562        form_valint:( int:          integer);     { Integer Value }
            2  563        form_valflt:( flt, sig:     mxd_flt);     { Float value (with sigma) }
            2  564        form_tabstr:( aas:      ^ide_arrstr);     { Array of string values }
            2  565        form_tabint:( aai:      ^ide_arrint);     { Array of integer values }
            2  566        form_tabflt:( aaf, asg: ^ide_arrflt);     { Array of float value (with possible standard error (sigma) }
            2  567        form_itmref:( itm:          itm_ptr)      { Item reference }
            2  568    end;
            2  569  
            2  570    itm_rec( itm_size: integer ) = record
            2  571      itm_dnam:                      str_ptr;     { Item user Name to display }
            2  572      itm_idseq:                     integer;     { Item internal identifier }
            2  573      itm_tab: array[1..itm_size] of itm_fld      { Item field array }
            2  574    end;
            2  575  
            2  576  
            2  577    asr_rec = record                              { * Define Array specification record (ASR) * }
            2  578      asr_sub:                       asr_ptr;     { Link to a sub array definition }
            2  579      asr_own:                       ide_ptr;     { Link to the identifier Owner }
            2  580      asr_stp,                                    { Index step for the array }
            2  581      asr_siz,                                    { Index maximum for the array }
            2  582      asr_min:                       integer;     { Minimum index value }
            2  583      asr_dsp:                          byte;     { Display level owner }
            2  584      asr_fix:                       boolean      { Fixed dimension flag }
            2  585    end;
            2  586  
            2  587  
            2  588  
            2  589    tbs_rec = record                              { * Define the Array Scan by string index record context }
            2  590      tbs_lnk:                       tbs_ptr;     { Link to the sub-array (array of array) }
            2  591      tbs_min,                                    { Minimum, maximum and current value of index }
            2  592      tbs_max,
            2  593      tbs_ind:                       integer
            2  594    end;
            2  595  
            2  596  
            2  597    ide_rec = record                              { * Define the identifier record (IDR) * }
            2  598      ide_name:                          str_ptr; { Identifier name pointer }
            2  599      ide_lnk,                                    { List identifier link }
            2  600      ide_left, ide_right:               ide_ptr; { Left and right identifier link }
            2  601      ide_displ:                            byte; { Display level }
            2  602      case ide_class: cla_kinds of                { Class of the identifier }
            2  603        cla_type:(  { * For Type (local or Least-Squares) * }
            2  604          idet_asr:                      asr_ptr; { Related Array specification records (ASR) or nil }
            2  605          idet_typ:                      ide_ptr; { Parent type pointer (or for intinsec type only nil) }
            2  606          idet_spcact:                   integer; { Sequence number of this identifier for LSQ obj or specific act
                    ion index when value change }
            2  607          idet_flags:                obj_flagsty; { Identifier set of flags }
            2  608          idet_form:                    typ_form; { Identifier form for type and related variable/field }
            2  609        );
  P A S - P. WOLFERS SOFTWARE: V2.1-E OF 31-AUG-2009  RUN THE 10-DEC-2009 AT 15:13:42     PAGE  14
 The Current Source File is "/home/wolfers/Soft/cpsh_kits/MXDV4_src/mxd_dcp_env.pas".

 The Current Compiled Module is "mxd_dcp".

            2  610        cla_field,
            2  611        cla_varbl:( { * For Variable (local or Least-Squares) * }
            2  612          idev_asr:                      asr_ptr; { Related Array specification records (ASR) or nil }
            2  613          idev_typ:                      ide_ptr; { Parent type pointer (or for intinsec type only nil) }
            2  614          idev_spcact,                            { Specific Action Index }
            2  615          idev_sequnb:                   integer; { Sequence number of this identifier for LSQ obj or specific act
                    ion index when value change }
            2  616          idev_flags:                obj_flagsty; { Identifier set of flags }
            2  617          case idev_form: typ_form of             { Basic type (form) variable/field type of data selection }
            2  618            form_valstr:( str:          str_ptr); { String value }
            2  619            form_valint:( int:          integer); { Integer Value }
            2  620            form_valflt:( flt, sig:     mxd_flt); { Float value (with sigma) }
            2  621            form_tabstr:( aas:      ^ide_arrstr); { Array of string values }
            2  622            form_tabint:( aai:      ^ide_arrint); { Array of integer values }
            2  623            form_tabflt:( aaf, asg: ^ide_arrflt); { Array of float value (with possible standard error (sigma) }
            2  624            form_itmref:( itm:          itm_ptr)  { Item reference }
            2  625        );
            2  626        cla_formal:( { * For Function formal argument * }
            2  627          idef_typ:                     ide_ptr;  { Formal type reference }
            2  628          idef_efn:                     integer;  { Effective Stack link }
            2  629          idef_def,                               { Flag for optional argument }
            2  630          idef_ref:                     boolean   { Flag for reference (=var) formal access }
            2  631        );
            2  632        cla_standard, { * For Builtin/Standard Generic Procedures and Functions * }
            2  633        cla_generic:( { * For User Generic Procedures and Functions * }
            2  634          ideg_first,                             { Header (first and last) of definition queue for this generic n
                    ame }
            2  635          ideg_last:                    ent_ptr
            2  636        );
            2  637    end;
            2  638  
            2  639  
            2  640    usrf_rec = record
            2  641      usrf_nxt, usrf_prv:       usrf_ptr; { Next and previous links }
            2  642      usrf_iref:                 ide_ptr  { Pointer to the referenced identifier }
            2  643    end;
            2  644  
            2  645  
            2  646    disp_rec = record
            2  647      disp_lex:                  integer; { Display level }
            2  648      disp_ent:                  ent_ptr; { List of operators definitions in this lex }
            2  649      disp_lid,                           { Last created identifier in the lex }
            2  650      disp_idt:                  ide_ptr  { Identifier tree }
            2  651    end;
            2  652  
            2  653  
            2  654    ent_rec = record
            2  655      ent_lnk,                            { Link to the previous (FIFO) entry definition of the same display level
                     }
            2  656      ent_prv:                  ent_ptr;  { Link to the previous (FIFO) entry definition of the same generic/opera
                    tor }
            2  657      ent_typ:                  ide_ptr;  { Pointer to the resulting type }
            2  658      case ent_knd: ent_kinds of
            2  659        entk_stm: ( ent_pt1,              { Pointer to the first and second (or nil) parameter types }
            2  660                    ent_pt2:    ide_ptr;
  P A S - P. WOLFERS SOFTWARE: V2.1-E OF 31-AUG-2009  RUN THE 10-DEC-2009 AT 15:13:42     PAGE  15
 The Current Source File is "/home/wolfers/Soft/cpsh_kits/MXDV4_src/mxd_dcp_env.pas".

 The Current Compiled Module is "mxd_dcp".

            2  661                    ent_cv1,              { Conversion to apply to first ... }
            2  662                    ent_cv2:    ent_ptr;  { ... and second parameter }
            2  663                    ent_stm:    ope_stm   { Statement to execute }
            2  664                  );
            2  665        entk_std,
            2  666        entk_fnc: ( ent_frl:             ide_ptr; { Pointer to the formal list identifier }
            2  667                    ent_npa,                      { Number of parameters }
            2  668                    ent_dsp:                byte; { Lex of this definition }
            2  669                    ent_ope:            dcp_oper; { Code of related operator }
            2  670                    case boolean of
            2  671                      false:( ent_std: std_fnc ); { For the standard (builtin) function, index of the buitin fonct
                    ion }
            2  672                      true:(  ent_cod: idm_apt;   { For the user function: text of the function code }
            2  673                              case boolean of
            2  674                                false:(ent_ide: ide_ptr); { Back pointer to generic identifier, or ... }
            2  675                                true:( ent_str: str_ptr )){ ... attached operator name for operator }
            2  676                  )
            2  677    end;
            2  678  
            2  679  
            2  680    mope_tabt = array[dcp_oper] of record { * Define the macro operator reference lists * }
            2  681      mop_first,                          { Definition list for operators }
            2  682      mop_last:           ent_ptr
            2  683    end;
            2  684  
            2  685  
            2  686    disp_tabty = array[0..disp_max] of disp_rec;  { * Display table definition * }
            2  687  
            2  688  
            2  689  
            2  690    exp_rec = record                              { * Define the expression record * }
            2  691      exp_ref:                           ide_ptr; { Identifier pointer for object ref. }
            2  692      exp_asr:                           asr_ptr; { Array definition pointer }
            2  693      exp_edim,                                   { Copy of dimension for sub-array }
            2  694      exp_shift:                         integer; { Array shift for reference }
            2  695      exp_flags:                     obj_flagsty; { Object word set of flags }
            2  696      case exp_form: typ_form of                  { Type of expression }
            2  697        form_telstr,
            2  698        form_valstr:(     exp_str:     str_ptr ); { String expression }
            2  699        form_telint,
            2  700        form_valint:(     exp_int:     integer ); { Integer expression }
            2  701        form_telflt,
            2  702        form_valflt:(     exp_flt,                { Float expression }
            2  703                          exp_sig:     mxd_flt ); { Related float sigma (for LSQ Reference/expression) }
            2  704        form_tabstr:(     exp_aas:  ^ide_arrstr); { Array of string expression }
            2  705        form_tabint:(     exp_aai:  ^ide_arrint); { Array of integer expression }
            2  706        form_tabflt:(     exp_aaf,                { Array of float expression }
            2  707                          exp_asg:  ^ide_arrflt); { Array of float for LSQ reference }
            2  708    end;
            2  709  
            2  710  
            2  711  
       C    2  712    { *** Least-Squares definitions *** }
       C    2  713  
            2  714    lsq_itemt = (
  P A S - P. WOLFERS SOFTWARE: V2.1-E OF 31-AUG-2009  RUN THE 10-DEC-2009 AT 15:13:42     PAGE  16
 The Current Source File is "/home/wolfers/Soft/cpsh_kits/MXDV4_src/mxd_dcp_env.pas".

 The Current Compiled Module is "mxd_dcp".

            2  715                   itmt_fltdfp,           { Real Pre-defined Least-Squares identifier (as $HH or $RFN) }
            2  716                   itmt_fltvar,           { Real LSQ Variable }
            2  717                   itmt_fltexp,           { Real LSQ Expression }
            2  718                   itmt_phase,            { Cristallographic phase }
            2  719                   itmt_symtry,           { Symmetry operator }
            2  720                   itmt_atom,             { Atom }
            2  721                   itmt_catom,            { Cartesian Atom }
            2  722                   itmt_moment,           { Magnetic Moment }
            2  723                   itmt_mdsdsp,           { Modulated displacment }
            2  724                   itmt_wavev,            { Wave Vector definition }
            2  725                   itmt_npolad,           { Neutron Polarization direction }
            2  726                   itmt_ddata,            { Diffraction Data }
            2  727                   itmt_sdata,            { Scalar (with formulae) data }
            2  728                   itmt_lsqblk            { Least-Squares diagonal block }
            2  729                 );
            2  730  
       C    2  731  (*
       C    2  732    lsq_rec = record
       C    2  733      lsq_prv,                            { Link to the previous and ... }
       C    2  734      lsq_nxt:                   lsq_ptr; { ... next Least-squares item definitions }
       C    2  735      lsq_ide:                   ide_ptr; { Related identifier }
       C    2  736      lsq_seqnb:                 integer; { Associated Integer identifier }
       C    2  737      lsq_asr:                   asr_ptr; { Array definition pointer }
       C    2  738      lsq_itmty:               lsq_itemt; { Kind og LSQ Item }
       C    2  739      lsq_rval:              ^ide_arrflt  { Real values reference }
       C    2  740    end;
       C    2  741  *)
       C    2  742    { Data Directory: ddi table record structure }
       C    2  743  
            2  744    datadef = record                      { * Data collection record definition * }
            2  745      filenbr,                            { Data file sequence number }
            2  746      optref,                             { Observation type (0/1/2 for sf/f2/ray) }
            2  747      ncp, ncpv,                          { Number of hkl and intensities }
            2  748      hm,  hn,   km,
            2  749      kn,  lm,   ln:             integer; { Mini-maxi of h k l }
            2  750      swobs2,    swobs,                   { Weighted obs. summations }
            2  751      sobs2,     sobs:           mxd_flt  { Unweighted obs. summations }
            2  752    end;
            2  753  
            2  754  
            2  755    ddirec = record                       { * Data Directory record definition * }
            2  756      nam:                    ide_string; { Name of the data collection }
            2  757      inf:                       datadef  { Related informations }
            2  758    end;
            2  759  
            2  760  
            2  761    ddi_file = file of ddirec;            { DDI file type }
            2  762  
            2  763  
            2  764  
            2  765  
       C    2  766    { User Files descriptor Definition }
       C    2  767  
            2  768    iocnt_opmode = ( iocnt_close,         { User file channel is closed }
            2  769                     iocnt_input,         { User file channel is open for input }
  P A S - P. WOLFERS SOFTWARE: V2.1-E OF 31-AUG-2009  RUN THE 10-DEC-2009 AT 15:13:42     PAGE  17
 The Current Source File is "/home/wolfers/Soft/cpsh_kits/MXDV4_src/mxd_dcp_env.pas".

 The Current Compiled Module is "mxd_dcp".

            2  770                     iocnt_output         { User file channel is open for output }
            2  771                   );
            2  772  
            2  773    iocnt_rec = record                    { * User file channel definition * }
            2  774      iocnt_mode: iocnt_opmode;           { User channel status }
            2  775      iocnt_file: text                    { Related Pascal file }
            2  776    end;
            2  777  
            2  778    iocnt_tab = array[1..max_usrlun] of iocnt_rec;{ * Define the User file channel table type * }
            2  779  
            2  780  
            2  781  
            2  782  
            2  783  const
            2  784  
            2  785    JBNAME_VALUE  =            1;                 { Job Name Specific Action Index }
            2  786    JBTITL_VALUE  =            2;                 { Job Title Specific Action Index }
            2  787    JBSAVE_FNAME  =            3;                 { Job Status Save File Name Action Index }
            2  788  
            2  789    LSQVAR_TYPE   =           11;                 { Least-Squares Variable Specific Action Index }
            2  790    LSQEXP_TYPE   =           12;                 { Least-Squares Expression (MXD-V3 PARAM name = expr;) Specific 
                    Action Index }
            2  791    LSQITR_TYPE   =           13;                 { Least-Squares item field reference }
            2  792    LSQFTB_TYPE   =           14;                 { Least-Squares table Specific Action Index }
            2  793    LSQPQT_TYPE   =           15;                 { Least-Squares Predefined Quantity Specific Action Index }
            2  794    LSQPDQ_TYPE   =           16;                 { Least-Squares Data list Predefined Quantity Specific Action In
                    dex }
            2  795  
            2  796  
            2  797    objf_spca =  [objf_spdef,objf_refer,objf_spass]; { Define the set of specific action flags }
            2  798  
            2  799  
            2  800  
            2  801  
       C    2  802  { ****************************************************************************** }
       C    2  803  { ***  Global Variables of Cpas Shell environment declared here as external  *** }
       C    2  804  { ****************************************************************************** }
       C    2  805  
       C    2  806  
            2  807  [external]
            2  808  var
            2  809    sy_ival:                     integer; { INSYMBOL: Last readden integer number }
            2  810    sy_rval:                     mxd_flt; { INSYMBOL: Last readden floatting number }
            2  811  
            2  812    sy_noexec,                            { INSYMBOL: To flag the no exec mode }
            2  813    sy_nomacrflg:                boolean; { INSYMBOL: Flag to disable the mac. parm replace }
            2  814    sy_macro:                    idm_ptr; { INSYMBOL: Last readen macro symbol pointer }
            2  815  
            2  816    sy_maclst,                            { INSYMBOL: Macro Expenssion Source Line }
            2  817    sy_string:                str_string; { INSYMBOL: Last readden string }
            2  818    sy_ident:                 ide_string; { INSYMBOL: Last readden identifier }
            2  819    sy_cmin,                              { INSYMBOL: Last readden character in major }
            2  820    sy_ch:                          char; { INSYMBOL: Last readden character }
            2  821    sy_sym:                      sym_rec; { INSYMBOL: Symbol found }
            2  822    sy_idenew:                   ide_ptr; { IDE_NEW:  Pointer to the last created symbol }
  P A S - P. WOLFERS SOFTWARE: V2.1-E OF 31-AUG-2009  RUN THE 10-DEC-2009 AT 15:13:42     PAGE  18
 The Current Source File is "/home/wolfers/Soft/cpsh_kits/MXDV4_src/mxd_dcp_env.pas".

 The Current Compiled Module is "mxd_dcp".

            2  823    sy_endsy,                             { INSYMBOL: related End Symbol or nothing }
            2  824    lastsymb:                     symbol; { Last symbol in source }
            2  825  
            2  826    idm_space,                            { Flag for space already out }
            2  827    idm_outmacro:                boolean; { Flag to generate a macro stream }
            2  828  
            2  829    idm_newmac:                  idm_apt; { Macro in build }
            2  830    idm_actstk,                           { Stack pointer of active macro code }
            2  831    idm_tmphde,                           { Stack pointer of temporary macro parm }
            2  832    idm_defstk:                  idm_ptr; { Stack pointer of Defined Macro Identifiers }
            2  833  
            2  834    idm_liblifo:                 stq_ptr; { Stack (LiFo) of macro library specifications }
            2  835  
            2  836    mop_tab:                   mope_tabt; { Define the macro operator reference lists }
            2  837  
       C    2  838  {
       C    2  839    dty_tab:                   type_idtb; { Acces type definition from sequence number }
            2  840    dty_nbr:                     integer; { Number of defined types }
            2  841  
            2  842    keyword_tree:            keyword_ptr; { Keyword definition tree }
            2  843  
            2  844    symc_stk:                   symc_ptr; { Symbol context pointer }
            2  845  
            2  846    list_dataflg,                         { Flag to list of data during data build time }
            2  847    debug_macsrc,                         { Debug Macro Source }
            2  848    debug_mac,                            { Debug of macro }
            2  849    debug_sym,                            { Debug on Input syntax unit flag }
            2  850    debug_exp,                            { Debug on Expression element flag }
            2  851    debug_dat:                   boolean; { Debug on Data Management }
            2  852  
            2  853    sy_npcd_flg,                          { To flag the not open pcd file status }
            2  854    sy_init_mod:                 boolean; { Program init flag mode }
            2  855  
            2  856    disp_tab:                 disp_tabty; { The Display levels table }
            2  857  
            2  858    curr_disp,                            { Current top of lex display }
            2  859    curr_idisp,                           { Display level of founded identifier }
            2  860    curr_lex:                    integer; { Current identifier lex }
            2  861  
            2  862    str_typ,                              { Standard string type identifier pointer }
            2  863    int_typ,                              { Standard integer type identifier pointer }
            2  864    flt_typ,                              { Standard float type identifier pointer }
            2  865  
            2  866    curr_ide,                             { Current identifier to search (or nil) }
            2  867    udc_int,                              { Undeclared Integer }
            2  868    udc_ident:                   ide_ptr; { Undeclared Identifier }
            2  869  
            2  870    furf_hde,
            2  871    furf_lst:                   usrf_ptr; { Final User Referencable Identifier list Header }
            2  872  
            2  873    job_name,                             { MXD Job Name specification }
            2  874    job_save,                             { MXD Save file specification }
            2  875    job_title:                   ide_ptr; { Title of MXD job string }
            2  876  
            2  877    exp_null,                             { Null expression record }
  P A S - P. WOLFERS SOFTWARE: V2.1-E OF 31-AUG-2009  RUN THE 10-DEC-2009 AT 15:13:42     PAGE  19
 The Current Source File is "/home/wolfers/Soft/cpsh_kits/MXDV4_src/mxd_dcp_env.pas".

 The Current Compiled Module is "mxd_dcp".

            2  878    exp_res:                     exp_rec; { Current expression }
            2  879  
            2  880    ide_seq_count:              unsigned; { Identifier Sequence count for application }
            2  881  
            2  882    ierr:                        integer; { General error code }
            2  883  
            2  884    data_mode,                            { Macro mode flag for insymbol }
            2  885    fatal_error:                 boolean; { General flag for fatal error }
            2  886  
            2  887    io_winfo,                             { Wait process out information }
            2  888    io_libpath,                           { Path to *env.std and *.err files }
            2  889    io_err,                               { Open File Error variable }
            2  890    io_count,                             { Array input count identifier pointer }
            2  891    io_eoln,                              { EOLN flag identifier pointer }
            2  892    io_eof:                      ide_ptr; { EOF flag identifer pointer }
            2  893  
            2  894  
            2  895    sym_iof:                   iocnt_tab; { User text file descriptors }
            2  896  
            2  897  
            2  898    pcd:                            text; { Statement MXD-P-Code file }
            2  899  
            2  900  
            2  901  
            2  902  
            2  903  
            2  904  
       C    2  905  { ****************************************************************************** }
       C    2  906  { ***                   External Procedures and functions                    *** }
       C    2  907  { ****************************************************************************** }
       C    2  908  
       C    2  909  
       C    2  910  { ** Routine of the MXD_DCP_RTL module ** }
       C    2  911  
            2  912  procedure LISTING_SET_TITLE;
            2  913  external;
            2  914  
            2  915  procedure LISTING_SET_SBTTL( str: str_ptr );
            2  916  external;
            2  917  
            2  918  procedure TRACE( in_var s: string );
            2  919  external;
            2  920  
            2  921  procedure SRC_ERROR_S( modulesy:   error_mdnam;
            2  922                         number:     integer;
            2  923                         severity:   error_sev;
            2  924                         var id1, id2: [optional] string );
            2  925  external;
            2  926  
            2  927  procedure SEARCH_FILE( in_var path, fname: string; acc: integer; var re: string; var fnd: boolean );
            2  928  external;
            2  929  
            2  930  function IDE_SEARCH_FROM_NAMEID( ip: ide_ptr ): ide_ptr;
            2  931  external;
            2  932  
  P A S - P. WOLFERS SOFTWARE: V2.1-E OF 31-AUG-2009  RUN THE 10-DEC-2009 AT 15:13:42     PAGE  20
 The Current Source File is "/home/wolfers/Soft/cpsh_kits/MXDV4_src/mxd_dcp_env.pas".

 The Current Compiled Module is "mxd_dcp".

            2  933  procedure DISPLAY_NEW;
            2  934  external;
            2  935  procedure DISPLAY_FREE;
            2  936  external;
            2  937  
            2  938  function  IDE_NEW( cla: cla_kinds; frm: typ_form; ilvl: integer := 0 ): ide_ptr;
            2  939  external;
            2  940  function  LEVEL_SEARCH( fp: ide_ptr ): ide_ptr;
            2  941  external;
            2  942  function  IDE_SEARCH( berr: boolean ): ide_ptr;
            2  943  external;
            2  944  
            2  945  function  USR_ELTAB_SCINIT( asr: asr_ptr ): tbs_ptr;
            2  946  external;
            2  947  procedure USR_ELTAB_SCAN( tbs: tbs_ptr; var sindex: string; var bend: boolean );
            2  948  external;
            2  949  procedure USR_ELTAB_SCEND( tbs: tbs_ptr );
            2  950  external;
            2  951  
            2  952  function  USR_IDE_LOCATE( in_var id_name: string ): ide_ptr;
            2  953  external;
            2  954  procedure USR_IDE_APPEND( p: ide_ptr );
            2  955  external;
            2  956  procedure USR_IDE_REMOVE( p: ide_ptr );
            2  957  external;
            2  958  function  USR_GETPATH( sp: char; in_var st: string; var tbrf: ide_arrstr ): integer;
            2  959  external;
            2  960  function  USR_SETPATH( in_var st: string; ist: integer; var tbrf: ide_arrstr ): integer;
            2  961  external;
            2  962  procedure USR_IDE_SUBSTITUTE( in_var src: string; var dst: string; ch: char );
            2  963  external;
            2  964  procedure USR_S_ELEMENT(    var dst:  string;   { The extracted element string }
            2  965                           in_var src:  string;   { The string }
            2  966                                  iel: integer;   { The element number starting from 0 }
            2  967                                  csp,            { The separator character }
            2  968                                  cst:   char;    { The string character (or space) }
            2  969                                  bss: boolean := false   { The string expanding flag }
            2  970                         );
            2  971  external;
            2  972  procedure USR_SUPPRESS_COMMENT( in_var src: string; var dst: string; cc, cs: char );
            2  973  external;
            2  974  function  USR_NUMERIC_STRING( in_var str: string ): boolean;
            2  975  external;
            2  976  
            2  977  function BESSEL_J( rn, rv: mxd_flt ): mxd_flt;
            2  978  external;
            2  979  
            2  980  
       C    2  981  { ** Routine of the MXD_DCP_BASINIT module ** }
       C    2  982  
            2  983  procedure DCP_INIT;
            2  984  external;
            2  985  
            2  986  
       C    2  987  { ** Routine of MXD_DCP_CALL module ** }
  P A S - P. WOLFERS SOFTWARE: V2.1-E OF 31-AUG-2009  RUN THE 10-DEC-2009 AT 15:13:42     PAGE  21
 The Current Source File is "/home/wolfers/Soft/cpsh_kits/MXDV4_src/mxd_dcp_env.pas".

 The Current Compiled Module is "mxd_dcp".

       C    2  988  
       C    2  989  
       C    2  990  
            2  991  procedure DEFINE_OPER_INIT;
            2  992  external;
            2  993  
            2  994  
       C    2  995  { ** Routine of the MXD_DCP_INSYMB module ** }
       C    2  996  
            2  997  procedure SAVE_SYM_CNTX( svall: boolean := false );
            2  998  external;
            2  999  procedure RESTORE_SYM_CNTX;
            2 1000  external;
            2 1001  
            2 1002  procedure GEN_MACRO_CODE;
            2 1003  external;
            2 1004  function  SEARCH_MACRO( knd: idm_kinds ): idm_ptr;
            2 1005  external;
            2 1006  procedure ACTIVE_MACRO_CODE( p: idm_ptr; svall: boolean := false );
            2 1007  external;
            2 1008  procedure RET_OF_MACRO_CODE( p: idm_ptr );
            2 1009  external;
            2 1010  
            2 1011  procedure INSYMBOL;
            2 1012  external;
            2 1013  procedure SKIP_SYMBOL( tosymbol: symbol );
            2 1014  external;
            2 1015  
            2 1016  procedure GENERATE_MACRO_PARM( pa: idm_ptr; bpar: boolean; fch: char );
            2 1017  external;
            2 1018  function NEW_MACRO_EXPR: idm_ptr;
            2 1019  external;
            2 1020  procedure PURGE_MACRO_EXPR( var p: idm_ptr );
            2 1021  external;
            2 1022  
            2 1023  
            2 1024  
       C    2 1025  { ** Routine of the MXD_DCP_BUITIN module ** }
       C    2 1026  
            2 1027  procedure EXEC_BUILTIN( fnc: std_fnc; npa: integer );
            2 1028  external;
            2 1029  
            2 1030  
       C    2 1031  { ** Routine of the MXD_DCP_EXPR module ** }
       C    2 1032  
            2 1033  procedure EXP_GENERIC_CALL( idp: ide_ptr; bexpr: boolean );
            2 1034  external;
            2 1035  
            2 1036  function  POP_INTEXPR( iv: integer ): integer;
            2 1037  external;
            2 1038  function  POP_FLTEXPR( rv: mxd_flt ): mxd_flt;
            2 1039  external;
            2 1040  procedure POP_STREXPR( var st: string );
            2 1041  external;
            2 1042  procedure POP_NUMEXPR( var   bf:       boolean;
  P A S - P. WOLFERS SOFTWARE: V2.1-E OF 31-AUG-2009  RUN THE 10-DEC-2009 AT 15:13:42     PAGE  22
 The Current Source File is "/home/wolfers/Soft/cpsh_kits/MXDV4_src/mxd_dcp_env.pas".

 The Current Compiled Module is "mxd_dcp".

            2 1043                         var   iv:       integer;
            2 1044                         var   rv, sg:   mxd_flt );
            2 1045  external;
            2 1046  procedure POP_EXP_REFER( var rec: exp_rec );
            2 1047  external;
            2 1048  function EXP_GETKINDS( ish: integer ): typ_form;
            2 1049  external;
            2 1050  
            2 1051  procedure EXP_PUTSTR( in_var st: string );
            2 1052  external;
            2 1053  procedure EXP_PUTINT( iv: integer );
            2 1054  external;
            2 1055  procedure EXP_PUTFLT( rv, sg: mxd_flt := 0.0 );
            2 1056  external;
            2 1057  
            2 1058  function IN_FILEMODE( iv: integer ): flags_file;
            2 1059  external;
            2 1060  
            2 1061  procedure GET_STREXPR(var str: string );
            2 1062  external;
            2 1063  function  GET_INTEXPR( iv: integer ): integer;
            2 1064  external;
            2 1065  function  GET_FLTEXPR( rv: mxd_flt ): mxd_flt;
            2 1066  external;
            2 1067  procedure GET_EXP_REFER( var rec: exp_rec );
            2 1068  external;
            2 1069  procedure GET_EXPRESSION;
            2 1070  external;
            2 1071  procedure ARRSCA_SS_OPE( op: dcp_oper; var src, dst: exp_rec );
            2 1072  external;
            2 1073  procedure ARRSCA_II_OPE( op: dcp_oper; vsrc: integer; var dst: exp_rec );
            2 1074  external;
            2 1075  procedure ARRSCA_FF_OPE( op: dcp_oper; vsrc: mxd_flt; var dst: exp_rec );
            2 1076  external;
            2 1077  procedure ARRAY_SS_OPE( op: dcp_oper; var src, dst: exp_rec );
            2 1078  external;
            2 1079  procedure ARRAY_II_OPE( op: dcp_oper; var src, dst: exp_rec );
            2 1080  external;
            2 1081  procedure ARRAY_IF_OPE( op: dcp_oper; var src, dst: exp_rec );
            2 1082  external;
            2 1083  procedure ARRAY_FI_OPE( op: dcp_oper; var src, dst: exp_rec );
            2 1084  external;
            2 1085  procedure ARRAY_FF_OPE( op: dcp_oper; var src, dst: exp_rec );
            2 1086  external;
            2 1087  procedure CREATE_NEW_ARR_DEF( var pn: asr_ptr; var  sz:     integer;
            2 1088                                    po: asr_ptr;      np, nc: integer );
            2 1089  external;
            2 1090  procedure EXPRESSION;
            2 1091  external;
            2 1092  
            2 1093  
            2 1094  
       C    2 1095  { ** Routine of the MXD_DCP_COMP module ** }
       C    2 1096  
            2 1097  procedure DEFINE_SPECIFIC( ip: ide_ptr );
  P A S - P. WOLFERS SOFTWARE: V2.1-E OF 31-AUG-2009  RUN THE 10-DEC-2009 AT 15:13:42     PAGE  23
 The Current Source File is "/home/wolfers/Soft/cpsh_kits/MXDV4_src/mxd_dcp_env.pas".

 The Current Compiled Module is "mxd_dcp".

            2 1098  external;
            2 1099  
            2 1100  procedure ASSIGN_SPECIFIC( ip: ide_ptr );
            2 1101  external;
            2 1102  
            2 1103  procedure STATELIST( stopper: symbol );
            2 1104  external;
            2 1105  
            2 1106  
            2 1107  
       C    2 1108  { ** Routine of the MXD_DCP_LSQ module ** }
       C    2 1109  
            2 1110  procedure DCP_LSQ_INIT;
            2 1111  external;
            2 1112  
            2 1113  procedure DCP_LSQ_MODULE;
            2 1114  external;
            2 1115  
            2 1116  procedure DCP_LSQ_SUMMARY;
            2 1117  external;
            2 1118  
            2 1119  procedure DCP_DEF_LSQ_VARBL( ip: ide_ptr );
            2 1120  external;
            2 1121  
            2 1122  procedure DCP_ASS_LSQ_VARBL( ip: ide_ptr );
            2 1123  external;
            2 1124  
            2 1125  procedure DCP_DEF_LSQ_PARM( ip: ide_ptr );
            2 1126  external;
            2 1127  
            2 1128  
            2 1129  
       C    2 1130  { *** End of environment *** }
       C    2 1131  
            1  100    %include       'MXDSRC:mxd_dcp_env';          { Load the MXD data Compiler Environment }
            1  101  
            1  102  
            1  103  
            1  104  
       C    1  105    {**************************************************}
       C    1  106    {*******          Type Declarations          ******}
       C    1  107    {**************************************************}
       C    1  108  (*
       C    1  109  type
       C    1  110  
       C    1  111    node_typ = ( { Reference node definitions }
       C    1  112                 refer,      ctarray,    param,      varbl,       { 00..03 }
       C    1  113                 contrrf,    indxrf,     functrf,    formalrf,    { 04..07 }
       C    1  114                 arrayrf,    no09,       no10,       no11,        { 08..11 }
       C    1  115                 no12,       no13,       no14,       no15,        { 12..15 }
       C    1  116  
       C    1  117                 { Operator and scalar constante node definitions }
       C    1  118                 konst,      addop,      subop,      mulop,       { 16..19 }
       C    1  119                 divop,      negop,      powop,      ipwop,       { 20..23 }
       C    1  120                 sinop,      cosop,      tanop,      asinop,      { 24..27 }
  P A S - P. WOLFERS SOFTWARE: V2.1-E OF 31-AUG-2009  RUN THE 10-DEC-2009 AT 15:13:42     PAGE  24
 The Current Source File is "/home/wolfers/Soft/cpsh_kits/MXDV4_src/mxd_dcp_main.pas".

 The Current Compiled Module is "mxd_dcp".

       C    1  121                 acosop,     atanop,     expop,      logop,       { 28..31 }
       C    1  122                 sqrto,      tanho,      phaseop,    absop,       { 32..35 }
       C    1  123                 bess1op,    no37,       no38,       no39,        { 36..39 }
       C    1  124                 summop,     selectop,   intselop,   sumhklop,    { 40..43 }
       C    1  125                 no44,       no45,       no46,       no47,        { 44..47 }
       C    1  126                 modop,      intop,      equop,      neqop,       { 48..51 }
       C    1  127                 cltop,      cleop,      cgeop,      cgtop,       { 52..55 }
       C    1  128  
       C    1  129                 { Special operators }
       C    1  130                 formalcall, functcall,  no58,       no59,        { 56..59 }
       C    1  131                 no60,       no61,       no62,       connectop,   { 60..63 }
       C    1  132  
       C    1  133                 { All other p code statements are below }
       C    1  134                 cellsy,     catomsy,    atomsy,     momentsy,    { 64..67 }
       C    1  135                 mdsdspsy,   wavevsy,    npoladirsy, symtrysy,    { 68..71 }
       C    1  136                 optionssy,  soptionsy,  nullsy,                  { 72..74 }
       C    1  137                 varbldf,    parmdf,                              { 75..76 }
       C    1  138                 datasy,     no78,       lsqblocksy, centeronsy,  { 77..80 }
       C    1  139                 assignvarsy,bisomd,     fixedsy,    unfixedsy,   { 81..84 }
       C    1  140                 latticesy,  limitssy,   magneticsy,              { 85..87 }
       C    1  141                 uctrdefsy,  formaldf,   usfunctdf,  indxdf,      { 88..91 }
       C    1  142                 no92,       arraydf,    no94,       no95,        { 92..95 }
       C    1  143                 no96,       no97,       no98,       no99,        { 96..99 }
       C    1  144  
       C    1  145                 { Pseudo instructions follow }
       C    1  146                 includesy,  chainsy,    eofsym,     pragmasy,
       C    1  147                 rcellsy,    ffassignsy, clrdatasy,  macrolibsy,
       C    1  148                 mcallsy,    genspacesy, repeatsy,   ifsy,
       C    1  149                 macrosy,    beginsy,    thensy,     untilsy,
       C    1  150                 endifsy,    endmacsy,   endsy,      elsesy,
       C    1  151                 purgesy,    illegalsy,  errorsy,    wrtmsgsy,
       C    1  152                 displaysy,  replysy,    opensy,     closesy,
       C    1  153                 writesy,    writelnsy,  readsy,
       C    1  154  
       C    1  155                 { Run control statements }
       C    1  156                 runapplsy,  listingsy,  spawnsy,
       C    1  157  
       C    1  158                 { Constant operators }
       C    1  159                 assignop,   andop,      iorop,      notop,
       C    1  160                 concop,     interpop,   substrop,   lengthop,
       C    1  161                 indexop,    nindexop,   stringop,   numberop,
       C    1  162                 definedop,  paramrefop, getenvop,
       C    1  163  
       C    1  164                 { Separator definitions }
       C    1  165                 colonsy,    commasy,    lparsy,     rparsy,
       C    1  166                 brasy,      ketsy,      smcolsy,
       C    1  167  
       C    1  168                 { Parameter definitions }
       C    1  169                 parh,       park,       parl,       parrh,
       C    1  170                 parrk,      parrl,      parstsl,
       C    1  171                 parhx,      parhy,      parhz,
       C    1  172                 parqx,      parqy,      parqz,
       C    1  173                 parhh,      parkk,      parll,
       C    1  174                 parobs,     parsig,     parweig,    parcalc,
       C    1  175                 parfn2,     parfm2,     paripola,   parpola,
  P A S - P. WOLFERS SOFTWARE: V2.1-E OF 31-AUG-2009  RUN THE 10-DEC-2009 AT 15:13:42     PAGE  25
 The Current Source File is "/home/wolfers/Soft/cpsh_kits/MXDV4_src/mxd_dcp_main.pas".

 The Current Compiled Module is "mxd_dcp".

       C    1  176                 parsh,      parsk,      parsl,
       C    1  177                 parlchi2,   parcchi2,   parlmaxf,   parcmaxf,
       C    1  178                 parfnr,     parfni,
       C    1  179                 parfxr,     parfyr,     parfzr,
       C    1  180                 parfxi,     parfyi,     parfzi,
       C    1  181  
       C    1  182                 { Last definition }
       C    1  183                 ndtend
       C    1  184               );
       C    1  185  *)
       C    1  186  
       C    1  187  
       C    1  188  
       C    1  189  
       C    1  190  
       C    1  191  { ******************************************************************** }
       C    1  192  { ***********  Variables to get and parse a SHELL command  *********** }
       C    1  193  { ******************************************************************** }
       C    1  194  
       C    1  195  
       C    1  196  
       C    1  197  
       C    1  198  { ************************************************************************************* }
       C    1  199  { ***  Global Variables of MXD-Data ComPiler environment declared with init values  *** }
       C    1  200  { ************************************************************************************* }
       C    1  201  
       C    1  202  
            1  203  [global]
            1  204  var
            1  205  
            1  206    sy_ival:                     integer;         { INSYMBOL: Last readden integer number }
            1  207    sy_rval:                     mxd_flt;         { INSYMBOL: Last readden floatting number }
            1  208  
            1  209    sy_noexec,                                    { INSYMBOL: To flag the no exec mode }
            1  210    sy_nomacrflg:                boolean;         { INSYMBOL: Flag to disable the mac. parm replace }
            1  211    sy_macro:                    idm_ptr;         { INSYMBOL: Last readen macro symbol pointer }
            1  212  
            1  213    sy_maclst,                                    { INSYMBOL: Macro Expenssion Source Line }
            1  214    sy_string:                str_string;         { INSYMBOL: Last readden string }
            1  215    sy_ident:                 ide_string;         { INSYMBOL: Last readden identifier }
            1  216    sy_cmin,                                      { INSYMBOL: Last readden character in major }
            1  217    sy_ch:                          char;         { INSYMBOL: Last readden character }
            1  218    sy_sym:                      sym_rec;         { INSYMBOL: Symbol found }
            1  219    sy_idenew:                   ide_ptr;         { IDE_NEW:  Pointer to the last created symbol }
            1  220    lastsymb:                     symbol;         { Last symbol in source }
            1  221  
            1  222    idm_space,                                    { Flag for space already out }
            1  223    idm_outmacro:       boolean := false;         { Flag to generate a macro stream }
            1  224  
            1  225    idm_newmac:         idm_apt :=   nil;         { Macro in build }
            1  226    idm_actstk,                                   { Stack pointer of active macro code }
            1  227    idm_tmphde,                                   { Stack pointer of temporary macro parm }
            1  228    idm_defstk:         idm_ptr :=   nil;         { Stack pointer of Defined Macro Identifiers }
            1  229  
            1  230    idm_liblifo:        stq_ptr :=   nil;         { Stack (LiFo) of macro library specifications }
  P A S - P. WOLFERS SOFTWARE: V2.1-E OF 31-AUG-2009  RUN THE 10-DEC-2009 AT 15:13:42     PAGE  26
 The Current Source File is "/home/wolfers/Soft/cpsh_kits/MXDV4_src/mxd_dcp_main.pas".

 The Current Compiled Module is "mxd_dcp".

            1  231  
            1  232    mop_tab:                   mope_tabt;         { Define the macro operator reference lists }
            1  233  
            1  234  
            1  235    keyword_tree:    keyword_ptr :=  nil;         { Keyword definition tree }
            1  236  
            1  237    symc_stk:           symc_ptr :=  nil;         { Symbol context pointer }
            1  238  
            1  239    list_dataflg,                                 { Flag to list of data during data build time }
            1  240    debug_macsrc,                                 { Debug Macro Source }
            1  241    debug_mac,                                    { Debug of macro }
            1  242    debug_sym,                                    { Debug on Input syntax unit flag }
            1  243    debug_exp,                                    { Debug on Expression element flag }
            1  244    debug_dat:          boolean := false;         { Debug on data (for external ressources) }
            1  245  
            1  246    sy_npcd_flg,                                  { To flag the not open pcd file status }
            1  247    sy_init_mod:        boolean :=  true;         { Program init flag mode }
            1  248  
            1  249    disp_tab:                 disp_tabty;         { The Display levels table }
            1  250  
            1  251    curr_disp,                                    { Current top of lex display }
            1  252    curr_idisp,                                   { Display level of founded identifier }
            1  253    curr_lex:                    integer;         { Current identifier lex }
            1  254  
            1  255    str_typ,                                      { Standard string type identifier pointer }
            1  256    int_typ,                                      { Standard integer type identifier pointer }
            1  257    flt_typ,                                      { Standard float type identifier pointer }
            1  258  
            1  259    curr_ide,                                     { Current identifier to search (or nil) }
            1  260    udc_int,                                      { Undeclared Integer }
            1  261    udc_ident:            ide_ptr := nil;         { Undeclared Identifier }
            1  262  
            1  263    furf_hde,
            1  264    furf_lst:            usrf_ptr := nil;         { Final User Referencable Identifier list Header }
            1  265  
            1  266    job_name,                                     { MXD Job Name specification }
            1  267    job_save,                                     { MXD Save file specification }
            1  268    job_title:           ide_ptr :=  nil;         { Title of MXD job string }
            1  269  
            1  270    exp_null,                                     { Null expression record }
            1  271    exp_res:                     exp_rec;         { Current expression }
            1  272  
            1  273    typ_seq_count,                                { Type Identifier Sequence count }
            1  274    ide_seq_count:         unsigned := 0;         { Identifier Sequence count for application }
            1  275  
            1  276    ierr:                        integer;         { General error code }
            1  277  
            1  278    data_mode,                                    { Macro mode flag for insymbol }
            1  279    fatal_error:                 boolean;         { General flag for fatal error }
            1  280  
            1  281    io_winfo,                                     { Wait process out information }
            1  282    io_libpath,                                   { Path to *env.std and *.err files }
            1  283    io_err,                                       { Open File Error variable }
            1  284    io_count,                                     { Array input count identifier pointer }
            1  285    io_eoln,                                      { EOLN flag identifier pointer }
  P A S - P. WOLFERS SOFTWARE: V2.1-E OF 31-AUG-2009  RUN THE 10-DEC-2009 AT 15:13:42     PAGE  27
 The Current Source File is "/home/wolfers/Soft/cpsh_kits/MXDV4_src/mxd_dcp_main.pas".

 The Current Compiled Module is "mxd_dcp".

            1  286    io_eof:                      ide_ptr;         { EOF flag identifer pointer }
            1  287  
            1  288  
            1  289    sym_iof:                   iocnt_tab;         { User text file descriptors }
            1  290  
            1  291    pcd:                            text;         { Statement MXD-P-Code file }
            1  292  
            1  293  
       C    1  294  (*
       C    1  295  label                     MXD_DCP_STOP;         { Label to Exit on fatal error }
       C    1  296  *)
       C    1  297  
       C    1  298  
       C    1  299  
            1  300  begin { MXD_DCP : Main of Data Compiler Code }
       C    1  301    {  *** Initialize the Source/Listing/Error Context ***  }
     1      1  302    DCP_INIT;                                     { Initialize the insymbol module }
            1  303  
            1  304    DCP_LSQ_INIT;                                 { Initialize the Least-Squares specific module }
            1  305  
            1  306    STATELIST( endsy );                           { Execute the statement flow }
            1  307  
            1  308    DCP_LSQ_SUMMARY;                              { Make summary MXD processing }
            1  309  
            1  310    if fatal_error then WRITELN( task_name, ' Stop after a fatal ERROR.' )
            1  311                   else WRITELN
     0      1  312  end MXD_DCP.
            1  313  
