: TYPE ( A,N ---> ) ?DUP IF 0 DO DUP I + C@ EMIT LOOP THEN DROP ;
Если число литер равно нулю, то ничего не печатается.
Обратное действие — ввод строки литер — выполняет слово ЕХРЕСТ (ожидать), которое снимает со стека длину и адрес области памяти для размещения вводимых литер. Коды литер, последовательно вводимых с терминала, помещаются в указанную область до тех пор, пока не будет введено заданное число литер или не будет введена управляющая литера «возврат каретки» (код этой литеры в память не заносится). Фактическое число введенных литер сообщается в стандартной переменной SPAN (размер), эти литеры к тому же отображаются на терминале.
Ввиду его особой важности для кодирования пробела выделена специальная константа BL (от BLANK — пробел), которую для кода ASCII можно задать так: 32 CONSTANT BL. При исполнении слова BL на стеке остается код пробела. Чтобы вывести пробел на терминал, имеются следующие стандартные слова:
: SPACE ( ---> ) BL EMIT ; : SPACES ( N ---> ) ?DUP IF 0 DO SPACE LOOP THEN ;
Слово SPACE (пробел) выводит на терминал один пробел, а слово SPACES (пробелы) — несколько, снимая их количество со стека (это значение, как и длина строки в слове TYPE, должно быть неотрицательным).
Внутри определений через двоеточие можно использовать явно заданные тексты для вывода их на терминал. При исполнении слова ." (точка и кавычка), употребленного в контексте ." текст ", следующие за ним литеры до закрывающей кавычки исключительно печатаются на терминале. Пробел, отделяющий слово .", в число печатаемых литер не входит. Другое слово .( (точка и скобка) отличается от ." тем, что ограничителем текста является закрывающая правая скобка, и это слово можно использовать как внутри определений, так и вне их.
Помимо строки — поля байт, длина которого задается отдельно — язык Форт использует строки со счетчиком.