Index: tol/bbasic/sys.cpp
===================================================================
--- tol/bbasic/sys.cpp	(revision 26bc2dd3d53246f6a96081f36659623f26b9bf98)
+++ tol/bbasic/sys.cpp	(revision 3bb22039e6c90bbed3a3c9d77c1aa6b242a4a862)
@@ -980,2 +980,37 @@
 }
 
+
+//--------------------------------------------------------------------
+//Make inactive waiting until they have passed a given number of milliseconds
+void BSys::SleepMilliSeconds(unsigned int milliseconds)
+//--------------------------------------------------------------------
+{
+#ifdef _MSC_VER
+  Sleep(milliseconds);
+#else
+  usleep(milliseconds*1000);
+#endif
+}
+
+//--------------------------------------------------------------------
+//Opens a file and locks it
+//If cannot do it then sleeps and retries again until time is out
+FILE* FOpenAndLock(
+   const char *filename,
+   const char *mode,
+   unsigned int timeOutInMilliseconds,
+   char* errorMessage)
+//--------------------------------------------------------------------
+{
+  FILE* fil=NULL;
+  return(fil);
+}
+
+//--------------------------------------------------------------------
+//Unlocks a file and close it
+i FUnlockAndClose(FILE* file)
+//--------------------------------------------------------------------
+{
+  FILE* fil=NULL;
+  return(fil);
+}
Index: tol/bbasic/tol_bsys.h
===================================================================
--- tol/bbasic/tol_bsys.h	(revision 26bc2dd3d53246f6a96081f36659623f26b9bf98)
+++ tol/bbasic/tol_bsys.h	(revision 3bb22039e6c90bbed3a3c9d77c1aa6b242a4a862)
@@ -157,5 +157,15 @@
   static double	SessionTime();
   static const BDate& SessionInitTime();
-
+  //Make inactive waiting until they have passed a given number of milliseconds
+  static void SleepMilliSeconds(unsigned int milliseconds);
+  //Opens a file and locks it
+  //If cannot do it then sleeps and retries again until time is out
+  static FILE* FOpenAndLock(
+   const char *filename,
+   const char *mode,
+   unsigned int timeOutInMilliseconds=0,
+   char* errorMessage=NULL);
+  //Unlocks a file and close it
+  static void FUnlockAndClose(FILE* file);
 };
 
Index: tol/btol/bgrammar/oprimp.cpp
===================================================================
--- tol/btol/bgrammar/oprimp.cpp	(revision 26bc2dd3d53246f6a96081f36659623f26b9bf98)
+++ tol/btol/bgrammar/oprimp.cpp	(revision 3bb22039e6c90bbed3a3c9d77c1aa6b242a4a862)
@@ -309,9 +309,5 @@
               I2(" (trying again after 10 seconds)",
                  " (reintentando tras 10 segundos)"));
-        #ifdef _MSC_VER
-        Sleep(10000);
-        #else
-        sleep(10);
-        #endif
+        BSys::SleepMilliSeconds(10000);
         dump = fopen(path,"w");
       }
Index: tol/btol/real_type/datgrav.cpp
===================================================================
--- tol/btol/real_type/datgrav.cpp	(revision 26bc2dd3d53246f6a96081f36659623f26b9bf98)
+++ tol/btol/real_type/datgrav.cpp	(revision 3bb22039e6c90bbed3a3c9d77c1aa6b242a4a862)
@@ -2061,7 +2061,10 @@
   I2("(Real seconds)",
      "(Real segundos)"),
-  I2("Sleeps TOL process while the specified time.",
+  I2("Sleeps TOL process while the specified time. Minimum unit is "
+     "millsecond, I.E. 0.001 seconds ",
      "El proceso TOL se queda en estado de espera no activa durante el "
-     "tiempo especificado. El proceso no consumirá CPU en este periodo."),
+     "tiempo especificado. El proceso no consumirá CPU en este periodo. "
+     "La unidad mínima de tiempo es el milisegundo, o sea, 0.001 "
+     "segundos"),
      BOperClassify::Conversion_);
   void BDatSleep::CalcContens()
@@ -2069,9 +2072,5 @@
 {
   contens_ = Dat(Arg(1));
-#ifdef _MSC_VER
-  Sleep((BInt)contens_.Value()*1000);
-#else
-  sleep((BInt)contens_.Value());
-#endif
+  BSys::SleepMilliSeconds((BInt)contens_.Value()*1000);
 }
 
