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


CHAROUT


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

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

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

Прим.В некоторых средах перезапись потока с помощью функций CHAROUT или LINEOUT может удалить (разрушить) все существующие данные в потоке. Однако это не относится к среде OS/2.

Для устойчивых потоков значение режима строка может быть опущено. В этом случае позиция записи устанавливается равной значению, указанному в начале, символы в поток не записываются, и в качестве результата возвращается 0. Если ни Содержание, ни строка не указаны, то позиция записи устанавливается на конец потока. Подобное использование функции CHAROUT может иметь дополнительный эффект закрытия или фиксации файла в средах, поддерживающих данную концепцию. В качестве результата возвращается 0. Если Вы не укажете Содержание или строку, то поток закроется.
В качестве результата возвращается 0.

Выполнение программы обычно временно приостанавливается до тех пор, пока не завершится операция вывода. Однако если невозможно записать все требуемые символы, то будет сформировано условие NOTREADY, и функция CHAROUT в качестве результата вернет количество символов, которые не удалось записать (остаточное количество).

Ниже приведено несколько примеров: CHAROUT(myfile,'Hi') -> 0 /* как обычно */ CHAROUT(myfile,'Hi',5) -> 0 /* как обычно */ CHAROUT(myfile,,6) -> 0 /* сейчас в позиции 6 */ CHAROUT(myfile) -> 0 /* в конце потока */ CHAROUT(,'Hi') -> 0 /* как обычно */ CHAROUT(,'Hello') -> 2 /* может быть */

Прим.    Эту функцию зачастую лучше вызывать как подпрограмму. Остаточное количество символов в этом случае будет доступно в качестве значения переменной RESULT.
Например: Call CHAROUT myfile,'Hello' Call CHAROUT myfile,'Hi',6 Call CHAROUT myfile




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