Шаг 66.
Файлы в muLISP85. Переменные для управления выводом

    На этом шаге мы рассмотрим некоторые переменные, которые помогут управлять выводом.

    Управляющие переменные для управления выводом служат для усиления контроля программ muLISP над выходными символами. Наиболее удобно использовать здесь в качестве переключателей OFF (NIL) или ON (не NIL).

       

  1. Если управляющая переменная ECHO - не NIL и дисковый файл является точечной парой, то символы, переданные в файл, передаются также и на консоль.

        Если ECHO - NIL, то символы не отражаются на консоли.

       

  2. Управляющая переменная LINELENGTH может использоваться для отмены автоматического ограничения длины строки.

        Если LINELENGTH - не NIL, то выходные строки автоматически ограничиваются так, как определено функцией LINELENGTH.

        Если LENGTH - NIL, то все автоматические ограничения на длину строки устраняются. Это особенно удобно в тех случаях, когда ограничения на длину строки нежелательны, т.е. для редактора экрана muSTAR или при пересылке очень большого количества данных в дисковый файл.

       

  3. Если управляющая переменная *PRINT-DOWNCASE* - не NIL, а символ имеет Р-имя, состоящее из прописных букв, пробелов, макро, разграничительных символов, или начинающееся с десятичной цифры, то Р-имя символа разграничивается разграничительными символами при передаче его в текущий выходной поток функциями PRINT и PRIN1.

        Если *PRINT-DOWNCASE* есть NIL, то Р-имена таких символов не разграничиваются.

        Разграничение Р-имен символов с помощью разграничительных символов необходимо для программ, которые генерируют исходные файлы muLISP.

       

  4. Если значение управляющей переменной *PRINT-BASE* - это целое число в интервале 2-36 включительно, то это целое число берется за основу системы счисления при вычислении чисел, передаваемых в текущий выходной поток (COS). В противном случае числа, передаваемые в текущий выходной поток, определяются как десятичные (т.е. основа систеиы счисления - десять). Например:
       $ (SETQ TEN 10)
       10
       $ (SETQ *PRINT-BASE* 16)
       10
       $ TEN
       0A      ; Ten в шестнадцатеричной форме записи
       $ (SETQ *PRINT-BASE* 2)
       10
       $ TEN
       1010    ; Ten в двоичной форме записи
       $ (SETQ *PRINT-BASE* 10)
       10
       $ TEN
       10      ; Ten в десятичной форме записи
    

       

  5. Если управляющая переменная *PRINT-POINT* - неотрицательное целое, то дробные числа высвечиваются на экран с использованием десятичного представления, причем *PRINT-POINT* определяет количество знаков, следующих за десятичной точкой. В противном случае дробные числа записываются с использованием слеша (числитель, "/" и знаменатель).

        Отметим, что значение управляющей переменной *PRINT-POINT* влияет только на выдачу чисел на экран, но не влияет на их точность. Кроме того, числа могут записываться либо с использованием десятичного представления, либо с помощью слеша, независимо от значения *PRINT-POINT*.

        Значение *PRINT-POINT* по умолчанию равно 7. Например:

       $ (SETQ P1 3.1416)          $ (SETQ *PRINT-POINT* 2)
       3.1416                      2
       $ (SETQ *PRINT-POINT* NIL)  $ P1
       NIL                         3.14
       $ P1                        $ (SETQ *PRINT-POINT* 7)
       3927/1250                   7
                                   $ P1
                                   3.1416
    

       

  6. Если управляющая переменная *PRINT-ECHO* - не NIL, то символы, передаваемые на консоль, передаются также принтеру системы. Если *PRINT-ECHO* - NIL, то печать не выполняется. Примеры:
       $ (SETQ *PRINTER-ECHO* T)
                     ; включен вывод на принтер
       $ (SETQ *PRINTER-ECHO* NIL)
                     ; отключен вывод на принтер
    

       

  7. Если управляющая переменная *PRINT-ESCAPE* - не NIL, а символ имеет Р-имя, состоящее из прописных букв, пробелов или макро, или разграничительных символов), или начинающееся с десятичной цифры, то это Р-имя символа ограничивается разграничительными символами при передаче его в текущий выходной поток (COS) функциями PRINT и PRIN1. Если *PRINT-ESCAPE* есть NIL, то Р-имена таких символов не разграничиваются.

        Разграничение Р-имен таких символов с помощью разграничительных символов необходимо для программ, которые генерируют исходные файлы muLISP.

    Со следующего шага мы начнем рассматривать реализацию инкапсулированных типов данных.




Предыдущий шаг Содержание Следующий шаг