Index: tolsh/tolsh.vfs/lib/tolcomm/rmtps_client.tcl
===================================================================
--- tolsh/tolsh.vfs/lib/tolcomm/rmtps_client.tcl	(revision e213da63173670c9cb474f25653c23462fdd0c62)
+++ tolsh/tolsh.vfs/lib/tolcomm/rmtps_client.tcl	(revision 71d086839b0727dc943218326f9fe7ca6542d5ce)
@@ -10,5 +10,26 @@
 package provide rmtps_client 1.0
 
-package require tlogger
+package require base64
+
+if { [ catch { package require tlogger } ] } {
+  namespace eval tlogger {
+    variable _level "error"
+
+    proc init { svc {logfile ""} } {
+    }
+    
+    proc level { svc l } {
+      variable _level $l
+    }
+
+    proc log { l msg } {
+      variable _level 
+
+      if { $l eq $_level } {
+        puts $msg
+      }
+    }
+  }
+}
 
 ###############################################################################
@@ -159,4 +180,13 @@
 }
 
+proc ask_server_channel { chan request } {
+
+  usado sobre todo para pedir la razon del fallo
+
+  el timeout quizas deba cerrar el channel, esa peticion se cancela
+
+  file channels puedo usarlo para verificar si un socket existe.
+}
+
 ###############################################################################
 #
@@ -270,5 +300,6 @@
   # Answer from server must be an integer value
   #
