title: System.String:Format limited to 3 input in progress 4gl?
body: <p>Is the function System.String:Format is limited to 3 input?</p>
  
  <p>When I do:</p>
  
  <pre><code>DISPLAY System.String:Format("~{0~} ~{1~} ~{2~}", 0, 1, 2).
  </code></pre>
  
  <p>Everything is fine.</p>
  
  <p>But when I do: </p>
  
  <pre><code>DISPLAY System.String:Format("~{0~} ~{1~} ~{2~} ~{3~}", 0, 1, 2, 3).
  </code></pre>
  
  <p>I get a compile error:</p>
  
  <pre><code>Impossible to find a method 'Format' with a compatible signature  from class 'System.String'. (14457)
  </code></pre>
  
  <p>I found a workaround that looks like:</p>
  
  <pre><code>System.String:Format("~{0~} ~{1~} ~{2~}", 0, 1, System.String:Format("~{0~} ~{1~} ~{2~}", 2, 3, System.String:Format("~{0~} ~{1~} ~{2~}", 4, 5, 6))).
  </code></pre>
  
  <p>But I do not found it elegant.</p>
  
  <p>Thank you!
  Sebastien</p>
  
  <p>UPDATE:</p>
  
  <p>Here an example where format is used to format the datetime, leading zero and round decimal. </p>
  
  <pre><code>/* constants */
  DEFINE VARIABLE MSG_WELCOME AS CHARACTER NO-UNDO INITIAL "Hello user  ~{0~:d6}, your balance account is ~{1~:n2} in date of ~{2~:yyyy-MM-dd}.".
  
  /* declaration */
  DEFINE VARIABLE iUserId AS INTEGER NO-UNDO.
  DEFINE VARIABLE dtTransaction AS DATETIME NO-UNDO.
  DEFINE VARIABLE dBalance AS DECIMAL NO-UNDO.
  DEFINE VARIABLE strMessage AS CHARACTER NO-UNDO.
  
  /* initialization */
  iUserId = 106.
  dtTransaction = DATETIME(10, 31, 2014, 11, 22, 33).
  dBalance = 1234.56789.
  strMessage = System.String:Format(MSG_WELCOME, iUserId, dBalance, dtTransaction).
  
  /* output */
  MESSAGE strMessage VIEW-AS ALERT-BOX INFO BUTTONS OK.
  </code></pre>
  
  <p>OUTPUT:
      Hello user 000106, your balance account is 1234,57 in date of 2014-10-31.</p>