title: Nesting kernel functions for opencl
body: <p>I have a fairly complex mql5 for-loop code set that I need to run via opencl. What this will mean is I need to be able to have some kernel functions calling others. I have therefore experimented with this simple code and it fails to create a program (error 5105) when I call another function through it. Why?</p>
  
  <pre><code>               const string _cl_source=
                  "                                                      \r\n"
                  "                                                      \r\n"
                  "__kernel void Tester()                                \r\n"
                  "{                                                     \r\n"
                  "                                                      \r\n"
                  "  float _margin = 10f;                                 \r\n"
                  "  float _balance = 10f;                                \r\n"
                  "  float _equity = 10f;                                 \r\n"
                  "  float _openprice = 10f;                              \r\n"
                  "  float _closeprice = 10f;                             \r\n"
                  "  float _position = 10f;                               \r\n"
                  "                                                      \r\n"
  /*fails on adding this line*/"  CouponReset(_margin,_balance,_equity,_openprice,_closeprice,_position);\r\n"
                  "                                                      \r\n"
                  "}                                                     \r\n"
                  "                                                      \r\n"
                  "                                                      \r\n"
                  "__kernel void CouponReset(float margin,                     \r\n"
                  "                   float balance,                      \r\n"
                  "                   float equity,                      \r\n"
                  "                   float openprice,                      \r\n"
                  "                   float closeprice,                     \r\n"
                  "                   float position)               \r\n"
                  "{                                                     \r\n"
                  "  position = 0f;                         \r\n"
                  "  openprice = 0f;                         \r\n"
                  "  closeprice = 0f;                         \r\n"
                  "  balance  = equity;                         \r\n"
                  "  margin  = balance;                         \r\n"
                  "                                                      \r\n"
                  "}                                                     \r\n"
                  "                                                      \r\n";
  </code></pre>