-  if {$result eq "" || ![string is integer $result]} {
+  if { $result eq "" || ![string is integer $result] ||
+      ![string is boolean $result] } {
     set result -1
   } else {
@@ -358,4 +389,41 @@
 }
 
+
+###############################################################################
+#
+#  ps_runtol -- execute a TOL process on a remote host
+#
+#   Arguments --
+#
+#     host        - computer (remote host) where RmtPS_Server is running
+#     port        - port where the server socket is listening
+#     cmdln_args  - TOL arguments
+#
+#   Return --
+#
+#     PID of the process if cmdline could be executed
+#     0 if the command line could not be executed
+#
+###############################################################################
+proc ::rmtps_client::ps_runtol { host port cmdln_args } {
+
+  log "debug" "enter ps_runtol $host $port $cmdln_args"
+
+  # send request to server
+  #
+  set cmdln64 [ base64::encode -wrapchar "" $cmdln_args ]
+  #set cmdln64 $cmdln_args
+  set result [ask_server $host $port "RUNTOL $cmdln64"]
+  # Make sure that 0 or PID>0 is returned
+  #
+  if {![string is integer $result] || $result<0} {
+    set result 0
+  }
+
+  log "debug" "leave ps_runtol $host $port $cmdln_args : $result"
+
+  set result
+}
+
 ###############################################################################
 #
Index: tolsh/tolsh.vfs/lib/tolcomm/rmtps_client.tol
===================================================================
--- tolsh/tolsh.vfs/lib/tolcomm/rmtps_client.tol	(revision e213da63173670c9cb474f25653c23462fdd0c62)
+++ tolsh/tolsh.vfs/lib/tolcomm/rmtps_client.tol	(revision 71d086839b0727dc943218326f9fe7ca6542d5ce)
@@ -10,6 +10,7 @@
  *  Argumentos:
  *
- *    Host:
- *    Port:
+ *    Host: host que aloja al servidor RMTPS
+ *    
+ *    Port: puerto donde el servidor RMPTS esta escuchando
  *
  *  Resultado:
@@ -37,6 +38,8 @@
  *  Argumentos:
  *
- *    Host:
- *    Port:
+ *    Host: host que aloja al servidor RMTPS
+ *    
+ *    Port: puerto donde el servidor RMPTS esta escuchando
+ *
  *    CmdLine:
  *
@@ -65,7 +68,95 @@
 
 /**
+ *  RemoteTOL -- Invoca un proceso TOL remoto
+ *
+ *  Argumentos:
+ *
+ *    Host: host que aloja al servidor RMTPS
+ *    
+ *    Port: puerto donde el servidor RMPTS esta escuchando
+ *
+ *    Args:
+ *
+ *  Resultado:
+ *
+ *    PID del proceso TOL lanzado o 0 si algun error ha ocurrido
+ *  
+ */
+Real RemoteTOL(Text Host, Real Port, Set Args )
+{
+
+  Text cmd = "::rmtps_client::ps_runtol";
+  Text port = FormatReal(Port, "%.0lf");
+  Text project = Args[ 1 ];
+  Set tolargs = Args[ 2 ];
+  Set cmdln_args = If( project=="", Copy( Empty ),
+                       [[ "-project", project ]] );
+  Set EvalSet( tolargs, Real( Set item ) {
+      Text type = Name( item[ 1 ] );
+      Case( type=="expr", {
+          Set Append( cmdln_args, [[ "-expr", item[ 1 ] ]] );
+          Real 0
+        },
+        type=="file", {
+          Real idx_rel = FindIndexByName( item, "relative" );
+          Set Append( cmdln_args,
+                      If( idx_rel, {
+                          Set [[ "-relative", item[ idx_rel ],
+                                 "-file", item[ 1 ] ]]
+                        }, {
+                          Set [[ "-file", item[ 1 ] ]]
+                        } ) );
+          Real 0
+        } ,
+        1, {
+          Warning( "RemoteTOL: tipo de elemento desconocido '"
+                   + type + "' debe "
+                   "ser 'expr' o 'file'" );
+          Real 0
+        } );
+        Real 0
+    } );
+  Set tcl_args = [[ cmd, host, port ]] << [[ cmdln_args ]];
+  //Set View( tcl_args, "Std" );
+  Set result = Tcl_EvalEx( tcl_args );
+  Real If(result["status"], Eval(result["result"]),{
+      WriteLn("RemoteTOL: "+result["result"],"E");
+      Real 0
+    })
+};
+PutDescription("Ejecuta en proceso TOL remoto. Args es un conjunto con los "
+               "argumentos a pasar a TOL en la linea de comandos.\n"
+               "Los elementos de Args son interpretados por el servidor de "
+               "procesos TOL y se traducen en argumentos de linea de comandos "
+               "al proceso TOL que se invoca. Los argumentos son:\n"
+               "\tText project = nombre del proyecto que se cargara\n"
+               "\tSet tolargs = conjunto de elementos a evaluar.\n"
+               "El conjunto tolargs contiene expresiones TOL o archivos a "
+               "evaluar en la linea de comandos. Cada uno de los "
+               "elementos es un conjunto con los siguientes elementos con "
+               "nombre:\n"
+               "\tText tolargs[1] : contiene la expresion o el nombre del "
+               "\tarchivo a evaluar. El nombre de tolargs[1] debe ser expr o "
+               "\tfile. Si el nombre es expr el valor se considera una "
+               "\texpresion TOL. Si el nombre es file el valor se considera "
+               "\tel nombre de un archivo a evaluar."
+               "\tText relative = nombre de proyecto respecto al cual se "
+               "\tcargara el archivo TOL. Este campo es opcional y solo se "
+               "\tconsidera cuando el tolargs[1] es un archivo. Por omision "
+               "\tel archivo se toma trelativo al argumento project.\n\n"
+               "Retorna el PID del proceso TOL ejecutado o 0 si algun error "
+               "ocurrio durante el intento de ejecucion. "
+               "Necesita que un servidor RmtPS_Server este escuchando en el "
+               "puerto Port del ordenador Host",
+               RemoteTOL);
+
+/**
  *  RemoteAlive -- Verifica, en remoto, si un proceso continua vivo
  *
  *  Argumentos:
+ *
+ *    Host: host que aloja al servidor RMTPS
+ *    
+ *    Port: puerto donde el servidor RMPTS esta escuchando
  *
  *    Host:
@@ -108,4 +199,8 @@
  *  Argumentos:
  *
+ *    Host: host que aloja al servidor RMTPS
+ *    
+ *    Port: puerto donde el servidor RMPTS esta escuchando
+ *
  *    Host:
  *    Port:
