Выровнять значения столбцов в SQR

Я пытаюсь выровнять значения столбцов, но они имеют разную длину. Я не могу просто использовать Print '123' (+1, 9) а потом Print '123456' (+1, 9) потому что это будет выглядеть примерно так:

123456790123456790123456790123456790123456790123456790 <- Ignore this line
       123
       123456

Обратите внимание, что большинство правых чисел не выровнены друг с другом. Я хочу, чтобы вывод был таким:

123456790123456790123456790123456790123456790123456790 <- Ignore this line
     123
  123456

Поэтому я хотел бы прекратить печать по определенному индексу. Как бы я достиг этого, используя SQR?

Я старался Print '123' (+1, 9) а также Print '1234' (+1, 9) но это дает неправильные результаты.

2 ответа

Решение

Я не знаком с SQR, но вот предложение: поскольку SQR поддерживает функцию LPAD (см. Строковые функции):

Добавляет source_value слева в длину length_value, используя pad_value, и возвращает результат.

Синтаксис: dst_var = lpad(source_value, length_value, pad_value)

Вы можете применить его к строкам, которые вы печатаете. Например (еще раз: обратите внимание, что я не знаю SQR, вам может потребоваться настроить его):

Print lpad('123', 6, ' ') (+1, 9)

что сделало бы ...123 (каждая точка представляет собой пробел).

Почему LPAD длиной до 6 символов? Ну, потому что ваша другая строка ('123456') имеет длину 6 символов. Измените это, если необходимо.

Прежде всего, похоже, что вы хотите завершить значение в столбце 9. Функция lPad не будет работать для этого, потому что (+1,9) говорит START в столбце 9. Кроме того, вы не можете поместить функцию lPad в печать заявления.

Вместо этого используйте параметр Edit печати, начиная со столбца 1:

Print 123    (+1,1) edit 999999999
Print 123456 (+1,1) edit 999999999

Теперь это прекрасно работает для чисел, но также хорошо работает для строк, если они содержат числа. Так что это тоже работает:

Print '123'    (+1,1) edit 999999999
Print '123456' (+1,1) edit 999999999

Я проверил эти утверждения в SQR, и они работают, однако, это приведет к ужасным результатам:

Print 'ABC'    (+1,1) edit 999999999
Print 'ABCDEF' (+1,1) edit 999999999

Если вам нужно печатать строки, а не числа, используйте команду lPad для форматирования переменной:

Let $String = lPad($String, 9, ' ')
Print $String (+1,1) ! <--- start at column 1
Другие вопросы по тегам