' This is an example of how you can write your own PRINTF in Rapid-Q
' If you're familiar with C, then this can be an invaluable tool

$APPTYPE CONSOLE

SUBI PRINTF (...)
  N = 1   ' Number count
  M = 2   ' String count

  FOR I = 1 TO LEN(ParamStr$(1))
    SELECT CASE MID$(ParamStr$(1), I, 1)
      CASE "%"
        I = I + 1
        SELECT CASE LCASE$(MID$(ParamStr$(1), I, 1))
          CASE "d"
            PRINT INT(ParamVal(N));      ' Use this to print number
            N = N + 1
          CASE "f"                       ' Float
            PRINT ParamVal(N);
            N = N + 1
          CASE IS = "l" AND LCASE$(MID$(ParamStr$(1), I+1, 1)) = "d"
            PRINT INT(ParamVal(N));
            N = N + 1
            I = I + 1
          CASE "s"
            PRINT ParamStr$(M);          ' Strings stored here
            M = M + 1
          CASE ELSE
            PRINT MID$(ParamStr$(1), I-1, 2);        
        END SELECT
      CASE "\"
        I = I + 1
        SELECT CASE LCASE$(MID$(ParamStr$(1), I, 1))
          CASE "n"
            PRINT
          CASE ELSE
            PRINT MID$(ParamStr$(1), I-1, 2);        
        END SELECT
      CASE ELSE
        PRINT MID$(ParamStr$(1), I, 1);
    END SELECT
  NEXT
END SUBI



CLS
PRINTF("Number: %d, string: %s and this is %5 undefined.\n", 123, "hello")
PRINTF "Num 1: %ld, Num 2: %f, Num 3: %d, Num 4: %d\n", 2^10-30/5*10, 498.234, 91, 100
