** Сайт посвящённый ПЭВМ АГАТ **
Ю.Коломиец. Разыскивается! Если вы автор или что-то знаете о нём, свяжитесь с нами! (ЗАЧЕМ ЭТО?)
В арсенале Бейсика "Агата" есть оператор EXEC, назначение которого, судя по документации, "исполнение текстовых файлов". Немногие знают, как им пользоваться, а для него можно найти интересные приложения.
Взять хотя бы определение функций пользователем в режиме диалога. Вообще-то для описания функций существует оператор DEF FNF(X), но в диалоге он не работает. Чтобы изменить вид функции в какой-либо программе, необходимо прервать её выполнение, набрать с клавиатуры соответствующую программную строку и снова запустить программу. А можно поступить более оригинально - запросить вид функции в диалоге с пользователем, записать определение функции в виде программной строки в текстовый файл, а затем оператором EXEC ввести строку в программу и передать на неё управление.
Ниже приводится часть текста программы, реализующей этот метод. В строке 20 пользователь вводит с клавиатуры вид интересующей его функции. Затем управление передаётся на строку 640. Во время работы программы в НГМД должна быть вставлена дискета. На диске создаётся текстовой файл со строкой, в которой определяется функция, а также командой передачи управления GOTO 40. После закрытия файла FUNK его содержимое оператором EXEC вводится в программу.
10 HOME: PRINT "ЗАДАЙТЕ ВИД ФУНКЦИИ": PRINT 20 INPUT "F(X)=";F$ 30 GOTO 640 'ОПРЕДЕЛЕНИЕ ФУНКЦИИ ЧЕРЕЗ ФАЙЛ 40 HOME . . . 640 REM СОЗДАНИЕ ПРОГРАММНОЙ СТРОКИ С ОПРЕДЕЛЯЕМОЙ ФУНКЦИЕЙ 650 PRINT: PRINT CHR$(4);"OPENFUNK" 660 PRINT: PRINT CHR$(4);"WRITEFUNK" 670 PRINT "50 DEF FNF(X)=";F$ 680 PRINT "GOTO 40" 690 PRINT: PRINT CHR$(4);"CLOSEFUNK" 700 PRINT: PRINT CHR$(4);"EXECFUNK"
Оператору EXEC можно найти ещё одно ценное применение. Пусть не печалятся пользователи "Агата", что они не имеют оператора MERGE для объединения двух Бейсик-программ. Объединение можно осуществить с помощью несложной процедуры.
Программа, подлежащая присоединению, записывается в текстовой файл. Сделать это можно так: в начале программы открывается на запись файл с каким-либо именем, затем командой LIST содержимое программы записывается в файл, который после этого закрывается. Вот пример.
10 ?:? CHR$(4);"OPENFILE" 20 ?:? CHR$(4);"WRITEFILE" 30 LIST 40,50 40 HOME 50 ?"ПРИВЕТ!" 60 ?:? CHR$(4);"CLOSEFILE"
Теперь достаточно исполнить эту программу, загрузить в ОЗУ другую программу, подлежащую объединению, и дать команду EXECFILE. Необходимо только следить, чтобы номера строк двух программ не перекрывались.
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *