Программа 7_01.bas
CLS : DEFINT A-Z: А$="Строка" OPEN "bas_txt"
FOR OUTPUT AS #1 FOR J=l TO 10
PRINT #1,A$;J,J*2
PRINT A$;J,J*2
NEXT J
CLOSE #1
PRINT
OPEN "bas_txt"
FOR INPUT AS #2
FOR J=l TO 10
INPUT #2,B$,K1,K2
PRINT B$;K1,K2
NEXT J
CLOSE #2
END
Если ограничиться только первой половиной программы, которая записывает в дисковый файл bas_txt 10 строк и попутно выдает на экран содержимое этих строк, то кажется, что все в порядке. Содержимое файла bas_txt, которое можно увидеть, нажав клавишу F3, в точности повторяет ту информацию, которая отражена на экране:
Строка 1 2
Строка 2 4
Строка 3 6
Строка 4 8
Строка 5 10
Строка 6 12
Строка 7 14
Строка 8 16
Строка 9 18
Строка 10 20
Один пробел после слова строка образовался потому, что в теле оператора PRINT разделитель "точка с запятой" после текста не изменяет текущую позицию выводной строки, но записываемые числа положительны и вместо знака "+" мы видим пробел. Вторые числа в каждой строке начинаются с 15-й позиции (там тоже находится пробел вместо знака "+"). Этот переход в начало очередной зоны вывода вызван разделителем "запятая" в списке оператора PRINT. Если переключиться в режим просмотра шестнадцатеричной информации (F3 -> F4), то можно заметить дополнительные детали: однозначные числа представлены однобайтовыми кодами ASCII (1 -> 31, 2 -> —> 32, ...), а двузначные — двухбайтовыми (10 —> 3130, 12 -> 3132, ...). Кроме того, каждая строка завершается двухбайтовым признаком конца строки -ODOA. Это означает, что при выводе числовые данные были переведены в символьный формат, а каждая порция вывода была дополнена управляющими кодами Возврат каретки + Перевод строки.
Действие второй половины программы вызывает недоумение. Во-первых, на экране появляется сообщение input paste end of file, которое свидетельствует о попытке чтения после исчерпания данных в файле. Во-вторых, переключившись на экран пользователя, вместо ожидавшихся строк с одним словом и двумя числами в каждой мы видим совсем не то: