Язык процедур 2-REXX для OS-2


LINEIN


Функция LINEIN в качестве результата возвращает содержимое некоторого количества (0 или 1) строк, прочитанных из вводного потока символов с указанным именем. Форма имени зависит от среды применения. Если имя опущено, то строка считывается из вводного потока, принимаемого по умолчанию; в операционной системе OS/2 это STDIN:. Режим количество по умолчанию принимает значение 1.

В устойчивых потоках позиция чтения ведется для каждого потока. В операционной системе OS/2 эта позиция та же, что и позиция записи. По умолчанию любое чтение из потока начинается с текущей позиции чтения. Обращение к функции LINEIN может привести к возврату только лишь части строки, если текущая позиция чтения не установлена на начало строки. После завершения чтения позиция чтения перемещается на начало следующей строки. Позиция чтения может быть установлена на начало потока с помощью указания значения 1 для режима строка. Значение 1 - единственное действительное значение для режима строка в операционной системе OS/2.

Если значение режима количество равно 0, то символы из вводного потока не читаются и в качестве результата возвращается пустая строка.

В переменных потоках при отсутствии возможности прочитать из вводного потока полную строку выполнение программы временно приостанавливается до тех пор, пока строка не заполнится. Если заполнение строки невозможно вследствие ошибки или других проблем, то формируется условие NOTREADY, и функция LINEIN возвращает результирующую строку, содержащую столько символов, сколько удалось прочитать.

Ниже приведено несколько примеров: LINEIN() /* Считывает одну строку из */ /* входного потока, принимае- */ /* мого по умолчанию; обычно */ /* это клавиатура */

myfile = 'ANYFILE.TXT' LINEIN(myfile) -> 'Текущая строка' /* Считывает одну строку */ /* файла ANYFILE.TXT, начиная */ /* с текущей позиции чтения. */ /* (При первом обращении */ /* файл открывается и считы- */ /* вается первая строка) */

LINEIN(myfile,1,1) ->'Первая строка' /* Открывает и считывает */ /* первую строку файла */ /* ANYFILE.TXT (если файл уже */ /* открыт, считывает первую */ /* строку); позиция чтения */ /* устанавливается на вторую строку */


LINEIN(myfile,1,0) -> '' /* Чтение отсутствует; открывает ANYFILE.TXT */ /* (если файл уже открыт, */ /* устанавливает позицию */ /* чтения на первую строку) */

LINEIN(myfile,,0) -> '' /* Чтение отсутствует; открывает ANYFILE.TXT */ /* ( если файл уже открыт, ни- */ /* какие действия не выполняются) */

LINEIN("QUEUE:") -> 'Строка из очереди' /* Считывает строку из очереди; */ /* Если очередь пуста, то про- */ /* грамма ожидает до тех пор, */ /* пока строка не будет помещена в очередь */

Прим. Если Вы хотите считывать полные строки из вводного потока, определенного по умолчанию, как, например, при обычном диалоге с пользователем, то для простоты и возможности улучшенного программирования целесообразно использовать вместо функции LINEIN инструкции PULL или PARSE PULL. В некоторых случаях полезно также использовать инструкцию PARSE LINEIN.



Содержание раздела