  P A S - P. WOLFERS SOFTWARE: V2.1-E OF 31-AUG-2009  RUN THE 07-DEC-2009 AT 13:16:18     PAGE   1
 The Current Source File is "/home/wolfers/Soft/cpsh_kits/MXDV4_src/mxd_dcp_builtin.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 07-DEC-2009 AT 13:16:18     PAGE   2
 The Current Source File is "/home/wolfers/Soft/cpsh_kits/MXDV4_src/mxd_dcp_builtin.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  Buitin Entries   Module                  *
       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  
       C    1   97  
            1   98  module MXD_DCP_BUILTIN;
            1   99  
            1  100    %include        'MXDSRC:mxd_dcp_env';         { Load the MXD data Compiler Environment }
            1  101  
            1  102  
            1  103  
            1  104  
            1  105  [global]
            1  106  procedure EXEC_BUILTIN( fnc: std_fnc; npa: integer );
       C    1  107  { To perform the builtin functions }
            1  108  const
            1  109    mdnam = 'BLTF';
            1  110  
  P A S - P. WOLFERS SOFTWARE: V2.1-E OF 31-AUG-2009  RUN THE 07-DEC-2009 AT 13:16:18     PAGE   3
 The Current Source File is "/home/wolfers/Soft/cpsh_kits/MXDV4_src/mxd_dcp_builtin.pas".

 The Current Compiled Module is "P_exec_builtin".

       C    1  111    { *** Array operator definitions *** }
       C    1  112  
            1  113  var
            1  114    iv, i, j, k, l, r:           integer;
            1  115    rv, sg:                      mxd_flt;
            1  116    bf, bs:                      boolean;
            1  117    st, ss:                   str_string;
            1  118    ftst:                           text;
            1  119    rec, rec1:                   exp_rec;
            1  120    typ:                        typ_form;
            1  121    arf:                        dcp_oper;
            1  122    ip:                          ide_ptr;
            1  123    ch, cc:                         char;
            1  124    imd, jmd:                 flags_file;
            1  125  
            1  126  begin
       C    1  127    { The parameters are put in the stack }
     1      1  128    with sy_sym do
            1  129    case fnc of
       C    1  130  (*
       C    1  131  *)
            1  132      std_filespc: begin
     2      1  133                    if npa > 1 then i := POP_INTEXPR( 1 ) else i := 0;
            1  134                    POP_STREXPR( ss );
            1  135                    imd := IN_FILEMODE( i );
            1  136                    if SET_FILE_SPECIFICATION( st, ss, imd ) then j := 0
            1  137                                                             else j := 121;
            1  138                    io_err^.int := j;
            1  139                    EXP_PUTSTR( st )
     1      1  140                  end;
            1  141  
            1  142      std_string: begin
     2      1  143                    if npa > 2 then j := POP_INTEXPR( 0 ) else j := 0;
            1  144                    if npa > 1 then i := POP_INTEXPR( 0 ) else i := 0;
            1  145                    POP_NUMEXPR( bf, iv, rv, sg );
            1  146                    if bf then WRITEV( st, rv:i:j )
            1  147                          else WRITEV( st, iv:i:j );
            1  148                    EXP_PUTSTR( st )
     1      1  149                  end;
            1  150  
            1  151      std_substr: begin
     2      1  152                    if npa > 2 then j := POP_INTEXPR( 0 ) else j := 0;
            1  153                    if npa > 1 then i := POP_INTEXPR( 0 ) else i := 0;
            1  154                    POP_STREXPR( st );
            1  155                    EXP_PUTSTR( SUBSTR( st, i, j ) )
     1      1  156                  end;
            1  157  
            1  158      std_nindex: begin
     2      1  159                    if npa > 2 then i := POP_INTEXPR( 0 )
            1  160                               else i := 1;
            1  161                    POP_STREXPR( ss );
            1  162                    POP_STREXPR( st );
            1  163                    EXP_PUTINT( INDEX( st, ss, i ) )
     1      1  164                  end;
            1  165  
  P A S - P. WOLFERS SOFTWARE: V2.1-E OF 31-AUG-2009  RUN THE 07-DEC-2009 AT 13:16:18     PAGE   4
 The Current Source File is "/home/wolfers/Soft/cpsh_kits/MXDV4_src/mxd_dcp_builtin.pas".

 The Current Compiled Module is "P_exec_builtin".

            1  166      std_slength: begin
     2      1  167                    POP_STREXPR( st );
            1  168                    EXP_PUTINT( st.length )
     1      1  169                  end;
            1  170  
            1  171      std_setcase: begin
     2      1  172                    POP_STREXPR( st );
            1  173                    if npa > 1 then i := POP_INTEXPR( 0 ) else i := 0;
            1  174                    if i > 0 then { in maj }
            1  175                      for ii := i to st.length do
            1  176                      begin
     3      1  177                        if (st[ii] >= 'a') and (st[ii] <= 'z') then
            1  178                                       st[ii] := CHR( ORD( st[ii] ) - 32 )
     2      1  179                      end
            1  180                    else { in min }
            1  181                      for ii := i to st.length do
            1  182                      begin
     3      1  183                        if (st[ii] >= 'A') and (st[ii] <= 'Z') then
            1  184                                       st[ii] := CHR( ORD( st[ii] ) + 32 )
     2      1  185                      end;
            1  186                    EXP_PUTSTR( st )
     1      1  187                  end;
            1  188  
            1  189      std_checkch: begin
     2      1  190                    if npa > 2 then k := POP_INTEXPR( 0 )
            1  191                               else k := 0;
            1  192                    POP_STREXPR( ss );
            1  193                    POP_STREXPR( st );
            1  194                    iv := 0;
            1  195                    i  := 1;
            1  196                    while (i <= st.length) and (iv = 0) do
            1  197                    begin
     3      1  198                      ch := st[i];
            1  199                      if k > 0 then
            1  200                        if (ch >='A') and (ch <= 'Z') then ch := CHR( ORD( ch ) + 32 );
            1  201                      j := 1;
            1  202                      while (j <= ss.length) and (iv = 0) do
            1  203                      begin
     4      1  204                        cc := ss[j];
            1  205                        if k > 0 then
            1  206                          if (cc >='A') and (cc <= 'Z') then cc := CHR( ORD( cc ) + 32 );
            1  207                        if cc = ch then begin  iv := j; if iv = 0 then iv := -1  end;
            1  208                        j := j + 1
     3      1  209                      end;
            1  210                      if iv = 0 then i := i + 1
     2      1  211                    end;
            1  212                    EXP_PUTINT( iv )
     1      1  213                  end;
            1  214  
            1  215      std_checknst: begin
     2      1  216                    POP_STREXPR( st );
            1  217                    EXP_PUTINT( ORD( USR_NUMERIC_STRING( st ) ) )
     1      1  218                  end;
            1  219  
            1  220      std_selement: begin
  P A S - P. WOLFERS SOFTWARE: V2.1-E OF 31-AUG-2009  RUN THE 07-DEC-2009 AT 13:16:18     PAGE   5
 The Current Source File is "/home/wolfers/Soft/cpsh_kits/MXDV4_src/mxd_dcp_builtin.pas".

 The Current Compiled Module is "P_exec_builtin".

     2      1  221                    ch := ' '; cc := '"';
            1  222                    if npa > 4 then bs := POP_INTEXPR( 0 ) > 0
            1  223                               else bs := false;
            1  224                    if npa > 3 then
            1  225                    begin  POP_STREXPR( ss ); if ss.length > 0 then cc := ss[1]  end;
            1  226                    if npa > 2 then
            1  227                    begin  POP_STREXPR( ss ); if ss.length > 0 then ch := ss[1]  end;
            1  228                    if npa > 1 then iv := POP_INTEXPR( 1 ) else iv := 1;
            1  229                    POP_STREXPR( ss );
            1  230                    USR_S_ELEMENT( st, ss, iv, ch, cc, bs );
            1  231                    EXP_PUTSTR( st )
     1      1  232                  end;
            1  233  
            1  234      std_rmcomment: begin
     2      1  235                    cc := '"'; ch := '!';
            1  236                    if npa > 2 then
            1  237                    begin  POP_STREXPR( ss ); if ss.length > 0 then cc := ss[1]  end;
            1  238                    if npa > 1 then
            1  239                    begin  POP_STREXPR( ss ); if ss.length > 0 then ch := ss[1]  end;
            1  240                    POP_STREXPR( ss );
            1  241                    USR_SUPPRESS_COMMENT( ss, st, ch, cc );
            1  242                    EXP_PUTSTR( st )
     1      1  243                  end;
            1  244  
            1  245      std_id_replace: begin
     2      1  246                    POP_STREXPR( ss );
            1  247                    if ss.length > 0 then ch := ss[1]
            1  248                                     else ch := '"';
            1  249                    POP_STREXPR( ss );
            1  250                    USR_IDE_SUBSTITUTE( ss, st, ch );
            1  251                    EXP_PUTSTR( st )
     1      1  252                  end;
            1  253  
            1  254      std_getenv: begin
     2      1  255                    POP_STREXPR( st );
            1  256                    i := GET_LOGICAL( ss, st );
            1  257                    if i <> 0 then ss := '';
            1  258                    EXP_PUTSTR( ss )
     1      1  259                  end;
            1  260  
            1  261      std_setenv: begin
     2      1  262                    if npa > 1 then POP_STREXPR( ss )
            1  263                               else ss := '';
            1  264                    POP_STREXPR( st );
            1  265                    EXP_PUTINT( ORD( SET_LOGICAL( st, ss ) = 0 ) )
     1      1  266                  end;
            1  267  
            1  268  
            1  269      std_getpath: begin
     2      1  270                    ch := ':';
            1  271                    if npa > 2 then
            1  272                    begin
     3      1  273                      POP_STREXPR( ss );
            1  274                      if ss.length > 0 then ch := ss[1]
     2      1  275                    end;
  P A S - P. WOLFERS SOFTWARE: V2.1-E OF 31-AUG-2009  RUN THE 07-DEC-2009 AT 13:16:18     PAGE   6
 The Current Source File is "/home/wolfers/Soft/cpsh_kits/MXDV4_src/mxd_dcp_builtin.pas".

 The Current Compiled Module is "P_exec_builtin".

            1  276                    POP_STREXPR( st );           { Get the logical name string }
            1  277                    POP_EXP_REFER( rec );        { Get the string array reference }
            1  278                    i := -1;                     { Assume bad array error until shown otherwise }
            1  279                    if rec.exp_form <> form_tabstr then SRC_ERROR( mdnam, 999, e_severe )
            1  280                                                   else i := USR_GETPATH( ch, st, rec.exp_aas^ );
            1  281                    EXP_PUTINT( i )
     1      1  282                  end;
            1  283  
            1  284      std_setpath: begin
     2      1  285                    if npa > 2 then i := POP_INTEXPR( 0 )
            1  286                               else i := 0;
            1  287                    POP_STREXPR( st );
            1  288                    POP_EXP_REFER( rec );
            1  289                    i := -1;                     { Assume bad array error until shown otherwise }
            1  290                    if rec.exp_form <> form_tabstr then SRC_ERROR( mdnam, 999, e_severe )
            1  291                                                   else i := USR_SETPATH( st, i, rec.exp_aas^ );
            1  292                    EXP_PUTINT( i )
     1      1  293                  end;
            1  294  
            1  295      std_spawn:  begin
     2      1  296                    if npa > 0 then POP_STREXPR( st ) else st := '';
            1  297                    EXP_PUTINT( ORD( SYS_SPAWN( st ) ) )
     1      1  298                  end;
            1  299  
            1  300      std_run:    begin
     2      1  301                    if npa > 1 then i := POP_INTEXPR( 0 ) else i := 0;
            1  302                    POP_STREXPR( st );
            1  303                    RUN_PROCESS( '', st, i );
            1  304                    EXP_PUTINT( -1 )
     1      1  305                  end;
            1  306  
            1  307      std_exec:   begin
     2      1  308                    if npa > 1 then i := POP_INTEXPR( 0 ) else i := 0;
            1  309                    POP_STREXPR( st );
            1  310                    j := CREATE_PROCESS( '', st, i );
            1  311                    EXP_PUTINT( j )
     1      1  312                  end;
            1  313  
            1  314      std_wait:   EXP_PUTINT( WAIT_PROCESS( io_winfo^.int, POP_INTEXPR( 0 ) ) );
            1  315  
            1  316      std_exit:   begin
     2      1  317                    if npa > 1 then
            1  318                    begin
     3      1  319                      POP_STREXPR( st );
            1  320                      WRITELN( ' MXD Exit with the message : ', st )
     2      1  321                    end;
            1  322                    if npa > 0 then i := POP_INTEXPR( 0 )
            1  323                               else i := 1;
            1  324                     PASCAL_EXIT( i )
     1      1  325                  end;
            1  326  
            1  327      std_time:   begin  TIME( st ); EXP_PUTSTR( st )  end;
            1  328      std_date:   begin  DATE( st ); EXP_PUTSTR( st )  end;
            1  329      std_dfdir:  EXP_PUTSTR( GET_DEF_DIR );
            1  330  
  P A S - P. WOLFERS SOFTWARE: V2.1-E OF 31-AUG-2009  RUN THE 07-DEC-2009 AT 13:16:18     PAGE   7
 The Current Source File is "/home/wolfers/Soft/cpsh_kits/MXDV4_src/mxd_dcp_builtin.pas".

 The Current Compiled Module is "P_exec_builtin".

            1  331      std_chdir:  begin
     2      1  332                    if npa > 1 then i := POP_INTEXPR( 1 ) else i := 0;
            1  333                    POP_STREXPR( st );
            1  334                    imd := IN_FILEMODE( i );
            1  335                    EXP_PUTINT( ORD( CHANGE_DIRECTORY( st, imd ) ) )
     1      1  336                  end;
            1  337  
            1  338      std_f_exist: begin
     2      1  339                    if npa > 1 then i := POP_INTEXPR( 4 ) else i := 4; { Read access }
            1  340                    POP_STREXPR( st );
            1  341                    if FILE_ACCESS_CHECK( st, i, [case_ena_file] ) then EXP_PUTINT( 1 )
            1  342                                                                   else EXP_PUTINT( 0 )
     1      1  343                  end;
            1  344  
            1  345      std_f_delete: begin
     2      1  346                    if npa > 1 then i := POP_INTEXPR( 1 ) else i := 0;
            1  347                    POP_STREXPR( st );
            1  348                    imd := IN_FILEMODE( i );
            1  349                    if FILE_REMOVE( st, imd ) then EXP_PUTINT( 1 )
            1  350                                              else EXP_PUTINT( 0 )
     1      1  351                  end;
            1  352  
            1  353      std_f_rename: begin
     2      1  354                    if npa > 3 then j := POP_INTEXPR( 1 ) else j := 0;
            1  355                    jmd := IN_FILEMODE( j );
            1  356                    if npa > 2 then i := POP_INTEXPR( 1 ) else i := 0;
            1  357                    imd := IN_FILEMODE( i );
            1  358                    POP_STREXPR( ss );
            1  359                    POP_STREXPR( st );
            1  360                    if FILE_RENAME( st, ss, imd, jmd ) then EXP_PUTINT( 1 )
            1  361                                                       else EXP_PUTINT( 0 )
     1      1  362                  end;
            1  363  
            1  364  
            1  365      std_ardim:  begin { Get an array dimension }
     2      1  366                    if npa > 1 then j := POP_INTEXPR( 0 ) else j := 0;
            1  367                    POP_EXP_REFER( rec );
            1  368                    i := -1;
            1  369                    with rec do
            1  370                    if (j > 0) and (exp_asr <> nil) then
            1  371                    begin
     3      1  372                      repeat
     4      1  373                        i := exp_asr^.asr_siz;
            1  374                        exp_asr := exp_asr^.asr_sub;
            1  375                        j := j - 1
     3      1  376                      until (exp_asr = nil) or (j <= 0);
     2      1  377                    end
            1  378                    else i := exp_edim;
            1  379                    EXP_PUTINT( i )
     1      1  380                  end;
            1  381  
            1  382      std_arsearch:
            1  383                  with rec do
            1  384                  begin { Search an element in a one dimension array }
     2      1  385                    if npa > 2 then j := POP_INTEXPR( 0 ) else j := 0;
  P A S - P. WOLFERS SOFTWARE: V2.1-E OF 31-AUG-2009  RUN THE 07-DEC-2009 AT 13:16:18     PAGE   8
 The Current Source File is "/home/wolfers/Soft/cpsh_kits/MXDV4_src/mxd_dcp_builtin.pas".

 The Current Compiled Module is "P_exec_builtin".

            1  386                    if j > 0 then j := 1 else if j < 0 then j := -1;
            1  387                    typ := EXP_GETKINDS( 1 );
       C    1  388                    { To following the type of array }
            1  389                    case typ of
            1  390                      form_tabint: iv := POP_INTEXPR( 0 );
            1  391                      form_tabflt: rv := POP_FLTEXPR( 0.0 );
            1  392                      form_tabstr: POP_STREXPR( st );
            1  393                    otherwise
     3      1  394                      SRC_ERROR( mdnam, 113, e_error )
     2      1  395                    end;
       C    1  396                    { Get the array reference }
            1  397                    POP_EXP_REFER( rec );
            1  398                    r := 0;
            1  399                    i := 0;
            1  400                    if exp_asr <> nil then
            1  401                    with exp_asr^ do
            1  402                    if asr_sub = nil then
            1  403                    begin
     3      1  404                      i := exp_shift;
            1  405                      l := exp_edim + exp_shift - 1;
            1  406                      case exp_form of
            1  407                        form_tabint:
            1  408                          if exp_aai <> nil then
            1  409                          with exp_aai^ do
            1  410                          repeat
     4      1  411                            case j of
            1  412                             -1: if ide_itb[i] < iv then r := i;
            1  413                              0: if ide_itb[i] = iv then r := i;
            1  414                              1: if ide_itb[i] > iv then r := i;
            1  415                            otherwise
            1  416                            end;
            1  417                          exit if r <> 0;
            1  418                            i := i + 1;
     3      1  419                          until i > l;
            1  420  
            1  421                        form_tabflt:
            1  422                          if exp_aaf <> nil then
            1  423                          with exp_aaf^ do
            1  424                          repeat
     4      1  425                            case j of
            1  426                             -1: if ide_ftb[i] < rv then r := i;
            1  427                              0: if ide_ftb[i] = rv then r := i;
            1  428                              1: if ide_ftb[i] > rv then r := i;
            1  429                            otherwise
            1  430                            end;
            1  431                          exit if r <> 0;
            1  432                            i := i + 1;
     3      1  433                          until i > l;
            1  434  
            1  435                        form_tabstr:
            1  436                          if exp_aas <> nil then
            1  437                          with exp_aas^ do
            1  438                          repeat
     4      1  439                            if ide_stb[i] = nil then
            1  440                              if st.length = 0 then k :=  0
  P A S - P. WOLFERS SOFTWARE: V2.1-E OF 31-AUG-2009  RUN THE 07-DEC-2009 AT 13:16:18     PAGE   9
 The Current Source File is "/home/wolfers/Soft/cpsh_kits/MXDV4_src/mxd_dcp_builtin.pas".

 The Current Compiled Module is "P_exec_builtin".

            1  441                                               else k := -1
            1  442                            else
            1  443                              k := STR_MATCH( ide_stb[i]^, st );
            1  444                            case j of
            1  445                             -1: if k < 0 then r := i;
            1  446                              0: if k = 0 then r := i;
            1  447                              1: if k > 0 then r := i;
            1  448                            otherwise
            1  449                            end;
            1  450                          exit if r <> 0;
            1  451                            i := i + 1;
     3      1  452                          until i > l;
            1  453  
            1  454                      otherwise
            1  455                      end
     2      1  456                    end;
            1  457                    EXP_PUTINT( r )
     1      1  458                  end;
            1  459  
       C    1  460  (*
       C    1  461      std_chardim: begin
       C    1  462                    EMODIF_ARRAY( npa );
       C    1  463                    EXP_PUTINT( 0 )
       C    1  464                  end;
       C    1  465  (*
       C    1  466      std_aradd, std_arsub, std_armul, std_ardiv:
       C    1  467                  begin
       C    1  468                    case fnc of
       C    1  469                      std_aradd: arf := add_op;
       C    1  470                      std_arsub: arf := sub_op;
       C    1  471                      std_armul: arf := mul_op;
       C    1  472                      std_ardiv: arf := div_op;
       C    1  473                    otherwise
       C    1  474                    end;
       C    1  475                    POP_EXPRESSION;
       C    1  476                    rec1 := exp_res;
       C    1  477                    POP_EXP_REFER( rec );
       C    1  478                    i := 0; { Assume no error until shown otherwise }
       C    1  479                    with rec do
       C    1  480                    begin
       C    1  481                      case exp_form of
       C    1  482                        form_tabint: { Integer Array Destination }
       C    1  483                          if exp_aai <> nil then
       C    1  484                          case rec1.exp_form of
       C    1  485                            form_valint: ARRSCA_II_OPE( arf, rec1.exp_int, rec );
       C    1  486  
       C    1  487                            form_valflt:
       C    1  488                              ARRSCA_II_OPE( arf, ROUND( rec1.exp_flt ), rec );
       C    1  489  
       C    1  490                            form_telint:
       C    1  491                              if rec1.exp_aai <> nil then
       C    1  492                              with rec1.exp_aai^ do
       C    1  493                                ARRSCA_II_OPE( arf, ide_itb[exp_shift], rec );
       C    1  494  
       C    1  495                            form_telflt:
  P A S - P. WOLFERS SOFTWARE: V2.1-E OF 31-AUG-2009  RUN THE 07-DEC-2009 AT 13:16:18     PAGE  10
 The Current Source File is "/home/wolfers/Soft/cpsh_kits/MXDV4_src/mxd_dcp_builtin.pas".

 The Current Compiled Module is "P_exec_builtin".

       C    1  496                              if rec1.exp_aaf <> nil then
       C    1  497                              with rec1.exp_aaf^ do
       C    1  498                                ARRSCA_II_OPE( arf,
       C    1  499                                               ROUND( ide_ftb[exp_shift] ), rec );
       C    1  500  
       C    1  501                            form_tabint: ARRAY_II_OPE( arf, rec1, rec );
       C    1  502  
       C    1  503                            form_tabflt: ARRAY_IF_OPE( arf, rec1, rec );
       C    1  504  
       C    1  505                          otherwise
       C    1  506                          end;
       C    1  507  
       C    1  508                        form_tabflt: { Floatting Array Destination }
       C    1  509                          case rec1.exp_form of
       C    1  510                            form_valint:
       C    1  511                              ARRSCA_FF_OPE( arf, MXD_FLT( rec1.exp_int ), 0.0, rec );
       C    1  512  
       C    1  513                            form_valflt: ARRSCA_FF_OPE( arf, rec1.exp_flt, rec1.exp_sig, rec );
       C    1  514  
       C    1  515                            form_telint:
       C    1  516                              if rec1.exp_aai <> nil then
       C    1  517                              with rec1.exp_aai^ do
       C    1  518                                ARRSCA_FF_OPE( arf,
       C    1  519                                               MXD_FLT( ide_itb[exp_shift]), 0.0, rec );
       C    1  520  
       C    1  521                            form_telflt:
       C    1  522                              if rec1.exp_aaf <> nil then
       C    1  523                              with rec1.exp_aaf^ do
       C    1  524                                if rec1.exp_asg <> nil then ARRSCA_FF_OPE( arf, ide_ftb[exp_shift], rec1.exp_asg^.
                    ide_ftb[exp_shift], rec )
       C    1  525                                                       else ARRSCA_FF_OPE( arf, ide_ftb[exp_shift], 0.0, rec );
       C    1  526  
       C    1  527                            form_tabint: ARRAY_FI_OPE( arf, rec1, rec );
       C    1  528  
       C    1  529                            form_tabflt: ARRAY_FF_OPE( arf, rec1, rec );
       C    1  530                          otherwise
       C    1  531                            i := -1
       C    1  532                          end;
       C    1  533                      otherwise
       C    1  534                        i := -1
       C    1  535                      end;
       C    1  536                      if i <> 0 then SRC_ERROR( mdnam, 115, e_severe )
       C    1  537                    end;
       C    1  538                    EXP_PUTINT( 0 )
       C    1  539                  end;
       C    1  540  *)
       C    1  541  
            1  542    otherwise
     2      1  543      SRC_ERROR( mdnam, 901, e_severe )
     1      1  544    end
     0      1  545  end EXEC_BUILTIN;
            1  546  
            1  547  
            1  548  end MXD_DCP_BUILTIN.
            1  549  
  P A S - P. WOLFERS SOFTWARE: V2.1-E OF 31-AUG-2009  RUN THE 07-DEC-2009 AT 13:16:18     PAGE  11
 The Current Source File is "/home/wolfers/Soft/cpsh_kits/MXDV4_src/mxd_dcp_builtin.pas".

 The Current Compiled Module is "mxd_dcp_builtin".

            1  550  
