Начинается с кавычки, то принимаются все символы до следующих кавычек. Последовательных наборов данных. Инстукция LINE INPUT# для последовательного ввода набора данных считывает любые символы в коде ASCII из какого-либо набора данных таким же образом, с помощью инструкции LINE INRUT (смотри пункт 13.2.) Последовательности символов вводились с клавиатуры. Формат: LINE INPUT# <номер набора данных>, <переменная типа символьной строки> При открытии какого-либо набора данных инструкцией OPEN (смотри пункт 15.4.) Каждый открытый набор данных получает логический номер набора данных, по которому к нему можно обращаться с помощью инструкции доступа. Соответственно для соответствующего набора данных указывается <номер набора данных>. <Номер набора данных> может быть целым выражением, целой переменной или целой константой. Начиная с текущей курсора все символы до символа возврата каретки "CR" присваиваются переменным типа символьной константы. Сам символ возврата карктки "CR" не присваивается. Пример: 10 OPEN "1",2,"пример" 20 LINE INPUT# 2, 30 PRINT 40 END RUN 15.7. Инструкции PRINT# и PRINT# USING для вывода в последовательный набор данных с форматированием и без форматирования. С помощью инструкции PRINT# и PRINT# USING можно осуществить вывод информации в какой-либо последовательный набор данных с форматированием и без форматирования. Формат: PRINT# <номер набора данных>,/USING <указание формата>;/ <список выражений для вывода>=<выражение>/;<выражение>/... Или <список выражений для вывода>=<выражение>/,<выражение>/... Или <список выражений для вывода>=<выражение>/<выражение>/... При открытии наборов данных с помощью инструкции OPEN (смотри пункт 15.4.) Каждый открытый набор данных получает логический номер набора данных, по которому к нему можно обращаться с помощью инструкции доступа. Соответственно указывается для соответствующего набора данных <номер набора данных>. <Номер набора данных> может быть целым выражением, целой переменной или целой константой. Какое-либо выражение из списка выражений для вывода может быть выражением из символьных строк, числовым выражением, константой типа символьной строки или числовой константой. Записываемые в наборы данных данные не сжимаются, а в виде последовательностей символов пересылаются во внешнюю память. Чтобы отдельные данные можно было снова безошибочно считать с помощью инструкции INPUT, необходимо дополнительно вставить соответствующие разделительные символы. Для форматированного вывода в какой-либо последовательный набор данных также относится все сказанное относительно указания формата в пункте 13.4. Указание: Для неформатированного вывода рекомендуется разделять элементы вывода точкой с запятой. Если же используется запятая, то требуется ненужная область памяти для вставленных пробелов. Если какая-либо символьная строка сама содержит запятые, ведущие пробелы или управляющие символы перевода строки, символьную строку безусловно следует заключать в кавычки. Пример: 10 A%=5: B%=7 20 OPEN "O",I,"TEST.TXT" 30 PRINT# I,A%;B%;2.73;-2 40 A$="MUELLER" 50 B$="MEYER" 60 PRINT# I,A$,B$ 70 PRINT# I;I;CHR$(34);A$;CHR$(34);CHR$(34);B$ CHR$(34) 80 CLOSE# I 90 OPEN "I",I,"TEST.TXT" 100 INPUT#I,A%,B%,C%,D%,A$,B$,C$ RUN 5 7 2.73 -2 MULLERMEYER MULLER MEYER OK 15.8. Инструкция WRITE# для вывода в последовательный набор данных С помощью инструкции WRITE# можно записывать в какой-либо набор данных информацию таким образом, что ее можно затем непосредственно считывать с помощью инструкции INPUT#. Формат: WRITE# <имя набора данных>, <список выражений для вывода> <список выражений для вывода>=<выражение>/,<выражение>/... При открытии какого-либо набора данных с помощью инструкции OPEN (смотри пункт 15.4.) Каждый открытый набор данных получает логический номер набора данных, по которому к нему можно обращаться с помощью инструкции доступа. Соответственно указывается <номер набора данных> для соответствующего набора данных. <Номер набора данных> может быть целым выражением, целой переменной или целой константой. Встречающиеся в <списке выражений для вывода> элементы могут быть любыми числовыми выражениями или выражениями из символьных строк, числовыми переменными или переменными типа символьной строки или числовыми константами или константами типа символьной строки. Отдельные элементы отделяются запятыми. Вводимые данные автоматически оканчиваются запятой. Символьные строки автоматически заключаются в кавычки " ". Пример: 10 S$="информация" 20 C%=1237 30 OPEN "O", I,"BEISPIEL" 40 WRITE# I,S$,C% 50 CLOSE 60 OPEN "I",#2,"BEISPIEL" 70 INPUT# 2,S$,C% 80 PRINT S$,C% 90 END RUN информация 1237 ОК 15.9. Инструкция GET для пересылки какой-либо записи набора данных прямого доступа в область буфера. С помощью инструкции GET пересылают очередную запись из внешней памяти в область буфера. Формат: GET /#/<номер набора данных>/,<номер записи>/ При открытии какого-либо набора данных с помощью инструкции OPEN (смотри пункт 15.4.) Каждый открытый набор данных получает логический номер набора данных, по которому к нему можно обращаться с помощью инструкции доступа. Соответственно для соответствующего набора данных указывается <номер набора данных>. <Номер набора данных> может быть целым выражением, целой переменной или целой константой. С помощью параметра номера записи можно задать какой-либо номер записи. Он может лежать между 1 и 32767 включительно. Если этот параметр не задан, то считывается последовательная очередная запись. <Номер записи> может быть целым выражением, целой переменной или целой константой. Пример: 10 GET I 70 GET 5,30 15.10. Инструкция PUT для пересылки какой-либо записи из области буфера в набор данных прямого доступа. С помощью инструкции PUT пересылают содержимое области буфера на внешнюю память. Формат: PUT /#/ <номер набора данных>/,<номер записи>/ При открытии какого-либо набора данных с помощью инструкции ОPEN (смотри пункт 15.4.) Каждый открытый набор данных получает логический номер выбора данных, по которому к нему можно обращаться с помощью инструкции доступа. Соответственно для соответствующего набора данных указывается <номер набора данных>. <Номер набора данных> может быть целым выражением, целой переменной или целой константой. С помощью параметра номер записи можно задать какой-либо номер записи. Он может лежать между 1 и 32767 включительно.Если этот параметр не задан, то область буфера записывается в набор данных в качестве записи, следующей за последним номером записи. Пример: 10 OPEN "R",1,"ADRESSE.TXT",79 20 OPEN "O",2,"ADRESSE.$$$" 30 FIELD 1,20 AS NAME$, 15 AS VNAME$, 20 AS STRASSE$, 4 AS POSTLZ$, 20 AS ORT$ 40 INPUT "SATZNUMMER"; SATZ% 1) 50 IF SATZ% < 1 THEN 230 60 INPUT "SCHREIBEN (1) ODER LESEN (2)": S% 8) 70 ON S% GOTO 80, 200 80 INPUT "FAMILIENNAME"; SNAME$. 2) 90 INPUT "VORNAME"; SVNAME$ 3) 100 INPUT "STRASSE"; SSTRASSE$ 4) 110 INPUT "POSTLEITZAHL"; SPOSTLZ$ 5) 120 INPUT "ORT"; SORT$ 6) 130 LSET NAME$=SNAME$ 140 LSET VNAME$=SVNAME$ 150 LSET STRASSE$=SSTRASSE$ 160 LSET POSTLZ$=SPOSTLZ$ 170 LSET ORT$=SORT$ 180 PUT 1,SATZ% 190 GOTO 40 200 GET 1,SATZ% 210 PRINT#2,NAME$,",",VNAME$,",",POSTLZ$,",", ORT$,",",STRASSE$,"," 220 GOTO 40 230 CLOSE 240 END 250 REM AN STELLE VON ZEILE 210 KANN AUCH EINFACHER DIE FOLGENDE ZEILE ATEHEN: 7) 260 WRITE# 2,NAME$,VNAME$,POSTLZ$,ORT$,STRASSE$ 1)- номер записи; 2)- фамилия; 3)- имя; 4)-улица; 5)- почтовый индекс; 6)- место; 7)- вместо строки 210 могут стоять просто следующие строки; 8)- запись или чтение(2). В примере можно дополнить какой-либо набор данных адресов или можно сделать выдержки из набора данных адресов. 15.11. Инструкция FIELD для структурирования записей данных в каком-либо наборе данных текстов при прямом доступе. С помощью инструкции FIELD устанавливают структуру записи для наборов данных текстов с прямым доступом. Формат: FIELD/#/<номер набора данных>,<длина поля> AS <идентификатор символьной строки>/,<длина поля> AS <идентификатор символьной строки>/... При открытии какого-либо набора данных с помощью инструкции OPEN (смотри пункт 15.4.) Каждый открытый набор данных получает логический номер набора данных, по которому к нему можно обращаться с помощью инструкции доступа. Соответственно указывается номер набора данных для набора данных, открытого как набор данных прямого доступа. <Номер набора данных> может быть целым выражением, целой переменной или целой константой. Инструкция FIELD структурирует область буфера. Буфер всегда содержит одну запись данных. Байты области буфера имеют сквозную нумерацию, начиная с единицы. Параметру длина поля присваивается, начиная с единицы по порядку заданное количество байтов соответствующего идентификатора символьной строки. За счет этого можно логически адресовать данный участок буфера с помощью идентификатора соответствующей символьной строки. С помощью инструкции LSET или RSET (смотри пункт 15.12.) Можно располагать эти переменные слева или справа с распечатками текстов. Особенно удобно выполнять с помощью этих инструкций преобразование типов между числовыми переменными и переменными типа символьной строки, которые однако позволяют не изменять внутренний вид представления и, таким образом, обеспечивают эффективное хранение числовых выражений и переменных типа символьной строки (смотри также пункты 16.4. И 16.5.). Введенные в инструкции FIELD идентификаторы символьных строк можно использовать только вместе с инструкциями LSET, RSET, PUT и GET. Пример: 10 OPEN "R" ,5,"DIREKT.DAT",40 20 FIELD 5 , I AS F$,20 AS ND$, 19 AS VD$ Примечание: Перед непосредственной записью или считыванием данных должна быть указана инструкция FIELD. Если описаны несколько полей, то следует обратить внимание на то, чтобы сумма всех длин полей не превышала заданную в инструкции OPEN-R длину записи. 15.12. Инструкции LSET и RSET для левоустановленной или правоустановленной записи символьных строк (в какую-либо запись данных набора данных текстов с прямым доступом). С помощью инструкций LSET и RSET можно добавить значения выражений из символьных строк к левоустановленным или правоустановленным текстам. Формат: LSET <переменная>=<выражение> RSET <переменная>=<выражение> Параметр <переменная> может быть об'явленным с помощью FIELD (смотри пункт 15.11.) Идентификатором символьной строки или обычной переменной типа символьной строки. <Выражение> может быть выражением из символьных строк, переменной типа символьной строки или константой типа символьной строки. Данную инструкцию особенно эффективно использовать для обработки буферов наборов данных при работе с наборами данных текстов с прямым доступом. Пример: 10 D$=SPACE$(20) 20 E$="символьная строка" 30 RSET D$=E$ 40 D$="%"+D$+"%" 50 PRINT D RUN % символьная строка% ок Примечание: Если <выражение> короче размера области памяти, подготовленной с помощью переменной типа символьной строки, то свободные позиции заполняются пробелами. Если наоборот, размер области меньше значения <выражение>, то <выражение> усекается справа. Это относится как к инструкции LSET так и к инструкции RSET. 15.13. Инструкция CLOSE для закрытия открытых с помощью OPEN наборов данных. С помощью инструкции CLOSE текущее содержимое буфера какого-либо набора данных пересылается во внешнюю память , затем содержимое буфера стирается и соответствующий набор данных отмечается в каталоге наборов данных как недоступный. Формат: CLOSE //#/<номер набора данных>/,/#/<номер набора данных>/.../ При открытии какого-либо набора данных с помощью инструкции OPEN (смотри пункт 15.4.) Каждый открытый набор данных получает номер набора данных, по которому к нему можно обращаться с помощью инструкции доступа. Соответственно следует задать <номер набора данных> в инструкции CLOSE для закрываемых наборов данных. Если никакой номер набора данных не задан, то происходит закрытие всех открытых к моменту вызова инструкции CLOSE наборов данных. <Номер набора данных> может быть целым выражением, целой переменной или целой константой. (Смотри пункт Пример: 10 CLOSE 1,3,4 80 CLOSE Примечание: С помощью инструкции END и команды NEW, RESET и SYSTEM также можно закрыть все открытые наборы данных, это не относится к инструкции STOP. 16. Функции для обеспечения работы с наборами данных на языке Бейсик. 16.1. Функция EOF. Функция EOF указывает, имеет ли место условие конца набора данных для какого-либо набора данных. Формат: /=/ EOF(<номер набора данных) При открытии какого-либо набора данных с помощью инструкции OPEN (смотри пункт 15.4.) Каждый открытый набор данных получает логический номер набора данных, по которому к нему можно обращаться с помощью инструкции доступа. Соответственно следует задать номер набора данных для соответствующего набора данных. <Номер набора данных> может быть целым выражением, целой переменной или целой константой. Функция принимает значение 1, если имеет место условие конца набора данных, в противном случае она принимает значение нуль. Функция имеет тип "INTEGER". Пример: 300 WHILLE NOT EOF(1) . . . 400 WEND 16.2. Функция LOF. Функция LOF указывает количество записей в последнем считанном или записанном на внешнюю память блоке. Формат: /=/ LOF(<номер набора данных>) При открытии какого-либо набора данных с помощью инструкцииOPEN (смотри пункт 15.4.) Каждый открытый набор данных получает логический номер набора данных, по которому к нему можно обращаться с помощью инструкции доступа. Соответственно можно задать номер набора данных для соответствующего набора данных. <Номер набора данных> может быть целым выражением, целой переменной или целой константой. Наборы данных могут состоять максимально из 16 блоков. Каждый блок имеет максимально 128 записей по 128 байт каждая. Если набор данных состоит только из одного блока, то функция LOF указывает непосредственно длину набора данных. Функция имеет тип "INTEGER". Пример: 70 PRINT LOF(2) 16.3. Функция LOC. Функция LOC возвращает номер записи, к которой был прроизведен последний доступ при работе с каким-либо набором данных прямого доступа. При работе с последовательными наборами данных данное значение указывает одновременно количество записей, к которым был произведен доступ. Формат: /=/ LOC (<номер набора данных>) При открытии какого-либо набора данных с помощью инструкции OPEN (смотри пункт 15.4.) Каждый открытый набор данных получает логический номер набора данных, по которому к нему можно обращаться с помощью инструкции доступа. Соответственно следует указать <номер набора данных> для соответствующего набора данных. Если <номер набора данных> относится к набору данных с прямым доступом, то функция LOC возвращает номер записи, к которой был произведен последний доступ. Пример: 70 PRINT LOC(2) Функции MKI$, MKS$ и MKD$ запоминают целочисленные значения, значения с одинарной точностью или значения с двойной точностью как "числовые" символьные строки той же длины. Формат: /<идентификатор символьной строки>=/ MKI$(<целочисленное выражение>) /<идентификатор символьной строки>=/ MKS$(<числовое выражение одинарной точности>) /<идентификатор символьной строки>=/ MKD$(<числовое выражение двойной точности>) Идентификатор символьной строки должен быть описан в какой-либо инструкции FIELD (смотри пункт 15.11.). Для функции требуется записать числовые значения в упакованном формате как символьные строки в какой-либо набор данных прямого доступа. При этом MKI$ формирует символьную строку длиной 2, MKS$ символьную строку длиной 4, а MKD$ символьную строку длиной 8. Переписанные в таком виде числовые значения можно переписать с помощью инструкции LSET или RSET в какой-либо буфер данных. Пример: 120 RSET ALTER$=MKI$(ALTER%) 16.5. Функция CVI, CVS и CVD Функции преобразуют "числовые" символьные строки длиной 2 байта, 4 байта и 8 байт в числовые значения соответственно типа INTEGER или REAL одинарной точности или REAL двойной точности. Формат: /=/ CVI(<"числовая" символьная строка длиной 2 байта) /INTEGER-переменная=/ CVS(<"числовая" символьная строка длиной 4 байта>) /=/ CVD(<"числовая" символьная строка длиной 8 байт>) Идентификаторы символьных строк должны быть введены с помощью какой- либо инструкции FIELD (смотри пункт 15.11.). Функции имеют тип "INTEGER" или "REAL одинарной точности" или REAL