РУКОВОДСВО ПОЛЬЗОВАТЕЛЯ

Linux Edition. Revision B
перевод Балуева А. Н.

Оглавление

  • Приложение B. Параметры времени исполнения

    Приложение B. Параметры времени исполнения

    В начало страницы

    Поведение исполнительной библиотеки LF95 может модифицироваться во время исполнения с помощью совокупности команд, которые вызываются через командную строку при запуске исполнимой программы или посредством переменных окружения оболочки. Их действия могут изменить поведение операций ввода/вывода, выдачу диагностик и операции с плавающей точкой.

    Параметры времени исполнения, задаваемые из командной строки, указываются посредством последовательностей символов, однозначно идентифицирующих параметры времени исполнения, так что их можно отличить от обычных аргументов в командной строке, используемых программой пользователя. В текущей версии компилятора значения, полученные через функции GETCL(), GETPARM() и GETARG() могут включать параметры времени исполнения наряду с определенными пользователем аргументами из командной строки. Это может создать затруднения, если количество указанных параметров времени исполнения все время меняется или не известно программисту. Решение этой проблемы состоит в передаче параметров времени исполнения в переменную окружения FORT90L (см. "Переменные окружения" на стр. 112).

    Формат команд

    В начало страницы

    Параметры времени исполнения и параметры пользователей для своих программ могут указываться как параметры команды на исполнение. Параметры времени исполнения используют функции из исполнительной библиотеки LF95. Эти параметры чувствительны к регистру. Формат этих параметров таков:

    exe_file [-Wl,[парам. времени исп.]...] [аргументы программы пользователя]...

    Здесь exe_file означает файл исполнительной программы пользователя. Цепочка "-Wl," должна предшествовать любым параметрам времени исполнения, чтобы их можно было отличить от аргументов программы пользователя. Заметим, что она состоит из W, за которым следует буква L на нижнем регистре (не цифра 1). Заметим также, что если какой-то параметр указан более одного раза с разными аргументами, используется только последнее вхождение.

    Переменные окружения

    В начало страницы

    Как альтернативу командной строке, можно использовать для указания параметров времени исполнения переменную окружения FORT90L. Всякие параметры времени исполнения, указанные в командной строке, комбинируются с теми, которые указаны в FORT90L. Аргументы командной строки имеют приоритет перед соответствующими параметрами, указанными в оболочечной переменной FORT90L. Следующие примеры показывают, как использовать переменную оболочки FORT90L (фактический смысл каждого параметра времени исполнения описан в следующем ниже разделе).

                  Пример 1.
    Установка значения переменной  FORT90L и запуск программы:
    
                              setenv FORT90L=-Wl,-e99,-le
                              a.out -Wl,-m99 -myopt
    действуют так же как и командная строка
                              a.out -Wl,-e99,-le,-m99 -myopt
    
    В результате при исполнении программа a.out действуют параметры времени
    исполнения -e99, -le, -m99 и определенный пользователем аргумент программы
    -myopt.
                 Пример 2.
    Если используется командные строки
                              setenv FORT90L=-Wl,-e10
                              a.out -Wl,-e99
     
     

    то в результате a.out исполняется с параметром времени исполнения -e99, подавляющим параметр -e10, указанный в переменной оболочки FORT90L. Заметим, что setenv предыдущих примерах будет командой экспорта для пользователей оболочки Korn and bash.

    Обработка возвращаемых значений

    В начало страницы

    В следующей таблице перечисляются возможные значения, возвращаемые операционной системе исполнительной программой LF95 после окончания и выхода. Они соответствуют уровням диагностических сообщений, которые могут быть установлены различными параметрами времени исполнения.

                   Table 12: Обработка кодов возврата
    .............................................................................
    Код возврата                          Статус
    .............................................................................
         0            Ошибок нет или уровень I (информационное сообщение)
    
         4            Ошибка уровня W (предупреждение)
    
         8            Ошибка уровня E (средняя)
    
        12            Ошибка уровня S (серьезная)
    
        16            Обнаружена ошибка уровня U (серьезнее, чем уровни  W, E, S
                                     (Неисправимая ошибка)
    
        240               Ненормальное завершение
    
       Другие              Принудительное завершение
    ..............................................................................
    

    Стандартные ввод, вывод и выход для сообщений об ошибках.

    В начало страницы
    
    Определяемые по умолчанию номера стандартных устройств ввода, вывода и ошибок
    (их можно изменить соответствующими параметрами времени исполнения) для
    исполнимой программы  LF95 таковы:
               Стандартный ввод: устройство номер 5,
               Стандартный вывод: устройство номер 6,
               Стандартный выход для ошибок: устройство номер 0.
    
    

    Параметры времени исполнения (Runtime Options)

    В начало страницы

    Эти параметры могут указываться как аргументы в командной строке или в переменной оболочки FORT90L. В этом разделе объясняются формат и функции параметров времени исполнения. Запомните, что все эти параметры чувствительны к регистру. Формат их такой:

    -Wl[,параметр][,параметр]...

    Когда указывается такой параметр, цепочка "-Wl" (где l есть буква L на нижнем регистре) необходима в начале списка параметров, которые разделяются запятыми. Пробелы после запятой недопустимы. Если один и тот же параметр указан дважды, используется последний из них.

           Пример:
                        a.out -Wl,a,p10,x
    

    Описание параметров времени исполнения

    В начало страницы
    -C или -C[u_no]

    Конвертирует формат IBM370 чисел с плавающей точкой. Параметр -C указывает, как обрабатывать неформатированный файл с данными в формате IBM370 с плавающей точкой, используя бесформатный оператор ввода/вывода. Когда указан параметр -C, данные типов REAL и DOUBLE PRECISION из бесформатного файла на устройстве с соответствующим номером рассматриваются как данные с плавающей точкой формата IBM370 в бесформатном операторе ввода/вывода. Необязательный argument u_no определяет целое в пределах от 0 до 2147483647 в качестве номера устройства. Если u_no опущен, параметр C действует для всех номеров устройств, связанных с бесформатными файлами. Когда указанное устройство связано с форматированным файлом, параметр для этого файла игнорируется. Если параметр -C не указан, данные бесформатного файла, связанного с устройством u_no, рассматриваются как формат IEEE для данных с плавающей точкой в бесформатном операторе ввода /вывода.

                     Пример:
                              a.out -Wl,-C10
    
    -M
    

    Объявление ошибки при конвертировании мантиссы для данных IBM370. Параметр -M определяет, выдавать ли диагностику (0147i-w), когда биты мантиссы пропадают во время конверсии IBM370-IEEE-форматов для данных с плавающей точкой. Если -M указан, диагностика выдается, если конверсия форматов IBM370-IEEE приводит к потере битов мантиссы. Если -M опущено, диагностическое сообщение (0147i-w) не выдается.

                     Пример:
                              a.out -Wl,-M
    
    -Q
    

    Заполнение пробелами при форматированном вводе. Параметр -Q подавляет заполнение поля ввода пробелами, когда используется форматированный оператор ввода для чтения записи Fortran (это свойство применяется в устройствах со всеми номерами). Этот параметр действует в случаях, когда ширина поля, необходимая в форматном операторе ввода, больше длины записи Fortran и файл не был открыт оператором OPEN.

    Результат получается таким же как если бы PAD= , указываемое в операторе OPEN, было NO. Если параметр -Q опущен, входная запись пополняется пробелами. Результат получается такой же как в случае если PAD= specifier в операторе OPEN установлен на YES или PAD= specifier опущено.

              Пример:
                a.out -Wl,-Q
    
    -Re
    

    Обработка ошибок времени исполнения

    В начало страницы

    Выключает обработчик динамических ошибок. Traceback, обзор ошибок , контроль пользователя за ошибками посредством служебных рутин ERRSET и ERRSAV, и выполнение пользовательского кода для обработки ошибок подавляются. Если возможно, происходит стандартная обработка случившейся ошибки.

    Пример:
             a.out -Wl,-Re
    
    -Rm:filename
    

    Диагностика времени исполнения выдается в указанный файл.

    В начало страницы
    
    Параметр -Rm обеспечивает поступление в указанный файл следующей информации:
    * Сообщения от операторов  PAUSE или  STOP
    * Диагностические сообщения исполнительной библиотеки
    * Traceback map
    * Обзор ошибок
              Пример:
             a.out -Wl,-Rm:errors.txt
    
    -Ry
    

    Диагностика по Y2K (Year 2000)

    В начало страницы
    
    Запускает относящиеся к проблеме Y2K сообщения, генерируя диагностики уровня
     i (информационные) при обнаружении кода, который может привести к конфликтам
    после наступления года 2000 A.D. Должен использоваться вместе с параметром
    -li для получения виртуального диагностического вывода.
    
    Пример:
             a.out -Wl,-Ry,-li
    
    -T или -T[unit]
    

    Конверсия данных с прямым порядком байтов (Big-endian Data)

    В начало страницы

    Данные формы "Big-endian" (целые, логические и IEEE с плавающей точкой) передаются бесформатным оператором ввода/вывода. Необязательный аргумент unit определяет номер устройства в пределах от 0 до 2147483647, связанного с бесформатным файлом. Если unit опущено, -T действует на устройства с любыми номерами. По умолчанию LF95 читает и пишет численные данные (целые, логические и IEEE с плавающей точкой ) как "little-endian" (начиная с младшего байта).

    
             Пример:
                              a.out -Wl,-T10
    
     -a
    
    

    Принудительное аварийное завершение

    В начало страницы

    Если указан параметр -a процесс аварийного завершения программы принудительно выполняется после нормального завершения программы. Он происходит непосредственно перед закрытием внешних файлов.

            Пример:
                              a.out -Wl,-a
    
    -d[num]    1 < num < 32767
    

    Рабочая область ввода/вывода при прямом доступе

    В начало страницы

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

    Чтобы указать размер рабочей области для отдельных устройств, указывайте количество записей Fortran в переменной оболочки fuunitbf, где устройство указывается его номером (см. детали в "Переменные оболочки для ввода/вывода" на стр. 119).

    Если параметр -d и переменная оболочки указаны одновременно, приоритет принадлежит параметру -d. Необязательный аргумент num указывает количество записей Fortran в фиксированном блочном формате, включаемых в один блок. Аргумент num должен быть целым в пределах от 1 до 32767. Чтобы получить размер рабочей области ввода/вывода, нужно умножить num на значение, указанное в RECL= specifier в операторе OPEN. Если файлы совместно используются несколькими процессами, количество записей Fortran в одном блоке должно быть единицей. Если параметр -d опущен, размер рабочей области ввода/вывода есть четыре килобайта.

                     Пример:
                              a.out -Wl,-d8
    
    -e[num]   0 < num < 32767
    

    Предел для количества ошибок при исполнении.

    В начало страницы

    Параметр -e управляет окончанием выполнения на основании общего количества ошибок при исполнении. Необязательный аргумент num определяет предел как целое от 0 до 32767. Если num больше или равен 1, исполнение прекращается, когда общее количество ошибок достигнет предела. Если параметр -e опущен или num равен 0, исполнение не прерывается по количеству ошибок. Однако, исполнение программы прекращается, если достигнут предел количества ошибок, установленный системой Fortran.

                     Пример:
                              a.out -Wl,e10
    
    
    -g[num]   1 < num
    

    Рабочая область ввода/вывода при последовательном доступе Параметр -g устанавливает размер рабочей области ввода/вывода для операторов ввода/вывода последовательного доступа. Этот размер устанавливается в килобайтах для всех устройств на время исполнения. Аргумент num указывает целое значение 1 или больше. Если -g опущено, по умолчанию размер равен 8 килобайтам.

    Параметр -g улучшает производительность ввода/вывода, когда большое количество данных читается или записывается в файлы посредством бесформатного последовательного оператора ввода/вывода. Аргумент num используется как размер рабочей области для всех устройств. Чтобы избежать чрезмерного расхода памяти, указывайте размер рабочей области для отдельных устройств с помощью переменной оболочки fuunitbf, где unit есть номер устройства (см. детали в "Переменные оболочки для ввода/вывода на стр. 119). Когда параметр -g указан одновременно в переменной fuunitbf, приоритетным является указание параметру -g в команде на исполнение.

           Пример:
                  a.out -Wl,-g10
    
    -i
    

    Обработка прерываний

    В начало страницы

    Параметр -i управляет обработкой прерываний во время исполнения. Если он указан, библиотека Fortran не участвует в обработке. Если параметр i не указан, для обработки прерываний используется библиотека Fortran. Эти прерывания таковы: переполнение в показателе, пропадание показателя, проверка деления, целое переполнение. Если указан параметр -i, обработка исключительных случаев не производится. Параметр -u не должен комбинироваться с параметром -i.

          Пример:
                  a.out -Wl,-i
    
    -lerrlevel   errlevel: { i | w | e | s }
    

    Уровень выдаваемых диагностик

    В начало страницы
    
    Параметр -l  (L на нижнем регистре) управляет выдачей диагностических
    сообщений во время исполнения. Необязательный аргумент  errlevel, указывающий
    самый низкий уровень ошибок, i (информационный), w (warning (предупреждение)),
    e (medium(средний)) или  s (serious(серьезный)), сообщения о которых должны
    выдаваться. Если  -l  не указан, выдаются диагностики уровней  w, e и  s.
    Однако, сообщения после превышения лимита на печать не выдаются.
    При указании -li выдаются диагностики всех уровней
    При указании -lw выдаются диагностики уровней w, e, s и u.
    При указании -le выдаются диагностики уровней e, s и  u.
    При указании -ls выдаются диагностики уровней  s и u.
    
    
                 Пример:
                                 a.out -Wl,-le
    
    
    -munit   0 < unit < 2147483647
    

    Стандартный выход для сообщений об ошибках

    В начало страницы

    Параметр -m определяет устройство с указанным номером как стандартный выход (файл/устройство) для сообщений об ошибках (STDERR). Аргумент unit есть целое от 0 до 2147483647. Если -m отсутствует, для вывода сообщений об ошибках отводится файл на устройстве номер 0. Нужно заботиться об избежании конфликтов между параметрами -p и -r. См. "Переменные оболочки для ввода/вывода" на стр. 119..

                     Пример:
                                 a.out -Wl,-m10
    
    -n
    

    Приглашение, стандартный ввод

    В начало страницы

    Параметр -n определяет, будут ли приглашения поступать на стандартный ввод (STDIN). Если параметр -n указан, то приглашения выдаются, когда данные должны поступать в исполняемую программу с помощью форматированного последовательного операторов READ, включая управляемые списком и namelist операторы. Если параметр -n option отсутствует, приглашения не генерируются, когда данные должны поступать на стандартный ввод по форматированному последовательному оператору READ.

                     Пример:
                                 a.out -Wl,-n
    
    -punit    0 < unit < 2147483647
    

    Стандартный вывод

    В начало страницы

    Параметр p связывает устройство с номером unit с стандартным выходным файлом/устройством (STDOUT), unit есть целое в пределах от 0 до 2147483647. Если p опущено, то по умолчания устройство номер 6 считается стандартным выходом. Необходимо избегать конфликтов устройств, указанных в параметрах -m и -r. Дальнейшие детали см. в "Переменные оболочки для ввода и вывода" на стр.119.

                     Пример:
                                 a.out -Wl,-p10
    
    -q
    

    Выделение верхним регистром символов для выходного числового редактирования. Параметр -q option определяет изображение прописными буквами символов числового редактирования E, EN, ES, D, Q, G, L и Z, которые выдаются форматированными операторами вывода. Этот параметр также определяет верхний регистр для изображения буквенных символов в символьных константах, употребляемых в спецификаторах запросов (кроме спецификатора NAME) в операторе INQUIRE. Если параметр -q указан, символы изображаются прописными буквами. Если параметр q отсутствует, используется нижний регистр.

            Пример:
                     a.out -Wl,-q
    
    
    -runit     0 < unit < 2147483647
    

    Стандартный ввод

    В начало страницы

    Параметр -r связывает устройство с номером unit с стандартным входным файлом/устройством (STDIN) на время исполнения программы. Номер unit должен быть целым в диапазоне от 0 до 2147483647. Если параметр -r опущен, то по умолчанию устройство номер 5 связывается с стандартным входным файлом. Необходимо избегать конфликтов с устройствами, указанными в параметрах -m и -p. Детали см. в "Переменные оболочки для ввода/вывода" на стр. 119.

           Пример:
                     a.out -Wl,-r10
    
     -u
    

    Обработка прерываний по пропаданию знаков (Underflow)

    В начало страницы

    Если указан параметр -u, LF95 производит обработку прерываний по пропаданию знаков в числах с плавающей точкой. Система может выдавать во время исполнения диагностические сообщения 0012i-e. Если параметр -u опущен, система игнорирует упомянутые прерывания и продолжает вычисления. Параметр -i не должен комбинироваться с параметром -u.

            Пример:
                     a.out -Wl,-u
    
     -x
    

    Пробелы в числовом форматном вводе

    В начало страницы

    Параметр -x определяет, игнорировать ли пробелы при числовом форматном вводе данных или рассматривать их как нули. Если параметр -x указан, то пробелы заменяются нулями во время редактирования чисел форматными последовательными операторами ввода, для которых не выполнялся оператор OPEN. Результат получается таким же, как в случае, когда BLANK= specifier в операторе OPEN установлен на ZERO. Если параметр -x не был указан, то пробелы в поле ввода рассматриваются как пустые данные и игнорируются. Результат получается таким же, как если бы BLANK= specifier в операторе OPEN было установлено на NULL или BLANK= specifier опущено.

            Пример:
                     a.out -Wl,-x
    

    Переменные оболочки для ввода/вывода

    В начало страницы

    В этом разделе описываются переменные оболочки, которые управляют операциями в файле ввода/вывода. Эти переменные окружения пишутся на нижнем регистре, если не сказано противное.

    fuunit = filename 00 < unit < 2147483647

    Переменная оболочки fuunit связывает предварительно устройства с файлами. Значение unit есть номер устройства (он должен состоять из не менее чем двух цифр). filename есть имя файла, связанного с устройством с номером unit. При этом надо избегать стандартных входного и выходного файлов (fu05 и fu06) и файла ошибок (fu00), если только их имена не изменены с помощью параметров -m, -p или or -r options, и тогда нужно избегать их новых значений. Следующий пример показывает, как связать myfile.dat с устройством номер 10 перед началом исполнения.

                     Пример:
                              setenv fu10 myfile.dat
    
    fuunitbf  size             00 < unit < 2147483647
    
    

    Переменная оболочки fuunitbf определяет размер рабочей области ввода/вывода, используемой операторами ввода/вывода при последовательном или прямом доступе. Это относится и к форматным и к бесформатным файлам. Значение unit в переменной оболочки fuunitbf определяет номер устройства (он должен состоять по крайней мере, из двух цифр). Если аргумент size используется для устройств ввода/вывода с последовательным доступом, он задается в килобайтах; для устройств прямого доступа он указывается в записях. Он может иметь целые значения, начиная с 1. Аргумент size, указанный для одного устройства, не применяется автоматически для других устройств. Если эта переменная и параметр -g опущены, размер рабочей области ввода/вывода, используемой устройствами последовательного доступа, по умолчанию равен 8 килобайтам. Аргумент size для устройств ввода/вывода прямого доступа есть количество записей Fortran в одном блоке при фиксированном блочном формате. Он может быть целым в пределах от 1 до 32767. Если опущены эта переменная и параметр -d, размер области составляет 4 килобайта.

                     Пример 1:
                     Устройства ввода/вывода последовательного доступа.
    
                              setenv fu10bf 64
    

    Когда выполняются операторы ввода/вывода последовательного доступа для устройства номер 10, операторы используют рабочую область в 64 килобайта.

                     Пример  2:
                     Устройства ввода/вывода прямого доступа.
    
                              setenv fu10bf 50
    

    Когда выполняются операторы ввода/вывода прямого доступа для устройства номер 10, количество записей Fortran в одном блоке есть 50. Размер рабочей области ввода/вывода получается умножением 50 на значение, указанное в RECL= specifier в операторе OPEN

В начало страницы

<<< Оглавление Страницы: 7  8 >>>